Struktur OSVERSIONINFOEXA (winnt.h)

Berisi informasi versi sistem operasi. Informasi tersebut mencakup nomor versi utama dan minor, nomor build, pengidentifikasi platform, dan informasi tentang suite produk dan Paket Layanan terbaru yang diinstal pada sistem. Struktur ini digunakan dengan fungsi GetVersionEx dan VerifyVersionInfo .

Sintaks

typedef struct _OSVERSIONINFOEXA {
  DWORD dwOSVersionInfoSize;
  DWORD dwMajorVersion;
  DWORD dwMinorVersion;
  DWORD dwBuildNumber;
  DWORD dwPlatformId;
  CHAR  szCSDVersion[128];
  WORD  wServicePackMajor;
  WORD  wServicePackMinor;
  WORD  wSuiteMask;
  BYTE  wProductType;
  BYTE  wReserved;
} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;

Anggota

dwOSVersionInfoSize

Ukuran struktur data ini, dalam byte. Atur anggota ini ke sizeof(OSVERSIONINFOEX).

dwMajorVersion

Nomor versi utama sistem operasi. Untuk informasi selengkapnya, lihat Keterangan.

dwMinorVersion

Nomor versi minor sistem operasi. Untuk informasi selengkapnya, lihat Keterangan.

dwBuildNumber

Nomor build sistem operasi.

dwPlatformId

Platform sistem operasi. Anggota ini dapat VER_PLATFORM_WIN32_NT (2).

szCSDVersion[128]

String yang dihentikan null, seperti "Paket Layanan 3", yang menunjukkan Paket Layanan terbaru yang diinstal pada sistem. Jika tidak ada Paket Layanan yang diinstal, string kosong.

wServicePackMajor

Nomor versi utama paket layanan terbaru yang diinstal pada sistem. Misalnya, untuk Paket Layanan 3, nomor versi utama adalah 3. Jika tidak ada Paket Layanan yang diinstal, nilainya adalah nol.

wServicePackMinor

Nomor versi minor dari Paket Layanan terbaru yang diinstal pada sistem. Misalnya, untuk Paket Layanan 3, nomor versi minor adalah 0.

wSuiteMask

Sedikit masker yang mengidentifikasi suite produk yang tersedia pada sistem. Anggota ini bisa menjadi kombinasi dari nilai berikut.

Nilai Makna
VER_SUITE_BACKOFFICE
0x00000004
Komponen Microsoft BackOffice diinstal.
VER_SUITE_BLADE
0x00000400
Windows Server 2003, Edisi Web diinstal.
VER_SUITE_COMPUTE_SERVER
0x00004000
Windows Server 2003, Edisi Kluster Komputasi diinstal.
VER_SUITE_DATACENTER
0x00000080
Pusat Data Windows Server 2008, Windows Server 2003, Edisi Pusat Data, atau Server Pusat Data Windows 2000 diinstal.
VER_SUITE_ENTERPRISE
0x00000002
Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition, atau Windows 2000 Advanced Server diinstal. Lihat bagian Keterangan untuk informasi selengkapnya tentang bendera bit ini.
VER_SUITE_EMBEDDEDNT
0x00000040
Windows XP Embedded terinstal.
VER_SUITE_PERSONAL
0x00000200
Windows Vista Home Premium, Windows Vista Home Basic, atau Windows XP Home Edition terinstal.
VER_SUITE_SINGLEUSERTS
0x00000100
Desktop Jauh didukung, tetapi hanya satu sesi interaktif yang didukung. Nilai ini diatur kecuali sistem berjalan dalam mode server aplikasi.
VER_SUITE_SMALLBUSINESS
0x00000001
Microsoft Small Business Server pernah diinstal pada sistem, tetapi mungkin telah dimutakhirkan ke versi Windows lain. Lihat bagian Keterangan untuk informasi selengkapnya tentang bendera bit ini.
VER_SUITE_SMALLBUSINESS_RESTRICTED
0x00000020
Microsoft Small Business Server diinstal dengan lisensi klien terbatas yang berlaku. Lihat bagian Keterangan untuk informasi selengkapnya tentang bendera bit ini.
VER_SUITE_STORAGE_SERVER
0x00002000
Windows Storage Server 2003 R2 atau Windows Storage Server 2003is terinstal.
VER_SUITE_TERMINAL
0x00000010
Layanan Terminal diinstal. Nilai ini selalu diatur.

Jika VER_SUITE_TERMINAL diatur tetapi VER_SUITE_SINGLEUSERTS tidak diatur, sistem berjalan dalam mode server aplikasi.

VER_SUITE_WH_SERVER
0x00008000
Windows Home Server terinstal.
VER_SUITE_MULTIUSERTS
0x00020000
Mode AppServer diaktifkan.

wProductType

Informasi tambahan apa pun tentang sistem. Anggota ini bisa menjadi salah satu nilai berikut.

Nilai Makna
VER_NT_DOMAIN_CONTROLLER
0x0000002
Sistem ini adalah pengendali domain dan sistem operasinya adalah Windows Server 2012, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, atau Windows 2000 Server.
VER_NT_SERVER
0x0000003
Sistem operasinya adalah Windows Server 2012, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, atau Windows 2000 Server.

Perhatikan bahwa server yang juga pengendali domain dilaporkan sebagai VER_NT_DOMAIN_CONTROLLER, bukan VER_NT_SERVER.

VER_NT_WORKSTATION
0x0000001
Sistem operasinya Windows 8, Windows 7, Windows Vista, Windows XP Professional, Windows XP Home Edition, atau Windows 2000 Professional.

wReserved

Disiapkan untuk penggunaan masa mendatang.

Keterangan

Mengandalkan informasi versi bukanlah cara terbaik untuk menguji fitur. Sebagai gantinya, lihat dokumentasi untuk fitur yang menarik. Untuk informasi selengkapnya tentang teknik umum untuk deteksi fitur, lihat Versi Sistem Operasi.

Jika Anda harus memerlukan sistem operasi tertentu, pastikan untuk menggunakannya sebagai versi minimum yang didukung, daripada merancang pengujian untuk satu sistem operasi. Dengan cara ini, kode deteksi Anda akan terus berfungsi pada versi Windows yang akan datang.

Tabel berikut ini meringkas nilai yang dikembalikan oleh versi Windows yang didukung. Gunakan informasi dalam kolom berlabel "Lainnya" untuk membedakan antara sistem operasi dengan nomor versi yang identik.

Sistem operasi Nomor Versi dwMajorVersion dwMinorVersion Lainnya
Windows 10 10.0* 10 0 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Server Windows 2016 10.0* 10 0 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows 8.1 6.3* 6 3 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2012 R2 6.3* 6 3 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows 8 6.2 6 2 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2012 6.2 6 2 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows 7 6.1 6 1 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2008 R2 6.1 6 1 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Server 2008 6.0 6 0 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Vista 6.0 6 0 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2003 R2 5.2 5 2 GetSystemMetrics(SM_SERVERR2) != 0
Windows Home Server 5.2 5 2 OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER
Windows Server 2003 5.2 5 2 GetSystemMetrics(SM_SERVERR2) == 0
Windows XP Professional x64 Edition 5.2 5 2 (OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
Windows XP 5.1 5 1 Tidak berlaku
Windows 2000 5.0 5 0 Tidak berlaku
*Untuk aplikasi yang telah dimanifestasikan untuk Windows 8.1 atau Windows 10. Aplikasi yang tidak dimanifestasikan untuk Windows 8.1 atau Windows 10 akan mengembalikan nilai versi OS Windows 8 (6.2). Untuk memanifestasikan aplikasi Anda untuk Windows 8.1 atau Windows 10, lihat Menargetkan aplikasi Anda untuk Windows.
 

Anda tidak boleh hanya mengandalkan bendera VER_SUITE_SMALLBUSINESS untuk menentukan apakah Small Business Server telah diinstal pada sistem, karena bendera ini dan bendera VER_SUITE_SMALLBUSINESS_RESTRICTED diatur ketika rangkaian produk ini diinstal. Jika Anda memutakhirkan penginstalan ini ke Windows Server, Edisi Standar, bendera VER_SUITE_SMALLBUSINESS_RESTRICTED akan dihapus—namun, bendera VER_SUITE_SMALLBUSINESS akan tetap ditetapkan. Dalam hal ini, ini menunjukkan bahwa Small Business Server pernah diinstal pada sistem ini. Jika penginstalan ini ditingkatkan lebih lanjut ke Windows Server, Enterprise Edition, bendera VER_SUITE_SMALLBUSINESS akan tetap diatur.

Jika mode kompatibilitas berlaku, struktur OSVERSIONINFOEX berisi informasi tentang sistem operasi yang dipilih untuk kompatibilitas aplikasi.

Untuk menentukan apakah aplikasi berbasis Win32 berjalan di WOW64, panggil fungsi IsWow64Process . Untuk menentukan apakah sistem menjalankan Windows versi 64-bit, panggil fungsi GetNativeSystemInfo .

Fungsi GetSystemMetrics menyediakan informasi tambahan berikut tentang sistem operasi saat ini.

Produk Pengaturan
Windows Server 2003 R2 SM_SERVERR2
Windows XP Media Center Edition SM_MEDIACENTER
Windows XP Starter Edition SM_STARTER
Windows XP Tablet Edisi PC SM_TABLETPC
 

Contoh

Misalnya, lihat Mendapatkan Versi Sistem.

Catatan

Header winnt.h mendefinisikan OSVERSIONINFOEX sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Header winnt.h (termasuk Windows.h)

Lihat juga

IsWow64Process

OSVERSIONINFO

API Pembantu Versi