Курсовая работа: Разработка драйвера виртуального жесткого диска

SURPRISEREMOVED

Устройство удалено без предварительного предупреждения

REMOVED

Устройство удалено

UNKNOWN

Устройство в ошибочном состоянии

2.5 Обработка расширенных запросов

Для управления сами устройством диспетчер ввода вывода посылает драйверу пакет с кодом управления вводом/выводом(IOCTL). Какие именно коды управления будет посылаться зависит от типа устройства. О том какие коды должен обязательно поддерживать классовый драйвер точно ничего не сказано. Поэтому приведенный далее список кодов управления был получен в процессе отладки драйвера, когда записывались получаемые драйвером IOCTL и выяснялась их функция.

Список кодов управления:

· IOCTL_DISK_GET_PARTITION_INFO – сообщить о типе, размере и природе раздела диска.

· IOCTL_DISK_GET_MEDIA_TYPES,

IOCTL_DISK_GET_DRIVE_GEOMETRY – сообщить о геометрии диска (количество цилиндров, дорожек, секторов)

· IOCTL_DISK_IS_WRITABLE – проверка можно ли на диск записывать данные

· IOCTL_DISK_SET_PARTITION_INFO – изменить тип раздела

· IOCTL_MOUNTMGR_QUERY_POINTS – сообщить о символической ссылке для тома

· IOCTL_MOUNTDEV_QUERY_DEVICE_NAME – сообщить об имени устройства

· IOCTL_DISK_FORMAT_TRACKS – форматировать дорожки

· IOCTL_DISK_MEDIA_REMOVAL – блокировать извлечение носителя

· IOCTL_DISK_CHECK_VERIFY – проверить, сменился ли носитель (для съемных дисков)

2.6 Расчет геометрии диска

При получении расширенного запроса IOCTL_DISK_GET_DRIVE_GEOMETRY или IOCTL_DISK_GET_MEDIA_TYPES требуется инициатору запроса передать информацию о геометрии диска. Драйвер виртуального диска заполняет стандартную структуру Windows DISK_GEOMETRY, где указываются следующие параметры:

Cylinders – количество цилиндров

TracksPerCylinder – количество дорожек на цилиндр

SectorsPerTrack – количество секторов на дорожку

BytesPerSector – размер сектора в байтах

MediaType – тип носителя

Тип носителя для жестких дисков должен быть равен FixedMedia.

Размер сектора примем равным 512 байтам, это стандарт де-факто для почти всех современных дисковых накопителей.

Количество дорожек и секторов будет фиксированным

TracksPerCylinder = 16 SectorsPerTrack = 32

Вычисляем количество цилиндров диска:

К-во Просмотров: 560
Бесплатно скачать Курсовая работа: Разработка драйвера виртуального жесткого диска