問題タブ [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.
c++ - windows: bluetooth api と setupapi の両方で同じデバイスを検出するようにしました
私は現在、近くのBluetoothデバイスを検出して名前が一致する場合はPCに接続するプログラムと、setupapiでデバイスを検索してHID通信のハンドルを取得するプログラムの2つの部分に分かれているプログラムを作成しています。
私の問題は、接続したばかりのデバイスが setupapi で見つけたものと同じであることを示すものが見つからないことです。
したがって、最初の部分では、次のようなものがあります。
そして setupapi 関連のコード:
デバイスの Bluetooth アドレスを使用することを考えていましたが、setupapi からそれを取得する方法がないようです。
要約すると、setupi からデバイスのアドレスを取得する方法はありますか? そうでない場合、両方が同じデバイスであることを確認する他の方法はありますか?
c# - Marshal.GetLastWin32Error() にブレークポイントを設定すると、最後のエラー セットが変更されているように見えますか?
Win10 x64 1809 の VS2019 で .NET 4.6 で C# を使用しています。
P/Invoke を使用している場合、「Marshal.GetLastWin32Error()」行にブレークポイントを設定すると、最後に設定された Win32 エラー コードが変更されているようです。
例えば:
「return」にブレークポイントを設定すると、実行を繰り返すと endError が 500 と表示されます。
ただし、「int endError = Marshal.GetLastWin32Error();」にブレークポイントを設定すると、繰り返し実行すると endError が 0 として表示されます。
「Marshal.GetLastWin32Error()」行にブレークポイントを設定すると、別の領域のように予期しない結果が生じるようです。P/Invoking SetupEnumInfSections() は 259 (ERROR_NO_MORE_ITEMS) を期待していましたが、ブレークポイントを設定すると、代わりに 1008 を受け取ります。
- 私のプロジェクトでこの動作を引き起こしている何かが欠けていますか? (私は CodeProject と GitHub からの個人およびサードパーティの両方のさまざまなプロジェクトを試しましたが、この動作を引き続き経験しています)
- これは Visual Studio のエラーですか (これを報告する必要がありますか?)
- これは期待されていますか?(下記参照)
Marshal.GetLastWin32Error() の呼び出しは、問題の API 呼び出しの直後に呼び出す必要があることを認識していました (API 呼び出しが実際に最後のエラーを設定し、P/Invoke 呼び出しの場合、デコレータに "SetLastError = true" が含まれていると仮定します)。 )、追加の呼び出しによって最後のエラーの値が変更される可能性があるためです。
ただし、デバッグ、Marshal.GetLastWin32Error() でのブレークポイントの設定などに関して、他の種類の警告は見つかりませんでした。
これは、GetLastError() を使用してすぐに API 呼び出しを実行し、デコレータ ("SetLastError = true") を設定するのと同様に、VS で P/Invoke を作成する開発者が注意する必要がある「落とし穴」ですか? それは「落とし穴」かもしれませんが、そうであれば、VS(および/またはデバッガー)を含む各プロセスに独自の最後のエラーがあると予想されるため、すぐにはわかりませんが、基礎となるアプリケーションに関連付けられている可能性がありますなんらかの方法で、私は気づいていません。
c++ - SetupAPI を使用してデバイスに関する情報を取得する
USB ポートに接続されたプリンターがあり、それに関する情報を取得したいと考えています。SetupDiEnumDeviceInfo
関数 fromを使用setupapi
して情報を取得しています。MSDNで説明されているように、私はすべてをやっています。
問題は、私が常にfalse
結果を得ていることです。
GetLastError()
関数は 259 を返します。何が間違っていますか?