WDM - Windows Driver Model


O WDM é a opção da Microsoft para a simplificação do desenvolvimento de driver, e fornece um modelo unificado de driver tanto para sistemas operacionais domésticos quanto empresariais, prevendo também a possibilidade de migração para sistemas futuros. Neste tópico, examinaremos o quanto o WDM se aproxima deste objetivo e a sua relevância para a manipulação de dados de áudio.


Visão Geral

O WDM funciona nas plataformas Windows 98 e Windows 2000, e um driver criado dentro das especificações WDM é compatível com todas as plataformas a partir do Windows 98SE. A maioria dos drivers são até mesmo compatíveis em código binário com outras plataformas. Isso implica que os fabricantes de hardware podem desenvolver um único driver para o modo kernel.

O WDM tem uma influência considerável nas aplicações de áudio. Ele oferece um componente de mixagem e resampleamento de áudio que roda no modo kernel, chamado de "KMixer", que facilita o acesso de várias aplicações ao mesmo hardware, e faz parecer que ilimitados fluxos de áudio possam ser mixados em tempo-real.

WDM - Copyright Microsoft
Devido à sua arquitetura em camadas, o WDM também oferece suporte automático às APIs MME e DirectX. Dessa forma, o fabricante só precisa implementar o driver WDM, e as outras camadas do driver do sistema darão o suporte a MME e DirectX.

Infelizmente, essa facilidade tem um preço. Devido à bufferização interna o KMixer adiciona cerca de 30 milisegundos de latência na reprodução do áudio (até o época em que foi escrito este artigo, a Microsoft não apresentou um meio de as aplicações ignorarem o KMixer).


A adoção do WDM

O WDM é relativamente novo para a maioria dos fabricantes de hardware. Ele é muito mais parecido com o modelo de driver do NT do que o modelo VxD do Windows 95/98. Isso quer dizer que os fabricantes de hardware que ainda não desenvolveram drivers para NT terão que aprender a nova tecnologia para dar suporte ao WDM.

Para se criar um driver para uma nova plataforma é necessário conhecer o DDK para aquela plataforma, independente de qual API o driver terá que suportar.

A novidade do WDM é uma boa oportunidade para a comunidade de áudio do Windows. É o momento em que muitos fabricantes de software e hardware estão observando seriamente pela primeira vez o WDM. Nos momentos em que todos estão "no mesmo ponto" é muito mais fácil de se trabalhar juntos para obter a melhor solução para todos.

Outra oportunidade trazida pelo WDM é a sua sinergia com o Windows 2000. Já foi dito que o Windows 2000 é o sistema mais indicado para áudio por causa de sua latência de interrupção mais baixa. O Windows 2000 também tem o benefício de suportar gerenciamento avançado de arquivos, como entrada/saída assíncrona no disco. Tendo o Windows 2000 um grande potencial para o áudio profissional, e o WDM é o modelo de driver para ele, será inevitável uma grande tendência em se adotar o WDM.


O WDM é a resposta?

A tabela abaixo mostra os requsiitos desejáveis para uma solução de áudio e a capacidade do WDM.

Meta de projeto

Suporte no WDM

Requer um único e bem definido componente em modo kernel?

Sim. Um componente em modo kernel provê suporte automático para MME e DirectX.

Funciona igualmente bem no Windows 98 e no Windows 2000?

Sim. Os drivers WDM são compatíveis em ambos os sistemas.

Fácil de implementar?

Sim. Os drivers WDM são projetados conforme um modelo simples de mini-port, onde o fabricante precisa apenas dar os detalhes que são específicos ao seu hardware. Esse modelo remove muito do excesso de código que geralmente existe nos drivers.

Livre da bagagem legal ou política?

Sim. O WDM é uma tecnologia padrão construída dentro do Windows.

Oferece latência < 5 milisegundos para todo o hardware e software?

Não. O KMixer adiciona 30 milisegundos de latência.



Resolvendo as limitações do WDM

Felizmente, o WDM tem uma previsão para extensões, e o WDM DDK oferece uma função chamada IoRegisterDeviceInterface através da qual qualquer driver em modo kernel pode "avisar" que possui um comportamento espeçífico. Uma aplicação em modo usuário pode então solicitar ao sistema os drivers registrados, e se comunicar diretamente com eles através da função em modo usuário DeviceIoControl, enviando controles de entrada/saída (IOCTLs).

Esse mecanismo sugere um meio de contornar o problema do KMixer no WDM. Se todos os fabricantes de hardware puderem concordar com um um conjunto comum de IOCTLs, e colocarem essas IOCTLs como interfaces padronizadas de dispositivos registrados WDM, então teremos uma solução ideal que todos os fabricantes de software poderão usar.

Um benefício ainda maior das IOCTLs é que os drivers as usam como base para seu suporte para APIs de modo usuário ASIO ou EASI. Assim, uma solução em modo kernel baseada em IOCTLs será compatível com as aplicações existentes que suportem ASIO ou EASI. Na verdade, qualquer fabricante de hardware que esteja considerando dar suporte a ASIO ou EASI no Windows 2000 terá de qualquer maneira que criar um mecanismo desses.

Em resumo, uma solução IOCTL oferece baixa latência de áudio através da placa para todos os aplicativos. Uma solução baseada em WDM com IOCTLs tem todas as propriedades mencionadas até agora:



O debate

NO NAMM Show de 2000, a Cakewalk promoveu o primeiro debate anual "Windows Professional Audio Roundtable". Dentre os participantes estavam representantes da NemeSys, Microsoft, Bitheadz, Emagic, IBM, IQS, Propellorheads, MIDI Manufacturers Association, Sonic Foundry, Sound Quest, Steinberg, Syntrillium, AMD, Creative/Emu, Crystal, Digigram, DAL, Echo, Gadget Labs, Guillemot, Lynx, Roland, Terratec e Yamaha.

Naquela ocasião, a Cakewalk propôs usar extensões IOCTL no WDM e conseguiu a ajuda da comunidade de hardware de áudio para se criar um projeto viável. A resposta inicial a essa proposta foi consideravelmente positiva, e a Cakewalk pretende ver este projeto frutificar e convida abertamente a todas a empresas a participar do desenvolvimento.


Figura 1 - Componentes do Driver WDM no Windows 2000




Esta figura mostra os componentes no estado atual da proliferação de APIs e drivers. Os componentes fornecidos pelos fabricantes de hardware estão desenhados comlinha dupla. É necessário um total de cinco componentes.

Observando de cima para baixo, vemos que um aplicativo (Host) tem a escolha de 4 APIs (application program interfaces) pelas quais ele tem que se comunicar com o hardware de áudio. Cada API é implementada dentro de seu próprio componente de modo usuário, tipicamente uma DLL de 32 bits.

Para se comunicar com os driver de nível inferior, cada DLL de modo usuário utilzia uma interface de controle de entrada/saída (IOCTL). No caso do MME e do DirectSound, essas IOCTLs são definidas pela interface WDM kernel-streaming. No caso do ASIO e do EASI, essas IOCTLs são deixadas abertas, o que significa que cada fabricante implementa sua própria versão.

A interface IOCTL fala com o driver de modo kernel. Se for desejada uma API MME, DirectSound, ASIO e EASI, então são necessários três elementos diferentes de modo kernel. Finalmente, a camada de abstração de hardware, conhecida como HAL (Hardware Abstraction Layer), controla estritamente todo o acesso ao hardware.


Figura 2 - Componentes simplificados do driver




Essa figura ilustra a redução de componentes que é possível com uma interface compartilhada de IOCTL para a mini-port do WDM. O fabricante de hardware precisa apenas fornecer um único componente com uma interface extendida IOCTL.

Como o componente único de driver é ainda um driver mini-port WDM, o aplicativo ainda terá acesso às APIs do Windows, como MME/wave e DirectSound, permitindo suporte para editores de áudio, games e aplicativos antigos.

Para ter baixa latência e alto desempenho, os aplicativos se comunicam diretamente com o driver adaptador, através da extensão aberta de IOCTL. Os aplicativos que precisem acessar o hardware com APIs ASIO ou EASI podem continuar a fazê-lo implementando uma fina camada "wrapper" sobre a interface IOCTL.


Texto original de Ron Kuper (Cakewalk Music)
Tradução de Miguel Ratton

Este artigo foi publicado no music-center.com.br em 2001


Copyright ©1996-2005 Miguel Ratton (www.music-center.com.br)