NDK_FN_FAST_REGISTER función de devolución de llamada (ndkpi.h)
La función NdkFastRegister (NDK_FN_FAST_REGISTER) registra rápidamente una matriz de páginas lógicas del adaptador en una región de memoria existente.
Sintaxis
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
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.
[in] pMr
Puntero a un objeto de región de memoria NDK (MR) (NDK_MR) que se inicializó para el registro rápido.
[in] AdapterPageCount
Número de páginas del parámetro AdapterPageArray . El tamaño de cada página de AdapterPageArray es de PAGE_SIZE bytes.
AdapterPageArray
Matriz de direcciones lógicas del adaptador (NDK_LOGICAL_ADDRESS) donde cada dirección es la dirección lógica inicial de una página. Cada dirección debe estar alineada con páginas PAGE_SIZE bytes de longitud. Las direcciones consecutivas de la matriz no son necesariamente consecutivas en términos del espacio de direcciones lógicos, pero la matriz en su conjunto representa una región de memoria prácticamente contigua desde la perspectiva del sistema host.
[in] FBO
Primer desplazamiento de bytes (FBO) dentro de la primera página. La región registrada comienza en este desplazamiento.
[in] Length
Longitud, en bytes, de la región que se registra a partir de la FBO. La longitud debe ser menor o igual que el número total de bytes representados por el primer conjunto (AdapterPageCount) de páginas contenidas en la matriz AdapterPageArray menos el FBO.
[in] BaseVirtualAddress
Valor de dirección virtual especificado por el consumidor para hacer referencia a la primera ubicación de bytes de la región de memoria. Este valor debe ser un múltiplo de PAGE_SIZE más FBO. Por lo tanto, los valores permitidos incluyen FBO o FBO más n veces el PAGE_SIZE donde n es mayor o igual que cero. Cero es un valor válido solo si FBO es cero.
[in] Flags
Or bit a bit de marcas que especifica las operaciones permitidas. Se admiten las marcas siguientes:
Valor | Significado |
---|---|
|
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. |
|
Indica que todas las solicitudes de lectura anteriores deben completarse antes de que el hardware comience a procesar esta solicitud. |
|
Habilite el acceso de lectura a la región de memoria para cualquier elemento del mismo nivel conectado. Para acceder a la región de memoria, los elementos del mismo nivel conectados deben tener un token válido. |
|
Permitir el acceso de escritura local a la región de memoria. |
|
Habilite el acceso de escritura a la región de memoria para cualquier elemento del mismo nivel conectado. Para acceder a la región de memoria, los elementos del mismo nivel conectados deben tener un token válido. |
|
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 NDK_FN_FAST_REGISTER devuelve uno de los siguientes códigos NTSTATUS.
Código devuelto | Descripción |
---|---|
|
La solicitud se publicó correctamente. Una entrada de finalización se pondrá en cola en el CQ cuando se complete la solicitud de trabajo. |
|
El QP no está conectado. |
|
La región de memoria no se inicializó para el acceso remoto durante la inicialización rápida del registro, pero la solicitud de trabajo de registro rápido especificada NDK_OP_FLAG_ALLOW_REMOTE_READ o NDK_OP_FLAG_ALLOW_REMOTE_WRITE. |
|
Se produjo un error. |
Comentarios
NdkFastRegister registra rápidamente una matriz de páginas lógicas del adaptador en una región de memoria existente que se inicializa para el registro rápido.
Una vez que se devuelve esta llamada, el token de región de memoria para el acceso remoto está disponible con la función NdkGetRemoteTokenFromMr (NDK_FN_GET_REMOTE_TOKEN_FROM_MR) de la mr.
NdkFastRegister no admite direcciones virtuales basadas en cero.
Si la marca NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED no está establecida en el miembro AdapterFlags de la estructura de NDK_ADAPTER_INFO , un consumidor de NDK debe pasar la marca de NDK_OP_FLAG_RDMA_READ_SINK cuando registra la memoria que podría usarse como búfer receptor para una solicitud de lectura de RDMA. Algunos proveedores de NDK pueden requerir la habilitación de derechos de acceso especiales en el búfer del receptor para una solicitud de lectura rdma. Esta marca permite a estos proveedores admitir las solicitudes de registro correctamente. Tenga en cuenta que los búferes se pueden registrar con varios fines, por lo que esta marca puede ir acompañada de otros.
Si un consumidor de NDK pasa la marca de NDK_OP_FLAG_RDMA_READ_SINK en un adaptador para el que se establece la marca NDK_ADAPTER_FLAG_RDMA_READ_SINK_NOT_REQUIRED en el miembro AdapterFlags de la estructura NDK_ADAPTER_INFO , el proveedor no es necesario para controlar la marca NDK_OP_FLAG_RDMA_READ_SINK y no debe producir un error en la solicitud debido a la presencia de esta marca.
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