Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tópico descreve como converter um driver KMDF (Kernel-Mode Driver Framework) em um driver UMDF (User-Mode Driver Framework) versão 2 e vice-versa.
Conversão de driver usando o Visual Studio
Ao alternar de KMDF para UMDF, crie um projeto UMDF vazio no Visual Studio usando o modelo de projeto Driver de Modo de Utilizador, Vazio (UMDF V2). Ao alternar de UMDF para KMDF, crie um projeto KMDF vazio no Visual Studio usando o Kernel Mode Driver, Empty (KMDF) modelo de projeto.
Visual Studio cria um projeto de driver vazio com as configurações apropriadas, juntamente com um arquivo INF direcionado para a estrutura especificada.
Copie o código-fonte e os arquivos de cabeçalho do driver anterior para o novo projeto.
Atualize seus arquivos de cabeçalho. Para UMDF, inclua Windows.h. Para KMDF, inclua Ntddk.h. Wdf.h é comum a KMDF e UMDF, portanto, inclua-o em ambos os tipos de drivers.
Opcionalmente, use a macro do pré-processador _KERNEL_MODE para adicionar condicionalmente o cabeçalho do sistema correto:
#ifndef _KERNEL_MODE // This is a user-mode driver #include <windows.h> #else // This is a kernel-mode driver #include <ntddk.h> #define NTSTRSAFE_LIB #include <ntstrsafe.h> #endif // This is a common WDF header (for both KMDF and UMDF) #include <wdf.h>Atualize o código-fonte para remover ou compilar condicionalmente (usando a macro _KERNEL_MODE) qualquer funcionalidade que não seja suportada no modelo de driver de destino. Por exemplo:
Se o seu driver usa rastreamento de WPP, atualize a macro WPP_INIT_TRACING. Esta macro usa diferentes parâmetros no modo de usuário e no modo kernel.
WPP_INIT_TRACING ( DriverObject, RegistryPath ); // KMDF and UMDF 2 WPP_INIT_TRACING ( “<MyDriverNameString>” ); // UMDF 1Observe que para UMDF 2, você também precisa adicionar
WPP_MACRO_USE_KM_VERSION_FOR_UM=1, conforme descrito em Como habilitar o Inflight Trace Recorder no Visual Studio.Se você estiver convertendo um driver KMDF que chama rotinas WDM, como ExAllocatePoolWithTag, substitua-as pelos métodos WDF correspondentes, como WdfMemoryCreate. Da mesma forma, se você estiver convertendo um driver UMDF que chama funções de modo de usuário, substitua-as por rotinas equivalentes de modo kernel.
Alguns métodos são suportados apenas no KMDF, enquanto outros são suportados apenas no UMDF. Para obter uma lista de todos os métodos WDF (Windows Driver Frameworks) e sua aplicabilidade de estrutura, consulte Resumo de retornos de chamada e métodos WDF.