Condividi tramite


Minidriver di streaming

Nota Questa sezione descrive in dettaglio il driver di classeStream.sys obsoleto. Con il rilascio di Microsoft Windows XP, Microsoft supporta Stream.sys solo per i driver esistenti. A partire da questa versione, Microsoft consiglia ai fornitori di sviluppare nuovi driver multimediali video o audio/video usando il modello di driver di classe AVStream. Vedere i dettagli nella panoramica di AVStream. Se si sviluppa un driver solo audio, è necessario scrivere un driver miniport audio nel driver di classe Portcls.sys fornito da Microsoft. Per informazioni dettagliate, vedere Driver Audio Miniport.

I fornitori possono supportare dispositivi solo video o audio/video fornendo un minidriver in esecuzione con il driver di classe Stream.sys fornito da Microsoft. In questa documentazione, i minidriver forniti dal fornitore in Stream.sys vengono definiti minidriver di streaming.

Ad esempio, i dispositivi di acquisizione video e i lettori DVD possono essere supportati con minidriver di streaming. Per informazioni specifiche sulla tecnologia, vedere Video Capture Devices (Dispositivi di acquisizione video ) e Dvd Decoder Minidriver (Minidriver decodificatore DVD).

I minidriver di streaming supportano la semantica di streaming del kernel. Per usare questo documento, gli sviluppatori di driver devono avere familiarità con i concetti di base di streaming del kernel, come illustrato in Kernel Streaming.

Il driver di classe di flusso è progettato per semplificare la scrittura di driver hardware per i dispositivi di streaming gestendo molti degli aspetti dell'interazione con il sistema operativo.

  • Il minidriver può consentire al driver della classe di flusso di gestire la sincronizzazione per suo conto. Ad esempio, il driver della classe di flusso può serializzare facoltativamente le richieste di I/O per il minidriver. Consentendo al driver di classe di gestire la sincronizzazione rende il minidriver multiprocessore sicuro ma non rientrante. Questo è adatto per l'hardware di fascia bassa e media.

  • Il driver di classe sincronizza automaticamente le operazioni sui file. Ad esempio, l'apertura di un flusso e un dispositivo vengono serializzati correttamente senza il minidriver usando mutex, semafori o eventi.

  • Il driver di classe astrae l'implementazione della semantica di streaming del kernel dal minidriver.

  • Il driver di classe gestisce tutte le interazioni con il gestore PnP. Ad esempio:

    • Il driver di classe crea l'oggetto dispositivo funzionale per conto del minidriver.
    • Il driver di classe gestisce la configurazione delle risorse, ad esempio la conversione degli indirizzi delle porte, la conversione e il mapping degli intervalli di memoria e la connessione di interrupt.
    • Il driver di classe gestisce i runtime di integrazione PnP, ad esempio IRP_MN_START_DEVICE o IRP_MN_STOP_DEVICE.
  • Tutta la gestione del buffer di basso livello viene gestita dal driver di classe:

    • Allocazione dell'oggetto adapter DMA, se necessario.
    • Mapping di buffer e compilazione di elenchi a dispersione/raccolta per DMA.
    • Blocco e scaricamento corretto dei buffer per DMA e PIO.
  • Tutta la convalida dei parametri IOCTL viene eseguita dal driver di classe.

  • Tutte le richieste vengono eseguite dal driver di classe con un timer watchdog.

  • Il minidriver non crea un oggetto dispositivo, ma condivide l'oggetto dispositivo del driver di classe in base alle esigenze. In questo modo vengono salvate le risorse di sistema.

  • Viene creato un solo oggetto dispositivo per adattatore. Più sottodispositivi (denominati flussi) supportati dall'adattatore sono rappresentati dai pin di streaming del kernel.