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