PFMONP.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:6k
源码类别:
Windows编程
开发平台:
Visual C++
- /*++
- Copyright (c) 1995-1997 Microsoft Corporation
- Module Name:
- instaler.h
- Abstract:
- Main include file for the INSTALER application.
- Author:
- Steve Wood (stevewo) 09-Aug-1994
- Revision History:
- --*/
- #ifdef RC_INVOKED
- #include <windows.h>
- #else
- #include <windows.h>
- #include <imagehlp.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "errormsg.h"
- typedef struct _PSAPI_WS_WATCH_INFORMATION {
- LPVOID FaultingPc;
- LPVOID FaultingVa;
- } PSAPI_WS_WATCH_INFORMATION, *PPSAPI_WS_WATCH_INFORMATION;
- BOOL
- WINAPI
- GetWsChanges(
- HANDLE hProcess,
- PPSAPI_WS_WATCH_INFORMATION lpWatchInfo,
- DWORD cb
- );
- BOOL
- WINAPI
- InitializeProcessForWsWatch(
- HANDLE hProcess
- );
- // Doubly-linked list manipulation routines. Implemented as macros
- // but logically these are procedures.
- //
- //
- // VOID
- // InitializeListHead(
- // PLIST_ENTRY ListHead
- // );
- //
- #define InitializeListHead(ListHead) (
- (ListHead)->Flink = (ListHead)->Blink = (ListHead))
- //
- // BOOL
- // IsListEmpty(
- // PLIST_ENTRY ListHead
- // );
- //
- #define IsListEmpty(ListHead)
- ((ListHead)->Flink == (ListHead))
- //
- // PLIST_ENTRY
- // RemoveHeadList(
- // PLIST_ENTRY ListHead
- // );
- //
- #define RemoveHeadList(ListHead)
- (ListHead)->Flink;
- {RemoveEntryList((ListHead)->Flink)}
- //
- // PLIST_ENTRY
- // RemoveTailList(
- // PLIST_ENTRY ListHead
- // );
- //
- #define RemoveTailList(ListHead)
- (ListHead)->Blink;
- {RemoveEntryList((ListHead)->Blink)}
- //
- // VOID
- // RemoveEntryList(
- // PLIST_ENTRY Entry
- // );
- //
- #define RemoveEntryList(Entry) {
- PLIST_ENTRY _EX_Blink;
- PLIST_ENTRY _EX_Flink;
- _EX_Flink = (Entry)->Flink;
- _EX_Blink = (Entry)->Blink;
- _EX_Blink->Flink = _EX_Flink;
- _EX_Flink->Blink = _EX_Blink;
- }
- //
- // VOID
- // InsertTailList(
- // PLIST_ENTRY ListHead,
- // PLIST_ENTRY Entry
- // );
- //
- #define InsertTailList(ListHead,Entry) {
- PLIST_ENTRY _EX_Blink;
- PLIST_ENTRY _EX_ListHead;
- _EX_ListHead = (ListHead);
- _EX_Blink = _EX_ListHead->Blink;
- (Entry)->Flink = _EX_ListHead;
- (Entry)->Blink = _EX_Blink;
- _EX_Blink->Flink = (Entry);
- _EX_ListHead->Blink = (Entry);
- }
- //
- // VOID
- // InsertHeadList(
- // PLIST_ENTRY ListHead,
- // PLIST_ENTRY Entry
- // );
- //
- #define InsertHeadList(ListHead,Entry) {
- PLIST_ENTRY _EX_Flink;
- PLIST_ENTRY _EX_ListHead;
- _EX_ListHead = (ListHead);
- _EX_Flink = _EX_ListHead->Flink;
- (Entry)->Flink = _EX_Flink;
- (Entry)->Blink = _EX_ListHead;
- _EX_Flink->Blink = (Entry);
- _EX_ListHead->Flink = (Entry);
- }
- //
- // Data structures and entry points in init.c
- //
- DWORD TotalSoftFaults;
- DWORD TotalHardFaults;
- DWORD TotalCodeFaults;
- DWORD TotalDataFaults;
- DWORD TotalKernelFaults;
- DWORD TotalUserFaults;
- BOOL fCodeOnly;
- BOOL fHardOnly;
- VOID
- ProcessPfMonData(
- VOID
- );
- //
- // Data structures and entry points in init.c
- //
- BOOL fVerbose;
- BOOL fLogOnly;
- BOOL fKernelOnly; //flag for displaying kernel pagefaults
- BOOL fKernel; //flag for displaying kernel pagefaults
- BOOL fDatabase; //flag for outputing information in a
- //tab-delimited database format
- FILE *LogFile;
- BOOL
- InitializePfmon(
- VOID
- );
- BOOL
- LoadApplicationForDebug(
- LPSTR CommandLine
- );
- BOOL
- AttachApplicationForDebug(
- DWORD Pid
- );
- HANDLE hProcess;
- //
- // Data structures and entry points in error.c
- //
- HANDLE PfmonModuleHandle;
- VOID
- CDECL
- DeclareError(
- UINT ErrorCode,
- UINT SupplementalErrorCode,
- ...
- );
- //
- // Data structures and entry points in DEBUG.C
- //
- VOID
- DebugEventLoop( VOID );
- //
- // Data structures and entry points in process.c
- //
- typedef struct _PROCESS_INFO {
- LIST_ENTRY Entry;
- LIST_ENTRY ThreadListHead;
- DWORD Id;
- HANDLE Handle;
- } PROCESS_INFO, *PPROCESS_INFO;
- typedef struct _THREAD_INFO {
- LIST_ENTRY Entry;
- DWORD Id;
- HANDLE Handle;
- PVOID StartAddress;
- } THREAD_INFO, *PTHREAD_INFO;
- LIST_ENTRY ProcessListHead;
- BOOL
- AddProcess(
- LPDEBUG_EVENT DebugEvent,
- PPROCESS_INFO *ReturnedProcess
- );
- BOOL
- DeleteProcess(
- PPROCESS_INFO Process
- );
- BOOL
- AddThread(
- LPDEBUG_EVENT DebugEvent,
- PPROCESS_INFO Process,
- PTHREAD_INFO *ReturnedThread
- );
- BOOL
- DeleteThread(
- PPROCESS_INFO Process,
- PTHREAD_INFO Thread
- );
- PPROCESS_INFO
- FindProcessById(
- ULONG Id
- );
- BOOL
- FindProcessAndThreadForEvent(
- LPDEBUG_EVENT DebugEvent,
- PPROCESS_INFO *ReturnedProcess,
- PTHREAD_INFO *ReturnedThread
- );
- //
- // Data structures and entry points in module.c
- //
- typedef struct _MODULE_INFO {
- LIST_ENTRY Entry;
- LPVOID BaseAddress;
- DWORD VirtualSize;
- DWORD NumberFaultedSoftVas;
- DWORD NumberFaultedHardVas;
- DWORD NumberCausedFaults;
- HANDLE Handle;
- PIMAGE_DEBUG_INFORMATION DebugInfo;
- } MODULE_INFO, *PMODULE_INFO;
- LPSTR SymbolSearchPath;
- LIST_ENTRY ModuleListHead;
- BOOL
- LazyLoad(
- LPVOID Address
- );
- // hack PRTL_PROCESS_MODULES LazyModuleInformation;
- BOOL
- AddModule(
- LPDEBUG_EVENT DebugEvent
- );
- BOOL
- DeleteModule(
- PMODULE_INFO Module
- );
- PMODULE_INFO
- FindModuleContainingAddress(
- LPVOID Address
- );
- VOID
- SetSymbolSearchPath( );
- LONG
- AddKernelDrivers( );
- #ifdef _ALPHA_
- #define CONTEXT_TO_PROGRAM_COUNTER(Context) ((Context)->Fir)
- #define BPSKIP 4
- #endif // _ALPHA_
- #ifdef _MIPS_
- #define CONTEXT_TO_PROGRAM_COUNTER(Context) ((Context)->Fir)
- #define BPSKIP 4
- #endif // _MIPS_
- #ifdef _PPC_
- #define CONTEXT_TO_PROGRAM_COUNTER(Context) ((Context)->Iar)
- #define BPSKIP 4
- #endif // _PPC_
- #ifdef _X86_
- #define CONTEXT_TO_PROGRAM_COUNTER(Context) ((Context)->Eip)
- #define BPSKIP 1
- #endif // _X86_
- #endif // defined( RC_INVOKED )