問題タブ [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 - SetupDiGetClassDevs は、文書化されているデバイス インスタンス ID で動作しますか?
MSDN のドキュメントによると、SetupDiGetClassDevsにデバイス インスタンス IDを渡して、特定のデバイスのデバイス情報セットを取得できます。
特定のデバイスのみを返すには、DIFCF_DEVICEINTERFACE フラグを設定し、Enumerator パラメーターを使用してデバイスのデバイス インスタンス ID を指定します。
WM_DEVICECHANGE
メッセージDBT_DEVICEARRIVAL
イベントからシンボリック名を解析してデバイス インスタンス ID を取得し、結果の ID をSetupDiGetDeviceInstanceIdから返された ID と比較して検証しました。OS 提供のデバイス インスタンス ID を渡しても機能しません (つまり、SetupDiGetClassDevs 呼び出しが で失敗しますERROR_INVALID_PARAMETER
)。
新しく到着したデバイスの構造を取得するための現在の回避策SP_DEVINFO_DATA
は、同じクラスのすべてのデバイスを列挙し、SetupDiGetDeviceInstanceId の結果をシンボリック名と比較することです。ただし、ドキュメントによると、なぜこれが必要なのかわかりません...
この方法で SetupDiGetClassDevs を動作させた人はいますか? DBT_DEVICEARRIVAL イベントのデータを使用してデバイスの詳細情報を取得するためのより良い方法はありますか?
setupapi - SetupDiGetClassDescriptionはFALSEを返し、エラー0xE0000206を設定します
過去数日間、Windows 2003でSetupApiを試してみましたが、予期しないエラーが多数表示されます。たとえば、に渡すGUID_NULL
とSetupDiGetClassDescription
、FALSEが返さGetLastError()
れ、が返されます0xE0000206
。
GUID_NULLはSetupDiEnumDeviceInfo
;から来ました。私はこれを故意に行っていません。
エラーも発生しまし0xE0000209
た。これらの「0xE」エラー値はどこで宣言、定義、または文書化されていますか?
c# - DeviceAttached メッセージが来ない
USB HID と通信できる C# アプリケーションを開発しようとしています。WndProc メソッドをオーバーライドして、すべての WM_DEVICECHANGE イベントをキャッチし、DeviceChange メソッドをメソッド OnDeviceChange (このコードは実際には Jan Axelson から借用したもの) に渡します。これは次のようになります....
ただし、何らかの理由で、デバイスを接続するたびに、それがマウス、キーボード、または開発中のデバイスであるかどうかにかかわらず、すべて HID であり、WParam の値は常に 0x7 です。
DBT.h をチェックインしたところ、0x0007 の値は ...
最初のメッセージが届いた後に停止するだけではなく、すべてのメッセージを調べて、すべてのメッセージの値が常に 0x0007 になるようにします。DeviceAttached または DeviceRemoved イベントが表示されないのはなぜですか?
USBの経験がある人は何か考えがありますか?
windows - WMI の内部処理?
WMI の仕組みに興味があります。特に、現在 WMI を使用して「Select * from Win32_DesktopMonitor」を介して物理モニターを照会しています。これは、次のような関数によって返される仮想モニターではなく、物理モニターの数を知りたいため、複数のプラットフォームで一貫して正しい結果が得られるためです。 GetSystemMetrics および EnumDisplays。また、デバイス マネージャーのようにレジストリを検査する SetupAPI についても調査しましたが、Vista 以前のバージョンの Windows で誤ってファントム モニターを返す可能性があります。
API 呼び出しを追跡し、wbemtest.exe によって作成された procmon.exe とクエリを作成する独自の実行可能ファイルを使用してイベントを監視しようとしましたが、あまり見つかりませんでした。
WMI の内部動作、API 呼び出しのより詳細なトレース、またはモニターをカウントする信頼できる方法についての洞察をいただければ幸いです。
マイナー ノート: C++ での作業
c++ - SetupAPI.DLL から HID.DLL
SetupAPI を使用して関数を実行しSetupDiGetClassDevs
、ポインターまたはハンドルを取得します。
次に、ループを開始して実行します。
と
必要なサイズを取得SP_DEVICE_INTERFACE_DATA
します。
次に、このサイズを設定して再度実行します。
私が得るデータ構造から:
DevicePath
必要に応じて、レジストリからSP_DEVINFO_DATA
の情報と山積みの情報が必要だと思います。
私が実際に望んでいるのは、HID ライブラリにアクセスし、
この列挙されたデバイスから、、およびHidD_GetAttributes
を取得するために呼び出して、デバイスを識別できるようにすることです。VendorID
ProductID
VersionNumber
この特定の情報は、USB デバイス自体から得られると思います。誰でもその方法を教えてもらえますか?
ところで、Windows XP の私のバージョンでは、レジストリ パスを使用していますが、HKEY_LOCAL_MACHINE\Enum\HID\...\Class
.
私も見つかりませんHKEY_LOCAL_MACHINE\Enum\
。これは、関数を実行していないためだと思いますSetupDiEnumDeviceInterfaces
。
完全なデータは Lakeview Research でしか見つけることができません。しかし、それはこの主題をカバーしていません。ジャンクなのになんでネットに出回ってるの?
windows - ディスクデバイスの物理デバイスオブジェクト名の取得
デバイスマネージャに表示されているように、Windowsのユーザーモードアプリケーションからディスクデバイスの「物理デバイスオブジェクト名」を取得する必要があります。
私は今、IOCTLを介してロードされ、問い合わせられるカーネルドライバーを含む解決策を持っています。カーネルランドに入ると、その名前にたどり着くのに問題はありません。可能であれば、カーネルモジュールの使用は避けたいと思います。
何か案は?
windows-7 - dpinst / DifX は署名済みドライバーをサイレント モードでインストールしません
DpInst を使用して Windows 7 に署名付きドライバー (つまり、適切に署名された .CAB を含む) をインストールする場合、WHQL 署名付きドライバーでない限り、サイレント インストールすることはできません。非サイレント モードで DpInst を実行すると、「発行元」を信頼するように求められます。DpInst をサイレント モードで実行すると、署名関連のエラー コード (0x800b0109 のようなもの -- setupapi.app.log を確認してください) で失敗します。
windows - すべてのデバイス オブジェクトを列挙する方法
私の英語でごめんなさい。システム内の DEVICE_OBJECT へのすべてのポインターを列挙したいと考えています。これはユーザーモードからできることは知っていますが、忘れていました。ZwQueryDirectiryObject または SetupAPI の助けを借りている可能性があります..?
c++ - SetupAPI を使用して、.inf ファイル内の行のキーを取得できますか?
SetupAPI から関数 SetupGetLineText ( http://msdn.microsoft.com/en-us/library/aa377388(v=VS.85).aspx ) を使用して、inf ファイルのセクションから行を読み取ります。 .
行の形式は次のとおりです。
SetupGetLineText は、値の部分を返すように見えます。それは結構ですが、私が読んでいる現在のコンテキストのキーが何であるかも知りたいです。キーを読み取るための Setup API には関数がないようです。
キーを取得する方法を理解する上で助けていただければ幸いです。
delphi - 「SetupOpenInfFile」が Delphi2010 でアクセス違反エラーを取得
Delphi 2010 で次の行コードを使用すると、「アクセス違反」エラーが発生しますが、同じコードが VC++ で正常に動作します。
Delphi 2010 コードは
VC++ コードは
この問題を解決するために私を助けてください。皆さんありがとう。