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_SGELogicalAddress를 포함해야 합니다. MemoryRegionTokenNdkGetPrivilegedMemoryRegionToken에서 반환된 토큰과 같지 않으면 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 포함)

추가 정보

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