Функция ChangerReinitializeUnit (mcd.h)
ChangerReinitializeUnit обрабатывает аспекты IRP управления устройствами с помощью кода IOCTL IOCTL_CHANGER_REINITIALIZE_TRANSPORT.
Синтаксис
NTSTATUS ChangerReinitializeUnit(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
Параметры
[in] DeviceObject
Указатель на объект устройства, представляющий средство изменения.
[in] Irp
Указатель на IRP.
Возвращаемое значение
Если метод изменения поддерживает повторное изменение элемента транспорта, ChangerReinitializeUnit возвращает значение STATUS_XXX, возвращаемое драйвером системного порта, или одно из следующих значений:
STATUS_SUCCESS
STATUS_INVALID_ELEMENT_ADDRESS
STATUS_INVALID_PARAMETER
STATUS_INSUFFICIENT_RESOURCES
Если изменение не поддерживает повторное изменение элемента транспорта, ChangerReinitializeUnit возвращает STATUS_INVALID_DEVICE_REQUEST.
Замечания
Эта подпрограмма требуется.
ChangerReinitializeUnit приводит к повторному изменению его транспортного элемента. В зависимости от изменяющегося элемента может вернуться транспорт в положение "home". Драйвер класса changer обычно вызывает ChangerReinitializeUnit после включения или вызова приложения, инициирующего операцию восстановления. Флаг CHANGER_DEVICE_REINITIALIZE_CAPABLE в Features0GET_CHANGER_PARAMETERS указывает, поддерживает ли транспорт меняющего средства повторную передачу в этих обстоятельствах.
Драйвер класса changer проверяет длину входного буфера в расположении стека ввода-вывода перед вызовом ChangerReinitializeUnit. Irp—>SystemBuffer указывает на структуру CHANGER_ELEMENT, указывающую элемент на пересчет.
ChangerReinitializeUnit создает SRB с CDB для размещения элемента транспорта и отправляет его в драйвер системного порта.
ChangerReinitializeUnit задает поле Information в блоке состояния ввода-вывода значение sizeof(CHANGER_ELEMENT), прежде чем вернуться к драйверу класса changer.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | mcd.h (включая Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |