CM_Get_DevNode_Registry_Property()を使わずにデバイスレジストリプロパティーをしゅとくするには?

解決


My  2005-06-24 05:58:32  No: 90667  IP: [192.*.*.*]

VBでPlagAndPlayデバイスのデバイスツリーを表示するプログラムを作っています。
DeviceInstanceHandle からレジストリの値を取得したいのですが、
CM_Get_DevNode_Registry_Property()は
Do not use this function. Use device installation functions instead.
となっていてSetupDi系の関数をつかえとなっています。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/install/hh/install/cfgmgrfn_3abba546-6876-468e-9dc5-2cb1b286fb9f.xml.asp

SetupDiGetDeviceRegistryProperty()を使えればいいのですが、DevideInstanceIDからDeviceInfoSetのハンドルとDeviceInfoDataがしゅとくできません。
どなたかわかりましたらおしえてください。

編集 削除
K.J.K.  2005-06-24 08:40:42  No: 90668  IP: [192.*.*.*]

# 解答ではありません。

逆に尋ねますが、DeviceのHandle(おそらくCreateFileによるものだと思います)を経由しないと取得できない情報は沢山あるのでしょうか?

ツリーを表示するのであれば、SetupDi系をメインにするのが無難でしょう。

編集 削除
My  2005-06-24 14:54:37  No: 90669  IP: [192.*.*.*]

>K.J.Kさま
.
ツリーを表示するには、CM_Get_Child()、CM_Get_Sibling()等で
階層構造を得ないとできないと思うのですが、SetupDi系でできるのでしょうか?

編集 削除
My  2005-06-24 14:58:45  No: 90670  IP: [192.*.*.*]

>K.J.Kさま

>DeviceのHandle(おそらくCreateFileによるものだと思います)
CreateFileは使いません。CM_Enumerate_Classes()かCM_Locate_DevNode()です。

編集 削除
K.J.K.  2005-06-25 00:32:25  No: 90671  IP: [192.*.*.*]

あぁ、失礼しました。DeviceIoControlで送るコマンドだと勘違いしていました。

とりあえず、途中でCM_Get_Device_IDを介してみては。

編集 削除
My  2005-06-25 11:36:13  No: 90672  IP: [192.*.*.*]

>K.J.Kさま

CM_Get_Device_ID()でデバイスIDを取得して・・・
SteupDiOpenDeviceInfo()??

DeviceInfoHandleは自分で作れないから、SetupDiGetClassDevs()で
なにかのハンドルを取得しておいて、それにくっ付ける??

編集 削除
K.J.K.  2005-06-25 14:10:15  No: 90673  IP: [192.*.*.*]

hDevInfoはSetupDiCreateDeviceInfoListから行けません?

編集 削除
My  2005-06-26 04:05:27  No: 90674  IP: [192.*.*.*]

>K.J.K.殿

>hDevInfoはSetupDiCreateDeviceInfoListから行けません?
いけました。
大変お手数おかけしました。
(ちゃんと全部の関数調べろって感じですよね)

おかげで、目的のプログラム書くことができました。
本当にありがとうございました。

編集 削除