ндартне вікно, чи є він і якого типу, у вигляді тексту. Вказівка. Драйвер передає в зухвалу програму значення з 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" 
...