информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеАтака на InternetВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] NT DDK 31.07.02 15:31  Число просмотров: 1102
Автор: $tain Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > И что???
> > Никто такого никогда не писал???
> >
> >
> > > Может кто-нибудь кинет кусок кода как отослать 1
> байт
> > на
> > > LPT, использую NT драйвера....
> > > Через WtiteFile не работает....
>
> 1. WtiteFile прекрасно работает, проверено, мин - нет!
> 2. в режиме ядра это сделать можно ооооооочень многими
> способами... но они настолько тривиальны что если ты даже
> не можешь использовать WtiteFile корректно то тебе не здесь
> помощь искать надо.

Я не претендую на звание ОТЦА!!!!
Неужели сложно объяснить...

Вот код, он не работает...
В чем дело и как это исправить....

DWORD dwRC;
DWORD dwError;
char sMsg[512];
HANDLE hLPT;

DCB dcb;
COMMTIMEOUTS Timeouts;

bool bPortReady = TRUE;

hLPT = CreateFile("\\\\.\\lpt1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);

if (hLPT == INVALID_HANDLE_VALUE)
{
bPortReady = FALSE;
dwError = GetLastError();

LPVOID lpMsgBuf;
lpMsgBuf = NULL;
dwRC = FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwError,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0,
NULL);


if (dwRC && lpMsgBuf)
{
LocalFree( lpMsgBuf );
}

}

if (bPortReady)
{
bPortReady = SetupComm(hLPT, 128, 128);

if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "SetupComm failed: Error=%d", dwError);
MessageBox(sMsg);

}
}

if (bPortReady)
{
bPortReady = GetCommState(hLPT, &dcb);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "GetCommState failed: Error=%d",dwError);
MessageBox(sMsg);
}
}

if (bPortReady)
{
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fAbortOnError = TRUE;

bPortReady = SetCommState(hLPT, &dcb);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "SetCommState failed: Error = %d",dwError);
MessageBox(sMsg);
}
}

if (bPortReady)
{
bPortReady = GetCommTimeouts (hLPT, &Timeouts);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "GetCommTimeouts failed: Error = %d",dwError);
MessageBox(sMsg);
}
}

if (bPortReady)
{
Timeouts.ReadIntervalTimeout = 50;
Timeouts.ReadTotalTimeoutConstant = 50;
Timeouts.ReadTotalTimeoutMultiplier = 10;
Timeouts.WriteTotalTimeoutConstant = 50;
Timeouts.WriteTotalTimeoutMultiplier = 10;
bPortReady = SetCommTimeouts (hLPT, &Timeouts);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "SetCommTimeouts failed:Error = %d",dwError);
MessageBox(sMsg);
}
}

DWORD dwBytesWritten = 0;
char lpBuf[64];

unsigned char ch = 15; // Например

if(bPortReady)
{
if(!WriteFile(hLPT, &ch, 1, &dwBytesWritten, NULL))
{
MessageBox("Cann't write");
}
}

CloseHandle(hLPT);




<programming>
[Win32] NT DDK 30.07.02 19:53  
Автор: $tain Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Может кто-нибудь кинет кусок кода как отослать 1 байт на LPT, использую NT драйвера....
Через WtiteFile не работает....
[Win32] I tut uzhe brosal ssylku na LPT port driver dlia NT... 31.07.02 21:52  
Автор: + <Mikhail> Статус: Elderman
Отредактировано 31.07.02 21:59  Количество правок: 1
<"чистая" ссылка>
doma u menia est i source code i driver, tolko I doma k komputeru ne podhozhu. I sam etot driver ispolzoval chtoby EEPROM pisat` rabotaet otlichno obrachaeshsia cherea C-shnye inp() outp().
Takchto poroisia na forume ssylka dolzhna byt`

Bot tebe u link
[Win32] I tut uzhe brosal ssylku na LPT port driver dlia NT... 01.08.02 00:17  
Автор: $tain Статус: Незарегистрированный пользователь
<"чистая" ссылка>
thx
[Win32] NT DDK 31.07.02 13:45  
Автор: $tain Статус: Незарегистрированный пользователь
<"чистая" ссылка>
И что???
Никто такого никогда не писал???


> Может кто-нибудь кинет кусок кода как отослать 1 байт на
> LPT, использую NT драйвера....
> Через WtiteFile не работает....
[Win32] NT DDK 31.07.02 14:05  
Автор: NeuronViking Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> И что???
> Никто такого никогда не писал???
>
>
> > Может кто-нибудь кинет кусок кода как отослать 1 байт
> на
> > LPT, использую NT драйвера....
> > Через WtiteFile не работает....

1. WtiteFile прекрасно работает, проверено, мин - нет!
2. в режиме ядра это сделать можно ооооооочень многими способами... но они настолько тривиальны что если ты даже не можешь использовать WtiteFile корректно то тебе не здесь помощь искать надо.
[Win32] NT DDK 31.07.02 15:31  
Автор: $tain Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > И что???
> > Никто такого никогда не писал???
> >
> >
> > > Может кто-нибудь кинет кусок кода как отослать 1
> байт
> > на
> > > LPT, использую NT драйвера....
> > > Через WtiteFile не работает....
>
> 1. WtiteFile прекрасно работает, проверено, мин - нет!
> 2. в режиме ядра это сделать можно ооооооочень многими
> способами... но они настолько тривиальны что если ты даже
> не можешь использовать WtiteFile корректно то тебе не здесь
> помощь искать надо.

Я не претендую на звание ОТЦА!!!!
Неужели сложно объяснить...

Вот код, он не работает...
В чем дело и как это исправить....

DWORD dwRC;
DWORD dwError;
char sMsg[512];
HANDLE hLPT;

DCB dcb;
COMMTIMEOUTS Timeouts;

bool bPortReady = TRUE;

hLPT = CreateFile("\\\\.\\lpt1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);

if (hLPT == INVALID_HANDLE_VALUE)
{
bPortReady = FALSE;
dwError = GetLastError();

LPVOID lpMsgBuf;
lpMsgBuf = NULL;
dwRC = FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwError,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0,
NULL);


if (dwRC && lpMsgBuf)
{
LocalFree( lpMsgBuf );
}

}

if (bPortReady)
{
bPortReady = SetupComm(hLPT, 128, 128);

if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "SetupComm failed: Error=%d", dwError);
MessageBox(sMsg);

}
}

if (bPortReady)
{
bPortReady = GetCommState(hLPT, &dcb);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "GetCommState failed: Error=%d",dwError);
MessageBox(sMsg);
}
}

if (bPortReady)
{
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fAbortOnError = TRUE;

bPortReady = SetCommState(hLPT, &dcb);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "SetCommState failed: Error = %d",dwError);
MessageBox(sMsg);
}
}

if (bPortReady)
{
bPortReady = GetCommTimeouts (hLPT, &Timeouts);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "GetCommTimeouts failed: Error = %d",dwError);
MessageBox(sMsg);
}
}

if (bPortReady)
{
Timeouts.ReadIntervalTimeout = 50;
Timeouts.ReadTotalTimeoutConstant = 50;
Timeouts.ReadTotalTimeoutMultiplier = 10;
Timeouts.WriteTotalTimeoutConstant = 50;
Timeouts.WriteTotalTimeoutMultiplier = 10;
bPortReady = SetCommTimeouts (hLPT, &Timeouts);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "SetCommTimeouts failed:Error = %d",dwError);
MessageBox(sMsg);
}
}

DWORD dwBytesWritten = 0;
char lpBuf[64];

unsigned char ch = 15; // Например

if(bPortReady)
{
if(!WriteFile(hLPT, &ch, 1, &dwBytesWritten, NULL))
{
MessageBox("Cann't write");
}
}

CloseHandle(hLPT);




1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach