estructura NDK_RESULT_EX (ndkpi.h)

La estructura NDK_RESULT_EX devuelve los resultados de una operación de solicitud NDK. Es idéntico a la estructura NDK_RESULT , salvo que tiene miembros Type y TypeSpecificCompletionOutput adicionales.

Sintaxis

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;

Miembros

Status

Estado de finalización de la solicitud NDK.

BytesTransferred

Número de bytes transferidos. El valor de este miembro solo es válido para las finalizaciones de solicitud de NdkReceive (NDK_FN_RECEIVE). El miembro no está definido para todas las demás finalizaciones de solicitudes NDK.

QPContext

Valor de contexto para todas las solicitudes que se publican a través de un par de colas (QP). El consumidor de NDK especificó este puntero cuando llamó a la función NdkCreateQp (NDK_FN_CREATE_QP) para crear el objeto NDK_QP .

RequestContext

Valor de contexto de solicitud especificado por el consumidor de NDK cuando se publica una solicitud.

Type

Valor de enumeración NDK_OPERATION_TYPE que especifica el tipo de operación que se está completando.

ProviderErrorCode

Si Status devuelve STATUS_SUCCESS, ProviderErrorCode debe ser cero.

Si Status no devuelve STATUS_SUCCESS, cero indica que el proveedor NDK no admite aún la funcionalidad ProviderErrorCode o no proporcionó un código de error. Un valor distinto de cero proporciona información adicional del proveedor para diagnosticar el código de estado .

ProviderErrorCode usa relleno que solo está disponible en sistemas de 64 bits. En los sistemas de 32 bits, este relleno no está disponible y, cuando ProviderErrorCode devuelve cero, puede provocar punteros NULOs . Este problema se produce cuando la memoria se convierte incorrectamente como el valor del puntero TypeSpecificCompletionOutput . Es importante tener en cuenta que el contrato de interfaz se interrumpe si el proveedor usa un diseño de memoria NDK 2.1 que incluye ProviderErrorCode, mientras que el consumidor sigue usando un diseño de memoria NDK 2.0 sin este nuevo campo. Por lo tanto, esta estructura ya no es compatible con versiones anteriores para sistemas de 32 bits entre las versiones 2.1 y anteriores a la 2.1.

TypeSpecificCompletionOutput

Salida de finalización específica del tipo, si existe. Si el miembro Type es NdkOperationTypeReceiveAndInvalidate, este miembro es un campo de 32 bits, que contiene el token que se va a invalidar antes de indicar esta finalización. De lo contrario, este miembro no está definido.

Requisitos

Requisito Value
Cliente mínimo compatible Compatible con NDIS 6.40 y versiones posteriores.
Servidor mínimo compatible Windows Server 2012 R2
Encabezado ndkpi.h (incluya Ndkpi.h)

Consulte también

NDK_FN_CREATE_QP

NDK_OPERATION_TYPE

NDK_QP

NDK_RESULT