Функция 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, дверь или клавиатуру, а также расширяет или отменяет IEport.
Драйвер класса changer проверяет длину входного буфера в расположении стека ввода-вывода перед вызовом ChangerSetAccess. Irp-SystemBuffer> указывает на структуру CHANGER_SET_ACCESS в качестве входного параметра, указывающего элемент для задания и выполняемую операцию.
ChangerSetAccess сначала проверяет наличие неподдерживаемых элементов и операций и возвращает соответствующий код состояния для тех, которые не поддерживаются.
Затем ChangerSetAccess преобразует отсчитываемый от нуля адрес элемента, переданный системой, в адрес элемента устройства, необходимый модулю смены.
Наконец, ChangerSetAccess создает SRB с CDB для заданной операции с заданным элементом и отправляет его в драйвер системного порта. Используемая команда зависит от средства смены. Например, драйвер exabyte miniclass использует команду SCSI PREVENT ALLOW MEDIUM REMOVAL, чтобы заблокировать или разблокировать дверь средства смены, и MOVE MEDIUM, чтобы расширить или отозвать IEport.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | mcd.h (включая Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |