Initialisation d’un minipilote AVStream
Un minipilote AVStream qui ne gère pas l’initialisation de l’appareil sur ses propres appels KsInitializeDriver à partir de la routine DriverEntry du minipilote. KsInitializeDriver Initialise l’objet pilote d’un pilote AVStream, en plus de la distribution IRP, de l’ajout de messages d’appareil PNP et du déchargement.
Lors de l’appel de KsInitializeDriver, le minipilote passe un pointeur vers l’objet Driver pour initialiser un pointeur vers le chemin d’accès au registre et éventuellement un objet descripteur d’appareil. Notez que le passage de l’objet KSDEVICE_DESCRIPTOR n’est pas obligatoire. Si le minipilote transmet un descripteur d’appareil, AVStream crée un appareil avec les caractéristiques spécifiées au moment de la AddDevice.
L’objet 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 minipilote. Lorsque le minipilote appelle KsInitializeDriver, AVStream crée un objet de fabrique de filtres pour chaque type de filtre exposé par le minipilote. Les filtres individuels sont ensuite instanciés par la fabrique de filtres lors de la réception d’une requête Create IRP pour l’élément Create 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 minipilote expose par le biais de ce filtre.
Lorsqu’une connexion est établie à un type de code confidentiel donné sur un filtre, la fabrique de code confidentiel AVStream crée un objet pin. Notez que chaque filtre doit exposer au moins un code PIN. Le minipilote utilise le membre InstancesNecessary de KSPIN_DESCRIPTOR_EX pour identifier le nombre d’instances de ce type de code confidentiel qui sont nécessaires au bon fonctionnement du filtre. De même, le minipilote peut imposer un nombre maximal de codes confidentiels que la fabrique de code confidentiel peut instancier à l’aide du membre InstancesPossible de cette structure.
AVStream prend en charge deux types de traitement : le traitement centré sur les filtreset le traitement centré sur les codes confidentiels. Lors de la mise en disposition des descripteurs, déterminez le type de traitement que chaque type de filtre doit effectuer.
Installation d’un minipilote AVStream
Un minipilote 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 vous reporter aux fichiers INF fournis avec des exemples de pilotes AVStream dans le Kit de pilotes Windows (WDK). Gardez à l’esprit les recommandations suivantes spécifiques à AVStream.
Si vous écrivez un minipilote pour un appareil parent, la section AddReg de votre fichier INF doit contenir :
[ParentName.AddReg]
HKR,"ENUM\[DeviceName]",pnpid,,"[string]"
Si vous écrivez un minipilote pour un appareil enfant, la section AddReg doit contenir :
[Manufacturer]
...=ChildName
[ChildName]
...=ChildName.Device,AVStream\[string]
Notez que « AVStream » serait « Stream » pour un pilote de classe Stream.
Pour tous les minipilotes AVStream, la chaîne de référence propre 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.