ВУЗ:
Составители:
29
Поле DeviceExtension (PVOID) указывает на структуру данных,
содержащую информацию о конкретном экземпляре устройства. Структуру
определяет автор драйвера.
Поле DeviceType (DEVICE_TYPE) содержит константу перечислимого
типа, соответствующую типу устройства. Диспетчер ввода-вывода заполняет это
поле в соответствии с четвертым аргументом функции IoCreateDevice.
В поле StackSize (CCHAR) содержится количество объектов устройства от
текущего до нижнего уровня
PDO.
Поле AlignmentRequirement (ULONG) определяет требования к
выравниванию буферов данных, используемых запросами на чтение или запись в
устройство. Файл WDM.H содержит набор констант от
FILE_BYTE_ALIGNMENT до FILE_512_BYTE_ALIGNMENT. Значение
константы определяется границей выравнивания (соответствующая степень
двойки) –1. Так FILE_64_BYTE_ALIGNMENT=0x3F (63D).
Далее рассмотрим основные необходимые функции драйвера.
2.3 Функция DriverEntry
Как уже говорилось выше,
диспетчер PnP при обнаружении нового
устройства загружает необходимые драйверы и вызывает их функции AddDevice.
Однако драйвер при загрузке может требовать собственной инициализации,
которая выполняется при его загрузке. За эту глобальную инициализацию
отвечает функция DriverEntry.
Ее прототип выглядит так:
extern “C” NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPatch)
{
}
Разберем прототип по элементам.
extern “C” – позволяет использовать компилируемые модули C++, в
котором, в отличии от С, объявлять переменные можно не только за
открывающей скобкой, но и в любом другом месте. Кроме того, эта директива
Поле DeviceExtension (PVOID) указывает на структуру данных, содержащую информацию о конкретном экземпляре устройства. Структуру определяет автор драйвера. Поле DeviceType (DEVICE_TYPE) содержит константу перечислимого типа, соответствующую типу устройства. Диспетчер ввода-вывода заполняет это поле в соответствии с четвертым аргументом функции IoCreateDevice. В поле StackSize (CCHAR) содержится количество объектов устройства от текущего до нижнего уровня PDO. Поле AlignmentRequirement (ULONG) определяет требования к выравниванию буферов данных, используемых запросами на чтение или запись в устройство. Файл WDM.H содержит набор констант от FILE_BYTE_ALIGNMENT до FILE_512_BYTE_ALIGNMENT. Значение константы определяется границей выравнивания (соответствующая степень двойки) –1. Так FILE_64_BYTE_ALIGNMENT=0x3F (63D). Далее рассмотрим основные необходимые функции драйвера. 2.3 Функция DriverEntry Как уже говорилось выше, диспетчер PnP при обнаружении нового устройства загружает необходимые драйверы и вызывает их функции AddDevice. Однако драйвер при загрузке может требовать собственной инициализации, которая выполняется при его загрузке. За эту глобальную инициализацию отвечает функция DriverEntry. Ее прототип выглядит так: extern “C” NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPatch) { } Разберем прототип по элементам. extern “C” – позволяет использовать компилируемые модули C++, в котором, в отличии от С, объявлять переменные можно не только за открывающей скобкой, но и в любом другом месте. Кроме того, эта директива 29
Страницы
- « первая
- ‹ предыдущая
- …
- 27
- 28
- 29
- 30
- 31
- …
- следующая ›
- последняя »