如何从GetFile()获取特定的错误信息?

时间:2010-01-28 22:21:31

标签: c++ c winapi file ftp

void GetFtpFile(LPCTSTR pszServerName, LPCTSTR pszRemoteFile, LPCTSTR pszLocalFile)
{
   CInternetSession session(_T("My FTP Session"));
   CFtpConnection* pConn = NULL;

   pConn = session.GetFtpConnection(pszServerName);
   //get the file
   if (!pConn->GetFile(pszRemoteFile, pszLocalFile))
   {
      //display an error
   }
   delete pConn;
   session.Close();
}

如何从GetFile()获取特定的错误信息?

谢谢。

3 个答案:

答案 0 :(得分:1)

GetLastError()怎么样?

答案 1 :(得分:1)

根据MSDN它的GetLastError()

答案 2 :(得分:1)

根据MSDN

  

返回值

     

如果成功则非零;

     
    

否则为0.如果通话失败,则为     Win32函数GetLastError可能是     打电话来确定原因     错误。

  

GetLastError()会返回错误代码,但您可以调用FormatMessage()从错误代码中获取人类可读的字符串。这是一个实用功能,可以为您完成:

std::string formatwinerr(unsigned long errCode)
{
    LPVOID lpMsgBuf;

    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM ,
        0,
        errCode,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf,
        0, NULL );

    std::string ret((const char*)lpMsgBuf);

    LocalFree(lpMsgBuf);

    return ret;
}