Commit in reactos on win32k_user_reconstruction
include/win32k/ntuser.h+51.137.2.1 -> 1.137.2.2
lib/advapi32/sec/sec.c+2-21.20 -> 1.20.10.1
lib/userenv/desktop.c+38-171.6 -> 1.6.8.1
           /internal.h+30-11.6 -> 1.6.8.1
           /makefile+1-11.7 -> 1.7.6.1
           /misc.c+64-11.2 -> 1.2.10.1
ntoskrnl/include/internal/ex.h+1-11.39.2.1 -> 1.39.2.2
subsys/system/winlogon/makefile+2-21.10 -> 1.10.10.1
                      /winlogon.c+30-211.31.2.1 -> 1.31.2.2
                      /wlx.c+11-141.4 -> 1.4.10.1
subsys/win32k/include/internal.h+4-41.1.2.3 -> 1.1.2.4
subsys/win32k/misc/object.c+8-51.12.4.1 -> 1.12.4.2
subsys/win32k/ntuser/class.c+83-831.59.4.1 -> 1.59.4.2
                    /ntuser.c+134-21.1.2.2 -> 1.1.2.3
                    /stubs.c+1-131.45.8.2 -> 1.45.8.3
                    /window.c+16-361.242.2.1 -> 1.242.2.2
                    /winsta.c+4-31.64.4.1 -> 1.64.4.2
lib/acledit/acledit.map-1621.1.2.1 removed
+434-368
1 removed + 17 modified, total 18 files
some merges and more work on win32k

reactos/include/win32k
ntuser.h 1.137.2.1 -> 1.137.2.2
diff -u -r1.137.2.1 -r1.137.2.2
--- ntuser.h	7 Jul 2004 18:02:59 -0000	1.137.2.1
+++ ntuser.h	12 Jul 2004 19:54:44 -0000	1.137.2.2
@@ -908,6 +908,11 @@
   HRGN hRgn,
   BOOL bErase);
 
+BOOL
+STDCALL
+NtUserValidateRgn(
+  HWND hWnd,
+  HRGN hRgn);
 
 BOOL
 STDCALL

reactos/lib/advapi32/sec
sec.c 1.20 -> 1.20.10.1
diff -u -r1.20 -r1.20.10.1
--- sec.c	25 Mar 2004 11:30:07 -0000	1.20
+++ sec.c	12 Jul 2004 19:54:45 -0000	1.20.10.1
@@ -1,4 +1,4 @@
-/* $Id: sec.c,v 1.20 2004/03/25 11:30:07 ekohl Exp $
+/* $Id: sec.c,v 1.20.10.1 2004/07/12 19:54:45 weiden Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS system libraries
@@ -358,7 +358,7 @@
 {
 	NTSTATUS Status;
 
-	Status = RtlSetGroupSecurityDescriptor (pSecurityDescriptor,
+	Status = RtlSetOwnerSecurityDescriptor (pSecurityDescriptor,
 	                                        pOwner,
 	                                        bOwnerDefaulted);
 	if (!NT_SUCCESS(Status))

reactos/lib/userenv
desktop.c 1.6 -> 1.6.8.1
diff -u -r1.6 -r1.6.8.1
--- desktop.c	7 May 2004 11:18:53 -0000	1.6
+++ desktop.c	12 Jul 2004 19:54:46 -0000	1.6.8.1
@@ -1,4 +1,4 @@
-/* $Id: desktop.c,v 1.6 2004/05/07 11:18:53 ekohl Exp $
+/* $Id: desktop.c,v 1.6.8.1 2004/07/12 19:54:46 weiden Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS system libraries
@@ -150,6 +150,7 @@
 		 WORD wHotKey,
 		 INT iShowCmd)
 {
+  DYN_FUNCS Ole32;
   WCHAR szLinkPath[MAX_PATH];
   WCHAR szArguments[MAX_PATH];
   WCHAR szCommand[MAX_PATH];
@@ -216,16 +217,24 @@
   DPRINT ("szCommand: '%S'\n", szCommand);
   DPRINT ("szArguments: '%S'\n", szArguments);
 
-  CoInitialize(NULL);
+  /* dynamically load ole32.dll */
+  if(!LoadDynamicImports(&DynOle32, &Ole32))
+  {
+    DPRINT1("USERENV: Unable to load OLE32.DLL\n");
+    return FALSE;
+  }
+
+  Ole32.fn.CoInitialize(NULL);
 
-  hr = CoCreateInstance(&CLSID_ShellLink,
-                        NULL,
-                        CLSCTX_INPROC_SERVER,
-                        &IID_IShellLinkW,
-                       (LPVOID*)&psl);
+  hr = Ole32.fn.CoCreateInstance(&CLSID_ShellLink,
+                                 NULL,
+                                 CLSCTX_INPROC_SERVER,
+                                 &IID_IShellLinkW,
+                                 (LPVOID*)&psl);
   if (!SUCCEEDED(hr))
     {
-      CoUninitialize();
+      Ole32.fn.CoUninitialize();
+      UnloadDynamicImports(&Ole32);
       return FALSE;
     }
 
@@ -275,7 +284,9 @@
 
   psl->lpVtbl->Release(psl);
 
-  CoUninitialize();
+  Ole32.fn.CoUninitialize();
+  
+  UnloadDynamicImports(&Ole32);
 
   DPRINT ("AddDesktopItemW() done\n");
 
@@ -428,6 +439,7 @@
 	  WORD wHotKey,
 	  INT iShowCmd)
 {
+  DYN_FUNCS Ole32;
   WCHAR szLinkPath[MAX_PATH];
   WCHAR szArguments[MAX_PATH];
   WCHAR szCommand[MAX_PATH];
@@ -499,16 +511,24 @@
   DPRINT ("szCommand: '%S'\n", szCommand);
   DPRINT ("szArguments: '%S'\n", szArguments);
 
-  CoInitialize(NULL);
+  /* dynamically load ole32.dll */
+  if(!LoadDynamicImports(&DynOle32, &Ole32))
+  {
+    DPRINT1("USERENV: Unable to load OLE32.DLL\n");
+    return FALSE;
+  }
+
+  Ole32.fn.CoInitialize(NULL);
 
-  hr = CoCreateInstance(&CLSID_ShellLink,
-                        NULL,
-                        CLSCTX_INPROC_SERVER,
-                        &IID_IShellLinkW,
-                       (LPVOID*)&psl);
+  hr = Ole32.fn.CoCreateInstance(&CLSID_ShellLink,
+                                 NULL,
+                                 CLSCTX_INPROC_SERVER,
+                                 &IID_IShellLinkW,
+                                 (LPVOID*)&psl);
   if (!SUCCEEDED(hr))
     {
-      CoUninitialize();
+      Ole32.fn.CoUninitialize();
+      UnloadDynamicImports(&Ole32);
       return FALSE;
     }
 
@@ -558,7 +578,8 @@
 
   psl->lpVtbl->Release(psl);
 
-  CoUninitialize();
+  Ole32.fn.CoUninitialize();
+  UnloadDynamicImports(&Ole32);
 
   DPRINT ("AddItemW() done\n");
 

reactos/lib/userenv
internal.h 1.6 -> 1.6.8.1
diff -u -r1.6 -r1.6.8.1
--- internal.h	7 May 2004 11:18:53 -0000	1.6
+++ internal.h	12 Jul 2004 19:54:46 -0000	1.6.8.1
@@ -1,4 +1,4 @@
-/* $Id: internal.h,v 1.6 2004/05/07 11:18:53 ekohl Exp $ 
+/* $Id: internal.h,v 1.6.8.1 2004/07/12 19:54:46 weiden Exp $ 
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS system libraries
@@ -37,6 +37,35 @@
 RemoveDirectoryPath (LPCWSTR lpPathName);
 
 /* misc.c */
+typedef struct _DYN_FUNCS
+{
+  HMODULE hModule;
+  union
+  {
+    PVOID foo;
+    struct
+    {
+      HRESULT (STDCALL *CoInitialize)(LPVOID pvReserved);
+      HRESULT (STDCALL *CoCreateInstance)(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID * ppv);
+      HRESULT (STDCALL *CoUninitialize)(VOID);
+    };
+  } fn;
+} DYN_FUNCS, *PDYN_FUNCS;
+
+typedef struct _DYN_MODULE
+{
+  LPWSTR Library;    /* dll file name */
+  LPSTR Functions[]; /* function names */
+} DYN_MODULE, *PDYN_MODULE;
+
+extern DYN_MODULE DynOle32;
+
+BOOL
+LoadDynamicImports(PDYN_MODULE Module, PDYN_FUNCS DynFuncs);
+
+VOID
+UnloadDynamicImports(PDYN_FUNCS DynFuncs);
+
 LPWSTR
 AppendBackslash (LPWSTR String);
 

reactos/lib/userenv
makefile 1.7 -> 1.7.6.1
diff -u -r1.7 -r1.7.6.1
--- makefile	29 May 2004 21:24:47 -0000	1.7
+++ makefile	12 Jul 2004 19:54:46 -0000	1.7.6.1
@@ -13,7 +13,7 @@
 
 TARGET_LFLAGS = -nostdlib -nostartfiles
 
-TARGET_SDKLIBS = ntdll.a kernel32.a advapi32.a ole32.a wine_uuid.a
+TARGET_SDKLIBS = ntdll.a kernel32.a advapi32.a wine_uuid.a
 
 TARGET_OBJECTS = desktop.o directory.o environment.o profile.o misc.o \
                  registry.o setup.o userenv.o

reactos/lib/userenv
misc.c 1.2 -> 1.2.10.1
diff -u -r1.2 -r1.2.10.1
--- misc.c	13 Mar 2004 20:49:07 -0000	1.2
+++ misc.c	12 Jul 2004 19:54:46 -0000	1.2.10.1
@@ -1,4 +1,4 @@
-/* $Id: misc.c,v 1.2 2004/03/13 20:49:07 ekohl Exp $
+/* $Id: misc.c,v 1.2.10.1 2004/07/12 19:54:46 weiden Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS system libraries
@@ -91,4 +91,67 @@
   return TRUE;
 }
 
+/* Dynamic DLL loading interface **********************************************/
+
+/* OLE32.DLL import table */
+DYN_MODULE DynOle32 = 
+{
+  L"ole32.dll",
+  {
+    "CoInitialize",
+    "CoCreateInstance",
+    "CoUninitialize",
+    NULL
+  }
+};
+
+/*
+   Use this function to load functions from other modules. We cannot statically
+   link to e.g. ole32.dll because those dlls would get loaded on startup with
+   winlogon and they may try to register classes etc when not even a window station
+   has been created!
+*/
+
+BOOL
+LoadDynamicImports(PDYN_MODULE Module, PDYN_FUNCS DynFuncs)
+{
+  LPSTR *fname;
+  PVOID *fn;
+  
+  ZeroMemory(DynFuncs, sizeof(DYN_FUNCS));
+  
+  DynFuncs->hModule = LoadLibraryW(Module->Library);
+  if(!DynFuncs->hModule)
+  {
+    return FALSE;
+  }
+  
+  fn = &DynFuncs->fn.foo;
+  
+  /* load the imports */
+  for(fname = Module->Functions; *fname != NULL; fname++)
+  {
+    *fn = GetProcAddress(DynFuncs->hModule, *fname);
+    if(*fn == NULL)
+    {
+      FreeLibrary(DynFuncs->hModule);
+      DynFuncs->hModule = (HMODULE)0;
+      return FALSE;
+    }
+    fn++;
+  }
+  
+  return TRUE;
+}
+
+VOID
+UnloadDynamicImports(PDYN_FUNCS DynFuncs)
+{
+  if(DynFuncs->hModule)
+  {
+    FreeLibrary(DynFuncs->hModule);
+    DynFuncs->hModule = (HMODULE)0;
+  }
+}
+
 /* EOF */

reactos/ntoskrnl/include/internal
ex.h 1.39.2.1 -> 1.39.2.2
diff -u -r1.39.2.1 -r1.39.2.2
--- ex.h	7 Jul 2004 18:02:59 -0000	1.39.2.1
+++ ex.h	12 Jul 2004 19:54:46 -0000	1.39.2.2
@@ -59,7 +59,7 @@
   PVOID ActiveMessageQueue;
   /* Rectangle of the work area */
   LONG WorkArea[4];
-  /* Handle of the desktop window. */
+  /* Pointer to the desktop window. */
   PVOID DesktopWindow;
   PVOID PrevActiveWindow;
 #endif

reactos/subsys/system/winlogon
makefile 1.10 -> 1.10.10.1
diff -u -r1.10 -r1.10.10.1
--- makefile	28 Mar 2004 12:21:41 -0000	1.10
+++ makefile	12 Jul 2004 19:54:46 -0000	1.10.10.1
@@ -1,4 +1,4 @@
-# $Id: makefile,v 1.10 2004/03/28 12:21:41 weiden Exp $
+# $Id: makefile,v 1.10.10.1 2004/07/12 19:54:46 weiden Exp $
 
 PATH_TO_TOP = ../../..
 
@@ -10,7 +10,7 @@
 
 TARGET_INSTALLDIR = system32
 
-TARGET_SDKLIBS = ntdll.a kernel32.a user32.a advapi32.a userenv.a secur32.a
+TARGET_SDKLIBS = ntdll.a kernel32.a user32.a advapi32.a secur32.a userenv.a
 
 TARGET_OBJECTS = setup.o winlogon.o wlx.o sas.o
 

reactos/subsys/system/winlogon
winlogon.c 1.31.2.1 -> 1.31.2.2
diff -u -r1.31.2.1 -r1.31.2.2
--- winlogon.c	8 Jul 2004 22:58:11 -0000	1.31.2.1
+++ winlogon.c	12 Jul 2004 19:54:46 -0000	1.31.2.2
@@ -1,4 +1,4 @@
-/* $Id: winlogon.c,v 1.31.2.1 2004/07/08 22:58:11 weiden Exp $
+/* $Id: winlogon.c,v 1.31.2.2 2004/07/12 19:54:46 weiden Exp $
  * 
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -33,8 +33,10 @@
 
 BOOL
 LoadGina(PMSGINAFUNCTIONS Functions, DWORD *DllVersion);
+BOOL
+MsGinaInit(PWLSESSION WLSession);
 PWLSESSION
-MsGinaInit(void);
+MsgGinaInitSession(void);
 void
 SessionLoop(PWLSESSION Session);
 BOOL
@@ -546,26 +548,13 @@
   
   hAppInstance = hInstance;
   
-#if START_LSASS
-   if (StartProcess(L"StartLsass"))
-     {
-	if (!StartLsass())
-	  {
-	     DbgPrint("WL: Failed to start LSASS (0x%X)\n", GetLastError());
-	  }
-     }
-#endif
-  
-  if(!(WLSession = MsGinaInit()))
+  if(!(WLSession = MsgGinaInitSession()))
   {
-    DbgPrint("WL: Failed to initialize msgina.dll\n");
-    NtShutdownSystem(ShutdownNoReboot);
+    DPRINT1("WL: Unable to create logon session object!\n");
     ExitProcess(0);
     return 0;
   }
-  
-  WLSession->LogonStatus = LOGON_INITIALIZING;
-
+  DbgPrint("WL: Stage 1 (process id %d)\n",GetCurrentProcessId());
   if(!RegisterLogonProcess(GetCurrentProcessId(), TRUE))
   {
     DbgPrint("WL: Could not register logon process\n");
@@ -573,13 +562,25 @@
     ExitProcess(0);
     return 0;
   }
-  
+  DbgPrint("WL: Stage 2 (create window stations and desktops...\n");
   if(!WlxCreateWindowStationAndDesktops(WLSession))
   {
     NtRaiseHardError(STATUS_SYSTEM_PROCESS_TERMINATED, 0, 0, 0, 0, 0);
     ExitProcess(1);
     return 1;
   }
+  DbgPrint("WL: Stage 3\n");
+#if START_LSASS
+   if (StartProcess(L"StartLsass"))
+     {
+	if (!StartLsass())
+	  {
+	     DbgPrint("WL: Failed to start LSASS (0x%X)\n", GetLastError());
+	  }
+     }
+#endif
+  
+  WLSession->LogonStatus = LOGON_INITIALIZING;
   
   /*
    * Switch to winlogon desktop
@@ -598,7 +599,15 @@
   {
     DbgPrint("WL: Cannot switch to Winlogon desktop (0x%X)\n", GetLastError());
   }
-  
+  DbgPrint("WL: Stage 4\n");
+  if(!MsGinaInit(WLSession))
+  {
+    DbgPrint("WL: Failed to initialize msgina.dll\n");
+    NtShutdownSystem(ShutdownNoReboot);
+    ExitProcess(0);
+    return 0;
+  }
+  DbgPrint("WL: Stage 5\n");
   /* Check for pending setup */
   if (GetSetupType () != 0)
   {
@@ -611,7 +620,7 @@
     ExitProcess(0);
     return 0;
   }
-  
+  DbgPrint("WL: Stage 6\n");
 #if SUPPORT_CONSOLESTART
  StartConsole = !StartIntoGUI();
  if(!StartConsole)

reactos/subsys/system/winlogon
wlx.c 1.4 -> 1.4.10.1
diff -u -r1.4 -r1.4.10.1
--- wlx.c	28 Mar 2004 12:21:41 -0000	1.4
+++ wlx.c	12 Jul 2004 19:54:46 -0000	1.4.10.1
@@ -1,4 +1,4 @@
-/* $Id: wlx.c,v 1.4 2004/03/28 12:21:41 weiden Exp $
+/* $Id: wlx.c,v 1.4.10.1 2004/07/12 19:54:46 weiden Exp $
  * 
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -631,21 +631,19 @@
 }
 
 PWLSESSION
-MsGinaInit(void)
+MsgGinaInitSession(void)
+{
+  return (PWLSESSION)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WLSESSION));
+}
+
+BOOL
+MsGinaInit(PWLSESSION WLSession)
 {
-  PWLSESSION WLSession;
   DWORD GinaDllVersion;
   
-  WLSession = (PWLSESSION)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WLSESSION));
-  if(!WLSession)
-  {
-    return NULL;
-  }
-  
   if(!LoadGina(&WLSession->MsGina.Functions, &GinaDllVersion, &WLSession->MsGina.hDllInstance))
   {
-    HeapFree(GetProcessHeap(), 0, WLSession);
-    return NULL;
+    return FALSE;
   }
   
   WLSession->MsGina.Context = NULL;
@@ -658,10 +656,9 @@
                                                (PVOID)&FunctionTable,
                                                &WLSession->MsGina.Context))
   {
-    HeapFree(GetProcessHeap(), 0, WLSession);
-    return NULL;
+    return FALSE;
   }
-  return WLSession;
+  return TRUE;
 }
 
 BOOL

reactos/subsys/win32k/include
internal.h 1.1.2.3 -> 1.1.2.4
diff -u -r1.1.2.3 -r1.1.2.4
--- internal.h	11 Jul 2004 11:10:01 -0000	1.1.2.3
+++ internal.h	12 Jul 2004 19:54:46 -0000	1.1.2.4
@@ -145,10 +145,10 @@
                                         PUNICODE_STRING MenuName, WNDPROC wpExtra, DWORD Flags);
 ULONG         FASTCALL IntGetClassLong(PWINDOW_OBJECT WindowObject, ULONG Offset, BOOL Ansi);
 ULONG         FASTCALL IntSetClassLong(PWINDOW_OBJECT WindowObject, ULONG Offset, LONG dwNewLong, BOOL Ansi);
-ULONG         FASTCALL IntGetClassName(PWINDOW_OBJECT WindowObject, LPWSTR lpClassName, ULONG nMaxCount);
-BOOL          FASTCALL ClassReferenceClassByNameOrAtom(PCLASS_OBJECT *Class, LPCWSTR ClassNameOrAtom, HINSTANCE hInstance);
-BOOL          FASTCALL ClassReferenceClassByName(PCLASS_OBJECT *Class, LPCWSTR ClassName, HINSTANCE hInstance);
-BOOL          FASTCALL ClassReferenceClassByAtom(PCLASS_OBJECT* Class, RTL_ATOM Atom, HINSTANCE hInstance);
+BOOL          FASTCALL IntGetClassName(PWINDOW_OBJECT WindowObject, PUNICODE_STRING ClassName, ULONG nMaxCount);
+BOOL          FASTCALL IntReferenceClassByNameOrAtom(PCLASS_OBJECT *Class, PUNICODE_STRING ClassNameOrAtom, HINSTANCE hInstance);
+BOOL          FASTCALL IntReferenceClassByName(PCLASS_OBJECT *Class, PUNICODE_STRING ClassName, HINSTANCE hInstance);
+BOOL          FASTCALL IntReferenceClassByAtom(PCLASS_OBJECT* Class, RTL_ATOM Atom, HINSTANCE hInstance);
 
 /* CURSORS AND ICONS **********************************************************/
 

reactos/subsys/win32k/misc
object.c 1.12.4.1 -> 1.12.4.2
diff -u -r1.12.4.1 -r1.12.4.2
--- object.c	7 Jul 2004 18:03:00 -0000	1.12.4.1
+++ object.c	12 Jul 2004 19:54:46 -0000	1.12.4.2
@@ -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: object.c,v 1.12.4.1 2004/07/07 18:03:00 weiden Exp $
+/* $Id: object.c,v 1.12.4.2 2004/07/12 19:54:46 weiden Exp $
  *
  * COPYRIGHT:      See COPYING in the top level directory
  * PROJECT:        ReactOS kernel
@@ -94,6 +94,7 @@
   ASSERT(EnumProc);
   
   /* enumerate all handles */
+  Slot = HandleTable->Handles;
   for(LastSlot = HandleTable->Handles + N_USER_HANDLES; Slot < LastSlot; Slot++)
   {
     if((ObjectHeader = *Slot) && (ObjectType == ObjectHeader->Type || ObjectType == otUNKNOWN))
@@ -129,7 +130,7 @@
   }
   
   ObjectHeader = (PUSER_OBJECT_HEADER)ExAllocatePool(PagedPool, 
-				     ObjectSize + sizeof(USER_OBJECT_HEADER));
+                                                     sizeof(USER_OBJECT_HEADER) + ObjectSize);
   if (!ObjectHeader)
   {
     DPRINT1("Not enough memory to create a user object\n");
@@ -143,15 +144,16 @@
   RtlZeroMemory(ObjectBody, ObjectSize);
   
   /* search for a free handle slot */
+  Slot = HandleTable->Handles;
   for(LastSlot = HandleTable->Handles + N_USER_HANDLES; Slot < LastSlot; Slot++)
   {
     if(InterlockedCompareExchange((LONG*)Slot, (LONG)ObjectHeader, 0) == 0)
     {
       /* found and assigned a free handle */
-      InterlockedIncrement((LONG*)HandleTable->HandleCount);
+      InterlockedIncrement((LONG*)&HandleTable->HandleCount);
       
       ObjectHeader->Slot = Slot; 
-      *Handle = (HANDLE)((++Slot - HandleTable->Handles) >> 2);
+      *Handle = (HANDLE)(((Slot - HandleTable->Handles) >> 2) + 1);
       return ObjectBody;
     }
   }
@@ -202,7 +204,7 @@
   
   /* remove the object from the handle table */
   InterlockedCompareExchange((LONG*)ObjectHeader->Slot, 0, (LONG)ObjectHeader);
-  InterlockedDecrement((LONG*)HandleTable->HandleCount);
+  InterlockedDecrement((LONG*)&HandleTable->HandleCount);
   ObjectHeader->Slot = NULL;
   
   ObmDereferenceObject(ObjectBody);
@@ -236,6 +238,7 @@
 {
   PUSER_OBJECT_HEADER *Slot, *LastSlot;
   
+  HandleTable->HandleCount = 0;
   /* Clear the handle table */
   Slot = HandleTable->Handles;
   for(LastSlot = HandleTable->Handles + N_USER_HANDLES; Slot < LastSlot; Slot++)

reactos/subsys/win32k/ntuser
class.c 1.59.4.1 -> 1.59.4.2
diff -u -r1.59.4.1 -r1.59.4.2
--- class.c	7 Jul 2004 18:03:01 -0000	1.59.4.1
+++ class.c	12 Jul 2004 19:54:46 -0000	1.59.4.2
@@ -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: class.c,v 1.59.4.1 2004/07/07 18:03:01 weiden Exp $
+/* $Id: class.c,v 1.59.4.2 2004/07/12 19:54:46 weiden Exp $
  *
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
@@ -48,10 +48,9 @@
 }
 
 BOOL FASTCALL
-ClassReferenceClassByAtom(
-   PCLASS_OBJECT* Class,
-   RTL_ATOM Atom,
-   HINSTANCE hInstance)
+IntReferenceClassByAtom(PCLASS_OBJECT* Class,
+                        RTL_ATOM Atom,
+                        HINSTANCE hInstance)
 {
    PCLASS_OBJECT Current, BestMatch = NULL;
    PLIST_ENTRY CurrentEntry;
@@ -65,7 +64,7 @@
       if (Current->Atom == Atom && (hInstance == NULL || Current->hInstance == hInstance))
       {
          *Class = Current;
-         ObmReferenceObject(Current);
+         ClassReferenceObject(Current);
          return TRUE;
       }
 
@@ -78,7 +77,7 @@
    if (BestMatch != NULL)
    {
       *Class = BestMatch;
-      ObmReferenceObject(BestMatch);
+      ClassReferenceObject(BestMatch);
       return TRUE;
    }
   
@@ -86,101 +85,92 @@
 }
 
 BOOL FASTCALL
-ClassReferenceClassByName(
-   PCLASS_OBJECT *Class,
-   LPCWSTR ClassName,
-   HINSTANCE hInstance)
+IntReferenceClassByName(PCLASS_OBJECT *Class,
+                        PUNICODE_STRING ClassName,
+                        HINSTANCE hInstance)
 {
-   PWINSTATION_OBJECT WinStaObject;
-   NTSTATUS Status;
-   BOOL Found;
    RTL_ATOM ClassAtom;
+   NTSTATUS Status;
+   PWINSTATION_OBJECT WinStaObject = PsGetWin32Process()->WindowStation;
 
-   if (!ClassName)
+   if (!ClassName || !WinStaObject)
       return FALSE;
 
-   Status = IntValidateWindowStationHandle(
-      PROCESS_WINDOW_STATION(),
-      KernelMode,
-      0,
-      &WinStaObject);
-
-   if (!NT_SUCCESS(Status))
-   {
-      DPRINT("Validation of window station handle (0x%X) failed\n",
-	     PROCESS_WINDOW_STATION());
-      return FALSE;
-   }
-
    Status = RtlLookupAtomInAtomTable(
       WinStaObject->AtomTable,
-      (LPWSTR)ClassName,
+      (LPWSTR)ClassName->Buffer,
       &ClassAtom);
 
    if (!NT_SUCCESS(Status))
    {
-      ObDereferenceObject(WinStaObject);  
       return FALSE;
    }
 
-   Found = ClassReferenceClassByAtom(Class, ClassAtom, hInstance);
-   ObDereferenceObject(WinStaObject);  
-
-   return Found;
+   return IntReferenceClassByAtom(Class, ClassAtom, hInstance);
 }
 
 BOOL FASTCALL
-ClassReferenceClassByNameOrAtom(PCLASS_OBJECT *Class, LPCWSTR ClassNameOrAtom, HINSTANCE hInstance)
+IntReferenceClassByNameOrAtom(PCLASS_OBJECT *Class,
+                              PUNICODE_STRING ClassNameOrAtom,
+			      HINSTANCE hInstance)
 {
-   BOOL Found;
-
-   if (IS_ATOM(ClassNameOrAtom))
-      Found = ClassReferenceClassByAtom(Class, (RTL_ATOM)((ULONG_PTR)ClassNameOrAtom), hInstance);
-   else
-      Found = ClassReferenceClassByName(Class, ClassNameOrAtom, hInstance);
-
-   return Found;
+   if (IS_ATOM(ClassNameOrAtom->Buffer))
+      return IntReferenceClassByAtom(Class, (RTL_ATOM)((ULONG_PTR)ClassNameOrAtom->Buffer), hInstance);
+   
+   return IntReferenceClassByName(Class, ClassNameOrAtom, hInstance);
 }
 
-ULONG FASTCALL
-IntGetClassName(PWINDOW_OBJECT WindowObject, LPWSTR lpClassName, ULONG nMaxCount)
+BOOL FASTCALL
+IntGetClassName(PWINDOW_OBJECT WindowObject, PUNICODE_STRING ClassName, ULONG nMaxCount)
 {
-   ULONG Length;
-   LPWSTR Name;
-   PWINSTATION_OBJECT WinStaObject;
-   NTSTATUS Status;
-
-   Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
-      KernelMode, 0, &WinStaObject);
-   if (!NT_SUCCESS(Status))
-   {
-      DPRINT("Validation of window station handle (0x%X) failed\n",
-         PROCESS_WINDOW_STATION());
-      return 0;
-   }
-   Length = 0;
-   Status = RtlQueryAtomInAtomTable(WinStaObject->AtomTable,
-      WindowObject->Class->Atom, NULL, NULL, NULL, &Length);
-   Name = ExAllocatePoolWithTag(PagedPool, Length + sizeof(UNICODE_NULL), TAG_STRING);
-   Status = RtlQueryAtomInAtomTable(WinStaObject->AtomTable,
-      WindowObject->Class->Atom, NULL, NULL, Name, &Length);
-   if (!NT_SUCCESS(Status))
-   {
-      DPRINT("IntGetClassName: RtlQueryAtomInAtomTable failed\n");
-      return 0;
-   }
-   Length /= sizeof(WCHAR);
-   if (Length > nMaxCount)
-   {
-      Length = nMaxCount;
-   }
-   wcsncpy(lpClassName, Name, Length);
-   /* FIXME: Check buffer size before doing this! */
-   *(lpClassName + Length) = 0;
-   ExFreePool(Name);
-   ObDereferenceObject(WinStaObject);
+  ULONG Length;
+  NTSTATUS Status;
+  PWINSTATION_OBJECT WinStaObject = PsGetWin32Process()->WindowStation;
 
-   return Length;
+  if (!WinStaObject)
+  {
+    return 0;
+  }
+  
+  ClassName->Length = 0;
+  Status = RtlQueryAtomInAtomTable(WinStaObject->AtomTable,
+                                   WindowObject->Class->Atom,
+                                   NULL,
+                                   NULL,
+                                   NULL,
+                                   &Length);
+  if(!NT_SUCCESS(Status))
+  {
+    return FALSE;
+  }
+  
+  ClassName->Length = (USHORT)Length;
+  ClassName->MaximumLength = ClassName->Length + sizeof(WCHAR);
+  ClassName->Buffer = ExAllocatePoolWithTag(PagedPool, ClassName->MaximumLength, TAG_STRING);
+  
+  if(!ClassName->Buffer)
+  {
+    DPRINT1("IntGetClassName: Not enough memory to allocate memory for the class name!\n");
+    return FALSE;
+  }
+  
+  Status = RtlQueryAtomInAtomTable(WinStaObject->AtomTable,
+                                   WindowObject->Class->Atom,
+                                   NULL,
+                                   NULL,
+                                   ClassName->Buffer,
+                                   &Length);
+  if(!NT_SUCCESS(Status))
+  {
+    DPRINT1("IntGetClassName: RtlQueryAtomInAtomTable failed\n");
+    RtlFreeUnicodeString(ClassName);
+    return FALSE;
+  }
+  
+  ClassName->Length = (USHORT)Length;
+  ClassName->Buffer[Length / sizeof(WCHAR)] = L'\0';
+  
+  return TRUE;
 }
 
 PCLASS_OBJECT FASTCALL
@@ -200,7 +190,7 @@
 	/* Check for double registration of the class. */
 	if (PsGetWin32Process() != NULL)
 	{
-		if (ClassReferenceClassByAtom(&ClassObject, Atom, lpwcx->hInstance))
+		if (IntReferenceClassByAtom(&ClassObject, Atom, lpwcx->hInstance))
 		{
 			/*
 			 * NOTE: We may also get a global class from
@@ -301,10 +291,19 @@
   WinStaObject = PsGetWin32Process()->WindowStation;
   if(WinStaObject == NULL)
   {
-    DPRINT1("Unable to register class process %d, window station is inaccessible\n", PsGetCurrentProcessId());
+    if(IS_ATOM(ClassName->Buffer))
+    {
+      DbgPrint("XUnable to register class 0x%x (process %d), window station is inaccessible\n", ClassName->Buffer, PsGetCurrentProcessId());
+    }
+    else
+    {
+      DbgPrint("XUnable to register class %wZ (process %d), window station is inaccessible\n", ClassName, PsGetCurrentProcessId());
+    }
     return NULL;
   }
   
+  /* FIXME - check the rights of the thread's desktop if we're allowed to register a class? */
+  
   if(ClassName->Length)
   {
     DPRINT1("IntRegisterClass(%wZ)\n", ClassName);
@@ -315,7 +314,7 @@
     {
       DPRINT("Failed adding class name (%wZ) to atom table\n", ClassName);
       SetLastNtError(Status);      
-      return((RTL_ATOM)0);
+      return NULL;
     }
   }
   else
@@ -333,6 +332,7 @@
     return NULL;
   }
   
+  /* FIXME - reference the window station? */
   InsertTailList(&PsGetWin32Process()->ClassListHead, &Ret->ListEntry);
   
   return Ret;

reactos/subsys/win32k/ntuser
ntuser.c 1.1.2.2 -> 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- ntuser.c	11 Jul 2004 11:10:01 -0000	1.1.2.2
+++ ntuser.c	12 Jul 2004 19:54:47 -0000	1.1.2.3
@@ -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: ntuser.c,v 1.1.2.2 2004/07/11 11:10:01 weiden Exp $
+/* $Id: ntuser.c,v 1.1.2.3 2004/07/12 19:54:47 weiden Exp $
  *
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
@@ -255,6 +255,138 @@
   END_NTUSER();
 }
 
+DWORD STDCALL
+NtUserCallTwoParam(DWORD Param1,
+                   DWORD Param2,
+                   DWORD Routine)
+{
+  BEGIN_NTUSER(DWORD, 0);
+  
+  switch(Routine)
+  {
+    case TWOPARAM_ROUTINE_SETDCPENCOLOR:
+      /* FIXME */
+      Result = (DWORD)IntSetDCColor((HDC)Param1, OBJ_PEN, (COLORREF)Param2);
+      break;
+    
+    case TWOPARAM_ROUTINE_SETDCBRUSHCOLOR:
+      /* FIXME */
+      Result = (DWORD)IntSetDCColor((HDC)Param1, OBJ_BRUSH, (COLORREF)Param2);
+      break;
+    
+    case TWOPARAM_ROUTINE_GETDCCOLOR:
+      /* FIXME */
+      Result = (DWORD)IntGetDCColor((HDC)Param1, (ULONG)Param2);
+      break;
+    
+    case TWOPARAM_ROUTINE_GETWINDOWRGNBOX:
+    {
+      RECT SafeRect;
+      NTUSER_USER_OBJECT(WINDOW, Window);
+      BEGIN_BUFFERS();
+      
+      ENTER_CRITICAL_SHARED();
+      VALIDATE_USER_OBJECT(WINDOW, (HWND)Param1, Window);
+      Result = (DWORD)IntGetWindowRgnBox(Window, &SafeRect);
+      LEAVE_CRITICAL();
+      
+      ErrorResult = ERROR; /* return ERROR in case we fail */
+      NTUSER_COPY_BUFFER_BACK_NTERROR((PVOID)Param2, &SafeRect, sizeof(RECT));
+      break;
+    }
+    
+    case TWOPARAM_ROUTINE_GETWINDOWRGN:
+    {
+      NTUSER_USER_OBJECT(WINDOW, Window);
+      
+      ENTER_CRITICAL_SHARED();
+      VALIDATE_USER_OBJECT(WINDOW, (HWND)Param1, Window);
+      Result = (DWORD)IntGetWindowRgn(Window, (HRGN)Param2);
+      LEAVE_CRITICAL();
+      break;
+    }
+    
+    case TWOPARAM_ROUTINE_SETMENUBARHEIGHT:
+      DPRINT1("TWOPARAM_ROUTINE_SETMENUBARHEIGHT is unimplemented!\n");
+      break;
+    
+    case TWOPARAM_ROUTINE_SETMENUITEMRECT:
+      DPRINT1("TWOPARAM_ROUTINE_SETMENUITEMRECT is unimplemented!\n");
+      break;
+    
+    case TWOPARAM_ROUTINE_SETGUITHRDHANDLE:
+    {
+      PUSER_MESSAGE_QUEUE MsgQueue;
+      NTUSER_USER_OBJECT(WINDOW, Window);
+      
+      ENTER_CRITICAL();
+      VALIDATE_USER_OBJECT(WINDOW, (HWND)Param2, Window);
+      MsgQueue = PsGetCurrentThread()->Win32Thread->MessageQueue;
+      if(Window->MessageQueue != MsgQueue)
+      {
+        NTUSER_FAIL_ERROR(ERROR_ACCESS_DENIED);
+      }
+      Result = (DWORD)MsqSetStateWindow(MsgQueue, (ULONG)Param1, Window);
+      LEAVE_CRITICAL();
+      
+      break;
+    }
+    
+    case TWOPARAM_ROUTINE_VALIDATERGN:
+    {
+      /* FIXME !!!!! REMOVE THIS ROUTINE AND EXPORT NtUserValidateRgn() INSTEAD! */
+      Result = NtUserValidateRgn((HWND)Param1, (HRGN)Param2);
+      break;
+    }
+    
+    case TWOPARAM_ROUTINE_SETWNDCONTEXTHLPID:
+    {
+      NTUSER_USER_OBJECT(WINDOW, Window);
+      
+      ENTER_CRITICAL();
+      VALIDATE_USER_OBJECT(WINDOW, (HWND)Param1, Window);
+      Window->ContextHelpId = Param2;
+      LEAVE_CRITICAL();
+      
+      Result = (DWORD)TRUE;
+      break;
+    }
+    
+    case TWOPARAM_ROUTINE_SETCARETPOS:
+      DPRINT1("TWOPARAM_ROUTINE_SETCARETPOS is unimplemented!\n");
+      break;
+    
+    case TWOPARAM_ROUTINE_GETWINDOWINFO:
+    {
+      WINDOWINFO SafeWi;
+      NTUSER_USER_OBJECT(WINDOW, Window);
+      BEGIN_BUFFERS();
+      
+      ENTER_CRITICAL_SHARED();
+      VALIDATE_USER_OBJECT(WINDOW, (HWND)Param1, Window);
+      Result = (DWORD)IntGetWindowInfo(Window, &SafeWi);
+      LEAVE_CRITICAL();
+      
+      if(Result)
+      {
+        NTUSER_COPY_BUFFER_BACK_NTERROR((PVOID)Param2, &SafeWi, sizeof(WINDOWINFO));
+      }
+      break;
+    }
+    
+    case TWOPARAM_ROUTINE_REGISTERLOGONPROC:
+      Result = (DWORD)IntRegisterLogonProcess(Param1, (BOOL)Param2);
+      break;
+    
+    default:
+      DPRINT1("Calling invalid routine number 0x%x in NtUserCallTwoParam\n", Routine);
+      NTUSER_FAIL_ERROR(ERROR_INVALID_PARAMETER);
+      break;
+  }
+  
+  END_NTUSER();
+}
+
 HANDLE STDCALL
 NtUserCreateCursorIconHandle(PICONINFO IconInfo, BOOL Indirect)
 {
@@ -338,7 +470,7 @@
   NTSTATUS Status;
   BEGIN_BUFFERS();
   BEGIN_NTUSER(HWND, NULL);
-  DbgPrint("Called NtUserCreateWindowEx\n");
+  
   if(UnsafeWindowName != NULL)
   {
     Status = IntSafeCopyUnicodeString(&SafeWindowName, UnsafeWindowName);

reactos/subsys/win32k/ntuser
stubs.c 1.45.8.2 -> 1.45.8.3
diff -u -r1.45.8.2 -r1.45.8.3
--- stubs.c	11 Jul 2004 11:10:01 -0000	1.45.8.2
+++ stubs.c	12 Jul 2004 19:54:47 -0000	1.45.8.3
@@ -1,4 +1,4 @@
-/* $Id: stubs.c,v 1.45.8.2 2004/07/11 11:10:01 weiden Exp $
+/* $Id: stubs.c,v 1.45.8.3 2004/07/12 19:54:47 weiden Exp $
  *
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
@@ -1388,18 +1388,6 @@
 }
 
 
-DWORD
-STDCALL
-NtUserCallTwoParam(
-  DWORD Param1,
-  DWORD Param2,
-  DWORD Routine)
-{
-   UNIMPLEMENTED;
-   return 0;
-}
-
-
 BOOL
 STDCALL
 NtUserCallHwndLock(

reactos/subsys/win32k/ntuser
window.c 1.242.2.1 -> 1.242.2.2
diff -u -r1.242.2.1 -r1.242.2.2
--- window.c	7 Jul 2004 18:03:01 -0000	1.242.2.1
+++ window.c	12 Jul 2004 19:54:47 -0000	1.242.2.2
@@ -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: window.c,v 1.242.2.1 2004/07/07 18:03:01 weiden Exp $
+/* $Id: window.c,v 1.242.2.2 2004/07/12 19:54:47 weiden Exp $
  *
  * COPYRIGHT:        See COPYING in the top level directory
  * PROJECT:          ReactOS kernel
@@ -732,12 +732,10 @@
   #if 0
   BOOL MenuChanged;
   #endif
-  BOOL ClassFound;
-  PWSTR ClassNameString;
   
   ParentWindow = IntGetDesktopWindow();
   OwnerWindow = NULL;
-
+  
   /* Check the window station. */
   Status = IntValidateWindowStationHandle(PROCESS_WINDOW_STATION(),
 					  KernelMode,
@@ -745,12 +743,11 @@
 					  &WinStaObject);
   if (!NT_SUCCESS(Status))
   {
-    ClassDereferenceObject(ClassObject);
     DPRINT("Validation of window station handle (0x%X) failed\n",
 	   PROCESS_WINDOW_STATION());
     return NULL;
   }
-
+  
   if (Parent)
   {
     if ((dwStyle & (WS_CHILD | WS_POPUP)) == WS_CHILD)
@@ -766,48 +763,31 @@
   {
     return NULL;  /* WS_CHILD needs a parent, but WS_POPUP doesn't */
   }
-
-  /* Check the class. */
-  if (IS_ATOM(ClassName->Buffer))
-  {
-    ClassFound = ClassReferenceClassByNameOrAtom(&ClassObject, ClassName->Buffer, hInstance);
-  }
-  else
-  {
-    Status = IntUnicodeStringToNULLTerminated(&ClassNameString, ClassName);
-    if (! NT_SUCCESS(Status))
-    {
-      return NULL;
-    }
-    ClassFound = ClassReferenceClassByNameOrAtom(&ClassObject, ClassNameString, hInstance);
-    IntFreeNULLTerminatedFromUnicodeString(ClassNameString, ClassName);
-  }
   
-  if (!ClassFound)
+  /* Lookup and reference the class object */
+  if(!IntReferenceClassByNameOrAtom(&ClassObject, ClassName, hInstance))
   {
-    if (IS_ATOM(ClassName->Buffer))
-    {
-      DPRINT1("Class 0x%x not found\n", (DWORD_PTR) ClassName->Buffer);
-    }
-    else
-    {
-      DPRINT1("Class %wZ not found\n", ClassName);
-    }
-    
+    ObDereferenceObject(WinStaObject);
     return NULL;
   }
-
+  
   /* Create the window object. */
-  WindowObject = (PWINDOW_OBJECT)ObmCreateObject(PsGetWin32Process()->WindowStation->HandleTable, &Handle,
-                                                 otWINDOW, sizeof(WINDOW_OBJECT) + ClassObject->cbWndExtra);
+  WindowObject = (PWINDOW_OBJECT)ObmCreateObject(WinStaObject->HandleTable,
+                                                 &Handle,
+                                                 otWINDOW,
+                                                 sizeof(WINDOW_OBJECT) + ClassObject->cbWndExtra);
+  DbgPrint("ObmCreateObject returned 0x%x\n", WindowObject);
   if(WindowObject == NULL)
   {
+    DbgPrint("fail:1\n");
     ClassDereferenceObject(ClassObject);
+    DbgPrint("fail:2\n");
     ObDereferenceObject(WinStaObject);
+    DbgPrint("fail:3\n");
     SetLastNtError(STATUS_INSUFFICIENT_RESOURCES);
     return NULL;
   }
-  DPRINT("Created object with handle %X\n", Handle);
+  DPRINT1("Created object with handle %X on Desktop 0x%x\n", Handle, PsGetWin32Thread()->Desktop);
   
   /* If there is no desktop window yet, we must be creating it */
   InterlockedCompareExchange((LONG*)&PsGetWin32Thread()->Desktop->DesktopWindow, 0, (LONG)WindowObject);

reactos/subsys/win32k/ntuser
winsta.c 1.64.4.1 -> 1.64.4.2
diff -u -r1.64.4.1 -r1.64.4.2
--- winsta.c	7 Jul 2004 18:03:01 -0000	1.64.4.1
+++ winsta.c	12 Jul 2004 19:54:48 -0000	1.64.4.2
@@ -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: winsta.c,v 1.64.4.1 2004/07/07 18:03:01 weiden Exp $
+ *  $Id: winsta.c,v 1.64.4.2 2004/07/12 19:54:48 weiden Exp $
  *
  *  COPYRIGHT:        See COPYING in the top level directory
  *  PROJECT:          ReactOS kernel
@@ -378,7 +378,7 @@
    WindowStationObject->HandleTable = ObmCreateHandleTable();
    if (!WindowStationObject->HandleTable)
    {
-      DPRINT("Failed creating handle table\n");
+      DPRINT1("Failed creating handle table\n");
       ExFreePool(CurInfo);
       ExFreePool(WindowStationName.Buffer);
       /* FIXME - Delete window station object */
@@ -809,7 +809,7 @@
 
    if (!NT_SUCCESS(Status)) 
    {
-      DPRINT("Validation of window station handle (0x%X) failed\n", 
+      DPRINT1("Validation of window station handle (0x%X) failed\n", 
          hWindowStation);
       return FALSE;
    }
@@ -824,6 +824,7 @@
       if (Win32Process->WindowStation != NULL)
          ObDereferenceObject(Win32Process->WindowStation);
       Win32Process->WindowStation = Object;
+      DbgPrint("Window Station is set!\n");
    }
 
    SET_PROCESS_WINDOW_STATION(hWindowStation);

reactos/lib/acledit
acledit.map removed after 1.1.2.1
diff -N acledit.map
--- acledit.map	11 Jul 2004 11:10:01 -0000	1.1.2.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,162 +0,0 @@
-
-acledit.nostrip.dll:     file format pei-i386
-
-Disassembly of section .text:
-
-10001000 <_DllMain@12>:
-DllMain(
-	HINSTANCE hinstDLL,
-	DWORD     dwReason,
-	LPVOID    lpvReserved)
-{
-10001000:	55                   	push   %ebp
-10001001:	89 e5                	mov    %esp,%ebp
-  switch (dwReason)
-10001003:	8b 45 0c             	mov    0xc(%ebp),%eax
-10001006:	83 f8 01             	cmp    $0x1,%eax
-10001009:	74 02                	je     1000100d <_DllMain@12+0xd>
-1000100b:	eb 08                	jmp    10001015 <_DllMain@12+0x15>
-  {
-    case DLL_PROCESS_ATTACH:
-      hDllInstance = hinstDLL;
-1000100d:	8b 45 08             	mov    0x8(%ebp),%eax
-10001010:	a3 00 30 00 10       	mov    %eax,0x10003000
-      break;
-    case DLL_THREAD_ATTACH:
-      break;
-    case DLL_THREAD_DETACH:
-      break;
-    case DLL_PROCESS_DETACH:
-      break;
-  }
-  return TRUE;
-10001015:	b8 01 00 00 00       	mov    $0x1,%eax
-}
-1000101a:	c9                   	leave  
-1000101b:	c2 0c 00             	ret    $0xc
-1000101e:	90                   	nop    
-1000101f:	90                   	nop    
-
-10001020 <_EditAuditInfo@4>:
-10001020:	55                   	push   %ebp
-10001021:	89 e5                	mov    %esp,%ebp
-10001023:	83 ec 08             	sub    $0x8,%esp
-10001026:	6a 1c                	push   $0x1c
-10001028:	68 0e 20 00 10       	push   $0x1000200e
-1000102d:	68 00 20 00 10       	push   $0x10002000
-10001032:	68 18 20 00 10       	push   $0x10002018
-10001037:	e8 04 01 00 00       	call   10001140 <_DbgPrint>
-1000103c:	83 c4 10             	add    $0x10,%esp
-1000103f:	b8 00 00 00 00       	mov    $0x0,%eax
-10001044:	c9                   	leave  
-10001045:	c2 04 00             	ret    $0x4
-
-10001048 <_EditOwnerInfo@4>:
-10001048:	55                   	push   %ebp
-10001049:	89 e5                	mov    %esp,%ebp
-1000104b:	83 ec 08             	sub    $0x8,%esp
-1000104e:	6a 24                	push   $0x24
-10001050:	68 0e 20 00 10       	push   $0x1000200e
-10001055:	68 41 20 00 10       	push   $0x10002041
-1000105a:	68 18 20 00 10       	push   $0x10002018
-1000105f:	e8 dc 00 00 00       	call   10001140 <_DbgPrint>
-10001064:	83 c4 10             	add    $0x10,%esp
-10001067:	b8 00 00 00 00       	mov    $0x0,%eax
-1000106c:	c9                   	leave  
-1000106d:	c2 04 00             	ret    $0x4
-
-10001070 <_EditPermissionInfo@4>:
-10001070:	55                   	push   %ebp
-10001071:	89 e5                	mov    %esp,%ebp
-10001073:	83 ec 08             	sub    $0x8,%esp
-10001076:	6a 2c                	push   $0x2c
-10001078:	68 0e 20 00 10       	push   $0x1000200e
-1000107d:	68 4f 20 00 10       	push   $0x1000204f
-10001082:	68 18 20 00 10       	push   $0x10002018
-10001087:	e8 b4 00 00 00       	call   10001140 <_DbgPrint>
-1000108c:	83 c4 10             	add    $0x10,%esp
-1000108f:	b8 00 00 00 00       	mov    $0x0,%eax
-10001094:	c9                   	leave  
-10001095:	c2 04 00             	ret    $0x4
-
-10001098 <_FMExtensionProcW@12>:
-10001098:	55                   	push   %ebp
-10001099:	89 e5                	mov    %esp,%ebp
-1000109b:	83 ec 08             	sub    $0x8,%esp
-1000109e:	8b 45 0c             	mov    0xc(%ebp),%eax
-100010a1:	66 89 45 fe          	mov    %ax,0xfffffffe(%ebp)
-100010a5:	6a 36                	push   $0x36
-100010a7:	68 0e 20 00 10       	push   $0x1000200e
-100010ac:	68 62 20 00 10       	push   $0x10002062
-100010b1:	68 18 20 00 10       	push   $0x10002018
-100010b6:	e8 85 00 00 00       	call   10001140 <_DbgPrint>
-100010bb:	83 c4 10             	add    $0x10,%esp
-100010be:	b8 00 00 00 00       	mov    $0x0,%eax
-100010c3:	c9                   	leave  
-100010c4:	c2 0c 00             	ret    $0xc
-
-100010c7 <_SedDiscretionaryAclEditor@52>:
-
-100010c7:	55                   	push   %ebp
-100010c8:	89 e5                	mov    %esp,%ebp
-100010ca:	83 ec 08             	sub    $0x8,%esp
-100010cd:	6a 4a                	push   $0x4a
-100010cf:	68 0e 20 00 10       	push   $0x1000200e
-100010d4:	68 73 20 00 10       	push   $0x10002073
-100010d9:	68 18 20 00 10       	push   $0x10002018
-100010de:	e8 5d 00 00 00       	call   10001140 <_DbgPrint>
-100010e3:	83 c4 10             	add    $0x10,%esp
-100010e6:	b8 00 00 00 00       	mov    $0x0,%eax
-100010eb:	c9                   	leave  
-100010ec:	c2 34 00             	ret    $0x34
-
-100010ef <_SedTakeOwnership@56>:
-100010ef:	55                   	push   %ebp
-100010f0:	89 e5                	mov    %esp,%ebp
-100010f2:	83 ec 08             	sub    $0x8,%esp
-100010f5:	6a 5f                	push   $0x5f
-100010f7:	68 0e 20 00 10       	push   $0x1000200e
-100010fc:	68 8d 20 00 10       	push   $0x1000208d
-10001101:	68 18 20 00 10       	push   $0x10002018
-10001106:	e8 35 00 00 00       	call   10001140 <_DbgPrint>
-1000110b:	83 c4 10             	add    $0x10,%esp
-1000110e:	b8 00 00 00 00       	mov    $0x0,%eax
-10001113:	c9                   	leave  
-10001114:	c2 38 00             	ret    $0x38
-
-10001117 <_SedSystemAclEditor@48>:
-10001117:	55                   	push   %ebp
-10001118:	89 e5                	mov    %esp,%ebp
-1000111a:	83 ec 08             	sub    $0x8,%esp
-1000111d:	6a 72                	push   $0x72
-1000111f:	68 0e 20 00 10       	push   $0x1000200e
-10001124:	68 9e 20 00 10       	push   $0x1000209e
-10001129:	68 18 20 00 10       	push   $0x10002018
-1000112e:	e8 0d 00 00 00       	call   10001140 <_DbgPrint>
-10001133:	83 c4 10             	add    $0x10,%esp
-10001136:	b8 00 00 00 00       	mov    $0x0,%eax
-1000113b:	c9                   	leave  
-1000113c:	c2 30 00             	ret    $0x30
-1000113f:	90                   	nop    
-
-10001140 <_DbgPrint>:
-10001140:	ff 25 38 50 00 10    	jmp    *0x10005038
-10001146:	90                   	nop    
-10001147:	90                   	nop    
-	...
-
-10001150 <__CTOR_LIST__>:
-10001150:	ff                   	(bad)  
-10001151:	ff                   	(bad)  
-10001152:	ff                   	(bad)  
-10001153:	ff 00                	incl   (%eax)
-10001155:	00 00                	add    %al,(%eax)
-	...
-
-10001158 <__DTOR_LIST__>:
-10001158:	ff                   	(bad)  
-10001159:	ff                   	(bad)  
-1000115a:	ff                   	(bad)  
-1000115b:	ff 00                	incl   (%eax)
-1000115d:	00 00                	add    %al,(%eax)
-	...
CVSspam 0.2.8