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
メモリ領域トークン。 MemoryRegionToken が NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN) によって返されるトークンに設定されている場合、NDK_SGE には LogicalAddressが含まれている必要があります。 MemoryRegionToken が NdkGetPrivilegedMemoryRegionToken によって返されるトークンと等しくない場合、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_MAPPING の AdapterPageArray メンバー内の連続するエントリは、アダプターの論理アドレス空間内の連続したページであるとは限らないことに注意してください。 そのため、NDK コンシューマーは、アダプター ページ配列内のすべてのページをカバーするために複数の SGEs を使用する場合があります。
MemoryRegionToken メンバーのトークンが NdkGetPrivilegedMemoryRegionToken によって返されるトークンと等しくない場合、NDK_SGE 構造体には、以前に登録されたメモリ領域の仮想アドレススパン内にある仮想アドレスが含まれている必要があります。
NDK_SGE 構造体が NDK_OP_FLAG_INLINE フラグを持つ作業要求で使用されている場合、MemoryRegionToken 内のトークンは無効である可能性があるため、NDK プロバイダーでは無視する必要があります。 NDK_OP_FLAG_INLINE フラグが指定されている場合、作業要求関数に渡される任意の NDK_SGE 構造体の VirtualAddress メンバーは、IRQL で NDK プロバイダーがアクセスできるバッファーを指す必要があります DISPATCH_LEVEL以下。 つまり、作業要求関数が戻るまで、バッファーが物理メモリに常駐することが保証されている必要があります。 1 回の呼び出しでプロバイダーに渡されるインライン データの合計サイズは、キュー ペア (QP) の作成時に指定された InlineDataSize パラメーターの値を超えてはなりません。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | サポートされていません。NDIS 6.30 以降でサポートされています。 |
サポートされる最小サーバー | Windows Server 2012 |
ヘッダー | ndkpi.h (Ndkpi.h を含む) |