|
|
/*++ BUILD Version: 0001 // Increment this if a change has global effects
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
verifier.h
Abstract:
Include file for application verifier routines that are callable by user mode code.
Author:
Silviu Calinoiu (SilviuC) 23-Jan-2002
Environment:
These routines are callable only when application verifier is enabled for the calling process.
Revision History:
--*/
#ifndef _AVRF_ #define _AVRF_
// // VERIFIER SDK // // This header contains the declarations of all APIs exported by // base verifier (verifier.dll). It is not expected that normal // applications will link statically verifier.dll. The typical // scenario for a verifier (let's say COM verifier) is to dynamically // discover if application verifier is enabled (check if // FLG_APPLICATION_VERIFIER global flag is set) and then load verifier.dll // and call GetProcAddress() to get all the entry points it is interested in. // This is the reason all exports have also a typedef for the function pointer // so that it is convenient to get this entry points at runtime. //
// // Runtime query/set functions for verifier flags. //
typedef NTSTATUS (* VERIFIER_QUERY_RUNTIME_FLAGS_FUNCTION) ( OUT PLOGICAL VerifierEnabled, OUT PULONG VerifierFlags );
typedef NTSTATUS (* VERIFIER_SET_RUNTIME_FLAGS_FUNCTION) ( IN ULONG VerifierFlags );
NTSTATUS VerifierQueryRuntimeFlags ( OUT PLOGICAL VerifierEnabled, OUT PULONG VerifierFlags );
NTSTATUS VerifierSetRuntimeFlags ( IN ULONG VerifierFlags );
// // RPC read-only page heap create/destroy APIs. //
typedef PVOID (* VERIFIER_CREATE_RPC_PAGE_HEAP_FUNCTION) ( IN ULONG Flags, IN PVOID HeapBase OPTIONAL, IN SIZE_T ReserveSize OPTIONAL, IN SIZE_T CommitSize OPTIONAL, IN PVOID Lock OPTIONAL, IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL );
typedef PVOID (* VERIFIER_DESTROY_RPC_PAGE_HEAP_FUNCTION) ( IN PVOID HeapHandle );
PVOID VerifierCreateRpcPageHeap ( IN ULONG Flags, IN PVOID HeapBase OPTIONAL, IN SIZE_T ReserveSize OPTIONAL, IN SIZE_T CommitSize OPTIONAL, IN PVOID Lock OPTIONAL, IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL );
PVOID VerifierDestroyRpcPageHeap ( IN PVOID HeapHandle );
// // Fault injection management //
#define FAULT_INJECTION_CLASS_WAIT_APIS 0 #define FAULT_INJECTION_CLASS_HEAP_ALLOC_APIS 1 #define FAULT_INJECTION_CLASS_VIRTUAL_ALLOC_APIS 2 #define FAULT_INJECTION_CLASS_REGISTRY_APIS 3 #define FAULT_INJECTION_CLASS_FILE_APIS 4 #define FAULT_INJECTION_CLASS_EVENT_APIS 5 #define FAULT_INJECTION_CLASS_MAP_VIEW_APIS 6 #define FAULT_INJECTION_CLASS_OLE_ALLOC_APIS 7 #define FAULT_INJECTION_INVALID_CLASS 8
typedef VOID (* VERIFIER_SET_FAULT_INJECTION_PROBABILITY) ( ULONG Class, ULONG Probability );
VOID VerifierSetFaultInjectionProbability ( ULONG Class, ULONG Probability );
typedef ULONG (* VERIFIER_ENABLE_FAULT_INJECTION_TARGET_RANGE_FUNCTION) ( IN PVOID StartAddress, IN PVOID EndAddress ); typedef VOID (* VERIFIER_DISABLE_FAULT_INJECTION_TARGET_RANGE_FUNCTION) ( IN ULONG RangeIndex ); typedef ULONG (* VERIFIER_ENABLE_FAULT_INJECTION_EXCLUSION_RANGE_FUNCTION) ( IN PVOID StartAddress, IN PVOID EndAddress );
typedef VOID (* VERIFIER_DISABLE_FAULT_INJECTION_EXCLUSION_RANGE_FUNCTION) ( IN ULONG RangeIndex ); ULONG VerifierEnableFaultInjectionTargetRange ( PVOID StartAddress, PVOID EndAddress );
VOID VerifierDisableFaultInjectionTargetRange ( ULONG RangeIndex );
ULONG VerifierEnableFaultInjectionExclusionRange ( PVOID StartAddress, PVOID EndAddress );
VOID VerifierDisableFaultInjectionExclusionRange ( ULONG RangeIndex );
// // DLL related information //
typedef LOGICAL (* VERIFIER_IS_DLL_ENTRY_ACTIVE_FUNCTION) ( OUT PVOID * Reserved ); LOGICAL VerifierIsDllEntryActive ( OUT PVOID * Reserved );
// // Locks counter //
typedef LOGICAL (* VERIFIER_IS_CURRENT_THREAD_HOLDING_LOCKS_FUNCTION) ( VOID );
LOGICAL VerifierIsCurrentThreadHoldingLocks ( VOID ); // // Free memory notifications //
typedef NTSTATUS (* VERIFIER_FREE_MEMORY_CALLBACK) ( PVOID Address, SIZE_T Size, PVOID Context );
typedef NTSTATUS (* VERIFIER_ADD_FREE_MEMORY_CALLBACK_FUNCTION) ( VERIFIER_FREE_MEMORY_CALLBACK Callback );
typedef NTSTATUS (* VERIFIER_DELETE_FREE_MEMORY_CALLBACK_FUNCTION) ( VERIFIER_FREE_MEMORY_CALLBACK Callback );
NTSTATUS VerifierAddFreeMemoryCallback ( VERIFIER_FREE_MEMORY_CALLBACK Callback );
NTSTATUS VerifierDeleteFreeMemoryCallback ( VERIFIER_FREE_MEMORY_CALLBACK Callback );
// // Verifier stops and logging. //
typedef NTSTATUS (* VERIFIER_LOG_MESSAGE_FUNCTION) ( PCHAR Message, ... );
typedef VOID (* VERIFIER_STOP_MESSAGE_FUNCTION) ( ULONG_PTR Code, PCHAR Message, ULONG_PTR Param1, PCHAR Description1, ULONG_PTR Param2, PCHAR Description2, ULONG_PTR Param3, PCHAR Description3, ULONG_PTR Param4, PCHAR Description4 );
NTSTATUS VerifierLogMessage ( PCHAR Message, ... );
VOID VerifierStopMessage ( ULONG_PTR Code, PCHAR Message, ULONG_PTR Param1, PCHAR Description1, ULONG_PTR Param2, PCHAR Description2, ULONG_PTR Param3, PCHAR Description3, ULONG_PTR Param4, PCHAR Description4 );
#endif // _AVRF_
|