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


Приложение для тестирования драйвера - часть 2


Normal exit.\n"); return 0; }

//========================================================================== // Выделим запись и чтение данных в отдельную функцию: // int ReadWrite(HANDLE devHandle) { //========================================== // Передача данных драйверу printf("Writing to LPTPORT0 device...\n");

DWORD bytesWritten, outCount = sizeof(outBuffer); if ( !WriteFile(devHandle, outBuffer, outCount, &bytesWritten, NULL) ) { printf("Error during WriteFile: errno %d.\n", GetLastError() ); return 1; } if ( outCount != bytesWritten ) // если не все передалось: { printf("Error: while wrote %d bytes, WriteFile reported %d bytes.\n", outCount, bytesWritten); return 2; } printf("Successfully written %d bytes.\n Buffer content was: \n", outCount); for (DWORD i=0; i&#60bytesWritten; i++ ) printf("%02X ",outBuffer[i]); //========================================== //Sleep(10); // Ожидание 10 миллисекунд //========================================== // Получение данных из драйвера printf("\n\nReading from device LPTPORT0...\n");

DWORD bytesRead, inCount = sizeof(inBuffer); if ( !ReadFile(devHandle, inBuffer, inCount, &bytesRead, NULL) ) { printf("Error during ReadFile: errno %d.\n", GetLastError() ); return 3; } if ( bytesRead != bytesWritten ) { // размер записанных и прочитанных данных не совпадает printf("Error: is to read %d bytes, but ReadFile reported %d bytes.\n", bytesWritten, inCount); return 4; } printf("Succesfully read %d bytes.\n Buffer content is: \n", bytesRead); for ( i=0; i&#60bytesRead; i++ ) printf( "%02X ", (UCHAR)inBuffer[i] ); return 0; // Нормальное завершение }

При запуске тестовой программы в консольном окне наблюдаем вывод на экран следующих сообщений:

L:\#ex_lpt\test\>test
Parallel Port CheckIt Loopback Device Test Program.
Congratulation. LPTPORT0 device is open.

Writing to LPTPORT0 device...
Successfully written 17 bytes.



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