Make winkd somewhat portable.
[reactos.git] / reactos / ntoskrnl / kd64 / kdinit.c
index ad96f7d..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, j;\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,7 @@ KdInitSystem(IN ULONG BootPhase,
                                      InLoadOrderLinks);\r
 \r
         /* Save the Kernel Base */\r
-        PsNtosImageBase = (ULONG)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
@@ -212,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
@@ -230,11 +231,17 @@ KdInitSystem(IN ULONG BootPhase,
                                              InLoadOrderLinks);\r
 \r
                 /* Generate the image name */\r
-                for (j = 0; j < LdrEntry->BaseDllName.Length / 2; j++)\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)LdrEntry->BaseDllName.Buffer[j];\r
-                }\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