Função NtCreateResourceManager (wdm.h)

A rotina ZwCreateResourceManager cria um objeto do gerenciador de recursos.

Sintaxe

__kernel_entry NTSYSCALLAPI NTSTATUS NtCreateResourceManager(
  [out]          PHANDLE            ResourceManagerHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in]           HANDLE             TmHandle,
  [in]           LPGUID             RmGuid,
  [in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional] ULONG              CreateOptions,
  [in, optional] PUNICODE_STRING    Description
);

Parâmetros

[out] ResourceManagerHandle

Um ponteiro para uma variável alocada pelo chamador que recebe um identificador para o novo objeto do gerenciador de recursos se a chamada para ZwCreateResourceManager for bem-sucedida.

[in] DesiredAccess

Um valor ACCESS_MASK que especifica o acesso solicitado do chamador ao objeto do gerenciador de recursos. 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 recursos:

sinalizador ACCESS_MASK Permite que o chamador
RESOURCEMANAGER_ENLIST Inscrever-se em transações (consulte ZwCreateEnlistment).
RESOURCEMANAGER_GET_NOTIFICATION Receba notificações sobre as transações associadas a esse gerenciador de recursos (consulte ZwGetNotificationResourceManager).
RESOURCEMANAGER_REGISTER_PROTOCOL Não usado.
RESOURCEMANAGER_QUERY_INFORMATION Consultar informações sobre o gerenciador de recursos (consulte ZwQueryInformationResourceManager).
RESOURCEMANAGER_SET_INFORMATION Não usado.
RESOURCEMANAGER_RECOVER Recupere o gerenciador de recursos (consulte ZwRecoverResourceManager).
RESOURCEMANAGER_COMPLETE_PROPAGATION Não usado.
 

Como alternativa, você pode especificar um ou mais dos sinalizadores de ACCESS_MASK genéricos a seguir. (Os sinalizadores STANDARD_RIGHTS_Xxx são valores predefinidos do sistema que são usados para impor a segurança em objetos do sistema.) Você também pode combinar esses sinalizadores genéricos com sinalizadores adicionais da tabela anterior. A tabela a seguir mostra como os direitos de acesso genéricos correspondem a direitos de acesso específicos.

Direito de acesso genérico Conjunto de direitos de acesso específicos
RESOURCEMANAGER_GENERIC_READ STANDARD_RIGHTS_READ, RESOURCEMANAGER_QUERY_INFORMATION e SYNCHRONIZE
RESOURCEMANAGER_GENERIC_WRITE STANDARD_RIGHTS_WRITE, RESOURCEMANAGER_SET_INFORMATION, RESOURCEMANAGER_RECOVER, RESOURCEMANAGER_ENLIST, RESOURCEMANAGER_GET_NOTIFICATION, RESOURCEMANAGER_REGISTER_PROTOCOL, RESOURCEMANAGER_COMPLETE_PROPAGATION e SYNCHRONIZE
RESOURCEMANAGER_GENERIC_EXECUTE STANDARD_RIGHTS_EXECUTE, RESOURCEMANAGER_RECOVER, RESOURCEMANAGER_ENLIST, RESOURCEMANAGER_GET_NOTIFICATION, RESOURCEMANAGER_COMPLETE_PROPAGATION e SYNCHRONIZE
RESOURCEMANAGER_ALL_ACCESS STANDARD_RIGHTS_REQUIRED, RESOURCEMANAGER_GENERIC_READ, RESOURCEMANAGER_GENERIC_WRITE e RESOURCEMANAGER_GENERIC_EXECUTE

[in] TmHandle

Um identificador para um objeto do gerenciador de transações que foi obtido por um anterior para ZwCreateTransactionManager ou ZwOpenTransactionManager.

[in] RmGuid

Um ponteiro para um GUID que o KTM usará para identificar o gerenciador de recursos. Se esse ponteiro for NULL, KTM gerará um GUID.

[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] 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 CreateOptions Significado
RESOURCE_MANAGER_COMMUNICATION Apenas para uso interno.
RESOURCE_MANAGER_VOLATILE O chamador gerenciará recursos voláteis. Ele não será persistente e não executará a recuperação.
 

Esse parâmetro é opcional e pode ser zero.

[in, optional] Description

Um ponteiro para uma estrutura de UNICODE_STRING fornecida pelo chamador que contém uma cadeia de caracteres terminada em NULL. A cadeia de caracteres fornece uma descrição do gerenciador de recursos. A KTM armazena uma cópia da cadeia de caracteres e inclui a cadeia de caracteres em mensagens que ela grava no fluxo de log. O comprimento máximo da cadeia de caracteres é MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH. Esse parâmetro é opcional e pode ser NULL.

Retornar valor

ZwCreateResourceManager 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
STATUS_OBJECT_TYPE_MISMATCH
O identificador especificado por TmHandle não é um identificador para um objeto de transação.
STATUS_INVALID_HANDLE
O identificador especificado por TmHandle é inválido.
STATUS_ACCESS_DENIED
O chamador não tem acesso apropriado ao objeto do gerenciador de transações especificado.
STATUS_TRANSACTION_OBJECT_EXPIRED
O identificador especificado por TmHandle é fechado.
STATUS_INVALID_PARAMETER
O valor do parâmetro CreateOptions é inválido ou a cadeia de caracteres do parâmetro Description é muito longa.
STATUS_TM_VOLATILE
O parâmetro CreateOptions não especifica RESOURCE_MANAGER_VOLATILE mas o gerenciador de transações especificado pelo TmHandle é volátil.
STATUS_OBJECT_NAME_COLLISION
O GUID que ResourceManagerGuid especifica já existe.
STATUS_ACCESS_DENIED
O valor do parâmetro DesiredAccess é inválido.
 

A rotina pode retornar outros valores NTSTATUS.

Comentários

Um gerenciador de recursos que chama ZwCreateResourceManager deve eventualmente chamar ZwClose para fechar o identificador do objeto.

Para obter mais informações sobre ZwCreateResourceManager, consulte Criando um Resource Manager.

Para chamadas de drivers de modo kernel, as versões NtXxx e ZwXxx de uma rotina do Windows Native System Services 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 Using Nt and Zw Versions of the Native System Services Routines.

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 (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI HwStorPortProhibitedDDIs, PowerIrpDDis

Confira também

ACCESS_MASK

InitializeObjectAttributes

OBJECT_ATTRIBUTES

UNICODE_STRING

ZwClose

ZwCreateEnlistment

ZwCreateTransactionManager

ZwGetNotificationResourceManager

ZwOpenResourceManager

ZwOpenTransactionManager

ZwQueryInformationResourceManager

ZwRecoverResourceManager