Функция 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, например одно из следующих значений:

Код возврата Описание
STATUS_FLT_ALREADY_ENLISTED
Вызывающий объект уже включен в транзакцию. Это код ошибки.
STATUS_FLT_DELETING_OBJECT
Экземпляр, указанный в параметре Instance , сносится. Это код ошибки.
STATUS_INSUFFICIENT_RESOURCES
В FltEnlistInTransaction произошла ошибка выделения пула. Это код ошибки.
STATUS_INVALID_PARAMETER
Вызывающий объект не зарегистрировал подпрограмму TransactionNotificationCallback . Это код ошибки.
STATUS_INVALID_PARAMETER_4
Вызывающий объект указал недопустимое значение параметра 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

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

FltAllocateContext

FltCommitComplete

FltDeleteContext

FltDeleteTransactionContext

FltGetTransactionContext

FltPrepareComplete

FltPrepareComplete

FltRegisterFilter

FltReleaseContext

FltRollbackComplete

FltRollbackEnlistment

FltSetTransactionContext

PFLT_TRANSACTION_NOTIFICATION_CALLBACK