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


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

Подпрограмма ZwCreateResourceManager создает объект resource manager.

Синтаксис

NTSYSCALLAPI NTSTATUS ZwCreateResourceManager(
  [out]          PHANDLE            ResourceManagerHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in]           HANDLE             TmHandle,
  [in, optional] LPGUID             ResourceManagerGuid,
  [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 и SYNCHRONIZE
RESOURCEMANAGER_GENERIC_WRITE STANDARD_RIGHTS_WRITE, RESOURCEMANAGER_SET_INFORMATION, RESOURCEMANAGER_RECOVER, RESOURCEMANAGER_ENLIST, RESOURCEMANAGER_GET_NOTIFICATION, RESOURCEMANAGER_REGISTER_PROTOCOL, RESOURCEMANAGER_COMPLETE_PROPAGATION и SYNCHRONIZE
RESOURCEMANAGER_GENERIC_EXECUTE STANDARD_RIGHTS_EXECUTE, RESOURCEMANAGER_RECOVER, RESOURCEMANAGER_ENLIST, RESOURCEMANAGER_GET_NOTIFICATION, RESOURCEMANAGER_COMPLETE_PROPAGATION и SYNCHRONIZE
RESOURCEMANAGER_ALL_ACCESS STANDARD_RIGHTS_REQUIRED, RESOURCEMANAGER_GENERIC_READ, RESOURCEMANAGER_GENERIC_WRITE и RESOURCEMANAGER_GENERIC_EXECUTE

[in] TmHandle

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

[in, optional] ResourceManagerGuid

Указатель на 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 вызывающей 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 или строка параметра Description слишком длинна.
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 могут вести себя по-разному, так как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между версиями подпрограмм NtXxx и ZwXxx см. в разделе Использование версий NT и Zw подпрограмм собственных системных служб.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционной системы.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

См. также раздел

ACCESS_MASK

InitializeObjectAttributes

OBJECT_ATTRIBUTES

UNICODE_STRING

ZwClose

ZwCreateEnlistment

ZwCreateTransactionManager

ZwGetNotificationResourceManager

ZwOpenResourceManager

ZwOpenTransactionManager

ZwQueryInformationResourceManager

ZwRecoverResourceManager