Itens de trabalho de E/S de NDIS

Os drivers podem enfileirar funções de retorno de chamada de item de trabalho de E/S para execução posterior. O NDIS chama a função de retorno de chamada especificada pelo driver em IRQL = PASSIVE_LEVEL. Isso melhora o desempenho do sistema, permitindo que a função atual retorne imediatamente e o driver faça o trabalho mais tarde em um IRQL inferior.

O NDIS 6.0 e posteriores fornecem funções de wrapper para as rotinas de item de trabalho de E/S do kernel IoAllocateWorkItem, IoFreeWorkItem e IoQueueWorkItem. Em vez da estrutura de IO_WORKITEM privada, o NDIS usa a estrutura de NDIS_IO_WORKITEM privada.

Os drivers NDIS 6.0 chamam a função NdisAllocateIoWorkItem para alocar um item de trabalho. Os drivers de miniporto NDIS passam por NdisAllocateIoWorkItem o identificador do adaptador que o NDIS passou para a função MiniportInitializeEx . NdisAllocateIoWorkItem obtém o objeto de dispositivo associado ao identificador e passa o objeto de dispositivo para a rotina IoAllocateWorkItem . Os drivers de filtro passam um identificador de filtro.

Nota Os drivers de protocolo não podem usar NdisAllocateIoWorkItem porque o NDIS não associa drivers de protocolo a objetos de dispositivo.

Os drivers NDIS chamam a função NdisQueueIoWorkItem para enfileirar itens de trabalho. Os itens de trabalho do NDIS usam o tipo de fila CriticalWorkQueue .

Os drivers NDIS devem chamar a função NdisFreeIoWorkItem para liberar os recursos associados a um item de trabalho que NdisAllocateIoWorkItem alocou.

Threads de Trabalho do Sistema