以下程序代码就是用来获取网络适配器信息的。我给每一行代码都做了注解
要想读懂这个程序,我认为应该要清楚以下几点:
1、注册表操作的几个函数
2、网卡的存储位置以及网卡存储位置下几个数据项的含义
3、三个子键句柄的的意义和五个变量定义的作用
4、缓冲区的初始化(定义处)和重设(在三个不同的位置)
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include "iphlpapi.h"
#pragma comment(lib, "iphlpapi.lib")
int main(void)
{
HKEY hKey; // 一级子键句柄(网卡子键句柄)
HKEY hSubKey; // 二级子键句柄
HKEY hNdiIntKey; // 三级子键句柄
// 定义一个变量,用于存储网卡子键位置
char strNICPath[] = "System\\CurrentControlSet\\Control\\Class\\{4d36e972-e325-11ce-bfc1-08002be10318}";
// 打开网卡子键位置
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, strNICPath, 0, KEY_READ, &hKey) != ERROR_SUCCESS )
{
printf("网卡子键打开失败。");
return -1;
}
// 以下两个变量用于二级子键句柄时用
DWORD dwIndex = 0; // 要枚举的二级子键索引
char szSubKey[256];// 存储二级子键
// 定义三个变量,用于子键的数据项
DWORD dwBuffSi