Организация ввода-вывода. Часть 2. Драйверы для WINDOWS NT. Рощин А.В. - 101 стр.

UptoLike

Составители: 

101
3.4 Драйвер виртуального диска
Рассмотрим конкретный примердрайвер виртуального диска. По
мере необходимости будем снабжать текст программы необходимыми
описаниями.
Драйвер создает виртуальный диск, отформатированный по
умолчанию как FAT. Выбор этого типа драйвера обусловлен следующим:
простота реализации, не требуется кода для работы с
оборудованием,
легкость демонстрации, пример не требует специфических
устройств,
и может быть продемонстрирован практически на
любой машине,
малый объем исходного текста, позволяющий изучить основные
принципы работы, не вдаваясь в подробности.
В целях экономии места и концентрации на основной теме опустим
незначительные, но необходимые деталиинициализацию и
освобождение памяти, получение параметров из реестра, обработку
ошибок, – заменив их комментариями, вкратце описывающими
процесс.
Начнем с рассмотрения функции DriverEntryточки входа в
драйвер, служащей для инициализации программы. С нее начинается
выполнение драйвера. Функция устанавливает, какие системные вызовы
она будет обрабатывать и создает собственно виртуальный диск.
NTSTATUS
DriverEntry(
IN OUT PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
Аргументы:
DriverObjectуказатель на объект, представляющий этот драйвер.
     3.4 Драйвер виртуального диска
     Рассмотрим конкретный пример – драйвер виртуального диска. По
мере необходимости будем снабжать текст программы необходимыми
описаниями.
     Драйвер      создает    виртуальный     диск,     отформатированный      по
умолчанию как FAT. Выбор этого типа драйвера обусловлен следующим:
     − простота      реализации,   не      требуется    кода   для   работы    с
        оборудованием,
     − легкость демонстрации, пример не требует специфических
        устройств, и может быть продемонстрирован практически на
        любой машине,
     − малый объем исходного текста, позволяющий изучить основные
        принципы работы, не вдаваясь в подробности.
     В целях экономии места и концентрации на основной теме опустим
незначительные,     но      необходимые     детали      –   инициализацию     и
освобождение памяти, получение параметров из реестра, обработку
ошибок, – заменив их комментариями, вкратце описывающими процесс.
     Начнем с рассмотрения функции DriverEntry – точки входа в
драйвер, служащей для инициализации программы. С нее начинается
выполнение драйвера. Функция устанавливает, какие системные вызовы
она будет обрабатывать и создает собственно виртуальный диск.
NTSTATUS
  DriverEntry(
    IN OUT PDRIVER_OBJECT                  DriverObject,
    IN PUNICODE_STRING                     RegistryPath
    )

     Аргументы:
      DriverObject – указатель на объект, представляющий этот драйвер.




                                     101