2010-02-26 11:43:19 +00:00
|
|
|
#pragma once
|
2000-01-17 21:02:50 +00:00
|
|
|
|
2013-05-07 00:14:36 +00:00
|
|
|
#include <cportlib/cportlib.h>
|
|
|
|
|
2006-05-10 17:47:44 +00:00
|
|
|
//
|
|
|
|
// Kernel Debugger Port Definition
|
|
|
|
//
|
2005-04-25 14:44:48 +00:00
|
|
|
struct _KD_DISPATCH_TABLE;
|
|
|
|
|
2006-05-10 17:47:44 +00:00
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
|
|
|
KdPortInitializeEx(
|
2013-05-07 00:14:36 +00:00
|
|
|
PCPPORT PortInformation,
|
|
|
|
ULONG ComPortNumber
|
2006-05-10 17:47:44 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
|
|
|
KdPortGetByteEx(
|
2013-05-07 00:14:36 +00:00
|
|
|
PCPPORT PortInformation,
|
2013-04-13 21:28:10 +00:00
|
|
|
PUCHAR ByteReceived);
|
2006-05-10 17:47:44 +00:00
|
|
|
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
KdPortPutByteEx(
|
2013-05-07 00:14:36 +00:00
|
|
|
PCPPORT PortInformation,
|
2006-05-10 17:47:44 +00:00
|
|
|
UCHAR ByteToSend
|
|
|
|
);
|
|
|
|
|
2022-03-07 23:42:06 +00:00
|
|
|
#ifdef _NTOSKRNL_
|
2005-04-25 19:42:48 +00:00
|
|
|
|
2005-04-25 14:44:48 +00:00
|
|
|
/* KD ROUTINES ***************************************************************/
|
2002-02-09 18:41:24 +00:00
|
|
|
|
2002-01-23 23:39:26 +00:00
|
|
|
typedef enum _KD_CONTINUE_TYPE
|
|
|
|
{
|
2005-04-25 14:44:48 +00:00
|
|
|
kdContinue = 0,
|
|
|
|
kdDoNotHandleException,
|
|
|
|
kdHandleException
|
[NTOS:KD/KD64/KDBG] Share some code between our legacy KD/KDBG and KD64.
Our legacy KD module is slowly being phased out for the more recent KD64
Kernel Debugger that supports WinDbg, but at the same time we must retain
support for GCC debugging and the KDBG interface.
For the time being few #ifdef _WINKD_ have been introduced in KD64 so that
some of its code/data does not completely get shared yet with the legacy KD,
until the latter becomes phased out.
KD Modifications:
=================
- Remove the implementation of NtQueryDebugFilterState() /
NtSetDebugFilterState() that now comes entirely from KD64.
- Remove KD variables that are now shared with KD64.
- Share common code with KD64: KdpMoveMemory(), KdpZeroMemory(),
KdpCopyMemoryChunks(), KdpPrint(), KdpPrompt().
- KDBG: Remove the duplicated KdpCopyMemoryChunks() function.
- In KdpServiceDispatcher() and KdpEnterDebuggerException(), call the
KdpPrint() worker function that correctly probes and captures its arguments.
- Temporarily stub out KdEnterDebugger() and KdExitDebugger() that is used
by the shared code, until KD is removed and only the KD64 version of these
functions remain.
- Re-implement the KD/KDBG KdpPrompt() function using a custom KdpPromptString()
helper compatible with KD64, that is called by the KD64 implementation of
KdpPrompt(). This KdpPromptString() helper now issues the prompt on all
the KD loggers: e.g. if you use both at the same time COM-port and SCREEN
debugging, the prompt will appear on both. Before that the prompt was always
being displayed on COM port even if e.g. a SCREEN-only debug session was used...
- ppc_irq.c: Fix the prototype of KdpServiceDispatcher().
KD64 Fixes:
===========
- Initialize the MaximumLength member of the counted STRING variables
before using them elsewhere.
- Get rid of alloca() within SEH block in KdpPrint() (addendum to 7b95fcf9).
- Add the ROS-specific handy dump commands in KdSystemDebugControl().
2019-11-17 21:55:36 +00:00
|
|
|
} KD_CONTINUE_TYPE;
|
2002-01-23 23:39:26 +00:00
|
|
|
|
2005-04-25 14:44:48 +00:00
|
|
|
typedef
|
2004-06-23 00:49:22 +00:00
|
|
|
VOID
|
2008-11-29 20:47:48 +00:00
|
|
|
(NTAPI*PKDP_INIT_ROUTINE)(
|
2005-06-25 17:01:17 +00:00
|
|
|
struct _KD_DISPATCH_TABLE *DispatchTable,
|
|
|
|
ULONG BootPhase
|
|
|
|
);
|
2004-06-23 00:49:22 +00:00
|
|
|
|
2005-04-25 14:44:48 +00:00
|
|
|
typedef
|
2004-06-23 00:49:22 +00:00
|
|
|
VOID
|
2008-11-29 20:47:48 +00:00
|
|
|
(NTAPI*PKDP_PRINT_ROUTINE)(
|
2019-11-17 15:44:22 +00:00
|
|
|
PCHAR String,
|
- More sharing between ntdll/ntoskrnl: shared Dbg code.
- Added NtCreateDebugObject, NtDebugContinue, NtQueryDebugFilterState, NtSetDebugFilterState, NtWaitForDebugEvent to system call list.
- Added some debug constants to headers
- Updated RtlpCheckForActiveDebugger in ntoskrnl to return whatever we're expecting as the "normal" case.
- Added RtlpSetInDbgPrint to rtl support library for special DbgPrint implementation difference in user-mode
- Removed all the deprecated debug APIs in ntdll.
- Implemented NtQueryDebugFilterState and NtSetDebugFilterState based on royce's implementation.
- Started modifications on KeDebugService, and implemented DebugService in rtl
- Implemented all the Dbg* APIs in RTL.
- Implemented DbgUiConnectToDbg, DbgUiContinue, DbgUiWaitStateChange, DbgUiRemoteBreakin, DbgUiIssueRemoteBreakin
- Changed KD Print callbacks to also receive the length of the string.
Right now, one call that should be shared still isn't (the final DebugPrint call) because calling KeDebugService from kernel-mode seems to cause a hang. Also, DebugService does not currently cause an exception like it should (instead it still calls the Kdp handler), because those changes would've made the patch even bigger and are still untested.
svn path=/trunk/; revision=18078
2005-09-26 04:59:48 +00:00
|
|
|
ULONG Length
|
|
|
|
);
|
2002-01-23 23:39:26 +00:00
|
|
|
|
2005-04-25 14:44:48 +00:00
|
|
|
/* INIT ROUTINES *************************************************************/
|
2004-08-26 16:04:50 +00:00
|
|
|
|
2019-11-17 15:44:22 +00:00
|
|
|
VOID
|
|
|
|
KdpScreenAcquire(VOID);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
KdpScreenRelease(VOID);
|
|
|
|
|
2002-07-18 00:25:31 +00:00
|
|
|
VOID
|
2008-11-29 20:47:48 +00:00
|
|
|
NTAPI
|
2005-06-25 17:01:17 +00:00
|
|
|
KdpScreenInit(
|
|
|
|
struct _KD_DISPATCH_TABLE *DispatchTable,
|
|
|
|
ULONG BootPhase
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID
|
2008-11-29 20:47:48 +00:00
|
|
|
NTAPI
|
2005-06-25 17:01:17 +00:00
|
|
|
KdpSerialInit(
|
|
|
|
struct _KD_DISPATCH_TABLE *DispatchTable,
|
|
|
|
ULONG BootPhase
|
|
|
|
);
|
2005-05-09 01:38:29 +00:00
|
|
|
|
2002-07-18 00:25:31 +00:00
|
|
|
VOID
|
2008-11-29 20:47:48 +00:00
|
|
|
NTAPI
|
2019-11-17 15:44:22 +00:00
|
|
|
KdpDebugLogInit(
|
2005-06-25 17:01:17 +00:00
|
|
|
struct _KD_DISPATCH_TABLE *DispatchTable,
|
|
|
|
ULONG BootPhase
|
|
|
|
);
|
2005-05-09 01:38:29 +00:00
|
|
|
|
2022-11-18 16:44:29 +00:00
|
|
|
#ifdef KDBG
|
2007-06-28 17:49:02 +00:00
|
|
|
VOID
|
2008-11-29 20:47:48 +00:00
|
|
|
NTAPI
|
2007-07-06 09:02:16 +00:00
|
|
|
KdpKdbgInit(
|
2007-06-28 17:49:02 +00:00
|
|
|
struct _KD_DISPATCH_TABLE *DispatchTable,
|
|
|
|
ULONG BootPhase);
|
2022-11-18 16:44:29 +00:00
|
|
|
#endif
|
2007-06-28 17:49:02 +00:00
|
|
|
|
|
|
|
|
2005-04-25 14:44:48 +00:00
|
|
|
/* KD ROUTINES ***************************************************************/
|
2004-08-26 16:04:50 +00:00
|
|
|
|
2008-07-28 14:47:17 +00:00
|
|
|
BOOLEAN
|
2008-11-29 20:47:48 +00:00
|
|
|
NTAPI
|
2008-07-28 14:47:17 +00:00
|
|
|
KdpSafeReadMemory(
|
|
|
|
IN ULONG_PTR Addr,
|
|
|
|
IN LONG Len,
|
|
|
|
OUT PVOID Value
|
|
|
|
);
|
|
|
|
|
|
|
|
BOOLEAN
|
2008-11-29 20:47:48 +00:00
|
|
|
NTAPI
|
2008-07-28 14:47:17 +00:00
|
|
|
KdpSafeWriteMemory(
|
|
|
|
IN ULONG_PTR Addr,
|
|
|
|
IN LONG Len,
|
|
|
|
IN ULONGLONG Value
|
|
|
|
);
|
|
|
|
|
|
|
|
|
2005-04-25 14:44:48 +00:00
|
|
|
/* KD GLOBALS ***************************************************************/
|
|
|
|
|
[NTOS:KD/KD64/KDBG] Share some code between our legacy KD/KDBG and KD64.
Our legacy KD module is slowly being phased out for the more recent KD64
Kernel Debugger that supports WinDbg, but at the same time we must retain
support for GCC debugging and the KDBG interface.
For the time being few #ifdef _WINKD_ have been introduced in KD64 so that
some of its code/data does not completely get shared yet with the legacy KD,
until the latter becomes phased out.
KD Modifications:
=================
- Remove the implementation of NtQueryDebugFilterState() /
NtSetDebugFilterState() that now comes entirely from KD64.
- Remove KD variables that are now shared with KD64.
- Share common code with KD64: KdpMoveMemory(), KdpZeroMemory(),
KdpCopyMemoryChunks(), KdpPrint(), KdpPrompt().
- KDBG: Remove the duplicated KdpCopyMemoryChunks() function.
- In KdpServiceDispatcher() and KdpEnterDebuggerException(), call the
KdpPrint() worker function that correctly probes and captures its arguments.
- Temporarily stub out KdEnterDebugger() and KdExitDebugger() that is used
by the shared code, until KD is removed and only the KD64 version of these
functions remain.
- Re-implement the KD/KDBG KdpPrompt() function using a custom KdpPromptString()
helper compatible with KD64, that is called by the KD64 implementation of
KdpPrompt(). This KdpPromptString() helper now issues the prompt on all
the KD loggers: e.g. if you use both at the same time COM-port and SCREEN
debugging, the prompt will appear on both. Before that the prompt was always
being displayed on COM port even if e.g. a SCREEN-only debug session was used...
- ppc_irq.c: Fix the prototype of KdpServiceDispatcher().
KD64 Fixes:
===========
- Initialize the MaximumLength member of the counted STRING variables
before using them elsewhere.
- Get rid of alloca() within SEH block in KdpPrint() (addendum to 7b95fcf9).
- Add the ROS-specific handy dump commands in KdSystemDebugControl().
2019-11-17 21:55:36 +00:00
|
|
|
/* Serial debug connection */
|
2005-04-25 14:44:48 +00:00
|
|
|
#define DEFAULT_DEBUG_PORT 2 /* COM2 */
|
|
|
|
#define DEFAULT_DEBUG_COM1_IRQ 4 /* COM1 IRQ */
|
|
|
|
#define DEFAULT_DEBUG_COM2_IRQ 3 /* COM2 IRQ */
|
|
|
|
#define DEFAULT_DEBUG_BAUD_RATE 115200 /* 115200 Baud */
|
|
|
|
|
|
|
|
/* KD Native Modes */
|
[NTOS:KD/KD64/KDBG] Share some code between our legacy KD/KDBG and KD64.
Our legacy KD module is slowly being phased out for the more recent KD64
Kernel Debugger that supports WinDbg, but at the same time we must retain
support for GCC debugging and the KDBG interface.
For the time being few #ifdef _WINKD_ have been introduced in KD64 so that
some of its code/data does not completely get shared yet with the legacy KD,
until the latter becomes phased out.
KD Modifications:
=================
- Remove the implementation of NtQueryDebugFilterState() /
NtSetDebugFilterState() that now comes entirely from KD64.
- Remove KD variables that are now shared with KD64.
- Share common code with KD64: KdpMoveMemory(), KdpZeroMemory(),
KdpCopyMemoryChunks(), KdpPrint(), KdpPrompt().
- KDBG: Remove the duplicated KdpCopyMemoryChunks() function.
- In KdpServiceDispatcher() and KdpEnterDebuggerException(), call the
KdpPrint() worker function that correctly probes and captures its arguments.
- Temporarily stub out KdEnterDebugger() and KdExitDebugger() that is used
by the shared code, until KD is removed and only the KD64 version of these
functions remain.
- Re-implement the KD/KDBG KdpPrompt() function using a custom KdpPromptString()
helper compatible with KD64, that is called by the KD64 implementation of
KdpPrompt(). This KdpPromptString() helper now issues the prompt on all
the KD loggers: e.g. if you use both at the same time COM-port and SCREEN
debugging, the prompt will appear on both. Before that the prompt was always
being displayed on COM port even if e.g. a SCREEN-only debug session was used...
- ppc_irq.c: Fix the prototype of KdpServiceDispatcher().
KD64 Fixes:
===========
- Initialize the MaximumLength member of the counted STRING variables
before using them elsewhere.
- Get rid of alloca() within SEH block in KdpPrint() (addendum to 7b95fcf9).
- Add the ROS-specific handy dump commands in KdSystemDebugControl().
2019-11-17 21:55:36 +00:00
|
|
|
#define KdScreen 0
|
|
|
|
#define KdSerial 1
|
|
|
|
#define KdFile 2
|
2020-03-28 09:45:31 +00:00
|
|
|
#define KdKdbg 3
|
|
|
|
#define KdMax 4
|
2005-04-25 14:44:48 +00:00
|
|
|
|
|
|
|
/* KD Private Debug Modes */
|
|
|
|
typedef struct _KDP_DEBUG_MODE
|
|
|
|
{
|
2005-06-25 17:01:17 +00:00
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
2005-04-25 14:44:48 +00:00
|
|
|
/* Native Modes */
|
|
|
|
UCHAR Screen :1;
|
|
|
|
UCHAR Serial :1;
|
|
|
|
UCHAR File :1;
|
|
|
|
};
|
2005-05-09 01:38:29 +00:00
|
|
|
|
2005-04-25 14:44:48 +00:00
|
|
|
/* Generic Value */
|
|
|
|
ULONG Value;
|
|
|
|
};
|
[NTOS:KD/KD64/KDBG] Share some code between our legacy KD/KDBG and KD64.
Our legacy KD module is slowly being phased out for the more recent KD64
Kernel Debugger that supports WinDbg, but at the same time we must retain
support for GCC debugging and the KDBG interface.
For the time being few #ifdef _WINKD_ have been introduced in KD64 so that
some of its code/data does not completely get shared yet with the legacy KD,
until the latter becomes phased out.
KD Modifications:
=================
- Remove the implementation of NtQueryDebugFilterState() /
NtSetDebugFilterState() that now comes entirely from KD64.
- Remove KD variables that are now shared with KD64.
- Share common code with KD64: KdpMoveMemory(), KdpZeroMemory(),
KdpCopyMemoryChunks(), KdpPrint(), KdpPrompt().
- KDBG: Remove the duplicated KdpCopyMemoryChunks() function.
- In KdpServiceDispatcher() and KdpEnterDebuggerException(), call the
KdpPrint() worker function that correctly probes and captures its arguments.
- Temporarily stub out KdEnterDebugger() and KdExitDebugger() that is used
by the shared code, until KD is removed and only the KD64 version of these
functions remain.
- Re-implement the KD/KDBG KdpPrompt() function using a custom KdpPromptString()
helper compatible with KD64, that is called by the KD64 implementation of
KdpPrompt(). This KdpPromptString() helper now issues the prompt on all
the KD loggers: e.g. if you use both at the same time COM-port and SCREEN
debugging, the prompt will appear on both. Before that the prompt was always
being displayed on COM port even if e.g. a SCREEN-only debug session was used...
- ppc_irq.c: Fix the prototype of KdpServiceDispatcher().
KD64 Fixes:
===========
- Initialize the MaximumLength member of the counted STRING variables
before using them elsewhere.
- Get rid of alloca() within SEH block in KdpPrint() (addendum to 7b95fcf9).
- Add the ROS-specific handy dump commands in KdSystemDebugControl().
2019-11-17 21:55:36 +00:00
|
|
|
} KDP_DEBUG_MODE;
|
2005-04-25 14:44:48 +00:00
|
|
|
|
|
|
|
/* KD Internal Debug Services */
|
|
|
|
typedef enum _KDP_DEBUG_SERVICE
|
|
|
|
{
|
2005-06-25 17:01:17 +00:00
|
|
|
DumpNonPagedPool = 0x1e, /* a */
|
|
|
|
ManualBugCheck = 0x30, /* b */
|
|
|
|
DumpNonPagedPoolStats = 0x2e, /* c */
|
|
|
|
DumpNewNonPagedPool = 0x20, /* d */
|
|
|
|
DumpNewNonPagedPoolStats = 0x12, /* e */
|
|
|
|
DumpAllThreads = 0x21, /* f */
|
|
|
|
DumpUserThreads = 0x22, /* g */
|
|
|
|
KdSpare1 = 0x23, /* h */
|
|
|
|
KdSpare2 = 0x17, /* i */
|
|
|
|
KdSpare3 = 0x24, /* j */
|
2009-06-27 09:54:56 +00:00
|
|
|
EnterDebugger = 0x25, /* k */
|
|
|
|
ThatsWhatSheSaid = 69 /* FIGURE IT OUT */
|
[NTOS:KD/KD64/KDBG] Share some code between our legacy KD/KDBG and KD64.
Our legacy KD module is slowly being phased out for the more recent KD64
Kernel Debugger that supports WinDbg, but at the same time we must retain
support for GCC debugging and the KDBG interface.
For the time being few #ifdef _WINKD_ have been introduced in KD64 so that
some of its code/data does not completely get shared yet with the legacy KD,
until the latter becomes phased out.
KD Modifications:
=================
- Remove the implementation of NtQueryDebugFilterState() /
NtSetDebugFilterState() that now comes entirely from KD64.
- Remove KD variables that are now shared with KD64.
- Share common code with KD64: KdpMoveMemory(), KdpZeroMemory(),
KdpCopyMemoryChunks(), KdpPrint(), KdpPrompt().
- KDBG: Remove the duplicated KdpCopyMemoryChunks() function.
- In KdpServiceDispatcher() and KdpEnterDebuggerException(), call the
KdpPrint() worker function that correctly probes and captures its arguments.
- Temporarily stub out KdEnterDebugger() and KdExitDebugger() that is used
by the shared code, until KD is removed and only the KD64 version of these
functions remain.
- Re-implement the KD/KDBG KdpPrompt() function using a custom KdpPromptString()
helper compatible with KD64, that is called by the KD64 implementation of
KdpPrompt(). This KdpPromptString() helper now issues the prompt on all
the KD loggers: e.g. if you use both at the same time COM-port and SCREEN
debugging, the prompt will appear on both. Before that the prompt was always
being displayed on COM port even if e.g. a SCREEN-only debug session was used...
- ppc_irq.c: Fix the prototype of KdpServiceDispatcher().
KD64 Fixes:
===========
- Initialize the MaximumLength member of the counted STRING variables
before using them elsewhere.
- Get rid of alloca() within SEH block in KdpPrint() (addendum to 7b95fcf9).
- Add the ROS-specific handy dump commands in KdSystemDebugControl().
2019-11-17 21:55:36 +00:00
|
|
|
} KDP_DEBUG_SERVICE;
|
2005-04-25 14:44:48 +00:00
|
|
|
|
|
|
|
/* Dispatch Table for Wrapper Functions */
|
|
|
|
typedef struct _KD_DISPATCH_TABLE
|
|
|
|
{
|
|
|
|
LIST_ENTRY KdProvidersList;
|
|
|
|
PKDP_INIT_ROUTINE KdpInitRoutine;
|
|
|
|
PKDP_PRINT_ROUTINE KdpPrintRoutine;
|
[NTOS:KD/KD64/KDBG] Share some code between our legacy KD/KDBG and KD64.
Our legacy KD module is slowly being phased out for the more recent KD64
Kernel Debugger that supports WinDbg, but at the same time we must retain
support for GCC debugging and the KDBG interface.
For the time being few #ifdef _WINKD_ have been introduced in KD64 so that
some of its code/data does not completely get shared yet with the legacy KD,
until the latter becomes phased out.
KD Modifications:
=================
- Remove the implementation of NtQueryDebugFilterState() /
NtSetDebugFilterState() that now comes entirely from KD64.
- Remove KD variables that are now shared with KD64.
- Share common code with KD64: KdpMoveMemory(), KdpZeroMemory(),
KdpCopyMemoryChunks(), KdpPrint(), KdpPrompt().
- KDBG: Remove the duplicated KdpCopyMemoryChunks() function.
- In KdpServiceDispatcher() and KdpEnterDebuggerException(), call the
KdpPrint() worker function that correctly probes and captures its arguments.
- Temporarily stub out KdEnterDebugger() and KdExitDebugger() that is used
by the shared code, until KD is removed and only the KD64 version of these
functions remain.
- Re-implement the KD/KDBG KdpPrompt() function using a custom KdpPromptString()
helper compatible with KD64, that is called by the KD64 implementation of
KdpPrompt(). This KdpPromptString() helper now issues the prompt on all
the KD loggers: e.g. if you use both at the same time COM-port and SCREEN
debugging, the prompt will appear on both. Before that the prompt was always
being displayed on COM port even if e.g. a SCREEN-only debug session was used...
- ppc_irq.c: Fix the prototype of KdpServiceDispatcher().
KD64 Fixes:
===========
- Initialize the MaximumLength member of the counted STRING variables
before using them elsewhere.
- Get rid of alloca() within SEH block in KdpPrint() (addendum to 7b95fcf9).
- Add the ROS-specific handy dump commands in KdSystemDebugControl().
2019-11-17 21:55:36 +00:00
|
|
|
} KD_DISPATCH_TABLE, *PKD_DISPATCH_TABLE;
|
2005-04-25 14:44:48 +00:00
|
|
|
|
|
|
|
/* The current Debugging Mode */
|
|
|
|
extern KDP_DEBUG_MODE KdpDebugMode;
|
|
|
|
|
|
|
|
/* Port Information for the Serial Native Mode */
|
2013-05-07 00:14:36 +00:00
|
|
|
extern ULONG SerialPortNumber;
|
|
|
|
extern CPPORT SerialPortInfo;
|
2005-04-25 14:44:48 +00:00
|
|
|
|
|
|
|
/* Init Functions for Native Providers */
|
|
|
|
extern PKDP_INIT_ROUTINE InitRoutines[KdMax];
|
|
|
|
|
|
|
|
/* Dispatch Tables for Native Providers */
|
|
|
|
extern KD_DISPATCH_TABLE DispatchTable[KdMax];
|
|
|
|
|
|
|
|
/* The KD Native Provider List */
|
|
|
|
extern LIST_ENTRY KdProviders;
|
2002-07-18 00:25:31 +00:00
|
|
|
|
2022-11-18 16:44:29 +00:00
|
|
|
#endif // _NTOSKRNL_
|
2011-02-19 21:50:11 +00:00
|
|
|
|
2015-08-28 14:01:58 +00:00
|
|
|
#if DBG && defined(_M_IX86) && !defined(_WINKD_) // See ke/i386/traphdlr.c
|
2011-02-19 21:50:11 +00:00
|
|
|
#define ID_Win32PreServiceHook 'WSH0'
|
|
|
|
#define ID_Win32PostServiceHook 'WSH1'
|
|
|
|
typedef void (NTAPI *PKDBG_PRESERVICEHOOK)(ULONG, PULONG_PTR);
|
|
|
|
typedef ULONG_PTR (NTAPI *PKDBG_POSTSERVICEHOOK)(ULONG, ULONG_PTR);
|
|
|
|
extern PKDBG_PRESERVICEHOOK KeWin32PreServiceHook;
|
|
|
|
extern PKDBG_POSTSERVICEHOOK KeWin32PostServiceHook;
|
|
|
|
#endif
|