NtOpenRegistryTransaction - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
#ifndef _NTREGAPI_H
#if (PHNT_VERSION >= PHNT_WINDOWS_10_RS1)

/**
 * Opens an existing named registry-only lightweight transaction. This is object- name lookup, not lookup of a
 * registry key or a KTM unit-of-work GUID.
 *
 * \param RegistryTransactionHandle Required output receiving a separately owned handle on success; close it
 * with NtClose. Other open/duplicate handles keep the same transaction object alive. Initialize this output
 * and check status.
 * \param DesiredAccess Requested rights, including 0x4 for transacted key association, 0x8 for commit or 0x10
 * for rollback as needed.
 * \param ObjAttributes Initialized attributes identifying the named transaction in the Object Manager
 * namespace. An unnamed transaction cannot be reopened by inventing a registry path or by passing its handle
 * as a UOW identifier.
 * \return STATUS_SUCCESS or an error such as STATUS_OBJECT_NAME_NOT_FOUND. After the last transaction handle
 * closes, the rolled-back key is no longer available under its former name.
 * \remarks Registry and KTM transactions are different object types. To open a KTM transaction by its GUID
 * use NtOpenTransaction instead. Opening another handle does not clone the transaction or reset a completed
 * transaction.
 */
_Kernel_entry_
NTSYSCALLAPI
NTSTATUS
NTAPI
NtOpenRegistryTransaction(
    _Out_ HANDLE *RegistryTransactionHandle,
    _In_ ACCESS_MASK DesiredAccess,
    _In_ POBJECT_ATTRIBUTES ObjAttributes
    );

#endif
#endif

View code on GitHub
#ifndef _NTZWAPI_H

_Kernel_entry_
NTSYSCALLAPI
NTSTATUS
NTAPI
ZwOpenRegistryTransaction(
    _Out_ HANDLE *RegistryTransactionHandle,
    _In_ ACCESS_MASK DesiredAccess,
    _In_ POBJECT_ATTRIBUTES ObjAttributes
    );

#endif

View code on GitHub

NtDoc

No description available.