Partager via


Initialisation d’un minidriver AVStream

Un minidriver AVStream qui ne gère pas l’initialisation de l’appareil lui-même appelle KsInitializeDriver à partir de la routine DriverEntry du minidriver. KsInitializeDriver initialise l’objet pilote d’un pilote AVStream, en plus de la distribution IRP, des messages d’ajout de périphérique pnP et du déchargement.

Lors de l’appel de KsInitializeDriver, le minidriver passe un pointeur vers l’objet driver pour initialiser un pointeur vers le chemin du Registre et éventuellement un objet de descripteur de périphérique. Notez que la transmission de l’objet KSDEVICE_DESCRIPTOR n’est pas obligatoire. Si le minidriver passe un descripteur d’appareil, AVStream crée un appareil avec les caractéristiques spécifiées à l’heure AddDevice.

L’objet de descripteur d’appareil contient un pointeur vers une structure KSDEVICE_DISPATCH ainsi qu’un tableau de descripteurs de filtre. Fournissez une KSFILTER_DESCRIPTOR pour chaque type de filtre pris en charge par votre minidriver. Lorsque le minidriver appelle KsInitializeDriver, AVStream crée un objet de fabrique de filtre pour chaque type de filtre exposé par le minidriver. Les filtres individuels sont ensuite instanciés par la fabrique de filtres à la réception d’un IRP de création pour l’élément de création associé. Chaque descripteur de filtre contient un pointeur vers un tableau d’objets KSPIN_DESCRIPTOR_EX . AVStream crée une fabrique de broches sur le filtre approprié pour chaque type d’épingle que le minidriver expose via ce filtre.

Lorsqu’une connexion est établie à un type d’épingle donné sur un filtre, la fabrique de broches AVStream crée un objet pin. Notez que chaque filtre doit exposer au moins une broche. Le minidriver utilise le membre InstancesNecessary de KSPIN_DESCRIPTOR_EX pour identifier le nombre d’instances de ce type d’épingle nécessaires au bon fonctionnement du filtre. De même, le minidriver peut imposer un maximum sur le nombre de broches que la fabrique de broches peut instancier à l’aide du membre InstancesPossible de cette structure.

AVStream prend en charge deux types de traitement : le traitement centré sur les filtres et le traitement centré sur les broches. Lors de la disposition des descripteurs, déterminez le type de traitement que chaque type de filtre effectuera.

Installation d’un minidriver AVStream

Un minidriver AVStream doit avoir un fichier INF que le système utilise pour installer le pilote. Un fichier INF AVStream est basé sur le format INF commun, qui est décrit dans Création d’un fichier INF. Vous pouvez également faire référence aux fichiers INF fournis avec les exemples de pilotes AVStream dans le Kit de pilotes Windows (WDK). Gardez à l’esprit les instructions spécifiques à AVStream suivantes.

Si vous écrivez un minidriver pour un appareil parent, la section AddReg de votre fichier INF doit contenir :

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

Si vous écrivez un minidriver pour un appareil enfant, la section AddReg doit contenir :

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

Notez que « AVStream » est « Stream » pour un pilote de classe de flux.

Pour tous les minidrivers AVStream, la chaîne de référence spécifique au filtre dans le fichier INF doit correspondre au membre ReferenceGuid de la structure KSFILTER_DESCRIPTOR .

Pour plus d’informations sur les descripteurs, consultez Descripteurs AVStream.