掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
指定したデバイスの接続/切断時の処理をするには? (ID:73413)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
補足・・・ 1.デバイスチェンジ(アライバル)が発生した場合 PDEV_BROADCAST_HDR pHdr = (PDEV_BROADCAST_HDR)lParam; PDEV_BROADCAST_DEVICEINTERFACE pDevInf = (PDEV_BROADCAST_DEVICEINTERFACE)pHdr; と、wParamの値で、該当デバイスを探すことになります。 2.デバイスの検索では 先のwParam = DBT_DEVICEARRIVAL の場合、デバイスが接続されたことになりますので (そうで無い場合は、切断された場) ようやくGUIDを探す手順に入ります。 3.デバイス名は、 pDevInfo->dbcc_name の、'\\'が出現するまでの文字列ですので、そ れを切り出して変数に保存(szClassとかの変数名に)(通常は、'USB'になります) 例 pDevInf->dbcc_name: \\?\USB#Vid_04e8&Pid_503b#0002F9A9828E0F06#{a5dcbf10-6530-11d2-901f-00c04fb951ed} szDevId: USB\Vid_04e8&Pid_503b\0002F9A9828E0F06 szClass: USB ※ 『#』を、『\』に置き換える処理が必要です。 SetupDiGetClassDevs で、切り出したデバイスのクラス名で、デバイスハンドルを取得 ハンドルが取得できていれば、SetupDiEnumDeviceInfo で、全デバイス情報から合致す るデバイスを検索します。 検索は、SetupDiGetDeviceInstanceId で、先のデバイスハンドルと、 pDevInf->dbcc_name からの、szClassとszDevId になります。 合致するものが見つかったら、そのデバイスから、SetupDigetDeviceRegistryProperty で、デバイス情報を取得します。 得られたspDevInfoData.ClassGuid が、お探しものものになるはずです。 ※ COMポート側のGUIDではなく、親デバイスとしてのUSB側のGUIDになることを お忘れなく。 ● 無茶苦茶ハショッてますが、流れとAPIを参考にして下さい。 尚、英語圏サイトには、それらサンプルがゴロゴロしてます。 お探しになっては如何でしょうか。 以上。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.