Por que não há modelo de driver de modo kernel WDM no Windows Driver Kit?
-
21-12-2019 - |
Pergunta
Me deparei com drivers de modo kernel com muito pouca experiência.Aqui está o que estou tentando fazer:
- Tenha um aplicativo em modo de usuário que carregue o driver.
- Faça com que o aplicativo em modo de usuário escreva nele para enviar uma instrução.
- Faça com que o driver envie a instrução RDMSR para o chip Intel.
- Retorne os resultados para o aplicativo de modo de usuário.
Eu li Este artigo que descreve as diferentes maneiras pelas quais você pode realizar esse comportamento (E/S em buffer, E/S direta ou Nenhuma).
Meu problema é o seguinte... o artigo tem um código que representa a forma como você estruturaria um WDM driver, e eu esperava poder criar um modelo de projeto WDM KMDF usando o Windows Driver Kit, mas quando baixei o Windows Driver Kit (WDK), o único modelo de driver KMDF era para um WDF motorista. O MSDN tem um artigo que descreve as diferenças entre os dois.Isso é meio estranho para mim.Eu esperava obter um modelo pronto para uso que pudesse modificar para funcionar como no artigo que vinculei, mas não o vejo.Por que não há modelo para um driver WDM KMDF?
Apenas uma observação adicional: você pode facilmente saber o tipo de driver com base no maneira como ele cria o dispositivo (IoCreateDevice implica WDM, enquanto WdfDeviceCreate implica WDF).
Solução
Há muitas inconsistências na questão.Em primeiro lugar, KMDF
é um subconjunto de WDF
(e é o único relevante WDF
parte quando se fala sobre drivers de kernel), portanto não há contradição entre os dois.Todo driver de kernel é essencialmente um WDM
motorista. KMDF
é um quadro no WDM
e KMDF
os drivers são normalmente chamados, bem, KMDF
motoristas, sem falar WDM
. WDM
driver geralmente se refere ao driver que não usa nenhuma estrutura adicional, como KMDF
.Segundo, WDK
integra-se ao VS2012/2013 e você deve tê-lo instalado além do WDK para obter os modelos.Terceiro, WDM
modelo aparece na lista.Se você não tiver, sugiro reinstalar o WDK
e VS
.