Visual C++通过snmp获取mac地址

在visual c++环境下获取MAC地址的方式有很多种,但我觉得下面的方法最好。因为它不依赖平台platform SDK (现在已经不支持VC++ 6 anyway), 或者其他库。

但要注意一些问题:因为要使用WSAStartup()函数,所以需要引入WS2_32.dll。

#pragma comment(lib,"Ws2_32.lib")

  
 
snmpmac.cpp

 

 ///


snmpapi.cpp

 
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Visual Studio C++ 本身并不能直接获取 HDMI 地址,因为 HDMI 地址是指连接 HDMI 接口的设备的物理地址,需要通过操作系统提供的 API 获取。以下是在 Windows 操作系统中使用 C++ 获取 HDMI 设备的物理地址的步骤: 1. 引入 Windows.h 头文件,该头文件包含了许多 Windows API 函数的声明。 2. 使用 SetupDiGetClassDevs 函数获取设备信息集合句柄。 3. 枚举该设备信息集合,获取每一个设备信息结构体。 4. 通过获取到的设备信息结构体,使用 SetupDiGetDeviceRegistryProperty 函数获取 HDMI 设备的物理地址。 具体实现可以参考以下代码(仅供参考): ``` #include <windows.h> #include <setupapi.h> #include <devguid.h> #include <initguid.h> #include <cfgmgr32.h> #pragma comment(lib, "setupapi.lib") #pragma comment(lib, "advapi32.lib") #pragma comment(lib, "cfgmgr32.lib") // 枚举指定类别的设备 void EnumDevices(const GUID& guidClass, int& nIndex) { HDEVINFO hDevInfo; SP_DEVINFO_DATA DeviceInfoData; DWORD dwSize; TCHAR szBuffer[MAX_PATH]; // 获取设备信息集合句柄 hDevInfo = SetupDiGetClassDevs(&guidClass, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); if (hDevInfo == INVALID_HANDLE_VALUE) return; // 枚举设备信息集合中的每一个设备 DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA); for (DWORD i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData); i++) { dwSize = 0; // 获取设备描述 if (SetupDiGetDeviceRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_DEVICEDESC, NULL, (PBYTE)szBuffer, sizeof(szBuffer), &dwSize)) { // 判断是否为 HDMI 设备 if (_tcsstr(szBuffer, _T("HDMI")) != NULL) { // 获取设备物理地址 dwSize = 0; if (SetupDiGetDeviceRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_PHYSICAL_DEVICE_OBJECT_NAME, NULL, NULL, 0, &dwSize)) { TCHAR* pszBuffer = new TCHAR[dwSize / sizeof(TCHAR)]; if (SetupDiGetDeviceRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_PHYSICAL_DEVICE_OBJECT_NAME, NULL, (PBYTE)pszBuffer, dwSize, &dwSize)) { _tprintf(_T("HDMI device found: %s\n"), pszBuffer); } delete[] pszBuffer; } } } } SetupDiDestroyDeviceInfoList(hDevInfo); } int main() { int nIndex = 0; // 枚举显示适配器设备 EnumDevices(GUID_DEVCLASS_DISPLAY, nIndex); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值