Функция обратного вызова PFNKSFILTERIRP (ks.h)
Подпрограмма AVStrMiniFilterCreate minidriver avStream вызывается, когда фильтр получает IRP.
Синтаксис
PFNKSFILTERIRP Pfnksfilterirp;
NTSTATUS Pfnksfilterirp(
[in] PKSFILTER Filter,
[in] PIRP Irp
)
{...}
Параметры
[in] Filter
Указатель на KSFILTER.
[in] Irp
Указатель на IRP для фильтра.
Возвращаемое значение
Если подпрограмма завершается успешно, верните STATUS_SUCCESS или код ошибки.
Комментарии
IRP | Описание |
---|---|
IRP_MJ_CREATE | Как правило, эта подпрограмма используется мини-дисками, которые хотят инициализировать контекст и ресурсы, связанные с фильтром. Мини-диск указывает адрес этой подпрограммы в элементе Create структуры KSFILTER_DISPATCH . В точке вызова подпрограммы объект файла имеет связанный контекст, и заголовок объекта KS выделен. Эта подпрограмма вызывается в IRQL = PASSIVE_LEVEL с мьютексом устройства. Если подпрограмма выполнена успешно, операция создания гарантированно будет успешной. Верните STATUS_SUCCESS или код ошибки, возвращенный при попытке создать фильтр. STATUS_PENDING также является юридическим кодом возврата. Если мини-накопитель возвращает STATUS_PENDING, AVStream не завершит IRP_MJ_CREATE сразу. Перед возвращением STATUS_PENDING мини-диск должен вызвать IoMarkIrpPending. После завершения обработки создания мини-driver должен задать код состояния IRP, а затем вызвать KsCompletePendingRequest. Эта подпрограмма является необязательной. |
IRP_MJ_CLOSE | Мини-диск указывает адрес этой подпрограммы в элементе Close структуры KSFILTER_DISPATCH . В точке, в которой вызывается подпрограмма, все зарегистрированные события в фильтре были освобождены, но в противном случае объект остается неизменным. Эта подпрограмма вызывается в IRQL = PASSIVE_LEVEL с мьютексом устройства. Дополнительные сведения о мьютексах см. в разделе Мьютексы в AVStream. Эта подпрограмма является необязательной. Возврат STATUS_SUCCESS или STATUS_PENDING. Если мини-диск возвращает STATUS_PENDING, AVStream не завершит IRP_MJ_CLOSE немедленно. Однако перед возвращением STATUS_PENDING мини-диск должен вызвать IoMarkIrpPending. После завершения обработки закрытия мини-driver должен задать код состояния IRP, а затем вызвать KsCompletePendingRequest. |
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | ks.h (включая Ks.h) |
IRQL | PASSIVE_LEVEL (см. раздел "Примечания") |