Здравствуйте, 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))