Windows 8: Driver de Vídeo

No Windows 8, o driver de vídeo é composto por dois módulos: user-mode driver (UMD) e um miniport kernel mode driver (KMD) .

O diagrama abaixo ilustra a arquitetura de comunicação entre os modos usuário e kernel.

clip_image001_thumb[2]

Esse modelo é conhecido como Windows Display Driver Model (WDDM) e está disponível desde o Windows Vista. A partir do Windows 8, ele se tornou obrigatório para todos os drivers de vídeo.

Windows Display Driver Model (WDDM) Architecture
https://msdn.microsoft.com/en-us/library/windows/hardware/ff570589(v=vs.85).aspx

O driver DXGKRNL.SYS corresponde ao DirectX modo kernel, que engloba grande parte das funções presentes em todas as placas gráficas. Rotinas de baixo nível específicas por hardware são implementadas em um miniport driver fornecido pelo fabricante. Dado que a maior parte das funcionlidades estão implementadas no runtime do DirectX ou são delegadas para o user-mode driver, a tendência é que os miniport sejam menores e mais simples. Portanto, o sistema se torna mais estável e seguro.

Por questão de estabilidade e segurança, a Kernel roda em um espaço dedicado e protegido das aplicações. É aqui que rodam os drivers de sistema (arquivos .SYS) e se encontram os principais componentes do Sistema Operacional: gerenciador de thread, memória, segurança, etc. Qualquer falha ou erro não-tratado causa a interrupção total do sistema – o famoso Blue Screen.

Os drivers em modo usuário não são novos e já estavam presentes para as impressoras e os dispositivos USB. Nos drivers de vídeo, o funcionamento é ligeiramente diferente, pois a DLL é carregada junto com o aplicativo. O objetivo é executar as tarefas mais complexas em modo usuário, ou seja, as falhas não causam instabilidade na kernel. Na realidade, o sistema operacional ganha a capacidade de se recuperar e reiniciar o aplicativo se necessário. O user-mode display driver fornece ao aplicativo as estruturas necessárias para a comunicação com o DXGKRNL.SYS.