問題タブ [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 に答える
571 参照

windows - NdisFRegisterFilterDriver が NDIS_STATUS_FAILURE を返すのはなぜですか?

NDIS 中間フィルター ドライバーを作成しようとしていますが、何かが起こる前に行き詰まっています。

私のコードは、フィルター ドライバーを登録しようとする以外、まだ何もしていません。

他のすべての関数は空です (一部のトレース コードを除く)。ここでは関係ありません。

NdisFRegisterFilterDriver は常に NDIS_STATUS_FAILURE を返します。ドキュメントには、これが発生する理由は説明されていません。(DDK からサンプル ドライバーのリテラル コピーを試したので、.inf ファイルでは問題になりません。)

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

windows - Windowsフィルタリングプラットフォーム:パケットのペイロードへのアクセス

NET_BUFFERのMDLチェーンをトラバースして、関連するデータを取得しています。使用されたデータスペースがどこから始まるか(NET_BUFFER_DATA_OFFSET()& )を示すために使用される2つのマクロはNET_BUFFER_CURRENT_MDL_OFFSET()、同じ値を返すことを常に観察しており、どちらも同じように使用できるように見えるため、少し混乱しました。

どちらを使用する必要がありますか?それらの違いは何ですか?

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

windows - 特定のシナリオで、NDISMiniportドライバーをXPOSにロードできませんでした

USBコンポジットデバイスはさまざまな機能をサポートします。1つのインターフェイスがネットワーク機能をサポートします。OSごとに異なるNDISミニポートバージョンを開発しています(XP用のNDIS 5.1、Vista用のNDIS 6.1、Windows7OS用のNDIS6.20)。以下に示すように、1つのテストケースがあります。1)すべてのドライバー(シリアルおよびNDIS)をロードした後、ハイパーターミナルを使用してシリアルインターフェイスを開きます。2)通信を行います(ATコ​​マンドなどを入力します)。デバイスを同じUSBポートに接続します。

上記のテストシナリオでは、XP OSでステップ4(エラーコード31)の後にNDISミニポートドライバーのロードに失敗します。NDISミニポートドライバーの初期化ハンドラーは呼び出されません。他のOSでは、この問題を再現できません。

この問題に関する貴重な提案を教えてください。

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

driver - ペーサー.sysはBSODを引き起こします

fxwrap.sys という名前の NDIS5 中間フィルター ドライバーを作成しましたが、アンインストールすると、. また、ndis!ndisOidRequestComplete がダンプ ファイルから null アドレスを読み取るようです。

env:windows 7 アルティメット 7601


fxwrap!PtRequestComplete 関数のソース コードは次のとおりです。


以下はダンプ情報です:

DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1) 高すぎる割り込み要求レベル (IRQL) で、ページング可能な (または完全に無効な) アドレスにアクセスしようとしました。これは通常、ドライバが不適切なアドレスを使用していることが原因です。カーネル デバッガーが利用可能な場合は、スタック バックトレースを取得します。引数: Arg1: 00000000、メモリ参照 Arg2: 00000002、IRQL Arg3: 00000000、値 0 = 読み取り操作、1 = 書き込み操作 Arg4: 8a81bd11、メモリを参照したアドレス

デバッグの詳細:

READ_ADDRESS: GetPointerFromAddress: 84788848 から読み取ることができません 84767e20 00000000 で MiSystemVaType メモリを読み取ることができません

現在_IRQL: 2

FAULTING_IP: ndis!ndisOidRequestComplete+8a 8a81bd11 803b05
cmp バイト ptr [ebx],5

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: VISTA_DRIVER_FAULT

BUGCHECK_STR: 0xD1

PROCESS_NAME: システム

trap_frame:8dd07aa0-(.trap 0xffffffff8dd07aa0)errcode = 00000000 eax = 00000200 ebx = 000000 ecx = 00000001 EDX = 00000000 ESI = 8D07B4C EDI = A2777F5A4 EIP = 8AD07444410744107444107410744107441074107410741074107 nc cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246

ndis!ndisOidRequestComplete+0x8a:

8a81bd11 803b05 cmp バイト ptr [ebx],5 ds:0023:00000000=??

デフォルトのスコープのリセット

LAST_CONTROL_TRANSFER: 8a81bd11 から 846605fb へ

STACK_TEXT:

8dd07aa0 8a81bd11 badb0d00 00000000 8dd07ac0 nt!KiTrap0E+0x2cf

8dd07b34 8a81c8b9 8dd07b4c 8c840008 870c1618 ndis!ndisOidRequestComplete+0x8a

8dd07b68 952b411b 8963b0f0 a277f5a4 00000000 ndis!NdisFOidRequestComplete+0x6a

8dd07b88 8a81c19d 870c1618 8c840008 00000000 ペーサー!PcFilterRequestComplete+0x5b

8dd07bbc 8a843572 02d07bd4 00000000 89ac60e0 ndis!ndisOidRequestComplete+0x516

8dd07bf4 8a843805 00ac60e0 8c840008 00000000 ndis!ndisMOidRequestCompleteInternal+0xd0

8dd07c18 8a87a765 02ac60e0 00000000 8c840008 ndis!ndisCompleteLegacyRequest+0xdb

8dd07c38 95a831c5 89ac60e0 00000000 89ad20e0 ndis!NdisMSetInformationComplete+0x81

8dd07c54 8a87506f 8a1d48e8 8a1d4908 00000000 fxwrap!PtRequestComplete+0x61

8dd07c70 8a81c05b 876f54c0 8966f0f0 00000000 ndis!ndisCompleteOidRequestToRequest+0x4a

8dd07ca4 8a8704b2 00d07cbc 89ad20e0 8a85a000 ndis!ndisOidRequestComplete+0x3d4

8dd07ce8 8a823221 00ad20e0 8966f190 86a58638 ndis!ndisMDoOidRequest+0x528

8dd07d00 8469ca6b 8966f188 00000000 86a58638 ndis!ndisDoOidRequests+0x4d

8dd07d50 84827fda 00000000 92ed9892 00000000 nt!ExpWorkerThread+0x10d

8dd07d90 846d01f9 8469c95e 00000000 00000000 nt!PspSystemThreadStartup+0x9e

00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x19

STACK_COMMAND: kb

FOLLOWUP_IP: ペーサー!PcFilterRequestComplete+5b 952b411b 56
プッシュ esi

SYMBOL_STACK_INDEX: 3

SYMBOL_NAME: ペーサー!PcFilterRequestComplete+5b

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: ペーサー

IMAGE_NAME: ペーサー.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 4a5bc916

FAILURE_BUCKET_ID: 0xD1_pacer!PcFilterRequestComplete+5b

BUCKET_ID: 0xD1_pacer!PcFilterRequestComplete+5b

フォローアップ: MachineOwner

ご意見ありがとうございます。

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

c - PNDIS_GENERIC_OBJECT エラー C2061

PNDIS_GENERIC_OBJECT変数を宣言した後、コンパイラ エラーが発生します。なぜこれが起こるのですか?どうすれば回避できますか?

エラー C2061: 構文エラー: 識別子 'gNdisGenericObj'

エラー C2059: 構文エラー: ';'

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

windows - NDIS バージョンの移行

NDIS 6.0 と NDIS 6.30 の主な違いは何ですか? 以下、私が知っている情報ですが、

NDIS 6.0 の場合、WWAN メディアのようなものはありませんでした。NDIS 6.0 では、WWAN 固有の OID も使用できませんでした。したがって、TCP/IP は 802.3 ヘッダーで送信するために使用されます。NDIS 6.0 には WAN のみが存在していました。

その後、NDIS 6.20 以降、WWAN と呼ばれるメディアが導入され、TCP/IP が生の IP パケットを直接送信していました。また、WWAN 固有の OID もここで導入されました。

これは正しいです?また、NDIS 6.0 バージョンから NDIS 6.30 に移行する方法は? バージョンを変更するには、正確に何をする必要がありますか? それは何に影響しますか?上記の質問は、ミニポートドライバーの実装に関するものです。

前もって感謝します。

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

c - OSRドライバーローダーエラーを使用したドライバーの読み込み

OSRドライバーローダーを使用してドライバーをロードできません。ドライバへのパスを指定し、サービスを正常に登録しましたが、[サービスの開始]をクリックすると、「指定されたファイルが見つかりません」というエラーメッセージが表示されます。

具体的には、サンプルからドライバーを作成しようとしました。

http://www.ndis.com/ndis-ndis6/inspect/packetinspect.htm

何かアイデアはありますか?

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

device-driver - WinXPeNDIS5.1マルチポート

アルテラのイーサネットコアのおかげで、3つのNICを含む単一のPCIデバイスを用意します。WinXPe、つまりNDIS5.1に実装する必要があります。MVPは、コアごとにWDMドライバーを実装し、次に個々のWDMドライバーと通信する単一のNDISドライバーを実装することを提案しましたが、単一のNDISドライバーには複数のポートまたはチャネルの概念がないように見えるため、私にはわかりません。

DriverEntryで、イーサネットコアごとに1回NdisMInitializeWrapperと呼ばれるNDISドライバーがある場合はどうなりますか?同じDriverObjectを使用して毎回呼び出す必要がありますが、おそらく、呼び出しごとに異なるNdisWrapperHandleが返されます。この一意のNdisWrapperHandleは、他のすべてのNDISドライバー関数を呼び出すためのコンテキスト指定子として使用できます。

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

windows - マルチ VPN 動的ルート テーブル NDIS ミニポート ドライバーを実装する方法は?

ここで仮想アダプター イメージの説明としてポップされた NDIS ミニポート ドライバーを作成したいと考えています (VMWare のように)。その目的は、既存の接続された vpn 内部 IP (アダプター) にパケットを転送することです。多くの既存の vpn 接続が存在する可能性があります。私のドライバーは、異なるプロセスによってそれらの1つにパケットを転送します(プロセスは同じIPに接続している可能性があるため、異なる接続を区別するためのルートテーブルは機能しません)。

参照できるヒントや例はありますか? ありがとう。 形

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

windows - プログラムでNDISフィルタードライバーをインストールする

プログラムでNDIS6.0軽量フィルタードライバーをインストールするC++コードを記述しようとしています。WinDDK、オンラインの例、MSDNドキュメントを確認した後、以下のコードサンプルを作成しました。(わかりやすくするためにエラー処理はスキップされます)問題は、INetCfgClassSetup::Installが常にエラー0x8004a024を返すことです。(ヘッダーファイルにエラーコードが見つかりませんでした。)

同じ.infファイルを使用したドライバーの手動インストールは問題なく機能します。

WinDDKのBindviewサンプルは、INetCfgClassSetup :: SelectAndInstallを呼び出すパスをとる限り、ドライバーを正常にインストールします。INetCfgClassSetup::Installを使用した代替パスは機能しません。

私のマシンではカーネルのデバッグが有効になっているため、ドライバーの署名は必要ありません。

以下のコードに何か問題がありますか?

ありがとう。