2010-08-12 5 views
0

wininet.dll에서 심한 충돌이 발생합니다. 메모리가 0 인 위치를 읽으려고하면 오류가 발생했습니다. HTTP_REQUEST_HANDLE_OBJECT::ReleaseConnectionwininet.dll에서 임의로 비정상적으로 충돌이 발생 했습니까?

부적절한 사용으로 인한 것이 아닌 실제 DLL의 버그입니까? !

WinInet을 HTTP_REQUEST_HANDLE_OBJECT :: ReleaseConnection + 0x60으로
WinInet을 HTTP_REQUEST_HANDLE_OBJECT :: CloseConnection + 0x84
WinInet을 HTTP_REQUEST_HANDLE_OBJECT :: ReadData_Fsm + 0x5e8
WinInet을 CFsm_ReadData :: RunSM + 0x2e
WinInet을 CFSM!!! : !!! 실행 + 아님 0x39
WinInet을 DoFsm + 0x25로
WinInet을 HTTP_REQUEST_HANDLE_OBJECT ::가 ReadData + 0x38로
WinInet을 HTTP_REQUEST_HANDLE_OBJECT :: HttpReadData_Fsm + 0x43부터
,451,515,WinInet이! CFsm_HttpReadData :: RunSM + 0x2e
WinInet을! CFSM :: 실행은 + 아님 0x39
WinInet을! DoFsm + 0x25로
WinInet을! HttpReadData + 0x67
WinInet을! ReadFile_Fsm +가
에서 WinInet 0x2d! CFsm_ReadFile :: RunSM + 0x2b
WinInet이! CFSM :: 실행 + 아님 0x39
WinInet을! DoFsm + 0x25로
WinInet을! InternetReadFile을 + 0x3ca

컨텍스트 내가 파일을 다운로드하는 것을 시도하고있다. 나는 전화하고있다

InternetReadFile (hFile, lpBuffer, dwNumberOfBytesToRead, lpdwNumberOfBytesRead);

HFILE HINTERNET 핸들 (값이 정당한 것 0x00cc0024 임) dwNumberOfBytesToRead 내 버퍼 크기가 너무 미세하다 131,000 인 20000

미세한 보인다.

내 코드는 99.9999 %의 시간 동안 작동합니다!

+0

아마도 잘못된 데이터를 전달하는 것입니다. 귀하의 프로그램에서 어떤 전화로 충돌이 발생합니까? 통화 및 관련 주변 코드를 붙여 넣으십시오. – Thomas

+3

오류가 발생하는 WinInet을 호출하는 방법 ** 및 ** 테스트 할 O/S 및 서비스 팩 수준 등의 상황을 * 더 많이 제공해야합니다.그것이 Windows OS의 핵심 부분이라는 점을 감안할 때, 당신에게 잘못이있을 가능성은 극단적 인 것입니다. (그러나 Windows에서 아직 알려지지 않은 버그를 발견했을 가능성은 항상 있습니다.) – Rob

+0

파일을 다운로드하려고합니다. 나는 전화를한다 InternetReadFile (hFile, lpBuffer, dwNumberOfBytesToRead, lpdwNumberOfBytesRead); hFile HINTERNET 핸들이 잘 보입니다 (값은 0x00cc0024로 합법적 인 것 같습니다) dwNumberOfBytesToRead는 20000입니다. – crazyx

답변

0

lpdwNumberOfBytesRead의 사용을 확인하십시오. 그것은해야 하나

DWORD *lpdwNumberOfBytesRead = &someDWORDsomewhere; 
InternetReadFile (..., lpdwNumberOfBytesRead); 

또는

DWORD NumBytes 
InternetReadFile (..., &NumBytes); 

난 당신이 어딘가에 유효한 포인터 변수를 설정하지 않고 첫 번째 방법을하고있는 느낌이

.

+0

두 번째 방법을 사용하고 있는데, 내 코드는 99.9999 %의 시간 동안 작동합니다! 포인터를 가져 주셔서 감사합니다. – crazyx

+0

신속하고 정확한 답을 원하면 관련 코드를 게시하십시오. – wallyk

0

이미 닫힌 핸들이있는 다른 스레드에서 InternetCloseHandle을 호출 할 때 문제가 있음을 발견했습니다. 일반적으로 이것은 ERROR_INVALID_HANDLE을 반환하지만 일부 상황에서는 InternetCloseHandle 또는이 경우처럼 wininet 충돌이 발생합니다.

관련 문제