windows-nt/Source/XPSP1/NT/sdktools/verifier/vglobal.cpp
2020-09-26 16:20:57 +08:00

247 lines
4.3 KiB
C++

//
// Driver Verifier UI
// Copyright (c) Microsoft Corporation, 1999
//
//
//
// module: VGlobal.cpp
// author: DMihai
// created: 11/1/00
//
// Description
//
#include "stdafx.h"
#include "verifier.h"
#include "vglobal.h"
#include "VrfUtil.h"
//
// Help file name
//
TCHAR g_szVerifierHelpFile[] = _T( "verifier.hlp" );
//
// Application name ("Driver Verifier Manager")
//
CString g_strAppName;
//
// Exe module handle - used for loading resources
//
HMODULE g_hProgramModule;
//
// GUI mode or command line mode?
//
BOOL g_bCommandLineMode = FALSE;
//
// Brush used to fill out the background of our steps lists
//
HBRUSH g_hDialogColorBrush = NULL;
//
// Path to %windir%\system32\drivers
//
CString g_strSystemDir;
//
// Path to %windir%\system32\drivers
//
CString g_strDriversDir;
//
// Initial current directory
//
CString g_strInitialCurrentDirectory;
//
// Filled out by CryptCATAdminAcquireContext
//
HCATADMIN g_hCatAdmin = NULL;
//
// Highest user address - used to filter out user-mode stuff
// returned by NtQuerySystemInformation ( SystemModuleInformation )
//
PVOID g_pHighestUserAddress;
//
// Did we enable the debugprivilege already?
//
BOOL g_bPrivegeEnabled = FALSE;
//
// Need to reboot ?
//
BOOL g_bSettingsSaved = FALSE;
//
// Dummy text used to insert an item in a list control with checkboxes
//
TCHAR g_szVoidText[] = _T( "" );
//
// New registry settings
//
CVerifierSettings g_NewVerifierSettings;
//
// Are all drivers verified? (loaded from the registry)
//
BOOL g_bAllDriversVerified;
//
// Drivers to be verified names (loaded from the registry)
// We have data in this array only if g_bAllDriversVerified == FALSE.
//
CStringArray g_astrVerifyDriverNamesRegistry;
//
// Verifier flags (loaded from the registry)
//
DWORD g_dwVerifierFlagsRegistry;
////////////////////////////////////////////////////////////////
BOOL VerifInitalizeGlobalData( VOID )
{
BOOL bSuccess;
LPTSTR szDirectory;
ULONG uCharacters;
MEMORYSTATUSEX MemoryStatusEx;
//
// Exe module handle - used for loading resources
//
g_hProgramModule = GetModuleHandle( NULL );
bSuccess = FALSE;
//
// Load the app name from the resources
//
TRY
{
bSuccess = VrfLoadString( IDS_APPTITLE,
g_strAppName );
if( TRUE != bSuccess )
{
VrfErrorResourceFormat( IDS_CANNOT_LOAD_APP_TITLE );
}
}
CATCH( CMemoryException, pMemException )
{
VrfErrorResourceFormat( IDS_NOT_ENOUGH_MEMORY );
}
END_CATCH
if( TRUE != bSuccess )
{
goto Done;
}
//
// Save the %windir%\system32 and %windir%\system32\drivers
// paths in some global variables
//
szDirectory = g_strSystemDir.GetBuffer( MAX_PATH );
if( NULL == szDirectory )
{
VrfErrorResourceFormat( IDS_NOT_ENOUGH_MEMORY );
goto Done;
}
uCharacters = GetSystemDirectory( szDirectory,
MAX_PATH );
g_strSystemDir.ReleaseBuffer();
if( uCharacters == 0 || uCharacters >= MAX_PATH )
{
VrfErrorResourceFormat( IDS_CANNOT_GET_SYSTEM_DIRECTORY );
bSuccess = FALSE;
goto Done;
}
g_strDriversDir = g_strSystemDir + "\\drivers" ;
//
// Save the initial current directory
//
szDirectory = g_strInitialCurrentDirectory.GetBuffer( MAX_PATH );
if( NULL == szDirectory )
{
VrfErrorResourceFormat( IDS_NOT_ENOUGH_MEMORY );
goto Done;
}
uCharacters = GetCurrentDirectory( MAX_PATH,
szDirectory );
g_strInitialCurrentDirectory.ReleaseBuffer();
if( uCharacters == 0 || uCharacters >= MAX_PATH )
{
VrfErrorResourceFormat( IDS_CANNOT_GET_CURRENT_DIRECTORY );
bSuccess = FALSE;
goto Done;
}
//
// We need the highest user-mode address to filter out user-mode stuff
// returned by NtQuerySystemInformation ( SystemModuleInformation )
//
ZeroMemory( &MemoryStatusEx,
sizeof( MemoryStatusEx ) );
MemoryStatusEx.dwLength = sizeof( MemoryStatusEx );
bSuccess = GlobalMemoryStatusEx( &MemoryStatusEx );
if( TRUE != bSuccess )
{
goto Done;
}
g_pHighestUserAddress = (PVOID) MemoryStatusEx.ullTotalVirtual;
Done:
return bSuccess;
}