152 lines
2.9 KiB
C
152 lines
2.9 KiB
C
#include "stdio.h"
|
||
#include "windows.h"
|
||
|
||
|
||
void getlpt1timeout(void) {
|
||
|
||
HANDLE hFile;
|
||
COMMTIMEOUTS To = {0};
|
||
|
||
if ((hFile = CreateFile(
|
||
"LPT1",
|
||
GENERIC_READ | GENERIC_WRITE,
|
||
0,
|
||
NULL,
|
||
CREATE_ALWAYS,
|
||
FILE_ATTRIBUTE_NORMAL,
|
||
NULL
|
||
)) == ((HANDLE)-1)) {
|
||
|
||
printf("Couldn't open LPT1\n");
|
||
exit(1);
|
||
|
||
}
|
||
|
||
if (!GetCommTimeouts(
|
||
hFile,
|
||
&To
|
||
)) {
|
||
|
||
printf("Couldn't get the timeouts: %d\n",GetLastError());
|
||
exit(1);
|
||
|
||
}
|
||
|
||
printf("WriteTotalTimeout: %d\n",To.WriteTotalTimeoutConstant);
|
||
CloseHandle(hFile);
|
||
|
||
}
|
||
void setlpt1timeout(int milliseconds) {
|
||
|
||
HANDLE hFile;
|
||
COMMTIMEOUTS To = {0};
|
||
|
||
if ((hFile = CreateFile(
|
||
"LPT1",
|
||
GENERIC_READ | GENERIC_WRITE,
|
||
0,
|
||
NULL,
|
||
CREATE_ALWAYS,
|
||
FILE_ATTRIBUTE_NORMAL,
|
||
NULL
|
||
)) == ((HANDLE)-1)) {
|
||
|
||
printf("Couldn't open LPT1\n");
|
||
exit(1);
|
||
|
||
}
|
||
|
||
To.WriteTotalTimeoutConstant = milliseconds;
|
||
if (!SetCommTimeouts(
|
||
hFile,
|
||
&To
|
||
)) {
|
||
|
||
printf("Couldn't set the timeouts: %d\n",GetLastError());
|
||
|
||
}
|
||
|
||
|
||
if (!GetCommTimeouts(
|
||
hFile,
|
||
&To
|
||
)) {
|
||
|
||
printf("Couldn't get the timeouts: %d\n",GetLastError());
|
||
exit(1);
|
||
|
||
} else {
|
||
|
||
printf("Timeouts are now: %d\n",To.WriteTotalTimeoutConstant);
|
||
|
||
}
|
||
CloseHandle(hFile);
|
||
|
||
}
|
||
|
||
|
||
int _CRTAPI1 main(int argc,char *argv[]) {
|
||
|
||
DWORD start,end;
|
||
|
||
//
|
||
// Get the current value of the timeouts.
|
||
//
|
||
|
||
getlpt1timeout();
|
||
|
||
//
|
||
// Set it to an illegal value.
|
||
//
|
||
|
||
setlpt1timeout(1999);
|
||
|
||
//
|
||
// Now set it to 10 seconds.
|
||
//
|
||
|
||
setlpt1timeout(10000);
|
||
getlpt1timeout();
|
||
|
||
start = GetCurrentTime();
|
||
if (CopyFile("ttimeout.exe","LPT1",FALSE)) {
|
||
printf("ACK!!! The copy succeeded\n");
|
||
exit(1);
|
||
}
|
||
end = GetCurrentTime();
|
||
printf("Number of millis to fail: %d\n",end-start);
|
||
|
||
//
|
||
// Now set it to 20 seconds.
|
||
//
|
||
|
||
setlpt1timeout(20000);
|
||
getlpt1timeout();
|
||
|
||
start = GetCurrentTime();
|
||
if (CopyFile("ttimeout.exe","LPT1",FALSE)) {
|
||
printf("ACK!!! The copy succeeded\n");
|
||
exit(1);
|
||
}
|
||
end = GetCurrentTime();
|
||
printf("Number of millis to fail: %d\n",end-start);
|
||
|
||
//
|
||
// Now set it back to 10 seconds.
|
||
//
|
||
|
||
setlpt1timeout(10000);
|
||
getlpt1timeout();
|
||
|
||
start = GetCurrentTime();
|
||
if (CopyFile("ttimeout.exe","LPT1",FALSE)) {
|
||
printf("ACK!!! The copy succeeded\n");
|
||
exit(1);
|
||
}
|
||
end = GetCurrentTime();
|
||
printf("Number of millis to fail: %d\n",end-start);
|
||
|
||
return 1;
|
||
}
|
||
|