Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/teraterm/ttpcmn/ttcmn.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6076 by salarm, Thu Nov 5 11:44:40 2015 UTC revision 6100 by salarm, Mon Nov 9 13:55:50 2015 UTC
# Line 2312  int PASCAL CheckComPort(WORD ComPort) Line 2312  int PASCAL CheckComPort(WORD ComPort)
2312          HMODULE h;          HMODULE h;
2313          TCHAR   devicesBuff[65535];          TCHAR   devicesBuff[65535];
2314          char    com_str[64];          char    com_str[64];
2315            BOOL bRet;
2316            GUID ClassGuid[1];
2317            DWORD dwRequiredSize;
2318            HDEVINFO DeviceInfoSet = NULL;
2319            SP_DEVINFO_DATA DeviceInfoData;
2320            int found = 0;
2321    
2322          _snprintf_s(com_str, sizeof(com_str), _TRUNCATE, "COM%d", ComPort);          _snprintf_s(com_str, sizeof(com_str), _TRUNCATE, "COM%d", ComPort);
2323    
# Line 2319  int PASCAL CheckComPort(WORD ComPort) Line 2325  int PASCAL CheckComPort(WORD ComPort)
2325                  /* ERROR */                  /* ERROR */
2326                  return -1;                  return -1;
2327          }          }
2328          if (QueryDosDevice(com_str, devicesBuff, 65535) != 0) {  
2329                  return 1;          if (QueryDosDevice(com_str, devicesBuff, 65535) == 0) {
         }  
         else {  
2330                  DWORD err = GetLastError();                  DWORD err = GetLastError();
2331                  if (err == ERROR_FILE_NOT_FOUND) {                  if (err == ERROR_FILE_NOT_FOUND) {
2332                          /* NOT FOUND */                          /* NOT FOUND */
# Line 2331  int PASCAL CheckComPort(WORD ComPort) Line 2335  int PASCAL CheckComPort(WORD ComPort)
2335                  /* ERROR */                  /* ERROR */
2336                  return -1;                  return -1;
2337          }          }
2338    
2339            /* QueryDosDeviceで切断を検知できない環境があるでさらにチェック */
2340            bRet = SetupDiClassGuidsFromName(_T("PORTS"), (LPGUID) & ClassGuid, 1, &dwRequiredSize);
2341            if (bRet == FALSE) {
2342                    return -1;
2343            }
2344    
2345            DeviceInfoSet = SetupDiGetClassDevs(&ClassGuid[0], NULL, NULL, DIGCF_PRESENT | DIGCF_PROFILE);
2346            if (DeviceInfoSet == NULL) {
2347                    return -1;
2348            }
2349    
2350            if (DeviceInfoSet) {
2351                    DWORD dwMemberIndex = 0;
2352                    HKEY hKey = NULL;
2353                    TCHAR szPortName[MAX_PATH];
2354                    DWORD dwReqSize;
2355                    DWORD dwType;
2356    
2357                    DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
2358                    while (SetupDiEnumDeviceInfo(DeviceInfoSet, dwMemberIndex, &DeviceInfoData)) {
2359                            hKey = SetupDiOpenDevRegKey(DeviceInfoSet, &DeviceInfoData, DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_READ);
2360                            if (hKey) {
2361                                    long lRet;
2362                                    dwReqSize = sizeof(szPortName);
2363                                    lRet = RegQueryValueEx(hKey, _T("PortName"), 0, &dwType, (LPBYTE)& szPortName, &dwReqSize);
2364                                    RegCloseKey(hKey);
2365                                    if (_stricmp(szPortName, com_str) == 0) {
2366                                            found = TRUE;
2367                                            break;
2368                                    }
2369                            }
2370                            dwMemberIndex++;
2371                    }
2372            }
2373    
2374            SetupDiDestroyDeviceInfoList(DeviceInfoSet);
2375    
2376            return found;
2377  }  }
2378    
2379  BOOL WINAPI DllMain(HANDLE hInstance,  BOOL WINAPI DllMain(HANDLE hInstance,

Legend:
Removed from v.6076  
changed lines
  Added in v.6100

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26