Compartir a través de


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

NDK_FN_BUILD_LAM

NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN

NDK_FN_READ

NDK_FN_RECEIVE

NDK_FN_SEND

NDK_FN_SRQ_RECEIVE

NDK_FN_WRITE

NDK_LOGICAL_ADDRESS_MAPPING