Condividi tramite


Inizializzazione di un minidriver AVStream

Un minidriver AVStream che non gestisce l'inizializzazione del dispositivo in modo autonomo chiama KsInitializeDriver dalla routine DriverEntry del minidriver. KsInitializeDriver inizializza l'oggetto driver di un driver AVStream, oltre all'invio di IRP, l'aggiunta di messaggi del dispositivo da parte di PnP e lo scaricamento.

Nella chiamata a KsInitializeDriver, il minidriver passa un puntatore all'oggetto driver per inizializzare un puntatore al percorso del Registro di sistema e, facoltativamente, un oggetto descrittore del dispositivo. Si noti che il passaggio dell'oggetto KSDEVICE_DESCRIPTOR non è obbligatorio. Se il minidriver passa un descrittore di dispositivo, AVStream crea un dispositivo con le caratteristiche specificate in fase di addDevice.

L'oggetto descrittore del dispositivo contiene un puntatore a una struttura KSDEVICE_DISPATCH e una matrice di descrittori di filtro. Specificare un KSFILTER_DESCRIPTOR per ogni tipo di filtro supportato dal minidriver. Quando il minidriver chiama KsInitializeDriver, AVStream crea un oggetto factory di filtro per ogni tipo di filtro esposto dal minidriver. I singoli filtri vengono quindi creati dall'istanza della factory di filtro al momento della ricezione di un IRP di creazione per l'elemento di creazione associato.Individual filters are then instantiated by the filter factory upon receipt of a create IRP for the associated create item. Ogni descrittore di filtro contiene un puntatore a una matrice di oggetti KSPIN_DESCRIPTOR_EX . AVStream crea una factory di pin nel filtro pertinente per ogni tipo di pin esposto dal minidriver tramite tale filtro.

Quando viene stabilita una connessione a un determinato tipo di pin in un filtro, la factory pin AVStream crea un oggetto pin. Si noti che ogni filtro deve esporre almeno un pin. Il minidriver usa il membro InstancesNecessary di KSPIN_DESCRIPTOR_EX per identificare il numero di istanze di questo tipo di pin necessarie per il corretto funzionamento del filtro. Analogamente, il minidriver può imporre un massimo al numero di pin che la factory di pin può creare un'istanza usando il membro InstancesPossible di questa struttura.

AVStream supporta due tipi di elaborazione: elaborazione basata sui filtri e elaborazione incentrata sui pin. Durante la disposizione dei descrittori, decidere quale tipo di elaborazione eseguirà ogni tipo di filtro.

Installazione di un minidriver AVStream

Un minidriver AVStream deve avere un file INF usato dal sistema per installare il driver. Un file INF AVStream si basa sul formato INF comune, descritto in Creazione di un file INF. È anche possibile fare riferimento ai file INF forniti con i driver di esempio AVStream in Windows Driver Kit (WDK). Tenere presenti le linee guida specifiche di AVStream seguenti.

Se si scrive un minidriver per un dispositivo padre, la sezione AddReg del file INF deve contenere:

[ParentName.AddReg]
HKR,"ENUM\[DeviceName]",pnpid,,"[string]"

Se si scrive un minidriver per un dispositivo figlio, la sezione AddReg deve contenere:

[Manufacturer]
...=ChildName
[ChildName]
...=ChildName.Device,AVStream\[string]

Si noti che "AVStream" sarebbe "Stream" per un driver di classe di flusso.

Per tutti i minidriver AVStream, la stringa di riferimento specifica del filtro nel file INF deve corrispondere al membro ReferenceGuid della struttura KSFILTER_DESCRIPTOR .

Per altre informazioni sui descrittori, vedere Descrittori AVStream.