kernel32: Retrieve the system info from ntdll on startup.
This commit is contained in:
parent
58176bba10
commit
62f22dd4e3
|
@ -39,9 +39,10 @@
|
|||
#include "winnt.h"
|
||||
#include "winternl.h"
|
||||
#include "psapi.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "wine/debug.h"
|
||||
#include "ddk/wdm.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "kernel_private.h"
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(reg);
|
||||
|
||||
|
@ -104,13 +105,11 @@ VOID WINAPI GetSystemInfo(
|
|||
LPSYSTEM_INFO si /* [out] Destination for system information, may not be NULL */)
|
||||
{
|
||||
NTSTATUS nts;
|
||||
SYSTEM_BASIC_INFORMATION sbi;
|
||||
SYSTEM_CPU_INFORMATION sci;
|
||||
|
||||
TRACE("si=0x%p\n", si);
|
||||
|
||||
if ((nts = NtQuerySystemInformation( SystemBasicInformation, &sbi, sizeof(sbi), NULL )) != STATUS_SUCCESS ||
|
||||
(nts = NtQuerySystemInformation( SystemCpuInformation, &sci, sizeof(sci), NULL )) != STATUS_SUCCESS)
|
||||
if ((nts = NtQuerySystemInformation( SystemCpuInformation, &sci, sizeof(sci), NULL )) != STATUS_SUCCESS)
|
||||
{
|
||||
SetLastError(RtlNtStatusToDosError(nts));
|
||||
return;
|
||||
|
@ -118,11 +117,11 @@ VOID WINAPI GetSystemInfo(
|
|||
|
||||
si->u.s.wProcessorArchitecture = sci.Architecture;
|
||||
si->u.s.wReserved = 0;
|
||||
si->dwPageSize = sbi.PageSize;
|
||||
si->lpMinimumApplicationAddress = sbi.LowestUserAddress;
|
||||
si->lpMaximumApplicationAddress = sbi.HighestUserAddress;
|
||||
si->dwActiveProcessorMask = sbi.ActiveProcessorsAffinityMask;
|
||||
si->dwNumberOfProcessors = sbi.NumberOfProcessors;
|
||||
si->dwPageSize = system_info.PageSize;
|
||||
si->lpMinimumApplicationAddress = system_info.LowestUserAddress;
|
||||
si->lpMaximumApplicationAddress = system_info.HighestUserAddress;
|
||||
si->dwActiveProcessorMask = system_info.ActiveProcessorsAffinityMask;
|
||||
si->dwNumberOfProcessors = system_info.NumberOfProcessors;
|
||||
|
||||
switch (sci.Architecture)
|
||||
{
|
||||
|
@ -162,7 +161,7 @@ VOID WINAPI GetSystemInfo(
|
|||
FIXME("Unknown processor architecture %x\n", sci.Architecture);
|
||||
si->dwProcessorType = 0;
|
||||
}
|
||||
si->dwAllocationGranularity = sbi.AllocationGranularity;
|
||||
si->dwAllocationGranularity = system_info.AllocationGranularity;
|
||||
si->wProcessorLevel = sci.Level;
|
||||
si->wProcessorRevision = sci.Revision;
|
||||
}
|
||||
|
|
|
@ -53,6 +53,7 @@ static inline obj_handle_t console_handle_unmap(HANDLE h)
|
|||
#define KERNEL32_CONSOLE_SHELL ((HANDLE)2)
|
||||
|
||||
extern HMODULE kernel32_handle DECLSPEC_HIDDEN;
|
||||
extern SYSTEM_BASIC_INFORMATION system_info DECLSPEC_HIDDEN;
|
||||
|
||||
extern const WCHAR *DIR_Windows DECLSPEC_HIDDEN;
|
||||
extern const WCHAR *DIR_System DECLSPEC_HIDDEN;
|
||||
|
|
|
@ -87,6 +87,7 @@ static BOOL is_wow64;
|
|||
static const int is_win64 = (sizeof(void *) > sizeof(int));
|
||||
|
||||
HMODULE kernel32_handle = 0;
|
||||
SYSTEM_BASIC_INFORMATION system_info = { 0 };
|
||||
|
||||
const WCHAR *DIR_Windows = NULL;
|
||||
const WCHAR *DIR_System = NULL;
|
||||
|
@ -1146,6 +1147,7 @@ void CDECL __wine_kernel_init(void)
|
|||
setbuf(stderr,NULL);
|
||||
kernel32_handle = GetModuleHandleW(kernel32W);
|
||||
IsWow64Process( GetCurrentProcess(), &is_wow64 );
|
||||
NtQuerySystemInformation( SystemBasicInformation, &system_info, sizeof(system_info), NULL );
|
||||
|
||||
LOCALE_Init();
|
||||
|
||||
|
|
|
@ -48,8 +48,6 @@
|
|||
WINE_DECLARE_DEBUG_CHANNEL(seh);
|
||||
WINE_DECLARE_DEBUG_CHANNEL(file);
|
||||
|
||||
static unsigned int page_size;
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* VirtualAlloc (KERNEL32.@)
|
||||
|
@ -648,19 +646,17 @@ BOOL WINAPI IsBadReadPtr( LPCVOID ptr, UINT size )
|
|||
{
|
||||
if (!size) return FALSE; /* handle 0 size case w/o reference */
|
||||
if (!ptr) return TRUE;
|
||||
|
||||
if (!page_size) page_size = getpagesize();
|
||||
__TRY
|
||||
{
|
||||
volatile const char *p = ptr;
|
||||
char dummy __attribute__((unused));
|
||||
UINT count = size;
|
||||
|
||||
while (count > page_size)
|
||||
while (count > system_info.PageSize)
|
||||
{
|
||||
dummy = *p;
|
||||
p += page_size;
|
||||
count -= page_size;
|
||||
p += system_info.PageSize;
|
||||
count -= system_info.PageSize;
|
||||
}
|
||||
dummy = p[0];
|
||||
dummy = p[count - 1];
|
||||
|
@ -692,18 +688,16 @@ BOOL WINAPI IsBadWritePtr( LPVOID ptr, UINT size )
|
|||
{
|
||||
if (!size) return FALSE; /* handle 0 size case w/o reference */
|
||||
if (!ptr) return TRUE;
|
||||
|
||||
if (!page_size) page_size = getpagesize();
|
||||
__TRY
|
||||
{
|
||||
volatile char *p = ptr;
|
||||
UINT count = size;
|
||||
|
||||
while (count > page_size)
|
||||
while (count > system_info.PageSize)
|
||||
{
|
||||
*p |= 0;
|
||||
p += page_size;
|
||||
count -= page_size;
|
||||
p += system_info.PageSize;
|
||||
count -= system_info.PageSize;
|
||||
}
|
||||
p[0] |= 0;
|
||||
p[count - 1] |= 0;
|
||||
|
|
Loading…
Reference in New Issue