ReadUsbInfo proc pBuffer:DWORD
LOCAL hDevInfoSet:HDEVINFO
LOCAL nCount:dword
LOCAL bResult:dword
LOCAL szBuffert[1024]:byte
mov nCount,0
invoke RtlZeroMemory,addr szBuffert,1024
;取得一个该GUID相关的设备信息集句柄
invoke SetupDiGetClassDevs,addr UsbClassGuid,NULL,0,18
.if eax == INVALID_HANDLE_VALUE
mov bResult,0
.else
mov hDevInfoSet,eax
mov bResult,1
.endif
;// 设备序号=0,1,2... 逐一测试设备接口,到失败为止
.while(bResult)
invoke SetupDiEnumDeviceInterfaces,hDevInfoSet,NULL,addr UsbClassGuid,nCount,addr spdid
mov bResult,eax
;// 枚举符合该GUID的设备接口
.if bResult == TRUE
;取得该设备接口
invoke SetupDiGetDeviceInterfaceDetail,hDevInfoSet,addr spdid,addr spdidd,INTERFACE_DETAIL_SIZE,NULL,NULL
mov bResult,eax
.if bResult == TRUE
;取得该设备接口的细节(设备路径)
invoke lstrcat,addr szBuffert,ADDR spdidd.DevicePath
mov eax,nCount
inc eax
mov nCount,eax
.else
.break
.endif
.else
.break
.endif
.endw
invoke SetupDiDestroyDeviceInfoList,hDevInfoSet
invoke lstrcpy,pBuffer,addr szBuffert
xor eax,eax
ret
ReadUsbInfo endp
MASM32 读取连接的USB设备路径列表
最新推荐文章于 2024-05-21 16:24:07 发布