Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, adad, Вы писали:
A>>A>>DWORD CHTTPReader::GetDataSize ()
A>>
К>Вроде написано правильно.
К>На будущее: не запихивай цитаты в тэг [code]!!!
К>Ассерты расставил? Дебаггер запустил? Подрывается на ассертах или по-прежнему access violation?
Да эфект есть, изменил код примерно следующим образом
char *CHTTPReader::GetData (char *lpszBuffer,DWORD dwSize,DWORD *lpdwBytesRead)
{
assert(this != NULL);
assert(m_lpszDataBuffer != NULL);
assert(m_lpszDataBuffer == lpszBuffer);
assert(dwSize <= m_dwBufferSize);
DWORD dwBytesRead;
if (lpdwBytesRead == NULL)
lpdwBytesRead = &dwBytesRead;
*lpdwBytesRead = 0;
assert(lpdwBytesRead != NULL);
if (m_hRequest) {
bool bRead = ::InternetReadFile(
m_hRequest,
lpszBuffer,
dwSize,
lpdwBytesRead) != FALSE;
lpszBuffer[*lpdwBytesRead] = 0;
assert(*lpdwBytesRead <= dwSize);
return CheckError(bRead) && *lpdwBytesRead? lpszBuffer: NULL;
}
return NULL;
}

Вылетает при проверке m_lpszDataBuffer, тоесть она равняеться NULL.
Ставил ассерт перед вызовом InternetReadFile, так же срабатывает и перед строчкой на которой вылетает отладчик в первых постах, тоже срабатывает.
Проверив на NULL другие переменые которые там участвуют оказалось что lpszBuffer, dwSize тоже принимают Null перед вызовом InternetReadFile.