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


Функция обратного вызова PFNKSFILTERIRP (ks.h)

Подпрограмма AVStrMiniFilterCreate minidriver avStream вызывается, когда фильтр получает IRP.

IRP_MJ_CREATE

IRP_MJ_CLOSE

Синтаксис

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 (см. раздел "Примечания")

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

IoMarkIrpPending

KSFILTER_DISPATCHKsCompletePendingRequest