структура 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
Указатель на подпрограмму драйвера мини-класса, которая обрабатывает аспекты IRP для управления устройством с помощью кода IOCTL IOCTL_CHANGER_GET_PARAMETERS. Эта подпрограмма имеет следующий прототип:
typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
ChangerGetStatus
Указатель на подпрограмму драйвера мини-класса, которая обрабатывает аспекты IRP для управления устройством с помощью кода IOCTL IOCTL_CHANGER_GET_STATUS. Эта подпрограмма имеет следующий прототип:
typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
ChangerGetProductData
Указатель на подпрограмму драйвера мини-класса средства изменения, которая обрабатывает аспекты IRP для управления устройством с помощью кода IOCTL IOCTL_CHANGER_GET_PRODUCT_DATA. Эта подпрограмма имеет следующий прототип:
typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
ChangerSetAccess
Указатель на подпрограмму драйвера мини-класса средства изменения, которая обрабатывает аспекты IRP управления устройствами с помощью кода IOCTL IOCTL_CHANGER_SET_ACCESS. Эта подпрограмма имеет следующий прототип:
typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
ChangerGetElementStatus
Указатель на подпрограмму драйвера мини-класса, которая обрабатывает аспекты IRP для управления устройством с помощью кода IOCTL IOCTL_CHANGER_GET_ELEMENT_STATUS. Эта подпрограмма имеет следующий прототип:
typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
ChangerInitializeElementStatus
Указатель на подпрограмму драйвера мини-класса, которая обрабатывает аспекты IRP для управления устройством с помощью кода IOCTL IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS. Эта подпрограмма имеет следующий прототип:
typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
ChangerSetPosition
Указатель на подпрограмму драйвера мини-класса средства изменения, которая обрабатывает аспекты IRP управления устройствами с помощью кода IOCTL IOCTL_CHANGER_SET_POSITION. Эта подпрограмма имеет следующий прототип:
typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
ChangerExchangeMedium
Указатель на подпрограмму драйвера мини-класса средства изменения, которая обрабатывает аспекты IRP управления устройствами с помощью кода IOCTL IOCTL_CHANGER_EXCHANGE_MEDIUM. Эта подпрограмма имеет следующий прототип:
typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
ChangerMoveMedium
Указатель на подпрограмму драйвера миникласса, которая обрабатывает аспекты IRP для управления устройством с помощью кода IOCTL IOCTL_CHANGER_MOVE_MEDIUM. Эта подпрограмма имеет следующий прототип:
typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
ChangerReinitializeUnit
Указатель на подпрограмму драйвера миникласса средства изменения, которая обрабатывает аспекты IRP для управления устройством с помощью кода IOCTL IOCTL_CHANGER_REINITIALIZE_TRANSPORT. Эта подпрограмма имеет следующий прототип:
typedef
NTSTATUS
(*CHANGER_COMMAND_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp
);
ChangerQueryVolumeTags
Указатель на подпрограмму драйвера мини-класса, которая обрабатывает аспекты IRP для управления устройством с помощью кода IOCTL IOCTL_CHANGER_QUERY_VOLUME_TAGS. Эта подпрограмма имеет следующий прототип:
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