問題タブ [deviceiocontrol]

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 投票する
1 に答える
108 参照

c++ - OID_PM_WOL_PATTERN_LIST を C++ の NDIS ドライバーに送信する方法は?

イーサネット カードで定義された Wake On Lan パターンを C++ でクエリしたいと思います (後でそのようなパターンをアップロードしたいと思いますが、一度に 1 ステップずつ. :))。私が理解したように、ユーザー空間からカーネル空間にOID_PM_WOL_PATTERN_LISTリクエストを送信する必要があります。Windows では、この種のリクエストはDeviceIoControlを呼び出して送信できることがわかりました。>この< サンプル コードを出発点として使用しました。デバイスの GUID があり、いくつかの基本的な IOCTL_* コマンドを発行できます。

よく理解していれば、 OID_PM_WOL_PATTERN_LIST コマンドで満たされた何らかの構造 (おそらくNDIS_OID_REQUEST )を指す InBuffer を使用して、特定の IOCTL_* コマンドを発行する必要があります。

これを行う方法の例を見つけようとしましたが、適切なものを見つけることができませんでした。誰かがこれをどのように行うべきかを助けることができますか? または、ソースの例が役立ちます。

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

c++ - 物理キーボードでのキープレスのトリガー

キーボードでキープレスをトリガーしたい。物理キーボード上 - その特定のキーボードをソースとして、すべてのカーネル フィルターを通過する必要があります。そのようなことさえ可能ですか?

DeviceIOCtrl と IOCTL_KEYBOARD_INSERT_DATA を見ましたが、ドキュメントが見つかりません。ドライバーには実装されていないと言う人もいます。別のソースは IOCTL_INTERNAL_I8042_KEYBOARD_WRITE_BUFFER を使用しようとしていますが、そのようなものには使用できない可能性があるとも言っています

カーネル フィルターを通過する前に、キーボードでキープレスをトリガーする他のオプションはありますか?

なぜ私はこれをしたいのですか? はい、これは XY の質問かもしれませんが、現時点で私が考えることができる唯一の解決策です。特定のキーボードのみからキーをインターセプトしたい。キーストロークのキーボードを教えてくれるがそれをインターセプトできない RawInput があり、インターセプトできるがキーボードを識別できない LowLevel Keyboard フックがあります。さらに悪いことに、RawInputは LowLevel-Hook のに起動するため、キーストロークをインターセプトする前にキーボードを取得することはできません。RawInput の後にトリガーするグローバル フックを使用する魔法のユニコーンの方法がありますが、すべてのエッジ ケースに対処するのは非常に面倒なようです。

私が選んだキーボード ストロークをインターセプトするAPIがあります。基本的に、キーストロークを傍受できるドライバーをインストールしキーボード ID を取得します。しかし、その ID はちょっと恣意的なものであり、整数値を特定のキーボード デバイスに関連付けるために利用できる規則には従いません。たとえば、デバイスを再接続すると変更され、\Device\KeyboardClassX などと相関しません。そのため、ユーザーは、キーボードが再接続されるたびに、またはアプリが開始されるたびに、キーを積極的に押す必要があります。実際に表します。そして、それを避けて、ID の特定のデバイスを自動的に取得したいと考えています。私の考えは、キーボードでキープレス(-コントローラー?)をトリガーし、ドライバーを使用してそれをキャッチし、任意のIDをデバイスと関連付けることでした。

したがって、私の Y に別の X がある場合は、遠慮なく提案してください。私は、RawInput と GlobalHook の Magic Unicorn Way が確実に機能しないようなエッジ ケースをすべて回避したいと考えています。どの主要言語の例でも問題ありません。おそらく、アプリケーションの開始時にボタンを手動で押してキーボードを識別するというUXの不便さを回避する方法はありません...