NDK_RESULT_EX 구조체(ndkpi.h)

NDK_RESULT_EX 구조체는 NDK 요청 작업에 대한 결과를 반환합니다. Type 및 TypeSpecificCompletionOutput 멤버가 추가된다는 점을 제외하고 NDK_RESULT 구조체와 동일합니다.

구문

typedef struct _NDK_RESULT_EX {
  NTSTATUS           Status;
  ULONG              BytesTransferred;
  PVOID              QPContext;
  PVOID              RequestContext;
  NDK_OPERATION_TYPE Type;
  ULONG              ProviderErrorCode;
  ULONG_PTR          TypeSpecificCompletionOutput;
} NDK_RESULT_EX;

멤버

Status

NDK 요청 완료 상태.

BytesTransferred

전송된 바이트 수 입니다. 이 멤버의 값은 NdkReceive (NDK_FN_RECEIVE) 요청 완료에만 유효합니다. 멤버는 다른 모든 NDK 요청 완료에 대해 정의되지 않습니다.

QPContext

QP(큐 쌍)를 통해 게시되는 모든 요청에 대한 컨텍스트 값입니다. NDK 소비자는 NdkCreateQp (NDK_FN_CREATE_QP) 함수를 호출하여 NDK_QP 개체를 만들 때 이 포인터를 지정했습니다.

RequestContext

요청이 게시될 때 NDK 소비자가 지정한 요청 컨텍스트 값입니다.

Type

완료되는 작업의 형식을 지정하는 NDK_OPERATION_TYPE 열거형 값입니다.

ProviderErrorCode

Status가 STATUS_SUCCESS 반환하는 경우 ProviderErrorCode0이어야 합니다.

Status가 STATUS_SUCCESS 반환하지 않으면 0은 NDK 공급자가 ProviderErrorCode 기능을 아직 지원하지 않거나 오류 코드를 제공하지 않음을 나타냅니다. 0이 아닌 값은 상태 코드를 진단하기 위한 추가 공급자 정보를 제공합니다.

ProviderErrorCode 는 64비트 시스템에서만 사용할 수 있는 패딩을 사용합니다. 32비트 시스템에서는 이 패딩을 사용할 수 없으며 ProviderErrorCode0을 반환하면 null 포인터가 발생할 수 있습니다. 이 문제는 메모리가 TypeSpecificCompletionOutput 포인터의 값으로 잘못 캐스팅되는 경우에 발생합니다. 공급자가 ProviderErrorCode를 포함하는 NDK 2.1 메모리 레이아웃을 사용하는 경우 인터페이스 계약이 끊어진 반면 소비자는 이 새 필드 없이 NDK 2.0 메모리 레이아웃을 계속 사용합니다. 따라서 이 구조는 2.1 버전과 2.1 이전 버전 사이의 32비트 시스템에서 더 이상 이전 버전과 호환되지 않습니다.

TypeSpecificCompletionOutput

형식별 완성 출력(있는 경우)입니다. Type 멤버가 NdkOperationTypeReceiveAndInvalidate이면 이 멤버는 이 완료를 알리기 전에 무효화할 토큰을 포함하는 32비트 필드입니다. 그렇지 않으면 이 멤버가 정의되지 않습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.40 이상에서 지원됩니다.
지원되는 최소 서버 Windows Server 2012 R2
머리글 ndkpi.h(Ndkpi.h 포함)

추가 정보

NDK_FN_CREATE_QP

NDK_OPERATION_TYPE

NDK_QP

NDK_RESULT