前提・実現したいこと
COMポートの一覧を取得するプログラムを作ろうとしています。
丁度よさそうなサンプルが掲載されているブログを見つけて、コピペで実行しようとしたがGUID_DEVINTERFACE_COMPORT
が原因でコンパイルが通らない。
GUID_DEVINTERFACE_COMPORT
とは何かが分かればコンパイルできるはず。と思っています。
ですのでご存知の方にご教授願いたく質問させていただきます。よろしくお願いいたします。
発生している問題・エラーメッセージ
識別子 "GUID_DEVINTERFACE_COMPORT" が定義されていません
該当のソースコード
C++
1// 色々初期化 2 DWORD i; 3 BYTE Buffer[256]; //領域確保(てきとう) 4 DWORD Length = 0; 5 HWND hwndDlg = this->GetSafeHwnd(); //ダイアログのハンドル取得 6 SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)}; /// 1件デバイス情報 7 HDEVINFO hDevInfo = 0; // 列挙デバイス情報 8 9// COMポートのデバイス情報を取得 10 hDevInfo = SetupDiGetClassDevs( &GUID_DEVINTERFACE_COMPORT, NULL, hwndDlg, ( DIGCF_PRESENT | DIGCF_DEVICEINTERFACE ) ); 11 12 13 // 列挙の終わりまでループ 14 for(i=0; SetupDiEnumDeviceInfo( hDevInfo, i, &DeviceInfoData ); i++) // 1件取得 15 { 16 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_ADDRESS, NULL, Buffer,sizeof(Buffer),&Length ); 17 MessageBox( (const char*)Buffer , 0 , MB_OK ); 18 19 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_BUSNUMBER, NULL, Buffer,sizeof(Buffer),&Length ); 20 MessageBox( (const char*)Buffer , 0 , MB_OK ); 21 22 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_CAPABILITIES, NULL, Buffer,sizeof(Buffer),&Length ); 23 MessageBox( (const char*)Buffer , 0 , MB_OK ); 24 25 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_CHARACTERISTICS, NULL, Buffer,sizeof(Buffer),&Length ); 26 MessageBox( (const char*)Buffer , 0 , MB_OK ); 27 28 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_CLASS, NULL, Buffer,sizeof(Buffer),&Length ); 29 MessageBox( (const char*)Buffer , 0 , MB_OK ); 30 31 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_CLASSGUID, NULL, Buffer,sizeof(Buffer),&Length ); 32 MessageBox( (const char*)Buffer , 0 , MB_OK ); 33 34 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_COMPATIBLEIDS, NULL, Buffer,sizeof(Buffer),&Length ); 35 MessageBox( (const char*)Buffer , 0 , MB_OK ); 36 37 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_CONFIGFLAGS, NULL, Buffer,sizeof(Buffer),&Length ); 38 MessageBox( (const char*)Buffer , 0 , MB_OK ); 39 40 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_DEVICE_POWER_DATA, NULL, Buffer,sizeof(Buffer),&Length ); 41 MessageBox( (const char*)Buffer , 0 , MB_OK ); 42 43 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_DEVICEDESC, NULL, Buffer,sizeof(Buffer),&Length ); 44 MessageBox( (const char*)Buffer , 0 , MB_OK ); 45 46 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_DEVTYPE, NULL, Buffer,sizeof(Buffer),&Length ); 47 MessageBox( (const char*)Buffer , 0 , MB_OK ); 48 49 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_DRIVER, NULL, Buffer,sizeof(Buffer),&Length ); 50 MessageBox( (const char*)Buffer , 0 , MB_OK ); 51 52 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_ENUMERATOR_NAME, NULL, Buffer,sizeof(Buffer),&Length ); 53 MessageBox( (const char*)Buffer , 0 , MB_OK ); 54 55 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_EXCLUSIVE, NULL, Buffer,sizeof(Buffer),&Length ); 56 MessageBox( (const char*)Buffer , 0 , MB_OK ); 57 58 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_FRIENDLYNAME, NULL, Buffer,sizeof(Buffer),&Length ); 59 MessageBox( (const char*)Buffer , 0 , MB_OK ); 60 61 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_HARDWAREID, NULL, Buffer,sizeof(Buffer),&Length ); 62 MessageBox( (const char*)Buffer , 0 , MB_OK ); 63 64 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_INSTALL_STATE, NULL, Buffer,sizeof(Buffer),&Length ); 65 MessageBox( (const char*)Buffer , 0 , MB_OK ); 66 67 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_LEGACYBUSTYPE, NULL, Buffer,sizeof(Buffer),&Length ); 68 MessageBox( (const char*)Buffer , 0 , MB_OK ); 69 70 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_LOCATION_INFORMATION, NULL, Buffer,sizeof(Buffer),&Length ); 71 MessageBox( (const char*)Buffer , 0 , MB_OK ); 72 73 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_LOCATION_PATHS, NULL, Buffer,sizeof(Buffer),&Length ); 74 MessageBox( (const char*)Buffer , 0 , MB_OK ); 75 76 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_LOWERFILTERS, NULL, Buffer,sizeof(Buffer),&Length ); 77 MessageBox( (const char*)Buffer , 0 , MB_OK ); 78 79 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_MFG, NULL, Buffer,sizeof(Buffer),&Length ); 80 MessageBox( (const char*)Buffer , 0 , MB_OK ); 81 82 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_PHYSICAL_DEVICE_OBJECT_NAME, NULL, Buffer,sizeof 83(Buffer),&Length ); 84 MessageBox( (const char*)Buffer , 0 , MB_OK ); 85 86 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_SECURITY, NULL, Buffer,sizeof(Buffer),&Length ); 87 MessageBox( (const char*)Buffer , 0 , MB_OK ); 88 89 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_SECURITY_SDS, NULL, Buffer,sizeof(Buffer),&Length ); 90 MessageBox( (const char*)Buffer , 0 , MB_OK ); 91 92 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_SERVICE, NULL, Buffer,sizeof(Buffer),&Length ); 93 MessageBox( (const char*)Buffer , 0 , MB_OK ); 94 95 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_UI_NUMBER_DESC_FORMAT, NULL, Buffer,sizeof(Buffer),&Length ); 96 MessageBox( (const char*)Buffer , 0 , MB_OK ); 97 98 SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData, SPDRP_UPPERFILTERS, NULL, Buffer,sizeof(Buffer),&Length ); 99 MessageBox( (const char*)Buffer , 0 , MB_OK ); 100 101// デバイスインスタンスIDを取得 102 SetupDiGetDeviceInstanceId( hDevInfo, &DeviceInfoData, (PTSTR)Buffer, sizeof(Buffer), &Length ); 103 MessageBox( (const char*)Buffer , 0 , MB_OK ); 104 105// COMポート番号を取得 106 HKEY tmp_key = SetupDiOpenDevRegKey( hDevInfo, &DeviceInfoData, DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_QUERY_VALUE ); 107 if( tmp_key ){ 108 DWORD tmp_type = 0; 109 DWORD tmp_size = sizeof( Buffer ); 110 RegQueryValueEx( tmp_key, _T("PortName"), NULL, &tmp_type , reinterpret_cast(Buffer), &tmp_size ); 111 MessageBox( (const char*)Buffer , 0 , MB_OK ); 112 } 113 }
参考にしているブログ記事の完全なコピペです。
試したこと
ググっても英語でよく分からなかったりしてよく分かりません。
補足情報(FW/ツールのバージョンなど)
- VC++
- VisualStudio2015SP1
- Windows7/64 SP1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/01 06:53