問題タブ [setupapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Windows SetupAPI を使用して USB デバイス記述子を取得する
SetupAPI関数(のような)でUSBデバイス記述子を取得できるかどうか疑問に思っていましたSetupDiGetDeviceRegistryProperty
か? ありがとうございました!
編集
これまでのところ、Windows のフレンドリ名のみを受け取ることができます。
c++ - デバイスがユーザーによって明示的に無効にされているかどうかを知る方法は?
次の図に示すように、デバイス マネージャーを使用して、ユーザーは明示的にデバイスを有効/無効にすることができます。
特定のデバイスについて、現在ユーザーが無効/有効な状態にあるかどうかを知りたいです。
私は次のアプローチを試しました
CM_Get_DevNode_Status(&status, &problem, data.DevInst, 0);
の存在がDN_STARTED
、またはそれDN_DRIVER_LOADED
を教えてくれることを望んでいました。ただし、デバイスが接続/切断されたときに、ドライバーが OS によってロード/アンロードされている場合でも、これらはゼロになる可能性があります。たとえば、デバイスが有効で、ドライバーがロードされている場合などです。DN_STARTED
になりますが1
、デバイスを切断すると、デバイスのエントリがデバイス マネージャーから削除される前にゼロに設定されます。SetupDiGetDeviceRegistryProperty(..., SPDRP_INSTALL_STATE, ...)
の状態はCM_INSTALL_STATE_INSTALLED
、デバイスが有効になっていることを意味するはずですが。ただし、この関数は、無効なデバイスの場合でもこの状態を返します。WMIを使えば必要な情報は取得できましたが、PowerShellではwmiを使いました。ネイティブの C++ で実装するのは非常に難しいため、wmi は使用したくありません。次のクエリを使用しました。
Select Name, Availability, ConfigManagerErrorCode, ConfigManagerUserConfig from Win32_PnPEntity where Name = 'NVIDIA Quadro M1000M'
上記のクエリの ConfigManagerErrorCode は、22 に設定されている場合、デバイスが無効になっていることを意味し、21 は Windows がデバイスを削除していることを意味します
非 wmi ソリューションを探しています。
c++ - 未解決の外部シンボル _DEVPKEY_Device_BusReportedDeviceDesc
私のマシンに接続されているデバイスの場合、デバイス プロパティのBus Reported Device Descriptionを取得したいと考えています。この目的のために、 Setup API の関数 SetupDiGetDeviceProperty を使用します。devpkey.hでDEVPKEY_Device_BusReportedDeviceDescという定義を見つけました。
しかし、DEVPKEY_Device_BusReportedDeviceDesc を使用すると、リンク中に未解決の外部シンボル _DEVPKEY_Device_BusReportedDeviceDescを受け取ります。
これが私のコードです(問題を再現するための最小限のコードのみが含まれています):
完全なエラー コードは次のとおりです。
エラー LNK2001: 未解決の外部シンボル _DEVPKEY_Device_BusReportedDeviceDesc
この問題を解決するにはどうすればよいですか?