Partilhar via


Streaming Minidrivers

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

Os fornecedores podem oferecer suporte somente a dispositivos de vídeo ou áudio/vídeo fornecendo um minidriver que é executado sob o 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 ser suportados 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 suportam a semântica de streaming do kernel. Para usar este documento, os desenvolvedores de drivers devem estar familiarizados com os conceitos básicos de streaming do kernel, conforme explicado no Kernel Streaming.

O driver de classe de transmissão é projetado para simplificar a criação de drivers de hardware para dispositivos de streaming, ao lidar com muitos dos aspetos da interação com o sistema operativo.

  • O minidriver pode permitir que o driver de classe de streaming manipule a sincronização em nome dele. 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 cuide da sincronização torna o minidriver seguro para multiprocessadores, mas não reentrante. Isso é adequado para hardware de baixo a médio custo.

  • O driver de classe sincroniza automaticamente as operações de arquivo. Por exemplo, tanto a abertura de um fluxo como de um dispositivo são corretamente serializados, sem a necessidade de o minidriver usar mutexes, semáforos ou eventos.

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

  • O driver de classe lida com toda a interação com o gerente 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 lida com IRPs PnP, como IRP_MN_START_DEVICE ou IRP_MN_STOP_DEVICE.
  • Toda a gestão de buffer de baixo nível é gerida pelo driver de classe.

    • Alocando o objeto do adaptador DMA, se necessário.
    • Mapeamento de buffers e construção de listas de dispersão/coleta para DMA.
    • Bloqueando e esvaziando buffers corretamente para DMA e PIO.
  • Toda a validação de parâmetros IOCTL é realizada pelo driver de classe.

  • Todos os pedidos são cronometrados pelo motorista da classe com um temporizador de vigilância.

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

  • Apenas um objeto de dispositivo é criado por adaptador. Vários subdispositivos (chamados streams) suportados pelo adaptador são representados por pinos de streaming do kernel.