estrutura NDK_SGE (ndkpi.h)
A estrutura NDK_SGE especifica os buffers locais para solicitações de trabalho do NDK.
Sintaxe
typedef struct _NDK_SGE {
union {
PVOID VirtualAddress;
NDK_LOGICAL_ADDRESS LogicalAddress;
};
ULONG Length;
UINT32 MemoryRegionToken;
} NDK_SGE;
Membros
VirtualAddress
Um endereço virtual.
LogicalAddress
Um endereço lógico.
Length
O comprimento, em bytes, do buffer.
MemoryRegionToken
Um token de região de memória. Quando MemoryRegionToken é definido como o token retornado por NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN), o NDK_SGE deve conter um LogicalAddress. Quando MemoryRegionToken não é igual ao token retornado por NdkGetPrivilegedMemoryRegionToken, a estrutura NDK_SGE deve conter um VirtualAddress. Quando uma estrutura NDK_SGE é usada em uma solicitação de trabalho com o sinalizador NDK_OP_FLAG_INLINE , MemoryRegionToken pode ser inválido. Consulte a seção comentários para obter mais informações sobre MemoryRegionToken.
Comentários
A estrutura NDK_SGE especifica os buffers locais para solicitações de trabalho de envio, recebimento, leitura e gravação.
Quando o membro MemoryRegionToken é definido como o token retornado por NdkGetPrivilegedMemoryRegionToken (NDK_FN_GET_PRIVILEGED_MEMORY_REGION_TOKEN), o NDK_SGE deve conter um endereço lógico retornado pela função NdkBuildLam (NDK_FN_BUILD_LAM) com a estrutura NDK_LOGICAL_ADDRESS_MAPPING . Observe que as entradas consecutivas no membro AdapterPageArray de um NDK_LOGICAL_ADDRESS_MAPPING não são necessariamente páginas contíguas no espaço de endereço lógico do adaptador. Portanto, um consumidor de NDK pode usar vários SGEs para cobrir todas as páginas em uma matriz de páginas do adaptador.
Quando o token no membro MemoryRegionToken não é igual ao token retornado por NdkGetPrivilegedMemoryRegionToken, a estrutura NDK_SGE deve conter um endereço virtual que se enquadra no intervalo de endereço virtual de uma região de memória registrada anteriormente.
Quando uma estrutura NDK_SGE é usada em uma solicitação de trabalho com o sinalizador NDK_OP_FLAG_INLINE , o token em MemoryRegionToken pode ser inválido, portanto, ele deve ser ignorado pelo provedor NDK. Quando o sinalizador NDK_OP_FLAG_INLINE é especificado, o membro VirtualAddress de qualquer estrutura NDK_SGE que é passada para a função de solicitação de trabalho deve apontar para um buffer que pode ser acessado pelo provedor NDK em um IRQL menor ou igual a DISPATCH_LEVEL, ou seja, o buffer deve ser garantido residente na memória física até que a função de solicitação de trabalho retorne. O tamanho total dos dados embutidos que são passados para o provedor em uma única chamada não deve exceder o valor no parâmetro InlineDataSize que foi especificado quando o par de filas (QP) foi criado.
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 |
Cabeçalho | ndkpi.h (inclua Ndkpi.h) |
Confira também
Requisitos de tempo de vida do objeto NDKPI