【网络编程】【Windows】C++ 通过 COM 组件 启用\禁用\查看 网卡状态

概述:通过 COM 对象操作网卡

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <NetCon.h>
void ChangeNetState()
{
CoInitialize(NULL);
INetConnectionManager* pNetManager;
INetConnection* pNetConnection;
IEnumNetConnection* pEnum;

if (S_OK != CoCreateInstance(CLSID_ConnectionManager, NULL, CLSCTX_SERVER, IID_INetConnectionManager, (void**)&pNetManager))
{
return ;
}

pNetManager->EnumConnections(NCME_DEFAULT, &pEnum);
pNetManager->Release();
if (NULL == pEnum)
{
return ;
}

ULONG celtFetched;
while (pEnum->Next(1, &pNetConnection, &celtFetched) == S_OK)
{
NETCON_PROPERTIES* properties;
pNetConnection->GetProperties(&properties);
//properties->pszwName; //网络连接的名称
//properties->pszwDeviceName; //网卡名称
//properties->Status; //状态

//pNetConnection->Disconnect(); //禁用网卡
//pNetConnection->Connect(); //启用网卡
}
CoUninitialize();
return ;
}

NETCON_PROPERTIES 结构体使用的变量为宽字符,在打印时需要在程序入口调用以下函数才能正确输出。

1
setlocale(LC_CTYPE, "chs");

【网络编程】【Windows】C++ 通过 COM 组件 启用\禁用\查看 网卡状态
https://hodlyounger.github.io/A_OS/Windows/网络helper/【网络编程】COM查看网卡状态/
作者
mingming
发布于
2023年10月27日
许可协议