次の方法で共有


NDK_SGE 構造体 (ndkpi.h)

NDK_SGE構造体は、NDK 作業要求のローカル バッファーを指定します。

構文

typedef struct _NDK_SGE {
  union {
    PVOID               VirtualAddress;
    NDK_LOGICAL_ADDRESS LogicalAddress;
  };
  ULONG  Length;
  UINT32 MemoryRegionToken;
} NDK_SGE;

メンバー

VirtualAddress

仮想アドレス。

LogicalAddress

論理アドレス。

Length

バッファーの長さ (バイト単位)。

MemoryRegionToken

メモリ領域トークン。 MemoryRegionTokenNdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN) によって返されるトークンに設定されている場合、NDK_SGEには LogicalAddress が含まれている必要があります。 MemoryRegionTokenNdkGetPrivilegedMemoryRegionToken によって返されるトークンと等しくない場合、NDK_SGE構造体には VirtualAddress が含まれている必要があります。 NDK_OP_FLAG_INLINE フラグを使用して作業要求でNDK_SGE構造体を使用すると、MemoryRegionToken が無効である可能性があります。 MemoryRegionToken の詳細については、「解説」セクションを参照してください。

注釈

NDK_SGE構造体は、送信、受信、読み取り、および書き込みの作業要求のローカル バッファーを指定します。

MemoryRegionToken メンバーが NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN) によって返されるトークンに設定されている場合、NDK_SGEには、NDK_LOGICAL_ADDRESS_MAPPING構造体を持つ NdkBuildLam (NDK_FN_BUILD_LAM) 関数によって返される論理アドレスが含まれている必要があります。 NDK_LOGICAL_ADDRESS_MAPPINGAdapterPageArray メンバー内の連続するエントリは、アダプターの論理アドレス空間内の連続するページであるとは限らないことに注意してください。 そのため、NDK コンシューマーは、アダプター ページ配列内のすべてのページをカバーするために複数の SG を使用する場合があります。

MemoryRegionToken メンバー内のトークンが、NdkGetPrivilegedMemoryRegionToken によって返されるトークンと等しくない場合、NDK_SGE構造体には、以前に登録されたメモリ領域の仮想アドレススパン内にある仮想アドレスが含まれている必要があります。

NDK_OP_FLAG_INLINE フラグを持つ作業要求でNDK_SGE構造体が使用されている場合、MemoryRegionToken 内のトークンが無効である可能性があるため、NDK プロバイダーでは無視する必要があります。 NDK_OP_FLAG_INLINE フラグが指定されている場合、作業要求関数に渡される任意のNDK_SGE構造体の VirtualAddress メンバーは、NDK プロバイダーがDISPATCH_LEVEL以下の IRQL でアクセスできるバッファーを指す必要があります。つまり、作業要求関数が戻るまで、バッファーが物理メモリに常駐していることを保証する必要があります。 1 回の呼び出しでプロバイダーに渡されるインライン データの合計サイズは、キュー ペア (QP) の作成時に指定された InlineDataSize パラメーターの値を超えることはできません。

要件

要件
サポートされている最小のクライアント サポートされていません。NDIS 6.30 以降でサポートされています。
サポートされている最小のサーバー Windows Server 2012
Header ndkpi.h (Ndkpi.h を含む)

こちらもご覧ください

NDKPI オブジェクト有効期間要件

NDK_FN_BUILD_LAM

NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN

NDK_FN_READ

NDK_FN_RECEIVE

NDK_FN_SEND

NDK_FN_SRQ_RECEIVE

NDK_FN_WRITE

NDK_LOGICAL_ADDRESS_MAPPING