Introdução com UMDF

Esta seção descreve 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.

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

Em Windows 8.1 em diante, há duas versões principais do UMDF, as 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 informações de versão completas e relevância do sistema operacional, consulte Histórico de versão do UMDF.

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

Por outro lado, a partir do UMDF versão 2, 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ó têm suporte 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 de um driver KMDF.

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