大家好!我刚开始学习USB,看了一些贴子,结果好象越看越迷糊,特向各位高手请教,希望大家能帮帮我!
1.看了一些贴子,在侦测USB时要用到SetupDiGetClassDevs((LPGUID)&guidHID_1,//GUID_CLASS_USB_DEVICE, // class GUID
NULL, //
NULL, //
DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
其中的guidHID_1是怎样定义的,是根据注册表中的数据定义,还是直接定义为GUID guidHID_1;
而且我在一些例子中并没看见使用GUID,
wsprintf(HCName, "\\\\.\\HCD%d", HCNum);
hHCDev = CreateFile(HCName,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);同样可以找到USB
2.如果我要对U盘进行读、写,如果有多个U盘,怎样才能确定是我想读、写的U盘呢?应该怎样去读、写
3.如果我要对U盘的存储芯片进行擦出,如果知道指令,应该怎样从USB上送到U盘上去呢?
1.看了一些贴子,在侦测USB时要用到SetupDiGetClassDevs((LPGUID)&guidHID_1,//GUID_CLASS_USB_DEVICE, // class GUID
NULL, //
NULL, //
DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
其中的guidHID_1是怎样定义的,是根据注册表中的数据定义,还是直接定义为GUID guidHID_1;
而且我在一些例子中并没看见使用GUID,
wsprintf(HCName, "\\\\.\\HCD%d", HCNum);
hHCDev = CreateFile(HCName,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);同样可以找到USB
2.如果我要对U盘进行读、写,如果有多个U盘,怎样才能确定是我想读、写的U盘呢?应该怎样去读、写
3.如果我要对U盘的存储芯片进行擦出,如果知道指令,应该怎样从USB上送到U盘上去呢?
DEFINE_GUID(DiskClassGuid, 0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(CdRomClassGuid, 0x53f56308L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(PartitionClassGuid, 0x53f5630aL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(TapeClassGuid, 0x53f5630bL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);2.如果有多个U盘,用盘符来确定,
// 打开设备
hDevice= ::CreateFile(pszDevicePath, // 设备路径
GENERIC_READ | GENERIC_WRITE, // 读写方式
FILE_SHARE_READ | FILE_SHARE_WRITE, // 共享方式
NULL, // 默认的安全描述符
OPEN_EXISTING, // 创建方式
0, // 不需设置文件属性
NULL); // 不需参照模板文件
// 用IOCTL_STORAGE_QUERY_PROPERTY取设备属性信息
bResult = ::DeviceIoControl(hDevice, // 设备句柄
IOCTL_STORAGE_QUERY_PROPERTY, // 取设备属性信息
&Query, sizeof(STORAGE_PROPERTY_QUERY), // 输入数据缓冲区
pDevDesc, pDevDesc->Size, // 输出数据缓冲区
&dwOutBytes, // 输出数据长度
(LPOVERLAPPED)NULL); // 用同步I/O
3.不会
我在程序中并没有定义GUID,但同样能检测到USB,是不是在DDK中已经有GUID的定义?
SetupDiGetClassDevs((LPGUID)&guidHID_1,//GUID_CLASS_USB_DEVICE, // class GUID
NULL, //
NULL, //
DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
这里的guidHID_1是不是只需要定义我GUID就行呢?
alec626(月吻长河),可以给我介绍一下这些接口函数吗?