wbemprox: Add helpers to retrieve the system directory and OS architecture.

This commit is contained in:
Hans Leidekker 2012-09-18 13:11:59 +02:00 committed by Alexandre Julliard
parent d8d6821cd4
commit 381d30ac17
1 changed files with 24 additions and 18 deletions

View File

@ -831,31 +831,37 @@ static void fill_processor( struct table *table )
table->num_rows = count;
}
static const WCHAR *get_osarchitecture(void)
{
SYSTEM_INFO info;
GetNativeSystemInfo( &info );
if (info.u.s.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) return os_64bitW;
return os_32bitW;
}
static WCHAR *get_systemdirectory(void)
{
void *redir;
WCHAR *ret;
if (!(ret = heap_alloc( MAX_PATH * sizeof(WCHAR) ))) return NULL;
Wow64DisableWow64FsRedirection( &redir );
GetSystemDirectoryW( ret, MAX_PATH );
Wow64RevertWow64FsRedirection( redir );
return ret;
}
static void fill_os( struct table *table )
{
struct record_operatingsystem *rec;
WCHAR path[MAX_PATH];
SYSTEM_INFO info;
void *redir;
if (!(table->data = heap_alloc( sizeof(*rec) ))) return;
rec = (struct record_operatingsystem *)table->data;
rec->caption = os_captionW;
rec->csdversion = os_csdversionW;
GetNativeSystemInfo( &info );
if (info.u.s.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
rec->osarchitecture = os_64bitW;
else
rec->osarchitecture = os_32bitW;
rec->oslanguage = MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US );
Wow64DisableWow64FsRedirection( &redir );
GetSystemDirectoryW( path, MAX_PATH );
Wow64RevertWow64FsRedirection( redir );
rec->systemdirectory = heap_strdupW( path );
rec->caption = os_captionW;
rec->csdversion = os_csdversionW;
rec->osarchitecture = get_osarchitecture();
rec->oslanguage = MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US );
rec->systemdirectory = get_systemdirectory();
TRACE("created 1 row\n");
table->num_rows = 1;