Программирование драйверов Windows


Приложение для тестирования драйвера


Простое консольное приложение выполняет несложные операции в последовательной манере. Здесь нет сложных одновременных обращений из многих потоков. Тестирование сводится к передаче в драйвер 17 байт и последующему ожиданию от него ответа, размером 34 байта. Разумеется, драйвер может возвратить только полученные ранее данные, ни байтом больше.

Сборку приложения можно осуществлять при помощи такого файла Sources:

TARGETNAME=test TARGETTYPE=PROGRAM UMTYPE=console UMENTRY=main UMBASE=0x400000 TARGETPATH=. INCLUDES= $(BASEDIR)\inc

SOURCES=test.cpp

А это, собственно, исходный код тестового приложения: //======================================================================= // Файл тестовой программы test.cpp //=======================================================================

#include &#60windows.h&#62 #include &#60stdio.h&#62

// Предварительное объявление int ReadWrite(HANDLE devHandle);

#define BUFFSIZE (17) static unsigned char outBuffer[BUFFSIZE], inBuffer[BUFFSIZE*2];

int __cdecl main() { printf("\n\n\n\n\nParallel Port CheckIt Loopback Device Test Program.\n" );

HANDLE devHandle; devHandle = CreateFile( "\\\\.\\LPTPORT0", GENERIC_READ | GENERIC_WRITE, 0, // share mode none NULL, // no security OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); // no template

if ( devHandle == INVALID_HANDLE_VALUE ) { printf("Error: can not open device PLPTPORT0. Win32 errno %d\n", GetLastError() ); return -1; } printf("Congratulation. LPTPORT0 device is open.\n\n"); //========================================== DWORD i=3,j=0; for ( ; j&#60sizeof(outBuffer); ) outBuffer[j++] = (unsigned char)i++; //========================================== //for(i=0; i&#60 100000; i++) //{ int result = ReadWrite(devHandle); // if(result) break; //} //========================================== // Завершение работы if ( ! CloseHandle(devHandle) ) { printf("\n Error during CloseHandle: errno %d.\n", GetLastError() ); return 5; } printf("\n\n\n Device LPTPORT0 successfully closed.


Начало  Назад  Вперед