⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dtwinver.htm

📁 VC++源代码
💻 HTM
字号:
<html>

<head>
<title>DtWinVer v1.34</title>
</head>

<body bgcolor="#FFFFFF">

<p align="left"><img src="dtwinver.gif" width="67" height="58"
alt="dtwinver.gif (7742 bytes)"><font face="Arial" size="6"><strong>DtWinVer
v1.34</strong></font></p>

<p>&nbsp;</p>

<table>
<TBODY>
  <tr>
    <td><a href="#Features"><font face="Arial">Features</font></a></td>
  </tr>
  <tr>
    <td><a href="#History"><font face="Arial">History</font></a></td>
  </tr>
  <tr>
    <td><a href="#API"><font face="Arial">API Reference</font></a></td>
  </tr>
  <tr>
    <td><a href="#Notes"><font face="Arial">Notes</font></a></td>
  </tr>
  <tr>
    <td><font face="Arial"><a href="#Enhancements">Enhancements</a></font></td>
  </tr>
  <tr>
    <td><a href="#Contact"><font face="Arial">Contacting the Author</font></a></td>
  </tr>
</TBODY>
</table>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><a name="Features"></a><font face="Arial" size="5"><strong>Features</strong></font></p>

<p><font face="Arial" COLOR="#000000" size="3">Enclosed is a routine which provides a
comprehensive method to determine which OS the program that calls it is running on. All
methods it uses are fully documented on various articles on the MSDN CD. The routine
provides the emulated OS as well as the underlying OS. e.g to a Dos program Windows 95
looks like MS-DOS 7.0. A full list of the OS&#146;s it can detect are:</font> 

<ul>
  <li><font face="Arial" COLOR="#000000" size="3">Dos</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">Windows 3.0</font></li>
  <li><font face="Arial" color="#000000" size="3">Windows 3.1</font></li>
  <li><font face="Arial" color="#000000" size="3">Windows 3.11</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">Windows for Workgroups</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">Win32s (if you can call this
    an OS &lt;g&gt;)</font></li>
  <li><font face="Arial" color="#000000" size="3">Windows CE 1.0&nbsp;</font></li>
  <li><font face="Arial" color="#000000" size="3">Windows CE 2.0</font></li>
  <li><font face="Arial" color="#000000" size="3">Windows CE 2.1</font></li>
  <li><font face="Arial" color="#000000" size="3">Windows CE 2.11</font></li>
  <li><font face="Arial" color="#000000" size="3">Windows CE 3.0</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">Windows 95 </font></li>
  <li><font face="Arial" color="#000000" size="3">Windows 95 Service Pack 1</font></li>
  <li><font face="Arial" color="#000000" size="3">Windows 95 OEM Service Release
    2</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">Windows 98</font></li>
  <li><font face="Arial" color="#000000" size="3">Windows 98 Service Pack 1</font></li>
  <li><font face="Arial" color="#000000" size="3">Windows 98 Second Edition</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">NT Workstation, Server 3.1</font></li>
  <li><font face="Arial" color="#000000" size="3">NT Workstation, Server, PDC,
    BDC 3.5</font></li>
  <li><font face="Arial" color="#000000" size="3">NT Workstation, Server, PDC,
    BDC 3.51</font></li>
  <li><font face="Arial" color="#000000" size="3">NT Workstation, Server, PDC,
    BDC 4.0</font></li>
  <li><font face="Arial" color="#000000" size="3">Windows 2000 Professional</font></li>
  <li><font face="Arial" color="#000000" size="3">Windows 2000 Server / Advanced
    Server</font></li>
  <li> <font face="Arial"> Windows NT Terminal Server</font></li>
  <li> <font face="Arial">Windows NT Enterprise Edition</font></li>
</ul>

<p><font face="Arial" COLOR="#000000" size="3">Some of the possible scenarios it can
report on are:</font> 

<ul>
  <li><font face="Arial" COLOR="#000000" size="3">&quot;You are running an emulated Dos v5.50
    On NT&quot;</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">&quot;You are running an emulated Windows
    3.95 on Windows 95 v4.0 Build 950&quot;</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">&quot;You are running Windows for Workgroups
    on Dos v6.22&quot;</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">&quot;You are running NT Server v3.51&quot;</font></li>
  <li><font face="Arial" COLOR="#000000" size="3">&quot;You are running an
    application on Windows NT Terminal Server.</font></li>
  <li><font face="Arial" color="#000000" size="3">This NT machine is acting as a
    stand alone server, primary domain controller or backup domain controller.</font></li>
</ul>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><a name="History"></a><font color="#000000" size="5" face="Arial"><strong>History</strong></font></p>

<p><strong><font face="Arial" COLOR="#000000" size="3">v1.1 (8 May 1997)</font></strong>

<ul>
  <li><font face="Arial" COLOR="#000000" size="3">Fix to remove Unicode and TCHAR
    code when
    being compiled for Win16.</font></li>
</ul>

<p><strong><font face="Arial" COLOR="#000000" size="3">v1.2 (13 September 1998)</font></strong> 

<ul>
  <li><font face="Arial" COLOR="#000000" size="3">Updated the sample app plus the
    DtWinVer
    code to explicitly support Windows 98.</font></li>
</ul>

<p><strong><font face="Arial" COLOR="#000000" size="3">v1.3 (22 June 1998)</font></strong> 

<ul>
  <li><font face="Arial">UNICODE enabled the code.</font></li>
  <li><font face="Arial">Removed need for the dwOSVersionInfoSize variable.</font></li>
  <li><font face="Arial">Added support for detecting Build Number of 95 and 98 from DOS code path.</font></li>
  <li><font face="Arial">Now ships as standard with VC 5 workspace files.</font></li>
  <li><font face="Arial">Added explicit support for Windows 95 SP 1.</font></li>
  <li><font face="Arial">Added explicit support for Windows 95 OSR 2.</font></li>
  <li><font face="Arial">Added explicit support for Windows 98 Second Edition.</font></li>
  <li><font face="Arial">Added explicit support for Windows 2000.</font></li>
  <li><font face="Arial">Added explicit support for Windows CE.</font></li>
  <li><font face="Arial">Added explicit support for Windows Terminal Server's.</font></li>
  <li> <font face="Arial"> Added explicit support for NT Stand Alone Server's.</font></li>
  <li><font face="Arial">Added explicit support for NT Primary Domain Controller's.</font></li>
  <li><font face="Arial">Added explicit support for NT Backup Domain Controller's.</font></li>
</ul>

<p><strong><font face="Arial" COLOR="#000000" size="3">v1.31 (23 July 1999)</font></strong> 

<ul>
  <li><font face="Arial"> Tested out support for Windows 98 SE, minor changes required</font></li>
</ul>

<p><strong><font face="Arial" COLOR="#000000" size="3">v1.32 (26 July 1999)</font></strong> 

<ul>
  <li><font face="Arial">Added explicit support for Windows 98 SP 1.</font></li>
</ul>

<p><strong><font face="Arial" COLOR="#000000" size="3">v1.33 (28 July 1999)</font></strong> 

<ul>
  <li><font face="Arial">Fixed a problem when application is build in non-huge/large
    memory model in Win16.</font></li>
  <li><font face="Arial"> Added explicit support for returning NT and Win9x service pack information                          from Win32 and Win16 code paths.</font></li>
  <li><font face="Arial"> Updated test program to not bother reporting on any info which does not                          exist. e.g. if there is no service pack installed, then we don't bother                          displaying any info about service packs.</font></li>
  <li><font face="Arial"> Added explicit support for NT Enterprise Edition.</font></li>
</ul>

<p><strong><font face="Arial" COLOR="#000000" size="3">v1.34 (2 February 2000)</font></strong> 

<ul>
  <li><font face="Arial">Fixed a minor copy and paste bug in the test program.</font></li>
</ul>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><a name="API"></a><font color="#000000" size="5" face="Arial"><strong>API</strong></font></p>

<p><font face="Arial" color="#000000" size="4"><strong>GetOSVersion</strong></font></p>

<p><font face="Arial" COLOR="#000000" size="3"><strong>BOOL GetOSVersion(LPOS_VERSION_INFO
</strong><em>lpVersionInformation</em><strong>)</strong></font></p>

<p><font face="Arial" COLOR="#000000" size="3"><strong>Parameters</strong></font></p>

<p><font face="Arial" COLOR="#000000" size="3"><em>lpVersionInformation</em> A pointer to
a structure of the following form:</font> 

<dl>
  <dd><font COLOR="#000000" size="3">typedef struct _OS_VERSION_INFO</font></dd>
  <dd><font COLOR="#000000" size="3">{</font></dd>
  <dd><font COLOR="#000000" size="3">//What version of OS is being emulated</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwEmulatedMajorVersion;</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwEmulatedMinorVersion;</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwEmulatedBuildNumber;</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwEmulatedPlatformId;</font></dd>
  <dd><font COLOR="#000000" size="3">#ifdef _WIN32 </font></dd>
  <dd><font COLOR="#000000" size="3">TCHAR szEmulatedCSDVersion[128];</font></dd>
  <dd><font COLOR="#000000" size="3">#else </font></dd>
  <dd><font COLOR="#000000" size="3">char szEmulatedCSDVersion[128];</font></dd>
  <dd><font COLOR="#000000" size="3">#endif </font></dd>
  <dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WORD wEmulatedServicePack;</dt>
  <dd>&nbsp;</dd>
  <dd><font COLOR="#000000" size="3">//What version of OS is really running </font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwUnderlyingMajorVersion;</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwUnderlyingMinorVersion;</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwUnderlyingBuildNumber;</font></dd>
  <dd><font COLOR="#000000" size="3">DWORD dwUnderlyingPlatformId; </font></dd>
  <dd><font COLOR="#000000" size="3">#ifdef _WIN32 </font></dd>
  <dd><font COLOR="#000000" size="3">TCHAR szUnderlyingCSDVersion[128];</font></dd>
  <dd><font COLOR="#000000" size="3">#else </font></dd>
  <dd><font COLOR="#000000" size="3">char szUnderlyingCSDVersion[128];</font></dd>
  <dd><font COLOR="#000000" size="3">#endif </font></dd>
  <dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WORD wUnderlyingServicePack;</dt>
  <dd><font COLOR="#000000" size="3">} OS_VERSION_INFO, *POS_VERSION_INFO, FAR
    *LPOS_VERSION_INFO;</font></dd>
</dl>

<p><font face="Arial" COLOR="#000000" size="3">This will be filled in upon a successful
return from the function.</font></p>

<p><font face="Arial" COLOR="#000000" size="3"><strong>Return Value</strong></font></p>

<p><font face="Arial" COLOR="#000000" size="3">TRUE if the function was successful
otherwise FALSE.</font></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><a name="Notes"></a><font face="Arial" color="#000000" size="5"><strong>Notes</strong></font></p>

<p><font face="Arial" color="#000000" size="3">The code uses some C++&#146;isms and uses
MFC header files. If you want, it would be a very simple matter of commenting
out a few lines
here and there to get it to work on any standard &quot;C&quot; compiler on any PC OS. 3
mak / workspace files are also included which builds a simple application which reports the OS
version, through a message box on Windows and stdio in Dos.</font></p>

<p><font face="Arial" color="#000000" size="3">The mak files are:</font> 

<ul>
  <li><font face="Arial" color="#000000" size="3">dosver.mak (VC 1.5x for Dos)</font></li>
  <li><font face="Arial" color="#000000" size="3">winver.mak (VC 1.5x for Win16)</font></li>
  <li><font face="Arial" color="#000000" size="3">winver32.dsp/dsw (VC 5 for Win32).</font></li>
</ul>

<p><font face="Arial" color="#000000" size="3">Areas where the code may prove useful are:</font>

<ul>
  <li><font face="Arial" color="#000000" size="3">A Dos program wants to know if it can be
    allowed access to hardware ports which is not available on NT, but is available on Dos,
    Windows 3.x &amp; Windows 95.</font></li>
  <li><font face="Arial" color="#000000" size="3">A Win32 program wants to know if the Windows
    95 UI is available.</font></li>
  <li><font face="Arial" color="#000000" size="3">A Win16 program wants to know if it can call
    the Win32 API via generic thunking.</font></li>
  <li><font face="Arial" color="#000000" size="3">Checking for the existence of
    a certain Service pack on Windows 95 or 98.</font></li>
</ul>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><a name="Enhancements"></a><font color="#000000" face="Arial" size="5"><strong>Planned
Enhancements</strong></font> 

<ul>
  <li><font color="#000000" face="Arial" size="3">Add support for Windows 2000
    Advanced Server.</font></li>
  <li><font color="#000000" face="Arial" size="3">Add support for Windows 2000
    Datacenter Server.</font></li>
  <li><font color="#000000" face="Arial" size="3">Add support for Embedded
    Windows NT.</font></li>
  <li><font color="#000000" face="Arial" size="3">Add support for
    differentiating between NT Server / Workstation from 16 bit Windows code
    path.</font></li>
</ul>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p><font size="5"><a name="Contact"></a><font color="#000000" face="Arial"><strong>Contacting
the Author</strong></font></font></p>

<p><font face="Arial" color="#000000" size="3">PJ Naughter<br>
Email: </font><font face="Arial" color="#000000" size="3"><a href="mailto:pjn@indigo..ie">pjn@indigo.ie</a><br>
Web: </font><font face="Arial" color="#000000" size="3"><a href="http://indigo.ie/~pjn">http://indigo.ie/~pjn</a><br>
2 February 2000</font></p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -