Partilhar via


NDK_FN_SEND_AND_INVALIDATE função de retorno de chamada (ndkpi.h)

A função NdkSendAndInvalidate (NDK_FN_SEND_AND_INVALIDATE) posta uma solicitação de envio em um QP (par de filas NDK) e fornece um token a ser invalidado no par remoto após a conclusão do recebimento.

Sintaxe

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

Parâmetros

[in] pNdkQp

Um ponteiro para um objeto QP (par de filas NDK) (NDK_QP).

[in, optional] RequestContext

Um valor de contexto a ser retornado no requestContext membro da estrutura NDK_RESULT_EX para essa solicitação.

pSgl

Uma matriz de estruturas SGE (NDK_SGE) que representam os buffers que contêm os dados a serem enviados.

[in] nSge

O número de estruturas SGE na matriz especificada no parâmetro pSgl.

[in] Flags

Um OR bit a bit de sinalizadores que especificam as operações permitidas. Há suporte para os seguintes sinalizadores:

Valor Significado
NDK_OP_FLAG_SILENT_SUCCESS
0x00000001
Se essa solicitação for bem-sucedida, ela não gerará um evento de conclusão na fila de conclusão de saída. No entanto, se falhar, ele gerará um evento de conclusão na fila de conclusão de saída.
NDK_OP_FLAG_READ_FENCE
0x00000002
Todas as solicitações de leitura anteriores devem ser concluídas antes que o hardware comece a processar essa solicitação.
NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT
0x00000004
A fila de conclusão para o par gera uma notificação. Para obter mais informações sobre NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT, consulte a seção Comentários.
NDK_OP_FLAG_INLINE
0x00000040
Indica que a memória referenciada pelos SGEs deve ser transferida embutida. Além disso, o valor MemoryRegionToken nas entradas de NDK_SGE pode ser inválido. As solicitações embutidas não precisam limitar o número de entradas na lista SGE para o MaxInitiatorRequestSge valor especificado quando o par de filas foi criado. A quantidade de memória transferida embutida deve estar dentro dos limites de dados embutidos do par de filas.
NDK_OP_FLAG_DEFER
0x00000200
Indica ao provedor NDK que ele pode adiar a indicação da solicitação ao hardware para processamento. Para obter mais informações sobre esse sinalizador, consulte esquema de processamento adiado do NDKPI.

Observação Esse sinalizador tem suporte apenas no NDKPI 1.2 (Windows Server 2012 R2) e posterior.

[in] RemoteToken

O token remoto a ser invalidado no par após a conclusão do recebimento. O provedor NDK no par receptor deve anular a conexão, conforme especificado pelas regras de transporte de camada inferior, se um token inválido foi especificado pelo par de envio.

Valor de retorno

A função NdkSendAndInvalidate retorna um dos seguintes códigos NTSTATUS.

Código de retorno Descrição
STATUS_SUCCESS
A solicitação foi postada com êxito. Uma entrada de conclusão será enfileirada na fila de conclusão (CQ) quando a solicitação de trabalho for concluída.
STATUS_CONNECTION_INVALID
O QP (par de filas) não está conectado.
Outros códigos de status
Ocorreu um erro.

Observações

Você pode usar o sinalizador NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT se emitir várias solicitações de envio relacionadas. Defina esse sinalizador na última solicitação do grupo.

Um consumidor do NDK pode usar esse sinalizador ao emitir várias solicitações de envio relacionadas. O consumidor do NDK define esse sinalizador apenas na última solicitação de envio relacionada. O par receberá todas as solicitações de envio normalmente. No entanto, quando o par recebe a última solicitação de envio (a solicitação com o sinalizador de NDK_OP_FLAG_SEND_AND_SOLICIT_EVENT definido), a fila de conclusão para o par gera uma notificação. A notificação é gerada após a conclusão da solicitação de recebimento. Esse sinalizador não tem significado para o receptor (par), a menos que o receptor tenha chamado anteriormente a função NdkArmCq (NDK_FN_ARM_CQ) com o tipo de notificação definido como NDK_CQ_NOTIFY_SOLICITED.

Observação Solicitações que são concluídas com um erro sempre correspondem ao tipo de notificação NDK_CQ_NOTIFY_SOLICITED.
 
O consumidor do NDK deve garantir que a função NdkSendAndInvalidate não seja chamada se o par receptor não der suporte à invalidação remota. O consumidor deve negociar essa funcionalidade usando um mecanismo fora de banda ou não usar essa função. Se o consumidor violar esse requisito, o comportamento do provedor será indefinido.

Qualquer estrutura NDK_RESULT_EX adicionada a uma fila de conclusão como resultado de uma chamada para essa função deve especificar NdkOperationTypeSend para o membro Type. Observe que você não precisa especificar um valor para o TypeSpecificCompletionOutput membro da estrutura NDK_RESULT_EX.

Requisitos

Requisito Valor
de cliente com suporte mínimo Nenhum com suporte, com suporte no NDIS 6.40 e posterior.
servidor com suporte mínimo Windows Server 2012 R2
da Plataforma de Destino Windows
cabeçalho ndkpi.h (inclua Ndkpi.h)
IRQL <=DISPATCH_LEVEL

Consulte também

requisitos de tratamento de conclusão do NDKPI

esquema de processamento adiado do NDKPI

requisitos de postagem de solicitação de trabalho do NDKPI

NDK_FN_ARM_CQ

NDK_QP

NDK_RESULT_EX

NDK_SGE