| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Как явно вызвать механизм APC |
| Автор: AlekXL 14.6.2013, 15:46 |
| у меня есть код, вызывающий ReadFileEx с параметром FileIOCompletetion, который указателем на функцию. Порой немедленный вызов GetOverlappedResult возвращает TRUE, тем самым показывая, что буфер записан, однако возвращаемое значение lpNumberOfBytesTransferred иногда при этом оказывается нулевым. Единственный способ получить корректный размер(я думаю) записанных данных - это войти в Alertable State и дождаться, когда будет вызван callback FileIOCompletetion Как это сделать? Приходит на ум SleepEx(n,TRUE), но как я понимаю если первый параметр будет нулевым, то поток пропустит весь свой таймслайс, а если больше - потратится время на вход и выход в Kernel Mode. Мне нужна функция, которая вынудит систему вызвать все запланированные коллбэки(которых может быть 0 или больше), и немедленно вернуть управление к точке вызова. |
| Автор: Illusion Dolphin 14.6.2013, 23:26 | ||||
Тут есть несколько вариантов. Он может быть успешно прочитал 0 байтов
А т.к. кода нету то и не понятно, что происходит. В любом случае надо разобраться с тем, что не так, а не городить SleepEx и тому подобное, имхо. |