NDK_FN_SEND función de devolución de llamada (ndkpi.h)

La función NdkSend (NDK_FN_SEND) publica una solicitud de envío en un par de colas de NDK (QP).

Sintaxis

NDK_FN_SEND NdkFnSend;

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

Parámetros

[in] pNdkQp

Puntero a un par de colas NDK (QP) (NDK_QP).

[in, optional] RequestContext

Valor de contexto que se va a devolver en el miembro RequestContext de la estructura NDK_RESULT para esta solicitud.

pSgl

Matriz de estructuras SGE (NDK_SGE) que representan los búferes que contienen los datos que se van a enviar.

[in] nSge

Número de estructuras SGE de la matriz especificada en el parámetro pSgl .

[in] Flags

Or bit a bit de marcas que especifica las operaciones permitidas. Se admiten las marcas siguientes:

Valor Significado
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
Indica que la finalización correcta de esta solicitud no genera un evento de finalización en la cola de finalización de salida. Sin embargo, las solicitudes que producen un error generan un evento en la cola de finalización.
NDK_OP_FLAG_READ_FENCE
0x00000002
Indica que todas las solicitudes de lectura anteriores deben completarse antes de que el hardware comience a procesar esta solicitud.
NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT
0x00000004
Indica que la cola de finalización del elemento del mismo nivel genera una notificación. Para obtener más información sobre NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT, vea la sección Comentarios.
NDK_OP_FLAG_INLINE
0x00000040
Indica que la memoria a la que hacen referencia los SGE se debe transferir en línea. Además, el valor MemoryRegionToken de las entradas de NDK_SGE podría no ser válido. Las solicitudes insertadas no necesitan limitar el número de entradas de la lista SGE al valor MaxInitiatorRequestSge especificado cuando se creó el par de colas. La cantidad de memoria transferida insertada debe estar dentro de los límites de datos insertados del par de colas.
NDK_OP_FLAG_DEFER
0x00000200
Indica al proveedor de NDK que puede aplazar la solicitud al hardware para su procesamiento. Para obtener más información sobre esta marca, vea Esquema de procesamiento diferido de NDKPI.

Nota Esta marca solo se admite en NDKPI 1.2 (Windows Server 2012 R2) y versiones posteriores.

Valor devuelto

La función NdkSend devuelve uno de los siguientes códigos NTSTATUS.

Código devuelto Descripción
STATUS_SUCCESS
La solicitud de envío se publicó correctamente. Una entrada de finalización se pondrá en cola a la cola de finalización (CQ) cuando se complete la solicitud de trabajo.
STATUS_CONNECTION_INVALID
El par de colas (QP) no está conectado.
Otros códigos de estado
Se produjo un error.

Comentarios

NdkSend publica una solicitud de envío en un par de colas (QP).

Puede usar la marca de NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT si emite varias solicitudes de envío relacionadas. Establezca esta marca en la última solicitud del grupo de solicitudes de envío relacionadas.

Un consumidor de NDK puede usar esta marca al emitir varias solicitudes de envío relacionadas. El consumidor de NDK establece esta marca solo en la última solicitud de envío relacionada. El elemento del mismo nivel recibirá todas las solicitudes de envío como normales. Sin embargo, cuando el elemento del mismo nivel recibe la última solicitud de envío (la solicitud con la marca NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT establecida), la cola de finalización del mismo nivel genera una notificación. La notificación se genera una vez completada la solicitud de recepción. Esta marca no tiene ningún significado para el receptor (del mismo nivel), a menos que el receptor haya llamado previamente a la función NdkArmCq (NDK_FN_ARM_CQ) con el tipo de notificación establecido en NDK_CQ_NOTIFY_SOLICITED.

Nota Las solicitudes que se completan con un error siempre coinciden con el tipo de notificación NDK_CQ_NOTIFY_SOLICITED .
 

Requisitos

Requisito Value
Cliente mínimo compatible Ninguno compatible, compatible con NDIS 6.30 y versiones posteriores.
Servidor mínimo compatible Windows Server 2012
Plataforma de destino Windows
Encabezado ndkpi.h (incluya Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Consulte también

Esquema de procesamiento diferido de NDKPI

Requisitos de publicación de solicitudes de trabajo de NDKPI

NDK_FN_ARM_CQ

NDK_QP

NDK_RESULT

NDK_SGE