2023-03-27 21:13:53 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
/* KD ROUTINES ***************************************************************/
|
|
|
|
|
|
|
|
struct _KD_DISPATCH_TABLE;
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(NTAPI *PKDP_INIT_ROUTINE)(
|
|
|
|
_In_ struct _KD_DISPATCH_TABLE *DispatchTable,
|
|
|
|
_In_ ULONG BootPhase);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
VOID
|
|
|
|
(NTAPI *PKDP_PRINT_ROUTINE)(
|
2023-03-27 23:33:55 +00:00
|
|
|
_In_ PCCH String,
|
|
|
|
_In_ ULONG Length);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
KdIoPuts(
|
|
|
|
_In_ PCSTR String);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
__cdecl
|
|
|
|
KdIoPrintf(
|
|
|
|
_In_ PCSTR Format,
|
|
|
|
...);
|
|
|
|
|
2023-03-29 00:06:35 +00:00
|
|
|
SIZE_T
|
|
|
|
KdIoReadLine(
|
|
|
|
_Out_ PCHAR Buffer,
|
|
|
|
_In_ SIZE_T Size);
|
|
|
|
|
2023-03-27 21:13:53 +00:00
|
|
|
|
|
|
|
/* INIT ROUTINES *************************************************************/
|
|
|
|
|
|
|
|
KIRQL
|
|
|
|
NTAPI
|
|
|
|
KdbpAcquireLock(
|
|
|
|
_In_ PKSPIN_LOCK SpinLock);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
KdbpReleaseLock(
|
|
|
|
_In_ PKSPIN_LOCK SpinLock,
|
|
|
|
_In_ KIRQL OldIrql);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
KdpScreenAcquire(VOID);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
KdpScreenRelease(VOID);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
KdpScreenInit(
|
|
|
|
_In_ struct _KD_DISPATCH_TABLE *DispatchTable,
|
|
|
|
_In_ ULONG BootPhase);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
KdpSerialInit(
|
|
|
|
_In_ struct _KD_DISPATCH_TABLE *DispatchTable,
|
|
|
|
_In_ ULONG BootPhase);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
KdpDebugLogInit(
|
|
|
|
_In_ struct _KD_DISPATCH_TABLE *DispatchTable,
|
|
|
|
_In_ ULONG BootPhase);
|
|
|
|
|
|
|
|
#ifdef KDBG
|
|
|
|
#define KdpKdbgInit KdbInitialize
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/* KD GLOBALS ****************************************************************/
|
|
|
|
|
|
|
|
/* Serial debug connection */
|
|
|
|
#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 */
|
|
|
|
#define KdScreen 0
|
|
|
|
#define KdSerial 1
|
|
|
|
#define KdFile 2
|
|
|
|
#define KdKdbg 3
|
|
|
|
#define KdMax 4
|
|
|
|
|
|
|
|
/* KD Private Debug Modes */
|
|
|
|
typedef struct _KDP_DEBUG_MODE
|
|
|
|
{
|
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
/* Native Modes */
|
|
|
|
UCHAR Screen :1;
|
|
|
|
UCHAR Serial :1;
|
|
|
|
UCHAR File :1;
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Generic Value */
|
|
|
|
ULONG Value;
|
|
|
|
};
|
|
|
|
} KDP_DEBUG_MODE;
|
|
|
|
|
|
|
|
/* Dispatch Table for Wrapper Functions */
|
|
|
|
typedef struct _KD_DISPATCH_TABLE
|
|
|
|
{
|
|
|
|
LIST_ENTRY KdProvidersList;
|
|
|
|
PKDP_INIT_ROUTINE KdpInitRoutine;
|
|
|
|
PKDP_PRINT_ROUTINE KdpPrintRoutine;
|
|
|
|
NTSTATUS InitStatus;
|
|
|
|
} KD_DISPATCH_TABLE, *PKD_DISPATCH_TABLE;
|
|
|
|
|
|
|
|
/* The current Debugging Mode */
|
|
|
|
extern KDP_DEBUG_MODE KdpDebugMode;
|
|
|
|
|
|
|
|
/* Port Information for the Serial Native Mode */
|
|
|
|
extern ULONG SerialPortNumber;
|
|
|
|
extern CPPORT SerialPortInfo;
|
|
|
|
|
|
|
|
/* Logging file path */
|
|
|
|
extern ANSI_STRING KdpLogFileName;
|
|
|
|
|
|
|
|
/* 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;
|