Функция обратного вызова PFNKSPINIRP (ks.h)
Подпрограмма мини-драйвера AVStream вызывается при выполнении действия с контактом и получает следующие irP:
Синтаксис
PFNKSPINIRP Pfnkspinirp;
NTSTATUS Pfnkspinirp(
[in] PKSPIN Pin,
[in] PIRP Irp
)
{...}
Параметры
[in] Pin
Указатель на только что созданный KSPIN .
[in] Irp
Указатель на IRP для закрепления.
Возвращаемое значение
Если подпрограмма завершается успешно, операция гарантированно будет успешной. Возврат STATUS_SUCCESS или STATUS_PENDING.
Комментарии
IRP | Описание |
---|---|
IRP_MJ_CREATE | Как правило, эта подпрограмма используется мини-дисками, которые хотят инициализировать контекст и ресурсы, связанные с закреплением. Мини-диск указывает адрес этой подпрограммы в элементе Create структуры KSPIN_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 структуры KSPIN_DISPATCH . В точке вызова подпрограммы все зарегистрированные события в контакте были освобождены, но в противном случае объект остается неизменным. Мьютекс элемента управления фильтром удерживается в этой функции. Дополнительные сведения о мьютексах см. в разделе Мьютексы в AVStream. Эта подпрограмма является необязательной. |
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | ks.h (включая Ks.h) |
IRQL | PASSIVE_LEVEL (см. раздел "Примечания") |