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 반환합니다. 그렇지 않으면 이 루틴이 다음 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
TmHandle에서 지정하는 핸들은 트랜잭션 개체에 대한 핸들이 아닙니다. |
|
TmHandle에서 지정하는 핸들이 잘못되었습니다. |
|
호출자에게 지정된 트랜잭션 관리자 개체에 대한 적절한 액세스 권한이 없습니다. |
|
TmHandle에서 지정하는 핸들이 닫혀 있습니다. |
|
CreateOptions 매개 변수의 값이 잘못되었거나 Description 매개 변수의 문자열이 너무 깁니다. |
|
CreateOptions 매개 변수는 RESOURCE_MANAGER_VOLATILE 지정하지 않지만 TmHandle에서 지정하는 트랜잭션 관리자는 휘발성입니다. |
|
ResourceManagerGuid에서 지정하는 GUID가 이미 있습니다. |
|
DesiredAccess 매개 변수의 값이 잘못되었습니다. |
루틴은 다른 NTSTATUS 값을 반환할 수 있습니다.
설명
ZwCreateResourceManager를 호출하는 리소스 관리자는 결국 ZwClose를 호출하여 개체 핸들을 닫아야 합니다.
ZwCreateResourceManager에 대한 자세한 내용은 Resource Manager 만들기를 참조하세요.
커널 모드 드라이버에서 호출하는 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxx 및 ZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 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 |
추가 정보
ZwGetNotificationResourceManager