Функция FltEnlistInTransaction (fltkernel.h)
Подпрограмма FltEnlistInTransaction заверяет драйвер минифильтра в заданной транзакции.
Синтаксис
NTSTATUS FLTAPI FltEnlistInTransaction(
[in] PFLT_INSTANCE Instance,
[in] PKTRANSACTION Transaction,
[in] PFLT_CONTEXT TransactionContext,
[in] NOTIFICATION_MASK NotificationMask
);
Параметры
[in] Instance
Указатель непрозрачного экземпляра для вызывающего объекта. Этот параметр является обязательным и не может иметь значение NULL.
[in] Transaction
Непрозрачный указатель транзакции для транзакции.
[in] TransactionContext
Указатель на контекст транзакции драйвера минифильтра. Этот параметр является обязательным и не может иметь значение NULL.
[in] NotificationMask
Указывает тип уведомлений, которые диспетчер фильтров будет отправлять драйверу минифильтра в виде одного или нескольких значений, перечисленных в следующей таблице. Этот параметр является обязательным и не может быть равен нулю.
Значение | Значение |
---|---|
TRANSACTION_NOTIFY_COMMIT | Это уведомление отправляется при фиксации транзакции. |
TRANSACTION_NOTIFY_COMMIT_FINALIZE | Для Windows Vista с пакетом обновления 1 (SP1) и более поздних версий это уведомление отправляется, когда транзакция полностью зафиксирована (т. е. когда все связанные с транзакцией диспетчеры ресурсов , например TxF, зафиксированы). |
TRANSACTION_NOTIFY_PREPARE | Это уведомление отправляется, когда транзакция вступила в этап подготовки к фиксации. |
TRANSACTION_NOTIFY_PREPREPARE | Это уведомление отправляется, когда транзакция вступила в этап предварительной подготовки к фиксации. |
TRANSACTION_NOTIFY_ROLLBACK | Это уведомление отправляется при откате или прерывании транзакции. |
FLT_MAX_TRANSACTION_NOTIFICATIONS | TRANSACTION_NOTIFY_COMMIT | TRANSACTION_NOTIFY_PREPARE | TRANSACTION_NOTIFY_PREPREPARE | TRANSACTION_NOTIFY_ROLLBACK |
Возвращаемое значение
Функция FltEnlistInTransaction возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих значений:
Код возврата | Описание |
---|---|
|
Вызывающий объект уже включен в транзакцию. Это код ошибки. |
|
Экземпляр, указанный в параметре Instance , сносится. Это код ошибки. |
|
В FltEnlistInTransaction произошла ошибка выделения пула. Это код ошибки. |
|
Вызывающий объект не зарегистрировал подпрограмму TransactionNotificationCallback . Это код ошибки. |
|
Вызывающий объект указал недопустимое значение параметра NotificationMask . Это код ошибки. |
Комментарии
Драйвер минифильтра вызывает FltEnlistInTransaction для зачисления в транзакцию. Перед вызовом FltEnlistInTransaction драйвер минифильтра должен зарегистрировать подпрограмму TransactionNotificationCallback . В противном случае вызов FltEnlistInTransaction завершится ошибкой.
Чтобы зарегистрировать подпрограмму TransactionNotificationCallback , драйвер минифильтра сохраняет адрес подпрограммы типа PFLT_TRANSACTION_NOTIFICATION_CALLBACK в элементе TransactionNotificationCallback структуры FLT_REGISTRATION , которую драйвер минифильтра передает в качестве параметра RegistrationfltRegisterFilter.
Чтобы выполнить откат или прервать транзакцию, вызовите FltRollbackEnlistment.
Чтобы выделить новый контекст транзакции, вызовите FltAllocateContext.
Чтобы получить контекст транзакции, вызовите FltGetTransactionContext.
Чтобы удалить контекст транзакции, вызовите Метод FltDeleteTransactionContext или FltDeleteContext.
Чтобы задать контекст транзакции, вызовите FltSetTransactionContext.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Эта подпрограмма доступна в Windows Vista и более поздних версиях Windows. |
Целевая платформа | Универсальное |
Верхняя часть | fltkernel.h (включая Fltkernel.h) |
Библиотека | FltMgr.lib |
DLL | FltMgr.sys |
IRQL | <= APC_LEVEL |