NDK_FN_FAST_REGISTER função de retorno de chamada (ndkpi.h)
A função NdkFastRegister (NDK_FN_FAST_REGISTER) registra rapidamente uma matriz de páginas lógicas do adaptador em uma região de memória existente.
Sintaxe
NDK_FN_FAST_REGISTER NdkFnFastRegister;
NTSTATUS NdkFnFastRegister(
[in] NDK_QP *pNdkQp,
[in, optional] PVOID RequestContext,
[in] NDK_MR *pMr,
[in] ULONG AdapterPageCount,
const NDK_LOGICAL_ADDRESS *AdapterPageArray,
[in] ULONG FBO,
[in] SIZE_T Length,
[in] PVOID BaseVirtualAddress,
[in] ULONG Flags
)
{...}
Parâmetros
[in] pNdkQp
Um ponteiro para um objeto de QP (par de filas) NDK (NDK_QP).
[in, optional] RequestContext
Um valor de contexto a ser retornado no membro RequestContext da estrutura NDK_RESULT para essa solicitação.
[in] pMr
Um ponteiro para um objeto mr (região de memória) do NDK (NDK_MR) que foi inicializado para registro rápido.
[in] AdapterPageCount
O número de páginas no parâmetro AdapterPageArray . O tamanho de cada página no AdapterPageArray é PAGE_SIZE bytes.
AdapterPageArray
Uma matriz de endereços lógicos do adaptador (NDK_LOGICAL_ADDRESS) em que cada endereço é o endereço lógico inicial de uma página. Cada endereço deve ser páginas alinhadas PAGE_SIZE bytes de comprimento. Endereços consecutivos na matriz não são necessariamente consecutivos em termos de espaço de endereço lógico, mas a matriz como um todo representa uma região de memória virtualmente contígua da perspectiva do sistema host.
[in] FBO
O primeiro deslocamento de bytes (FBO) na primeira página. A região registrada começa nesse deslocamento.
[in] Length
O comprimento, em bytes, da região que está sendo registrada a partir do FBO. O comprimento deve ser menor ou igual ao número total de bytes representados pelo primeiro conjunto (AdapterPageCount) de páginas contidas na matriz AdapterPageArray menos o FBO.
[in] BaseVirtualAddress
O valor do endereço virtual especificado pelo consumidor para se referir ao primeiro local de byte da região de memória. Esse valor deve ser um múltiplo de PAGE_SIZE mais FBO. Portanto, os valores permitidos incluem FBO ou FBO mais n vezes o PAGE_SIZE em que n é maior ou igual a zero. Zero será um valor válido somente se FBO for zero.
[in] Flags
Um OR bit a bit de sinalizadores que especifica as operações permitidas. Há suporte para os seguintes sinalizadores:
Valor | Significado |
---|---|
|
Indica que a conclusão bem-sucedida dessa solicitação não gera um evento de conclusão na fila de conclusão de saída. No entanto, as solicitações que falham geram um evento na fila de conclusão. |
|
Indica que todas as solicitações de leitura anteriores devem ser concluídas antes que o hardware comece a processar essa solicitação. |
|
Habilite o acesso de leitura à região de memória para qualquer par conectado. Para acessar a região de memória, os pares conectados devem ter um token válido. |
|
Permitir acesso de gravação local à região de memória. |
|
Habilite o acesso de gravação à região de memória para qualquer par conectado. Para acessar a região de memória, os pares conectados devem ter um token válido. |
|
Indica ao provedor NDK que ele pode adiar indicando a solicitação de hardware para processamento. Para obter mais informações sobre esse sinalizador, consulte Esquema de processamento adiado do NDKPI.
Nota Esse sinalizador tem suporte apenas no NDKPI 1.2 (Windows Server 2012 R2) e posterior. |
Retornar valor
A função NDK_FN_FAST_REGISTER retorna um dos seguintes códigos NTSTATUS.
Código de retorno | Descrição |
---|---|
|
A solicitação foi postada com êxito. Uma entrada de conclusão será enfileirada no CQ quando a solicitação de trabalho for concluída. |
|
O QP não está conectado. |
|
A região de memória não foi inicializada para acesso remoto durante a inicialização de registro rápido, mas a solicitação de trabalho de registro rápido especificada NDK_OP_FLAG_ALLOW_REMOTE_READ ou NDK_OP_FLAG_ALLOW_REMOTE_WRITE. |
|
Ocorreu um erro. |
Comentários
NdkFastRegister registra rapidamente uma matriz de páginas lógicas do adaptador em uma região de memória existente que é inicializada para registro rápido.
Depois que essa chamada retornar, o token de região de memória para acesso remoto estará disponível com a função NdkGetRemoteTokenFromMr (NDK_FN_GET_REMOTE_TOKEN_FROM_MR) do MR.
O NdkFastRegister não dá suporte a endereços virtuais baseados em zero.
Se o sinalizador NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED não estiver definido no membro AdapterFlags da estrutura NDK_ADAPTER_INFO , um consumidor do NDK deverá passar o sinalizador NDK_OP_FLAG_RDMA_READ_SINK quando registrar a memória que pode ser usada como buffer de coletor para uma solicitação de leitura RDMA. Determinados provedores NDK podem exigir a habilitação de direitos de acesso especiais no buffer do coletor para uma solicitação de leitura RDMA. Esse sinalizador permite que esses provedores deem suporte às solicitações de registro adequadamente. Observe que os buffers podem ser registrados para várias finalidades, portanto, esse sinalizador pode ser acompanhado por outras pessoas.
Se um consumidor do NDK passar o sinalizador NDK_OP_FLAG_RDMA_READ_SINK em um adaptador para o qual o sinalizador NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED é definido no membro AdapterFlags da estrutura NDK_ADAPTER_INFO , o provedor não precisará manipular o sinalizador de NDK_OP_FLAG_RDMA_READ_SINK e não deverá falhar na solicitação devido à presença desse sinalizador.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Nenhum com suporte, com suporte no NDIS 6.30 e posterior. |
Servidor mínimo com suporte | Windows Server 2012 |
Plataforma de Destino | Windows |
Cabeçalho | ndkpi.h (inclua Ndkpi.h) |
IRQL | <=DISPATCH_LEVEL |
Confira também
Esquema de processamento adiado do NDKPI
Requisitos de postagem de solicitação de trabalho do NDKPI