2,644
社区成员




for (DWORD n = 0; SetupDiEnumDeviceInfo(hardwareDeviceInfo, n, &DeviceInfoData); n++)
{
DWORD dwBytes = 0;
SetupDiGetDeviceInstanceId(hardwareDeviceInfo, &DeviceInfoData, NULL, 0, &dwBytes);
PWSTR szInstanceId = new WCHAR[dwBytes];
if (szInstanceId)
{
if (SetupDiGetDeviceInstanceId(hardwareDeviceInfo, &DeviceInfoData, szInstanceId, dwBytes, &dwBytes))
{
_wcsupr_s(szInstanceId, dwBytes);
if (wcsstr(szInstanceId, szService))
{
OutputDebugStringW(szInstanceId);
WCHAR buf[13];
wchar_t* pStart;
wchar_t* pEnd;
if (m_bWin8)
{
pStart = wcsrchr(szInstanceId, '_');
pEnd = wcsrchr(szInstanceId, '\\');
}
else
{
pStart = wcsrchr(szInstanceId, '&');
pEnd = wcsrchr(szInstanceId, '_');
}
if (pStart && pEnd)
{
*pEnd = 0;
HDEVINFO hDevInfo = SetupDiGetClassDevs(&GUID_DEVCLASS_NET, REGSTR_KEY_PCIENUM, 0, DIGCF_PRESENT);
if (hDevInfo != INVALID_HANDLE_VALUE) {
SP_DEVINFO_DATA spdevd = { 0 };
spdevd.cbSize = sizeof(SP_DEVINFO_DATA);
for (int i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &spdevd); i++) {
TCHAR szName[256] = { 0 };
if (!SetupDiGetDeviceRegistryProperty(hDevInfo, &spdevd, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, sizeof(szName), NULL)) {
SetupDiGetDeviceRegistryProperty(hDevInfo, &spdevd, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, sizeof(szName), NULL);
}
}
SetupDiDestroyDeviceInfoList(hDevInfo);
}