Freigeben über


KsCreateFilterFactory-Funktion (ks.h)

Die** KsCreateFilterFactory**-Funktion fügt einem bestimmten Gerät eine Filterfactory hinzu.

Syntax

KSDDKAPI NTSTATUS KsCreateFilterFactory(
  [in]            PDEVICE_OBJECT            DeviceObject,
  [in]            const KSFILTER_DESCRIPTOR *Descriptor,
  [in, optional]  PWSTR                     RefString,
  [in, optional]  PSECURITY_DESCRIPTOR      SecurityDescriptor,
  [in]            ULONG                     CreateItemFlags,
  [in, optional]  PFNKSFILTERFACTORYPOWER   SleepCallback,
  [in, optional]  PFNKSFILTERFACTORYPOWER   WakeCallback,
  [out, optional] PKSFILTERFACTORY          *FilterFactory
);

Parameter

[in] DeviceObject

Ein Zeiger auf eine DEVICE_OBJECT Struktur, für die eine Filterfactory hinzugefügt werden soll.

[in] Descriptor

Ein Zeiger auf einen KSFILTER_DESCRIPTOR , der die Merkmale einzelner Filter beschreibt, die diese Factory erstellen kann.

[in, optional] RefString

Wenn dieses Argument angegeben wird, wird diese Zeichenfolge als Verweiszeichenfolge für filter verwendet, die von dieser Factory erstellt wurden. Andernfalls wird die im Deskriptor angegebene Verweis-GUID verwendet.

[in, optional] SecurityDescriptor

Die Sicherheitsbeschreibung, die bei der Erstellung von Filtern durch diese Filterfactory verwendet werden soll. Bei NULL wird kein Deskriptor angegeben.

[in] CreateItemFlags

In der folgenden Tabelle sind die Flags aufgeführt, die der Minidriver Writer verwendet, um die Merkmale von Filtern anzugeben, die die neue Filterfactory erstellen kann. Legen Sie diesen Parameter auf den bitweisen OR der folgenden Flags fest.

Flag Bedeutung
KSCREATE_ITEM_SECURITY_CHANGED Gibt an, dass die Sicherheitsbeschreibung für diesen Objekttyp geändert wurde und beibehalten werden sollte.
KSCREATE_ITEM_WILDCARD Gibt an, dass dieses Create-Element einen Wildcard darstellt, der für alle Erstellungsanforderungen verwendet wird, die nicht mit anderen Erstellungselementen übereinstimmen. Die Reihenfolge des Feldhaltereintrags in der Liste der Erstellungselemente ist irrelevant. Nur ein einzelner Feldhaltereintrag ist für eine Liste von Erstellungselementen gültig.
KSCREATE_ITEM_NOPARAMETERS Gibt an, dass dieses Erstellungselement das Übergeben von Parametern nicht zulässt, und schlägt fehl, wenn welche gefunden werden. (Normalerweise werden Create-Parameter an den Create-Handler übergeben.) Dieses Flag kann nicht mit einem Wildcard-Flag verwendet werden.
KSCREATE_ITEM_FREEONSTOP Gibt an, dass das Erstellungselement freigegeben werden soll, wenn der PnP-Manager IRP_MN_STOP_DEVICE sendet. Beachten Sie, dass AVStream solche Erstellungselemente automatisch freigibt, wenn das Gerät den PnP-Stopp empfängt (nachdem der Client die PnP-Stoppbenachrichtigung erhalten hat).

[in, optional] SleepCallback

Ein Zeiger auf eine minidriver-bereitgestellte Routine, die Benachrichtigungen empfängt, dass das diesem Filter zugeordnete Gerät in den Ruhezustand versetzt wird. Prototyp der Routine wie folgt:

void SleepCallback (IN PKSFILTERFACTORY FilterFactory,
    IN DEVICE_POWER_STATE State);

Wenn dieser Parameter NULL ist, wird diese Filterfactory nicht benachrichtigt, dass das Gerät in den Ruhemodus wechselt. Weitere Informationen finden Sie unter Gerätestromzustände.

[in, optional] WakeCallback

Ein Zeiger auf eine minidriver-bereitgestellte Routine, die Benachrichtigungen empfängt, dass das diesem Filter zugeordnete Gerät aufwacht. Prototyp der Routine wie folgt:

void WakeCallback (IN PKSFILTERFACTORY FilterFactory,
    IN DEVICE_POWER_STATE State);

Wenn dieser Parameter NULL ist, wird diese Filterfactory nicht benachrichtigt, dass das Gerät aufwacht. Weitere Informationen finden Sie unter Gerätestromzustände.

[out, optional] FilterFactory

Ein Zeiger auf eine KSFILTERFACTORY-Struktur , die AVStream so festlegt, dass sie auf das neu erstellte Filter Factory-Objekt verweist. Wenn dieser optionale Parameter nicht angegeben ist, wird der Aufrufer nicht über das resultierende Filter factory-Objekt informiert.

Rückgabewert

Gibt STATUS_SUCCESS zurück, wenn die Filterfactory erstellt werden kann. Andernfalls wird ein entsprechender Fehlercode zurückgegeben.

Hinweise

Wenn Sie KsCreateFilterFactory nach AVStrMiniDevicePostStart) aufrufen, müssen Sie KsFilterFactorySetDeviceClassesState aufrufen, um die Geräteklasse zu aktivieren. (Rufen Sie auch KsFilterFactorySetDeviceClassesState auf, um eine Filter factory zu deaktivieren.)

Wenn Sie KsCreateFilterFactory im Kontext von AVStrMiniDevicePostStart oder früher aufrufen, müssen Sie dies nicht tun.

Vor dem Aufrufen dieser Funktion muss der Minidriver den Mutex des Geräts abrufen. Informationen dazu finden Sie unter Device Mutex in AVStream.

Diese Funktion sollte von Minidrivern verwendet werden, die sich entweder ohne Aufruf von KsInitializeDriver initialisieren oder neue Filtertypen dynamisch hinzufügen und entfernen müssen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Microsoft Windows XP und höheren Betriebssystemen und DirectX 8.0 und höher DirectX-Versionen.
Zielplattform Universell
Header ks.h (einschließlich Ks.h)
Bibliothek Ks.lib
IRQL PASSIVE_LEVEL

Weitere Informationen

KSFILTER_DESCRIPTOR

KSNODE_DESCRIPTOR

KSPIN_DESCRIPTOR_EX

KsDeleteFilterFactory