VBでPlagAndPlayデバイスのデバイスツリーを表示するプログラムを作っています。
DeviceInstanceHandle からレジストリの値を取得したいのですが、
CM_Get_DevNode_Registry_Property()は
Do not use this function. Use device installation functions instead.
となっていてSetupDi系の関数をつかえとなっています。
SetupDiGetDeviceRegistryProperty()を使えればいいのですが、DevideInstanceIDからDeviceInfoSetのハンドルとDeviceInfoDataがしゅとくできません。
どなたかわかりましたらおしえてください。
# 解答ではありません。
逆に尋ねますが、DeviceのHandle(おそらくCreateFileによるものだと思います)を経由しないと取得できない情報は沢山あるのでしょうか?
ツリーを表示するのであれば、SetupDi系をメインにするのが無難でしょう。
>K.J.Kさま
.
ツリーを表示するには、CM_Get_Child()、CM_Get_Sibling()等で
階層構造を得ないとできないと思うのですが、SetupDi系でできるのでしょうか?
>K.J.Kさま
>DeviceのHandle(おそらくCreateFileによるものだと思います)
CreateFileは使いません。CM_Enumerate_Classes()かCM_Locate_DevNode()です。
あぁ、失礼しました。DeviceIoControlで送るコマンドだと勘違いしていました。
とりあえず、途中でCM_Get_Device_IDを介してみては。
>K.J.Kさま
CM_Get_Device_ID()でデバイスIDを取得して・・・
SteupDiOpenDeviceInfo()??
DeviceInfoHandleは自分で作れないから、SetupDiGetClassDevs()で
なにかのハンドルを取得しておいて、それにくっ付ける??
hDevInfoはSetupDiCreateDeviceInfoListから行けません?
>K.J.K.殿
>hDevInfoはSetupDiCreateDeviceInfoListから行けません?
いけました。
大変お手数おかけしました。
(ちゃんと全部の関数調べろって感じですよね)
おかげで、目的のプログラム書くことができました。
本当にありがとうございました。
ツイート | ![]() |