問題タブ [ndis]
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.
ndis - フィルター ドライバーで FilterAttach を呼び出します。
NDIS ネットワーク フィルター ドライバーを作成しましたが、インストールすると、"FilterAttach" 呼び出しが 4 回表示されます。
フィルター ドライバーで "FilterAttach" が 4 回呼び出されるのはなぜですか?
driver - 802.11 の物理層管理エンティティ サービス
802.11 の ExtSTA 操作モードを実装しようとしています。802.11 の PLME (物理層管理エンティティ) サービスと、それらをどのように実装できるか教えてください..
c++ - OID_802_11_BSSID_LIST の DeviceIoControl エラー 87
ネットワーク GUID から利用可能なアクセス ポイントを取得しようとしていますが、常に DeviceIoControl() のエラー 87 (間違ったパラメーター) が発生します。どのパラメーターが間違っているのかわからないので、しばらく頭がおかしくなりました! 私は何時間もグーグルで検索してきましたが、解決策が見つかりません。コードは次のとおりです。
Broadcom 802.11n ネットワーク アダプタである wsGuid = L"\\.\{8D36491D-C393-4D71-B10A-153C4FA69AEE}" でこのリストを取得しようとしています。
編集: Win7 ワークステーションで試しています。私はそれが非推奨であることを知っています(したがって、WlanGetNetworkBssList()を使用して新しいバージョンの移植性も追加しましたが、うまく機能しています)。(この同じ win7 ワークステーションで) 古いバージョンのデバッグ中にエラーが発生しました。おそらく問題は次のとおりです。コードが正しい場合、NDIS IOCTL は Win7 以降でも動作していますか?
windows - プログラムでフィルタードライバーをインストールしますか?
NDIS 6.0 軽量フィルター ドライバーをプログラムでインストールする C++ コードを記述しようとしています。WinDDK、オンラインの例、および MSDN のドキュメントを確認した後、以下のコード サンプルにたどり着きました。
INetCfgClassSetup::Install を使用したパスは機能しません。
ディスク参照オプションでデフォルトのパスを使用しています
例: 私の inf ファイルのパスは C:\Users\Mani\Desktop\sagar\objchk_win7_x86\i386\netlwf.inf です。
しかし、ディスクメニューのデフォルトパス(最初のエントリ)を求めています
d:\ソフトウェア\filter_driver
画像に似ている ==> http://i.stack.imgur.com/tmyMX.png
常に同じsysファイルを要求しています。
不足しているものはありますか?
crash - Windows ndislwf ドライバーからユーザー モード アプリケーションに通知する方法は?
サンプル ndislwf 6.0 サンプルを使用して、一意の受信 ARP パケットをリンク リストに入れるなどの変更を加えました。IOCTL コマンドを使用して、ユーザー空間からすべてのデータを取得できます。このくらいでいいです。
今、実行中のアプリケーションが必要です。ドライバーが ARP パケットを受信するとすぐに、何らかの通知またはシグナルをクライアント アプリケーションに送信する必要があります。クライアント アプリケーションは、最新のデータを取得する別の要求を発行します。
私は3つの方法を見つけました:
- イベントを作成し、クライアント アプリケーションで待機します
- 保留中の IRP があり、かつ
- 名前付きパイプを使用します。
..winddk...\src\general\event プロジェクトの実装を逐語的にコピーして、最初のものを実装しました。
今、私はタイマーを使用していないので、混乱しています。問題はこれです:
イベントとそれを待つには、IOCTL コマンドが必要です。新しい ARP パケットが到達すると ARP キャッシュが更新され、リストに追加されます。リストに追加された場合にのみ、シグナルを送る必要があります。しかし、これは割り込みベースです。
では、これら 2 つを組み合わせて、NDIS からの割り込み時にクライアント アプリケーションに通知するにはどうすればよいでしょうか。
これは私がしました:
現在のリクエストを DPC に入れる着信 IOCTL リクエストを処理している関数で
現在、ユーザー空間のクライアント アプリケーションからの最初のリクエストは成功することがありますが、その後のリクエストはエラーになります。
デバッグ中に、追加したコード、つまり if else と KeSetTimer() 呼び出しを指していることがわかりました。エラーは、IRQL がそれ以下ではないことに関連しています。
これを行う方法と何がクラッシュしているのか、私には手がかりがありません。コードは他の場所ではクラッシュしませんが、この関数でのみクラッシュします。
ありがとう。
windows - NDIS LWF - FilterRestart と FilterPause
私は NDIS LWF ドライバーを初めて使用しましたが、Win7 上の WFP が私の要件を満たしていないと判断した後、NDIS LWF ドライバーに移行する必要がありました。うまくいけば、これはあまりにも基本的な質問ではありません。
私の要件は基本的に、マルチ NIC システムで選択した NIC を無差別にリッスンできることです。インターフェイスをプロミスキャス モードにするために LWF サンプルを修正しましたが、指定されたアダプタを設定する方法に行き詰まっています。LWF はすべてのアダプターの上にあるので、NdisOpenAdapterEx を呼び出すだけのプロトコルとは異なりますが、特定のアダプターを無視するには何らかのフィルタリング メカニズムが必要であると思います。
気になるインターフェイスの選択した MAC アドレスをドライバーに IOCTL できるようにする必要があります。ドライバーをロードすることはできますが、特定のインターフェイスでのみフィルターを実行することはできますか、それとも FilterReceiveNetBufferLists で気にしない他の人からの呼び出しを無視するだけでよいでしょうか。特定のインターフェイスに対して何もしない場合は、 FilterReceiveNetBufferLists コールバックを使用する必要がない方が効率的であるように思えます。
私をつまずかせているのは、FilterRestart が DriverEntry 中に (NdisFRegisterFilterDriver を介して) 自動的に呼び出され、NdisFPauseFilter がないように見える (ただし、NdisFRestartFilter はある) という事実です。理想的には、フィルタリングが開始される前に必要なパラメーターを設定できるようにしたいと考えています。また、必要に応じて動的にタスクを再実行する機能が引き続き必要になるため、DriverEntry 中にレジストリを使用しないようにしたいと考えています。
最後に、NDIS 内部の理解を深めるために、フィルター モジュールが一時停止されると、スタック全体が一時停止されますか、または NDIS は一時停止されたモジュールを迂回しますか?
windows-ce - NDISUIO がリッスンする EtherType の数に制限はありますか
WinCE 7.0 で生のイーサネット フレームを使用する方法を調べるように依頼されました。
私が知る限り、受信したいすべてのイーサタイプを呼び出しCreateFileて使用する必要があります。IOCTL_NDISUIO_SET_ETHER_TYPE
この呼び出し作成ファイルを複数回テストし、さまざまなイーサ タイプを使用しました。必要な数だけ作成できるようですが、ReadFile同時に 3 つ以上を呼び出すと、エラー コード 31 (GetLastError から)が発生します。
私の仮定は間違っていますか、それとも NDISUIO を使用してリッスンできるイーサ タイプの数に制限はありますか?
ndis - NDIS 6 で NetBuffer にヘッダーを追加する方法は?
NDIS 5.1 中間ミニポート ドライバーを NDIS 6 にアップグレードしています。
送信されるパケットの先頭にヘッダー情報を追加する必要があります。5.1 では NdisChainBufferAtFront() を使用しました。
NetBufferLists 構造全体をトラバースして複製するためにキッチン全体を既に実行しました。複製された各 NetBuffer の準備は完了です。
送信されるパケット (NetBuffer) に 22 バイトのヘッダーを付加する正しい方法は何ですか? (元の MDL データをコピーしない方法を希望します)