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

где DiskSize – размер диска.

Если количество цилиндров превышает 1023(такое ограничение было введено для совместимости со старыми версиями BIOS), то количество секторов на дорожку увеличивается вдвое и будет равно 64.

Таким образом максимальный размер рамдиска, для которого число цилиндров не превышает 1023 равен:

MaxDiskSize = 1023*16*64*512 = 536346624 байт= 511.5 Мбайт,

что более чем достаточно для нашей версии рамдиска.


2. 7 Структура драйвера

С учетом всего вышеизложенного требуется разработать классовый драйвер, который имеет монолитную структуру. Драйвер будет иметь следующие части:

· Инициализация драйвера

· Обработка запросов PnP и управления питанием

· Обработка запросов записи/чтения данных

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

· Выгрузка драйвера


3. ТЕХНОЛОГИЧЕСКИЙ РАЗДЕЛ

3.1 Выбор и обоснование языка и среды программирования

Для разработки драйвера виртуального диска применялся пакет DDK (Driver Development Kit), который включает в себя все необходимые заголовочные файлы и библиотеки. Пакет DDK ориентирован на язык С. Драйвер разрабатывался на Windows 2003 Server DDK, т.к. она включает в себя как средства для разработки драйверов для Windows 2003 Server, так и последние версии средств для разработки драйверов ОС Windows 2000 и XP.

В качестве интегрированной среды разработки применялся Microsoft Visual C++ 6. Он предоставляет удобный интерфейс для написания программного кода на C, и позволяет компилировать его используя библиотеки пакета DDK.

Для отладки работы драйвера применялись программы DebugView и DriverMonitor из пакета NuMega Driver Studio 2.0, которые позволяют просматривать отладочные сообщения драйвера.

3.2 Структуры данных классового драйвера

Параметры диска и его состояние хранятся в расширении устройства — структуре DEVICE_EXTENSION. Она всегда доступная через объект-устройство (DEVICE_OBJECT, поле DeviceExtension), она реализует наиболее удобный и рекомендованный Microsoft способ хранения таких данных. Структуру расширения определяет разработчик драйвера. Мы ее определим так:

typedef struct _DEVICE_EXTENSION

{

PDEVICE_OBJECT DeviceObject;

PDEVICE_OBJECT LowerDeviceObject;

DEVICE_STATE DevState; // Текущее состояние устройство

IO_REMOVE_LOCK RemoveLock; // Блокировка устройства

ULONG Flags; // Флаг устройства

PUCHAR DiskImage; // Указатель на образ диска

DISK_GEOMETRY DiskGeometry; // Параметры геометрии диска

DISK_INFO DiskRegInfo; // Параметры диска из реестра

UNICODE_STRING SymbolicLink; // Символическая ссылка

} DEVICE_EXTENSION, *PDEVICE_EXTENSION;

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