Курсовая работа: Профилировщик приложений

Использует буферизацию (системный буфер)

Адрес буфера в системном адресном пространстве указан в pIrp->AssociatedIrp.SystemBuffer

Клиентский виртуальный адрес в Parameters. DeviceIoControl. Type3InputBuffer Длина указана в Parameters.DeviceIoControl.InputBufferLength

Output

Буфер для данных

Использует буферизацию (системный буфер)

Адрес буфера в системном адресном пространстве указан в pIrp-> AssociatedIrp. SystemBuffer

Использует прямой доступ, клиентский буфер преобразован в MDL список, указатель на который размещен в pIrp->MdlAddress Клиентский виртуальный адрес в pIrp->UserBuffer Длина указана в Parameters.DeviceIoControl.OutputBufferLength

2.4.4 ISR – процедура обработки прерываний

Эту функцию драйвер регистрирует, чтобы она получала управление в момент, когда аппаратура, обслуживаемая драйвером, передала сигнал прерывания. Задача этой функции выполнить минимальную работу и зарегистрировать процедуру отложенного вызова (DPC) для обслуживания прерывания. Вызов диспетчером прерываний ядра может произойти в любом контексте: как ядра, так и пользовательского процесса.

2.4.5 DPC – процедура отложенного вызова

Такие процедуры выполняются при более низком уровне запроса прерывания (IRQL), чем ISR, что позволяет не блокировать другие прерывания. В них может выполняться вся или завершаться начатая в ISR работа по обслуживанию прерываний.


3. Конструкторский раздел

Так выглядит схема взаимодействия пользовательского приложения с драйвером через компоненты системы:

3.1 Legacy-драйвер

В Legacy-драйвере данного курсового проекта реализованы следующие процедуры:

DriverEntry;

DriverUnload;

DispatchCreate (обработка IRP_MJ_CREATE-пакета);

DispatchClose (обработка IRP_MJ_CLOSE-пакета);

DispatchDeviceControl (обработка IRP_MJ_DEVICE_CONTROL-пакета).

3.1.1 Процедура DriverEntry

Здесь выполняются типичные для инициализации драйвера драйвера действия.

Регистрируются точки входа в драйвер:

pDriverObject->DriverUnload = SpectatorDriverUnload;

PDRIVER_DISPATCH * majorFunction = pDriverObject->MajorFunction;

majorFunction[ IRP_MJ_CREATE ] = SpectatorDispatchCreate;

majorFunction[ IRP_MJ_CLOSE ] = SpectatorDispatchClose;

majorFunction[ IRP_MJ_DEVICE_CONTROL ] = SpectatorDispatchDeviceControl;

Создаётся объект устройства с именем DEVICE_NAME:

#define DEVICE_NAME L"\\Device\\Spectator"

RtlInitUnicodeString( &deviceName, DEVICE_NAME );

status = IoCreateDevice

(pDriverObject,

sizeof( DEVICE_EXTENSION ),

К-во Просмотров: 415
Бесплатно скачать Курсовая работа: Профилировщик приложений