Commit in reactos/ntoskrnl on MAIN
ldr/loader.c+3-31.150 -> 1.151
mm/mm.c+32-41.79 -> 1.80
+35-7
2 modified files
implemented MmGetSystemRoutineAddress()

reactos/ntoskrnl/ldr
loader.c 1.150 -> 1.151
diff -u -r1.150 -r1.151
--- loader.c	26 Oct 2004 10:56:38 -0000	1.150
+++ loader.c	13 Nov 2004 13:09:07 -0000	1.151
@@ -1,4 +1,4 @@
-/* $Id: loader.c,v 1.150 2004/10/26 10:56:38 ekohl Exp $
+/* $Id: loader.c,v 1.151 2004/11/13 13:09:07 weiden Exp $
  * 
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -43,8 +43,8 @@
 
 LIST_ENTRY ModuleListHead;
 KSPIN_LOCK ModuleListLock;
-STATIC MODULE_OBJECT NtoskrnlModuleObject;
-STATIC MODULE_OBJECT HalModuleObject;
+MODULE_OBJECT NtoskrnlModuleObject;
+MODULE_OBJECT HalModuleObject;
 
 LIST_ENTRY ModuleTextListHead;
 STATIC MODULE_TEXT_SECTION NtoskrnlTextSection;

reactos/ntoskrnl/mm
mm.c 1.79 -> 1.80
diff -u -r1.79 -r1.80
--- mm.c	22 Oct 2004 20:38:22 -0000	1.79
+++ mm.c	13 Nov 2004 13:09:07 -0000	1.80
@@ -16,7 +16,7 @@
  *  along with this program; if not, write to the Free Software
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-/* $Id: mm.c,v 1.79 2004/10/22 20:38:22 ekohl Exp $
+/* $Id: mm.c,v 1.80 2004/11/13 13:09:07 weiden Exp $
  *
  * COPYRIGHT:   See COPYING in the top directory
  * PROJECT:     ReactOS kernel 
@@ -35,6 +35,9 @@
 
 /* GLOBALS *****************************************************************/
 
+extern MODULE_OBJECT NtoskrnlModuleObject;
+extern MODULE_OBJECT HalModuleObject;
+
 PVOID EXPORTED MmUserProbeAddress = NULL;
 PVOID EXPORTED MmHighestUserAddress = NULL;
 PBOOLEAN EXPORTED Mm64BitPhysicalAddress = FALSE;
@@ -496,7 +499,7 @@
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
 PVOID
 NTKERNELAPI
@@ -504,8 +507,33 @@
     IN PUNICODE_STRING SystemRoutineName
     )
 {
-	UNIMPLEMENTED;
-	return 0;
+  PVOID ProcAddress;
+  ANSI_STRING AnsiRoutineName;
+  NTSTATUS Status;
+  
+  if(!NT_SUCCESS(RtlUnicodeStringToAnsiString(&AnsiRoutineName,
+                                              SystemRoutineName,
+                                              TRUE)))
+  {
+    return NULL;
+  }
+  
+  Status = LdrGetProcedureAddress(NtoskrnlModuleObject.Base,
+                                  &AnsiRoutineName,
+                                  0,
+                                  &ProcAddress);
+  
+  if(!NT_SUCCESS(Status))
+  {
+    Status = LdrGetProcedureAddress(HalModuleObject.Base,
+                                    &AnsiRoutineName,
+                                    0,
+                                    &ProcAddress);
+  }
+  
+  RtlFreeAnsiString(&AnsiRoutineName);
+  
+  return (NT_SUCCESS(Status) ? ProcAddress : NULL);
 }
 
 /* EOF */
CVSspam 0.2.8