다음을 통해 공유


ChangerReinitializeUnit 함수(mcd.h)

ChangerReinitializeUnit 은 IOCTL 코드 IOCTL_CHANGER_REINITIALIZE_TRANSPORT 사용하여 디바이스 제어 IRP의 디바이스별 측면을 처리합니다.

구문

NTSTATUS ChangerReinitializeUnit(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PIRP           Irp
);

매개 변수

[in] DeviceObject

변경자를 나타내는 디바이스 개체에 대한 포인터입니다.

[in] Irp

IRP에 대한 포인터입니다.

반환 값

체인저가 전송 요소의 재보정을 지원하는 경우 ChangerReinitializeUnit 은 시스템 포트 드라이버에서 반환하는 STATUS_XXX 값 또는 다음 값 중 하나를 반환합니다.

STATUS_SUCCESS

STATUS_INVALID_ELEMENT_ADDRESS

STATUS_INVALID_PARAMETER

STATUS_INSUFFICIENT_RESOURCES

체인저가 전송 요소의 재보정을 지원하지 않는 경우 ChangerReinitializeUnit은 STATUS_INVALID_DEVICE_REQUEST 반환합니다.

설명

이 루틴은 필수입니다.

ChangerReinitializeUnit 은 변경자가 해당 전송 요소를 다시 크기 조정하도록 합니다. 체인저에 따라 전송을 "홈" 위치로 반환할 수 있습니다. 변경자 클래스 드라이버는 일반적으로 변경자의 전원이 켜지거나 호출하는 애플리케이션이 복구 작업을 시작한 후 ChangerReinitializeUnit 을 호출합니다. GET_CHANGER_PARAMETERS Features0CHANGER_DEVICE_REINITIALIZE_CAPABLE 플래그는 변경자의 전송이 이러한 상황에서 재보정을 지원하는지 여부를 나타냅니다.

ChangerReinitializeUnit을 호출하기 전에 체인저 클래스 드라이버는 I/O 스택 위치의 입력 버퍼 길이를 확인합니다. Irp-SystemBuffer>는 재보정할 요소를 나타내는 CHANGER_ELEMENT 구조를 가리킵니다.

ChangerReinitializeUnit 은 CDB를 사용하여 SRB를 빌드하여 전송 요소를 배치하고 시스템 포트 드라이버로 보냅니다.

ChangerReinitializeUnit은 변경자 클래스 드라이버로 돌아가기 전에 I/O 상태 블록의 정보 필드를 sizeof(CHANGER_ELEMENT)로 설정합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 mcd.h(Mcd.h, Ntddchgr.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

, IOCTL_CHANGER_REINITIALIZE_TRANSPORT

CHANGER_ELEMENT

GET_CHANGER_PARAMETERS