MINIPORT_PROCESS_SG_LIST função de retorno de chamada (ndis.h)
Um driver de miniporto mestre 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 miniporto devem ignorar esse parâmetro.
[in] Reserved
Os drivers de miniporto 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 o driver especificado 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.
Valor de retorno
Nenhum
Observações
Os drivers de miniporto 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-sucedida. 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 de 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 após o retorno do NDIS de NdisMAllocateNetBufferSGList. Portanto, os gravadores de driver não devem assumir que a chamada é feita no contexto de NdisMAllocateNetBufferSGList.
Chamadas NDIS MiniportProcessSGList no IRQL = DISPATCH_LEVEL.
exemplos de
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 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 gravar drivers para o sistema operacional Windows.Por exemplo, para definir uma função MiniportProcessSGList denominada "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 |
---|---|
de cliente com suporte mínimo | Com suporte no NDIS 6.0 e posterior. |
da Plataforma de Destino | Windows |
cabeçalho | ndis.h (inclua Ndis.h) |
IRQL | DISPATCH_LEVEL |