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
ChangerInitializeElementStatus
IOCTL_CHANGER_GET_ELEMENT_STATUS
IOCTL_CHANGER_GET_PRODUCT_DATA