Здравствуйте 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..."