структура 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) |