Função NdisScheduleWorkItem (ndis.h)
Observação NDIS 5. x foi preterido e substituído pelo NDIS 6. x. Para obter um novo desenvolvimento de driver NDIS, consulte Drivers de Rede começando com o Windows Vista. Para obter informações sobre como portar o NDIS 5. x drivers para o NDIS 6. x, consulte portabilidade de drivers NDIS 5.x para NDIS 6.0.
NdisScheduleWorkItem insere um determinado item de trabalho em uma fila da qual um thread de trabalho do sistema remove o item e dá controle à função de retorno de chamada que o driver forneceu anteriormente para NdisInitializeWorkItem.
Sintaxe
NDIS_STATUS NdisScheduleWorkItem(
[in] __drv_aliasesMem PNDIS_WORK_ITEM WorkItem
);
Parâmetros
[in] WorkItem
Ponteiro para o item de trabalho que foi configurado por uma chamada anterior para NdisInitializeWorkItem.
Valor de retorno
NdisScheduleWorkItem sempre é bem-sucedido e, portanto, sempre retorna NDIS_STATUS_SUCCESS.
Observações
Uma chamada para NdisScheduleWorkItem permite que um driver NDIS adie alguma operação determinada pelo driver que pode ou deve ser feita em um IRQL menor do que o IRQL gerado no momento em execução para sua função de retorno de chamada de thread de trabalho.
O retorno de chamada do driver é executado dentro de um contexto de thread do sistema em IRQL = PASSIVE_LEVEL posteriormente. Essa função fornecida pelo chamador é responsável por recuperar o armazenamento alocado pelo driver para WorkItem. Por exemplo, se o driver chamado NdisAllocateMemoryWithTag fornecer uma área de contexto para NdisInitializeWorkItem, sua função de retorno de chamada deverá fazer a chamada recíproca para NdisFreeMemory com WorkItem antes de retornar o controle.
Um driver não deve esperar que sua rotina de retorno de chamada conclua uma operação se ele já estiver segurando um objeto de sincronização e tentar adquirir outro. Por exemplo, um driver NDIS deve liberar todos os bloqueios de rotação atualmente mantidos e assim por diante antes de chamar NdisScheduleWorkItem. Um driver de protocolo NDIS de nível mais alto também deve liberar semáforos, mutexes, variáveis de recurso e assim por diante, antes de chamar NdisScheduleWorkItem. Liberar todos os recursos de sincronização antes de enfileirar uma operação síncrona de thread de trabalho impede deadlocks.
Um driver de miniporto serializado nunca deve tentar enfileirar uma rotina de retorno de chamada de thread de trabalho, pois não há como esse driver sincronizar o acesso às suas áreas de contexto nic com um retorno de chamada de thread de trabalho. Consequentemente, um driver NDIS serializado não pode compartilhar nada em sua área de contexto por adaptador com uma função de retorno de chamada de thread de trabalho sem causar falhas intermitentes no sistema.
- Plataforma de destino: Universal
- Versão: Não há suporte para drivers NDIS 6.0 no Windows Vista. Use NdisQueueIoWorkItem. Com suporte para drivers NDIS 5.1 no Windows Vista e no Windows XP.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | ndis.h (inclua Ndis.h) |
IRQL | IRQL <= DISPATCH_LEVEL |
Consulte também
- NdisAllocateMemoryWithTag
- NdisFreeMemory
- NdisInitializeWorkItem