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 클래스 드라이버는 다음 두 오류 중 하나가 발생할 때 이 상태 코드를 반환합니다.
- 지정된 RequestType 이 EXCLUSIVE_ACCESS_REQUEST_TYPE 유효한 멤버가 아닙니다.
- CDROM_EXCLUSIVE_LOCKCallerName 멤버의 호출자 이름 문자열이 명명 규칙을 위반합니다. CallerName 은 영숫자(A - Z, a - z, 0 - 9), 공백, 마침표, 쉼표, 콜론(:), 세미콜론(;), 하이픈(-) 및 밑줄(_))과 같은 문자를 포함하는 NULL로 끝나는 문자열이어야 합니다. 문자열의 길이는 문자열 끝에 있는 NULL 을 포함하여 CDROM_EXCLUSIVE_CALLER_LENGTH 바이트보다 작아야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | ntddcdrm.h(Ntddcdrm.h 포함) |
추가 정보
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기