Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > GetOverlappedResult - смысл возвращаемого значения


Автор: AlekXL 10.6.2013, 10:07
меня интересует , в каких случаях GetOverlappedResult возвращает true, а в каких false
верно ли, что GetOverlappedResult возвращает TRUE в случае, когда операция (успешно?) завершена?

Автор: Illusion Dolphin 10.6.2013, 11:51
Цитата

Возвращаемые значения

Если функция завершается успешно, возвращаемое значение - не нуль.

Если функция завершается ошибкой, возвращаемое значение - нуль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms683209%28v=vs.85%29.aspx

Автор: AlekXL 10.6.2013, 16:55
Цитата(Illusion Dolphin @  10.6.2013,  11:51 Найти цитируемый пост)
Цитата

Возвращаемые значения

Если функция завершается успешно, возвращаемое значение - не нуль.

Если функция завершается ошибкой, возвращаемое значение - нуль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.

http://msdn.microsoft.com/en-us/library/wi...v=vs.85%29.aspx 

но что считать ошибкой? Поврежденную структуру overlapped? Незавершенную IO операцию? Завершенную, но неуспешную?
Вопрос не так прост, как вы хотите его представить.

Автор: Illusion Dolphin 10.6.2013, 17:38
Цитата

но что считать ошибкой?

Всё кроме "завершается успешно". Функция "Retrieves the results of an overlapped operation on the specified file, named pipe, or communications device. ". Если вернулось тру, то результат асинхронной операции - удача, т.е. то, чего просили - сделано. Иначе - не тру и надо вызывать GetLastError. 
Цитата

 Поврежденную структуру overlapped?

Будет фолс т.к. не удастся получить результат операции.

Цитата

Незавершенную IO операцию?

Если bWait = false то если операция не завершилась то будет тоже фолс, т.к. операция ещё не успешная

Цитата

Завершенную, но неуспешную?

false

Добавлено через 8 минут
А вообще почитайте статью по ссылке, там даже расписываются отдельные примеры, в том числе с ERROR_IO_PENDING (Незавершенную IO операцию). 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)