다음을 통해 공유


MCD_INIT_DATA 구조체(mcd.h)

체인저 미니 클래스 드라이버는 내부 명령 처리 루틴에 대한 포인터로 MCD_INIT_DATA 구조를 채우고 이를 체인저 클래스 드라이버에 전달합니다.

통사론

typedef struct _MCD_INIT_DATA {
  ULONG                       InitDataSize;
  CHANGER_EXTENSION_SIZE      ChangerAdditionalExtensionSize;
  CHANGER_INITIALIZE          ChangerInitialize;
  CHANGER_ERROR_ROUTINE       ChangerError;
  CHANGER_PERFORM_DIAGNOSTICS ChangerPerformDiagnostics;
  CHANGER_COMMAND_ROUTINE     ChangerGetParameters;
  CHANGER_COMMAND_ROUTINE     ChangerGetStatus;
  CHANGER_COMMAND_ROUTINE     ChangerGetProductData;
  CHANGER_COMMAND_ROUTINE     ChangerSetAccess;
  CHANGER_COMMAND_ROUTINE     ChangerGetElementStatus;
  CHANGER_COMMAND_ROUTINE     ChangerInitializeElementStatus;
  CHANGER_COMMAND_ROUTINE     ChangerSetPosition;
  CHANGER_COMMAND_ROUTINE     ChangerExchangeMedium;
  CHANGER_COMMAND_ROUTINE     ChangerMoveMedium;
  CHANGER_COMMAND_ROUTINE     ChangerReinitializeUnit;
  CHANGER_COMMAND_ROUTINE     ChangerQueryVolumeTags;
} MCD_INIT_DATA, *PMCD_INIT_DATA;

회원

InitDataSize

이 구조체의 크기(바이트)입니다.

ChangerAdditionalExtensionSize

변경자 미니 클래스 드라이버에서 디바이스별 정보를 디바이스 확장에 저장하는 데 필요한 바이트 수를 반환하는 체인저 미니 클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
ULONG
(*CHANGER_EXTENSION_SIZE)(
  IN VOID
  );

ChangerInitialize

미니 클래스 드라이버별 초기화를 수행하고 다른 요청을 수신하도록 변경자를 준비하는 체인저 미니 클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef 
NTSTATUS
(*CHANGER_INITIALIZE)(
  IN PDEVICE_OBJECT  DeviceObject
  );

ChangerError

디바이스별 오류 처리를 수행하는 체인저 미니클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
VOID
(*CHANGER_ERROR_ROUTINE)(
  IN PDEVICE_OBJECT  DeviceObject,
  IN PSCSI_REQUEST_BLOCK  Srb,
  IN NTSTATUS  *Status,
  IN BOOLEAN  *Retry
  );

ChangerPerformDiagnostics

디바이스에서 진단 테스트를 수행하는 체인저 미니클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef 
NTSTATUS
(*CHANGER_PERFORM_DIAGNOSTICS)(
  IN PDEVICE_OBJECT  DeviceObject,
  OUT PWMI_CHANGER_PROBLEM_DEVICE_ERROR  changerDeviceError
  );

ChangerGetParameters

IOCTL 코드 IOCTL_CHANGER_GET_PARAMETERS사용하여 디바이스 제어 IRP의 디바이스별 측면을 처리하는 체인저 미니클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
  IN PDEVICE_OBJECT  DeviceObject,
  IN PIRP  Irp
  );

ChangerGetStatus

IOCTL 코드 IOCTL_CHANGER_GET_STATUS사용하여 디바이스 제어 IRP의 디바이스별 측면을 처리하는 체인저 미니클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
  IN PDEVICE_OBJECT  DeviceObject,
  IN PIRP  Irp
  );

ChangerGetProductData

IOCTL 코드 IOCTL_CHANGER_GET_PRODUCT_DATA디바이스 제어 IRP의 디바이스별 측면을 처리하는 체인저 미니클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
  IN PDEVICE_OBJECT  DeviceObject,
  IN PIRP  Irp
  );

ChangerSetAccess

IOCTL 코드 IOCTL_CHANGER_SET_ACCESS디바이스 제어 IRP의 디바이스별 측면을 처리하는 체인저 미니클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
  IN PDEVICE_OBJECT  DeviceObject,
  IN PIRP  Irp
  );

ChangerGetElementStatus

IOCTL 코드 IOCTL_CHANGER_GET_ELEMENT_STATUS디바이스 제어 IRP의 디바이스별 측면을 처리하는 체인저 미니클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
  IN PDEVICE_OBJECT  DeviceObject,
  IN PIRP  Irp
  );

ChangerInitializeElementStatus

IOCTL 코드 IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS사용하여 디바이스 제어 IRP의 디바이스별 측면을 처리하는 체인저 미니 클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
  IN PDEVICE_OBJECT  DeviceObject,
  IN PIRP  Irp
  );

ChangerSetPosition

IOCTL 코드 IOCTL_CHANGER_SET_POSITION디바이스 제어 IRP의 디바이스별 측면을 처리하는 체인저 미니클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
  IN PDEVICE_OBJECT  DeviceObject,
  IN PIRP  Irp
  );

ChangerExchangeMedium

IOCTL 코드 IOCTL_CHANGER_EXCHANGE_MEDIUM디바이스 제어 IRP의 디바이스별 측면을 처리하는 체인저 미니클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
  IN PDEVICE_OBJECT  DeviceObject,
  IN PIRP  Irp
  );

ChangerMoveMedium

IOCTL 코드 IOCTL_CHANGER_MOVE_MEDIUM디바이스 제어 IRP의 디바이스별 측면을 처리하는 체인저 미니클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
  IN PDEVICE_OBJECT  DeviceObject,
  IN PIRP  Irp
  );

ChangerReinitializeUnit

IOCTL 코드 IOCTL_CHANGER_REINITIALIZE_TRANSPORT사용하여 디바이스 제어 IRP의 디바이스별 측면을 처리하는 체인저 미니클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
  IN PDEVICE_OBJECT  DeviceObject,
  IN PIRP  Irp
  );

ChangerQueryVolumeTags

IOCTL_CHANGER_QUERY_VOLUME_TAGSIOCTL 코드를 사용하여 디바이스 제어 IRP의 디바이스별 측면을 처리하는 체인저 미니클래스 드라이버 루틴에 대한 포인터입니다. 이 루틴에는 다음과 같은 프로토타입이 있습니다.

typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
  IN PDEVICE_OBJECT  DeviceObject,
  IN PIRP  Irp
  );

발언

이 구조는 Windows XP 및 이후 운영 체제의 체인저 드라이버에서만 사용됩니다.

요구 사항

요구
헤더 mcd.h(Mcd.h 포함)

참고 항목

ChangerAdditionalExtensionSize

ChangerError

ChangerExchangeMedium

ChangerGetElementStatus

ChangerGetParameters

ChangerGetProductData

ChangerGetStatus

ChangerInitialize

ChangerInitializeElementStatus

ChangerMoveMedium

ChangerPerformDiagnostics

ChangerQueryVolumeTags

ChangerReinitializeUnit

ChangerSetAccess

ChangerSetPosition

IOCTL_CHANGER_EXCHANGE_MEDIUM

IOCTL_CHANGER_GET_ELEMENT_STATUS

IOCTL_CHANGER_GET_PARAMETERS

IOCTL_CHANGER_GET_PRODUCT_DATA

IOCTL_CHANGER_GET_STATUS

IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS

IOCTL_CHANGER_MOVE_MEDIUM

IOCTL_CHANGER_SET_ACCESS

IOCTL_CHANGER_SET_POSITION