windows未公开函数NhGetInterfaceNameFromDeviceGuid分析
IPHLPAPI.dll中导出了函数NhGetInterfaceNameFromDeviceGuid,其作用是根据设备GUID获取对应的接口名称。例如网卡GUID为“94C913BF-EFA9-419B-8506-BB88B0F3B34F”,对应的设备接口名称为“本地连接”。但是微软并未公开该函数的使用方法。通过Ollydbg动态调试windows任务管理器,笔者分析出了该函数的调用方法,在这里跟大家分享。
首先给出函数原型和参数解释:
DWORD __stdcall NhGetInterfaceNameFromDeviceGuid(GUID* guid, // 设备GUID
char* buf, // 接收获取到设备接口名的buffer
DWORD* buflen, // buffer的大小
DWORD unknown1/*=0*/, // 作用未知,传0即可
DWORD unknown2/*=1*/) // 作用未知,传1即可
调用示例:
typedef DWORD (__stdcall *type_NhGetInterfaceNameFromDeviceGuid)(GUID* guid, char* buf, DWORD* buflen, DWORD unknown1/*=0*/, DWORD unknown2/*=1*/);
HMODULE hDll = LoadLibrary(_T("Iphlpapi.dll"));
type_NhGetInterfaceNameFromDeviceGuid NhGetInterfaceNameFromDevice