Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция 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 |