Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые обзорные » Драйвера ядра Windows

Реферат Драйвера ядра Windows





ндартне вікно, чи є він і якого типу, у вигляді тексту. Вказівка. Драйвер передає в зухвалу програму значення з CMOS, а саме з байта по зсуві 10h - наявність і тип дисководів A: (старша 16-ричная цифра) і B: (молодша). Значення: 0 - немає дисковода, 4 - на 1.44Мб

Лістинг shablon.c

# include // various NT definitions

# include

# define IOCTL_GET CTL_CODE (FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_READ_ACCESS + FILE_WRITE_ACCESS) _STRING g_usDeviceName; _STRING g_usSymbolicLinkName; DriverUnload (IN PDRIVER_OBJECT pDriverObject) {(& g_usSymbolicLinkName); (pDriverObject-> DeviceObject);

} DispatchCreateClose (PDEVICE_OBJECT pDeviceObject, PIRP pIrp) {//обробка MJ_CREATE MJ_CLOSE> IoStatus.Status = STATUS_SUCCESS;> IoStatus.Information = 0; (pIrp, IO_NO_INCREMENT); STATUS_SUCCESS;

} DispatchControl (PDEVICE_OBJECT pDeviceObject, PIRP pIrp) {//обробка IRP_MJ_DEVICECONTROLstatus; regEsi;

// беремо покажчик на IO_STACK_LOCATION, в ньому на == IOCTL_GET) {

// Порівнюємо код дії і якщо це таки наш клієнт, то:

_asm {eax, 0al, 10h70h, alal, 71hregEsi, eax

}

// це наша функціональність - беремо вміст регістра esi

// записуємо його в системний буфер

* ((int *) pIrp-> AssociatedIrp.SystemBuffer) = regEsi;> IoStatus.Information = 4;// і задаємо розмір результат = STATUS_SUCCESS;

} else status = STATUS_INVALID_DEVICE_REQUEST;> IoStatus.Status = status; (pIrp, IO_NO_INCREMENT); (status);

} DriverEntry (IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pusRegistryPath) {Status; _OBJECT pDeviceObject;

// инициализируем Unicode-рядка (& g_usDeviceName, L " Device DevGet"); (& g_usSymbolicLinkName, L "?? sldevGet");

// заповнюємо об'єкт драйвера - дохідливо пояснюємо драйвера яка функція що обробляє> DriverUnload = & DriverUnload;> MajorFunction [IRP_MJ_CREATE] = & DispatchCreateClose;> MajorFunction [IRP_MJ_CLOSE] = & DispatchCreateClose; > MajorFunction [IRP_MJ_DEVICE_CONTROL] = & DispatchControl;

// створюємо логічний об'єкт віртуального пристрою = IoCreateDevice (pDriverObject, 0, & g_usDeviceName, FILE_DEVICE_UNKNOWN, 0, FALSE, & pDeviceObject); (! NT_SUCCESS (Status)) {return Status;}

// створюємо символьне посилання на пристрій = IoCreateSymbolicLink (& g_usSymbolicLinkName, & g_usDeviceName); (! NT_SUCCESS (Status)) {(pDeviceObject); Status;

} Status;

}

Лістинг курсовая2.cpp

# include "stdafx.h"

# include "windows.h"

...


Назад | сторінка 11 з 15 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Status and rights of refugees in Kazakhstan
  • Реферат на тему: Результати дослідження верхнього відділу дихальних шляхів, огляду та пальпа ...
  • Реферат на тему: Дослідження діяльності малого підприємства ІП "It-status" з надан ...
  • Реферат на тему: Розробка драйвера, що розпізнає USB-пристрій як віртуальний COM-порт в сист ...
  • Реферат на тему: Розробка програми-драйвера клавіатури