다음을 통해 공유


IDiscRecorder2::AcquireExclusiveAccess 메서드(imapi2.h)

디바이스에 대한 단독 액세스 권한을 획득합니다.

구문

HRESULT AcquireExclusiveAccess(
  [in] VARIANT_BOOL force,
  [in] BSTR         __MIDL__IDiscRecorder20000
);

매개 변수

[in] force

파일 시스템 볼륨을 분리할 수 있는지 아니면 분리할 수 없는지 여부에 관계없이 볼륨에 대한 단독 액세스 권한을 얻으려면 VARIANT_TRUE 로 설정합니다. VARIANT_FALSE 경우 이 메서드는 볼륨에 탑재된 파일 시스템이 없는 경우에만 단독 액세스 권한을 얻습니다.

[in] __MIDL__IDiscRecorder20000

단독 액세스를 요청하는 클라이언트 애플리케이션의 식별 이름을 포함하는 문자열입니다. NULL 또는 길이가 0인 문자열일 수 없습니다. 문자열은 DDK에 있는 IOCTL_CDROM_EXCLUSIVE_ACCESS 제어 코드에 대한 제한을 준수해야 합니다.

반환 값

S_OK 성공하면 반환되지만 구현의 결과로 다른 성공 코드가 반환될 수 있습니다. 다음 오류 코드는 일반적으로 작업 실패 시 반환되지만 가능한 유일한 오류 값은 나타내지 않습니다.

반환 코드 설명
E_FAIL
지정되지 않은 오류입니다.

값: 0x80004005

E_ACCESS_DENIED
디바이스는 현재 다른 애플리케이션에서 사용되고 있습니다.

값: 0x80070005

E_INVALIDARG
하나 이상의 인수가 잘못되었습니다.

값: 0x80070057

E_OUTOFMEMORY
필요한 메모리를 할당하지 못했습니다.

값: 0x8007000E

E_IMAPI_RECORDER_COMMAND_TIMEOUT
디바이스가 시간 제한 기간 내에 명령을 수락하지 못했습니다. 이는 디바이스가 일관되지 않은 상태를 입력했거나 명령에 대한 시간 제한 값을 늘려야 할 수 있으므로 발생할 수 있습니다.

값: 0xC0AA020D

HRESULT_FROM_WIN32(ERROR_INVALID_HANDLE)
지정한 핸들이 잘못되었습니다.

값: 6

HRESULT_FROM_WIN32(ERROR_DEV_NOT_EXIST)
지정된 네트워크 리소스 또는 디바이스를 더 이상 사용할 수 없습니다.

값: 55

E_IMAPI_RECORDER_LOCKED
마지막 작업 중에 이 레코더와 연결된 디바이스가 단독으로 잠겨 있어 이 작업이 실패합니다.

값: 0xC0AA0210

설명

IDiscFormat2Data::Write와 같은 쓰기 작업이 잠금을 획득하기 때문에 잠금을 직접 획득하기 위해 이 메서드를 호출할 필요가 없습니다.

각 레코더에는 잠금 수가 있습니다. 레코더에 대한 첫 번째 호출은 단독 액세스를 위해 디바이스를 잠급 수 있습니다. 애플리케이션은 AcquireExclusiveAccess 메서드를 여러 번 사용하여 디바이스에 여러 잠금을 적용할 수 있습니다. 각 호출은 잠금 수를 1씩 증가합니다.

레코더의 잠금을 해제할 때 다른 클라이언트의 디바이스를 해제하려면 잠금 수가 0에 도달해야 합니다. IDiscRecorder2::ReleaseExclusiveAccess 메서드를 호출하면 잠금 수가 1씩 감소합니다.

디바이스를 해제하려면 AcquireExclusiveAccessReleaseExclusiveAccess 메서드에 대한 동일한 수의 호출이 필요합니다. 단독 액세스를 유지하는 동안 애플리케이션이 예기치 않게 종료되거나 충돌하는 경우 CDROM.SYS 드라이버는 이러한 배타적 잠금을 자동으로 해제합니다.

디바이스가 이미 잠겨 있는 경우 IDiscRecorder2::get_ExclusiveAccessOwner 호출하여 현재 단독 액세스 권한이 있는 클라이언트 애플리케이션의 이름을 검색할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista, WINDOWS XP SP2 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 imapi2.h

추가 정보

IDiscRecorder2

IDiscRecorder2::ReleaseExclusiveAccess

IDiscRecorder2::get_ExclusiveAccessOwner