疑惑,使用WinInet函数在DLL里面,在FreeLibrary执行的为什么这么慢?
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外部资源,以及如何引入头文件
易语言源码易语言DLL操作模块源码
易语言源码易语言DLL操作模块源码
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+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
科技中介服务机构如何提升服务的专业性与用户粘性?.docx
科技中介服务机构如何提升服务的专业性与用户粘性?


网络编程
