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