相关文章推荐
IP_ADAPTER_INFO adapterInfo ={0}; IP_ADAPTER_INFO *pAdapter = NULL; ULONG ulOutBufLen = sizeof(adapterInfo); dwRetVal = GetAdaptersInfo(&adapterInfo, &ulOutBufLen); if(dwRetVal == NO_ERROR) pAdapter = &adapterInfo; printf("AdapterName:%s\n",pAdapter->AdapterName); printf("AdapterDesc:%s\n",pAdapter->Description); printf("AdapterAddr:"); for(UINT i=0;iAddressLength;i++) printf("%02X%c", pAdapter->Address[i], i == pAdapter->AddressLength-1 ? '\n' : '-'); printf("AdapterType:%d\n",pAdapter->Type); printf("IPAddress:%s\n",pAdapter->IpAddressList.IpAddress.String); printf("IPMask:%s\n",pAdapter->IpAddressList.IpMask.String); printf("GetAdaptersInfo() failed."); return 0; }测试运行结果如下:
AdapterName:{08D07467-7622-4C52-B869-41AFF61D9651}
AdapterDesc:Broadcom NetLink (TM) Gigabit Ethernet
AdapterAddr:B8-AC-6F-1A-6A-46
AdapterType:6
IPAddress:172.16.27.30
IPMask:255.255.255.0 演示代码如下:#pragma comment(lib,"Iphlpapi.lib")#include #include #include int main(){ DWORD dwRetVal = 0; IP_ADAPTER_INFO adapterInfo ={0}; IP_ADAPTER_INFO *pAdapter = NULL; ULONG ulO #define MAX_ ADAPTER _NAME_LENGTH 256 #define MAX_ ADAPTER _DESCRIPTION_LENGTH 128 #define MAX_ ADAPTER _ADDRESS_LENGTH 8 typedef struct _NET_IP_ADD   用来监听入站网络连接,这个函数预示着程序会在一个套接字上监听入站网络连接。 AdjustTokenPrivileges   用来启用或禁用特定的访问权限。执行进程注入的恶意代码会经常调用这个函数 ,来取得额外的权限。 AttachThreadInput   将一个线程处理的输入附加到另一个线程上,使得第二个线程接收到输入事件。如键盘和鼠标事件。击键记录器和其他...
Get Adapter s Info -20151116 防止返回的mac出现null 20151116 From:http://blog.csdn.net/weiyumingwww/article/details/17554461 转载URL:http://www.cnblogs.com/ourran/p/4968502.html 测试环境win7 x64 vs2013 工程...
The Get Adapter s Info function retrieves adapter info rmation for the local computer. On Windows XP and later:  Use the Get Adapter sAddresses function instead ofGet Adapter 详细点说,物理网卡就是安装在电脑主板上的有线或无线网卡,每块物理网卡都有不同的且唯一的物理地址( MAC地址 ); 虚拟网卡则是通过软件模拟网络环境,构建的虚拟网络适配器,一般是Microsoft Loopback Adapter ,通过VPN技术实现虚拟网卡间的局域网通信。 Get Adapter s Info (pAd
转载From:http://www.educity.cn/wenda/351190.html Get Adapter s Info 函数在64位系统下返回ERROR_NOACCESS的问题   实际应用中一个程序在长时间运行后内存占用较高时发生崩溃,从dump信息中,发现Get Adapter s Info 函数返回了一个奇怪的错误码998(ERROR_NOACCESS),百度搜索不到相关的信息。MSDN上Get Adapter s Info 函数的错误码正常情况下只有5种。并且一共发生的两次崩溃都出现在一台Win7 64位机器
C语言可以通过使用Windows和Linux操作系统提供的相关 API 来 获取 本机 的 CPUID 和 MAC 地址。 首先,我们可以通过Windows API函数`GetSystem Info ()` 获取 CPUID。示例代码如下: #include <stdio.h> #include <windows.h> void main() SYSTEM_ INFO sys_ info ; GetSystem Info (&sys_ info ); printf("CPU ID: %x %x %x %x\n", sys_ info .dwProcessorType, sys_ info .dwPageSize, sys_ info .dwActiveProcessorMask, sys_ info .dwNumberOfProcessors); 然后,我们可以通过使用Windows API函数`Get Adapter s Info ()`来 获取 本机 的 MAC 地址。示例代码如下: #include <stdio.h> #include <windows.h> #include <iphlpapi.h> #pragma comment(lib, "iphlpapi.lib") void main() IP_ ADAPTER _ INFO adapter _ info [16]; DWORD buf_len = sizeof( adapter _ info ); if (Get Adapter s Info ( adapter _ info , &buf_len) == ERROR_SUCCESS) PIP_ ADAPTER _ INFO curr_ adapter = adapter _ info ; while (curr_ adapter != NULL) printf("MAC Address: %02x:%02x:%02x:%02x:%02x:%02x\n", curr_ adapter ->Address[0], curr_ adapter ->Address[1], curr_ adapter ->Address[2], curr_ adapter ->Address[3], curr_ adapter ->Address[4], curr_ adapter ->Address[5]); curr_ adapter = curr_ adapter ->Next; 对于Linux操作系统,我们可以使用`sys/sys info .h`和`ifaddrs.h`头文件来 获取 CPUID 和 MAC 地址。示例代码如下: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/sys info .h> #include <ifaddrs.h> #include <netinet/in.h> #include <arpa/inet.h> #include <net/if.h> #include <string.h> void main() struct sys info sys_ info ; if (sys info (&sys_ info ) == 0) printf("CPU ID: %08x\n", (unsigned int)sys_ info .processor_id[0]); struct ifaddrs* ifaddr, *ifa; if (getifaddrs(&ifaddr) == 0) for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) if (ifa->ifa_addr == NULL || ifa->ifa_addr->sa_family != AF_PACKET) continue; struct sockaddr_ll* s = (struct sockaddr_ll*)ifa->ifa_addr; unsigned char mac[6]; memcpy(mac, s->sll_addr, 6); printf("MAC Address: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); freeifaddrs(ifaddr); 需要注意的是,在使用这些API函数时,可能需要添加某些特定的库文件或在编译选项中指定相关的库文件,具体需要根据不同的操作系统和编译环境来进行调整。
 
推荐文章