<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Frage zu GetVersionEx]]></title><description><![CDATA[<p>Ok bevor man die Funktion GetVersionEx aufruft, muß man die Größe der Struktur festlegen das geschieht mit sizeof(OSVERSIONINFO) oder sizeof(OSVERSIONINFOEX) (für Windows NT 5.0 and later). Das verwirrt mich jetzt etwas, ich kenne ja meine Windowsversion nicht, deshalb rufe ich ja auch GetVersionEx. Wie soll ich dann im Vorfeld festlegen können, ob ich OSVERSIONINFO oder OSVERSIONINFOEX in sizeof(..) einsetzen muß?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244356/frage-zu-getversionex</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Apr 2026 23:03:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244356.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Jun 2009 07:27:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu GetVersionEx on Mon, 29 Jun 2009 07:27:35 GMT]]></title><description><![CDATA[<p>Ok bevor man die Funktion GetVersionEx aufruft, muß man die Größe der Struktur festlegen das geschieht mit sizeof(OSVERSIONINFO) oder sizeof(OSVERSIONINFOEX) (für Windows NT 5.0 and later). Das verwirrt mich jetzt etwas, ich kenne ja meine Windowsversion nicht, deshalb rufe ich ja auch GetVersionEx. Wie soll ich dann im Vorfeld festlegen können, ob ich OSVERSIONINFO oder OSVERSIONINFOEX in sizeof(..) einsetzen muß?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734369</guid><dc:creator><![CDATA[Rüüdiger]]></dc:creator><pubDate>Mon, 29 Jun 2009 07:27:35 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu GetVersionEx on Mon, 29 Jun 2009 07:59:46 GMT]]></title><description><![CDATA[<p>Werte die Rückgabewerte aus!</p>
<p>Ich machs im Prinzip so:<br />
Zuerst Abfrage <em>GetVersionEx()</em> mit Struktur <em>OSVERSIONINFOEX</em>.<br />
Wenn erfolgreich -&gt; fertig!<br />
Wenn Fehler -&gt; Abfrage <em>GetVersionEx()</em> mit Struktur <em>OSVERSIONINFO</em>.<br />
Wenn erfolgreich -&gt; fertig!<br />
Wenn Fehler -&gt; Abfrage <em>GetVersion()</em> -&gt; fertig!</p>
<pre><code class="language-cpp">OSVERSIONINFOEX s_osvi;

s_osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFOEX );    //Strukturlänge definieren.
if ( GetVersionEx( (OSVERSIONINFO*)&amp;s_osvi ) != 0 )
{
  //Abfrage GetVersionEx() mit Struktur OSVERSIONINFOEX war erfolgreich!
}
else
{
  s_osvi.wServicePackMajor = 0;
  s_osvi.wServicePackMinor = 0;
  s_osvi.wSuiteMask = 0;
  s_osvi.wProductType = 0;
  s_osvi.wReserved = 0;
  //Abfrage GetVersionEx() mit Struktur OSVERSIONINFOEX war erfolglos, jetzt neuer Versuch mit Struktur OSVERSIONINFO.
  s_osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );         //Strukturlänge definieren.
  if ( GetVersionEx( (OSVERSIONINFO*)&amp;s_osvi ) != 0 )
  {
    //Abfrage GetVersionEx() mit Struktur OSVERSIONINFO war erfolgreich!
  }
  else
  {
    //Abfrage GetVersionEx() war erfolglos!
    //Die Struktur mit Informationen aus GetVersion() auffüllen.
    dwVersion = GetVersion(); //Funktioniert auf allen Win-Plattformen!
    s_osvi.dwOSVersionInfoSize = 0;
    s_osvi.dwMajorVersion = dwVersion &amp; 0x000000FF;
    s_osvi.dwMinorVersion = ( dwVersion &gt;&gt; 8 ) &amp; 0x000000FF;
    s_osvi.szCSDVersion[0] = TEXT( '\0' );                      //Es gibt keinen Zusatzstring.
    if ( ( dwVersion &amp; 0x80000000 ) == 0 )
    {
      s_osvi.dwPlatformId = VER_PLATFORM_WIN32_NT;
      s_osvi.dwBuildNumber = ( dwVersion &gt;&gt; 16 ) &amp; 0x0000FFFF;
    }
    else
    {
      if ( s_osvi.dwMajorVersion &lt;= 3 )
      {
        s_osvi.dwPlatformId = VER_PLATFORM_WIN32s;
        s_osvi.dwBuildNumber = ( dwVersion &gt;&gt; 16 ) &amp; 0x00007FFF;
      }
      else
      {
        s_osvi.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS;
        s_osvi.dwBuildNumber = 0;
      }
    }
  }
}

//In der Struktur s_osvi hast Du alle verfügbaren Informationen.
//Fehlende Informationen wurden mit 0 oder NULL aufgefüllt.
</code></pre>
<p>ich denke mal, der Code ist so selbsterklärend...<br />
HTH,<br />
Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734387</guid><dc:creator><![CDATA[Mmacher]]></dc:creator><pubDate>Mon, 29 Jun 2009 07:59:46 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu GetVersionEx on Mon, 29 Jun 2009 08:23:13 GMT]]></title><description><![CDATA[<p>Danke Mann, eine ähnliche Vorgehensweise hatte ich auch schon im Hinterkopf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734397</guid><dc:creator><![CDATA[Rüüdiger]]></dc:creator><pubDate>Mon, 29 Jun 2009 08:23:13 GMT</pubDate></item></channel></rss>