SDC C-Project CF Review 프로그램
kojingeun
2023-11-24 c112cf54a238afa473e7eb0ea6298e06f4957658
FTPUploader/FTPUploader/FTPThreadPool.cpp
@@ -28,7 +28,7 @@
   m_nConnectionTimeout2   = 5000;
   m_strDefaultFolderPath2   = _T("/Test/");
   //201218 CJH - Download용 IP 추가
   //201218 CJH - Download�� IP �߰�
   m_strIP3            = _T("127.0.0.1");
   m_strID3            = _T("ID_Invalid");
   m_strPassword3         = _T("PW_Invalid");
@@ -118,12 +118,13 @@
BOOL CFTPThreadPool::Process_UploadAck(int nResultCode, const CFTPUploadParam& uploadParam)
{
   if (uploadParam.m_nSendResultCode==0)
   {
      return TRUE;
   }
//    if (uploadParam.m_nSendResultCode==0)
//    {
//       return TRUE;
//    }
   HWND hWnd = uploadParam.GetSenderWnd();
   //HWND hWnd = uploadParam.GetSenderWnd();
   HWND hWnd = ::FindWindow(NULL, "ReviewSystem");
   if (hWnd==NULL) 
   {
      return FALSE;
@@ -215,7 +216,7 @@
      DisplayLogMessage(strMessage);
   }
   // ACK를 해야하나?
   // ACK�� �ؾ��ϳ�?
   Process_UploadAck(nUploadResult, uploadParam);
   
   return TRUE;
@@ -255,7 +256,7 @@
      DisplayLogMessage(strMessage);
   }      
   // ACK를 해야하나?
   // ACK�� �ؾ��ϳ�?
   Process_DownloadAck(TRUE, downloadParam);
   return TRUE;
@@ -267,7 +268,7 @@
   m_nConnectionTimeout = nTimeout;
}
void CFTPThreadPool::SetConnectionInfo( CString strIP, CString strUserID, CString strPassword, int nPort, int nTimeout, CString strHomePath, CString strIP2, CString strUserID2, CString strPassword2, int nPort2, int nTimeout2, CString strHomePath2, CString strIP3, CString strUserID3, CString strPassword3, int nPort3, int nTimeout3, CString strHomePath3, BOOL bPassive ,BOOL bWSIChk)
void CFTPThreadPool::SetConnectionInfo( CString strIP, CString strUserID, CString strPassword, int nPort, int nTimeout, CString strHomePath, CString strIP2, CString strUserID2, CString strPassword2, int nPort2, int nTimeout2, CString strHomePath2, CString strIP3, CString strUserID3, CString strPassword3, int nPort3, int nTimeout3, CString strHomePath3, BOOL bPassive ,BOOL bWSIChk, BOOL bBDIStackDown)
{
   m_strIP               = strIP;
   m_strID               = strUserID;
@@ -285,7 +286,7 @@
   m_nConnectionTimeout2   = nTimeout2;
   m_strDefaultFolderPath2   = strHomePath2;
   //201218 CJH - Download용 IP 추가
   //201218 CJH - Download�� IP �߰�
   m_strIP3            = strIP3;
   m_strID3            = strUserID3;
   m_strPassword3         = strPassword3;
@@ -294,6 +295,7 @@
   m_strDefaultFolderPath3   = strHomePath3;
   m_bWSIChk            = bWSIChk;
   m_bBDIStackDown         = bBDIStackDown;
   if(m_strDefaultFolderPath.Right(1) != _T("\\"))
   {
@@ -310,11 +312,11 @@
{
   Sleep(10);
   // Main 서버 접속
   // Main ���� ����
   if(m_bConnect = Connect())
   {
      //NotifyMessageToParent(eFTPConnection,m_strIP,m_strDefaultFolderPath);
      // 기본 폴더 이동
      // �⺻ ���� �̵�
      if(m_bSharedFolder == FALSE && ChangeDirectory(m_strDefaultFolderPath) == FALSE)
      {
         CString strError = _T("CFTPThread::OnStartUploadProcess ChangeDirectory Process Error");
@@ -352,7 +354,7 @@
   }
   m_pSession->SetOption(INTERNET_OPTION_CONNECT_TIMEOUT,m_nConnectionTimeout);   
   m_pSession->SetOption(INTERNET_OPTION_SEND_TIMEOUT,m_nConnectionTimeout);      // GetLastError 시에 ERROR_INTERNET_TIMEOUT 에러를 리턴한다.
   m_pSession->SetOption(INTERNET_OPTION_SEND_TIMEOUT,m_nConnectionTimeout);      // GetLastError �ÿ� ERROR_INTERNET_TIMEOUT ������ �����Ѵ�.
   
   try
   {
@@ -450,7 +452,7 @@
      return bReturn;
   }
   // 마지막 폴더로 이동이 실패 한다면 For문 돌면서 폴더를 생성한다.
   // ������ ������ �̵��� ���� �Ѵٸ� For�� ���鼭 ������ �����Ѵ�.
   CString strFinalPath = strPath;
   int nStartIdx = 1;
   while(TRUE)
@@ -486,11 +488,11 @@
   CString strMessage = _T("");
   BOOL bUploadResult = FALSE;
   // 최종 서버 경로 만들기
   // ���� ���� ��� �����
   CString strServer_FinalPath = m_strDefaultFolderPath + Param.m_strServer_SignalFolderName;
   strServer_FinalPath += _T("/");
   // 서버 경로 변경 없으면 만들어서 변경
   // ���� ��� ���� ������ ���� ����
   if(m_bSharedFolder)
   {
      CString strCreatePath;
@@ -502,21 +504,21 @@
      ChangeDirectory(strServer_FinalPath, TRUE);
   }
   // 로컬 시그널 파일 경로
   // ���� �ñ׳� ���� ���
   CString strLocalSignalPath = LOCAL_SIGNAL_FILE_PATH;
   strLocalSignalPath += _T("\\");
   strLocalSignalPath += Param.m_strServer_SignalFileName;
   // 로컬에 시그널 파일 만들기
   // ���ÿ� �ñ׳� ���� �����
   CFile SignalFile;
   if (SignalFile.Open((LPCTSTR)strLocalSignalPath, CFile::modeCreate))
   {
      SignalFile.Close();
      // 리모트 시크널 파일 경로
      // ����Ʈ ��ũ�� ���� ���
      strServer_FinalPath = strServer_FinalPath + Param.m_strServer_SignalFileName;
      // 시그널 파일 업로드
      // �ñ׳� ���� ���ε�
      if(m_bSharedFolder)
      {
         bUploadResult =  CopyFile(strLocalSignalPath, strServer_FinalPath, FALSE);
@@ -526,10 +528,10 @@
         bUploadResult = m_pConnection->PutFile(strLocalSignalPath, strServer_FinalPath);
      }
      // 로컬 시그널 파일 삭제
      // ���� �ñ׳� ���� ����
      DeleteFile(strLocalSignalPath);
      // 결과 로그 출력
      // ��� �α� ���
      DisplayResultMessage(bUploadResult, strServer_FinalPath, strLocalSignalPath);
   }
@@ -547,9 +549,9 @@
   CString strMessage = _T("");
   BOOL bUploadResult = TRUE;
   CString strConfigBackUpIp = _T("12.96.66.96");                // RTMS PC IP [ 21-03-03 KJG ] // RTMS PC ID/PW : administrator / dit1234!@
   CString strConfigBackUpPath =_T("DIT_AutoConfigBackUp\\");     // RTMS PC로 Config 파일 업로드 경로 [ 21-03-03 KJG ]
   CString strConfigBackUpPath =_T("DIT_AutoConfigBackUp\\");     // RTMS PC�� Config ���� ���ε� ��� [ 21-03-03 KJG ]
   // [C-PRJ] Image Upload Define - KHT (2020/11/19)
   // 최종 서버 경로 만들기
   // ���� ���� ��� �����
   CString strServer_FinalPath, strServer_WSIFinalPath = _T("");
   if(Param.m_nDataType == FTPDataType_Image)
@@ -565,14 +567,14 @@
   {
      strServer_FinalPath = m_strDefaultFolderPath + Param.m_strServer_FolderName;
   }
   if(Param.m_nDataType == FTPDataType_AutoBackUp) // RTMS PC로 Config 파일 업로드 경로 [ 21-03-03 KJG ]
   if(Param.m_nDataType == FTPDataType_AutoBackUp) // RTMS PC�� Config ���� ���ε� ��� [ 21-03-03 KJG ]
   {
      strServer_FinalPath.Format("%s%s", strConfigBackUpPath, Param.m_strServer_FolderName);
   }
   //strServer_FinalPath += _T("\\");
   // 서버 경로 변경 없으면 만들어서 변경
   // ���� ��� ���� ������ ���� ����
   if(m_bSharedFolder)
   {
      CString strCreatePath;
@@ -593,7 +595,7 @@
      {
         strCreatePath = "\\\\"+m_strIP+ "\\" + strServer_FinalPath;
      }
      if(Param.m_nDataType == FTPDataType_AutoBackUp) // RTMS PC로 Config 파일 업로드 경로 [ 21-03-03 KJG ]
      if(Param.m_nDataType == FTPDataType_AutoBackUp) // RTMS PC�� Config ���� ���ε� ��� [ 21-03-03 KJG ]
      {
         strCreatePath.Format("\\\\%s\\%s", strConfigBackUpIp, strServer_FinalPath);
      }
@@ -606,7 +608,7 @@
   }
   //Raw 파일 경로 추가
   //Raw ���� ��� �߰�
   CString strServerSubRawFileFullPathName=NULL;
   if(Param.m_nDataType == FTPDataType_Raw)
   {
@@ -617,12 +619,12 @@
   
   // 로컬 풀 경로명 만들기
   // ���� Ǯ ��θ� �����
   CString strLocal_FullPathName = Param.m_strLocal_FolderName;
   strLocal_FullPathName += _T("\\");
   strLocal_FullPathName += Param.m_strLocal_FileName;
   // 로컬 경로에서 올릴 파일 찾기
   // ���� ��ο��� �ø� ���� ã��
   CFileFind finder;
   CString strServer_FullPathName =_T("");
   BOOL bFind = finder.FindFile(strLocal_FullPathName);
@@ -634,13 +636,13 @@
      if (finder.IsDots()) continue;
      if (finder.IsDirectory()) continue;
      // 서버 풀 경로명 만들기
      // ���� Ǯ ��θ� �����
      strServer_FullPathName = strServer_FinalPath + finder.GetFileName();
      
      // 로컬 풀 경로명 만들기
      // ���� Ǯ ��θ� �����
      strLocal_FullPathName = finder.GetFilePath();
      
      // 업로드
      // ���ε�
      if(m_bSharedFolder)
      {
         // [C-PRJ] Image Upload Define - KHT (2020/11/19)
@@ -652,13 +654,33 @@
         {
            strServer_FullPathName = "\\\\"+m_strIP+ "\\" + strServer_FinalPath + finder.GetFileName();
         }
         if(Param.m_nDataType == FTPDataType_AutoBackUp) // RTMS PC로 Config 파일 업로드 경로 [ 21-03-03 KJG ]
         if(Param.m_nDataType == FTPDataType_AutoBackUp) // RTMS PC�� Config ���� ���ε� ��� [ 21-03-03 KJG ]
         {
            strServer_FullPathName = "\\\\"+ strConfigBackUpIp + "\\" + strServer_FinalPath + finder.GetFileName();
         }
         strServer_FullPathName.MakeLower();
         strServer_FullPathName.Replace("/", "\\");
//LYW
         // ���� ��ο� �ش� Raw������ �ִٸ� �ð��� �ٿ��� ���(Rename) [ 21-04-16 KJG ]
         if(Param.m_nDataType ==FTPDataType_Raw && m_bBDIStackDown)
         {
            CFileFind cfinder;
            BOOL bFileExist = cfinder.FindFile(strServer_FullPathName);
            if(bFileExist)
            {
               CString strCreationTime;
               CTime tmFileCreation;
               cfinder.FindNextFile();
               cfinder.GetLastWriteTime(tmFileCreation);
               strCreationTime.Format(_T("_%04d%02d%02d%02d%02d%02d"),
                  tmFileCreation.GetYear(), tmFileCreation.GetMonth(), tmFileCreation.GetDay(), tmFileCreation.GetHour(), tmFileCreation.GetMinute(), tmFileCreation.GetSecond());
               CFile::Rename(strServer_FullPathName, strServer_FullPathName + strCreationTime);
               DisplayResultMessage(bUploadResult, "Exist RawFile Change RawFile Name %s",strServer_FullPathName + strCreationTime);
               Sleep(30); // Rename ���ð�
            }
         }
//LYW
         bUploadResult =  CopyFile(strLocal_FullPathName, strServer_FullPathName, FALSE);
         CopyFile(strLocal_FullPathName,strServerSubRawFileFullPathName, FALSE);
      }
@@ -673,19 +695,19 @@
         int a = 0;
      }
      // 결과 로그 출력
      // ��� �α� ���
      DisplayResultMessage(bUploadResult, strServer_FullPathName, strLocal_FullPathName);
   }
   finder.Close();
   if(Param.m_nDataType == FTPDataType_Image && m_bWSIChk)
   {         
      // WSI 로컬 풀 경로명 만들기
      // WSI ���� Ǯ ��θ� �����
      CString strWSILocal_FullPathName = Param.m_strLocal_FolderName;
      strWSILocal_FullPathName += _T("\\WSI\\");
      strWSILocal_FullPathName += Param.m_strLocal_FileName;
      
      // WSI 로컬 경로에서 올릴 파일 찾기
      // WSI ���� ��ο��� �ø� ���� ã��
      CFileFind finder;
      CString strServer_WSIFullPathName =_T("");
      BOOL bFind = finder.FindFile(strWSILocal_FullPathName);
@@ -697,13 +719,13 @@
         if (finder.IsDots()) continue;
         if (finder.IsDirectory()) continue;
         // 서버 풀 경로명 만들기
         // ���� Ǯ ��θ� �����
         strServer_WSIFullPathName = strServer_WSIFinalPath + finder.GetFileName();
      
         // 로컬 풀 경로명 만들기
         // ���� Ǯ ��θ� �����
         strWSILocal_FullPathName = finder.GetFilePath();
      
         // 업로드
         // ���ε�
         if(m_bSharedFolder)
         {
            strServer_WSIFullPathName = "\\\\"+m_strIP2+ "\\" + strServer_WSIFinalPath + finder.GetFileName();
@@ -724,7 +746,7 @@
            int a = 0;
         }
         // 결과 로그 출력
         // ��� �α� ���
         DisplayResultMessage(bUploadResult, strServer_WSIFullPathName, strWSILocal_FullPathName);
      }
      finder.Close();
@@ -746,14 +768,14 @@
      RTMSFile.Format(RTMSFile + "%04d%02d%02d%02d%02d%02d.Signal",time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
      //파일 이동
      bCopy = ::CopyFile(Param.m_strRTMS_FileName, RTMSFile,FALSE);
      //���� �̵�
      bUploadResult = ::CopyFile(Param.m_strRTMS_FileName, RTMSFile,FALSE);
      DisplayResultMessage(bCopy,Param.m_strRTMS_FileName,RTMSFile);
      DisplayResultMessage(bUploadResult,Param.m_strRTMS_FileName,RTMSFile);
   }
   // 시그널 파일을 업로드해야하면.
   // �ñ׳� ������ ���ε��ؾ��ϸ�.
   if( Param.m_nCreateSignalFile == 1)
   {
      Upload_Signal(Param);
@@ -767,10 +789,10 @@
   if(m_bSharedFolder == FALSE && m_pConnection == NULL)
      return FALSE;
   // 서버 최종 경로
   // ���� ���� ���
   CString strServer_FinalPath = m_strDefaultFolderPath3 + Param.m_strServer_FolderName + "/";
   //201208 CJH - Stack 용 추가
   //201208 CJH - Stack �� �߰�
   if(m_bSharedFolder)
   {
      CString strCreatePath;
@@ -782,14 +804,14 @@
      ChangeDirectory(strServer_FinalPath, TRUE);
   }
   // 로컬 최종 경로
   // ���� ���� ���
   BOOL bDownResult = TRUE;
   CString strLocal_FullPathName = Param.m_strLocal_FolderName;
   strLocal_FullPathName += _T("\\");
   try
   {
      // 서버 최종 파일
      // ���� ���� ����
      if(m_bSharedFolder)
      {
         strServer_FinalPath = "\\\\"+m_strIP3+ m_strDefaultFolderPath3 + Param.m_strServer_FolderName + "/" ;
@@ -817,14 +839,14 @@
            CString strValue = finder.GetFileName();
            // 로컬 풀 경로 만들기
            // ���� Ǯ ��� �����
            strLocal_FullFileName = strLocal_FullPathName + Param.m_strLocal_FileName;
            CString strServerFileName = strServer_FinalPath + finder.GetFileName();
            // 다운로드
            // �ٿ�ε�
            bDownResult = bDownResult &  CopyFile(strServerFileName, strLocal_FullFileName, FALSE);
            // 결과 로그 출력
            // ��� �α� ���
            DisplayResultMessage(bDownResult, strServerFileName, strLocal_FullFileName);
         }
@@ -846,16 +868,16 @@
            CString strValue = finder.GetFileName();
            // 로컬 풀 경로 만들기
            // ���� Ǯ ��� �����
            strLocal_FullFileName = strLocal_FullPathName + Param.m_strServer_FileName;//finder.GetFileName();
            // 서버 풀 경로 가져오기
            // ���� Ǯ ��� ��������
            strServer_FinalPath = strServer_FinalPath;//finder.GetFilePath();
            // 다운로드
            // �ٿ�ε�
            bDownResult = bDownResult &  m_pConnection->GetFile(strServer_FinalPath, strLocal_FullFileName, FALSE);
            // 결과 로그 출력
            // ��� �α� ���
            DisplayResultMessage(bDownResult, strServer_FinalPath, strLocal_FullFileName);
         }
         finder.Close();
@@ -887,56 +909,56 @@
   switch(dwErrorCode)
   {
   case   ERROR_INTERNET_OUT_OF_HANDLES           :   strRet = _T("ERROR_INTERNET_OUT_OF_HANDLES            할당할 수 있는 인터넷 핸들이 없습니다.                  "); break;
   case   ERROR_INTERNET_TIMEOUT                  :   strRet = _T("ERROR_INTERNET_TIMEOUT                  작업 시간을 초과했습니다.                  "); break;
   case   ERROR_INTERNET_EXTENDED_ERROR           :   strRet = _T("ERROR_INTERNET_EXTENDED_ERROR            서버에서 확장 정보를 반환했습니다.                  "); break;
   case   ERROR_INTERNET_INTERNAL_ERROR           :   strRet = _T("ERROR_INTERNET_INTERNAL_ERROR            Microsoft 인터넷 확장에서 내부 오류가 발생했습니다.                  "); break;
   case   ERROR_INTERNET_INVALID_URL              :   strRet = _T("ERROR_INTERNET_INVALID_URL               잘못된 URL입니다.                  "); break;
   case   ERROR_INTERNET_UNRECOGNIZED_SCHEME      :   strRet = _T("ERROR_INTERNET_UNRECOGNIZED_SCHEME         URL에서 인식된 프로토콜을 사용하지 않습니다.                  "); break;
   case   ERROR_INTERNET_NAME_NOT_RESOLVED        :   strRet = _T("ERROR_INTERNET_NAME_NOT_RESOLVED         서버 이름이나 주소를 확인할 수 없습니다.                  "); break;
   case   ERROR_INTERNET_PROTOCOL_NOT_FOUND       :   strRet = _T("ERROR_INTERNET_PROTOCOL_NOT_FOUND         필요한 기능이 포함된 프로토콜을 찾을 수 없습니다.                  "); break;
   case   ERROR_INTERNET_INVALID_OPTION           :   strRet = _T("ERROR_INTERNET_INVALID_OPTION            잘못된 옵션입니다.                  "); break;
   case   ERROR_INTERNET_BAD_OPTION_LENGTH        :   strRet = _T("ERROR_INTERNET_BAD_OPTION_LENGTH         옵션 종류에 대해 길이가 맞지 않습니다.                  "); break;
   case   ERROR_INTERNET_OPTION_NOT_SETTABLE      :   strRet = _T("ERROR_INTERNET_OPTION_NOT_SETTABLE         옵션 값을 설정할 수 없습니다.                  "); break;
   case   ERROR_INTERNET_SHUTDOWN                 :   strRet = _T("ERROR_INTERNET_SHUTDOWN               Microsoft 인터넷 확장 지원이 종료되었습니다.                  "); break;
   case   ERROR_INTERNET_INCORRECT_USER_NAME      :   strRet = _T("ERROR_INTERNET_INCORRECT_USER_NAME         사용할 수 없는 사용자 이름입니다.                  "); break;
   case   ERROR_INTERNET_INCORRECT_PASSWORD       :   strRet = _T("ERROR_INTERNET_INCORRECT_PASSWORD         사용할 수 없는 암호입니다.                  "); break;
   case   ERROR_INTERNET_LOGIN_FAILURE            :   strRet = _T("ERROR_INTERNET_LOGIN_FAILURE            로그인 요청이 거부되었습니다.                  "); break;
   case   ERROR_INTERNET_OUT_OF_HANDLES           :   strRet = _T("ERROR_INTERNET_OUT_OF_HANDLES            �Ҵ��� �� �ִ� ���ͳ� �ڵ��� �����ϴ�.                  "); break;
   case   ERROR_INTERNET_TIMEOUT                  :   strRet = _T("ERROR_INTERNET_TIMEOUT                  �۾� �ð��� �ʰ��߽��ϴ�.                  "); break;
   case   ERROR_INTERNET_EXTENDED_ERROR           :   strRet = _T("ERROR_INTERNET_EXTENDED_ERROR            �������� Ȯ�� ������ ��ȯ�߽��ϴ�.                  "); break;
   case   ERROR_INTERNET_INTERNAL_ERROR           :   strRet = _T("ERROR_INTERNET_INTERNAL_ERROR            Microsoft ���ͳ� Ȯ�忡�� ���� ������ �߻��߽��ϴ�.                  "); break;
   case   ERROR_INTERNET_INVALID_URL              :   strRet = _T("ERROR_INTERNET_INVALID_URL               �߸��� URL�Դϴ�.                  "); break;
   case   ERROR_INTERNET_UNRECOGNIZED_SCHEME      :   strRet = _T("ERROR_INTERNET_UNRECOGNIZED_SCHEME         URL���� �νĵ� ���������� ������� �ʽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_NAME_NOT_RESOLVED        :   strRet = _T("ERROR_INTERNET_NAME_NOT_RESOLVED         ���� �̸��̳� �ּҸ� Ȯ���� �� �����ϴ�.                  "); break;
   case   ERROR_INTERNET_PROTOCOL_NOT_FOUND       :   strRet = _T("ERROR_INTERNET_PROTOCOL_NOT_FOUND         �ʿ��� ����� ���Ե� ���������� ã�� �� �����ϴ�.                  "); break;
   case   ERROR_INTERNET_INVALID_OPTION           :   strRet = _T("ERROR_INTERNET_INVALID_OPTION            �߸��� �ɼ��Դϴ�.                  "); break;
   case   ERROR_INTERNET_BAD_OPTION_LENGTH        :   strRet = _T("ERROR_INTERNET_BAD_OPTION_LENGTH         �ɼ� ������ ���� ���̰� ���� �ʽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_OPTION_NOT_SETTABLE      :   strRet = _T("ERROR_INTERNET_OPTION_NOT_SETTABLE         �ɼ� ���� ������ �� �����ϴ�.                  "); break;
   case   ERROR_INTERNET_SHUTDOWN                 :   strRet = _T("ERROR_INTERNET_SHUTDOWN               Microsoft ���ͳ� Ȯ�� ������ ����Ǿ����ϴ�.                  "); break;
   case   ERROR_INTERNET_INCORRECT_USER_NAME      :   strRet = _T("ERROR_INTERNET_INCORRECT_USER_NAME         ����� �� ���� ����� �̸��Դϴ�.                  "); break;
   case   ERROR_INTERNET_INCORRECT_PASSWORD       :   strRet = _T("ERROR_INTERNET_INCORRECT_PASSWORD         ����� �� ���� ��ȣ�Դϴ�.                  "); break;
   case   ERROR_INTERNET_LOGIN_FAILURE            :   strRet = _T("ERROR_INTERNET_LOGIN_FAILURE            �α��� ��û�� �źεǾ����ϴ�.                  "); break;
   case   ERROR_INTERNET_INVALID_OPERATION        :   strRet = _T("ERROR_INTERNET_INVALID_OPERATION                           "); break;
   case   ERROR_INTERNET_OPERATION_CANCELLED      :   strRet = _T("ERROR_INTERNET_OPERATION_CANCELLED         작업이 취소되었습니다.                  "); break;
   case   ERROR_INTERNET_INCORRECT_HANDLE_TYPE    :   strRet = _T("ERROR_INTERNET_INCORRECT_HANDLE_TYPE      제공된 핸들은 요청한 작업에 사용할 수 없는 종류입니다.                  "); break;
   case   ERROR_INTERNET_INCORRECT_HANDLE_STATE   :   strRet = _T("ERROR_INTERNET_INCORRECT_HANDLE_STATE      요청한 작업에 사용할 수 없는 상태의 핸들입니다.                  "); break;
   case   ERROR_INTERNET_NOT_PROXY_REQUEST        :   strRet = _T("ERROR_INTERNET_NOT_PROXY_REQUEST         프록시 세션에서 요청할 수 없습니다.                  "); break;
   case   ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND :   strRet = _T("ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND   레지스트리 값을 찾을 수 없습니다.                  "); break;
   case   ERROR_INTERNET_BAD_REGISTRY_PARAMETER   :   strRet = _T("ERROR_INTERNET_BAD_REGISTRY_PARAMETER      레지스트리 매개 변수가 맞지 않습니다.                  "); break;
   case   ERROR_INTERNET_NO_DIRECT_ACCESS         :   strRet = _T("ERROR_INTERNET_NO_DIRECT_ACCESS         직접 인터넷에 액세스할 수 없습니다.                  "); break;
   case   ERROR_INTERNET_NO_CONTEXT               :   strRet = _T("ERROR_INTERNET_NO_CONTEXT               컨텍스트 값을 제공하지 않았습니다.                  "); break;
   case   ERROR_INTERNET_NO_CALLBACK              :   strRet = _T("ERROR_INTERNET_NO_CALLBACK               상태 콜백이 제공되지 않았습니다.                  "); break;
   case   ERROR_INTERNET_REQUEST_PENDING          :   strRet = _T("ERROR_INTERNET_REQUEST_PENDING            아직 해결되지 않은 요청이 있습니다.                  "); break;
   case   ERROR_INTERNET_INCORRECT_FORMAT         :   strRet = _T("ERROR_INTERNET_INCORRECT_FORMAT         정보 형식이 맞지 않습니다.                  "); break;
   case   ERROR_INTERNET_ITEM_NOT_FOUND           :   strRet = _T("ERROR_INTERNET_ITEM_NOT_FOUND            요청한 항목을 찾을 수 없습니다.                  "); break;
   case   ERROR_INTERNET_CANNOT_CONNECT           :   strRet = _T("ERROR_INTERNET_CANNOT_CONNECT            서버에 연결할 수 없습니다.                  "); break;
   case   ERROR_INTERNET_CONNECTION_ABORTED       :   strRet = _T("ERROR_INTERNET_CONNECTION_ABORTED         서버와의 연결이 비정상적으로 종료되었습니다.                  "); break;
   case   ERROR_INTERNET_CONNECTION_RESET         :   strRet = _T("ERROR_INTERNET_CONNECTION_RESET         서버와의 연결을 다시 설정했습니다.                  "); break;
   case   ERROR_INTERNET_FORCE_RETRY              :   strRet = _T("ERROR_INTERNET_FORCE_RETRY               작업을 다시 시도해야 합니다.                  "); break;
   case   ERROR_INTERNET_INVALID_PROXY_REQUEST    :   strRet = _T("ERROR_INTERNET_INVALID_PROXY_REQUEST      잘못된 프록시 요청입니다.                  "); break;
   case   ERROR_INTERNET_NEED_UI                  :   strRet = _T("ERROR_INTERNET_NEED_UI                  작업을 완료하려면 사용자의 조작이 필요합니다.                  "); break;
   case   ERROR_INTERNET_HANDLE_EXISTS            :   strRet = _T("ERROR_INTERNET_HANDLE_EXISTS            핸들이 이미 있습니다.                  "); break;
   case   ERROR_INTERNET_SEC_CERT_DATE_INVALID    :   strRet = _T("ERROR_INTERNET_SEC_CERT_DATE_INVALID      인증서 날짜가 잘못되었거나 만료되었습니다.                  "); break;
   case   ERROR_INTERNET_SEC_CERT_CN_INVALID      :   strRet = _T("ERROR_INTERNET_SEC_CERT_CN_INVALID         인증서 호스트 이름이 잘못되었거나 일치하지 않습니다.                  "); break;
   case   ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR   :   strRet = _T("ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR      리디렉션 요청으로 비보안 연결을 보안 연결로 변경합니다.                  "); break;
   case   ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR   :   strRet = _T("ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR      리디렉션 요청으로 보안 연결을 비보안 연결로 변경합니다.                  "); break;
   case   ERROR_INTERNET_MIXED_SECURITY           :   strRet = _T("ERROR_INTERNET_MIXED_SECURITY            보안 및 비보안 연결이 혼합되어 있습니다.                  "); break;
   case   ERROR_INTERNET_CHG_POST_IS_NON_SECURE   :   strRet = _T("ERROR_INTERNET_CHG_POST_IS_NON_SECURE      비보안 게시로 변경하고 있습니다.                  "); break;
   case   ERROR_INTERNET_POST_IS_NON_SECURE       :   strRet = _T("ERROR_INTERNET_POST_IS_NON_SECURE         비보안 연결 상태에서 데이터를 게시하고 있습니다.                  "); break;
   case   ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED  :   strRet = _T("ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED      클라이언트 인증을 완료하려면 인증서가 필요합니다.                  "); break;
   case   ERROR_INTERNET_INVALID_CA               :   strRet = _T("ERROR_INTERNET_INVALID_CA               인증 기관이 잘못되었거나 맞지 않습니다.                  "); break;
   case   ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP    :   strRet = _T("ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP      클라이언트 인증이 올바르게 설치되지 않았습니다.                  "); break;
   case   ERROR_INTERNET_ASYNC_THREAD_FAILED      :   strRet = _T("ERROR_INTERNET_ASYNC_THREAD_FAILED         Wininet 비동기 스레드에서 오류가 발생했습니다.다시 시작해야 합니다.                  "); break;
   case   ERROR_INTERNET_REDIRECT_SCHEME_CHANGE   :   strRet = _T("ERROR_INTERNET_REDIRECT_SCHEME_CHANGE      리디렉션 작업 중 프로토콜 스키마가 변경되었습니다.                  "); break;
   case   ERROR_INTERNET_DIALOG_PENDING           :   strRet = _T("ERROR_INTERNET_DIALOG_PENDING            다시 시도할 때까지 대기 중인 작업이 있습니다.                  "); break;
   case   ERROR_INTERNET_RETRY_DIALOG             :   strRet = _T("ERROR_INTERNET_RETRY_DIALOG            작업을 다시 시도해야 합니다.                  "); break;
   case   ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR  :   strRet = _T("ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR      보안 영역 점검에 따라 이 작업은 다시 시도해야 합니다.                  "); break;
   case   ERROR_INTERNET_OPERATION_CANCELLED      :   strRet = _T("ERROR_INTERNET_OPERATION_CANCELLED         �۾��� ��ҵǾ����ϴ�.                  "); break;
   case   ERROR_INTERNET_INCORRECT_HANDLE_TYPE    :   strRet = _T("ERROR_INTERNET_INCORRECT_HANDLE_TYPE      ������ �ڵ��� ��û�� �۾��� ����� �� ���� �����Դϴ�.                  "); break;
   case   ERROR_INTERNET_INCORRECT_HANDLE_STATE   :   strRet = _T("ERROR_INTERNET_INCORRECT_HANDLE_STATE      ��û�� �۾��� ����� �� ���� ������ �ڵ��Դϴ�.                  "); break;
   case   ERROR_INTERNET_NOT_PROXY_REQUEST        :   strRet = _T("ERROR_INTERNET_NOT_PROXY_REQUEST         ���Ͻ� ���ǿ��� ��û�� �� �����ϴ�.                  "); break;
   case   ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND :   strRet = _T("ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND   ������Ʈ�� ���� ã�� �� �����ϴ�.                  "); break;
   case   ERROR_INTERNET_BAD_REGISTRY_PARAMETER   :   strRet = _T("ERROR_INTERNET_BAD_REGISTRY_PARAMETER      ������Ʈ�� �Ű� ������ ���� �ʽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_NO_DIRECT_ACCESS         :   strRet = _T("ERROR_INTERNET_NO_DIRECT_ACCESS         ���� ���ͳݿ� �׼����� �� �����ϴ�.                  "); break;
   case   ERROR_INTERNET_NO_CONTEXT               :   strRet = _T("ERROR_INTERNET_NO_CONTEXT               ���ؽ�Ʈ ���� �������� �ʾҽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_NO_CALLBACK              :   strRet = _T("ERROR_INTERNET_NO_CALLBACK               ���� �ݹ��� �������� �ʾҽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_REQUEST_PENDING          :   strRet = _T("ERROR_INTERNET_REQUEST_PENDING            ���� �ذ���� ���� ��û�� �ֽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_INCORRECT_FORMAT         :   strRet = _T("ERROR_INTERNET_INCORRECT_FORMAT         ���� ������ ���� �ʽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_ITEM_NOT_FOUND           :   strRet = _T("ERROR_INTERNET_ITEM_NOT_FOUND            ��û�� �׸��� ã�� �� �����ϴ�.                  "); break;
   case   ERROR_INTERNET_CANNOT_CONNECT           :   strRet = _T("ERROR_INTERNET_CANNOT_CONNECT            ������ ������ �� �����ϴ�.                  "); break;
   case   ERROR_INTERNET_CONNECTION_ABORTED       :   strRet = _T("ERROR_INTERNET_CONNECTION_ABORTED         �������� ������ ������������ ����Ǿ����ϴ�.                  "); break;
   case   ERROR_INTERNET_CONNECTION_RESET         :   strRet = _T("ERROR_INTERNET_CONNECTION_RESET         �������� ������ �ٽ� �����߽��ϴ�.                  "); break;
   case   ERROR_INTERNET_FORCE_RETRY              :   strRet = _T("ERROR_INTERNET_FORCE_RETRY               �۾��� �ٽ� �õ��ؾ� �մϴ�.                  "); break;
   case   ERROR_INTERNET_INVALID_PROXY_REQUEST    :   strRet = _T("ERROR_INTERNET_INVALID_PROXY_REQUEST      �߸��� ���Ͻ� ��û�Դϴ�.                  "); break;
   case   ERROR_INTERNET_NEED_UI                  :   strRet = _T("ERROR_INTERNET_NEED_UI                  �۾��� �Ϸ��Ϸ��� ������� ������ �ʿ��մϴ�.                  "); break;
   case   ERROR_INTERNET_HANDLE_EXISTS            :   strRet = _T("ERROR_INTERNET_HANDLE_EXISTS            �ڵ��� �̹� �ֽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_SEC_CERT_DATE_INVALID    :   strRet = _T("ERROR_INTERNET_SEC_CERT_DATE_INVALID      ������ ��¥�� �߸��Ǿ��ų� ����Ǿ����ϴ�.                  "); break;
   case   ERROR_INTERNET_SEC_CERT_CN_INVALID      :   strRet = _T("ERROR_INTERNET_SEC_CERT_CN_INVALID         ������ ȣ��Ʈ �̸��� �߸��Ǿ��ų� ��ġ���� �ʽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR   :   strRet = _T("ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR      ���𷺼� ��û���� �񺸾� ������ ���� ����� �����մϴ�.                  "); break;
   case   ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR   :   strRet = _T("ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR      ���𷺼� ��û���� ���� ������ �񺸾� ����� �����մϴ�.                  "); break;
   case   ERROR_INTERNET_MIXED_SECURITY           :   strRet = _T("ERROR_INTERNET_MIXED_SECURITY            ���� �� �񺸾� ������ ȥ�յǾ� �ֽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_CHG_POST_IS_NON_SECURE   :   strRet = _T("ERROR_INTERNET_CHG_POST_IS_NON_SECURE      �񺸾� �Խ÷� �����ϰ� �ֽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_POST_IS_NON_SECURE       :   strRet = _T("ERROR_INTERNET_POST_IS_NON_SECURE         �񺸾� ���� ���¿��� �����͸� �Խ��ϰ� �ֽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED  :   strRet = _T("ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED      Ŭ���̾�Ʈ ������ �Ϸ��Ϸ��� �������� �ʿ��մϴ�.                  "); break;
   case   ERROR_INTERNET_INVALID_CA               :   strRet = _T("ERROR_INTERNET_INVALID_CA               ���� ����� �߸��Ǿ��ų� ���� �ʽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP    :   strRet = _T("ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP      Ŭ���̾�Ʈ ������ �ùٸ��� ��ġ���� �ʾҽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_ASYNC_THREAD_FAILED      :   strRet = _T("ERROR_INTERNET_ASYNC_THREAD_FAILED         Wininet �񵿱� �����忡�� ������ �߻��߽��ϴ�.�ٽ� �����ؾ� �մϴ�.                  "); break;
   case   ERROR_INTERNET_REDIRECT_SCHEME_CHANGE   :   strRet = _T("ERROR_INTERNET_REDIRECT_SCHEME_CHANGE      ���𷺼� �۾� �� �������� ��Ű���� ����Ǿ����ϴ�.                  "); break;
   case   ERROR_INTERNET_DIALOG_PENDING           :   strRet = _T("ERROR_INTERNET_DIALOG_PENDING            �ٽ� �õ��� ������ ��� ���� �۾��� �ֽ��ϴ�.                  "); break;
   case   ERROR_INTERNET_RETRY_DIALOG             :   strRet = _T("ERROR_INTERNET_RETRY_DIALOG            �۾��� �ٽ� �õ��ؾ� �մϴ�.                  "); break;
   case   ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR  :   strRet = _T("ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR      ���� ���� ���˿� ���� �� �۾��� �ٽ� �õ��ؾ� �մϴ�.                  "); break;
   case   ERROR_INTERNET_INSERT_CDROM             :   strRet = _T("ERROR_INTERNET_INSERT_CDROM                              "); break;
   case   ERROR_INTERNET_FORTEZZA_LOGIN_NEEDED    :   strRet = _T("ERROR_INTERNET_FORTEZZA_LOGIN_NEEDED                        "); break;
   case   ERROR_INTERNET_SEC_CERT_ERRORS          :   strRet = _T("ERROR_INTERNET_SEC_CERT_ERRORS                              "); break;