//#pragma title( "QProcess.cpp - Query type of processor on machine" ) /* Copyright (c) 1995-1998, Mission Critical Software, Inc. All rights reserved. =============================================================================== Module - QProcess.cpp System - Common Author - Rich Denham Created - 1996-11-21 Description - Query type of processor on machine Updates - =============================================================================== */ #include #ifdef USE_STDAFX # include "stdafx.h" #else # include #endif #include "Common.hpp" #include "ErrDct.hpp" #include "UString.hpp" #include "TReg.hpp" #include "QProcess.hpp" extern TErrorDct err; #define REGKEY_ARCHITECTURE TEXT("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment") #define REGVAL_ARCHITECTURE TEXT("PROCESSOR_ARCHITECTURE") // Determine processor of machine ProcessorType // ret-processor type QProcessor( TCHAR const * machineName // in -Machine name ) { ProcessorType processor=PROCESSOR_IS_UNKNOWN; DWORD rcOs; // OS return code TRegKey regMachine; // Registry object for target machine TRegKey regEnviron; // Registry object for selected key TCHAR strEnviron[32]; // Selected value rcOs = regMachine.Connect( HKEY_LOCAL_MACHINE, machineName ); if ( rcOs ) { err.SysMsgWrite( ErrW, rcOs, DCT_MSG_QPROCESSOR_REG_CONNECT_FAILED_SD, machineName, rcOs ); } else { rcOs = regEnviron.Open( REGKEY_ARCHITECTURE, ®Machine ); if ( rcOs ) { err.SysMsgWrite( ErrW, rcOs, DCT_MSG_QPROCESSOR_REGKEY_OPEN_FAILED_SSD, machineName, REGKEY_ARCHITECTURE, rcOs ); } else { rcOs = regEnviron.ValueGetStr( REGVAL_ARCHITECTURE, strEnviron, sizeof strEnviron ); if ( rcOs ) { err.SysMsgWrite( ErrW, rcOs, DCT_MSG_QPROCESSOR_REGKEY_OPEN_FAILED_SSD, machineName, REGKEY_ARCHITECTURE, REGVAL_ARCHITECTURE, rcOs ); } else { if ( !UStrICmp( strEnviron, TEXT("x86") ) ) { processor = PROCESSOR_IS_INTEL; } else if ( !UStrICmp( strEnviron, TEXT("ALPHA") ) ) { processor = PROCESSOR_IS_ALPHA; } else { err.MsgWrite( ErrW,DCT_MSG_QPROCESSOR_UNRECOGNIZED_VALUE_SSSS, machineName, REGKEY_ARCHITECTURE, REGVAL_ARCHITECTURE, strEnviron ); } } regEnviron.Close(); } regMachine.Close(); } return processor; } // QProcess.cpp - end of file