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.
A estrutura e o driver UMDF se comunicam através do DDI UMDF. O DDI UMDF é semelhante ao DDI KMDF, exceto que o DDI UMDF é baseado em COM. Portanto, os programadores de drivers familiarizados com KMDF entenderão UMDF.
Para cada tipo de objeto de estrutura, o UMDF define uma interface através da qual manipular instâncias do objeto. Cada interface suporta métodos e propriedades. Os métodos definem ações que podem ser executadas em nome do objeto e do conjunto de propriedades e recuperam as características do objeto. Algumas interfaces são implementadas pela estrutura e outras são implementadas pelo driver. As interfaces que são expostas por um objeto de framework são na forma IWDF<object>, enquanto as interfaces de retorno de chamada de eventos expostas por um driver são na forma I<object><action>, onde <object> representa uma fila, solicitação ou assim por diante, e <action> indica o que a interface faz. Os métodos das interfaces de retorno de chamada começam com "On".
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 eventos, 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 seguintes métodos de objeto de estrutura e pode passar um ponteiro para a interface IUnknown associada a todas as interfaces para as funções de retorno de chamada que o driver suporta.
Como exemplo de comunicação entre driver e 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 informações de status 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 subsequentemente chamados pela estrutura quando um aplicativo envia solicitações de leitura e gravação.
A estrutura fornece qualquer sincronização necessária entre os métodos de retorno de chamada do driver. Por padrão, a estrutura sincroniza 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 de objeto do dispositivo ou abaixo dele. Um driver pode substituir esse padrão sem solicitar sincronização. Para obter mais informações, consulte Especificando um modo de sincronização de retorno de chamada.