Функция FltCommitFinalizeComplete (fltkernel.h)

Подпрограмма FltCommitFinalizeComplete подтверждает уведомление TRANSACTION_NOTIFY_COMMIT_FINALIZE.

Синтаксис

NTSTATUS FLTAPI FltCommitFinalizeComplete(
  [in]           PFLT_INSTANCE Instance,
  [in]           PKTRANSACTION Transaction,
  [in, optional] PFLT_CONTEXT  TransactionContext
);

Параметры

[in] Instance

Непрозрачный указатель на экземпляр драйвера мини-фильтра. Этот параметр является обязательным и не может иметь значение NULL.

[in] Transaction

Непрозрачный указатель на транзакцию, в который в данный момент включен драйвер мини-фильтра. Этот параметр является обязательным и не может иметь значение NULL.

[in, optional] TransactionContext

Указатель на контекст драйвера мини-фильтра для транзакции. Этот параметр является необязательным и может иметь значение NULL.

Возвращаемое значение

FltCommitFinalizeComplete возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например следующее:

Код возврата Описание
STATUS_NOT_FOUND
Драйвер минифильтра не задал контекст транзакции. Это код ошибки.

Комментарии

Драйвер мини-фильтра, который включен в транзакцию, может получать уведомление TRANSACTION_NOTIFY_COMMIT_FINALIZE, когда транзакция полностью зафиксирована (то есть, когда все диспетчеры ресурсов , связанные с транзакцией, такие как TxF, зафиксированы). Для антивирусного драйвера минифильтра, выполняющего сканирование вне транзакций, это значение уведомления можно использовать, чтобы определить, когда драйвер должен начать сканирование файлов.

Чтобы отправить TRANSACTION_NOTIFY_COMMIT_FINALIZE уведомление драйверу минифильтра, диспетчер фильтров вызывает подпрограмму TransactionNotificationCallback драйвера мини-фильтра. Драйвер минифильтра подтверждает это уведомление одним из двух способов:

  • Подпрограмма TransactionNotificationCallback драйвера мини-фильтра выполняет необходимую обработку и возвращает STATUS_SUCCESS. (В этом случае драйвер минифильтра не вызывает FltCommitFinalizeComplete.)
  • Подпрограмма TransactionNotificationCallback драйвера мини-фильтра отправляет все необходимые данные обработки в рабочий поток и возвращает STATUS_PENDING. После асинхронного выполнения обработки подпрограмма рабочего потока драйвера минифильтра должна вызвать FltCommitFinalizeComplete , чтобы указать, что обработка завершена. Если подпрограмма рабочего потока драйвера мини-фильтра не вызывает FltCommitFinalizeComplete, утечка некоторых системных ресурсов будет происходить.
Чтобы зарегистрировать подпрограмму TransactionNotificationCallback , драйвер мини-фильтра сохраняет адрес подпрограммы типа PFLT_TRANSACTION_NOTIFICATION_CALLBACK в элементе TransactionNotificationCallbackструктуры FLT_REGISTRATION , которую драйвер мини-фильтра передает в качестве параметра Registrationдля FltRegisterFilter.

Чтобы завербовать транзакцию, вызовите Метод FltEnlistInTransaction.

Чтобы выделить новый контекст транзакции, вызовите FltAllocateContext.

Чтобы получить контекст транзакции, вызовите Метод FltGetTransactionContext.

Чтобы удалить контекст транзакции, вызовите Метод FltDeleteTransactionContext или FltDeleteContext.

Чтобы задать контекст транзакции, вызовите Метод FltSetTransactionContext.

Дополнительные сведения см. в разделе Уведомления о транзакциях.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista с пакетом обновления 1 (SP1) и более поздних версий.
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая Fltkernel.h)
Библиотека Fltmgr.lib
IRQL <= APC_LEVEL

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

FLT_REGISTRATION

FltAllocateContext

FltCommitComplete

FltDeleteContext

FltDeleteTransactionContext

FltEnlistInTransaction

FltGetTransactionContext

FltPrepareComplete

FltPrepareComplete

FltRegisterFilter

FltReleaseContext

FltRollbackComplete

FltRollbackEnlistment

FltSetTransactionContext

PFLT_TRANSACTION_NOTIFICATION_CALLBACK