Re[4]: Почему WaitCommEvent не работает с win2000?
От: SSAlex  
Дата: 16.01.03 16:00
Оценка:
Здравствуйте, dodson, Вы писали:

D>ну так в чем его "нерабочесть" проявляется?


D>
D>if (WaitCommEvent(hCommPort,&dwMask,&ov))
D>  {
D>// сюда попдаем если в событие которое мы ждем уже случилось 
D>  ....
D>  }else{ 
D>    if(GetLastError() == ERROR_IO_PENDING){ 
D>    // обрабат. overlapped:
D>      switch(WaitForSingleObject(overlapped.hEvent, timeoutInSeconds * 1000)){ //ждем какое-то время
D>        case WAIT_TIMEOUT: // не дождались
D>          CloseHandle(overlapped.hEvent);
D>          return TimeoutExceed;
D>        break;
D>        case WAIT_OBJECT_0: // чего-то дождались
D>        ...
D>        ...
D>}
D>


А нерабочесть его проявляется по-тому, что я-придурок, написал все до "else"
а после него — ничего.
Вот и получалось, что в overlapped у меня было событие, только ни как не обрабатывалось.

Но это я уже прошел.

Теперь у меня новая проблема:
после
...
GetOverlappedResult(hCommPort, &ov, NULL, true);
...
оно выкидывает ошибку
"Access violation at address 77E95DB in module 'Kernel32.dll'. Write of address 00000000"

Может для него нужен "особенный" overlapped?

И еще, где я могу посмотреть на код происшедшего события?

Может в &dwMask, который укзывался в WaitCommEvent?

if (WaitCommEvent(hCommPort,&dwMask,&ov))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.