[BROWSEUI] SHExplorerParseCmdLine: Fix parsing of /root (#6752)
[reactos.git] / ntoskrnl / kdbg / kdb.h
index 7d4b462..df2945a 100644 (file)
@@ -1,27 +1,10 @@
 #pragma once
-
-/* DEFINES *******************************************************************/
-
-#ifndef RTL_NUMBER_OF
-# define RTL_NUMBER_OF(x) (sizeof(x) / sizeof((x)[0]))
-#endif
-
-/* formerly located in kdbg/kdb_symbols.c */
-#define TAG_KDBS 'SBDK'
-#define TAG_KDBG 'GBDK'
+#include "../kd/kd.h"
 
 /* TYPES *********************************************************************/
 
 /* from kdb.c */
-typedef struct _KDB_KTRAP_FRAME
-{
-   KTRAP_FRAME  Tf;
-   ULONG        Cr0;
-   ULONG        Cr1; /* reserved/unused */
-   ULONG        Cr2;
-   ULONG        Cr3;
-   ULONG        Cr4;
-} KDB_KTRAP_FRAME, *PKDB_KTRAP_FRAME;
+typedef CONTEXT KDB_KTRAP_FRAME, *PKDB_KTRAP_FRAME;
 
 typedef enum _KDB_BREAKPOINT_TYPE
 {
@@ -68,12 +51,25 @@ typedef enum _KDB_ENTER_CONDITION
    KdbEnterFromUmode
 } KDB_ENTER_CONDITION;
 
-/* These values MUST be nonzero.  They're used as bit masks. */
-typedef enum _KDB_OUTPUT_SETTINGS
+typedef enum _KD_CONTINUE_TYPE
 {
-   KD_DEBUG_KDSERIAL = 1,
-   KD_DEBUG_KDNOECHO = 2
-} KDB_OUTPUT_SETTINGS;
+    kdContinue = 0,
+    kdDoNotHandleException,
+    kdHandleException
+} KD_CONTINUE_TYPE;
+
+
+/* GLOBALS *******************************************************************/
+
+extern PCHAR KdbInitFileBuffer;
+
+extern PEPROCESS KdbCurrentProcess;
+extern PETHREAD KdbCurrentThread;
+extern LONG KdbLastBreakPointNr;
+extern ULONG KdbNumSingleSteps;
+extern BOOLEAN KdbSingleStepOver;
+extern PKDB_KTRAP_FRAME KdbCurrentTrapFrame;
+
 
 /* FUNCTIONS *****************************************************************/
 
@@ -81,12 +77,12 @@ typedef enum _KDB_OUTPUT_SETTINGS
 
 LONG
 KdbpDisassemble(
-   IN ULONG Address,
+   IN ULONG_PTR Address,
    IN ULONG IntelSyntax);
 
 LONG
 KdbpGetInstLength(
-   IN ULONG Address);
+   IN ULONG_PTR Address);
 
 /* from i386/kdb_help.S */
 
@@ -97,9 +93,19 @@ KdbpStackSwitchAndCall(
 
 /* from kdb_cli.c */
 
-extern PCHAR KdbInitFileBuffer;
+NTSTATUS
+NTAPI
+KdbInitialize(
+    _In_ PKD_DISPATCH_TABLE DispatchTable,
+    _In_ ULONG BootPhase);
 
-VOID
+BOOLEAN
+NTAPI
+KdbRegisterCliCallback(
+    PVOID Callback,
+    BOOLEAN Deregister);
+
+NTSTATUS
 KdbpCliInit(VOID);
 
 VOID
@@ -107,16 +113,30 @@ KdbpCliMainLoop(
    IN BOOLEAN EnteredOnSingleStep);
 
 VOID
-KdbpCliModuleLoaded(
-   IN PUNICODE_STRING Name);
+KdbpCliInterpretInitFile(VOID);
 
 VOID
-KdbpCliInterpretInitFile(VOID);
+KdbpCommandHistoryAppend(
+    _In_ PCSTR Command);
+
+PCSTR
+KdbGetHistoryEntry(
+    _Inout_ PLONG NextIndex,
+    _In_ BOOLEAN Next);
+
+VOID
+KdbpPager(
+    _In_ PCHAR Buffer,
+    _In_ ULONG BufLength);
 
 VOID
 KdbpPrint(
-   IN PCHAR Format,
-   IN ...  OPTIONAL);
+    _In_ PSTR Format,
+    _In_ ...);
+
+VOID
+KdbpPrintUnicodeString(
+    _In_ PCUNICODE_STRING String);
 
 BOOLEAN
 NTAPI
@@ -153,19 +173,24 @@ KdbpRpnEvaluateParsedExpression(
 BOOLEAN
 KdbpSymFindModule(
     IN PVOID Address  OPTIONAL,
-    IN LPCWSTR Name  OPTIONAL,
     IN INT Index  OPTIONAL,
     OUT PLDR_DATA_TABLE_ENTRY* pLdrEntry);
 
-/* from kdb.c */
+BOOLEAN
+KdbSymPrintAddress(
+    IN PVOID Address,
+    IN PCONTEXT Context);
 
-extern PEPROCESS KdbCurrentProcess;
-extern PETHREAD KdbCurrentThread;
-extern LONG KdbLastBreakPointNr;
-extern ULONG KdbNumSingleSteps;
-extern BOOLEAN KdbSingleStepOver;
-extern PKDB_KTRAP_FRAME KdbCurrentTrapFrame;
-extern ULONG KdbDebugState;
+VOID
+KdbSymProcessSymbols(
+    _Inout_ PLDR_DATA_TABLE_ENTRY LdrEntry,
+    _In_ BOOLEAN Load);
+
+BOOLEAN
+KdbSymInit(
+    _In_ ULONG BootPhase);
+
+/* from kdb.c */
 
 LONG
 KdbpGetNextBreakPointNr(
@@ -230,17 +255,33 @@ KdbpAttachToProcess(
    PVOID ProcessId);
 
 VOID
-NTAPI
-KdbpGetCommandLineSettings(PCHAR p1);
+KdbpGetCommandLineSettings(
+    _In_ PCSTR p1);
 
 KD_CONTINUE_TYPE
-KdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
-                           KPROCESSOR_MODE PreviousMode,
-                           PCONTEXT Context,
-                           PKTRAP_FRAME TrapFrame,
-                           BOOLEAN FirstChance);
+KdbEnterDebuggerException(IN PEXCEPTION_RECORD64 ExceptionRecord,
+                          IN KPROCESSOR_MODE PreviousMode,
+                          IN OUT PCONTEXT Context,
+                          IN BOOLEAN FirstChance);
+
 /* other functions */
 
+BOOLEAN
+NTAPI
+KdpSafeReadMemory(
+    IN ULONG_PTR Addr,
+    IN LONG Len,
+    OUT PVOID Value
+);
+
+BOOLEAN
+NTAPI
+KdpSafeWriteMemory(
+    IN ULONG_PTR Addr,
+    IN LONG Len,
+    IN ULONGLONG Value
+);
+
 NTSTATUS
 KdbpSafeReadMemory(OUT PVOID Dest,
                    IN PVOID Src,
@@ -251,25 +292,41 @@ KdbpSafeWriteMemory(OUT PVOID Dest,
                     IN PVOID Src,
                     IN ULONG Bytes);
 
-#define KdbpGetCharKeyboard(ScanCode) KdbpTryGetCharKeyboard(ScanCode, 0)
-CHAR
-KdbpTryGetCharKeyboard(PULONG ScanCode, ULONG Retry);
-
-#define KdbpGetCharSerial()  KdbpTryGetCharSerial(0)
-CHAR
-KdbpTryGetCharSerial(ULONG Retry);
-
-VOID
-KdbEnter(VOID);
 VOID
-DbgRDebugInit(VOID);
+KbdDisableMouse(VOID);
+
 VOID
-DbgShowFiles(VOID);
+KbdEnableMouse(VOID);
+
+
+/* From kdb_print.c */
+
 VOID
-DbgEnableFile(PCH Filename);
+KdbPrintString(
+    _In_ const CSTRING* Output);
+
+USHORT
+KdbPromptString(
+    _In_ const CSTRING* PromptString,
+    _Inout_ PSTRING ResponseString);
+
 VOID
-DbgDisableFile(PCH Filename);
+KdbPutsN(
+    _In_ PCCH String,
+    _In_ USHORT Length);
+
 VOID
-KbdDisableMouse(VOID);
+KdbPuts(
+    _In_ PCSTR String);
+
 VOID
-KbdEnableMouse(VOID);
+__cdecl
+KdbPrintf(
+    _In_ PCSTR Format,
+    ...);
+
+SIZE_T
+KdbPrompt(
+    _In_ PCSTR Prompt,
+    _Out_ PCHAR Buffer,
+    _In_ SIZE_T Size);