Freigeben über


NDK_FN_SEND_AND_INVALIDATE Rückruffunktion (ndkpi.h)

Die Funktion NdkSendAndInvalidate (NDK_FN_SEND_AND_INVALIDATE) sendet eine Sendeanforderung für ein NDK-Warteschlangenpaar (QP) und stellt ein Token bereit, das beim Remotepeer nach Abschluss des Empfangs ungültig gemacht wird.

Syntax

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
)
{...}

Parameter

[in] pNdkQp

Ein Zeiger auf ein QP-Objekt (NDK-Warteschlangenpaar) (NDK_QP).

[in, optional] RequestContext

Ein Kontextwert, der im RequestContext-Member der NDK_RESULT_EX-Struktur für diese Anforderung zurückgegeben werden soll.

pSgl

Ein Array von SGE-Strukturen (NDK_SGE), die die Puffer darstellen, die die zu sendenden Daten enthalten.

[in] nSge

Die Anzahl der SGE-Strukturen im Array, die im pSgl-Parameter angegeben ist.

[in] Flags

Ein bitweises OR von Flags, die die zulässigen Vorgänge angeben. Die folgenden Flags werden unterstützt:

Wert Bedeutung
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
Wenn diese Anforderung erfolgreich ist, wird kein Vervollständigungsereignis in der Warteschlange für ausgehende Vervollständigung generiert. Wenn es jedoch fehlschlägt, wird ein Vervollständigungsereignis in der Warteschlange für ausgehende Vervollständigung generiert.
NDK_OP_FLAG_READ_FENCE
0x00000002
Alle vorherigen Leseanforderungen müssen abgeschlossen sein, bevor die Hardware mit der Verarbeitung dieser Anforderung beginnt.
NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT
0x00000004
Die Vervollständigungswarteschlange für den Peer generiert eine Benachrichtigung. Weitere Informationen zu NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT finden Sie im Abschnitt Hinweise.
NDK_OP_FLAG_INLINE
0x00000040
Gibt an, dass der Speicher, auf den von den SGEs verwiesen wird, inline übertragen werden soll. Außerdem kann der MemoryRegionToken-Wert im NDK_SGE Einträgen ungültig sein. Inlineanforderungen müssen die Anzahl der Einträge in der SGE-Liste nicht auf den MaxInitiatorRequestSge-Wert beschränken, der beim Erstellen des Warteschlangenpaars angegeben wird. Die Inlinemenge des übertragenen Arbeitsspeichers muss innerhalb der Inlinedatengrenzwerte des Warteschlangenpaars sein.
NDK_OP_FLAG_DEFER
0x00000200
Gibt dem NDK-Anbieter an, dass er möglicherweise die Anforderung an die Hardware für die Verarbeitung zurückstellen kann. Weitere Informationen zu diesem Flag finden Sie unter NDKPI-Schema für verzögerte Verarbeitung.

Hinweis Dieses Flag wird nur in NDKPI 1.2 (Windows Server 2012 R2) und höher unterstützt.

[in] RemoteToken

Das Remotetoken, das nach Abschluss des Empfangs auf dem Peer ungültig gemacht werden soll. Der NDK-Anbieter am empfangenden Peer muss die Verbindung abbrechen, wie in Transportregeln der unteren Schicht angegeben, wenn vom sendenden Peer ein ungültiges Token angegeben wurde.

Rückgabewert

Die Funktion NdkSendAndInvalidate gibt einen der folgenden NTSTATUS-Codes zurück.

Rückgabecode Beschreibung
STATUS_SUCCESS
Die Anforderung wurde erfolgreich gesendet. Ein Vervollständigungseintrag wird in die Vervollständigungswarteschlange (CQ) eingereiht, wenn die Arbeitsanforderung abgeschlossen ist.
STATUS_CONNECTION_INVALID
Das Warteschlangenpaar (QP) ist nicht verbunden.
Andere status Codes
Ein Fehler ist aufgetreten.

Hinweise

Sie können das flag NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT verwenden, wenn Sie mehrere verwandte Sendeanforderungen ausstellen. Legen Sie dieses Flag für die letzte Anforderung in der Gruppe fest.

Ein NDK-Consumer kann dieses Flag verwenden, wenn mehrere verwandte Sendeanforderungen ausgegeben werden. Der NDK-Consumer legt dieses Flag nur für die letzte zugehörige Sendeanforderung fest. Der Peer empfängt alle Sendeanforderungen wie gewohnt. Wenn der Peer jedoch die letzte Sendeanforderung empfängt (die Anforderung mit dem NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT Flag festgelegt), generiert die Vervollständigungswarteschlange für den Peer eine Benachrichtigung. Die Benachrichtigung wird generiert, nachdem die Empfangsanforderung abgeschlossen wurde. Dieses Flag hat keine Bedeutung für den Empfänger (Peer), es sei denn, der Empfänger hat zuvor die Funktion NdkArmCq (NDK_FN_ARM_CQ) aufgerufen, wobei der Benachrichtigungstyp auf NDK_CQ_NOTIFY_SOLICITED festgelegt ist.

Hinweis Anforderungen, die mit einem Fehler abgeschlossen sind, entsprechen immer dem NDK_CQ_NOTIFY_SOLICITED Benachrichtigungstyp.
 
Der NDK-Consumer sollte sicherstellen, dass die NdkSendAndInvalidate-Funktion nicht aufgerufen wird, wenn der empfangende Peer die Remoteinvalidierung nicht unterstützt. Der Consumer muss diese Funktion entweder mithilfe eines Out-of-Band-Mechanismus aushandeln oder diese Funktion nicht verwenden. Wenn der Verbraucher gegen diese Anforderung verstößt, ist das Verhalten des Anbieters nicht definiert.

Jede NDK_RESULT_EX Struktur, die einer Vervollständigungswarteschlange als Ergebnis eines Aufrufs dieser Funktion hinzugefügt wird, muss NdkOperationTypeSend für das Type-Element angeben. Beachten Sie, dass Sie keinen Wert für das TypeSpecificCompletionOutput-Element der NDK_RESULT_EX-Struktur angeben müssen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Keine unterstützt, wird in NDIS 6.40 und höher unterstützt.
Unterstützte Mindestversion (Server) Windows Server 2012 R2
Zielplattform Windows
Kopfzeile ndkpi.h (include Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Weitere Informationen

Anforderungen an die NDKPI-Vervollständigung

NDKPI-Schema für verzögerte Verarbeitung

Anforderungen an die NDKPI-Veröffentlichung von Arbeitsanforderungen

NDK_FN_ARM_CQ

NDK_QP

NDK_RESULT_EX

NDK_SGE