estructura NDK_SGE (ndkpi.h)
La estructura NDK_SGE especifica los búferes locales para las solicitudes de trabajo de NDK.
Sintaxis
typedef struct _NDK_SGE {
union {
PVOID VirtualAddress;
NDK_LOGICAL_ADDRESS LogicalAddress;
};
ULONG Length;
UINT32 MemoryRegionToken;
} NDK_SGE;
Miembros
VirtualAddress
Una dirección virtual.
LogicalAddress
Una dirección lógica.
Length
Longitud, en bytes, del búfer.
MemoryRegionToken
Token de región de memoria. Cuando MemoryRegionToken se establece en el token devuelto por NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN), el NDK_SGE debe contener logicalAddress. Cuando MemoryRegionToken no es igual al token devuelto por NdkGetPrivilegedMemoryRegionToken, la estructura de NDK_SGE debe contener una VirtualAddress. Cuando se usa una estructura de NDK_SGE en una solicitud de trabajo con la marca NDK_OP_FLAG_INLINE , MemoryRegionToken podría no ser válido. Consulte la sección comentarios para obtener más información sobre MemoryRegionToken.
Comentarios
La estructura NDK_SGE especifica los búferes locales para las solicitudes de trabajo de envío, recepción, lectura y escritura.
Cuando el miembro MemoryRegionToken se establece en el token devuelto por NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN), el NDK_SGE debe contener una dirección lógica devuelta por la función NdkBuildLam (NDK_FN_BUILD_LAM) con la estructura NDK_LOGICAL_ADDRESS_MAPPING . Tenga en cuenta que las entradas consecutivas del miembro AdapterPageArray de un NDK_LOGICAL_ADDRESS_MAPPING no son necesariamente páginas contiguas en el espacio de direcciones lógicas del adaptador. Por lo tanto, un consumidor de NDK podría usar varias SGE para cubrir todas las páginas de una matriz de páginas del adaptador.
Cuando el token del miembro MemoryRegionToken no es igual al token devuelto por NdkGetPrivilegedMemoryRegionToken, la estructura NDK_SGE debe contener una dirección virtual que se encuentre dentro del intervalo de direcciones virtuales de una región de memoria registrada anteriormente.
Cuando se usa una estructura de NDK_SGE en una solicitud de trabajo con la marca NDK_OP_FLAG_INLINE , el token de MemoryRegionToken podría no ser válido, por lo que el proveedor de NDK debe omitirlo. Cuando se especifica la marca NDK_OP_FLAG_INLINE , el miembro VirtualAddress de cualquier estructura de NDK_SGE que se pasa a la función de solicitud de trabajo debe apuntar a un búfer al que pueda tener acceso el proveedor de NDK en un IRQL menor o igual que DISPATCH_LEVEL, es decir, se debe garantizar que el búfer resida en memoria física hasta que la función de solicitud de trabajo devuelva. El tamaño total de los datos insertados que se pasan al proveedor en una sola llamada no debe superar el valor del parámetro InlineDataSize que se especificó cuando se creó el par de colas (QP).
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Ninguno compatible, compatible con NDIS 6.30 y versiones posteriores. |
Servidor mínimo compatible | Windows Server 2012 |
Encabezado | ndkpi.h (incluya Ndkpi.h) |
Consulte también
Requisitos de duración del objeto NDKPI