MCD_INIT_DATA structure (mcd.h)

The changer miniclass driver fills the MCD_INIT_DATA structure with pointers to its internal command processing routines and passes them to the changer class driver.

Syntax

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;

Members

InitDataSize

Size of this structure in bytes.

ChangerAdditionalExtensionSize

Pointer to changer miniclass driver routine that returns the number of bytes the changer miniclass driver requires to store device-specific information in the device extension. This routine has the following prototype:

typedef
ULONG
(*CHANGER_EXTENSION_SIZE)(
  IN VOID
  );

ChangerInitialize

Pointer to changer miniclass driver routine that does miniclass driver-specific initialization and readies the changer to receive other requests. This routine has the following prototype:

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

ChangerError

Pointer to changer miniclass driver routine that does device-specific error processing. This routine has the following prototype:

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

ChangerPerformDiagnostics

Pointer to changer miniclass driver routine that performs diagnostic tests on the device. This routine has the following prototype:

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

ChangerGetParameters

Pointer to changer miniclass driver routine that handles the device-specific aspects of a device-control IRP with the IOCTL code IOCTL_CHANGER_GET_PARAMETERS. This routine has the following prototype:

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

ChangerGetStatus

Pointer to changer miniclass driver routine that handles the device-specific aspects of a device-control IRP with the IOCTL code IOCTL_CHANGER_GET_STATUS. This routine has the following prototype:

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

ChangerGetProductData

Pointer to a changer miniclass driver routine that handles the device-specific aspects of a device-control IRP with the IOCTL code IOCTL_CHANGER_GET_PRODUCT_DATA. This routine has the following prototype:

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

ChangerSetAccess

Pointer to a changer miniclass driver routine that handles the device-specific aspects of a device-control IRP with the IOCTL code IOCTL_CHANGER_SET_ACCESS. This routine has the following prototype:

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

ChangerGetElementStatus

Pointer to a changer miniclass driver routine that handles the device-specific aspects of a device-control IRP with the IOCTL code IOCTL_CHANGER_GET_ELEMENT_STATUS. This routine has the following prototype:

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

ChangerInitializeElementStatus

Pointer to a changer miniclass driver routine that handles the device-specific aspects of a device-control IRP with the IOCTL code IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS. This routine has the following prototype:

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

ChangerSetPosition

Pointer to a changer miniclass driver routine that handles the device-specific aspects of a device-control IRP with the IOCTL code IOCTL_CHANGER_SET_POSITION. This routine has the following prototype:

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

ChangerExchangeMedium

Pointer to a changer miniclass driver routine that handles the device-specific aspects of a device-control IRP with the IOCTL code IOCTL_CHANGER_EXCHANGE_MEDIUM. This routine has the following prototype:

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

ChangerMoveMedium

Pointer to a changer miniclass driver routine that handles the device-specific aspects of a device-control IRP with the IOCTL code IOCTL_CHANGER_MOVE_MEDIUM. This routine has the following prototype:

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

ChangerReinitializeUnit

Pointer to a changer miniclass driver routine that handles the device-specific aspects of a device-control IRP with the IOCTL code IOCTL_CHANGER_REINITIALIZE_TRANSPORT. This routine has the following prototype:

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

ChangerQueryVolumeTags

Pointer to a changer miniclass driver routine that handles the device-specific aspects of a device-control IRP with the IOCTL code of IOCTL_CHANGER_QUERY_VOLUME_TAGS. This routine has the following prototype:

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

Remarks

This structure is used by the changer driver in Windows XP and later operating systems only.

Requirements

Requirement Value
Header mcd.h (include Mcd.h)

See also

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