Make winkd somewhat portable.
[reactos.git] / reactos / ntoskrnl / kd64 / kdinit.c
index 7733baf..0574829 100644 (file)
@@ -68,8 +68,9 @@ KdInitSystem(IN ULONG BootPhase,
     ANSI_STRING ImageName;\r
     PLDR_DATA_TABLE_ENTRY LdrEntry;\r
     PLIST_ENTRY NextEntry;\r
-    ULONG i;\r
+    ULONG i, j, Length;\r
     CHAR NameBuffer[256];\r
+    PWCHAR Name;\r
 \r
     /* Check if this is Phase 1 */\r
     if (BootPhase)\r
@@ -132,7 +133,8 @@ KdInitSystem(IN ULONG BootPhase,
                                      InLoadOrderLinks);\r
 \r
         /* Save the Kernel Base */\r
-        KdVersionBlock.KernBase =(ULONGLONG)(LONG_PTR)LdrEntry->DllBase;\r
+        PsNtosImageBase = (ULONG_PTR)LdrEntry->DllBase;\r
+        KdVersionBlock.KernBase = (ULONGLONG)(LONG_PTR)LdrEntry->DllBase;\r
 \r
         /* Check if we have a command line */\r
         CommandLine = LoaderBlock->LoadOptions;\r
@@ -179,7 +181,7 @@ KdInitSystem(IN ULONG BootPhase,
     }\r
 \r
     /* Set the Kernel Base in the Data Block */\r
-    KdDebuggerDataBlock.KernBase = (ULONG_PTR)PsNtosImageBase;\r
+    KdDebuggerDataBlock.KernBase = (ULONGLONG)(LONG_PTR)KdVersionBlock.KernBase;\r
 \r
     /* Initialize the debugger if requested */\r
     if ((EnableKd) && (NT_SUCCESS(KdDebuggerInitialize0(LoaderBlock))))\r
@@ -211,9 +213,9 @@ KdInitSystem(IN ULONG BootPhase,
         KdDebuggerEnabled = TRUE;\r
 \r
         /* Let user-mode know that it's enabled as well */\r
-//#undef KdDebuggerEnabled\r
-        //SharedUserData->KdDebuggerEnabled = TRUE;\r
-//#define KdDebuggerEnabled _KdDebuggerEnabled\r
+#undef KdDebuggerEnabled\r
+        SharedUserData->KdDebuggerEnabled = TRUE;\r
+#define KdDebuggerEnabled _KdDebuggerEnabled\r
 \r
         /* Check if we have a loader block */\r
         if (LoaderBlock)\r
@@ -229,6 +231,17 @@ KdInitSystem(IN ULONG BootPhase,
                                              InLoadOrderLinks);\r
 \r
                 /* Generate the image name */\r
+                Name = LdrEntry->FullDllName.Buffer;\r
+                Length = LdrEntry->FullDllName.Length / sizeof(WCHAR);\r
+                j = 0;\r
+                do\r
+                {\r
+                    /* Do cheap Unicode to ANSI conversion */\r
+                    NameBuffer[j++] = (CHAR)*Name++;\r
+                } while (j < Length);\r
+\r
+                /* Null-terminate */\r
+                NameBuffer[j] = ANSI_NULL;\r
 \r
                 /* Load symbols for image */\r
                 RtlInitAnsiString(&ImageName, NameBuffer);\r