|
|
/*++
Copyright (C) Microsoft Corporation, 1990 - 2000 All rights reserved.
Module Name:
dbglocal.h
Abstract:
Header file for Spooler Subsystem Debugger Extensions
Author:
Krishna Ganugapati (KrishnaG) 08-July-1992
Revision History:
--*/
// Macro Land
// Note: if you use any of these macros within your code, you must have the
// following variables present and set to the appropriate value
//
// HANDLE hCurrentProcess
// PNTSD_GET_EXPRESSION EvalExpression
//
//
#define move(dst, src)\
try {\ ReadProcessMemory(hCurrentProcess, (LPVOID)src, &dst, sizeof(dst), NULL);\ } except (EXCEPTION_EXECUTE_HANDLER) {\ return 0;\ }
#define movestruct(src, dst, type)\
try {\ ReadProcessMemory(hCurrentProcess, (LPVOID)src, dst, sizeof(type), NULL);\ } except (EXCEPTION_EXECUTE_HANDLER) {\ return 0;\ }
#define movemem(src, dst, sz)\
try {\ if (!ReadProcessMemory(hCurrentProcess, (LPVOID)src, dst, sz, NULL)) { \ ((PBYTE)(dst))[0] = 0; \ } \ } except (EXCEPTION_EXECUTE_HANDLER) {\ return 0;\ }
#define movestr(src, dst, sz)\
try {\ if (!ReadProcessString(hCurrentProcess, (LPVOID)src, dst, sz, NULL)) { \ ((PBYTE)(dst))[0] = 0; \ } \ } except (EXCEPTION_EXECUTE_HANDLER) {\ return 0;\ }
#define GetAddress(dst, src)\
try {\ dst = EvalExpression(src);\ } except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?\ EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {\ Print("NTSD: Access violation on \"%s\", switch to server context\n", src);\ return(0);\ }
VOID EnterSplSem( VOID );
VOID LeaveSplSem( VOID );
#if DBG
VOID SplInSem( VOID );
VOID SplOutSem( VOID );
#else
#define SplInSem()
#define SplOutSem()
#endif
BOOL DbgDumpIniPrintProc( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PINIPRINTPROC pIniPrintProc );
BOOL DbgDumpIniDriver( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PINIDRIVER pIniDriver );
BOOL DbgDumpIniEnvironment( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PINIENVIRONMENT pIniEnvironment );
BOOL DbgDumpIniNetPrint( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PININETPRINT pIniNetPrint );
BOOL DbgDumpIniMonitor( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PINIMONITOR pIniMonitor );
BOOL DbgDumpIniPort( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PINIPORT pIniPort );
BOOL DbgDumpWIniPort( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PWINIPORT pIniPort );
BOOL DbgDumpIniPrinter( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PINIPRINTER pIniPrinter );
BOOL DbgDumpIniForm( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PINIFORM pForm );
BOOL DbgDumpIniJob( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PINIJOB pIniJob );
BOOL DbgDumpProvidor( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, LPPROVIDOR pProvidor );
BOOL DbgDumpSpool( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PSPOOL pSpool );
BOOL DbgDumpShadowFile( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PSHADOWFILE pShadowFile );
BOOL DbgDumpShadowFile2( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PSHADOWFILE_2 pShadowFile );
VOID WINAPIV PrintData( PNTSD_OUTPUT_ROUTINE Print, LPSTR TypeString, LPSTR VarString, ... );
BOOL DbgDumpChange( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PCHANGE pChange );
BOOL DumpDevMode( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, UINT_PTR lpAddress );
BOOL DbgDumpSecurityDescriptor( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PISECURITY_DESCRIPTOR pSecurityDescriptor );
BOOL DbgDumpSid( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PVOID SidAddress );
BOOL DbgDumpAcl( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PVOID AclAddress );
VOID ConvertSidToAsciiString( PSID pSid, LPSTR String, size_t cchString );
DWORD EvalValue( LPSTR *pptstr, PNTSD_GET_EXPRESSION EvalExpression, PNTSD_OUTPUT_ROUTINE Print );
BOOL DbgDumpIniSpooler( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PINISPOOLER pIniSpooler );
BOOL DbgDumpPrintHandle( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PPRINTHANDLE pPrintHandle );
BOOL DbgDumpChange( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PCHANGE pChange );
BOOL DbgDumpNotify( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PNOTIFY pNotify );
BOOL DbgDumpChangeInfo( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PCHANGEINFO pChangeInfo );
BOOL DbgDumpStructure( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, UINT_PTR pData );
BOOL DbgDumpIniSpooler( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, PINISPOOLER pIniSpooler );
BOOL DbgDumpLL( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, UINT_PTR pAddress, BOOL bCountOn, DWORD dwCount, PVOID pNextAddress );
BOOL DbgDumpPI2( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, UINT_PTR lpAddress, DWORD dwCount );
BOOL DbgDumpPI0( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, UINT_PTR lpAddress, DWORD dwCount );
BOOL DbgDumpFI1( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, UINT_PTR lpAddress, DWORD dwCount );
BOOL DbgDumpPDEF( HANDLE hCurrentProcess, PNTSD_OUTPUT_ROUTINE Print, UINT_PTR lpAddress, DWORD dwCount );
BOOL ReadProcessString( IN HANDLE hProcess, IN LPCVOID lpBaseAddress, OUT LPVOID lpBuffer, IN SIZE_T nSize, OUT SIZE_T *lpNumberOfBytesRead );
BOOL QuerySystemInformation( VOID );
|