0

1Gbit イーサネット経由で PC に接続されたデバイスがあります。WinXP/7 次の方法でデータをキャプチャしたい:

  1. PC がデバイスにコマンドを送信 (データ取得を開始)
  2. デバイスは PC にデータを送信しています
  3. ユーザーアプリケーションは取得を待ちます
  4. ドライバはメモリにデータを保存します
  5. デバイスが取得完了を通知するコマンドを送信
  6. ドライバーが割り込みを生成し、ユーザー アプリケーションがドライバーからのデータの読み取りを開始します。

それを実装する方法がわかりません。NICドライバがあります。NDISがあります。ユーザー アプリケーションは NDIS と通信できますか? NDIS と通信するために追加のドライバーを作成する必要がありますか?

4

1 に答える 1

2

あなたの問題には、実際には 2 つの部分があります。

  1. コマンドをデバイスに送信する方法
  2. デバイスから送信されたデータをキャプチャする方法

最初の問題には、デバイスが IPv4/IPv6 でカプセル化されたコマンドを受け入れるかどうか、または他の低レベル プロトコルを必要とするかどうかに応じて、2 つの解決策が考えられます。デバイスが IPv4/IPv6 でカプセル化されたコマンドを受け入れる場合は、お気に入りのプログラミング言語でソケット API を使用するだけです。

デバイスが独自の非 IP プロトコルを必要とする場合は、NDIS プロトコル ドライバーを追加する必要があります。Windows Driver Kit に含まれているサンプルプロトコル ドライバーがあります。このドライバーは基本的に、ユーザーモード アプリケーションがあらゆる種類のパケットを送信できるようにするチャネルを開きます。デバイスからの制御メッセージのみを選択的にリッスンするように、プロトコル ドライバーを変更する必要がある場合があります。

2 つ目の問題であるパケット キャプチャは、すでに解決されています。既存のソフトウェアを棚から取り出して、ソリューションに統合できるはずです。 Microsoft Network Monitorには、パケット キャプチャを簡単に開始/停止し、キャプチャされた結果を反復処理するために使用できる API があります。あるいは、WinPcap を使用する人もいます。

于 2012-09-19T23:24:41.110 に答える