Partilhar via


Introdução ao UMDF

Esta seção descreve o User-Mode Driver Framework (UMDF) e detalha as diferenças entre as versões 1 e 2 do UMDF. Ele também fornece informações de arquitetura de alto nível sobre UMDF. Use esta seção para determinar se um driver UMDF é a escolha certa para suas necessidades e para decidir qual versão UMDF usar.

Windows Driver Frameworks (WDF) contém UMDF, uma estrutura para a criação de drivers de modo de usuário. Como o KMDF (Kernel-Mode Driver Framework), o UMDF fornece uma camada de abstração do WDM, manipulando grande parte da funcionalidade Plug and Play (PnP) e de gerenciamento de energia e permitindo que o driver opte por funcionalidades específicas e manipulação de eventos.

No Windows 8.1 em diante, existem duas versões principais do UMDF, versões 1 e 2. UMDF versão 1.11 (um ponto onze) é a versão mais recente do UMDF versão 1, e é a versão final antes do advento do UMDF 2. Para obter uma tabela mostrando as informações da versão completa e a relevância do sistema operacional, consulte Histórico de versões do UMDF.

Escrever um driver usando UMDF versão 1 requer o uso do modelo de programação COM para escrever código C++. Enquanto o UMDF versão 2 é baseado no mesmo modelo de programação de driver conceitual do KMDF, o UMDF 1 implementa o modelo com diferentes componentes, interfaces de driver de dispositivo (DDIs) e estruturas de dados. 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 e Windows 11.

Por outro lado, a partir da versão 2 do UMDF, você pode escrever um driver UMDF na linguagem de programação C que chama muitos dos métodos disponíveis para drivers KMDF. Todas as interfaces compartilhadas entre UMDF versão 2 e KMDF têm os mesmos nomes, parâmetros e definições de estrutura. Se o driver usa apenas a funcionalidade compartilhada ou usa macros condicionais em torno de chamadas que são suportadas apenas em uma estrutura, você pode escrever um único driver que pode ser compilado com UMDF ou KMDF. Para obter mais informações, consulte Como gerar um driver UMDF a partir de um driver KMDF.

Embora haja uma semelhança significativa entre UMDF 2 e KMDF, ainda há uma pequena quantidade de funcionalidade que está disponível apenas em uma estrutura ou outra. Para obter detalhes, consulte Comparando a funcionalidade UMDF 2 com o KMDF. Para obter uma lista de todos os callbacks e métodos de UMDF 2 e KMDF e a quais frameworks eles se aplicam, consulte Resumo de callbacks e métodos WDF. Em alguns casos, um membro da estrutura ou parâmetro de um método aplica-se apenas a uma estrutura ou outra. A documentação descreve essas diferenças nas páginas de referência correspondentes.