Поделиться через


Функция NtCreateResourceManager (wdm.h)

Подпрограмма ZwCreateResourceManager создает объект диспетчера ресурсов .

Синтаксис

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

Параметры

[out] ResourceManagerHandle

Указатель на выделенную вызывающим переменную, которая получает дескриптор новому объекту resource manager, если вызов ZwCreateResourceManager выполнен успешно.

[in] DesiredAccess

Значение ACCESS_MASK, указывающее запрашиваемый доступ вызывающего объекта resource manager. Помимо прав доступа, определенных для всех видов объектов (см. ACCESS_MASK), вызывающий объект может указать любой из следующих флагов прав доступа для объектов resource manager:

флаг ACCESS_MASK Разрешает вызывающую функцию
RESOURCEMANAGER_ENLIST Перечисление в транзакции (см. ZwCreateEnlistment).
RESOURCEMANAGER_GET_NOTIFICATION Получение уведомлений о транзакциях, связанных с этим диспетчером ресурсов (см. ZwGetNotificationResourceManager).
RESOURCEMANAGER_REGISTER_PROTOCOL Не используется.
RESOURCEMANAGER_QUERY_INFORMATION Запрос сведений о диспетчере ресурсов (см. ZwQueryInformationResourceManager).
RESOURCEMANAGER_SET_INFORMATION Не используется.
RESOURCEMANAGER_RECOVER Восстановление диспетчера ресурсов (см. ZwRecoverResourceManager).
RESOURCEMANAGER_COMPLETE_PROPAGATION Не используется.
 

Кроме того, можно указать один или несколько следующих универсальных флагов ACCESS_MASK. (Флаги STANDARD_RIGHTS_Xxx являются предопределенными системными значениями, которые используются для обеспечения безопасности системных объектов.) Вы также можете объединить эти универсальные флаги с дополнительными флагами из предыдущей таблицы. В следующей таблице показано, как универсальные права доступа соответствуют определенным правам доступа.

Универсальное право доступа Набор определенных прав доступа
RESOURCEMANAGER_GENERIC_READ STANDARD_RIGHTS_READ, RESOURCEMANAGER_QUERY_INFORMATION и СИНХРОНИЗИРОВАТЬ
RESOURCEMANAGER_GENERIC_WRITE STANDARD_RIGHTS_WRITE, RESOURCEMANAGER_SET_INFORMATION, RESOURCEMANAGER_RECOVER, RESOURCEMANAGER_ENLIST, RESOURCEMANAGER_GET_NOTIFICATION, RESOURCEMANAGER_REGISTER_PROTOCOL, RESOURCEMANAGER_COMPLETE_PROPAGATION и СИНХРОНИЗАЦИЯ
RESOURCEMANAGER_GENERIC_EXECUTE STANDARD_RIGHTS_EXECUTE, RESOURCEMANAGER_RECOVER, RESOURCEMANAGER_ENLIST, RESOURCEMANAGER_GET_NOTIFICATION, RESOURCEMANAGER_COMPLETE_PROPAGATION и СИНХРОНИЗАЦИЯ
RESOURCEMANAGER_ALL_ACCESS STANDARD_RIGHTS_REQUIRED, RESOURCEMANAGER_GENERIC_READ, RESOURCEMANAGER_GENERIC_WRITE и RESOURCEMANAGER_GENERIC_EXECUTE

[in] TmHandle

Дескриптор объекта диспетчера транзакций , полученный предыдущим ZwCreateTransactionManager или ZwOpenTransactionManager.

[in] RmGuid

Указатель на GUID, который KTM будет использовать для идентификации диспетчера ресурсов. Если этот указатель равен NULL, KTM создает GUID.

[in, optional] ObjectAttributes

Указатель на структуру OBJECT_ATTRIBUTES, указывающую имя объекта и другие атрибуты. Используйте подпрограмму InitializeObjectAttributes для инициализации этой структуры. Если вызывающий объект не запущен в контексте системного потока, он должен задать атрибут OBJ_KERNEL_HANDLE при вызове InitializeObjectAttributes. Этот параметр является необязательным и может быть null.

[in, optional] CreateOptions

Необязательные флаги создания объектов. В следующей таблице содержатся доступные флаги, определенные в Ktmtypes.h.

флаг CreateOptions Значение
RESOURCE_MANAGER_COMMUNICATION Только для внутреннего использования.
RESOURCE_MANAGER_VOLATILE Вызывающий объект будет управлять переменными ресурсами. Он будет непрекращаемым и не будет выполнять восстановление.
 

Этот параметр является необязательным и может быть равен нулю.

[in, optional] Description

Указатель на указанную вызывающим UNICODE_STRING структуру, содержащую строку, завершающую значение NULL. Строка содержит описание диспетчера ресурсов. KTM сохраняет копию строки и содержит строку в сообщениях, которые он записывает в поток журнала. Максимальная длина строки — MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH. Этот параметр является необязательным и может быть null.

Возвращаемое значение

ZwCreateResourceManager возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае эта подпрограмма может вернуть одно из следующих значений:

Возвращаемый код Описание
STATUS_OBJECT_TYPE_MISMATCH
Дескриптор, TmHandle, не является дескриптором объекта транзакции.
STATUS_INVALID_HANDLE
Дескриптор, TmHandle, является недопустимым.
STATUS_ACCESS_DENIED
Вызывающий объект не имеет соответствующего доступа к указанному объекту диспетчера транзакций.
STATUS_TRANSACTION_OBJECT_EXPIRED
Дескриптор, TmHandle, закрывается.
STATUS_INVALID_PARAMETER
Значение параметра CreateOptions недопустимо или строка описания параметра слишком длинна.
STATUS_TM_VOLATILE
Параметр createOptions не указывает RESOURCE_MANAGER_VOLATILE, но диспетчер транзакций, TmHandle, является переменным.
STATUS_OBJECT_NAME_COLLISION
Guid, который ResourceManagerGuid уже существует.
STATUS_ACCESS_DENIED
Недопустимое значение параметра DesiredAccess.
 

Подпрограмма может возвращать другие значения NTSTATUS .

Замечания

Диспетчер ресурсов, вызывающий ZwCreateResourceManager, должен в конечном итоге вызвать ZwClose, чтобы закрыть дескриптор объекта.

Дополнительные сведения о ZwCreateResourceManagerсм. в созданииResource Manager.

Для вызовов драйверов в режиме ядра NtXxx и ZwXxx версии подпрограммы Windows Native System Services могут вести себя по-разному в том, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между NtXxx и ZwXxx версиями подпрограммы см. в разделе Using Nt and Zw Versions of the Native System Services Routines.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно в Windows Vista и более поздних версиях операционной системы.
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
правил соответствия DDI HwStorPortProhibitedDDIs, PowerIrpDDis

См. также

ACCESS_MASK

InitializeObjectAttributes

OBJECT_ATTRIBUTES

UNICODE_STRING

ZwClose

ZwCreateEnlistment

ZwCreateTransactionManager

ZwGetNotificationResourceManager

ZwOpenResourceManager

ZwOpenTransactionManager

ZwQueryInformationResourceManager

ZwRecoverResourceManager