Функция ChangerSetAccess (mcd.h)
ChangerSetAccess обрабатывает аспекты IRP управления устройствами с помощью кода IOCTL IOCTL_CHANGER_SET_ACCESS.
Синтаксис
NTSTATUS ChangerSetAccess(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
Параметры
[in] DeviceObject
Указатель на объект устройства, представляющий средство изменения.
[in] Irp
Указатель на IRP.
Возвращаемое значение
Если изменение поддерживает доступ, ChangerSetAccess возвращает значение STATUS_XXX , возвращаемое драйвером системного порта или одним из следующих значений:
STATUS_SUCCESS
STATUS_INSUFFICIENT_RESOURCES
STATUS_INVALID_PARAMETER
Если изменение не поддерживает доступ к параметру, ChangerSetAccess возвращает STATUS_INVALID_DEVICE_REQUEST.
Замечания
Эта подпрограмма требуется.
ChangerSetAccess блокирует или разблокирует IEport, door или keypad, а также расширяет или удаляет IEport.
Драйвер класса changer проверяет длину входного буфера в расположении стека ввода-вывода перед вызовом ChangerSetAccess. Irp—>SystemBuffer указывает на структуру CHANGER_SET_ACCESS в качестве входного параметра, указывающего элемент для задания и выполнения операции.
ChangerSetAccess сначала проверяет наличие неподдерживаемых элементов и операций и возвращает соответствующий код состояния для тех, кто не поддерживает.
Затем ChangerSetAccess преобразует адрес элемента на основе нуля, передаваемый системой в адрес элемента, который требуется для изменения устройства.
Наконец, ChangerSetAccess создает SRB с CDB для данной операции с заданным элементом и отправляет его в драйвер системного порта. Команда, используемая, зависит от средства изменения. Например, драйвер миникласса Exabyte использует команду SCSI ALLOW MEDIUM REMOVAL для блокировки или разблокировки двери переключения и MOVE MEDIUM для расширения или извлечения IEport.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | mcd.h (включая Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |