Функция KsCreateFilterFactory (ks.h)

Функция KsCreateFilterFactory добавляет фабрику фильтров на заданное устройство.

Синтаксис

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
);

Параметры

[in] DeviceObject

Указатель на структуру DEVICE_OBJECT , для которой необходимо добавить фабрику фильтров.

[in] Descriptor

Указатель на KSFILTER_DESCRIPTOR , описывающий характеристики отдельных фильтров, которые может создать эта фабрика.

[in, optional] RefString

Если этот аргумент указан, эта строка используется в качестве ссылочной строки для фильтров, созданных этой фабрикой. В противном случае используется ссылочный GUID, указанный в дескрипторе.

[in, optional] SecurityDescriptor

Дескриптор безопасности, используемый при создании фильтров этой фабрикой фильтров. Если значение NULL, дескриптор не указан.

[in] CreateItemFlags

В следующей таблице перечислены флаги, которые использует модуль записи мини-driver для указания характеристик фильтров, которые может создать новая фабрика фильтров. Задайте для этого параметра побитовое ЗНАЧЕНИЕ ИЛИ флагов ниже.

Flag Meaning
KSCREATE_ITEM_SECURITY_CHANGED Указывает, что дескриптор безопасности для этого типа объекта был изменен и должен быть сохранен.
KSCREATE_ITEM_WILDCARD Указывает, что этот элемент создания представляет подстановочный знак, используемый для любых запросов на создание, которые не соответствуют другим элементам создания. Порядок записи подстановочного знака в списке элементов создания не имеет значения. Только одна подстановочная запись допустима в любом списке элементов создания.
KSCREATE_ITEM_NOPARAMETERS Указывает, что этот элемент создания не разрешает передавать параметры и завершается ошибкой, если они найдены. (Как правило, параметры создания передаются в обработчик создания.) Этот флаг нельзя использовать с подстановочным флагом.
KSCREATE_ITEM_FREEONSTOP Указывает, что элемент создания должен быть освобожден при отправке диспетчером PnP IRP_MN_STOP_DEVICE. Обратите внимание, что AVStream автоматически освобождает такие элементы, когда устройство получает остановку PnP (после того, как клиент получил уведомление об остановке PnP).

[in, optional] SleepCallback

Указатель на подпрограмму, предоставляемую мини-driver, которая получает уведомления о том, что устройство, связанное с этим фильтром, будет спянуть. Прототип подпрограммы следующим образом:

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

Если этот параметр имеет значение NULL, эта фабрика фильтров не уведомляется о том, что устройство будет спящее. См. сведения о состояниях питания устройств.

[in, optional] WakeCallback

Указатель на подпрограмму, предоставляемую мини-driver, которая получает уведомления о том, что устройство, связанное с этим фильтром, просыпается. Прототип подпрограммы следующим образом:

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

Если этот параметр имеет значение NULL, эта фабрика фильтров уведомляется о том, что устройство просыпается. См. сведения о состояниях питания устройств.

[out, optional] FilterFactory

Указатель на структуру KSFILTERFACTORY , которую AVStream задает для указания только что созданного объекта фабрики фильтров. Если этот необязательный параметр не указан, вызывающий объект не сообщает о полученном объекте фабрики фильтров.

Возвращаемое значение

Возвращает STATUS_SUCCESS, если можно создать фабрику фильтров. В противном случае возвращается соответствующий код ошибки.

Замечания

При вызове KsCreateFilterFactory после AVStrMiniDevicePostStart необходимо вызвать KsFilterFactorySetDeviceClassesState , чтобы включить класс устройства. (Кроме того, вызовите KsFilterFactorySetDeviceClassesState , чтобы отключить фабрику фильтров.)

Если вы вызываете KsCreateFilterFactory в контексте AVStrMiniDevicePostStart или раньше, это не нужно делать.

Перед вызовом этой функции мини-driver должен получить мьютекс устройства. Дополнительные сведения о том, как это сделать, см. в разделе "Мьютекс устройства" в AVStream.

Эта функция должна использоваться мини-drivers, которые либо инициализируют себя без вызова KsInitializeDriver , либо должны динамически добавлять и удалять новые типы фильтров.

Требования

Требование Ценность
Минимальный поддерживаемый клиент Доступно в Microsoft Windows XP и более поздних операционных системах и версиях DirectX 8.0 и более поздних версий DirectX.
целевая платформа Всеобщий
Header ks.h (include Ks.h)
Library Ks.lib
IRQL PASSIVE_LEVEL

См. также

KSFILTER_DESCRIPTOR

KSNODE_DESCRIPTOR

KSPIN_DESCRIPTOR_EX

KsDeleteFilterFactory