NtCreateTransactionManager 함수(wdm.h)

ZwCreateTransactionManager 루틴은 새 트랜잭션 관리자 개체를 만듭니다.

구문

__kernel_entry NTSYSCALLAPI NTSTATUS NtCreateTransactionManager(
  [out]          PHANDLE            TmHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional] PUNICODE_STRING    LogFileName,
  [in, optional] ULONG              CreateOptions,
  [in, optional] ULONG              CommitStrength
);

매개 변수

[out] TmHandle

트랜잭션 관리자 개체에 대한 핸들을 수신하는 호출자가 할당한 변수에 대한 포인터입니다.

[in] DesiredAccess

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

ACCESS_MASK 플래그 호출자가
TRANSACTIONMANAGER_CREATE_RM 리소스 관리자를 만듭니다( ZwCreateResourceManager 참조).
TRANSACTIONMANAGER_QUERY_INFORMATION 트랜잭션 관리자에 대한 정보를 가져옵니다( ZwQueryInformationTransactionManagerZwEnumerateTransactionObject 참조). ZwOpenResourceManager, ZwCreateTransactionZwOpenTransaction에도 필요합니다.)
TRANSACTIONMANAGER_RECOVER 트랜잭션 관리자를 복구합니다( ZwRecoverTransactionManagerZwRollforwardTransactionManager 참조).
TRANSACTIONMANAGER_RENAME 사용되지 않습니다.
TRANSACTIONMANAGER_SET_INFORMATION 사용되지 않습니다.
 

또는 다음 ACCESS_MASK 비트맵 중 하나 이상을 지정할 수 있습니다. 이러한 비트맵은 이전 테이블의 플래그를 ACCESS_MASK 참조 페이지에 설명된 STANDARD_RIGHTS_XXX 플래그와 결합합니다. 이러한 비트맵을 이전 테이블의 추가 플래그와 결합할 수도 있습니다. 다음 표에서는 비트맵이 특정 액세스 권한에 해당하는 방법을 보여줍니다.

권한 비트맵 특정 액세스 권한 집합
TRANSACTIONMANAGER_GENERIC_READ STANDARD_RIGHTS_READ 및 TRANSACTIONMANAGER_QUERY_INFORMATION
TRANSACTIONMANAGER_GENERIC_WRITE STANDARD_RIGHTS_WRITE, TRANSACTIONMANAGER_SET_INFORMATION, TRANSACTIONMANAGER_RECOVER, TRANSACTIONMANAGER_RENAME 및 TRANSACTIONMANAGER_CREATE_RM
TRANSACTIONMANAGER_GENERIC_EXECUTE STANDARD_RIGHTS_EXECUTE
TRANSACTIONMANAGER_ALL_ACCESS STANDARD_RIGHTS_REQUIRED, TRANSACTIONMANAGER_GENERIC_READ, TRANSACTIONMANAGER_GENERIC_WRITE 및 TRANSACTIONMANAGER_GENERIC_EXECUTE

[in, optional] ObjectAttributes

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

[in, optional] LogFileName

트랜잭션 관리자 개체와 연결할 CLFS 로그 파일 스트림의 경로 및 파일 이름을 포함하는 UNICODE_STRING 구조체에 대한 포인터입니다. CreateOptions 매개 변수가 TRANSACTION_MANAGER_VOLATILE 경우 이 매개 변수는 NULL이어야 합니다. 그렇지 않으면 이 매개 변수는 NULL이 아닌 매개 변수여야 합니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

[in, optional] CreateOptions

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

옵션 플래그 의미
TRANSACTION_MANAGER_VOLATILE 트랜잭션 관리자 개체는 휘발성입니다. 따라서 로그 파일을 사용하지 않습니다.
TRANSACTION_MANAGER_COMMIT_DEFAULT 내부 전용입니다.
TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME 내부 전용입니다.
TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES 내부 전용입니다.
TRANSACTION_MANAGER_COMMIT_LOWEST 내부 전용입니다.
TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY 내부 전용입니다.
TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS 내부 전용입니다.

[in, optional] CommitStrength

다음에 사용하도록 예약됩니다. 이 매개 변수는 0이어야 합니다.

반환 값

ZwCreateTransactionManager 는 작업이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 이 루틴이 다음 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_INVALID_PARAMETER
입력 매개 변수의 값이 잘못되었습니다.
STATUS_INSUFFICIENT_RESOURCES
KTM은 시스템 리소스(일반적으로 메모리)를 할당할 수 없습니다.
STATUS_LOG_CORRUPTION_DETECTED
로그 파일을 만들거나 여는 동안 KTM에 오류가 발생했습니다.
STATUS_INVALID_ACL
보안 설명자에 잘못된 ACL(액세스 제어 목록)이 포함되어 있습니다.
STATUS_INVALID_SID
보안 설명자에 잘못된 SID(보안 식별자)가 포함되어 있습니다.
STATUS_OBJECT_NAME_EXISTS
ObjectAttributes 매개 변수가 지정하는 개체 이름이 이미 있습니다.
STATUS_OBJECT_NAME_COLLISION
운영 체제에서 중복 개체 이름을 검색했습니다. 이 오류는 로그 스트림이 이미 사용되고 있음을 나타낼 수 있습니다.
STATUS_OBJECT_NAME_INVALID
ObjectAttributes 매개 변수가 지정하는 개체 이름이 잘못되었습니다.
STATUS_ACCESS_DENIED
DesiredAccess 매개 변수의 값이 잘못되었습니다.
 

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

설명

LogFileName 매개 변수가 지정하는 로그 파일 스트림이 없는 경우 KTM은 CLFS를 호출하여 스트림을 만듭니다. 스트림이 이미 있는 경우 KTM은 CLFS를 호출하여 스트림을 엽니다.

TPS 구성 요소는 ZwCreateTransactionManager를 호출한 후 ZwRecoverTransactionManager를 호출해야 합니다.

TPS 구성 요소가 CreateOptions 매개 변수에서 TRANSACTION_MANAGER_VOLATILE 플래그를 지정하는 경우 트랜잭션 관리자 개체와 연결된 모든 리소스 관리자는 ZwCreateResourceManager를 호출할 때 RESOURCE_MANAGER_VOLATILE 플래그를 지정해야 합니다.

ZwCreateTransactionManager를 호출하는 TPS 구성 요소는 결국 ZwClose를 호출하여 개체 핸들을 닫아야 합니다.

ZwCreateTransactionManager를 사용하는 방법에 대한 자세한 내용은 Resource Manager 만들기를 참조하세요.

NtCreateTransactionManagerZwCreateTransactionManager 는 동일한 Windows 네이티브 시스템 서비스 루틴의 두 가지 버전입니다.

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 운영 체제 버전에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs, PowerIrpDDis

추가 정보

InitializeObjectAttributes

OBJECT_ATTRIBUTES

UNICODE_STRING

네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용

ZwClose

ZwOpenTransactionManager

ZwQueryInformationTransactionManager

ZwRecoverTransactionManager

ZwRollforwardTransactionManager