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.