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

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

multithreading - ドライバのスレッドがパケットを送信しない

この NDIS Filter Driverがあります。10 秒ごとにパケットを送信するスレッドをドライバーで開始しようとしました。

そのために、次のコードを使用します。

関数はPsCreateSystemThreadin で始まりましたDriverEntry
しかし、これは私のパケットを送信しません。
私はこれを使用しようとします:

このコードは、パケットをノンストップで送信します。

次のコードは、10 秒ごとに私のパケットで新しいファイルを作成します (CreateFileS は私の関数です)が、私のパケットは送信しません:

10 秒ごとにパケットを送信するにはどうすればよいですか?

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

windows - ProtocolBindAdapterルーチンの外でNdisOpenAdapterExまたは代替を呼び出す方法は?

有名なパケット キャプチャ ソフトウェアである WinPcap を NDIS 5.0 から NDIS 6.x に移植しています。すべての NDIS 5.0 機能を 6.0 バージョンに変換しようとしました。WinPcap ソースコード関数では、NdisOpenAdapter が Openclos.c の NPF_OpenAdapter によって呼び出されます。NDIS 6.0 の NdisOpenAdapterEx に変換しました。しかし、4 番目のパラメーター BindContext を設定する方法が見つかりません。NdisOpenAdapterEx の宣言はここにあります: http://msdn.microsoft.com/en-us/library/windows/hardware/ff563715(v=vs.85).aspx

また、MS は、「プロトコル ドライバーは、ProtocolBindAdapterEx 関数から NdisOpenAdapterEx を呼び出す必要があります。NDIS は、ProtocolBindAdapterEx のコンテキスト外で NdisOpenAdapterEx を呼び出そうとしても失敗します」と述べています。そのため、NPF_OpenAdapter で NdisOpenAdapterEx を呼び出すことはできないようです。NPF_BindAdapterEx 関数で呼び出す必要があります。ドライバー npf.sys を独自のバージョンに置き換え、Wireshark (パケット キャプチャ フロントエンド) を開始し、NPF_BindAdapterEx にブレークポイントを設定し、NPF_BindAdapterEx が NPF_OpenAdapter の前に呼び出されたことがないことを発見しました。したがって、NdisOpenAdapterEx を呼び出す前に BindContext パラメータを取得することは不可能です。

できるだけ小さな変更を加えて、WinPcap を NDIS 6.0 に移行したいだけです。この問題を解決するにはどうすればよいですか?</p>

これがOpenclos.cのコードです

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

windows - NDIS プロトコル ドライバー (WinPcap の npf.sys) を LWF または WFP に移植できますか?

みんな。WinPcap の改善を行っています。これで、npf.sys ドライバーを NDIS5.0 から NDIS6.0 に移植しました。LWF (Light-Weight Filter) や WFP (Windows Filter Platform) への移植など、このドライバーを改善する余地はまだありますか? より新しく、より優れたフレームワークを確実に使用したいだけです。

その他の質問は次のとおりです。

LWF は Vista 時代の製品のようで、今では Microsoft からあまり言及されていませんが、本当ですか?

LWF または WFP ドライバーは、NDIS プロトコル ドライバーが実行できることを実行できますか?

LWF や WFP は WDF (Windows Driver Framework) と関係がありますか、それとも WDF と WDM フレームワークの両方と互換性がありますか?

これが移植可能である場合、難易度はどうですか?以前にいくつかの NDIS 中間ドライバーを開発したことがありますが、LWF または WFP はそれより難しいですか、それとも簡単ですか?

ありがとう!

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

visual-studio - Visual Studio 2012 での NDIS ドライバーのコンパイル エラー! :(

Visual Studio 2012 Express for Desktop を使用して NDIS ドライバーをコンパイルしようとしています。既に WDK 8.1 をインストールしましたが、まだ取得できませんでした...

MSbuild ツールのパスをどこかに含める必要があるのではないかと思いますが、残念ながら理想的な方法はありません。

これはエラーメッセージです:

エラー MSB8020: WindowsKernelModeDriver8.1 (プラットフォーム ツールセット = 'WindowsKernelModeDriver8.1') のビルド ツールが見つかりません。WindowsKernelModeDriver8.1 ビルド ツールを使用してビルドするには、[プロジェクト] メニューをクリックするか、ソリューションを右クリックして、[VC++ プロジェクトの更新...] を選択します。WindowsKernelModeDriver8.1 ビルド ツールを使用してビルドするには、WindowsKernelModeDriver8.1 をインストールします。C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets 44 5 ndisprot630

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

c - NDIS フィルターが NdisFSendNetBufferLists を使用するには、FilterSendNetBufferLists ハンドラーが必須ですか?

皆さん、WinPcap を NDIS6 プロトコルから NDIS6 フィルターに移植しています。ほぼ完成しましたが、まだいくつか質問があります。

ndislwf のコメントには、「FilerSendNetBufferList ハンドラーを提供しないフィルターは、それ自体で送信を開始することはできません」とありました。NdisFSendNetBufferLists 関数を使用した場合、FilerSendNetBufferList ハンドラーを提供する必要があるということですか? 私のドライバーは、NdisFSendNetBufferLists によって自己構築されたパケットを送信しますが、他のプログラムの送信パケットをフィルター処理したくありません。

FilterReturnNetBufferLists と同様に、「FilterReturnNetBufferLists ハンドラーを提供しないフィルターは、それ自体で受信指示を発信することはできません」と述べています。「受信指示を発信する」とはどういう意味ですか? NdisFIndicateReceiveNetBufferLists または NdisFReturnNetBufferLists またはその両方? また、私のドライバーでは、返されたパケットではなく、受信したパケットのみをキャプチャしたいと考えています。したがって、可能であれば、パフォーマンスの目的で FilterReturnNetBufferLists 関数を提供したくありません。

別の類似したケースは FilterOidRequestComplete と NdisFOidRequest です。実際、フィルター ドライバーは、他のユーザーから送信された Oid 要求をフィルタリングするのではなく、NdisFOidRequest によって Oid 要求自体を送信したいだけです。FilterOidRequest、FilterCancelOidRequest、および FilterOidRequestComplete を NULL のままにできますか? または、NdisFOidRequest を使用するために必要なものはどれですか?

どうも。

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

c - NDIS フィルター ドライバーの FilterReceiveNetBufferLists ハンドラーが呼び出されないのはなぜですか?

みんな。WinPcap を NDIS 6 プロトコルから NDIS 6 フィルターに移植している私です :) バグに遭遇し、2 日間閉じ込められました。npf6x.sys ドライバー (元の名前は npf.sys) をインストールした後、"net start npf" でサービスを開始できます。次に、Wireshark を開きました。その後、ネットワークがダウンしました (トレイ アイコンの感嘆符)。リモート デバッグの後、FilterReceiveNetBufferLists ルーチンが呼び出されないことがわかりました。ここでRXリンクが壊れたと思います。ただし、FilterSendNetBufferLists は正常に呼び出されます。FilterAttach が正常に呼び出され、現在 FilterUnload が呼び出されていないことは確かです。したがって、フィルター モジュールはまだその場所にあるはずです。ただし、RX パスでは機能しません。そこでWiresharkの「開始」ボタンをクリックすると、思いがけずネットワークが復旧したことがわかりました。次に、現在のキャプチャを停止して「Interface List」をクリックすると、ネットワークが再びダウンしました。とても奇妙です。

ドライバーの実行中のプロセスでハンドラー ポインターを変更しませんでした。ドライバーもロックでブロックされていないようです。実行中に NDIS がフィルターの FilterReceiveNetBufferLists を呼び出さないようにするケースがあるかどうか、誰か教えてもらえますか?

また、NDIS 6 プロトコルから NDIS 6 フィルターに移植する方法を説明している公式ドキュメントはありますか? NDIS 5 から NDIS 6 への移植に関するドキュメントしか見つかりませんでした。

ありがとう。

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

c - NDIS フィルター ドライバーの FilterReceiveNetBufferLists ハンドラーが呼び出されない

NDIS フィルター ドライバーを開発してFilterReceiveNetBufferListsいますが、特定の条件下 (Wireshark を開くか、その [インターフェイス リスト] ボタンをクリックするなど) では呼び出されない (ネットワークがブロックされている) ことがわかります。しかし、キャプチャを開始すると、FilterReceiveNetBufferLists正常になります (ネットワークが復元されます)。これは非常に奇妙です。

WinPcap ドライバー (NPF_IoControl の BIOCQUERYOID & BIOCSETOID スイッチ ブランチ) の OID 発信元NDIS_STATUS_FAILUREの関数に手動で戻ると、ドライバーがネットワークをブロックしないことがわかりました (また、winpcap は機能しません)。NdisFOidRequest

NdisFOidRequest呼び出しに何か問題がありますか?

OID 要求を発信する Packet.c の DeviceIO ルーチン:

3 つのフィルター OID ルーチン: