Modelo de programação DDI umdf
Aviso
O UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados 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. Drivers universais do Windows devem usar UMDF 2.
Os exemplos umdf 1 arquivados podem ser encontrados no Windows 11, versão 22H2 – Atualização de exemplos de driver de maio de 2022.
Para obter mais informações, consulte Introdução com UMDF.
A estrutura e o driver UMDF se comunicam por meio da DDI umDF. A DDI UMDF é semelhante à DDI KMDF, exceto que a DDI UMDF é baseada em COM. Portanto, os gravadores de driver familiarizados com o KMDF entenderão o UMDF.
Para cada tipo de objeto de estrutura, o UMDF define uma interface por meio da qual manipular instâncias do objeto. Cada interface dá suporte a métodos e propriedades. Os métodos definem ações que podem ser executadas em nome do objeto e das propriedades definidas e recuperam as características do objeto. Algumas interfaces são implementadas pela estrutura e outras são implementadas pelo driver. As interfaces expostas por um objeto de estrutura são do objeto IWDF<de formulário, enquanto as interfaces de retorno de chamada de evento expostas por um driver são da ação> de objeto><I<do formulário, em <que o objeto> representa uma fila, uma solicitação e assim por diante e <a ação> indica o que a interface faz.> Os métodos das interfaces de retorno de chamada começam com "Ativado".
O driver UMDF se comunica com os objetos da estrutura por meio de seus métodos e propriedades. A estrutura se comunica com o driver por meio de notificações de evento, que são funções de retorno de chamada que a estrutura pode chamar para notificar o driver sobre eventos específicos. Para registrar funções de retorno de chamada, o driver pode chamar, por exemplo, os métodos de objeto de estrutura a seguir e pode passar um ponteiro para a interface IUnknown associada a todas as interfaces para as funções de retorno de chamada compatíveis com o driver.
Como exemplo de comunicação de driver para estrutura, considere o objeto de fila de E/S padrão de um dispositivo. Um driver pode chamar métodos, como IWDFIoQueue::GetState, para recuperar status informações sobre a fila de E/S ou IWDFIoQueue::RetrieveNextRequest para recuperar uma solicitação da fila de E/S. Um driver também pode solicitar notificações na fila de E/S chamando o método IWDFDevice::CreateIoQueue para registrar interfaces de retorno de chamada, como IQueueCallbackRead e IQueueCallbackWrite. Os métodos dessas interfaces são chamados posteriormente pela estrutura quando um aplicativo envia solicitações de leitura e gravação.
A estrutura fornece qualquer sincronização necessária entre métodos de retorno de chamada de driver. Por padrão, a estrutura é sincronizada no nível do objeto do dispositivo; ou seja, a estrutura não chama simultaneamente os métodos de retorno de chamada de evento no nível do objeto do dispositivo ou abaixo dele. Um driver pode substituir esse padrão solicitando nenhuma sincronização. Para obter mais informações, consulte Especificando um modo de sincronização de retorno de chamada.