Partager via


NDK_FN_SEND_AND_INVALIDATE fonction de rappel (ndkpi.h)

La fonction NdkSendAndInvalidate (NDK_FN_SEND_AND_INVALIDATE) publie une demande d’envoi sur une paire de files d’attente NDK (QP) et fournit un jeton à invalider sur l’homologue distant lors de la réception.

Syntaxe

NDK_FN_SEND_AND_INVALIDATE NdkFnSendAndInvalidate;

NTSTATUS NdkFnSendAndInvalidate(
  [in]           NDK_QP *pNdkQp,
  [in, optional] PVOID RequestContext,
                 const NDK_SGE *pSgl,
  [in]           ULONG nSge,
  [in]           ULONG Flags,
  [in]           UINT32 RemoteToken
)
{...}

Paramètres

[in] pNdkQp

Pointeur vers un objet de paire de files d’attente NDK (QP) (NDK_QP).

[in, optional] RequestContext

Valeur de contexte à renvoyer dans le membre RequestContext de la structure NDK_RESULT_EX pour cette requête.

pSgl

Tableau de structures SGE (NDK_SGE) qui représentent les mémoires tampons contenant les données à envoyer.

[in] nSge

Nombre de structures SGE dans le tableau spécifié dans le paramètre pSgl.

[in] Flags

Or au niveau du bit des indicateurs qui spécifient les opérations autorisées. Les indicateurs suivants sont pris en charge :

Valeur Signification
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
Si cette requête réussit, elle ne génère pas d’événement d’achèvement dans la file d’attente d’achèvement sortante. Toutefois, en cas d’échec, il génère un événement d’achèvement dans la file d’attente d’achèvement sortante.
NDK_OP_FLAG_READ_FENCE
0x00000002
Toutes les demandes de lecture antérieures doivent être terminées avant que le matériel commence à traiter cette demande.
NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT
0x00000004
La file d’attente d’achèvement pour l’homologue génère une notification. Pour plus d’informations sur NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT, consultez la section Remarques.
NDK_OP_FLAG_INLINE
0x00000040
Indique que la mémoire référencée par les sgEs doit être transférée en ligne. En outre, la valeur MemoryRegionToken dans les entrées NDK_SGE peut ne pas être valide. Les requêtes inline n’ont pas besoin de limiter le nombre d’entrées de la liste SGE à la valeur MaxInitiatorRequestSge spécifiée lors de la création de la paire de files d’attente. La quantité de mémoire transférée inline doit se trouver dans les limites de données inline de la paire de files d’attente.
NDK_OP_FLAG_DEFER
0x00000200
Indique au fournisseur NDK qu’il peut différer la demande au matériel pour traitement. Pour plus d’informations sur cet indicateur, consultez schéma de traitement différé NDKPI.

Remarque Cet indicateur est pris en charge uniquement dans NDKPI 1.2 (Windows Server 2012 R2) et versions ultérieures.

[in] RemoteToken

Jeton distant à invalider au niveau de l’homologue lors de la réception. Le fournisseur NDK au niveau de l’homologue de réception doit abandonner la connexion, comme spécifié par les règles de transport de couche inférieure, si un jeton non valide a été spécifié par l’homologue d’envoi.

Valeur de retour

La fonction NdkSendAndInvalidate retourne l’un des codes NTSTATUS suivants.

Retourner le code Description
STATUS_SUCCESS
La demande a été publiée avec succès. Une entrée d’achèvement est mise en file d’attente vers la file d’attente d’achèvement (CQ) lorsque la demande de travail est terminée.
STATUS_CONNECTION_INVALID
La paire de files d’attente (QP) n’est pas connectée.
Autres codes d’état
Une erreur s’est produite.

Remarques

Vous pouvez utiliser l’indicateur NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT si vous émettez plusieurs demandes d’envoi associées. Définissez cet indicateur sur la dernière requête du groupe.

Un consommateur NDK peut utiliser cet indicateur lors de l’émission de plusieurs demandes d’envoi associées. Le consommateur NDK définit cet indicateur uniquement sur la dernière demande d’envoi associée. L’homologue reçoit toutes les demandes d’envoi normalement. Toutefois, lorsque l’homologue reçoit la dernière demande d’envoi (la demande avec l’indicateur de NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT défini), la file d’attente d’achèvement pour l’homologue génère une notification. La notification est générée une fois la demande de réception terminée. Cet indicateur n’a aucune signification pour le récepteur (homologue), sauf si le récepteur a précédemment appelé la fonction NdkArmCq (NDK_FN_ARM_CQ) avec le type de notification défini sur NDK_CQ_NOTIFY_SOLICITED.

Remarque Demandes qui se terminent par une erreur correspondent toujours au type de notification NDK_CQ_NOTIFY_SOLICITED.
 
Le consommateur NDK doit s’assurer que la fonction NdkSendAndInvalidate n’est pas appelée si l’homologue de réception ne prend pas en charge l’invalidation à distance. Le consommateur doit négocier cette fonctionnalité à l’aide d’un mécanisme hors bande ou ne pas utiliser cette fonction. Si le consommateur enfreint cette exigence, le comportement du fournisseur n’est pas défini.

Toute structure NDK_RESULT_EX ajoutée à une file d’attente d’achèvement à la suite d’un appel à cette fonction doit spécifier NdkOperationTypeSend pour le membre Type. Notez que vous n’avez pas besoin de spécifier de valeur pour le membre typeSpecificCompletionOutput de la structure NDK_RESULT_EX.

Exigences

Exigence Valeur
client minimum pris en charge Aucune prise en charge, prise en charge dans NDIS 6.40 et versions ultérieures.
serveur minimum pris en charge Windows Server 2012 R2
plateforme cible Windows
d’en-tête ndkpi.h (include Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Voir aussi

exigences de gestion de la saisie semi-automatique NDKPI

schéma de traitement différé NDKPI

exigences de publication des demandes de travail NDKPI

NDK_FN_ARM_CQ

NDK_QP

NDK_RESULT_EX

NDK_SGE