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_SGELogicalAddress를 포함해야 합니다. 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_SGENDK_LOGICAL_ADDRESS_MAPPING 구조체를 사용하여 NdkBuildLam(NDK_FN_BUILD_LAM) 함수에서 반환한 논리적 주소를 포함해야 합니다. NDK_LOGICAL_ADDRESS_MAPPINGAdapterPageArray 멤버의 연속 항목이 반드시 어댑터의 논리적 주소 공간에서 연속적인 페이지는 아닙니다. 따라서 NDK 소비자는 여러 SGE를 사용하여 어댑터 페이지 배열의 모든 페이지를 처리할 수 있습니다.
MemoryRegionToken 멤버의 토큰이 NdkGetPrivilegedMemoryRegionToken에서 반환되는 토큰과 같지 않은 경우 NDK_SGE 구조에는 이전에 등록된 메모리 영역의 가상 주소 범위 내에 속하는 가상 주소가 포함되어야 합니다.
NDK_OP_FLAG_INLINE 플래그가 있는 작업 요청에서 NDK_SGE 구조가 사용되는 경우 MemoryRegionToken의 토큰이 유효하지 않을 수 있으므로 NDK 공급자가 무시해야 합니다. NDK_OP_FLAG_INLINE 플래그를 지정하면 작업 요청 함수에 전달되는 모든 NDK_SGE 구조의 VirtualAddress 멤버는 DISPATCH_LEVEL 이하의 IRQL에서 NDK 공급자가 액세스할 수 있는 버퍼를 가리킵니다. 즉, 작업 요청 함수가 반환될 때까지 버퍼가 실제 메모리에 상주하도록 보장되어야 합니다. 단일 호출에서 공급자에게 전달되는 인라인 데이터의 총 크기는 큐 쌍(QP)을 만들 때 지정된 InlineDataSize 매개 변수의 값을 초과해서는 안 됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | 지원되지 않음, NDIS 6.30 이상에서 지원됨 |
지원되는 최소 서버 | Windows Server 2012 |
머리글 | ndkpi.h(Ndkpi.h 포함) |