wince下的驱动中,如何获取一个usb设备的serial number
wince下的驱动中,如何获取一个usb设备的serial number
我现在搞的一个usb驱动,要求能获得该usb设备的serial number,请注意:是根据USB_DEVICE_DESCRIPTOR中的iSerialNumber来获取的设备的序列号,而不是iSerialNumber本身,因为iSerialNumber只是代表设备序列号的索引,这个我已经能得到,现在的问题是,如何通过该索引来获取真正的设备序列号字符串,
通过该索引来获取真正的设备序列号字符串,是否有这个东东呢?
如果有,根据硬件手册来获取。
这个设备序列号应该是与具体的硬件无关的,因为在windows平台上,用WDK开发USB驱动时,可以用:
WdfUsbTargetDeviceAllocAndQueryString(wdf_target_device(),
WDF_NO_OBJECT_ATTRIBUTES,
&serial_number_handle_,//这是个内存缓冲
&serial_number_char_len_,//内存缓冲长度
usb_device_descriptor_.iSerialNumber,//序列号索引
0x0409);//语言ID
这个函数来获取USB设备的序列号,因此,USB设备的序列号应该是一个标准化的东西,可以有标准的方法来获取,但是在wince下,目前还是没有发现这个类似的方法,是不是wince本身没有提供这样的接口呢?
通过索引,请求对应的字符串描述符。USB协议里有描述的。具体参考USB开发大全和圈圈教你玩转USB。
来wince里有个专门的函数:typedef USB_TRANSFER (* LPGET_DESCRIPTOR)(
USB_HANDLE hDevice,
LPTRANSFER_NOTIFY_ROUTINE lpStartAddress,
LPVOID lpvNotifyParameter,
DWORD dwFlags,
UCHAR bType,
UCHAR bIndex,
WORD wLanguage,
WORD wLength,
LPVOID lpvBuffer
);
可以获取指定的字符串描述符的。。