Revision: 8216 https://osdn.net/projects/ttssh2/scm/svn/commits/8216 Author: yutakapon Date: 2019-09-22 14:00:12 +0900 (Sun, 22 Sep 2019) Log Message: ----------- シリアルポート設定ダイアログの詳細情報に、COMポートとデバイスドライバの情報を表示するようにした。 Modified Paths: -------------- trunk/teraterm/teraterm/ttermpro.v10.vcxproj trunk/teraterm/teraterm/ttermpro.v11.vcxproj trunk/teraterm/teraterm/ttermpro.v12.vcxproj trunk/teraterm/teraterm/ttermpro.v14.vcxproj trunk/teraterm/teraterm/ttermpro.v15.vcxproj trunk/teraterm/teraterm/ttermpro.v15.vcxproj.filters trunk/teraterm/teraterm/ttermpro.v16.vcxproj trunk/teraterm/teraterm/ttermpro.v16.vcxproj.filters trunk/teraterm/teraterm/ttermpro.v9.vcproj trunk/teraterm/teraterm/ttermpro.vcproj trunk/teraterm/ttpcmn/ttpcmn.v10.vcxproj trunk/teraterm/ttpcmn/ttpcmn.v11.vcxproj trunk/teraterm/ttpcmn/ttpcmn.v12.vcxproj trunk/teraterm/ttpcmn/ttpcmn.v14.vcxproj trunk/teraterm/ttpcmn/ttpcmn.v15.vcxproj trunk/teraterm/ttpcmn/ttpcmn.v15.vcxproj.filters trunk/teraterm/ttpcmn/ttpcmn.v16.vcxproj trunk/teraterm/ttpcmn/ttpcmn.v16.vcxproj.filters trunk/teraterm/ttpcmn/ttpcmn.v9.vcproj trunk/teraterm/ttpcmn/ttpcmn.vcproj trunk/teraterm/ttpdlg/ttdlg.c trunk/teraterm/ttpdlg/ttpdlg.rc Added Paths: ----------- trunk/teraterm/ttpcmn/comportinfo.cpp trunk/teraterm/ttpcmn/comportinfo.h trunk/teraterm/ttpcmn/devpkey_teraterm.h Property Changed: ---------------- trunk/ trunk/teraterm/ -------------- next part -------------- Index: trunk =================================================================== --- trunk 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk 2019-09-22 05:00:12 UTC (rev 8216) Property changes on: trunk ___________________________________________________________________ Modified: svn:mergeinfo ## -2,7 +2,7 ## /branches/flowctrl_dsrdtr:7825-7827 /branches/openssl_1_1_1_v2:7888 /branches/portfwd_memleak:7732,7736-7737,7764 -/branches/serial_port_improved:8119,8140-8141,8144,8150,8158-8160,8163,8170-8172,8183,8185,8204 +/branches/serial_port_improved:8119,8140-8141,8144,8150,8158-8160,8163,8170-8172,8183,8185,8204,8209,8212-8215 /branches/ssh_ed25519:5495-5544 /branches/ttproxy_improved:8041,8055-8056 /branches/ttssh_improved:8027,8036,8040,8044,8053-8054,8058,8060,8063,8081,8085 Index: trunk/teraterm =================================================================== --- trunk/teraterm 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm 2019-09-22 05:00:12 UTC (rev 8216) Property changes on: trunk/teraterm ___________________________________________________________________ Modified: svn:mergeinfo ## -1,4 +1,4 ## /branches/drag_and_drop/teraterm:7130,7139,7141,7143-7147 /branches/flowctrl_dsrdtr/teraterm:7825-7827 -/branches/serial_port_improved/teraterm:8119,8140-8141,8144,8150,8158-8160,8163,8170,8172,8183,8185,8204 +/branches/serial_port_improved/teraterm:8119,8140-8141,8144,8150,8158-8160,8163,8170,8172,8183,8185,8204,8209,8212-8215 /branches/vs2015_warn/teraterm:6194-6285 \ No newline at end of property Modified: trunk/teraterm/teraterm/ttermpro.v10.vcxproj =================================================================== --- trunk/teraterm/teraterm/ttermpro.v10.vcxproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/teraterm/ttermpro.v10.vcxproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -63,7 +63,7 @@ <ClCompile> <AdditionalOptions>/D"_CRT_SECURE_NO_DEPRECATE" %(AdditionalOptions)</AdditionalOptions> <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <BrowseInformation> @@ -109,7 +109,7 @@ <AdditionalOptions>/D"_CRT_SECURE_NO_DEPRECATE" %(AdditionalOptions)</AdditionalOptions> <Optimization>MaxSpeed</Optimization> <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <StringPooling>true</StringPooling> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> Modified: trunk/teraterm/teraterm/ttermpro.v11.vcxproj =================================================================== --- trunk/teraterm/teraterm/ttermpro.v11.vcxproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/teraterm/ttermpro.v11.vcxproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -62,7 +62,7 @@ <ClCompile> <AdditionalOptions>/D"_CRT_SECURE_NO_DEPRECATE" %(AdditionalOptions)</AdditionalOptions> <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <BrowseInformation /> @@ -106,7 +106,7 @@ <AdditionalOptions>/D"_CRT_SECURE_NO_DEPRECATE" %(AdditionalOptions)</AdditionalOptions> <Optimization>MaxSpeed</Optimization> <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <StringPooling>true</StringPooling> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> Modified: trunk/teraterm/teraterm/ttermpro.v12.vcxproj =================================================================== --- trunk/teraterm/teraterm/ttermpro.v12.vcxproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/teraterm/ttermpro.v12.vcxproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -62,7 +62,7 @@ <ClCompile> <AdditionalOptions>/D"_CRT_SECURE_NO_DEPRECATE" %(AdditionalOptions)</AdditionalOptions> <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <BrowseInformation /> @@ -106,7 +106,7 @@ <AdditionalOptions>/D"_CRT_SECURE_NO_DEPRECATE" %(AdditionalOptions)</AdditionalOptions> <Optimization>MaxSpeed</Optimization> <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <StringPooling>true</StringPooling> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> Modified: trunk/teraterm/teraterm/ttermpro.v14.vcxproj =================================================================== --- trunk/teraterm/teraterm/ttermpro.v14.vcxproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/teraterm/ttermpro.v14.vcxproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -64,7 +64,7 @@ <ClCompile> <AdditionalOptions>/D"_CRT_SECURE_NO_DEPRECATE" %(AdditionalOptions)</AdditionalOptions> <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <BrowseInformation /> @@ -108,7 +108,7 @@ <AdditionalOptions>/D"_CRT_SECURE_NO_DEPRECATE" %(AdditionalOptions)</AdditionalOptions> <Optimization>MaxSpeed</Optimization> <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <StringPooling>true</StringPooling> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> Modified: trunk/teraterm/teraterm/ttermpro.v15.vcxproj =================================================================== --- trunk/teraterm/teraterm/ttermpro.v15.vcxproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/teraterm/ttermpro.v15.vcxproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -65,7 +65,7 @@ <ClCompile> <AdditionalOptions>/D"_CRT_SECURE_NO_DEPRECATE" %(AdditionalOptions)</AdditionalOptions> <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <BrowseInformation /> @@ -110,7 +110,7 @@ <AdditionalOptions>/D"_CRT_SECURE_NO_DEPRECATE" %(AdditionalOptions)</AdditionalOptions> <Optimization>MaxSpeed</Optimization> <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <StringPooling>true</StringPooling> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> @@ -278,4 +278,4 @@ <UserProperties RESOURCE_FILE="ttermpro.rc" /> </VisualStudio> </ProjectExtensions> -</Project> +</Project> \ No newline at end of file Modified: trunk/teraterm/teraterm/ttermpro.v15.vcxproj.filters =================================================================== --- trunk/teraterm/teraterm/ttermpro.v15.vcxproj.filters 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/teraterm/ttermpro.v15.vcxproj.filters 2019-09-22 05:00:12 UTC (rev 8216) @@ -312,5 +312,8 @@ <ClInclude Include="..\common\tmfc.h"> <Filter>Header Files</Filter> </ClInclude> + <ClInclude Include="..\common\tipwin.h"> + <Filter>Header Files</Filter> + </ClInclude> </ItemGroup> </Project> \ No newline at end of file Modified: trunk/teraterm/teraterm/ttermpro.v16.vcxproj =================================================================== --- trunk/teraterm/teraterm/ttermpro.v16.vcxproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/teraterm/ttermpro.v16.vcxproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -65,7 +65,7 @@ <ClCompile> <AdditionalOptions>/D"_CRT_SECURE_NO_DEPRECATE" %(AdditionalOptions)</AdditionalOptions> <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <BrowseInformation /> @@ -110,7 +110,7 @@ <AdditionalOptions>/D"_CRT_SECURE_NO_DEPRECATE" %(AdditionalOptions)</AdditionalOptions> <Optimization>MaxSpeed</Optimization> <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <StringPooling>true</StringPooling> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> @@ -278,4 +278,4 @@ <UserProperties RESOURCE_FILE="ttermpro.rc" /> </VisualStudio> </ProjectExtensions> -</Project> +</Project> \ No newline at end of file Modified: trunk/teraterm/teraterm/ttermpro.v16.vcxproj.filters =================================================================== --- trunk/teraterm/teraterm/ttermpro.v16.vcxproj.filters 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/teraterm/ttermpro.v16.vcxproj.filters 2019-09-22 05:00:12 UTC (rev 8216) @@ -312,5 +312,8 @@ <ClInclude Include="..\common\tmfc.h"> <Filter>Header Files</Filter> </ClInclude> + <ClInclude Include="..\common\tipwin.h"> + <Filter>Header Files</Filter> + </ClInclude> </ItemGroup> </Project> \ No newline at end of file Modified: trunk/teraterm/teraterm/ttermpro.v9.vcproj =================================================================== --- trunk/teraterm/teraterm/ttermpro.v9.vcproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/teraterm/ttermpro.v9.vcproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -51,7 +51,7 @@ Name="VCCLCompilerTool" AdditionalOptions="/D"_CRT_SECURE_NO_DEPRECATE"" Optimization="0" - AdditionalIncludeDirectories="$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg" + AdditionalIncludeDirectories="$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn" PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" RuntimeLibrary="1" BrowseInformation="0" @@ -145,7 +145,7 @@ AdditionalOptions="/D"_CRT_SECURE_NO_DEPRECATE"" Optimization="2" InlineFunctionExpansion="1" - AdditionalIncludeDirectories="$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg" + AdditionalIncludeDirectories="$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn" PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" StringPooling="true" RuntimeLibrary="0" Modified: trunk/teraterm/teraterm/ttermpro.vcproj =================================================================== --- trunk/teraterm/teraterm/ttermpro.vcproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/teraterm/ttermpro.vcproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -50,7 +50,7 @@ Name="VCCLCompilerTool" AdditionalOptions="/D"_CRT_SECURE_NO_DEPRECATE"" Optimization="0" - AdditionalIncludeDirectories="$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg" + AdditionalIncludeDirectories="$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn" PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" RuntimeLibrary="1" BrowseInformation="0" @@ -145,7 +145,7 @@ AdditionalOptions="/D"_CRT_SECURE_NO_DEPRECATE"" Optimization="2" InlineFunctionExpansion="1" - AdditionalIncludeDirectories="$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg" + AdditionalIncludeDirectories="$(SolutionDir)..\libs\SFMT;$(SolutionDir)..\libs\oniguruma\src;$(SolutionDir)common;$(SolutionDir)ttpfile;$(SolutionDir)ttpdlg;$(SolutionDir)ttpcmn" PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" StringPooling="true" RuntimeLibrary="0" Copied: trunk/teraterm/ttpcmn/comportinfo.cpp (from rev 8209, branches/serial_port_improved/teraterm/ttpcmn/comportinfo.cpp) =================================================================== --- trunk/teraterm/ttpcmn/comportinfo.cpp (rev 0) +++ trunk/teraterm/ttpcmn/comportinfo.cpp 2019-09-22 05:00:12 UTC (rev 8216) @@ -0,0 +1,421 @@ +/* + * Copyright (C) 2019 TeraTerm Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// for comportinfo_test +//#define TEST_FOR_NT +//#define TEST_FOR_9X + +#include <windows.h> +#include <devguid.h> +#include <setupapi.h> +#include <tchar.h> +#include <stdio.h> +#define _CRTDBG_MAP_ALLOC +#include <crtdbg.h> + +#include "devpkey_teraterm.h" +#include "ttlib.h" +#include "codeconv.h" + +#define DllExport __declspec(dllexport) +#include "comportinfo.h" + +typedef BOOL (WINAPI *TSetupDiGetDevicePropertyW)( + HDEVINFO DeviceInfoSet, + PSP_DEVINFO_DATA DeviceInfoData, + const DEVPROPKEY *PropertyKey, + DEVPROPTYPE *PropertyType, + PBYTE PropertyBuffer, + DWORD PropertyBufferSize, + PDWORD RequiredSize, + DWORD Flags + ); + +typedef BOOL (WINAPI *TSetupDiGetDeviceRegistryPropertyW)( + HDEVINFO DeviceInfoSet, + PSP_DEVINFO_DATA DeviceInfoData, + DWORD Property, + PDWORD PropertyRegDataType, + PBYTE PropertyBuffer, + DWORD PropertyBufferSize, + PDWORD RequiredSize + ); + +typedef LONG (WINAPI *TRegQueryValueExW)( + HKEY hKey, + LPCWSTR lpValueName, + LPDWORD lpReserved, + LPDWORD lpType, + LPBYTE lpData, + LPDWORD lpcbData + ); + +static BOOL IsWindows9X() +{ + return !IsWindowsNTKernel(); +} + +/** + * \x83|\x81[\x83g\x96\xBC\x82\xF0\x8E擾 + */ +static BOOL GetComPortName(HDEVINFO hDevInfo, SP_DEVINFO_DATA *DeviceInfoData, wchar_t **str) +{ + TRegQueryValueExW pRegQueryValueExW = + (TRegQueryValueExW)GetProcAddress( + GetModuleHandleA("ADVAPI32.dll"), "RegQueryValueExW"); + DWORD byte_len; + DWORD dwType = REG_SZ; + HKEY hKey = SetupDiOpenDevRegKey(hDevInfo, + DeviceInfoData, + DICS_FLAG_GLOBAL, + 0, DIREG_DEV, KEY_READ); + if (hKey == NULL){ + // \x83|\x81[\x83g\x96\xBC\x82\xAA\x8E擾\x82ł\xAB\x82Ȃ\xA2? + *str = NULL; + return FALSE; + } + + wchar_t* port_name = NULL; + long r; + if (pRegQueryValueExW != NULL && !IsWindows9X()) { + // 9x\x8Cn\x82ł͂\xA4\x82܂\xAD\x93\xAE\x8D삵\x82Ȃ\xA2 + r = pRegQueryValueExW(hKey, L"PortName", 0, + &dwType, NULL, &byte_len); + port_name = (wchar_t* )malloc(byte_len); + r = pRegQueryValueExW(hKey, L"PortName", 0, + &dwType, (LPBYTE)port_name, &byte_len); + } else { + r = RegQueryValueExA(hKey, "PortName", 0, + &dwType, (LPBYTE)NULL, &byte_len); + char *port_name_a = (char *)malloc(byte_len); + r = RegQueryValueExA(hKey, "PortName", 0, + &dwType, (LPBYTE)port_name_a, &byte_len); + if (r == ERROR_SUCCESS) { + size_t len_w = MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, + port_name_a, byte_len, + NULL, 0); + port_name = (wchar_t *)malloc(sizeof(wchar_t) * len_w); + MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, + port_name_a, byte_len, + port_name, (int)len_w); + } + free(port_name_a); + } + RegCloseKey(hKey); + if (r != ERROR_SUCCESS) { + free(port_name); + *str = NULL; + return FALSE; + } + *str = port_name; + return TRUE; +} + +/** + * \x83v\x83\x8D\x83p\x83e\x83B\x8E擾 + * + * \x83\x8C\x83W\x83X\x83g\x83\x8A\x82̏ꏊ(Windows10) + * HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{GUID}\0000 + * + */ +static void GetComPropartys(HDEVINFO hDevInfo, SP_DEVINFO_DATA *DeviceInfoData, const char *lang, + wchar_t **friendly_name, wchar_t **str) +{ + const char *FriendlyNameString = "FRIENDLY_NAME"; + const char *DriverDateString = "DRIVER_DATE"; + typedef struct { + const wchar_t *name; // \x96{\x8A\x94\x93\xE0\x82Ŏg\x82\xA4 + const char *key; // \x96{\x8A\x94\x93\xE0\x82Ŏg\x82\xA4 + const DEVPROPKEY *PropertyKey; // \x83\x8C\x83W\x83X\x83g\x83\x8A\x8E擾\x82Ɏg\x82\xA4\x82̂͂\xB1\x82\xEA\x82̂\xDD + DWORD Property; // \x96\xA2\x8Eg\x97p + } list_t; + static const list_t list[] = { + { L"Device Friendly Name", + FriendlyNameString, + &DEVPKEY_Device_FriendlyName, + SPDRP_FRIENDLYNAME }, + { L"Device Instance ID", + "DEVICE_INSTANCE_ID", + &DEVPKEY_Device_InstanceId, + SPDRP_MAXIMUM_PROPERTY }, + { L"Device Manufacturer", + "DEVICE_MANUFACTURER", + &DEVPKEY_Device_Manufacturer, + SPDRP_MFG }, + { L"Provider Name", + "PROVIDER_NAME", + &DEVPKEY_Device_DriverProvider, + SPDRP_MAXIMUM_PROPERTY }, + { L"Driver Date", + DriverDateString, + &DEVPKEY_Device_DriverDate, + SPDRP_MAXIMUM_PROPERTY }, + { L"Driver Version", + "DRIVER_VERSION", + &DEVPKEY_Device_DriverVersion, + SPDRP_MAXIMUM_PROPERTY }, + }; + TSetupDiGetDevicePropertyW pSetupDiGetDevicePropertyW = + (TSetupDiGetDevicePropertyW)GetProcAddress( + GetModuleHandleA("Setupapi.dll"), + "SetupDiGetDevicePropertyW"); + TSetupDiGetDeviceRegistryPropertyW pSetupDiGetDeviceRegistryPropertyW = + (TSetupDiGetDeviceRegistryPropertyW)GetProcAddress( + GetModuleHandleA("Setupapi.dll"), + "SetupDiGetDeviceRegistryPropertyW"); + + wchar_t *s = _wcsdup(L""); + size_t len = 0; + for (size_t i = 0; i < _countof(list); i++) { + const list_t *p = &list[i]; + BOOL r; + wchar_t *str_prop = NULL; + DWORD size; + + if (pSetupDiGetDevicePropertyW != NULL) { + DEVPROPTYPE ulPropertyType; + pSetupDiGetDevicePropertyW(hDevInfo, DeviceInfoData, p->PropertyKey, + &ulPropertyType, NULL, 0, &size, 0); + str_prop = (wchar_t *)malloc(size); + r = pSetupDiGetDevicePropertyW(hDevInfo, DeviceInfoData, p->PropertyKey, + &ulPropertyType, (PBYTE)str_prop, size, &size, 0); + } else if (p->PropertyKey == &DEVPKEY_Device_InstanceId) { + // InstanceId\x82\xCDA\x8Cn\x82Ō\x88\x82ߑł\xBF + DWORD len_a; + SetupDiGetDeviceInstanceIdA(hDevInfo, + DeviceInfoData, + NULL, 0, + &len_a); + char *str_instance_a = (char *)malloc(len_a); + r = SetupDiGetDeviceInstanceIdA(hDevInfo, + DeviceInfoData, + str_instance_a, len_a, + &len_a); + if (r != FALSE) { + int len_w = MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, + str_instance_a, len_a, + NULL, 0); + str_prop = (wchar_t *)malloc(sizeof(wchar_t) * len_w); + MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, + str_instance_a, len_a, + str_prop, (int)len_w); + } + free(str_instance_a); + } else if (p->Property == SPDRP_MAXIMUM_PROPERTY) { + r = FALSE; + } else if (pSetupDiGetDeviceRegistryPropertyW != NULL && !IsWindows9X()) { + // 9x\x8Cn\x82ł͂\xA4\x82܂\xAD\x93\xAE\x8D삵\x82Ȃ\xA2 + DWORD dwPropType; + r = pSetupDiGetDeviceRegistryPropertyW(hDevInfo, + DeviceInfoData, + p->Property, + &dwPropType, + NULL, 0, + &size); + str_prop = (wchar_t *)malloc(size); + r = pSetupDiGetDeviceRegistryPropertyW(hDevInfo, + DeviceInfoData, + p->Property, + &dwPropType, + (LPBYTE)str_prop, size, + &size); + } else { + DWORD dwPropType; + DWORD len_a; + r = SetupDiGetDeviceRegistryPropertyA(hDevInfo, + DeviceInfoData, + p->Property, + &dwPropType, + NULL, 0, + &len_a); + char *str_prop_a = (char *)malloc(len_a); + r = SetupDiGetDeviceRegistryPropertyA(hDevInfo, + DeviceInfoData, + p->Property, + &dwPropType, + (PBYTE)str_prop_a, len_a, + &len_a); + if (r != FALSE) { + int len_w = MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, + str_prop_a, len_a, + NULL, 0); + str_prop = (wchar_t *)malloc(sizeof(wchar_t) * len_w); + MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, + str_prop_a, len_a, + str_prop, (int)len_w); + } + free(str_prop_a); + } + if (r != FALSE) { + /* Driver Date\x82\xCD DEVPROP_TYPE_FILETIME \x82ł\xA0\x82邽\x82߁A + * FILETIME \x8D\\x91\xA2\x91̂\xCC8\x83o\x83C\x83g\x82ŕԂ邽\x82߁ASYSTEMTIME \x82ɕϊ\xB7\x82\xB7\x82\xE9\x81B + */ + if (strcmp(list[i].key, DriverDateString) == 0) { + FILETIME ftFileTime; + SYSTEMTIME stFileTime; + int wbuflen = 64; + int buflen = sizeof(wchar_t) * wbuflen; + + ZeroMemory(&ftFileTime, sizeof(FILETIME)); + if (sizeof(ftFileTime) >= size) { + // str_prop\x82\xCDsize\x83o\x83C\x83g + memcpy(&ftFileTime, str_prop, size); + } + ZeroMemory(&stFileTime, sizeof(SYSTEMTIME)); + FileTimeToSystemTime(&ftFileTime , &stFileTime); + str_prop = (wchar_t *)realloc(str_prop, buflen); + _snwprintf_s(str_prop, wbuflen, _TRUNCATE, L"%d-%d-%d", + stFileTime.wMonth, stFileTime.wDay, stFileTime.wYear + ); + } + + size_t name_len = wcslen(p->name); + size_t prop_len = wcslen(str_prop); + len = len + (name_len + (i==0?1:2) + 2 + 2 + prop_len); + s = (wchar_t *)realloc(s, sizeof(wchar_t) * len); + if (i != 0) + wcscat_s(s, len, L"\r\n"); + wcscat_s(s, len, p->name); + wcscat_s(s, len, L": "); + wcscat_s(s, len, str_prop); + } + + if (strcmp(list[i].key, FriendlyNameString) == 0) { + // str_prop\x82̃\x81\x83\x82\x83\x8A\x82\xCD ComPortInfoFree() \x82ʼn\xF0\x95\xFA\x82\xB3\x82\xEA\x82\xE9\x81B + *friendly_name = str_prop; + + } else { + // s \x82ɃR\x83s\x81[\x82\xB5\x82\xBD\x82̂\xC5str_prop\x82̃\x81\x83\x82\x83\x8A\x82͕s\x97v\x82ƂȂ\xE9\x81B + if (str_prop != NULL) { + free(str_prop); + } + } + } + + *str = s; +} + +/* \x94z\x97\xF1\x83\\x81[\x83g\x97p */ +static int sort_sub(const void *a_, const void *b_) +{ + const ComPortInfo_t *a = (ComPortInfo_t *)a_; + const ComPortInfo_t *b = (ComPortInfo_t *)b_; + if (wcsncmp(a->port_name, L"COM", 3) == 0 && + wcsncmp(b->port_name, L"COM", 3) == 0) { + int a_no = _wtoi(&a->port_name[3]); + int b_no = _wtoi(&b->port_name[3]); + return a_no > b_no; + } + return wcscmp(a->port_name, b->port_name); +} + +/** + * com\x83|\x81[\x83g\x82̏\xEE\x95\xF1\x82\xF0\x8E擾\x82\xB7\x82\xE9 + * + * @param[out] count \x8F\xEE\x95\xF1\x90\x94(0\x82̂Ƃ\xABcom\x83|\x81[\x83g\x82Ȃ\xB5) + * @return \x8F\xEE\x95\xF1\x82ւ̃|\x83C\x83\x93\x83^(\x94z\x97\xF1)\x81A\x83|\x81[\x83g\x94ԍ\x86\x82̏\xAC\x82\xB3\x82\xA2\x8F\x87 + * NULL\x82̂Ƃ\xABcom\x83|\x81[\x83g\x82Ȃ\xB5 + * \x8Eg\x97p\x8C\xE3ComPortInfoFree()\x82\xF0\x8CĂԂ\xB1\x82\xC6 + */ +ComPortInfo_t * WINAPI ComPortInfoGet(int *count, const char *lang) +{ + int comport_count = 0; + ComPortInfo_t *comport_infos = NULL; + const GUID *pClassGuid = &GUID_DEVCLASS_PORTS; + + // List all connected serial devices + HDEVINFO hDevInfo = SetupDiGetClassDevsA(pClassGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_PROFILE); + if (hDevInfo == INVALID_HANDLE_VALUE) { + *count = 0; + return NULL; + } + + // Find the ones that are driverless + for (int i = 0; ; i++) { + SP_DEVINFO_DATA DeviceInfoData; + DeviceInfoData.cbSize = sizeof (DeviceInfoData); + if (!SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData)) + break; + + // \x83|\x81[\x83g\x96\xBC\x8E擾 ("COM1"\x82Ȃ\xC7) + wchar_t *port_name; + if (!GetComPortName(hDevInfo, &DeviceInfoData, &port_name)) { + continue; + } + int port_no = 0; + if (wcsncmp(port_name, L"COM", 3) == 0) { + port_no = _wtoi(port_name+3); + } + + // \x8F\xEE\x95\xF1\x8E擾 + wchar_t *str_friendly_name = NULL; + wchar_t *str_prop = NULL; + GetComPropartys(hDevInfo, &DeviceInfoData, lang, &str_friendly_name, &str_prop); + + comport_count++; + comport_infos = (ComPortInfo_t *)realloc(comport_infos, + sizeof(ComPortInfo_t) * comport_count); + ComPortInfo_t *p = &comport_infos[comport_count-1]; + p->port_name = port_name; // COM\x83|\x81[\x83g\x96\xBC + p->port_no = port_no; // COM\x83|\x81[\x83g\x94ԍ\x86 + p->friendly_name = str_friendly_name; // Device Description + p->property = str_prop; // \x91S\x8Fڍ\xEE\x95\xF1 + +#if 0 + { + char *a, *b, *c; + a = ToCharW(p->port_name); + b = ToCharW(p->friendly_name); + c = ToCharW(p->property); + OutputDebugPrintf("%s: [%s] [%d] [%s] [%s]\n", __FUNCTION__, + a, p->port_no, b, c + ); + free(a); + free(b); + free(c); + } +#endif + } + + /* \x83|\x81[\x83g\x96\xBC\x8F\x87\x82ɕ\xC0\x82ׂ\xE9 */ + qsort(comport_infos, comport_count, sizeof(comport_infos[0]), sort_sub); + + *count = comport_count; + return comport_infos; +} + +void WINAPI ComPortInfoFree(ComPortInfo_t *info, int count) +{ + for (int i=0; i< count; i++) { + ComPortInfo_t *p = &info[i]; + free(p->port_name); + free(p->friendly_name); + free(p->property); + } + free(info); +} Copied: trunk/teraterm/ttpcmn/comportinfo.h (from rev 8209, branches/serial_port_improved/teraterm/ttpcmn/comportinfo.h) =================================================================== --- trunk/teraterm/ttpcmn/comportinfo.h (rev 0) +++ trunk/teraterm/ttpcmn/comportinfo.h 2019-09-22 05:00:12 UTC (rev 8216) @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2019 TeraTerm Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma once + +#include <windows.h> // for WORD + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(DllExport) +#define DllExport __declspec(dllimport) +#endif + +typedef struct { + wchar_t *port_name; // \x83|\x81[\x83g\x96\xBC + int port_no; // 0..128(9x)/255(xp) + wchar_t *friendly_name; + wchar_t *property; +} ComPortInfo_t; + +DllExport ComPortInfo_t * WINAPI ComPortInfoGet(int *count, const char *lang); +DllExport void WINAPI ComPortInfoFree(ComPortInfo_t *info, int count); + +#ifdef __cplusplus +} +#endif Copied: trunk/teraterm/ttpcmn/devpkey_teraterm.h (from rev 8209, branches/serial_port_improved/teraterm/ttpcmn/devpkey_teraterm.h) =================================================================== --- trunk/teraterm/ttpcmn/devpkey_teraterm.h (rev 0) +++ trunk/teraterm/ttpcmn/devpkey_teraterm.h 2019-09-22 05:00:12 UTC (rev 8216) @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2019 TeraTerm Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma once + +/* + * Visual Studio 2005\x82Ńr\x83\x8B\x83h\x82\xF0\x92ʂ\xB7\x82\xBD\x82߂ɂ͉\xBA\x8BL\x82̒\xE8\x8B`\x82\xAA\x95K\x97v\x81B + * Visual Studio 2019\x82ł͕s\x97v\x81B + */ +#if _MSC_VER == 1400 +typedef ULONG DEVPROPTYPE, *PDEVPROPTYPE; + +typedef GUID DEVPROPGUID, *PDEVPROPGUID; +typedef ULONG DEVPROPID, *PDEVPROPID; + +typedef struct _DEVPROPKEY { + DEVPROPGUID fmtid; + DEVPROPID pid; +} DEVPROPKEY, *PDEVPROPKEY; +#endif + +#undef DEFINE_DEVPROPKEY +#define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const DEVPROPKEY DECLSPEC_SELECTANY name = { { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }, pid } + +/* + * Platform SDK\x82\xCCdevpkey.h\x82\xE6\x82\xE8 + */ + +DEFINE_DEVPROPKEY(DEVPKEY_Device_FriendlyName, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 14); // DEVPROP_TYPE_STRING +DEFINE_DEVPROPKEY(DEVPKEY_Device_InstanceId, 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 256); // DEVPROP_TYPE_STRING +DEFINE_DEVPROPKEY(DEVPKEY_Device_Manufacturer, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 13); // DEVPROP_TYPE_STRING +DEFINE_DEVPROPKEY(DEVPKEY_Device_DriverProvider, 0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 9); // DEVPROP_TYPE_STRING +DEFINE_DEVPROPKEY(DEVPKEY_Device_DriverDate, 0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 2); // DEVPROP_TYPE_FILETIME +DEFINE_DEVPROPKEY(DEVPKEY_Device_DriverVersion, 0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 3); // DEVPROP_TYPE_STRING + Modified: trunk/teraterm/ttpcmn/ttpcmn.v10.vcxproj =================================================================== --- trunk/teraterm/ttpcmn/ttpcmn.v10.vcxproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/ttpcmn/ttpcmn.v10.vcxproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -124,6 +124,7 @@ <ItemGroup> <ClCompile Include="..\common\codeconv.cpp" /> <ClCompile Include="..\common\i18n.c" /> + <ClCompile Include="comportinfo.cpp" /> <ClCompile Include="language.c" /> <ClCompile Include="..\common\servicenames.c" /> <ClCompile Include="ttcmn.c" /> @@ -131,6 +132,8 @@ </ItemGroup> <ItemGroup> <ClInclude Include="..\common\i18n.h" /> + <ClInclude Include="comportinfo.h" /> + <ClInclude Include="devpkey_teraterm.h" /> <ClInclude Include="language.h" /> <ClInclude Include="..\common\servicenames.h" /> <ClInclude Include="..\common\ttlib.h" /> Modified: trunk/teraterm/ttpcmn/ttpcmn.v11.vcxproj =================================================================== --- trunk/teraterm/ttpcmn/ttpcmn.v11.vcxproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/ttpcmn/ttpcmn.v11.vcxproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -130,6 +130,7 @@ <ItemGroup> <ClCompile Include="..\common\codeconv.cpp" /> <ClCompile Include="..\common\i18n.c" /> + <ClCompile Include="comportinfo.cpp" /> <ClCompile Include="language.c" /> <ClCompile Include="..\common\servicenames.c" /> <ClCompile Include="ttcmn.c" /> @@ -137,6 +138,8 @@ </ItemGroup> <ItemGroup> <ClInclude Include="..\common\i18n.h" /> + <ClInclude Include="comportinfo.h" /> + <ClInclude Include="devpkey_teraterm.h" /> <ClInclude Include="language.h" /> <ClInclude Include="..\common\servicenames.h" /> <ClInclude Include="..\common\ttlib.h" /> Modified: trunk/teraterm/ttpcmn/ttpcmn.v12.vcxproj =================================================================== --- trunk/teraterm/ttpcmn/ttpcmn.v12.vcxproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/ttpcmn/ttpcmn.v12.vcxproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -130,6 +130,7 @@ <ItemGroup> <ClCompile Include="..\common\codeconv.cpp" /> <ClCompile Include="..\common\i18n.c" /> + <ClCompile Include="comportinfo.cpp" /> <ClCompile Include="..\common\ttlib.c" /> <ClCompile Include="language.c" /> <ClCompile Include="..\common\servicenames.c" /> @@ -137,6 +138,8 @@ </ItemGroup> <ItemGroup> <ClInclude Include="..\common\i18n.h" /> + <ClInclude Include="comportinfo.h" /> + <ClInclude Include="devpkey_teraterm.h" /> <ClInclude Include="..\common\ttlib.h" /> <ClInclude Include="language.h" /> <ClInclude Include="..\common\servicenames.h" /> Modified: trunk/teraterm/ttpcmn/ttpcmn.v14.vcxproj =================================================================== --- trunk/teraterm/ttpcmn/ttpcmn.v14.vcxproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/ttpcmn/ttpcmn.v14.vcxproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -130,6 +130,7 @@ <ItemGroup> <ClCompile Include="..\common\codeconv.cpp" /> <ClCompile Include="..\common\i18n.c" /> + <ClCompile Include="comportinfo.cpp" /> <ClCompile Include="..\common\ttlib.c" /> <ClCompile Include="language.c" /> <ClCompile Include="..\common\servicenames.c" /> @@ -137,6 +138,8 @@ </ItemGroup> <ItemGroup> <ClInclude Include="..\common\i18n.h" /> + <ClInclude Include="comportinfo.h" /> + <ClInclude Include="devpkey_teraterm.h" /> <ClInclude Include="..\common\ttlib.h" /> <ClInclude Include="language.h" /> <ClInclude Include="..\common\servicenames.h" /> Modified: trunk/teraterm/ttpcmn/ttpcmn.v15.vcxproj =================================================================== --- trunk/teraterm/ttpcmn/ttpcmn.v15.vcxproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/ttpcmn/ttpcmn.v15.vcxproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -134,6 +134,7 @@ <ClCompile Include="..\common\codeconv.cpp" /> <ClCompile Include="..\common\i18n.c" /> <ClCompile Include="..\common\ttlib.c" /> + <ClCompile Include="comportinfo.cpp" /> <ClCompile Include="language.c" /> <ClCompile Include="..\common\servicenames.c" /> <ClCompile Include="ttcmn.c" /> @@ -141,6 +142,8 @@ <ItemGroup> <ClInclude Include="..\common\i18n.h" /> <ClInclude Include="..\common\ttlib.h" /> + <ClInclude Include="comportinfo.h" /> + <ClInclude Include="devpkey_teraterm.h" /> <ClInclude Include="language.h" /> <ClInclude Include="..\common\servicenames.h" /> </ItemGroup> @@ -153,4 +156,4 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> -</Project> +</Project> \ No newline at end of file Modified: trunk/teraterm/ttpcmn/ttpcmn.v15.vcxproj.filters =================================================================== --- trunk/teraterm/ttpcmn/ttpcmn.v15.vcxproj.filters 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/ttpcmn/ttpcmn.v15.vcxproj.filters 2019-09-22 05:00:12 UTC (rev 8216) @@ -37,6 +37,9 @@ <ClCompile Include="..\common\codeconv.cpp"> <Filter>Source Files</Filter> </ClCompile> + <ClCompile Include="comportinfo.cpp"> + <Filter>Source Files</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\common\i18n.h"> @@ -51,6 +54,12 @@ <ClInclude Include="..\common\ttlib.h"> <Filter>Header Files</Filter> </ClInclude> + <ClInclude Include="devpkey_teraterm.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="comportinfo.h"> + <Filter>Source Files</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <None Include="ttpcmn.def"> @@ -62,4 +71,4 @@ <Filter>Resource Files</Filter> </ResourceCompile> </ItemGroup> -</Project> +</Project> \ No newline at end of file Modified: trunk/teraterm/ttpcmn/ttpcmn.v16.vcxproj =================================================================== --- trunk/teraterm/ttpcmn/ttpcmn.v16.vcxproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/ttpcmn/ttpcmn.v16.vcxproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -134,6 +134,7 @@ <ClCompile Include="..\common\codeconv.cpp" /> <ClCompile Include="..\common\i18n.c" /> <ClCompile Include="..\common\ttlib.c" /> + <ClCompile Include="comportinfo.cpp" /> <ClCompile Include="language.c" /> <ClCompile Include="..\common\servicenames.c" /> <ClCompile Include="ttcmn.c" /> @@ -141,6 +142,8 @@ <ItemGroup> <ClInclude Include="..\common\i18n.h" /> <ClInclude Include="..\common\ttlib.h" /> + <ClInclude Include="comportinfo.h" /> + <ClInclude Include="devpkey_teraterm.h" /> <ClInclude Include="language.h" /> <ClInclude Include="..\common\servicenames.h" /> </ItemGroup> @@ -153,4 +156,4 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> -</Project> +</Project> \ No newline at end of file Modified: trunk/teraterm/ttpcmn/ttpcmn.v16.vcxproj.filters =================================================================== --- trunk/teraterm/ttpcmn/ttpcmn.v16.vcxproj.filters 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/ttpcmn/ttpcmn.v16.vcxproj.filters 2019-09-22 05:00:12 UTC (rev 8216) @@ -37,6 +37,9 @@ <ClCompile Include="..\common\codeconv.cpp"> <Filter>Source Files</Filter> </ClCompile> + <ClCompile Include="comportinfo.cpp"> + <Filter>Source Files</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\common\i18n.h"> @@ -51,6 +54,12 @@ <ClInclude Include="..\common\ttlib.h"> <Filter>Header Files</Filter> </ClInclude> + <ClInclude Include="devpkey_teraterm.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="comportinfo.h"> + <Filter>Source Files</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <None Include="ttpcmn.def"> @@ -62,4 +71,4 @@ <Filter>Resource Files</Filter> </ResourceCompile> </ItemGroup> -</Project> +</Project> \ No newline at end of file Modified: trunk/teraterm/ttpcmn/ttpcmn.v9.vcproj =================================================================== --- trunk/teraterm/ttpcmn/ttpcmn.v9.vcproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/ttpcmn/ttpcmn.v9.vcproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -210,6 +210,10 @@ > </File> <File + RelativePath=".\comportinfo.cpp" + > + </File> + <File RelativePath="..\common\i18n.c" > </File> @@ -235,6 +239,14 @@ Filter="h;hpp;hxx;hm;inl;fi;fd" > <File + RelativePath=".\comportinfo.h" + > + </File> + <File + RelativePath=".\devpkey_teraterm.h" + > + </File> + <File RelativePath="..\common\i18n.h" > </File> Modified: trunk/teraterm/ttpcmn/ttpcmn.vcproj =================================================================== --- trunk/teraterm/ttpcmn/ttpcmn.vcproj 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/ttpcmn/ttpcmn.vcproj 2019-09-22 05:00:12 UTC (rev 8216) @@ -211,6 +211,10 @@ > </File> <File + RelativePath=".\comportinfo.cpp" + > + </File> + <File RelativePath="..\common\i18n.c" > </File> @@ -236,6 +240,14 @@ Filter="h;hpp;hxx;hm;inl;fi;fd" > <File + RelativePath=".\comportinfo.h" + > + </File> + <File + RelativePath=".\devpkey_teraterm.h" + > + </File> + <File RelativePath="..\common\i18n.h" > </File> Modified: trunk/teraterm/ttpdlg/ttdlg.c =================================================================== --- trunk/teraterm/ttpdlg/ttdlg.c 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/ttpdlg/ttdlg.c 2019-09-22 05:00:12 UTC (rev 8216) @@ -48,6 +48,8 @@ #include "svnversion.h" #include "ttdlg.h" #include "tipwin.h" +#include "comportinfo.h" +#include "codeconv.h" // Oniguruma: Regular expression library #define ONIG_EXTERN extern @@ -123,6 +125,11 @@ "14400","19200","38400","57600","115200", "230400", "460800", "921600", NULL}; +/* + * COM\x83|\x81[\x83g\x82Ɋւ\xB7\x82\xE9\x8Fڍ\xEE\x95\xF1 + */ +static ComPortInfo_t *ComPortInfoPtr; +static int ComPortInfoCount; static INT_PTR CALLBACK TermDlg(HWND Dialog, UINT Message, WPARAM wParam, LPARAM lParam) { @@ -1168,15 +1175,21 @@ */ static void serial_dlg_set_comport_info(HWND dlg, int portno, char *desc) { - char buf[1024]; + int i; + ComPortInfo_t *p; + char *strA; - // WindowsNT4.0\x88ȑO\x82͏ڍ\xEE\x95擾\x82ł\xAB\x82Ȃ\xA2\x81B - if (desc == NULL) + for (i = 0 ; i < ComPortInfoCount ; i++) { + p = &ComPortInfoPtr[i]; + if (p->port_no == portno) + break; + } + if (i >= ComPortInfoCount) // \x8AY\x93\x96\x82\xB7\x82\xE9COM\x83|\x81[\x83g\x82\xAA\x8C\xA9\x82\xA9\x82\xE7\x82Ȃ\xA9\x82\xC1\x82\xBD return; - _snprintf_s(buf, sizeof(buf), _TRUNCATE, "%s\r\n", desc); - - SendDlgItemMessage(dlg, IDC_SERIALTEXT, WM_SETTEXT, 0, (LPARAM)(char *)buf); + strA = ToCharW(p->property); + SetDlgItemTextA(dlg, IDC_SERIALTEXT, strA); + free(strA); } /* @@ -1312,6 +1325,11 @@ EnableDlgItem(Dialog, IDC_SERIALPORT_LABEL, IDC_SERIALPORT_LABEL); EnableDlgItem(Dialog, IDOK, IDOK); + // COM\x83|\x81[\x83g\x82̏ڍ\xEE\x95\xF1\x82\xF0\x8E擾\x82\xB7\x82\xE9\x81B + // COM\x82̐ڑ\xB1\x8F͓s\x93x\x95ς\xED\x82邽\x82߁A\x83_\x83C\x83A\x83\x8D\x83O\x82\xF0\x95\\x8E\xA6\x82\xB7\x82\xE9\x93x\x82Ɏ擾\x82\xB7\x82\xE9\x81B + // \x95s\x97v\x82ɂȂ\xC1\x82\xBD\x82\xE7\x81AComPortInfoFree()\x82Ń\x81\x83\x82\x83\x8A\x82\xF0\x89\xF0\x95\xFA\x82\xB7\x82邱\x82ƁB + ComPortInfoPtr = ComPortInfoGet(&ComPortInfoCount, UILanguageFile); + w = 0; if ((comports = DetectComPorts(ComPortTable, ts->MaxComPort, ComPortDesc)) > 0) { @@ -1416,6 +1434,13 @@ return TRUE; + case WM_DESTROY: + // COM\x83|\x81[\x83g\x82̏ڍ\xEE\x95\xF1\x82\xF0\x89\xF0\x95\xFA\x82\xB7\x82\xE9\x81B + ComPortInfoFree(ComPortInfoPtr, ComPortInfoCount); + ComPortInfoPtr = NULL; + ComPortInfoCount = 0; + break; + case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: Modified: trunk/teraterm/ttpdlg/ttpdlg.rc =================================================================== --- trunk/teraterm/ttpdlg/ttpdlg.rc 2019-09-22 04:55:45 UTC (rev 8215) +++ trunk/teraterm/ttpdlg/ttpdlg.rc 2019-09-22 05:00:12 UTC (rev 8216) @@ -125,7 +125,7 @@ EDITTEXT IDC_LOCALE_EDIT,59,140,63,13,ES_AUTOHSCROLL END -IDD_SERIALDLG DIALOGEX 20, 20, 190, 205 +IDD_SERIALDLG DIALOGEX 20, 20, 190, 214 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Tera Term: Serial port setup and connection" FONT 14, "System", 0, 0, 0x0 @@ -150,7 +150,7 @@ DEFPUSHBUTTON "OK",IDOK,138,9,40,45,BS_LEFT | BS_MULTILINE | WS_GROUP PUSHBUTTON "Cancel",IDCANCEL,138,60,40,16,BS_LEFT PUSHBUTTON "&Help",IDC_SERIALHELP,138,84,40,16,BS_LEFT - EDITTEXT IDC_SERIALTEXT,10,141,170,59,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL + EDITTEXT IDC_SERIALTEXT,10,141,170,70,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | WS_VSCROLL | WS_HSCROLL END IDD_TCPIPDLG DIALOGEX 20, 20, 222, 157