|
|
//
// Driver Verifier Control Applet
// Copyright (c) Microsoft Corporation, 1999
//
//
// header: verify.hxx
// author: silviuc
// created: Mon Jan 04 12:34:19 1999
//
#ifndef _VERIFY_HXX_INCLUDED_
#define _VERIFY_HXX_INCLUDED_
//
// Constant:
//
// MI_SUSPECT_DRIVER_BUFFER_LENGTH
//
// Description:
//
// The maximum length of the string containing the
// driver names (according to ntos\mm\mi.h
//
#define MI_SUSPECT_DRIVER_BUFFER_LENGTH 512
//
// Constant:
//
// VRFP_MAX_NUMBER_DRIVERS
//
// Description:
//
// The maximum number of drivers we can deal with.
//
#define VRFP_MAX_NUMBER_DRIVERS 256
//
// Type:
//
// VRF_DRIVER_STATE
//
// Description:
//
// This is the type to represent the state of the driver
// from the verifier perspective. The name of the driver
// is just the file name without path therefore we have
// just a small name buffer.
//
typedef struct {
TCHAR Name [ _MAX_PATH ]; BOOL Verified; BOOL CurrentlyVerified; TCHAR Provider[ 128 ]; TCHAR Version[ 64 ];
} VRF_DRIVER_STATE, * PVRF_DRIVER_STATE;
//
// Type:
//
// VRF_VERIFIER_STATE
//
// Description:
//
// This is the type used for data transfer from/to the registry
// driver verifier settings. The `DriverInfo' and `DriverNames'
// fields are filled with pointers to internal data structures
// when VrfGetVerifierState() is called. The caller of this function
// does not have to deallocate or manage in any other way these
// areas.
//
typedef struct {
BOOL AllDriversVerified;
BOOL SpecialPoolVerification; BOOL PagedCodeVerification; BOOL AllocationFaultInjection; BOOL PoolTracking; BOOL IoVerifier; ULONG SysIoVerifierLevel;
ULONG DriverCount; TCHAR DriverNames[ MI_SUSPECT_DRIVER_BUFFER_LENGTH ]; VRF_DRIVER_STATE DriverInfo[ VRFP_MAX_NUMBER_DRIVERS ];
TCHAR AdditionalDriverNames[ MI_SUSPECT_DRIVER_BUFFER_LENGTH ];
} VRF_VERIFIER_STATE, * PVRF_VERIFIER_STATE;
//
// Type:
//
// KRN_DRIVER_STATE
//
// Description:
//
// This type reflects the per user information as it is
// maintained by the system verifier.
//
typedef struct {
TCHAR Name [ _MAX_PATH ];
ULONG Loads; ULONG Unloads;
ULONG CurrentPagedPoolAllocations; ULONG CurrentNonPagedPoolAllocations; ULONG PeakPagedPoolAllocations; ULONG PeakNonPagedPoolAllocations;
SIZE_T PagedPoolUsageInBytes; SIZE_T NonPagedPoolUsageInBytes; SIZE_T PeakPagedPoolUsageInBytes; SIZE_T PeakNonPagedPoolUsageInBytes;
} KRN_DRIVER_STATE, * PKRN_DRIVER_STATE;
//
// Type:
//
// KRN_VERIFIER_STATE
//
// Description:
//
// This type reflects the global information as it is
// maintained by the system verifier.
//
typedef struct {
ULONG Level;
BOOL SpecialPool; BOOL IrqlChecking; BOOL FaultInjection; BOOL PoolTrack; BOOL IoVerif;
ULONG RaiseIrqls; ULONG AcquireSpinLocks; ULONG SynchronizeExecutions; ULONG AllocationsAttempted;
ULONG AllocationsSucceeded; ULONG AllocationsSucceededSpecialPool; ULONG AllocationsWithNoTag;
ULONG Trims; ULONG AllocationsFailed; ULONG AllocationsFailedDeliberately;
ULONG UnTrackedPool;
ULONG DriverCount; KRN_DRIVER_STATE DriverInfo[ VRFP_MAX_NUMBER_DRIVERS ];
} KRN_VERIFIER_STATE, * PKRN_VERIFIER_STATE;
//
// array length macro
//
#define ARRAY_LENGTH( array ) ( sizeof( array ) / sizeof( array[ 0 ] ) )
//
// Verifier management functions
//
BOOL VrfGetVerifierState (
PVRF_VERIFIER_STATE VrfState);
BOOL VrfSetVerifierState (
PVRF_VERIFIER_STATE VrfState);
BOOL VrfSetVolatileFlags (
UINT uNewFlags);
BOOL VrfSetVolatileOptions(
BOOL bSpecialPool, BOOL bIrqlChecking, BOOL bFaultInjection );
BOOL VrfClearAllVerifierSettings (
);
BOOL VrfNotifyDriverSelection (
PVRF_VERIFIER_STATE VrfState, ULONG Index );
//
// Support for dynamic set of verified drivers
//
BOOL VrfVolatileAddDriver(
const WCHAR *szDriverName );
BOOL VrfVolatileRemoveDriver(
const WCHAR *szDriverName );
//
// System verifier information
//
BOOL KrnGetSystemVerifierState (
PKRN_VERIFIER_STATE KrnState);
//
// Command line execution
//
DWORD VrfExecuteCommandLine (
int Count, LPTSTR Args[]);
//
// Miscellaneous functions
//
void __cdecl VrfError ( // defined in modspage.cxx
LPTSTR fmt, ...);
void __cdecl VrfErrorResourceFormat( // defined in modspage.cxx
UINT uIdResourceFormat, ... );
//////////////////////////////////////////////////////////////////////
/////////////////////////////////////////// strings operations support
//////////////////////////////////////////////////////////////////////
BOOL GetStringFromResources(
UINT uIdResource, TCHAR *strBuffer, int nBufferLength );
void VrfPrintStringFromResources(
UINT uIdResource);
BOOL VrfOuputStringFromResources(
UINT uIdResource, BOOL bConvertToOEM, FILE *file ); // returns FALSE on a _fputts error (disk full)
void VrfPrintNarrowStringOEMFormat(
char *szText );
BOOL VrfOutputWideStringOEMFormat(
LPTSTR strText, BOOL bAppendNewLine, FILE *file ); // returns FALSE on a fprintf of fputs error (disk full)
BOOL __cdecl VrfFTPrintf( BOOL bConvertToOEM, FILE *file, LPTSTR fmt, ...); // returns FALSE on a _ftprintf error (disk full)
BOOL __cdecl VrfFTPrintfResourceFormat( BOOL bConvertToOEM, FILE *file, UINT uIdResFmtString, ...); // returns FALSE on a _ftprintf error (disk full)
void __cdecl VrfTPrintfResourceFormat( UINT uIdResFmtString, ...);
void VrfPutTS( LPTSTR strText );
//
// Exit codes for cmd line execution
//
#define EXIT_CODE_SUCCESS 0
#define EXIT_CODE_ERROR 1
#define EXIT_CODE_REBOOT_NEEDED 2
//////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////// Global Data
//////////////////////////////////////////////////////////////////////
//
// Command line / GUI
//
extern BOOL g_bCommandLineMode;
//
// OS version and build number information
//
extern OSVERSIONINFO g_OsVersion;
// ...
#endif // #ifndef _VERIFY_HXX_INCLUDED_
//
// end of header: verify.hxx
//
|