#include <stdio.h>
参考槐野文献:http://support.microsoft.com/kb/197671/zh-tw
如果是系统的标准设备,可以在devguid.h文件中找到所对应的guid值,但如果是其它安装的驱动则可以查看其磨者classguid值(系统设备也可以),如:USB的guid值可以在注册表路径:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Class/
里面找到值{36fc9e60-c465-11cf-8056-444553540000}
其对应的classguid值为:
{0x36fc9e60L, 0xc465, 0x11cf, 0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}
对比下就可以用这两个字符串相互转换了。
devguid.h中设备类型guid的定义:
GUID_DEVCLASS_FDC 软盘控制器
GUID_DEVCLASS_DISPLAY 显示卡友腔
GUID_DEVCLASS_CDROM 光驱
GUID_DEVCLASS_KEYBOARD 键盘
GUID_DEVCLASS_COMPUTER 计算机
GUID_DEVCLASS_SYSTEM 系统
GUID_DEVCLASS_DISKDRIVE 磁盘驱动器
GUID_DEVCLASS_MEDIA 声音、视频和游戏控制器
GUID_DEVCLASS_MODEM MODEM
GUID_DEVCLASS_MOUSE 鼠标和其他指针设备
GUID_DEVCLASS_NET 网络好游衫设备器
GUID_DEVCLASS_USB 通用串行总线控制器
GUID_DEVCLASS_FLOPPYDISK 软盘驱动器
GUID_DEVCLASS_UNKNOWN 未知设备
GUID_DEVCLASS_SCSIADAPTER SCSI 和 RAID 控制器
GUID_DEVCLASS_HDC IDE ATA/ATAPI 控制器
GUID_DEVCLASS_PORTS 端口(COM 和 LPT)
GUID_DEVCLASS_MONITOR 监视器
对设备管理器的查询
GUID ClassGuid = {0x96e73b6eL, 0x7a5a, 0x11d4, 0x9f, 0x24, 0x00, 0x80, 0xc8, 0x27, 0x27, 0xf4}
HDEVINFO hDevInfo
SP_DEVINFO_DATA DeviceInfoData
DWORD i
CString temp
CString str
hDevInfo = SetupDiGetClassDevs((LPGUID) &ClassGuid, 0, 0,DIGCF_PRESENT)
if (hDevInfo == INVALID_HANDLE_VALUE)
{
// Insert error handling here.
return
}
// Enumerate through all devices in Set.
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA)
for (i = 0SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData)i++)
{
DWORD DataT
char buffer[2048]
DWORD buffersize =sizeof(buffer)
while (!SetupDiGetDeviceRegistryProperty(
hDevInfo,
&DeviceInfoData,
SPDRP_DEVICEDESC,
&DataT,
(PBYTE)buffer,
buffersize,
&buffersize))
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
{
// Change the buffer size.
//if (buffer) LocalFree(buffer)
//buffer = (PSP_INF_INFORMATION)LocalAlloc(LPTR,buffersize)
}
else
{
// Insert error handling here.
break
}
}
if (buffer != NULL &&i == 0)
{
temp.Format("<光盘驱动器>")
str += temp
}
temp.Format("<VALUE>%s</VALUE>",buffer)
str += temp
if (buffer) LocalFree(buffer)
}
if (i != 0)
{
temp.Format("</光盘驱动器>")
str += temp
}
if ( GetLastError()!=NO_ERROR &&
GetLastError()!=ERROR_NO_MORE_ITEMS )
{
return
}
// Cleanup
SetupDiDestroyDeviceInfoList(hDevInfo)
10047 -- 使用了与请求的亩闹拦协议不兼容的地址。WSASocket(AF_IRDA,SOCK_STREAM,IPPROTO_TCP,NULL,0,WSA_FLAG_OVERLAPPED)参迅胡数不匹配弯袭。
使用: WSASocket(AF_IRDA, SOCK_STREAM, 0, NULL, 0,
WSA_FLAG_OVERLAPPED)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)