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设备路径列表
最新推荐文章于 2021-08-25 16:58:28 发布
本文介绍了一种使用Assembly语言编写的程序,该程序能够枚举并获取连接到系统的USB设备的信息。通过调用Windows API函数如SetupDiGetClassDevs等,程序可以获取设备句柄并进一步获取每个USB设备的详细信息,包括设备路径。
1606

被折叠的 条评论
为什么被折叠?



