다음을 통해 공유


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_TAGS IOCTL 코드를 사용하여 디바이스 제어 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