Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Advertência
UMDF 2 é a versão mais recente do UMDF e substitui UMDF 1. Todos os novos drivers UMDF devem ser escritos usando UMDF 2. Nenhum novo recurso está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar UMDF 2.
Os exemplos de UMDF 1 arquivados podem ser encontrados na Windows 11, versão 22H2 - Atualização de Amostras de Driver de maio de 2022.
Para obter mais informações, consulte Introdução ao UMDF.
Um item de trabalho é uma tarefa que um driver executa num OnWorkItem função de callback de evento. Essas funções são executadas de forma assíncrona.
Os drivers UMDF geralmente usam itens de trabalho se um OnInterruptIsr deve executar processamento adicional sem atrasar a execução da solicitação de serviço de interrupção (ISR) porque a linha de interrupção pode ser compartilhada por vários dispositivos.
Normalmente, a função de retorno de chamada de OnInterruptIsr de um driver cria um objeto de item de trabalho e o adiciona à fila de itens de trabalho do sistema. Posteriormente, um thread da pool de threads desfaz a fila do objeto e chama a função de retorno de chamada OnWorkItem do item de trabalho .
Configurando um item de trabalho
Para configurar um item de trabalho, o driver deve:
Crie o item de trabalho.
O seu driver chama IWDFDevice3::CreateWorkItem para criar um objeto de item de trabalho e identificar uma função de retorno de chamada OnWorkItem que processará o item de trabalho.
Armazene informações sobre o item de trabalho.
Normalmente, os drivers usam a memória de contexto do objeto de item de trabalho para armazenar informações sobre a tarefa que a função de retorno de chamada OnWorkItem deve executar. Quando a função de callback OnWorkItem é chamada, pode recuperar as informações acessando esta memória de contexto. Para obter informações sobre como alocar e acessar a memória de contexto, consulteIWDFObject::AssignContext.
Adicione o item de trabalho à fila de itens de trabalho do sistema.
O controlador chama IWDFWorkItem::Enqueue, que adiciona o item de trabalho do controlador à fila de itens de trabalho.
Quando o controlador chama IWDFDevice3::CreateWorkItem, pode, opcionalmente, fornecer um objeto superior (por exemplo, um objeto de dispositivo ou um objeto de fila). Quando o sistema exclui esse objeto, ele também exclui todos os itens de trabalho existentes associados ao objeto.
Usando a função de retorno de chamada WorkItem
Depois que o item de trabalho tiver sido adicionado à fila de itens de trabalho, ele permanecerá na fila até que um thread de trabalho do sistema fique disponível. O thread de trabalho do sistema remove o item de trabalho da fila e, em seguida, chama a função de retorno de chamada OnWorkItem do driver, passando o objeto de item de trabalho como entrada.
Normalmente, a função de retorno de chamada OnWorkItem executa as seguintes etapas:
- Obtém informações fornecidas pelo driver sobre o item de trabalho acessando a memória de contexto do objeto de item de trabalho.
- Executa a tarefa que você especificou. Se necessário, a função de retorno de chamada pode chamar IWDFWorkItem::GetParentObject para determinar o objeto pai do item de trabalho.
- Se o driver colocar o item de trabalho na fila novamente, indica que o identificador para o item de trabalho agora está disponível para reutilização.
Alguns drivers podem precisar chamar IWDFWorkItem::Flush para liberar seus itens de trabalho da fila de itens de trabalho. Se um driver chamar o método Flush, o método não retornará até que um thread tenha removido o item de trabalho especificado da fila de itens de trabalho e chamado o callback OnWorkItem do driver, e que o callback OnWorkItem tenha retornado após processar o item de trabalho.