Compartilhar via


Streaming Minidrivers

Nota Esta seção detalha o driver de classe Stream.sys desatualizado. Com o lançamento do Microsoft Windows XP, a Microsoft dá suporte aStream.sys somente para drivers existentes. A partir desta versão, a Microsoft recomenda que os fornecedores considerem desenvolver novos drivers multimídia de vídeo ou áudio/vídeo usando o modelo de driver de classe AVStream. Confira os detalhes na Visão geral do AVStream. Se estiver desenvolvendo um driver somente de áudio, você deverá escrever um driver de miniporto de áudio no driver de classe Portcls.sys fornecido pela Microsoft. Para obter detalhes, consulte Drivers de miniporta de áudio.

Os fornecedores podem dar suporte a dispositivos somente vídeo ou áudio/vídeo fornecendo um minidriver que é executado no driver de classe Stream.sys fornecido pela Microsoft. Nesta documentação, os minidrivers fornecidos pelo fornecedor em Stream.sys são chamados de minidrivers de streaming.

Por exemplo, dispositivos de captura de vídeo e leitores de DVD podem ter suporte com minidrivers de streaming. Para obter informações específicas da tecnologia, consulte Dispositivos de captura de vídeo e minidrivers de decodificador de DVD.

Os minidrivers de streaming dão suporte à semântica de streaming de kernel. Para usar este documento, os desenvolvedores de driver devem estar familiarizados com os conceitos básicos de streaming de kernel, conforme explicado no Kernel Streaming.

O driver de classe de fluxo foi projetado para tornar a escrita de drivers de hardware para dispositivos de streaming mais simples manipulando muitos dos aspectos da interação com o sistema operacional.

  • O minidriver pode permitir que o driver de classe de fluxo manipule a sincronização em seu nome. Por exemplo, o driver de classe de fluxo pode, opcionalmente, serializar solicitações de E/S para o minidriver. Permitir que o driver de classe manipule a sincronização torna o minidriver multiprocessador seguro, mas não reentrante. Isso é adequado para hardware de baixo a médio nível.

  • O driver de classe sincroniza automaticamente as operações de arquivo. Por exemplo, a abertura de um fluxo e de um dispositivo é serializada corretamente sem o minidriver usando mutexes, semáforos ou eventos.

  • O driver de classe abstrai a implementação da semântica de streaming de kernel do minidriver.

  • O driver de classe lida com toda a interação com o gerenciador PnP. Por exemplo:

    • O driver de classe cria o objeto de dispositivo funcional em nome do minidriver.
    • O driver de classe gerencia a configuração de recursos (como traduzir endereços de porta, traduzir e mapear intervalos de memória e conectar interrupções).
    • O driver de classe manipula IRPs PnP, como IRP_MN_START_DEVICE ou IRP_MN_STOP_DEVICE.
  • Todo o gerenciamento de buffer de baixo nível é tratado pelo driver de classe:

    • Alocando o objeto do adaptador DMA, se necessário.
    • Mapeando buffers e criando listas de dispersão/coleta para AMD.
    • Bloqueio e liberação de buffers corretamente para DMA e PIO.
  • Toda a validação de parâmetro IOCTL é executada pelo driver de classe.

  • Todas as solicitações são cronometrada pelo driver de classe com um temporizador watchdog.

  • O minidriver não cria um objeto de dispositivo, mas compartilha o objeto de dispositivo do driver de classe conforme necessário. Isso salva os recursos do sistema.

  • Somente um objeto de dispositivo é criado por adaptador. Vários subdispositivos ( chamados de fluxos) compatíveis com o adaptador são representados por pinos de streaming de kernel.