Функция NtCreateTransactionManager (wdm.h)
Подпрограмма ZwCreateTransactionManager создает новый объект диспетчера транзакций.
Синтаксис
__kernel_entry NTSYSCALLAPI NTSTATUS NtCreateTransactionManager(
[out] PHANDLE TmHandle,
[in] ACCESS_MASK DesiredAccess,
[in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
[in, optional] PUNICODE_STRING LogFileName,
[in, optional] ULONG CreateOptions,
[in, optional] ULONG CommitStrength
);
Параметры
[out] TmHandle
Указатель на переменную, выделенную вызывающим объектом, которая получает дескриптор нового объекта диспетчера транзакций.
[in] DesiredAccess
Значение ACCESS_MASK , указывающее запрошенный доступ вызывающего объекта к объекту диспетчера транзакций. Помимо прав доступа, определенных для всех типов объектов (см . ACCESS_MASK), вызывающий объект может указать любой из следующих флагов прав доступа для объектов диспетчера транзакций.
флаг ACCESS_MASK | Разрешает вызывающей |
---|---|
TRANSACTIONMANAGER_CREATE_RM | Создайте диспетчер ресурсов (см . ZwCreateResourceManager). |
TRANSACTIONMANAGER_QUERY_INFORMATION | Получите сведения о диспетчере транзакций (см . ZwQueryInformationTransactionManager и ZwEnumerateTransactionObject). Также требуется для ZwOpenResourceManager, ZwCreateTransaction и ZwOpenTransaction.) |
TRANSACTIONMANAGER_RECOVER | Восстановите диспетчер транзакций (см . ZwRecoverTransactionManager и ZwRollforwardTransactionManager). |
TRANSACTIONMANAGER_RENAME | Не используется. |
TRANSACTIONMANAGER_SET_INFORMATION | Не используется. |
Кроме того, можно указать одно или несколько следующих ACCESS_MASK растровых рисунков. Эти точечные изображения объединяют флаги из предыдущей таблицы с флагами STANDARD_RIGHTS_XXX, описанными на странице справки по ACCESS_MASK . Вы также можете объединить эти растровые изображения с дополнительными флагами из предыдущей таблицы. В следующей таблице показано, как растровые изображения соответствуют определенным правам доступа.
Точечный рисунок прав | Набор определенных прав доступа |
---|---|
TRANSACTIONMANAGER_GENERIC_READ | STANDARD_RIGHTS_READ и TRANSACTIONMANAGER_QUERY_INFORMATION |
TRANSACTIONMANAGER_GENERIC_WRITE | STANDARD_RIGHTS_WRITE, TRANSACTIONMANAGER_SET_INFORMATION, TRANSACTIONMANAGER_RECOVER, TRANSACTIONMANAGER_RENAME и TRANSACTIONMANAGER_CREATE_RM |
TRANSACTIONMANAGER_GENERIC_EXECUTE | STANDARD_RIGHTS_EXECUTE |
TRANSACTIONMANAGER_ALL_ACCESS | STANDARD_RIGHTS_REQUIRED, TRANSACTIONMANAGER_GENERIC_READ, TRANSACTIONMANAGER_GENERIC_WRITE и TRANSACTIONMANAGER_GENERIC_EXECUTE |
[in, optional] ObjectAttributes
Указатель на структуру OBJECT_ATTRIBUTES , указывающую имя объекта и другие атрибуты. Используйте подпрограмму InitializeObjectAttributes для инициализации этой структуры. Если вызывающий объект не выполняется в контексте системного потока, он должен задать атрибут OBJ_KERNEL_HANDLE при вызове InitializeObjectAttributes. Этот параметр является необязательным и может иметь значение NULL.
[in, optional] LogFileName
Указатель на структуру UNICODE_STRING , содержащую путь и имя файла потока файлов журнала CLFS , связанного с объектом диспетчера транзакций. Этот параметр должен иметь значение NULL , если параметр CreateOptions TRANSACTION_MANAGER_VOLATILE. В противном случае этот параметр должен иметь значение, отличное от NULL. Дополнительные сведения см. в разделе "Примечания".
[in, optional] CreateOptions
Необязательные флаги создания объектов. В следующей таблице содержатся доступные флаги, определенные в Ktmtypes.h.
Флаг параметра | Значение |
---|---|
TRANSACTION_MANAGER_VOLATILE | Объект диспетчера транзакций будет переменным. Таким образом, он не будет использовать файл журнала. |
TRANSACTION_MANAGER_COMMIT_DEFAULT | Только для внутреннего использования. |
TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME | Только для внутреннего использования. |
TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES | Только для внутреннего использования. |
TRANSACTION_MANAGER_COMMIT_LOWEST | Только для внутреннего использования. |
TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY | Только для внутреннего использования. |
TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS | Только для внутреннего использования. |
[in, optional] CommitStrength
Зарезервировано для последующего использования. Этот параметр должен быть равен нулю.
Возвращаемое значение
ZwCreateTransactionManager возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае эта подпрограмма может возвращать одно из следующих значений:
Код возврата | Описание |
---|---|
|
Недопустимое значение входного параметра. |
|
KTM не удалось выделить системные ресурсы (обычно это память). |
|
KTM обнаружил ошибку при создании или открытии файла журнала. |
|
Дескриптор безопасности содержит недопустимый список управления доступом (ACL). |
|
Дескриптор безопасности содержит недопустимый идентификатор безопасности (SID). |
|
Имя объекта, указанное параметром ObjectAttributes , уже существует. |
|
Операционная система обнаружила повторяющееся имя объекта. Ошибка может указывать на то, что поток журнала уже используется. |
|
Недопустимое имя объекта, указанное в параметре ObjectAttributes . |
|
Недопустимое значение параметра DesiredAccess . |
Подпрограмма может возвращать другие значения NTSTATUS.
Комментарии
Если поток файлов журнала, который указывает параметр LogFileName , не существует, KTM вызывает CLFS для создания потока. Если поток уже существует, KTM вызывает CLFS, чтобы открыть поток.
Компонент TPS должен вызвать ZwRecoverTransactionManager после вызова ZwCreateTransactionManager
Если компонент TPS указывает флаг TRANSACTION_MANAGER_VOLATILE в параметре CreateOptions, все диспетчеры ресурсов, связанные с объектом диспетчера транзакций, должны указывать флаг RESOURCE_MANAGER_VOLATILE при вызове ZwCreateResourceManager.
Компонент TPS, вызывающий ZwCreateTransactionManager , должен в конечном итоге вызвать ZwClose , чтобы закрыть дескриптор объекта.
Дополнительные сведения об использовании ZwCreateTransactionManager см. в разделе Создание Resource Manager.
NtCreateTransactionManager и ZwCreateTransactionManager — это две версии одной и той же подпрограммы Windows Native System Services.
Для вызовов из драйверов режима ядра версии NtXxx и ZwXxx подпрограммы собственных системных служб Windows могут вести себя по-разному, так как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между версиями процедуры NtXxx и ZwXxx см. в разделе Использование версий Nt и Zw для процедур собственных системных служб.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows Vista и более поздних версиях операционной системы. |
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | HwStorPortProhibitedDIs, PowerIrpDDis |
См. также раздел
Использование версий Nt и Zw собственных процедур системных служб