疑惑,使用WinInet函数在DLL里面,在FreeLibrary执行的为什么这么慢?

seesi seesi 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在我的一个DLL工程里面调用了WinInet的相关函数。如下面所示
int PostInfo(const char* cpszServerAddress, void* pvSend, int nSendSize, void* pvReturn, int* pnReturnSize)
{
bool bResult = false;
int nRetcode = false;
HINTERNET hSession = NULL;
HINTERNET hConnect = NULL;
HINTERNET hRequst = NULL;
char szReadBuf[4096] = {0};
int nRead = 0;


hSession = ::InternetOpen("MyAgent",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
INTERNET_INVALID_PORT_NUMBER,
0);
if (!hSession)
{
goto Exit0;
}

hConnect = ::InternetConnect(hSession,
cpszServerAddress,
INTERNET_DEFAULT_HTTP_PORT,
"",
"",
INTERNET_SERVICE_HTTP,
0,
1);
if (!hConnect)
{
goto Exit0;
}

hRequst = ::HttpOpenRequest(hConnect,
"POST",
"test.asp",
HTTP_VERSION,
NULL,
0,
INTERNET_FLAG_DONT_CACHE | INTERNET_FLAG_RELOAD,
1);
if (!hRequst)
{
goto Exit0;
}

nRetcode = ::HttpSendRequest(hRequst, NULL, 0, pvSend, nSendSize);
if (!nRetcode)
{
goto Exit0;
}

nRetcode = ::InternetReadFile(hRequst, szReadBuf, sizeof(szReadBuf) - 1, (LPDWORD)&nRead);
if (!nRetcode || nRead == 0)
{
goto Exit0;
}

*(char*)(szReadBuf + nRead) = NULL;

memcpy(pvReturn, szReadBuf, *pnReturnSize);

*pnReturnSize = nRead;

bResult = true;

Exit0:

if (hRequst)
{
InternetCloseHandle(hRequst);
}

if (hConnect)
{
InternetCloseHandle(hConnect);
}

if (hSession)
{
InternetCloseHandle(hSession);
}

return bResult;
}

我使用另外的一个EXE工程,LoadLibrary把该DLL动态Load进来,调用该DLL的导出函数PostInfo,很快就返回正确的数据了。但是当我的EXE在调用FreeLibrary的时候却要很长时间才返回(30秒左右),这段时间内界面也会失去响应。有什么解决的办法吗?
...全文

相关推荐

MT4 Dll请求http源码

1.例子里面提供DLL 以及如何在MT4客户端调用dll 2.例子演示如何请求http外部资源,以及如何引入头文件

kenan881

易语言源码易语言DLL操作模块源码

易语言源码易语言DLL操作模块源码

codedadi

phpMyAdmin暴力破解v1.3

我正在网上搜刮了一下没发明相干的东西, 因而本身出手翰单真现这听命, 而今phpMyAdmin3.2.5,phpMyAdmin3.2.1、phpMyAdmin2.11.2版本测试均成功! 此东西仅供网友技术进修交换利用,请勿利用于犯警用处。 MySQL数据库字典,人人就本身网上支散了! 当前版本 v1.2 MD5:541465699949f3d60fcea923ccf245b2 sha1:e23d7ce46606d530abc4a9e473bdb0b5247aaff1 – ver1.2 措置对phpMyAdmin3.2.5版本暴破有标题问题,删加了一个工作线程, 美化了界面。 – ver1.1 1.0版本有个标题问题,正在win7、vista下都不能正常扫描, 现曾纠正过往。 ————————————————— 技术总结: 《vc6建正删除cookie真现》 InternetSetCookie函数太老,能建正一般cookie值,但是正在win7下高版本Wininet.DLL中无法让HTTPONLY类型的cookie过时, 要利用InternetSetCookieEx函数才成功,正在vs2010下直接用该函数,vc6下本身加载模块查找函数, vc6下查找利用该函数删除cookie以下: HINSTANCE hInst = LoadLibrary(“Wininet.DLL”); if(hInst) { typedef BOOL (WINAPI *pfnInternetSetCookieEx)(LPCSTR, LPCSTR, LPCSTR, DWORD, DWORD); pfnInternetSetCookieEx InternetSetCookieEx = NULL; InternetSetCookieEx = (pfnInternetSetCookieEx)GetProcAddress(hInst, “InternetSetCookieExA”); //InternetSetCookieEx(m_url, NULL, ” phpMyAdmin=; expires=Thu, 01-Jan-1900 00:00:01 GMT”, INTERNET_COOKIE_HTTPONLY, NULL); InternetSetCookieEx(m_url, NULL, ” phpMyAdmin=; expires=Thu, 01-Jan-1900 00:00:01 GMT”, INTERNET_COOKIE_HTTPONLY, NULL); FreeLibrary(hInst); } 寄看,要分隔设置cookie字段,不能一次设置多个字段,不然不成功,下面的语句只要第一个字段被设置成功,其它字段均不成功! InternetSetCookieEx(m_url, NULL, ” phpMyAdmin=; pma_mcrypt_iv=; pmaUser-1=; pmaPass-1=; expires=Thu, 01-Jan-1900 00:00:01 GMT”, INTERNET_COOKIE_HTTPONLY, NULL); 精确理当如许写, InternetSetCookieEx(m_url, NULL, ” phpMyAdmin=; expires=Thu, 01-Jan-1900 00:00:01 GMT”, INTERNET_COOKIE_HTTPONLY, NULL); InternetSetCookieEx(m_url, NULL, ” pma_mcrypt_iv=; expires=Thu, 01-Jan-1900 00:00:01 GMT”, INTERNET_COOKIE_HTTPONLY, NULL); InternetSetCookieEx(m_url, NULL, ” pmaUser-1=; expires=Thu, 01-Jan-1900 00:00:01 GMT”, INTERNET_COOKIE_HTTPONLY, NULL); InternetSetCookieEx(m_url, NULL, ” pmaPass-1=; expires=Thu, 01-Jan-1900 00:00:01 GMT”, INTERNET_COOKIE_HTTPONLY, NULL); 1>

「已注销」

高校技术转移办公室人员如何高效开展技术需求挖掘工作?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

科技中介服务机构如何提升服务的专业性与用户粘性?.docx

科技中介服务机构如何提升服务的专业性与用户粘性?

BIZKEEN
评论 21
收藏 已收藏
分享
返回顶部
seesi
网络编程 18,356 成员 64,161 内容