Compartir a través de


Función NtCreateTransactionManager (wdm.h)

El ZwCreateTransactionManager rutina crea un nuevo objeto de administrador de transacciones.

Sintaxis

__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
);

Parámetros

[out] TmHandle

Puntero a una variable asignada por el autor de la llamada que recibe un identificador del nuevo objeto del administrador de transacciones .

[in] DesiredAccess

Valor ACCESS_MASK que especifica el acceso solicitado del autor de la llamada al objeto del administrador de transacciones. Además de los derechos de acceso definidos para todos los tipos de objetos (vea ACCESS_MASK), el autor de la llamada puede especificar cualquiera de las siguientes marcas de acceso adecuadas para los objetos del administrador de transacciones.

marca de ACCESS_MASK Permite al autor de la llamada
TRANSACTIONMANAGER_CREATE_RM Cree un administrador de recursos (consulte ZwCreateResourceManager).
TRANSACTIONMANAGER_QUERY_INFORMATION Obtenga información sobre el administrador de transacciones (vea ZwQueryInformationTransactionManager y ZwEnumerateTransactionObject). También es necesario para ZwOpenResourceManager, ZwCreateTransactiony ZwOpenTransaction).
TRANSACTIONMANAGER_RECOVER Recupere el administrador de transacciones (consulte ZwRecoverTransactionManager y ZwRollforwardTransactionManager).
TRANSACTIONMANAGER_RENAME No se usa.
TRANSACTIONMANAGER_SET_INFORMATION No se usa.
 

Como alternativa, puede especificar uno o varios de los siguientes ACCESS_MASK mapas de bits. Estos mapas de bits combinan las marcas de la tabla anterior con las marcas deXXX STANDARD_RIGHTS_ que se describen en la página de referencia de ACCESS_MASK. También puede combinar estos mapas de bits con marcas adicionales de la tabla anterior. En la tabla siguiente se muestra cómo se corresponden los mapas de bits con derechos de acceso específicos.

Mapa de bits de derechos Conjunto de derechos de acceso específicos
TRANSACTIONMANAGER_GENERIC_READ STANDARD_RIGHTS_READ y TRANSACTIONMANAGER_QUERY_INFORMATION
TRANSACTIONMANAGER_GENERIC_WRITE STANDARD_RIGHTS_WRITE, TRANSACTIONMANAGER_SET_INFORMATION, TRANSACTIONMANAGER_RECOVER, TRANSACTIONMANAGER_RENAME y TRANSACTIONMANAGER_CREATE_RM
TRANSACTIONMANAGER_GENERIC_EXECUTE STANDARD_RIGHTS_EXECUTE
TRANSACTIONMANAGER_ALL_ACCESS STANDARD_RIGHTS_REQUIRED, TRANSACTIONMANAGER_GENERIC_READ, TRANSACTIONMANAGER_GENERIC_WRITE y TRANSACTIONMANAGER_GENERIC_EXECUTE

[in, optional] ObjectAttributes

Puntero a una estructura OBJECT_ATTRIBUTES que especifica el nombre del objeto y otros atributos. Use la rutina de InitializeObjectAttributes para inicializar esta estructura. Si el autor de la llamada no se ejecuta en un contexto de subproceso del sistema, debe establecer el atributo OBJ_KERNEL_HANDLE cuando llama a InitializeObjectAttributes. Este parámetro es opcional y se puede NULL.

[in, optional] LogFileName

Puntero a una estructura de UNICODE_STRING que contiene la ruta de acceso y el nombre de archivo de un flujo de archivos de registro CLFS de asociar con el objeto del administrador de transacciones. Este parámetro debe ser null si TRANSACTION_MANAGER_VOLATILE parámetro CreateOp tions. De lo contrario, este parámetro debe ser distinto deNULL. Para obtener más información, vea la siguiente sección Comentarios.

[in, optional] CreateOptions

Marcas de creación de objetos opcionales. La tabla siguiente contiene las marcas disponibles, que se definen en Ktmtypes.h.

Marca de opción Significado
TRANSACTION_MANAGER_VOLATILE El objeto del administrador de transacciones será volátil. Por lo tanto, no usará un archivo de registro.
TRANSACTION_MANAGER_COMMIT_DEFAULT Solo para uso interno.
TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME Solo para uso interno.
TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES Solo para uso interno.
TRANSACTION_MANAGER_COMMIT_LOWEST Solo para uso interno.
TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY Solo para uso interno.
TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS Solo para uso interno.

[in, optional] CommitStrength

Reservado para uso futuro. Este parámetro debe ser cero.

Valor devuelto

ZwCreateTransactionManager devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, esta rutina podría devolver uno de los siguientes valores:

Código devuelto Descripción
STATUS_INVALID_PARAMETER
El valor de un parámetro de entrada no es válido.
STATUS_INSUFFICIENT_RESOURCES
KTM no pudo asignar recursos del sistema (normalmente memoria).
STATUS_LOG_CORRUPTION_DETECTED
KTM encontró un error al crear o abrir el archivo de registro.
STATUS_INVALID_ACL
Un descriptor de seguridad contiene una lista de control de acceso (ACL) no válida.
STATUS_INVALID_SID
Un descriptor de seguridad contiene un identificador de seguridad (SID) no válido.
STATUS_OBJECT_NAME_EXISTS
El nombre de objeto que el parámetro ObjectAttributes especifica que ya existe.
STATUS_OBJECT_NAME_COLLISION
El sistema operativo detectó un nombre de objeto duplicado. El error podría indicar que la secuencia de registro ya se está usando.
STATUS_OBJECT_NAME_INVALID
El nombre de objeto que especifica el parámetro ObjectAttributes no es válido.
STATUS_ACCESS_DENIED
El valor del parámetro DesiredAccess no es válido.
 

La rutina puede devolver otros valores NTSTATUS de .

Observaciones

Si no existe la secuencia de archivos de registro que el parámetro LogFileName especifica, KTM llama a CLFS para crear la secuencia. Si la secuencia ya existe, KTM llama a CLFS para abrir la secuencia.

El componente TPS debe llamar a ZwRecoverTransactionManager después de llamar a ZwCreateTransactionManager

Si el componente TPS especifica la marca TRANSACTION_MANAGER_VOLATILE en el parámetro CreateOptions , todos los administradores de recursos asociados al objeto de administrador de transacciones deben especificar la marca de RESOURCE_MANAGER_VOLATILE cuando llamen a ZwCreateResourceManager.

Un componente TPS que llama a ZwCreateTransactionManager debe llamar finalmente a ZwClose para cerrar el identificador del objeto.

Para obtener más información sobre cómo usar ZwCreateTransactionManager, vea Creating a Resource Manager.

NtCreateTransactionManager y ZwCreateTransactionManager son dos versiones de la misma rutina de Servicios del sistema nativo de Windows.

En el caso de las llamadas desde controladores en modo kernel, las NtXxx y Zwversiones de Xxx de una rutina de Servicios del sistema nativo de Windows pueden comportarse de forma diferente en la forma en que controlan e interpretan los parámetros de entrada. Para obtener más información sobre la relación entre las versiones de NtXxx y ZwXxx de una rutina, vea Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible en Windows Vista y versiones posteriores del sistema operativo.
de la plataforma de destino de Universal
encabezado de wdm.h (include Wdm.h, Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL PASSIVE_LEVEL
reglas de cumplimiento de DDI HwStorPortProhibitedDIs, PowerIrpDDis

Consulte también

initializeObjectAttributes

OBJECT_ATTRIBUTES

UNICODE_STRING

usar versiones Nt y Zw de las rutinas de servicios del sistema nativo

ZwClose

ZwOpenTransactionManager

ZwQueryInformationTransactionManager

ZwRecoverTransactionManager

ZwRollforwardTransactionManager