MINIPORT_PROCESS_SG_LIST função de retorno de chamada (ndis.h)
Um driver de miniporta master de barramento fornece uma função MiniportProcessSGList para processar listas de dispersão/coleta de dados de rede.
Sintaxe
MINIPORT_PROCESS_SG_LIST MiniportProcessSgList;
void MiniportProcessSgList(
[in] PDEVICE_OBJECT pDO,
[in] PVOID Reserved,
[in] PSCATTER_GATHER_LIST pSGL,
[in] PVOID Context
)
{...}
Parâmetros
[in] pDO
Os drivers de miniport devem ignorar esse parâmetro.
[in] Reserved
Os drivers de miniport devem ignorar esse parâmetro.
[in] pSGL
Um ponteiro para um buffer de lista de dispersão/coleta. Isso não é necessariamente o mesmo buffer que aquele que o driver especificou na chamada para o Função NdisMAllocateNetBufferSGList
[in] Context
Um ponteiro para uma área de contexto que o driver de miniporto criou antes de chamar NdisMAllocateNetBufferSGList.
Retornar valor
Nenhum
Comentários
Miniportores chamam o Função NdisMRegisterScatterGatherDma para registrar uma função MiniportProcessSGList . Quando um driver de miniporto chama NdisMAllocateNetBufferSGList para criar uma lista de dispersão/coleta, o NDIS chama HAL para criar a lista.
O NDIS chamará a função MiniportProcessSGList do driver de miniport se NdisMAllocateNetBufferSGList for bem-sucedido. No entanto, um retorno de êxito dessa função não garante que o retorno de chamada já tenha sido invocado; ele pode ser invocado de forma assíncrona.
Quando o NDIS chama MiniportProcessSGList, o driver pode enviar a estrutura NET_BUFFER para o hardware. MiniportProcessSGList envia os endereços físicos da lista de dispersão/coleta para o DMA da NIC e emite um comando de envio para a NIC.
HAL pode chamar MiniportProcessSGList antes ou depois que o NDIS retorna de NdisMAllocateNetBufferSGList. Portanto, os gravadores de driver não devem assumir que a chamada é feita dentro do contexto de NdisMAllocateNetBufferSGList.
O NDIS chama MiniportProcessSGList em IRQL = DISPATCH_LEVEL.
Exemplos
Para definir uma função MiniportProcessSGList , primeiro você deve fornecer uma declaração de função que identifique o tipo de função que você está definindo. O Windows fornece um conjunto de tipos de função para drivers. Declarar uma função usando os tipos de função ajuda a Análise de Código para Drivers, SDV ( Verificador de Driver Estático ) e outras ferramentas de verificação a encontrar erros e é um requisito para escrever drivers para o sistema operacional Windows.Por exemplo, para definir uma função MiniportProcessSGList chamada "MyProcessSGList", use o tipo MINIPORT_PROCESS_SG_LIST conforme mostrado neste exemplo de código:
MINIPORT_PROCESS_SG_LIST MyProcessSGList;
Em seguida, implemente sua função da seguinte maneira:
_Use_decl_annotations_
VOID
MyProcessSGList(
PDEVICE_OBJECT pDO,
PVOID Reserved,
PSCATTER_GATHER_LIST pSGL,
PVOID Context
)
{...}
O tipo de função MINIPORT_PROCESS_SG_LIST é definido no arquivo de cabeçalho Ndis.h. Para identificar erros com mais precisão ao executar as ferramentas de análise de código, adicione a anotação Use_decl_annotations à sua definição de função. A anotação Use_decl_annotations garante que as anotações aplicadas ao tipo de função MINIPORT_PROCESS_SG_LIST no arquivo de cabeçalho sejam usadas. Para obter mais informações sobre os requisitos para declarações de função, consulte Declarando funções usando tipos de função de função para drivers NDIS.
Para obter informações sobre Use_decl_annotations, consulte Anotando o comportamento da função.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Com suporte no NDIS 6.0 e posterior. |
Plataforma de Destino | Windows |
Cabeçalho | ndis.h (inclua Ndis.h) |
IRQL | DISPATCH_LEVEL |