IOCTL_CDROM_GET_CONFIGURATION IOCTL (ntddcdrm.h)
Запрашивает сведения о функциях и профилях с устройства CD-ROM.
Мультимедийные устройства имеют разные характеристики в зависимости от типа носителя, который находится на устройстве. Чтобы предоставить драйверам средства запроса мультимедийных устройств об этих различных характеристиках, спецификация мультимедиа SCSI — 3 (MMC-3) определяет команду с именем GET CONFIGURATION. Эта команда позволяет драйверам запрашивать устройство как постоянные сведения об устройстве, так и сведения, которые изменяются при изменении носителя. В операционных системах Microsoft Windows 2000 и более поздних версий драйверы могут отправлять этот запрос на устройство с помощью запроса IOCTL_CDROM_GET_CONFIGURATION.
Запрос IOCTL_CDROM_GET_CONFIGURATION возвращает список дескрипторов, описывающих возможности устройства для текущего носителя. Эти дескрипторы делятся на две группы с именем "дескрипторы функций" и "дескрипторы списка профилей". Функция указывает возможности устройства и связанного с ним носителя. Профиль — это коллекция функций. Если устройство поддерживает профиль, он поддерживает все функции в профиле.
Дополнительные сведения о функциях и профилях см. в спецификации MMC-3.
Основной код
Входной буфер
Входной буфер.
Длина входного буфера
Parameters.DeviceIoControl.InputBufferLength в структуре IO_STACK_LOCATION указывает размер входного буфера, который должен быть = размер(GET_CONFIGURATION_IOCTL_INPUT).
Выходной буфер
Драйвер возвращает данные компонента и профиля в буфере по Irp->AssociatedIrp.SystemBuffer. Данные начинаются с заголовка типа GET_CONFIGURATION_HEADER. Данные функций передаются в пространстве сразу после этого заголовка. Его размер и форматирование зависят от того, какие функции передаются.
Длина выходного буфера
Parameters.DeviceIoControl.OutputBufferLength в расположении стека операций ввода-вывода указывает размер буфера в байтах, который должен быть >= размер(GET_CONFIGURATION_HEADER).
Блок состояния
Поле information задано число возвращаемых байтов. Поле состояния имеет значение STATUS_SUCCESS, если запрос выполнен успешно. Если Parameters.DeviceIoControl.InputBufferLength не имеет правильного значения, запрос завершается ошибкой STATUS_INFO_LENGTH_MISMATCH. Если Parameters.DeviceIoControl.OutputBufferLength недостаточно велик, запрос завершается ошибкой STATUS_BUFFER_TOO_SMALL. Если значение для выходного буфера слишком велико, запрос завершается ошибкой STATUS_INVALID_BUFFER_SIZE сообщения.
Требования
Требование | Ценность |
---|---|
заголовка | ntddcdrm.h (include Ntddcdrm.h) |