Compartilhar via


NDK_SGE estrutura (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 de 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 o MemoryRegionToken.

Observações

A estrutura NDK_SGE especifica os buffers locais para enviar, receber, ler e gravar solicitações de trabalho.

Quando o membro MemoryRegionToken é definido como o token retornado pelo NdkGetPrivilegedMemoryRegionRegionToken (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 AdapterPageArray membro 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 do 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 esteja dentro do intervalo de endereço virtual de uma região de memória registrada anteriormente.

Quando uma estrutura de 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 for especificado, o VirtualAddress membro de qualquer estrutura de NDK_SGE que seja 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 ter a garantia de residir 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 especificado quando o par de filas (QP) foi criado.

Requisitos

Requisito Valor
de cliente com suporte mínimo Nenhum com suporte, com suporte no NDIS 6.30 e posterior.
servidor com suporte mínimo Windows Server 2012
cabeçalho ndkpi.h (inclua Ndkpi.h)

Consulte 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