首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wininet.dll中看似随机崩溃的原因?

wininet.dll中看似随机崩溃的原因?
EN

Stack Overflow用户
提问于 2010-08-12 19:33:48
回答 2查看 1.4K关注 0票数 0

我在wininet.dll中的撞车越来越深。它试图读取HTTP_REQUEST_HANDLE_OBJECT::ReleaseConnection中的零内存位置时崩溃了。

这是否是实际DLL中的错误,而不是由于使用不当造成的?

wininet!HTTP_REQUEST_HANDLE_OBJECT::ReleaseConnection+0x60

wininet!HTTP_REQUEST_HANDLE_OBJECT::CloseConnection+0x84

wininet!HTTP_REQUEST_HANDLE_OBJECT::ReadData_Fsm+0x5e8

温妮特!CFsm_ReadData::RunSM+0x2e

温妮特!CFsm::Run+0x39

温妮特!DoFsm+0x25

wininet!HTTP_REQUEST_HANDLE_OBJECT::ReadData+0x38

wininet!HTTP_REQUEST_HANDLE_OBJECT::HttpReadData_Fsm+0x43

温妮特!CFsm_HttpReadData::RunSM+0x2e

温妮特!CFsm::Run+0x39

温妮特!DoFsm+0x25

温妮特!HttpReadData+0x67

温妮特!ReadFile_Fsm+0x2d

温妮特!CFsm_ReadFile::RunSM+0x2b

温妮特!CFsm::Run+0x39

温妮特!DoFsm+0x25

温妮特!InternetReadFile+0x3ca

上下文是我正在尝试下载一个文件。我打电话给你

InternetReadFile (hFile,lpBuffer,dwNumberOfBytesToRead,lpdwNumberOfBytesRead);

hFile HINTERNET句柄看起来很好(值为0x00cc0024,这似乎是合法的),dwNumberOfBytesToRead是20000。

我的缓冲器大小是131000,也可以。

事情是我的代码工作99.9999%的时间!

EN

回答 2

Stack Overflow用户

发布于 2010-08-12 19:58:10

检查lpdwNumberOfBytesRead的使用情况。它应该是

代码语言:javascript
复制
DWORD *lpdwNumberOfBytesRead = &someDWORDsomewhere;
InternetReadFile (..., lpdwNumberOfBytesRead);

代码语言:javascript
复制
DWORD NumBytes
InternetReadFile (..., &NumBytes);

我有一种感觉,您正在执行第一个方法,而没有在有效的地方设置指针变量。

票数 0
EN

Stack Overflow用户

发布于 2010-08-16 20:53:43

我发现问题是在其他线程中调用已经关闭句柄的InternetCloseHandle。通常,这只会返回ERROR_INVALID_HANDLE,但在某些情况下,会导致InternetCloseHandle或本例中的wininet崩溃。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3471321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档