smooth 发表于 2022-1-10 23:09:12

[已解决]请教如何获取光驱的设备实例路径(ID)?

本帖最后由 smooth 于 2022-1-11 09:19 编辑

以下代码可以获取磁盘设备的设备实例ID,但是无法获取到光驱的设备实例ID,现在银行的U盾,都是做成CD-ROM的形式,比如浦发银行的U盾,用下面的代码就搞不到它的设备实例ID。
在SetupApi.au3中搜索了一下关于CD-ROMM的函数,英文不好实在是看不太懂,不知道是否可以将下面的代码改造一下,用来获取光驱的设备实例ID?
      
#include <SetupApi.au3>
Local $hDevs, $tDevInfo, $aMouse = []
$hDevs = _SetupDiGetClassDevs($DIGCF_PRESENT, "DiskDrive")
While _SetupDiEnumDeviceInfo($hDevs, $aMouse, $tDevInfo)
   $aMouse += 1
   $sDescr = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, $SPDRP_DEVICEDESC)
   $sName = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, $SPDRP_FRIENDLYNAME)
   If $sName <> "" Then $sDescr = $sName
   ReDim $aMouse[$aMouse + 1]
   $aMouse[$aMouse] = $sDescr ; 磁盘描述信息
   $aMouse[$aMouse] = _SetupDiGetDeviceInstanceId($hDevs, $tDevInfo) ; 设备范例ID
WEnd
; 枚举网卡只需把"DiskDrive"改为"Net",鼠标则对应Mouse,显卡对应Display。
_SetupDiDestroyDeviceInfoList($hDevs)
Local $dFindDevs = ""
For $i = 1 To $aMouse
   If $aMouse[$i] = "USBSTOR\DISK&VEN_&PROD_USB_DISK_3.0&REV_PMAP\070B874E1FC19B55&0" Then
    $dFindDevs = $aMouse[$i]
    ExitLoop
   EndIf
Next


smooth 发表于 2022-1-11 09:18:44

解决了,$hDevs = _SetupDiGetClassDevs($DIGCF_PRESENT, "CDROM"),即可!
页: [1]
查看完整版本: [已解决]请教如何获取光驱的设备实例路径(ID)?