Re[2]: Ожидание выполнения асинхронных функций Wininet
От: formatc  
Дата: 14.09.01 11:26
Оценка:
Здравствуйте IT, вы писали:

IT>Здравствуйте formatc, вы писали:


F>>Теперь суть проблемы: В вызовах функций wininet НЕ устанавливается флаг асинхронной работы.

F>>Но после вызова Get из приложения, начинает обрабатываться буфер Body, что и вызывает исключение.
F>>НО если после вызова Get стоит MessageBox — все проходит на ура и программа работает...

IT>Сдаётся мне, что синхронизация здесь никаким боком. Интересно посмотреть на код вызывающей функции и в особенности на последующую обработку буфера. А сам прототип я бы паписал так:


IT>
IT>BOOL Get(URLPARAM& Param,LPSTR Head,LPSTR *Body)
IT>  или
IT>LPSTR Get(URLPARAM& Param,LPSTR Head)
IT>


Прототип я переписал как:
BOOL Get(URLPARAM& Param,LPSTR* Head,LPSTR *Body);

Но это ничего не изменило. Зато появились следующие непонятности:
После вызова метода Get, вызывается функция
char * GetCookie(char * Head);

использующая функции sltrlen и регулярные выражения (исходных текстов под рукой нет, могу отослать мылом), применяемо к параметру Head. Так вот если MessageBox поставить после этой функции:

char * lpszHead = NULL, *lpszBody = NULL;
BOOL bGetExec = Get(&Param,lpszHead,lpszBody);
if(bGetExec)
{
   char * Cookie = GetCookie(char * Head); // здесь стоит BreakPoint
   MessageBox(nWnd,Cookie,"Cookie",MB_OK);
   ....  
}


то все идет как надо, в обратном случае Head содержит "...Bad Request..."
Дайте попить, а то так есть хочется, что переночевать негде!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.