問題タブ [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.

0 投票する
0 に答える
310 参照

c - 特定の PnP 列挙子に対して取得されたデバイス情報セット内のインターフェイスを列挙する

SetupDiEnumDeviceInterfaces()特定の PnP 列挙子に対応するすべてのデバイスのデバイス インターフェイス データを取得しようとしています。次の例を検討してください (インデックス 0 のインターフェイスのみ)。

(この例のより完全なバージョンは、こちらから入手できます。)

それを実行すると、エラー 259 ( ) が返されてSetupDiEnumDeviceInterfaces()失敗し、最初からデバイス情報セットのインターフェイスがなかったかのようになります。デバイス インターフェイス クラスではなく、デバイス セットアップ クラスに対して取得されたすべてのデバイス情報セットの動作のようです。GetLastError()ERROR_NO_MORE_ITEMS

ただし、呼び出しDIGCF_DEVICEINTERFACEの最後の引数にフラグを追加しSetupDiGetClassDevsA()て、インターフェイス クラスのセットを取得すると、後者はエラー 13 ( ERROR_INVALID_DATA) で失敗します。指定された PnP 列挙子がシステム内に登録されていないデバイス セットアップ クラスの場合、通常は同じエラーが発生します。実際、enumerator 引数を に置き換えるとNULL、インターフェイスが正常に取得されます。MSDN によると、フラグを指定するDIGCF_DEVICEINTERFACEと、列挙子引数の代わりにデバイス インスタンス ID を使用できますが、前述のデバイス インスタンス ID と、実際の列挙子を使用してフラグが存在する場合、呼び出しの列挙子引数のNULL唯一のオプションであることがわかります。その場合はオプション外です。SetupDiGetClassDevs()DIGCF_DEVICEINTERFACE

ここで実際に何が起こっているのか説明していただけますか? 私は SetupAPI セマンティクスに精通していないので、デバイス インターフェース クラスの場合とは対照的に、デバイス セットアップ クラスのデバイス情報セットを取得する際にどのような制限が課せられるのかわかりません。また、ここにバージョン固有の動作がある可能性はありますか? 上記のコードは Windows 7 x64 システムでテストされましたが、それ自体は 32 ビットの実行可能ファイルにコンパイルされていました。これに対して提案された特定のソリューションが古き良きWindows XPでも機能するかどうかを具体的に知る必要があります。

PS SetupDiEnumDeviceInfoを使用してデバイスを列挙しているときに CreateFile のデバイス パスを取得するのとは異なりますが、基本的な目的は似ています。;)

0 投票する
0 に答える
1098 参照

c++ - setupapi を使用して USB デバイスの com ポートを取得するには?

モデムの COM ポートの数を特定する必要があります。モデムは USB デバイスです。

これを達成するために私は必要です

  1. 接続されたモデムを検出する

    /li>

2.接続されたモデムの場合、エミュレートするすべての COM ポートをリストします。ただし、子デバイスと関連する COM ポート番号に関する情報にアクセスする方法。以下は、必要な COM ポートに関する情報を含む USB ツリー ビューのログです。

0 投票する
0 に答える
233 参照

c# - c#-SetupDiGetDriverInfoDetail API を呼び出してドライバー情報を取得するが、エラーがポップアップする

C# で setup.api を使用しています。SetupDiGetDriverInfoDetail 以外はすべて正常に動作します。プログラムがこの行を実行すると、例外メッセージがポップアップ表示されます

SetupDiGetDriverInfoDetail' がスタックのバランスを崩しました。これは、マネージド PInvoke 署名がアンマネージド ターゲット シグネチャと一致しないことが原因である可能性があります。PInvoke 署名の呼び出し規約とパラメーターがターゲットと一致していることを確認してください。

エラーは宣言署名が原因だと思います:

そして、これらのコードを次から使用します。

この問題を解決するのを手伝ってください。本当に感謝しています。

0 投票する
1 に答える
1119 参照

c# - C# を使用した Windows でのハードウェア デバイスの有効化/無効化

Windows で無効になっているデバイスを確認する必要があるプロジェクトに取り組んでおり、そのデバイスが無効になっていることが判明した場合、プログラムはそれを有効にする必要があります。

以前の回答から次のソリューションを使用しています..

プログラムでシステム デバイスを無効にするにはどうすればよいですか?

実行時に次のエラーが表示されますが...

ここに画像の説明を入力

リンクされた投稿に示されているようにプログラムを呼び出しており、示されているようにプログラムが開始されるとすぐに実行しています。

テストに使用しているシステムでは、既にデバイスが無効になっています (有効にしようとしています)。さまざまなビルド構成 (x86、AnyCPU) でビルドを試み、Windows XP と Windows 7 でテストしましたが、同じ問題が発生しました。

助言がありますか?

0 投票する
1 に答える
7784 参照

windows - SetupAPI (setupdi 関数) がリンクしない

Windows でシリアル (COM) ポートを列挙する関数が必要です。この目的のために、私は主にhttp://www.codeguru.com/cpp/wp/system/hardwareinformation/article.php/c5721/Determining-What-Serial-Ports-Are-Available-on-a-Windows-からコードをコピーしました。 Machine.htm

ヘッダー ファイル内:

実装:

このコードはファイルをコンパイルしますが、次のように使用しようとすると

エラー LNK2019: 未解決の外部シンボル __imp__SetupDiDestroyDeviceInfoList@4 が関数 __catch$?enumerateSerialPorts@SerialConnection@@SAX_N@Z$0 で参照されました

エラー LNK2019: 未解決の外部シンボル __imp__SetupDiEnumDeviceInterfaces@20 が関数で参照されています "public: static void __cdecl SerialConnection::enumerateSerialPorts(bool)" (?enumerateSerialPorts@SerialConnection@@SAX_N@Z)

エラー LNK2019: 未解決の外部シンボル __imp__SetupDiGetDeviceInterfaceDetailW@24 が関数で参照されています "public: static void __cdecl SerialConnection::enumerateSerialPorts(bool)" (?enumerateSerialPorts@SerialConnection@@SAX_N@Z)

エラー LNK2019: 関数で参照されている未解決の外部シンボル __imp__SetupDiGetClassDevsW@16

エラー LNK2019: 関数で参照されている未解決の外部シンボル __imp__SetupDiGetDeviceRegistryPropertyW@28

私は何を逃したのですか?MVS 2013 を使用しています

0 投票する
1 に答える
242 参照

c++ - SCardGetReaderDeviceInstanceId の実装

Microsoft はSCardGetReaderDeviceInstanceId、Windows8 以降のバージョンの winscard.dll に実装しています。この関数の実装を本当に知りたいです。逆コンパイルしようとしましたが、逆コンパイルが苦手で、何も得られませんでした。スマートカードリーダーの Name を DeviceInstanceId と関連付ける必要があるため、質問しているので、Windows8 での実装に基づいて、Windows7 または古いバージョンでも実装できると思います。皆さん、何か助けてくれますか?

0 投票する
2 に答える
656 参照

c++ - CM_Get_DevNode_Property_Keys キーの名前を取得する方法はありますか

Devnode のプロパティ キー (DEVPROPKEY) を取得できます。しかし、それらのキーの名前や説明を取得する方法が見つかりませんでした。これらのプロパティ キーの値は、CM_Get_DevNode_PropertyW を使用して取得することもできます。

LOOP を使用してキーと値を取得すると、キーの名前以外のすべての情報を取得できますか?

編集キーはdevpkey.hで事前定義されています。

現時点では、関数から取得したキーを事前定義されたキーと比較することが唯一の方法だと思います。Delphi を使用して、これらすべてのキーを C++ コードから Delphi コードに変換する必要がありました。それでも、 cfgmgr.dll または setupapi.dll から関数呼び出しを介して名前を取得する方法があるはずだと思いますか?

0 投票する
0 に答える
190 参照

windows - 特定のボリューム ID の物理デバイス オブジェクトを取得する

特定のボリュームのさまざまなフラグを照会したい。入力はボリューム ID である必要があります。たとえば、次のようになります。

\\?\Volume{b1a245f3-0000-0000-0000-100000000000}\

次に、いくつかのフラグがチェックされ、必要なフラグが設定されているかどうかに応じて、出力が true/false になります。

問題は、特定のボリューム ID の物理デバイス オブジェクトを取得するにはどうすればよいかということです。ボリューム ID を入力として受け取るメソッドはありますか、それともすべてのデバイス オブジェクトを列挙する必要がありますか?

0 投票する
2 に答える
877 参照

winapi - SetupAPI - SetupDiGetDeviceRegistryProperty の代用?

firefox 拡張機能でいくつかの SetupAPI 関数を使用する必要があります。デバイスのフレンドリ名を取得する必要があります。SetupDiGetClassDevsSetupDiEnumDeviceInfo、でできると思いましSetupDiGetDeviceRegistryPropertySetupDiDestroyDeviceInfoList

しかし!3 つの関数をインポートしsetupapi.dllて宣言しましたが、問題ありません。SetupDiGetDeviceRegistryProperty次に、DLL にまったく含まれておらず、静的にのみリンクできることがわかりましたsetupapi.lib。この関数を代用する方法はありますか?

WMI を使用できません。