다음을 통해 공유


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

ZwCreateResourceManager에 대한 호출이 성공한 경우 새 리소스 관리자 개체에 대한 핸들을 수신하는 호출자 할당 변수에 대한 포인터입니다.

[in] DesiredAccess

리소스 관리자 개체에 대한 호출자의 요청된 액세스를 지정하는 ACCESS_MASK 값입니다. 호출자는 모든 종류의 개체에 대해 정의된 액세스 권한( ACCESS_MASK 참조) 외에도 리소스 관리자 개체에 대해 다음 액세스 권한 플래그를 지정할 수 있습니다.

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] RmGuid

KTM이 리소스 관리자를 식별하는 데 사용할 GUID에 대한 포인터입니다. 이 포인터가 NULL이면 KTM에서 GUID를 생성합니다.

[in, optional] ObjectAttributes

개체 이름 및 기타 특성을 지정하는 OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. InitializeObjectAttributes 루틴을 사용하여 이 구조를 초기화합니다. 호출자가 시스템 스레드 컨텍스트에서 실행되고 있지 않으면 InitializeObjectAttributes를 호출할 때 OBJ_KERNEL_HANDLE 특성을 설정해야 합니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

[in, optional] CreateOptions

선택적 개체 만들기 플래그입니다. 다음 표에는 Ktmtypes.h에 정의된 사용 가능한 플래그가 포함되어 있습니다.

CreateOptions 플래그 의미
RESOURCE_MANAGER_COMMUNICATION 내부 전용입니다.
RESOURCE_MANAGER_VOLATILE 호출자는 휘발성 리소스를 관리합니다. 비영구적이고 복구를 수행하지 않습니다.
 

이 매개 변수는 선택 사항이며 0일 수 있습니다.

[in, optional] Description

NULL로 끝나는 문자열을 포함하는 호출자가 제공한 UNICODE_STRING 구조체에 대한 포인터입니다. 문자열은 리소스 관리자에 대한 설명을 제공합니다. 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
ResourceManagerGuid에서 지정하는 GUID가 이미 있습니다.
STATUS_ACCESS_DENIED
DesiredAccess 매개 변수의 값이 잘못되었습니다.
 

루틴은 다른 NTSTATUS 값을 반환할 수 있습니다.

설명

ZwCreateResourceManager를 호출하는 리소스 관리자는 결국 ZwClose를 호출하여 개체 핸들을 닫아야 합니다.

ZwCreateResourceManager에 대한 자세한 내용은 Resource Manager 만들기를 참조하세요.

커널 모드 드라이버에서 호출하는 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxxZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 NtXxx 버전과 ZwXxx 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 운영 체제 버전에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(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