Подскажите, пожалуйста, как правильно реализовать следующую задумку:
В DLL реализована функция с прототипом:
BOOL Get(URLPARAM *Param,LPSTR & Head,LPSTR & Body), где URLPARAM — структура содержащаю урл, прокси, и прочие флаги соединения, а Head и Body используются только для возврата значений.
Получение происходит с помощью функций:
InternetOpen -> InternetConnect -> HttpSendRequest -> HttpHueryInfo -> InternetReadFile -> InternetCloseHandle(3)
есть внутренний буфер char[1024], в который считывается информация (InternetReadFile), затем перевыделяется память
под общий буфер (Body = realloc) и дописывается свежесчитанный кусок. В завершении ставим последним символом общего буфера "\0" и получаем на выходе функции указатель на буфер нужной длины.
Теперь суть проблемы: В вызовах функций wininet НЕ устанавливается флаг асинхронной работы.
Но после вызова Get из приложения, начинает обрабатываться буфер Body, что и вызывает исключение.
НО если после вызова Get стоит MessageBox — все проходит на ура и программа работает...
Как реализовать ожидание заполнения буфера?
Дайте попить, а то так есть хочется, что переночевать негде!