트랜잭션 작업

애플리케이션 작성기는 KTM(커널 트랜잭션 관리자)을 사용하여 트랜잭션된 파일 및 레지스트리 작업을 추가하기 위해 사소한 소스 코드를 변경할 수 있습니다. 일반적으로 트랜잭션을 만들고 트랜잭션 NTFS 및 Transacted Registry와 같은 트랜잭션 리소스에서 제공하는 다른 함수에 핸들을 전달하는 작업이 포함됩니다.

KTM은 애플리케이션이 트랜잭션에 참여하고 고유한 트랜잭션 리소스 관리자를 작성할 수 있는 메커니즘을 제공합니다. 트랜잭션, 트랜잭션 관리자, 리소스 관리자 및 인리스트먼트의 네 가지 클래스인 커널 개체를 만들고, 관리하고, 작업할 수 있는 함수가 있습니다. 단순히 트랜잭션을 사용하는 경우 트랜잭션 개체로 작업하고 다음 함수만 사용해야 합니다.

트랜잭션이 활성 상태라고 가정하지 마세요. 트랜잭션은 여러 가지 이유로 언제든지 롤백할 수 있습니다.

Windows는 시스템 리소스에 핸들 기반 인터페이스를 노출합니다. 운영 체제 개체로 작업하기 위해 애플리케이션은 먼저 개체에 대한 핸들을 요청한 다음 후속 함수 호출에서 이 핸들을 사용하여 개체에 액세스하거나 수정합니다. 핸들은 일반적으로 다른 모드로 열 수 있습니다. 지정된 모드는 후속 함수 호출의 의미 체계에 영향을 줍니다. 예를 들어 dwDesiredAccess 플래그가 GENERIC_READ 설정된 CreateFile 호출로 열리는 파일 핸들은 파일을 수정하는 호출에서 사용할 수 없습니다.

SQL 또는 MSMQ와 같은 분산 트랜잭션 코디네이터 사용자 모드 리소스와 KTM을 사용하는 커널 모드 리소스를 사용하여 조정할 수 있습니다. 먼저 DTC 트랜잭션 또는 System.Transactions 개체를 만든 다음, KTM 핸들을 가져올 수 있는 IKernelTransaction 개체를 호출합니다. IKernelTransaction 개체는 DTC 트랜잭션에 종속된 KTM 트랜잭션을 만듭니다. 이 핸들을 사용하면 트랜잭션된 개체를 만들 수 있지만 DTC 또는 System.Transactions를 사용하여 트랜잭션 결과를 신호로 보낼 수 있습니다.