mirror of https://github.com/UMSKT/xpmgr.git
162 lines
3.1 KiB
C
162 lines
3.1 KiB
C
/*++ BUILD Version: 0011 // Increment this if a change has global effects
|
|
|
|
Copyright (c) 2004 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
avrfsdk.h
|
|
|
|
Abstract:
|
|
|
|
This header file defines Application Verifier Exposed Interfaces
|
|
|
|
Author:
|
|
|
|
Ivan Brugiolo (ivanbrug)
|
|
|
|
|
|
Revision History:
|
|
|
|
Creation: 15-Mar-2004
|
|
|
|
--*/
|
|
|
|
#ifndef _AVRFSDK_
|
|
#define _AVRFSDK_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
//
|
|
// tool helper function
|
|
//
|
|
|
|
#define AVRF_MAX_TRACES 32
|
|
|
|
typedef struct _AVRF_BACKTRACE_INFORMATION {
|
|
ULONG Depth;
|
|
ULONG Index;
|
|
ULONG64 ReturnAddresses[AVRF_MAX_TRACES];
|
|
} AVRF_BACKTRACE_INFORMATION, *PAVRF_BACKTRACE_INFORMATION;
|
|
|
|
enum eUserAllocationState {
|
|
AllocationStateUnknown,
|
|
AllocationStateBusy,
|
|
AllocationStateFree
|
|
};
|
|
|
|
enum eHeapAllocationState {
|
|
HeapFullPageHeap = 0x40000000,
|
|
HeapMetadata = 0x80000000,
|
|
HeapStateMask = 0xFFFF0000,
|
|
};
|
|
|
|
enum eHeapEnumerationLevel {
|
|
HeapEnumerationEverything = 0x0,
|
|
// reserved codes from 0x1 to oxFFFFFFFE
|
|
HeapEnumerationStop = 0xFFFFFFFF,
|
|
};
|
|
|
|
typedef struct _AVRF_HEAP_ALLOCATION {
|
|
ULONG64 HeapHandle;
|
|
ULONG64 UserAllocation;
|
|
ULONG64 UserAllocationSize;
|
|
ULONG64 Allocation;
|
|
ULONG64 AllocationSize;
|
|
ULONG UserAllocationState;
|
|
ULONG HeapState;
|
|
ULONG64 HeapContext;
|
|
PAVRF_BACKTRACE_INFORMATION BackTraceInformation;
|
|
} AVRF_HEAP_ALLOCATION, *PAVRF_HEAP_ALLOCATION;
|
|
|
|
|
|
enum eHANDLE_TRACE_OPERATIONS {
|
|
OperationDbUnused,
|
|
OperationDbOPEN,
|
|
OperationDbCLOSE,
|
|
OperationDbBADREF
|
|
};
|
|
|
|
typedef struct _AVRF_HANDLE_OPERATION {
|
|
ULONG64 Handle;
|
|
ULONG ProcessId;
|
|
ULONG ThreadId;
|
|
ULONG OperationType;
|
|
ULONG Spare0;
|
|
AVRF_BACKTRACE_INFORMATION BackTraceInformation;
|
|
} AVRF_HANDLE_OPERATION, * PAVRF_HANDLE_OPERATION;
|
|
|
|
|
|
enum eAvrfResourceTypes {
|
|
AvrfResourceHeapAllocation,
|
|
AvrfResourceHandleTrace,
|
|
AvrfResourceMax
|
|
};
|
|
|
|
//
|
|
// generic prototype
|
|
//
|
|
|
|
typedef ULONG
|
|
(NTAPI * AVRF_RESOURCE_ENUMERATE_CALLBACK)(
|
|
PVOID ResourceDescription,
|
|
PVOID EnumerationContext,
|
|
PULONG EnumerationLevel
|
|
);
|
|
|
|
//
|
|
// Heap Allocations Specialized Prototype
|
|
//
|
|
|
|
typedef ULONG
|
|
(NTAPI * AVRF_HEAPALLOCATION_ENUMERATE_CALLBACK)(
|
|
PAVRF_HEAP_ALLOCATION HeapAllocation,
|
|
PVOID EnumerationContext,
|
|
PULONG EnumerationLevel
|
|
);
|
|
|
|
//
|
|
// Handle Tracing Specialized Prototype
|
|
//
|
|
|
|
typedef ULONG
|
|
(NTAPI * AVRF_HANDLEOPERATION_ENUMERATE_CALLBACK)(
|
|
PAVRF_HANDLE_OPERATION HandleOperation,
|
|
PVOID EnumerationContext,
|
|
PULONG EnumerationLevel
|
|
);
|
|
|
|
//
|
|
// flags for AvrfResourceHeapAllocation
|
|
//
|
|
|
|
#define AVRF_ENUM_RESOURCES_FLAGS_SUSPEND 0x00000001
|
|
#define AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES 0x00000002
|
|
|
|
ULONG NTAPI
|
|
VerifierEnumerateResource(
|
|
HANDLE Process,
|
|
ULONG Flags,
|
|
ULONG ResourceType,
|
|
AVRF_RESOURCE_ENUMERATE_CALLBACK ResourceCallback,
|
|
PVOID EnumerationContext
|
|
);
|
|
|
|
//
|
|
// API to find out if per user verifier settings are enabled
|
|
//
|
|
|
|
BOOL NTAPI
|
|
VerifierIsPerUserSettingsEnabled(
|
|
VOID
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /*AVRFSDK*/
|
|
|