Condividi tramite


NDK_FN_SEND_AND_INVALIDATE funzione di callback (ndkpi.h)

La funzione NdkSendAndInvalidate (NDK_FN_SEND_AND_INVALIDATE) invia una richiesta di invio su una coppia di code NDK (QP) e fornisce un token da invalidare al peer remoto al completamento della ricezione.

Sintassi

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

Parametri

[in] pNdkQp

Puntatore a un oggetto QP (NDK Queue Pair) (NDK_QP).

[in, optional] RequestContext

Valore di contesto da restituire nel membro RequestContext della struttura NDK_RESULT_EX per questa richiesta.

pSgl

Matrice di strutture SGE (NDK_SGE) che rappresentano i buffer che contengono i dati da inviare.

[in] nSge

Numero di strutture SGE nella matrice specificata nel parametro pSgl .

[in] Flags

OR bit per bit di flag che specificano le operazioni consentite. Sono supportati i flag seguenti:

Valore Significato
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
Se la richiesta ha esito positivo, non genera un evento di completamento nella coda di completamento in uscita. Tuttavia, se ha esito negativo, genera un evento di completamento nella coda di completamento in uscita.
NDK_OP_FLAG_READ_FENCE
0x00000002
Tutte le richieste di lettura precedenti devono essere completate prima che l'hardware inizi a elaborare questa richiesta.
NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT
0x00000004
La coda di completamento per il peer genera una notifica. Per altre informazioni sulle NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT, vedere la sezione Osservazioni.
NDK_OP_FLAG_INLINE
0x00000040
Indica che la memoria a cui fa riferimento gli SGEs deve essere trasferita inline. Inoltre, il valore MemoryRegionToken nelle voci NDK_SGE potrebbe non essere valido. Le richieste inline non devono limitare il numero di voci nell'elenco SGE al valore MaxInitiatorRequestSge specificato al momento della creazione della coppia di code. La quantità di memoria trasferita inline deve essere compresa nei limiti dei dati inline della coppia di code.
NDK_OP_FLAG_DEFER
0x00000200
Indica al provider NDK che può rinviare la richiesta all'hardware per l'elaborazione. Per altre informazioni su questo flag, vedere Schema di elaborazione posticipato NDKPI.

Nota Questo flag è supportato solo in NDKPI 1.2 (Windows Server 2012 R2) e versioni successive.

[in] RemoteToken

Token remoto da invalidare nel peer al termine della ricezione. Il provider NDK nel peer ricevente deve interrompere la connessione, come specificato dalle regole di trasporto di livello inferiore, se è stato specificato un token non valido dal peer di invio.

Valore restituito

La funzione NdkSendAndInvalidate restituisce uno dei codici NTSTATUS seguenti.

Codice restituito Descrizione
STATUS_SUCCESS
La richiesta è stata inviata correttamente. Una voce di completamento verrà accodata alla coda di completamento (CQ) al termine della richiesta di lavoro.
STATUS_CONNECTION_INVALID
La coppia di code (QP) non è connessa.
Altri codici di stato
Si è verificato un errore.

Commenti

È possibile usare il flag di NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT se si eseguono più richieste di invio correlate. Impostare questo flag sull'ultima richiesta nel gruppo.

Un consumer NDK può usare questo flag quando si eseguono più richieste di invio correlate. Il consumer NDK imposta questo flag solo sull'ultima richiesta di invio correlata. Il peer riceverà tutte le richieste di invio come di consueto. Tuttavia, quando il peer riceve l'ultima richiesta di invio (la richiesta con il flag NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT impostato), la coda di completamento per il peer genera una notifica. La notifica viene generata al termine della richiesta di ricezione. Questo flag non ha alcun significato per il ricevitore (peer), a meno che il ricevitore non abbia precedentemente chiamato la funzione NdkArmCq (NDK_FN_ARM_CQ) con il tipo di notifica impostato su NDK_CQ_NOTIFY_SOLICITED.

Nota Le richieste completate con un errore corrispondono sempre al tipo di notifica NDK_CQ_NOTIFY_SOLICITED .
 
Il consumer NDK deve assicurarsi che la funzione NdkSendAndInvalidate non venga chiamata se il peer ricevente non supporta l'invalidazione remota. Il consumer deve negoziare questa funzionalità usando un meccanismo fuori banda o non usare questa funzione. Se il consumer viola questo requisito, il comportamento del provider non è definito.

Qualsiasi struttura NDK_RESULT_EX aggiunta a una coda di completamento in seguito a una chiamata a questa funzione deve specificare NdkOperationTypeSend per il membro Type . Si noti che non è necessario specificare un valore per il membro TypeSpecificCompletionOutput della struttura NDK_RESULT_EX .

Requisiti

Requisito Valore
Client minimo supportato None supported,Supported in NDIS 6.40 and later.
Server minimo supportato Windows Server 2012 R2
Piattaforma di destinazione Windows
Intestazione ndkpi.h (include Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Vedi anche

Requisiti di gestione del completamento degli indicatori KPI ND

Schema di elaborazione posticipato NDKPI

Requisiti di registrazione delle richieste di lavoro NDKPI

NDK_FN_ARM_CQ

NDK_QP

NDK_RESULT_EX

NDK_SGE