Ожидание выполнения асинхронных функций Wininet
От: formatc  
Дата: 11.09.01 10:55
Оценка:
Подскажите, пожалуйста, как правильно реализовать следующую задумку:

В 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 — все проходит на ура и программа работает...

Как реализовать ожидание заполнения буфера?
Дайте попить, а то так есть хочется, что переночевать негде!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.