REMOTE_NDIS_PACKET_MSG
REMOTE_NDIS_PACKET_MSGは、単一のデータ メッセージを形成する NDIS データ パケットをカプセル化します。
複数のREMOTE_NDIS_PACKET_MSG要素を連結すると、マルチパケット メッセージが形成されます。 個々のREMOTE_NDIS_PACKET_MSGコンポーネントは、以下に説明するように構築されます。 単一パケット メッセージとの違いは、各REMOTE_NDIS_PACKET_MSG ヘッダーの MessageLength フィールドに追加のパディング バイトが含まれていることです。 これらの埋め込みバイトは、最後のREMOTE_NDIS_PACKET_MSG以外のすべてのバイトに追加され、後続のREMOTE_NDIS_PACKET_MSGが適切なバイト境界から開始されます。 デバイスからホストに送信されたメッセージの場合、このパディングにより、各REMOTE_NDIS_PACKET_MSGがマルチパケット メッセージの先頭から 8 バイトの倍数のバイト オフセットで始まるはずです。 ホストは、デバイスにマルチパケット メッセージを送信すると、デバイスが指定する PacketAlignmentFactor に準拠します。
REMOTE_NDIS_PACKET_MSG形式は、次の表で定義されています。
相殺 | 大きさ | 畑 | 形容 |
---|---|---|---|
0 |
4 |
MessageType |
送信するメッセージの種類を指定します。 0x1に設定します。 |
4 |
4 |
MessageLength |
追加されたパケット データ、OOB データ、パケットごとの情報データ、および内部パディングと外部パディングの両方を含む、メッセージの長さ (バイト単位)。 |
8 |
4 |
DataOffset |
このメッセージの DataOffset フィールドの先頭からデータの先頭までのオフセットをバイト単位で指定します。 これは 4 の整数倍数です。 |
12 |
4 |
DataLength |
このメッセージのデータ コンテンツ内のバイト数を指定します。 |
16 |
4 |
OOBDataOffset |
このメッセージの DataOffset フィールドの先頭からの最初の OOB データ レコードのオフセットをバイト単位で指定します。 OOB データがない場合は 0 に設定します。 それ以外の場合、これは 4 の整数倍数です。 |
20 |
4 |
OOBDataLength |
OOB データの合計長をバイト単位で指定します。 |
24 |
4 |
NumOOBDataElements |
このメッセージ内の OOB レコードの数を指定します。 |
28 |
4 |
PerPacketInfoOffset |
REMOTE_NDIS_PACKET_MSG データ メッセージの DataOffset フィールドの先頭から最初のパケットごとの情報データ レコードの先頭までのオフセットをバイト単位で指定します。 パケットごとのデータがない場合は、0 に設定します。 それ以外の場合、これは 4 の整数倍数です。 |
32 |
4 |
PerPacketInfoLength |
このメッセージに含まれるパケットごとの情報の合計長をバイト単位で指定します。 |
36 |
4 |
VcHandle |
接続指向デバイス用に予約されています。 0 に設定します。 |
40 |
4 |
引っ込み思案 |
引っ込み思案。 0 に設定します。 |
1 つの OOB データ レコードの形式を次の表に示します。
相殺 | 大きさ | 畑 | 形容 |
---|---|---|---|
0 |
4 |
大きさ |
この OOB ヘッダーと追加された OOB データとパディングの長さ (バイト単位)。 これは 4 の整数倍数です。 |
4 |
4 |
種類 |
802.3 デバイスに定義されていません。 |
8 |
4 |
ClassInformationOffset |
この OOB データ レコードの先頭から OOB データの先頭までのバイト オフセット。 |
(N) |
... |
OOB データ |
OOB データ。詳細については、Microsoft Windows Driver Development Kit (DDK) のドキュメントを参照してください。 |
注 (N) は、ClassInformationOffset の値等しくなります。
次の表では、パケットごとの情報データ レコードの形式を定義します。
相殺 | 大きさ | 畑 | 形容 |
---|---|---|---|
0 |
4 |
大きさ |
このパケットごとのヘッダーと追加されたパケットごとのデータとパディングの長さ (バイト単位)。 この値は、4 の整数倍数です。 |
4 |
4 |
種類 |
Windows 2000 Driver Development Kit (DDK) で説明されているように、NDIS_PER_PACKET_INFO_FROM_PACKETの有効な値のいずれかに設定します。 |
8 |
4 |
PerPacketInformationOffset |
このパケットごとの情報データ レコードの先頭からパケットごとの情報データの先頭までのバイト オフセット。 |
(N) |
... |
データの Per-Packet |
Per-Packet データ;詳細については、Windows 2000 DDK のドキュメントを参照してください。 |
Note (N) は、PerPacketInformationOffset の値等しくなります。
備考
各REMOTE_NDIS_PACKET_MSGには、1 つ以上の OOB データ レコードを含む場合があります。 NumOOBDataElements は、このメッセージ内の OOB データ レコードの数を示します。 OOB データ レコードは順番に表示する必要があります。 OOBDataLength フィールドは、OOB データ ブロック全体の長さをバイト単位で示します。 OOBDataOffset フィールドは、DataOffset フィールドの先頭から OOB データ ブロックの先頭までのバイト オフセットを示します。 OOB パケット データの詳細については、Windows 2000 DDK の NDIS 仕様を参照してください。
複数の OOB データ ブロックがREMOTE_NDIS_PACKET_MSG メッセージにアタッチされている場合、後続の各 OOB データ レコードは、直前の OOB レコードのデータの直後に続く必要があります。
現在、802.3 デバイスに OOB 情報は定義されていません。
各REMOTE_NDIS_PACKET_MSGには、パケット情報ごとのデータ レコードが 1 つ以上含まれている場合があります。 パケットごとの情報は、TCP チェックサムなどのパケット メタデータを伝達するために使用されます。 PerPacketInfoOffset フィールドは、DataOffset フィールドの先頭からパケットごとの情報データ レコードの先頭までのバイト オフセットを示します。 OOBDataLength フィールドは、パケットごとの情報データ レコードのバイト長を示します。 パケットごとの情報データの詳細については、Windows 2000 DDK を参照してください。
パケットごとの情報データ ブロックが複数ある場合、後続の各パケットごとの情報データ レコードは、直前のパケットごとの情報レコードのデータの直後に続く必要があります。
リモート NDIS デバイスは、NDIS データ パケットを介してデータを送受信する必要があります。 デバイスが使用するバスによって、これらのパケットがホストからデバイス、デバイスからホストに渡される方法が決まります。 共有メモリ、または USB、アイソック、バルク パイプの場合があります。 NDIS パケットには、帯域外 (OOB) データと、ネットワークを経由するデータが含まれている場合もあります。
リモート NDIS デバイスは、データ チャネル全体に REMOTE_NDIS_PACKET_MSG としてカプセル化された NDIS パケットを転送します。 コネクションレス (802.3 など) デバイスと接続指向 (ATM など) の両方のデバイスは、パケット処理の共通コードを容易にするために同じパケット メッセージ構造を使用します。 各 REMOTE_NDIS_PACKET_MSG メッセージには、1 つのネットワーク データ ユニット (イーサネット 802.3 フレームなど) に関する情報が含まれています。
帯域外パケット データまたはパケットごとの情報データの詳細については、Windows 2000 DDK NDIS のセクションを参照してください。
必要条件
バージョン |
Microsoft Windows XP 以降のバージョンの Windows オペレーティング システムで使用できます。 Windows 2000 でも再頒布可能バイナリとして使用できます。 |
ヘッダ |
Rndis.h (Rndis.h を含む) |