GetHttpConnection()方法中发生访问冲突

时间:2014-12-22 02:41:01

标签: c++ visual-c++

您正在创建一个程序,以便从VC ++ 2012中的指定URL下载文件。 部分要作为DLL下载,我们从主程序调用。 在这种情况下,当您运行GetHttpConnection()方法时,会发生访问冲突。 我们检查了各种,但不知道。 请借你的智慧。

MAIN.EXE

    :
    :
    :
hModule = LoadLibraryW(currentDirectory);
DLL_GetHttp = (FUNC_DLL_GetHttp)GetProcAddress(hModule, "GetHttp");
    :
    :
    :
CHttpConnection* pConnection = NULL;
CInternetSession session;
CHttpFile* pFile = NULL; 

BYTE* pRecvBuf;
ULONG pnRecvSize;
ULONG lRet;


lRet = DLL_GetHttp(&pConnection, &session, &pFile, downloadFile, NULL, 0, &pRecvBuf, &pnRecvSize);
   :
   :

http.dll

ULONG GetHttp(CHttpConnection** pConnection, CInternetSession* session, CHttpFile** pFile, LPCTSTR url, BYTE* pSendBuf, ULONG nSendSize, BYTE** pRecvBuf, ULONG* pnRecvSize) 
{ 
    *pRecvBuf = NULL; 
    *pnRecvSize = 0; 
    LONG nRet = 0; 

    DWORD dwServiceType; 
    CString strServer; 
    CString strObject; 
    INTERNET_PORT nPort; 
    CString strConnectUrl;

    strConnectUrl = url;

    AFX_MANAGE_STATE( AfxGetStaticModuleState() );

    if (!AfxParseURL(url, dwServiceType, strServer, strObject, nPort)) 
    { 
        // ASSERT(0); 
        return ERROR_PARAMETOR; 
    } 


    try 
    { 
        (*pConnection) = (*session).GetHttpConnection(       // access error!!!!
            strServer, 
            INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE , 
            nPort, 
            NULL, 
            NULL 
        ); 

        DWORD dwFlags = INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE; 
        BOOL bSecure = strConnectUrl.MakeLower().Find(_T("https")) == 0; 
        if (bSecure) 
        { 
            dwFlags |= INTERNET_FLAG_SECURE; 
        } 

        *pFile = (*pConnection)->OpenRequest( 
            CHttpConnection::HTTP_VERB_POST, 
            strObject, 
            NULL, 
            1, 
            NULL, 
            _T("HTTP/1.1"), 
            dwFlags 
        ); 

        :
        :
        :

0 个答案:

没有答案