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

解決


My  2005-06-24 14:58:32  No: 90667

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 17:40:42  No: 90668

# 解答ではありません。

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

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


My  2005-06-24 23:54:37  No: 90669

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


My  2005-06-24 23:58:45  No: 90670

>K.J.Kさま

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


K.J.K.  2005-06-25 09:32:25  No: 90671

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

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


My  2005-06-25 20:36:13  No: 90672

>K.J.Kさま

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

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


K.J.K.  2005-06-25 23:10:15  No: 90673

hDevInfoはSetupDiCreateDeviceInfoListから行けません?


My  2005-06-26 13:05:27  No: 90674

>K.J.K.殿

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加