Ошибка при вызове функции ioctl флешки

Обновлено: 20.11.2024

Гость

Гость

Архивировано из групп: microsoft.public.windowsxp.general (Подробнее?)

Я получаю это сообщение, когда пытаюсь отформатировать флэш-накопитель USB с mp3 в командной
подсказке через Windows. я также получаю сообщение об ошибке
"STATUS_IO_DEVICE_ERROR". будем очень признательны за любую помощь в этом.

Гость

Гость

Архивировано из групп: microsoft.public.windowsxp.general (Подробнее?)

< td >12 июня 2021 г.
Начало темы Похожие темы Форум Ответы Дата
M Вопрос Windows XP fix-error-code-dns_probe_finished_nxdomain-problem Windows XP 2

ПОПУЛЯРНЫЕ ТРЕКИ

  • Инициировано SPECOPS70.
  • Сегодня в 18:22
  • Ответов: 7
  • Инициатор kurdtnz
  • Сегодня в 12:44
  • Ответов: 17
  • Инициировано hymced
  • Сегодня в 17:11
  • Ответов: 4
  • Инициатор MadzMartigan
  • Сегодня в 15:06
  • Ответов: 6
  • Инициировано blacklightning452
  • Сегодня в 11:14
  • Ответов: 14
  • Инициатор Kyozo
  • Сегодня в 14:50
  • Ответов: 7
  • Инициатор QuarterPounderWithBees
  • Сегодня в 15:07
  • Ответов: 8

Последние сообщения

  • Последнее: JohnBonhamsGhost
  • 2 минуты назад

Модераторы онлайн

Поделиться этой страницей

Tom's Hardware является частью Future plc, международной медиа-группы и ведущего цифрового издателя. Посетите наш корпоративный сайт.
© Future Publishing Limited Quay House, Амбери, Бат BA1 1UA.
Все права защищены. Регистрационный номер компании в Англии и Уэльсе 2008885.


Tom's Hardware является частью Future plc, международной медиа-группы и ведущего цифрового издателя. Посетите наш корпоративный сайт.
© Future Publishing Limited Quay House, Амбери, Бат BA1 1UA. Все права защищены. Регистрационный номер компании в Англии и Уэльсе 2008885.

При определении новых IOCTL важно помнить следующие правила:

  • Если новый IOCTL будет доступен для программных компонентов пользовательского режима, этот IOCTL должен использоваться с запросами IRP_MJ_DEVICE_CONTROL. Компоненты пользовательского режима отправляют запросы IRP_MJ_DEVICE_CONTROL, вызывая DeviceIoControl, функцию Win32.
  • Если новый ввод-вывод будет доступен только для компонентов драйвера режима ядра, ввод-вывод должен использоваться с запросами IRP_MJ_INTERNAL_DEVICE_CONTROL. Компоненты режима ядра создают запросы IRP_MJ_INTERNAL_DEVICE_CONTROL, вызывая IoBuildDeviceIoControlRequest. Дополнительные сведения см. в разделе Создание запросов IOCTL в драйверах.

Код управления вводом-выводом — это 32-разрядное значение, состоящее из нескольких полей. На следующем рисунке показано расположение кодов управления вводом-выводом.

Используйте предоставленный системой макрос CTL_CODE, определенный в файлах Wdm.h и Ntddk.h, для определения новых кодов управления вводом-выводом. В определении нового кода IOCTL, предназначенного для использования с запросами IRP_MJ_DEVICE_CONTROL или IRP_MJ_INTERNAL_DEVICE_CONTROL, используется следующий формат:

Выберите описательное имя константы для IOCTL в форме IOCTL_Устройство_Функция, где Устройство указывает тип устройства, а < em>Функция указывает операцию. Пример имени константы: IOCTL_VIDEO_ENABLE_CURSOR.

Укажите следующие параметры для макроса CTL_CODE:

DeviceType
Определяет тип устройства. Это значение должно совпадать со значением, установленным в члене DeviceType структуры DEVICE_OBJECT драйвера. (См. Указание типов устройств). Значения менее 0x8000 зарезервированы для Microsoft. Поставщики могут использовать значения 0x8000 и выше. Обратите внимание, что значения, назначенные поставщиком, устанавливают общий бит.

FunctionCode
Определяет функцию, которую должен выполнять драйвер. Значения меньше 0x800 зарезервированы для Microsoft. Поставщики могут использовать значения 0x800 и выше. Обратите внимание, что значения, назначенные поставщиком, устанавливают бит Custom (Пользовательский).

TransferType
Указывает, как система будет передавать данные между вызывающей стороной DeviceIoControl (или IoBuildDeviceIoControlRequest) и драйвером, обрабатывающим IRP.

Используйте одну из следующих системных констант:

METHOD_BUFFERED
Указывает буферизованный метод ввода-вывода, который обычно используется для передачи небольших объемов данных на запрос. Большинство кодов управления вводом-выводом для драйверов устройств и промежуточных драйверов используют это значение TransferType.

Информацию о том, как система определяет буферы данных для кодов управления вводом-выводом METHOD_BUFFERED, см. в разделе Описания буферов для кодов управления вводом-выводом.

Дополнительную информацию о буферизованном вводе-выводе см. в разделе Использование буферизованного ввода-вывода.

METHOD_IN_DIRECT или METHOD_OUT_DIRECT
Указывает метод прямого ввода-вывода, который обычно используется для чтения или записи больших объемов данных с использованием DMA или PIO, которые должны передаваться быстро.

Укажите METHOD_IN_DIRECT, если вызывающая сторона DeviceIoControl или IoBuildDeviceIoControlRequest будет передавать данные драйверу.

Укажите METHOD_OUT_DIRECT, если вызывающая сторона DeviceIoControl или IoBuildDeviceIoControlRequest будет получать данные от драйвера.

Информацию о том, как система определяет буферы данных для кодов управления вводом-выводом METHOD_IN_DIRECT и METHOD_OUT_DIRECT, см. в разделе Описания буферов для кодов управления вводом-выводом.

Дополнительную информацию о прямом вводе-выводе см. в разделе Использование прямого ввода-вывода.

METHOD_NEITHER
Не указывает ни буферный, ни прямой ввод-вывод. Диспетчер ввода-вывода не предоставляет никаких системных буферов или MDL. IRP предоставляет виртуальные адреса пользовательского режима входных и выходных буферов, которые были указаны для DeviceIoControl или IoBuildDeviceIoControlRequest, без их проверки или сопоставления.

Информацию о том, как система определяет буферы данных для кодов управления вводом-выводом METHOD_NEITHER, см. в разделе Описания буферов для кодов управления вводом-выводом.

Этот метод можно использовать только в том случае, если можно гарантировать, что драйвер будет работать в контексте потока, создавшего запрос на управление вводом-выводом. Этому условию гарантированно соответствует только драйвер режима ядра самого высокого уровня, поэтому METHOD_NEITHER редко используется для кодов управления вводом-выводом, которые передаются низкоуровневым драйверам устройств.

С помощью этого метода драйвер самого высокого уровня должен определить, следует ли настроить буферизованный или прямой доступ к пользовательским данным при получении запроса, возможно, должен заблокировать пользовательский буфер и должен обернуть свой доступ к пользовательскому буферу в структурированный обработчик исключений (см. Обработка исключений). В противном случае исходный вызывающий объект пользовательского режима может изменить буферизованные данные до того, как драйвер сможет их использовать, или вызывающий объект может быть вытеснен как раз в тот момент, когда драйвер обращается к пользовательскому буферу.

RequiredAccess
Указывает тип доступа, который вызывающая сторона должна запросить при открытии файлового объекта, представляющего устройство (см. IRP_MJ_CREATE). Диспетчер ввода-вывода создаст пакеты IRP и вызовет драйвер с определенным кодом управления вводом-выводом только в том случае, если вызывающая сторона запросила указанные права доступа. RequiredAccess задается с помощью следующих системных констант:

FILE_ANY_ACCESS
Диспетчер ввода-вывода отправляет пакет IRP для любого вызывающего объекта, у которого есть дескриптор файлового объекта, представляющего объект целевого устройства.

FILE_READ_DATA
Диспетчер ввода-вывода отправляет IRP только для вызывающего объекта с правами доступа на чтение, позволяя базовому драйверу устройства передавать данные с устройства в системную память.

FILE_WRITE_DATA
Диспетчер ввода-вывода отправляет IRP только для вызывающего объекта с правами доступа на запись, позволяя базовому драйверу устройства передавать данные из системной памяти на свое устройство.

Файлы FILE_READ_DATA и FILE_WRITE_DATA можно объединить с помощью оператора ИЛИ, если вызывающая сторона должна иметь права доступа как для чтения, так и для записи.

Некоторые определяемые системой коды управления вводом-выводом имеют значение RequiredAccess FILE_ANY_ACCESS, что позволяет вызывающей стороне отправлять определенный IOCTL независимо от доступа, предоставленного устройству. Примеры включают коды управления вводом-выводом, которые отправляются драйверам эксклюзивных устройств.

Другие определяемые системой коды управления вводом-выводом требуют, чтобы вызывающая сторона имела права доступа на чтение, права доступа на запись или и то, и другое. Например, следующее определение общедоступного кода управления вводом-выводом IOCTL_DISK_SET_PARTITION_INFO показывает, что этот запрос ввода-вывода может быть отправлен драйверу, только если у вызывающего объекта есть права доступа как для чтения, так и для записи:

Прежде чем указать FILE_ANY_ACCESS для нового кода IOCTL, вы должны быть абсолютно уверены в том, что предоставление неограниченного доступа к вашему устройству не создаст для злоумышленников возможности взлома системы.

Драйверы могут использовать IoValidateDeviceIoControlAccess для выполнения более строгой проверки доступа, чем та, которая обеспечивается битами RequiredAccess IOCTL.

Другие полезные макросы

Следующие макросы полезны для извлечения 16-битных полей DeviceType и 2-битных полей TransferType из кода IOCTL:

лочанонлайн

Почетный

Здравствуйте,
Мой накопитель не работает должным образом. Когда я подключаю его к ПК, он говорит, что нужно отформатировать, а когда я запрашиваю форматирование, он предлагает «ОШИБКА в вызове IOCTL». Вы можете помочь мне решить эту проблему.?

алёшка

Великолепно

Это ошибка контроллера ввода-вывода. Либо плохой контроллер, либо поврежденное устройство.
Проверьте драйверы USB, если с ними все в порядке, то флешки вышли из строя.

алёшка

Великолепно

Это ошибка контроллера ввода-вывода. Либо плохой контроллер, либо поврежденное устройство.
Проверьте драйверы USB, если с ними все в порядке, то флешки вышли из строя.

каджабла

Великолепно

Простой способ: попробуйте диск с другим компьютером и попробуйте компьютер с другим диском. Один, вероятно, выйдет из строя, и это покажет вам источник проблемы.

лочанонлайн

Почетный

лочанонлайн

Почетный

ПОПУЛЯРНЫЕ ТРЕКИ

  • Инициировано SPECOPS70.
  • Сегодня в 18:22
  • Ответов: 7
  • Инициатор kurdtnz
  • Сегодня в 12:44
  • Ответов: 17
  • Инициировано hymced
  • Сегодня в 17:11
  • Ответов: 4
  • Инициатор MadzMartigan
  • Сегодня в 15:06
  • Ответов: 6
  • Инициировано blacklightning452
  • Сегодня в 11:14
  • Ответов: 14
  • Инициатор Kyozo
  • Сегодня в 14:50
  • Ответов: 7
  • Инициатор QuarterPounderWithBees
  • Сегодня в 15:07
  • Ответов: 8

Последние сообщения

  • Последнее: JohnBonhamsGhost
  • 2 минуты назад

Модераторы онлайн

Поделиться этой страницей

Tom's Hardware является частью Future plc, международной медиа-группы и ведущего цифрового издателя. Посетите наш корпоративный сайт.
© Future Publishing Limited Quay House, Амбери, Бат BA1 1UA.
Все права защищены. Регистрационный номер компании в Англии и Уэльсе 2008885.


Tom's Hardware является частью Future plc, международной медиа-группы и ведущего цифрового издателя. Посетите наш корпоративный сайт.
© Future Publishing Limited Quay House, Амбери, Бат BA1 1UA. Все права защищены. Регистрационный номер компании в Англии и Уэльсе 2008885.

Наша операционная система реального времени (RTOS), гипервизор и промежуточное ПО обеспечивают производительность и безопасность, а также упрощают сертификацию по безопасности. Мы рекомендуем встраиваемую ОС для транспортных средств, аппаратов искусственной вентиляции легких, систем управления поездами, систем автоматизации производства, медицинских роботов и многого другого.

Все, что вам нужно для создания лучших встраиваемых систем

Если вы хотите повысить безопасность или безопасность или хотите упростить процесс кроссплатформенной разработки, мы можем помочь. Мы можем воплотить ваши планы в жизнь с помощью RTOS и гипервизора, специально созданных для встраиваемых систем, включая предварительно сертифицированные варианты продуктов. Наша модульная микроядерная архитектура обеспечивает безопасность и надежность и позволяет избежать дублирования усилий по разработке ОС для нескольких продуктов. Мы обеспечиваем поддержку на каждом этапе жизненного цикла продукта и предлагаем профессиональные услуги и обучение, чтобы предоставить вам дополнительные знания, которые вам нужны, когда они вам нужны.

  • Программное обеспечение
  • Поддержка
  • Профессиональные услуги

Программное обеспечение

Встроенные системы как никогда сложны и программно управляемы. Позвольте нам предоставить программную основу и строительные блоки, чтобы помочь вам сосредоточиться на предоставлении дополнительных функций и программного обеспечения, а не на обслуживании ОС.

    Базовые продукты, включая QNX® Neutrino® RTOS, QNX® Software Development Platform (SDP) с POSIX-совместимой средой разработки и QNX® Hypervisor

Поддержка

Для успеха вам нужно больше, чем программное обеспечение. Вам нужен партнер, который знает, что работа не сделана, пока вы не приступите к работе.

    Разнообразные пакеты поддержки и технические консультации от разработчиков, инженеров и архитекторов

Профессиональные услуги

Если вам нужно расширить свою команду, запустить проект или сертифицировать свои продукты, вы можете положиться на наших экспертов по встраиваемым системам и ОС, которые предоставят вам необходимые знания и опыт.

Читайте также: