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

UptoLike

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

24
2 Основные структуры данных
С WDM-драйверами связаны две основные структуры данныхобъект
драйвера и объект устройства.
Объект драйвера представляет драйвер. Он содержит указатели на функции
драйвера, которые могут вызываться системой. (Здесь следует напомнить, что
WDM-драйвер является контейнером функций, которые он по собственной
инициативе не выполняет. Все вызовы функций драйвера выполняются
операционной системой.)
Объект устройства представляет конкретный экземпляр устройства. Он
содержит данные, позволяющие управлять этим устройством.
2.1 Объекты драйверов
Диспетчер ввода-вывода использует для представления каждого драйвера
устройства объект драйвера.
Объект драйвера определяется в DDK в файле WDM.H следующим образом:
typedef struct _DRIVER_OBJECT
{ // Объявление структуры с именем
CSHORT Type; // DRIVER_OBJECT, для которой
CSHORT Size; // объявляется тип указателя
// PDRIVER_OBJECT и тэг
} DRIVER_OBJECT, *PDRIVER_OBJECT; // DRIVEROBJECT
(CSHORT – короткое целое со знаком)
Таблица 2.1 – Стандартные имена типов для драйверов
Имя типа Описание
PVOID, PVOID64 Обобщенные указатели (стандартные и 64-
разрядные)
NTAPI Используется в объявления системных функций
для использования соглашений вызова __stdcall
на платформе i86
VOID эквивалент void
CHAR, PCHAR 8-разрядный символ и указатель на него
UCHAR, PUCHAR 8-разрядный символ без знака и указатель на него
SCHAR, PSCHAR 8-разрядный символ со знаком и указатель на него
SHORT, PSHORT 16-разрядное целое со знаком и указатель на него
CSHORT Короткое целое со знаком
        2 Основные структуры данных
        С WDM-драйверами связаны две основные структуры данных – объект
драйвера и объект устройства.
        Объект драйвера представляет драйвер. Он содержит указатели на функции
драйвера, которые могут вызываться системой. (Здесь следует напомнить, что
WDM-драйвер является контейнером функций, которые он по собственной
инициативе не выполняет. Все вызовы функций драйвера выполняются
операционной системой.)
        Объект устройства представляет конкретный экземпляр устройства. Он
содержит данные, позволяющие управлять этим устройством.


        2.1 Объекты драйверов
        Диспетчер ввода-вывода использует для представления каждого драйвера
устройства объект драйвера.
        Объект драйвера определяется в DDK в файле WDM.H следующим образом:
typedef struct _DRIVER_OBJECT
 {                                   // Объявление структуры с именем
 CSHORT Type;                        //   DRIVER_OBJECT, для которой
 CSHORT Size;                        // объявляется тип указателя
 …                                   // PDRIVER_OBJECT и тэг
 }   DRIVER_OBJECT, *PDRIVER_OBJECT;             // DRIVEROBJECT
        (CSHORT – короткое целое со знаком)

               Таблица 2.1 – Стандартные имена типов для драйверов
Имя типа                        Описание
PVOID, PVOID64                  Обобщенные указатели (стандартные и 64-
                                разрядные)
NTAPI                           Используется в объявления системных функций
                                для использования соглашений вызова __stdcall
                                на платформе i86
VOID                            эквивалент void
CHAR, PCHAR                     8-разрядный символ и указатель на него
UCHAR, PUCHAR                   8-разрядный символ без знака и указатель на него
SCHAR, PSCHAR                   8-разрядный символ со знаком и указатель на него
SHORT, PSHORT                   16-разрядное целое со знаком и указатель на него
CSHORT                          Короткое целое со знаком



                                          24