[RTL][NTDLL][KERNEL32] Implement (Rtl)GetProductInfo

This commit is contained in:
Timo Kreuzer
2025-06-01 18:38:44 +03:00
parent 50985d9702
commit 15fa25299f
6 changed files with 67 additions and 2 deletions

View File

@@ -902,7 +902,7 @@
@ stdcall RtlGetOwnerSecurityDescriptor(ptr ptr ptr)
@ stdcall -stub -version=0x600+ RtlGetParentLocaleName(wstr long long long)
@ stdcall RtlGetProcessHeaps(long ptr)
@ stub -version=0x600+ RtlGetProductInfo
@ stdcall -version=0x600+ RtlGetProductInfo(long long long long ptr)
@ stdcall RtlGetSaclSecurityDescriptor(ptr ptr ptr ptr)
@ stdcall RtlGetSecurityDescriptorRMControl(ptr ptr)
@ stdcall RtlGetSetBootStatusData(ptr long long ptr long long)

View File

@@ -1,6 +1,7 @@
@ stdcall LdrRegisterDllNotification(long ptr ptr ptr)
@ stdcall LdrUnregisterDllNotification(ptr)
@ stdcall RtlGetProductInfo(long long long long ptr)
@ stdcall RtlInitializeConditionVariable(ptr)
@ stdcall RtlWakeConditionVariable(ptr)
@ stdcall RtlWakeAllConditionVariable(ptr)

View File

@@ -574,7 +574,7 @@
@ stdcall GetProcessVersion(long)
@ stdcall GetProcessWorkingSetSize(long ptr ptr)
@ stdcall GetProcessWorkingSetSizeEx(long ptr ptr long)
@ stub -version=0x600+ GetProductInfo
@ stdcall -version=0x600+ GetProductInfo(long long long long ptr) ntdll.RtlGetProductInfo
@ stdcall GetProfileIntA(str str long)
@ stdcall GetProfileIntW(wstr wstr long)
@ stdcall GetProfileSectionA(str ptr long)

View File

@@ -65,3 +65,4 @@
@ stdcall GetSystemTimePreciseAsFileTime(ptr) kernel32.GetSystemTimeAsFileTime
@ stdcall TrySubmitThreadpoolCallback(ptr ptr ptr)
@ stdcall FreeLibraryWhenCallbackReturns(ptr ptr) ntdll_vista.TpCallbackUnloadDllOnCompletion
@ stdcall GetProductInfo(long long long long ptr) ntdll_vista.RtlGetProductInfo

View File

@@ -19,6 +19,7 @@ list(APPEND RTL_WINE_SOURCE
threadpool.c
)
list(APPEND RTL_WINE_SOURCE_VISTA
product.c
threadpool.c
)
set_source_files_properties(threadpool.c PROPERTIES COMPILE_DEFINITIONS __WINESRC__)

62
sdk/lib/rtl/product.c Normal file
View File

@@ -0,0 +1,62 @@
/*
* PROJECT: ReactOS runtime library (RTL)
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Implementation of RtlGetProductInfo
* COPYRIGHT: Copyright 2026 Timo Kreuzer <timo.kreuzer@reactos.org>
*/
/* INCLUDES *****************************************************************/
#include <rtl.h>
#define NDEBUG
#include <debug.h>
BOOLEAN
WINAPI
RtlGetProductInfo(
_In_ ULONG OSMajorVersion,
_In_ ULONG OSMinorVersion,
_In_ ULONG SpMajorVersion,
_In_ ULONG SpMinorVersion,
_Out_ PULONG ReturnedProductType)
{
if (ReturnedProductType == NULL)
{
return FALSE;
}
if (OSMajorVersion < 6)
{
*ReturnedProductType = PRODUCT_UNDEFINED;
return FALSE;
}
if (SharedUserData->NtProductType == NtProductWinNt)
{
if ((OSMajorVersion == 6) && (OSMinorVersion == 0))
{
*ReturnedProductType = PRODUCT_BUSINESS;
}
else
{
*ReturnedProductType = PRODUCT_PROFESSIONAL;
}
return TRUE;
}
else if (SharedUserData->NtProductType == NtProductLanManNt)
{
*ReturnedProductType = PRODUCT_ENTERPRISE_SERVER;
return TRUE;
}
else if (SharedUserData->NtProductType == NtProductServer)
{
*ReturnedProductType = PRODUCT_STANDARD_SERVER;
return TRUE;
}
*ReturnedProductType = PRODUCT_UNDEFINED;
return FALSE;
}
/* EOF */