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

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