структура NDK_RESULT_EX (ndkpi.h)

Структура NDK_RESULT_EX возвращает результаты для операции запроса NDK. Он идентичен структуре NDK_RESULT , за исключением того, что имеет дополнительные члены Type и TypeSpecificCompletionOutput .

Синтаксис

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, значение ProviderErrorCode должно быть равно нулю.

Если значение Status не возвращает STATUS_SUCCESS, то ноль указывает, что поставщик NDK еще не поддерживает возможность ProviderErrorCode или не предоставил код ошибки. Ненулевое значение предоставляет дополнительные сведения о поставщике для диагностики кода состояния.

ProviderErrorCode использует заполнение, доступное только в 64-разрядных системах. В 32-разрядных системах это заполнение недоступно, и когда ProviderErrorCode возвращает ноль, это может привести к возникновению пустых указателей. Эта проблема возникает, если память неправильно приведена в качестве значения для указателя TypeSpecificCompletionOutput . Важно отметить, что контракт интерфейса нарушается, если поставщик использует макет памяти NDK 2.1, включающий ProviderErrorCode, а потребитель по-прежнему использует макет памяти NDK 2.0 без этого нового поля. Таким образом, эта структура больше не является обратно совместимой для 32-разрядных систем в версиях 2.1 и до 2.1.

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