c++ - 通过 WinAPI 禁用/启用网络接口(interface)

标签 c++ winapi networking

这是我在 Windows 上禁用/启用网络适配器的尝试:

void EnableNetDevice(bool aState, int index)
{
  HDEVINFO NetPnPHandle;
  SP_PROPCHANGE_PARAMS PCHP;
  SP_DEVINFO_DATA DeviceData;
  NetPnPHandle = SetupDiGetClassDevs(&GUID_DEVCLASS_NET, 0, 0, DIGCF_PRESENT);

  if (NetPnPHandle == INVALID_HANDLE_VALUE)
  {
        return;
  }

  DeviceData.cbSize = sizeof(SP_DEVINFO_DATA);
  SetupDiEnumDeviceInfo(NetPnPHandle, index, &DeviceData);
  PCHP.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);

  if (SetupDiSetClassInstallParams(NetPnPHandle,&DeviceData,&PCHP.ClassInstallHeader,sizeof(SP_PROPCHANGE_PARAMS)))
  {
        PCHP.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
        PCHP.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
        PCHP.HwProfile = 0;
        PCHP.Scope = DICS_FLAG_CONFIGSPECIFIC;
        if (aState) PCHP.StateChange = DICS_ENABLE;
        else  PCHP.StateChange = DICS_DISABLE;
        SetupDiSetClassInstallParams(NetPnPHandle,&DeviceData,&PCHP.ClassInstallHeader,sizeof(SP_PROPCHANGE_PARAMS));
        SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,NetPnPHandle,&DeviceData);
  }

  DeviceData.cbSize = sizeof(SP_DEVINFO_DATA);
  SetupDiDestroyDeviceInfoList(NetPnPHandle);
}

问题是它在 Windows XP 上完美运行在 Win 7 上不起作用:(

你能帮我找到错误吗?

非常感谢!

最佳答案

这只是在 x64 操作系统上从 64 位进程调用函数的要求。 参见 http://msdn.microsoft.com/en-us/library/windows/hardware/ff541255(v=vs.85).aspx

关于c++ - 通过 WinAPI 禁用/启用网络接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17331449/

相关文章:

C++ 输出错误(新增问题)

c - 为什么组框是静态的,是一种 Button 控件?

c - Wireshark 解剖器 : How to Identify Missing UDP Frames?

c++ - 创建 Windows 窗体控件 (C++)

javascript - Node.js 在远程网络上提供 HTML 文件

C# 通过网络发送请求并等待任何响应?

c++ - 为什么我的函数在应该返回 char 时返回垃圾?

c++ - 数据库连接池的 std::stack 中的原始指针或 std::shared_ptr

c++ - 在 opencv 中创建晕影过滤器?

unix - 经验丰富的 Unix 程序员使用 Microsoft 工具应该注意什么?