Re[9]: Примеры из wininet
От: adad  
Дата: 12.11.09 15:11
Оценка: :)
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.