Организация ввода-вывода. Драйверы WDM. Рощин А.В. - 30 стр.

UptoLike

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

30
обозначает использование простой генерации сигнатуры функции (в стиле языка
С) при получении объектных файлов. В частности, это запрещает компилятору
C++ производить "декорацию" (или "украшение") имени функции
дополнительными символами при экспорте.
Ключевые слова IN. В DDK IN и OUTэто пустые макросы, которые
служат для документирования. В параметре, перед которым стоит
IN, функции
передаются только входные данные. В параметре OUT функция возвращает
выходные данные, а параметры IN OUT используются для ввода и для вывода.
Таким образом, оба параметра функции являются входными.
NTSTATUS говорит о том, что функция возвращает значение типа
NTSTATUS. На самом деле это обычное длинное целое (LONG). Лучше
использовать NTSTATUS, так
как многие функции ядра возвращают коды
состояния этого типа. Список этих кодов имеется в заголовочном файле
NTSTATUS.H.
В первом аргументе функции DriverEntry передается указатель на объект
драйвера, представляющий ваш драйвер. Для WDM-драйвера функция
DriverEntry должна завершить инициализацию объекта и вернуть управление.
Для драйверов других типов эта функция должна обнаружить
оборудование,
за которое они отвечают, создать объекты устройства,
представляющие это оборудование и инициализировать их. Для WDM-драйвера
всю эту работу выполняет диспетчер PnP.
Во втором аргументе функции DriverEntry передается указатель на
структуру PUNICODE_STRING
, третье поле которой содержит указатель на имя
соответствующего раздела реестра.
Главной задачей функции DriverEntry в WDM-драйвере является
заполнение указателей в объекте драйвера. Эти указатели нужны для вызова
функций драйвера операционной системой. Важнейшими полями-указателями
объекта драйвера являются:
DriverUnloadуказатель на функцию деинициализации драйвера. Эту
функцию вызывает диспетчер ввода-вывода
перед выгрузкой драйвера.
обозначает использование простой генерации сигнатуры функции (в стиле языка
С) при получении объектных файлов. В частности, это запрещает компилятору
C++         производить    "декорацию"      (или     "украшение")   имени     функции
дополнительными символами при экспорте.
      Ключевые слова IN. В DDK IN и OUT – это пустые макросы, которые
служат для документирования. В параметре, перед которым стоит IN, функции
передаются только входные данные. В параметре OUT функция возвращает
выходные данные, а параметры IN OUT используются для ввода и для вывода.
Таким образом, оба параметра функции являются входными.
      NTSTATUS говорит о том, что функция возвращает значение типа
NTSTATUS. На самом деле это обычное длинное целое (LONG). Лучше
использовать NTSTATUS, так как многие функции ядра возвращают коды
состояния этого типа. Список этих кодов имеется в заголовочном файле
NTSTATUS.H.
      В первом аргументе функции DriverEntry передается указатель на объект
драйвера,    представляющий      ваш     драйвер.    Для    WDM-драйвера      функция
DriverEntry должна завершить инициализацию объекта и вернуть управление.
      Для     драйверов    других   типов      эта   функция    должна    обнаружить
оборудование,     за   которое   они   отвечают,      создать   объекты     устройства,
представляющие это оборудование и инициализировать их. Для WDM-драйвера
всю эту работу выполняет диспетчер PnP.
      Во втором аргументе функции DriverEntry передается указатель на
структуру PUNICODE_STRING, третье поле которой содержит указатель на имя
соответствующего раздела реестра.
      Главной    задачей    функции    DriverEntry      в   WDM-драйвере      является
заполнение указателей в объекте драйвера. Эти указатели нужны для вызова
функций драйвера операционной системой. Важнейшими полями-указателями
объекта драйвера являются:
      − DriverUnload – указатель на функцию деинициализации драйвера. Эту
        функцию вызывает диспетчер ввода-вывода перед выгрузкой драйвера.

                                          30