다음을 통해 공유


IOCTL_STORAGE_EJECTION_CONTROL IOCTL(ntddstor.h)

디바이스를 잠가 미디어 제거를 방지합니다. 드라이브가 사용 중일 때 드라이버가 미디어를 제거하는 것을 방지할 수 있는 경우 드라이버는 미디어를 꺼내는 메커니즘을 사용하지 않도록 설정하거나 사용하도록 설정하여 드라이브를 잠급니다. 호출자는 이 요청을 보내려면 FILE_READ_ATTRIBUTES 사용하여 디바이스를 열어야 합니다.

IOCTL_STORAGE_MEDIA_REMOVAL 달리 드라이버는 호출자가 IOCTL_STORAGE_EJECTION_CONTROL 요청을 추적하고 동일한 호출자로부터 잠금 요청을 받지 못한 잠금 해제 요청을 무시하여 다른 호출자가 드라이브의 잠금을 해제하지 못하도록 합니다.

이동식 미디어 디바이스용 드라이버 - 이 IOCTL을 지원할 수 있는 경우 다음을 수행해야 합니다.

  1. 디바이스 개체 확장에서 호출자가 태그를 지정한 잠금 수를 유지합니다.
  2. 물리적 디바이스당 잠금 수를 유지합니다.
  3. 이 IOCTL을 사용하여 호출할 때 미디어 제거를 방지하는 플래그가 설정된 경우 개수를 증분합니다. 플래그가 명확하고 드라이버가 이전에 동일한 호출자로부터 잠금 요청을 받은 경우 수를 감소합니다.
  4. 모든 잠금 수가 0이 아닌 경우 미디어 제거를 방지합니다.
정상적인 상황에서는 IOCTL_STORAGE_EJECTION_CONTROL 사용하여 디바이스를 잠근 호출자가 Irp->AssociatedIrp.SystemBufferFALSE의 부울 값으로 설정하여 IOCTL_STORAGE_EJECTION_CONTROL 다시 전송하여 디바이스의 잠금을 해제합니다. 그러나 호출자가 디바이스의 잠금을 제대로 해제하지 못하는 경우가 있습니다.

미디어 제거 잠금이 제대로 해제되도록 클래스 드라이버는 IOCTL_STORAGE_EJECTION_CONTROL 미디어를 잠그는 호출자를 추적합니다. 호출자가 디바이스의 잠금을 해제하지 않고 종료되면 클래스 드라이버가 디바이스의 잠금을 해제합니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

Irp-AssociatedIrp.SystemBuffer>의 버퍼에는 부울 값이 포함되어 있으며 TRUE는 드라이버가 드라이브의 미디어를 잠가야 함을 나타냅니다.

입력 버퍼 길이

부울의 길이입니다.

출력 버퍼

없음

출력 버퍼 길이

없음

상태 블록

정보 필드는 0으로 설정됩니다. 상태 필드는 STATUS_SUCCESS 또는 STATUS_INVALID_DEVICE_REQUEST, STATUS_NO_MEDIA_IN_DEVICE 또는 STATUS_DEVICE_NOT_CONNECTED 설정됩니다.

요구 사항

요구 사항
헤더 ntddstor.h(Ntddstor.h 포함)

추가 정보

IOCTL_STORAGE_EJECT_MEDIA