Initialisieren eines AVStream Minidrivers

Ein AVStream-Minitreiber, der die Geräteinitialisierung nicht selbst verarbeitet, ruft KsInitializeDriver aus der DriverEntry-Routine des Minitreibers auf. KsInitializeDriver initialisiert das Treiberobjekt eines AVStream-Treibers, zusätzlich zum IRP-Dispatching, hinzufügen von PnP-Gerätemeldungen und Entladen.

Beim Aufrufen von KsInitializeDriver übergibt der Minidriver einen Zeiger auf das Treiberobjekt, um einen Zeiger auf den Registrierungspfad und optional ein Gerätedeskriptorobjekt zu initialisieren. Beachten Sie, dass das Übergeben des KSDEVICE_DESCRIPTOR-Objekts nicht erforderlich ist. Wenn der Minidriver einen Gerätedeskriptor übergibt, erstellt AVStream zur AddDevice-Zeit ein Gerät mit den angegebenen Merkmalen.

Das Gerätedeskriptorobjekt enthält einen Zeiger auf eine KSDEVICE_DISPATCH-Struktur sowie ein Array von Filterdeskriptoren. Geben Sie eine KSFILTER_DESCRIPTOR für jeden Filtertyp an, den Ihr Minitreiber unterstützt. Wenn der Minitreiber KsInitializeDriver aufruft, erstellt AVStream ein Filterfactoryobjekt für jeden Filtertyp, der vom Minidriver verfügbar gemacht wird. Einzelne Filter werden dann von der Filterfactory instanziiert, nachdem ein Create-IRP für das zugeordnete Erstellungselement erhalten wurde. Jeder Filterdeskriptor enthält einen Zeiger auf ein Array von KSPIN_DESCRIPTOR_EX-Objekten . AVStream erstellt für jeden Typ von Pin, den der Minidriver über diesen Filter verfügbar macht, eine Pinfactory auf dem relevanten Filter.

Wenn eine Verbindung mit einem bestimmten Pintyp in einem Filter hergestellt wird, erstellt die AVStream-Pinfactory ein Pinobjekt. Beachten Sie, dass jeder Filter mindestens einen Pin verfügbar machen muss. Der Minidriver verwendet den InstancesNecessary-Member von KSPIN_DESCRIPTOR_EX, um die Anzahl der Instanzen dieses Pintyps zu identifizieren, die für die ordnungsgemäße Funktion des Filters erforderlich sind. Ebenso kann der Minidriver ein Maximum für die Anzahl von Pins festlegen, die die Pinfactory mithilfe des InstancesPossible-Elements dieser Struktur instanziieren kann.

AVStream unterstützt zwei Arten der Verarbeitung: filterzentrierte Verarbeitung und pinzentrierte Verarbeitung. Entscheiden Sie beim Auslegen der Deskriptoren, welche Art von Verarbeitung der einzelnen Filtertypen ausgeführt wird.

Installieren eines AVStream Minidrivers

Ein AVStream-Minidriver muss über eine INF-Datei verfügen, die das System zum Installieren des Treibers verwendet. Eine AVStream INF-Datei basiert auf dem allgemeinen INF-Format, das unter Erstellen einer INF-Datei beschrieben wird. Sie können auch auf die INF-Dateien verweisen, die mit AVStream-Beispieltreibern im Windows Driver Kit (WDK) bereitgestellt werden. Beachten Sie die folgenden AVStream-spezifischen Richtlinien.

Wenn Sie einen Minitreiber für ein übergeordnetes Gerät schreiben, sollte der AddReg-Abschnitt Ihrer INF-Datei Folgendes enthalten:

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

Wenn Sie einen Minitreiber für ein untergeordnetes Gerät schreiben, sollte der Abschnitt AddReg Folgendes enthalten:

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

Beachten Sie, dass "AVStream" für einen Streamklassentreiber "Stream" sein würde.

Für alle AVStream-Minidriver muss die filterspezifische Verweiszeichenfolge in der INF-Datei mit dem ReferenceGuid-Member der KSFILTER_DESCRIPTOR-Struktur übereinstimmen.

Weitere Informationen zu Deskriptoren finden Sie unter AVStream-Deskriptoren.