Função ZwCreateTransactionManager (wdm.h)
A rotina ZwCreateTransactionManager cria um novo objeto do gerenciador de transações.
Sintaxe
NTSYSCALLAPI NTSTATUS ZwCreateTransactionManager(
[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
Um ponteiro para uma variável alocada pelo chamador que recebe um identificador para o novo objeto do gerenciador de transações.
[in] DesiredAccess
Um valor ACCESS_MASK que especifica o acesso solicitado do chamador ao objeto do gerenciador de transações. Além dos direitos de acesso definidos para todos os tipos de objetos (consulte ACCESS_MASK), o chamador pode especificar qualquer um dos seguintes sinalizadores de direito de acesso para objetos do gerenciador de transações.
sinalizador ACCESS_MASK | Permite que o chamador |
---|---|
TRANSACTIONMANAGER_CREATE_RM | Crie um gerenciador de recursos (consulte ZwCreateResourceManager). |
TRANSACTIONMANAGER_QUERY_INFORMATION | Obtenha informações sobre o gerenciador de transações (consulte ZwQueryInformationTransactionManager e ZwEnumerateTransactionObject). Também é necessário para ZwOpenResourceManager, ZwCreateTransaction e ZwOpenTransaction.) |
TRANSACTIONMANAGER_RECOVER | Recupere o gerenciador de transações (consulte ZwRecoverTransactionManager e ZwRollforwardTransactionManager). |
TRANSACTIONMANAGER_RENAME | Não usado. |
TRANSACTIONMANAGER_SET_INFORMATION | Não usado. |
Como alternativa, você pode especificar um ou mais dos bitmaps ACCESS_MASK a seguir. Esses bitmaps combinam os sinalizadores da tabela anterior com os sinalizadores STANDARD_RIGHTS_XXX descritos na página de referência do ACCESS_MASK . Você também pode combinar esses bitmaps com sinalizadores adicionais da tabela anterior. A tabela a seguir mostra como os bitmaps correspondem a direitos de acesso específicos.
Bitmap de direitos | Conjunto de direitos de acesso específicos |
---|---|
TRANSACTIONMANAGER_GENERIC_READ | STANDARD_RIGHTS_READ e TRANSACTIONMANAGER_QUERY_INFORMATION |
TRANSACTIONMANAGER_GENERIC_WRITE | STANDARD_RIGHTS_WRITE, TRANSACTIONMANAGER_SET_INFORMATION, TRANSACTIONMANAGER_RECOVER, TRANSACTIONMANAGER_RENAME e TRANSACTIONMANAGER_CREATE_RM |
TRANSACTIONMANAGER_GENERIC_EXECUTE | STANDARD_RIGHTS_EXECUTE |
TRANSACTIONMANAGER_ALL_ACCESS | STANDARD_RIGHTS_REQUIRED, TRANSACTIONMANAGER_GENERIC_READ, TRANSACTIONMANAGER_GENERIC_WRITE e TRANSACTIONMANAGER_GENERIC_EXECUTE |
[in, optional] ObjectAttributes
Um ponteiro para uma estrutura OBJECT_ATTRIBUTES que especifica o nome do objeto e outros atributos. Use a rotina InitializeObjectAttributes para inicializar essa estrutura. Se o chamador não estiver em execução em um contexto de thread do sistema, ele deverá definir o atributo OBJ_KERNEL_HANDLE quando chamar InitializeObjectAttributes. Esse parâmetro é opcional e pode ser NULL.
[in, optional] LogFileName
Um ponteiro para uma estrutura UNICODE_STRING que contém o caminho e o nome do arquivo de um fluxo de arquivos de log CLFS a ser associado ao objeto do gerenciador de transações. Esse parâmetro deverá ser NULL se o parâmetro CreateOptions for TRANSACTION_MANAGER_VOLATILE. Caso contrário, esse parâmetro deve ser não NULL. Para obter mais informações, consulte a seção Comentários a seguir.
[in, optional] CreateOptions
Sinalizadores de criação de objeto opcionais. A tabela a seguir contém os sinalizadores disponíveis, que são definidos em Ktmtypes.h.
Sinalizador de opção | Significado |
---|---|
TRANSACTION_MANAGER_VOLATILE | O objeto do gerenciador de transações será volátil. Portanto, ele não usará um arquivo de log. |
TRANSACTION_MANAGER_COMMIT_DEFAULT | Apenas para uso interno. |
TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME | Apenas para uso interno. |
TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES | Apenas para uso interno. |
TRANSACTION_MANAGER_COMMIT_LOWEST | Apenas para uso interno. |
TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY | Apenas para uso interno. |
TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS | Apenas para uso interno. |
[in, optional] CommitStrength
Reservado para uso futuro. Esse parâmetro deve ser zero.
Retornar valor
ZwCreateTransactionManager retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, essa rotina pode retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
O valor de um parâmetro de entrada é inválido. |
|
O KTM não pôde alocar recursos do sistema (normalmente memória). |
|
KTM encontrou um erro ao criar ou abrir o arquivo de log. |
|
Um descritor de segurança contém uma ACL (lista de controle de acesso) inválida. |
|
Um descritor de segurança contém um SID (identificador de segurança) inválido. |
|
O nome do objeto que o parâmetro ObjectAttributes especifica já existe. |
|
O sistema operacional detectou um nome de objeto duplicado. O erro pode indicar que o fluxo de log já está sendo usado. |
|
O nome do objeto especificado pelo parâmetro ObjectAttributes é inválido. |
|
O valor do parâmetro DesiredAccess é inválido. |
A rotina pode retornar outros valores NTSTATUS.
Comentários
Se o fluxo de arquivo de log especificado pelo parâmetro LogFileName não existir, o KTM chamará CLFS para criar o fluxo. Se o fluxo já existir, o KTM chamará CLFS para abrir o fluxo.
Seu componente TPS deve chamar ZwRecoverTransactionManager depois de chamar ZwCreateTransactionManager
Se o componente TPS especificar o sinalizador TRANSACTION_MANAGER_VOLATILE no parâmetro CreateOptions , todos os gerenciadores de recursos associados ao objeto do gerenciador de transações deverão especificar o sinalizador RESOURCE_MANAGER_VOLATILE quando chamarem ZwCreateResourceManager.
Um componente TPS que chama ZwCreateTransactionManager deve eventualmente chamar ZwClose para fechar o identificador do objeto.
Para obter mais informações sobre como usar ZwCreateTransactionManager, consulte Criando um Resource Manager.
NtCreateTransactionManager e ZwCreateTransactionManager são duas versões da mesma rotina dos Serviços de Sistema Nativo do Windows.
Para chamadas de drivers no modo kernel, as versões NtXxx e ZwXxx de uma rotina dos Serviços do Sistema Nativo do Windows podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível no Windows Vista e versões posteriores do sistema operacional. |
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (inclua Wdm.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |
Confira também
Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo