windows-nt/Source/XPSP1/NT/printscan/print/spooler/splexts/dbglocal.h
2020-09-26 16:20:57 +08:00

371 lines
5.8 KiB
C++

/*++
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
);
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
);