Поделиться через


Функция 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

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

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

[in, optional] SleepCallback

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

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

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

[in, optional] WakeCallback

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

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

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

[out, optional] FilterFactory

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

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

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

Комментарии

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

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

Перед вызовом этой функции мини-диск должен получить мьютекс устройства. Сведения о том, как это сделать, см. в разделе Device Mutex in AVStream.

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

Требования

Требование Значение
Минимальная версия клиента Доступно в операционных системах Microsoft Windows XP и более поздних версиях, а также DirectX 8.0 и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ks.h (включая Ks.h)
Библиотека Ks.lib
IRQL PASSIVE_LEVEL

См. также раздел

KSFILTER_DESCRIPTOR

KSNODE_DESCRIPTOR

KSPIN_DESCRIPTOR_EX

KsDeleteFilterFactory