NDK_RESULT_EX structure (ndkpi.h)

La structure NDK_RESULT_EX retourne les résultats d’une opération de requête NDK. Elle est identique à la structure NDK_RESULT , sauf qu’elle a des membres Type et TypeSpecificCompletionOutput supplémentaires.

Syntaxe

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;

Membres

Status

L’achèvement de la requête NDK status.

BytesTransferred

Nombre d'octets transférés. La valeur de ce membre est valide uniquement pour les achèvements de requête NdkReceive (NDK_FN_RECEIVE). Le membre n’est pas défini pour toutes les autres saisies de requêtes NDK.

QPContext

Valeur de contexte pour toutes les demandes publiées sur une paire de files d’attente (QP). Le consommateur NDK a spécifié ce pointeur lorsqu’il a appelé la fonction NdkCreateQp (NDK_FN_CREATE_QP) pour créer l’objet NDK_QP .

RequestContext

Valeur de contexte de requête spécifiée par le consommateur NDK lorsqu’une demande est publiée.

Type

Valeur d’énumération NDK_OPERATION_TYPE qui spécifie le type d’opération en cours d’exécution.

ProviderErrorCode

Si Status retourne STATUS_SUCCESS, ProviderErrorCode doit être égal à zéro.

Si Status ne retourne pas STATUS_SUCCESS, zéro indique que le fournisseur NDK ne prend pas encore en charge la fonctionnalité ProviderErrorCode ou n’a pas encore fourni de code d’erreur. Une valeur différente de zéro fournit des informations supplémentaires sur le fournisseur pour diagnostiquer le code d’état .

ProviderErrorCode utilise le remplissage disponible uniquement sur les systèmes 64 bits. Sur les systèmes 32 bits, ce remplissage n’est pas disponible et lorsque ProviderErrorCode retourne zéro, il peut provoquer des pointeurs null . Ce problème se produit lorsque la mémoire est mal convertie en tant que valeur pour le pointeur TypeSpecificCompletionOutput . Il est important de noter que le contrat d’interface est rompu si le fournisseur utilise une disposition de mémoire NDK 2.1 qui inclut ProviderErrorCode, tandis que le consommateur utilise toujours une disposition de mémoire NDK 2.0 sans ce nouveau champ. Par conséquent, cette structure n’est plus rétrocompatible pour les systèmes 32 bits entre les versions 2.1 et antérieures à 2.1.

TypeSpecificCompletionOutput

Sortie d’achèvement spécifique au type, le cas échéant. Si le membre Type est NdkOperationTypeReceiveAndInvalidate, ce membre est un champ 32 bits, qui contient le jeton à invalider avant de signaler cette fin. Sinon, ce membre n’est pas défini.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge dans NDIS 6.40 et versions ultérieures.
Serveur minimal pris en charge Windows Server 2012 R2
En-tête ndkpi.h (incluez Ndkpi.h)

Voir aussi

NDK_FN_CREATE_QP

NDK_OPERATION_TYPE

NDK_QP

NDK_RESULT