IOCTL_CDROM_EXCLUSIVE_ACCESS IOCTL(ntddcdrm.h)
IOCTL_CDROM_EXCLUSIVE_ACCESS 요청은 CD-ROM 클래스 드라이버에 다음을 지시합니다.
- CD-ROM 디바이스의 액세스 상태를 보고합니다.
- 단독 액세스를 위해 CD-ROM 디바이스를 잠급 수 있습니다.
- 단독 액세스를 위해 CD-ROM 디바이스의 잠금을 해제합니다.
주 코드
입력 버퍼
호출자가 요청하는 작업에 따라 호출자는 다음 구조 중 하나를 Irp->AssociatedIrp.SystemBuffer입력으로 제공해야 합니다.
-
CDROM_EXCLUSIVE_ACCESS(CD-ROM 디바이스의 액세스 상태를 보고하려면)
-
CDROM_EXCLUSIVE_LOCK(단독 액세스를 위해 CD-ROM 디바이스를 잠그기 위해)
-
CDROM_EXCLUSIVE_ACCESS(애플리케이션이 단독 액세스를 위해 잠근 CD-ROM 디바이스의 잠금을 해제하려면)
입력 버퍼 길이
IO_STACK_LOCATION 구조의 Parameters.DeviceIoControl.InputBufferLength 멤버는 사용자가 할당한 입력 버퍼의 크기(바이트)를 나타냅니다.
출력 버퍼
호출자가 CD-ROM 디바이스(RequestType = ExclusiveAccessQueryState)의 배타적 액세스 상태를 요청하는 경우 CD-ROM 클래스 드라이버는 LockState 멤버가 디바이스의 액세스 상태를 나타내는 Irp->AssociatedIrp.SystemBuffer 버퍼의 CDROM_EXCLUSIVE_LOCK_STATE형식 구조를 반환합니다.
출력 버퍼 길이
I/O 스택 위치(IO_STACK_LOCATION)의 Parameters.DeviceIoControl.OutputBufferLength 멤버는 출력 버퍼의 크기(바이트)를 나타냅니다.
상태 블록
정보 필드는 반환되는 바이트 수로 설정됩니다. 요청이 성공하면 상태 필드가 STATUS_SUCCESS 설정됩니다.
요청이 실패하면 상태 필드가 다음 오류 메시지 중 하나로 설정될 수 있습니다.
STATUS_ACCESS_DENIED(Windows 오류 코드: ERROR_ACCESS_DENIED)
단독 액세스를 위해 디바이스가 이미 잠겨 있습니다.
STATUS_BUFFER_TOO_SMALL(Windows 오류 코드: ERROR_INSUFFICIENT_BUFFER)
출력 버퍼가 ExclusiveAccessQueryState 요청에 비해 너무 작습니다.
STATUS_INFO_LENGTH_MISMATCH(Windows 오류 코드: ERROR_BAD_LENGTH)
입력 버퍼가 너무 작습니다.
STATUS_INVALID_DEVICE_REQUEST(Windows 오류 코드: ERROR_INVALID_FUNCTION)
CD-ROM 클래스 드라이버는 다음 두 오류 중 하나가 발생하면 이 상태 코드를 반환합니다.
- 호출자가 PASSIVE_LEVEL 이외의 IRQL 수준에서 요청을 했습니다.
- 호출자는 전용 모드가 아닌 디바이스의 잠금을 해제하기 위해 RequestType = ExclusiveAccessUnlockDevice 요청을 보냈습니다.
STATUS_INVALID_DEVICE_STATE(Windows 오류 코드: ERROR_BAD_COMMAND)
클래스 드라이버가 탑재된 파일 시스템 드라이버에 대한 검사를 일시 중단하도록 지정하지 않고 파일 시스템 드라이버가 이 디바이스에 탑재된 동안 호출자가 디바이스를 잠그려고 했습니다. 탑재된 파일 시스템 드라이버에 대한 검사를 일시 중단하려면 호출자가 CDROM_EXCLUSIVE_ACCESSFlags 멤버를 1로 설정해야 합니다.
STATUS_INVALID_HANDLE(Windows 오류 코드: ERROR_INVALID_HANDLE)
CD-ROM 클래스 드라이버는 다음 두 오류 중 하나가 발생하면 이 상태 코드를 반환합니다.
- 요청을 추적하는 데 필요한 파일 개체를 사용할 수 없습니다. CD-ROM 클래스 드라이버는 이 호출자로부터 파일 개체를 만들라는 요청을 받지 못했습니다.
- 호출자는 디바이스에 대한 단독 액세스 권한이 없더라도 RequestType = ExclusiveAccessUnlockDevice 사용하여 디바이스 잠금을 해제하는 요청을 보냈습니다.
STATUS_INVALID_PARAMETER(Windows 오류 코드: ERROR_INVALID_PARAMETER)
CD-ROM 클래스 드라이버는 다음 두 오류 중 하나가 발생하면 이 상태 코드를 반환합니다.
- 지정된 RequestTypeEXCLUSIVE_ACCESS_REQUEST_TYPE유효한 멤버가 아닙니다.
- CDROM_EXCLUSIVE_LOCKCallerName 멤버의 호출자 이름 문자열이 명명 규칙을 위반합니다. CallerName 영숫자(A - Z, a - z, 0 - 9), 공백, 마침표, 쉼표, 콜론(:), 세미콜론(;), 하이픈(-) 및 밑줄(_) 문자를 포함하는 NULL종료 문자열이어야 합니다. 문자열의 길이는 문자열 끝에 NULL 포함하여 CDROM_EXCLUSIVE_CALLER_LENGTH 바이트보다 작아야 합니다.
요구 사항
요구 | 값 |
---|---|
헤더 | ntddcdrm.h(Ntddcdrm.h 포함) |