1 removed + 17 modified, total 18 files
reactos/include/win32k
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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