Поделиться через


Функция 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

См. также раздел

CHANGER_SET_ACCESS

GET_CHANGER_PARAMETERS

IOCTL_CHANGER_SET_ACCESS