Функция 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, если операция выполнена успешно. В противном случае эта подпрограмма может вернуть одно из следующих значений:
Возвращаемый код | Описание |
---|---|
|
Дескриптор, TmHandle, не является дескриптором объекта транзакции. |
|
Дескриптор, TmHandle, является недопустимым. |
|
Вызывающий объект не имеет соответствующего доступа к указанному объекту диспетчера транзакций. |
|
Дескриптор, TmHandle, закрывается. |
|
Значение параметра CreateOptions недопустимо или строка описания параметра слишком длинна. |
|
Параметр createOptions не указывает RESOURCE_MANAGER_VOLATILE, но диспетчер транзакций, TmHandle, является переменным. |
|
Guid, который ResourceManagerGuid уже существует. |
|
Недопустимое значение параметра 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 |
См. также
ZwGetNotificationResourceManager