Change all Init functions to be NTAPI instead of FASTCALL, return NTSTATUS, and be an INIT_FUNCTION (saving incredible 2k). Simplify the initialization sequence by using a simple macro. Delete a comment that is not true anymore.
Move some globals to appropriate file.

svn path=/trunk/; revision=49455
This commit is contained in:
Timo Kreuzer 2010-11-03 00:51:19 +00:00
parent 85e5b5be56
commit 6cfc0da40b
42 changed files with 189 additions and 214 deletions

View file

@ -20,15 +20,16 @@ static PGRAPHICS_DEVICE gpGraphicsDeviceLast = NULL;
static HSEMAPHORE ghsemGraphicsDeviceList; static HSEMAPHORE ghsemGraphicsDeviceList;
static ULONG giDevNum = 1; static ULONG giDevNum = 1;
BOOL INIT_FUNCTION
NTSTATUS
NTAPI NTAPI
InitDeviceImpl() InitDeviceImpl()
{ {
ghsemGraphicsDeviceList = EngCreateSemaphore(); ghsemGraphicsDeviceList = EngCreateSemaphore();
if (!ghsemGraphicsDeviceList) if (!ghsemGraphicsDeviceList)
return FALSE; return STATUS_INSUFFICIENT_RESOURCES;
return TRUE; return STATUS_SUCCESS;
} }

View file

@ -26,7 +26,8 @@ LDEVOBJ *gpldevWin32k = NULL;
/** Private functions *********************************************************/ /** Private functions *********************************************************/
BOOL INIT_FUNCTION
NTSTATUS
NTAPI NTAPI
InitLDEVImpl() InitLDEVImpl()
{ {
@ -34,7 +35,7 @@ InitLDEVImpl()
ghsemLDEVList = EngCreateSemaphore(); ghsemLDEVList = EngCreateSemaphore();
if (!ghsemLDEVList) if (!ghsemLDEVList)
{ {
return FALSE; return STATUS_INSUFFICIENT_RESOURCES;
} }
/* Allocate a LDEVOBJ for win32k */ /* Allocate a LDEVOBJ for win32k */
@ -44,7 +45,7 @@ InitLDEVImpl()
GDITAG_LDEV); GDITAG_LDEV);
if (!gpldevWin32k) if (!gpldevWin32k)
{ {
return FALSE; return STATUS_NO_MEMORY;
} }
/* Initialize the LDEVOBJ for win32k */ /* Initialize the LDEVOBJ for win32k */
@ -62,7 +63,7 @@ InitLDEVImpl()
gpldevWin32k->pGdiDriverInfo->ExportSectionPointer = NULL; gpldevWin32k->pGdiDriverInfo->ExportSectionPointer = NULL;
gpldevWin32k->pGdiDriverInfo->ImageLength = 0; // FIXME; gpldevWin32k->pGdiDriverInfo->ImageLength = 0; // FIXME;
return TRUE; return STATUS_SUCCESS;
} }
PLDEVOBJ PLDEVOBJ

View file

@ -18,12 +18,14 @@ PPDEVOBJ gppdevPrimary = NULL;
static PPDEVOBJ gppdevList = NULL; static PPDEVOBJ gppdevList = NULL;
static HSEMAPHORE ghsemPDEV; static HSEMAPHORE ghsemPDEV;
BOOL INIT_FUNCTION
NTSTATUS
NTAPI NTAPI
InitPDEVImpl() InitPDEVImpl()
{ {
ghsemPDEV = EngCreateSemaphore(); ghsemPDEV = EngCreateSemaphore();
return TRUE; if (!ghsemPDEV) return STATUS_INSUFFICIENT_RESOURCES;
return STATUS_SUCCESS;
} }

View file

@ -634,11 +634,13 @@ EXLATEOBJ_vCleanup(PEXLATEOBJ pexlo)
pexlo->xlo.pulXlate = pexlo->aulXlate; pexlo->xlo.pulXlate = pexlo->aulXlate;
} }
VOID INIT_FUNCTION
NTSTATUS
NTAPI
InitXlateImpl(VOID) InitXlateImpl(VOID)
{ {
EXLATEOBJ_vInitTrivial(&gexloTrivial); EXLATEOBJ_vInitTrivial(&gexloTrivial);
return STATUS_SUCCESS;
} }

View file

@ -11,7 +11,9 @@ typedef struct _ACCELERATOR_TABLE
LPACCEL Table; LPACCEL Table;
} ACCELERATOR_TABLE, *PACCELERATOR_TABLE; } ACCELERATOR_TABLE, *PACCELERATOR_TABLE;
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitAcceleratorImpl(VOID); InitAcceleratorImpl(VOID);
NTSTATUS FASTCALL NTSTATUS FASTCALL

View file

@ -159,7 +159,7 @@ typedef struct _DC
extern PDC defaultDCstate; extern PDC defaultDCstate;
NTSTATUS FASTCALL InitDcImpl(VOID); INIT_FUNCTION NTSTATUS NTAPI InitDcImpl();
PPDEVOBJ FASTCALL IntEnumHDev(VOID); PPDEVOBJ FASTCALL IntEnumHDev(VOID);
PDC NTAPI DC_AllocDcWithHandle(); PDC NTAPI DC_AllocDcWithHandle();
VOID FASTCALL DC_InitDC(HDC DCToInit); VOID FASTCALL DC_InitDC(HDC DCToInit);

View file

@ -45,7 +45,9 @@ typedef struct _SHELL_HOOK_WINDOW
HWND hWnd; HWND hWnd;
} SHELL_HOOK_WINDOW, *PSHELL_HOOK_WINDOW; } SHELL_HOOK_WINDOW, *PSHELL_HOOK_WINDOW;
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitDesktopImpl(VOID); InitDesktopImpl(VOID);
NTSTATUS FASTCALL NTSTATUS FASTCALL

View file

@ -30,7 +30,8 @@ EngpRegisterGraphicsDevice(
PUNICODE_STRING pustrDescription, PUNICODE_STRING pustrDescription,
PDEVMODEW pdmDefault); PDEVMODEW pdmDefault);
BOOL INIT_FUNCTION
NTSTATUS
NTAPI NTAPI
InitDeviceImpl(); InitDeviceImpl();

View file

@ -59,6 +59,8 @@ enum BASEFLAGS
BASEFLAG_READY_TO_DIE = 0x1000 BASEFLAG_READY_TO_DIE = 0x1000
}; };
extern PSECTION_OBJECT GdiTableSection;
BOOL INTERNAL_CALL GDIOBJ_OwnedByCurrentProcess(HGDIOBJ ObjectHandle); BOOL INTERNAL_CALL GDIOBJ_OwnedByCurrentProcess(HGDIOBJ ObjectHandle);
BOOL INTERNAL_CALL GDIOBJ_SetOwnership(HGDIOBJ ObjectHandle, PEPROCESS Owner); BOOL INTERNAL_CALL GDIOBJ_SetOwnership(HGDIOBJ ObjectHandle, PEPROCESS Owner);
BOOL INTERNAL_CALL GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom, HGDIOBJ CopyTo); BOOL INTERNAL_CALL GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom, HGDIOBJ CopyTo);
@ -75,6 +77,11 @@ VOID INTERNAL_CALL GDIOBJ_LockMultipleObjs(ULONG ulCount, IN HGDIOBJ* ahObj, OUT
PVOID INTERNAL_CALL GDI_MapHandleTable(PSECTION_OBJECT SectionObject, PEPROCESS Process); PVOID INTERNAL_CALL GDI_MapHandleTable(PSECTION_OBJECT SectionObject, PEPROCESS Process);
INIT_FUNCTION
NTSTATUS
NTAPI
InitGdiHandleTable();
#define GDIOBJ_GetObjectType(Handle) \ #define GDIOBJ_GetObjectType(Handle) \
GDI_HANDLE_GET_TYPE(Handle) GDI_HANDLE_GET_TYPE(Handle)

View file

@ -4,6 +4,9 @@ BOOL FASTCALL co_IntGraphicsCheck(BOOL Create);
BOOL FASTCALL IntCreatePrimarySurface(VOID); BOOL FASTCALL IntCreatePrimarySurface(VOID);
VOID FASTCALL IntDestroyPrimarySurface(VOID); VOID FASTCALL IntDestroyPrimarySurface(VOID);
NTSTATUS FASTCALL InitGuiCheckImpl (VOID); INIT_FUNCTION
NTSTATUS
NTAPI
InitGuiCheckImpl (VOID);
/* EOF */ /* EOF */

View file

@ -13,7 +13,9 @@ typedef struct _HOT_KEY_ITEM
UINT vk; UINT vk;
} HOT_KEY_ITEM, *PHOT_KEY_ITEM; } HOT_KEY_ITEM, *PHOT_KEY_ITEM;
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitHotkeyImpl(VOID); InitHotkeyImpl(VOID);
//NTSTATUS FASTCALL //NTSTATUS FASTCALL

View file

@ -27,10 +27,16 @@ extern PATTACHINFO gpai;
#define KBL_PRELOAD 2 #define KBL_PRELOAD 2
#define KBL_RESET 4 #define KBL_RESET 4
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitInputImpl(VOID); InitInputImpl(VOID);
NTSTATUS FASTCALL
INIT_FUNCTION
NTSTATUS
NTAPI
InitKeyboardImpl(VOID); InitKeyboardImpl(VOID);
PUSER_MESSAGE_QUEUE W32kGetPrimitiveMessageQueue(VOID); PUSER_MESSAGE_QUEUE W32kGetPrimitiveMessageQueue(VOID);
VOID W32kUnregisterPrimitiveMessageQueue(VOID); VOID W32kUnregisterPrimitiveMessageQueue(VOID);
PKBL W32kGetDefaultKeyLayout(VOID); PKBL W32kGetDefaultKeyLayout(VOID);

View file

@ -82,32 +82,6 @@ IntEngGradientFill(SURFOBJ *psoDest,
POINTL *pptlDitherOrg, POINTL *pptlDitherOrg,
ULONG ulMode); ULONG ulMode);
VOID InitXlateImpl(VOID);
XLATEOBJ* FASTCALL
IntEngCreateXlate(USHORT DestPalType,
USHORT SourcePalType,
HPALETTE PaletteDest,
HPALETTE PaletteSource);
XLATEOBJ* FASTCALL
IntEngCreateMonoXlate(USHORT SourcePalType,
HPALETTE PaletteDest,
HPALETTE PaletteSource,
ULONG BackgroundColor);
XLATEOBJ* FASTCALL
IntEngCreateSrcMonoXlate(HPALETTE PaletteDest,
ULONG Color0,
ULONG Color1);
XLATEOBJ*
IntCreateBrushXlate(BRUSH *pbrush, SURFACE * psurf, COLORREF crBackgroundClr);
HPALETTE FASTCALL
IntEngGetXlatePalette(XLATEOBJ *XlateObj,
ULONG Palette);
BOOL APIENTRY BOOL APIENTRY
IntEngPolyline(SURFOBJ *DestSurf, IntEngPolyline(SURFOBJ *DestSurf,
CLIPOBJ *Clip, CLIPOBJ *Clip,

View file

@ -63,7 +63,8 @@ LDEVOBJ_pdmiGetModes(
PLDEVOBJ pldev, PLDEVOBJ pldev,
HANDLE hDriver); HANDLE hDriver);
BOOL INIT_FUNCTION
NTSTATUS
NTAPI NTAPI
InitLDEVImpl(); InitLDEVImpl();

View file

@ -104,7 +104,9 @@ IntInsertMenuItem(PMENU_OBJECT MenuObject, UINT uItem, BOOL fByPosition,
PROSMENUITEMINFO ItemInfo); PROSMENUITEMINFO ItemInfo);
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitMenuImpl(VOID); InitMenuImpl(VOID);
NTSTATUS FASTCALL NTSTATUS FASTCALL

View file

@ -32,7 +32,10 @@ typedef struct _MONITOR
} MONITOR, *PMONITOR; } MONITOR, *PMONITOR;
/* functions */ /* functions */
NTSTATUS InitMonitorImpl(); INIT_FUNCTION
NTSTATUS
NTAPI
InitMonitorImpl();
NTSTATUS CleanupMonitorImpl(); NTSTATUS CleanupMonitorImpl();
NTSTATUS IntAttachMonitor(PDEVOBJ *pGdiDevice, ULONG DisplayNumber); NTSTATUS IntAttachMonitor(PDEVOBJ *pGdiDevice, ULONG DisplayNumber);

View file

@ -138,7 +138,9 @@ VOID FASTCALL
MsqDestroyMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue); MsqDestroyMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue);
PUSER_MESSAGE_QUEUE FASTCALL PUSER_MESSAGE_QUEUE FASTCALL
MsqGetHardwareMessageQueue(VOID); MsqGetHardwareMessageQueue(VOID);
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
MsqInitializeImpl(VOID); MsqInitializeImpl(VOID);
BOOLEAN FASTCALL BOOLEAN FASTCALL
co_MsqDispatchOneSentMessage(PUSER_MESSAGE_QUEUE MessageQueue); co_MsqDispatchOneSentMessage(PUSER_MESSAGE_QUEUE MessageQueue);

View file

@ -11,7 +11,7 @@
extern PSERVERINFO gpsi; extern PSERVERINFO gpsi;
NTSTATUS FASTCALL InitUserImpl(VOID); INIT_FUNCTION NTSTATUS NTAPI InitUserImpl(VOID);
VOID FASTCALL CleanupUserImpl(VOID); VOID FASTCALL CleanupUserImpl(VOID);
VOID FASTCALL UserEnterShared(VOID); VOID FASTCALL UserEnterShared(VOID);
VOID FASTCALL UserEnterExclusive(VOID); VOID FASTCALL UserEnterExclusive(VOID);

View file

@ -74,8 +74,7 @@ HPALETTE FASTCALL PALETTE_AllocPaletteIndexedRGB(ULONG NumColors,
GDIOBJ_ShareUnlockObjByPtr(&ppal->BaseObject) GDIOBJ_ShareUnlockObjByPtr(&ppal->BaseObject)
BOOL INTERNAL_CALL PALETTE_Cleanup(PVOID ObjectBody); BOOL INTERNAL_CALL PALETTE_Cleanup(PVOID ObjectBody);
INIT_FUNCTION NTSTATUS NTAPI InitPaletteImpl();
HPALETTE FASTCALL PALETTE_Init (VOID);
VOID FASTCALL PALETTE_ValidateFlags (PALETTEENTRY* lpPalE, INT size); VOID FASTCALL PALETTE_ValidateFlags (PALETTEENTRY* lpPalE, INT size);
INT FASTCALL PALETTE_ToPhysical (PDC dc, COLORREF color); INT FASTCALL PALETTE_ToPhysical (PDC dc, COLORREF color);

View file

@ -174,18 +174,11 @@ PDEVOBJ_vGetDeviceCaps(
PPDEVOBJ ppdev, PPDEVOBJ ppdev,
PDEVCAPS pDevCaps); PDEVCAPS pDevCaps);
BOOL INIT_FUNCTION
NTSTATUS
NTAPI NTAPI
InitPDEVImpl(); InitPDEVImpl();
BOOL
NTAPI
InitLDEVImpl();
BOOL
NTAPI
InitDeviceImpl();
PSIZEL PSIZEL
FASTCALL FASTCALL
PDEVOBJ_sizl(PPDEVOBJ, PSIZEL); PDEVOBJ_sizl(PPDEVOBJ, PSIZEL);

View file

@ -26,7 +26,10 @@ typedef struct _TIMER
extern PKTIMER MasterTimer; extern PKTIMER MasterTimer;
NTSTATUS FASTCALL InitTimerImpl(VOID); INIT_FUNCTION
NTSTATUS
NTAPI
InitTimerImpl(VOID);
BOOL FASTCALL DestroyTimersForThread(PTHREADINFO pti); BOOL FASTCALL DestroyTimersForThread(PTHREADINFO pti);
BOOL FASTCALL DestroyTimersForWindow(PTHREADINFO pti, PWND Window); BOOL FASTCALL DestroyTimersForWindow(PTHREADINFO pti, PWND Window);
BOOL FASTCALL IntKillTimer(PWND Window, UINT_PTR IDEvent, BOOL SystemTimer); BOOL FASTCALL IntKillTimer(PWND Window, UINT_PTR IDEvent, BOOL SystemTimer);

View file

@ -11,6 +11,9 @@
#pragma once #pragma once
#define INTERNAL_CALL APIENTRY #define INTERNAL_CALL APIENTRY
#define PLACE_IN_SECTION(s) __attribute__((section(s)))
#define INIT_FUNCTION PLACE_IN_SECTION("INIT")
/* Internal Win32k Headers */ /* Internal Win32k Headers */
#include <include/accelerator.h> #include <include/accelerator.h>
#include <include/clipboard.h> #include <include/clipboard.h>

View file

@ -50,7 +50,9 @@ IntIsWindow(HWND hWnd);
HWND* FASTCALL HWND* FASTCALL
IntWinListChildren(PWND Window); IntWinListChildren(PWND Window);
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitWindowImpl (VOID); InitWindowImpl (VOID);
NTSTATUS FASTCALL NTSTATUS FASTCALL

View file

@ -62,7 +62,9 @@ typedef struct _WINSTATION_OBJECT
extern WINSTATION_OBJECT *InputWindowStation; extern WINSTATION_OBJECT *InputWindowStation;
extern PPROCESSINFO LogonProcess; extern PPROCESSINFO LogonProcess;
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitWindowStationImpl(VOID); InitWindowStationImpl(VOID);
NTSTATUS FASTCALL NTSTATUS FASTCALL

View file

@ -47,5 +47,9 @@ VOID NTAPI EXLATEOBJ_vInitialize(PEXLATEOBJ pexlo, PALETTE *ppalSrc, PALETTE *pp
VOID NTAPI EXLATEOBJ_vInitXlateFromDCs(PEXLATEOBJ pexlo, PDC pdcSrc, PDC pdcDst); VOID NTAPI EXLATEOBJ_vInitXlateFromDCs(PEXLATEOBJ pexlo, PDC pdcSrc, PDC pdcDst);
VOID NTAPI EXLATEOBJ_vInitSrcMonoXlate(PEXLATEOBJ pexlo, PPALETTE ppalDst, ULONG Color0, ULONG Color1); VOID NTAPI EXLATEOBJ_vInitSrcMonoXlate(PEXLATEOBJ pexlo, PPALETTE ppalDst, ULONG Color0, ULONG Color1);
VOID NTAPI EXLATEOBJ_vCleanup(PEXLATEOBJ pexlo); VOID NTAPI EXLATEOBJ_vCleanup(PEXLATEOBJ pexlo);
INIT_FUNCTION
NTSTATUS
NTAPI
InitXlateImpl(VOID);
//#define XLATEOBJ_iXlate(pxo, Color) ((EXLATEOBJ*)pxo)->pfnXlate(pxo, Color) //#define XLATEOBJ_iXlate(pxo, Color) ((EXLATEOBJ*)pxo)->pfnXlate(pxo, Color)

View file

@ -16,17 +16,12 @@ HANDLE hModuleWin;
PGDI_HANDLE_TABLE INTERNAL_CALL GDIOBJ_iAllocHandleTable(OUT PSECTION_OBJECT *SectionObject); PGDI_HANDLE_TABLE INTERNAL_CALL GDIOBJ_iAllocHandleTable(OUT PSECTION_OBJECT *SectionObject);
BOOL INTERNAL_CALL GDI_CleanupForProcess (struct _EPROCESS *Process); BOOL INTERNAL_CALL GDI_CleanupForProcess (struct _EPROCESS *Process);
/* FIXME */
PGDI_HANDLE_TABLE GdiHandleTable = NULL;
PSECTION_OBJECT GdiTableSection = NULL;
HANDLE GlobalUserHeap = NULL; HANDLE GlobalUserHeap = NULL;
PSECTION_OBJECT GlobalUserHeapSection = NULL; PSECTION_OBJECT GlobalUserHeapSection = NULL;
PSERVERINFO gpsi = NULL; // Global User Server Information. PSERVERINFO gpsi = NULL; // Global User Server Information.
HSEMAPHORE hsemDriverMgmt = NULL;
SHORT gusLanguageID; SHORT gusLanguageID;
extern ULONG_PTR Win32kSSDT[]; extern ULONG_PTR Win32kSSDT[];
@ -315,8 +310,6 @@ CLEANUP:
END_CLEANUP; END_CLEANUP;
} }
/* Only used in ntuser/input.c KeyboardThreadMain(). If it's
not called there anymore, please delete */
NTSTATUS NTSTATUS
Win32kInitWin32Thread(PETHREAD Thread) Win32kInitWin32Thread(PETHREAD Thread)
{ {
@ -354,10 +347,21 @@ Win32kInitWin32Thread(PETHREAD Thread)
C_ASSERT(sizeof(SERVERINFO) <= PAGE_SIZE); C_ASSERT(sizeof(SERVERINFO) <= PAGE_SIZE);
// Return on failure
#define NT_ROF(x) \
Status = (x); \
if (!NT_SUCCESS(Status)) \
{ \
DPRINT1("Failed '%s' (0x%lx)\n", #x, Status); \
return Status; \
}
/* /*
* This definition doesn't work * This definition doesn't work
*/ */
NTSTATUS APIENTRY INIT_FUNCTION
NTSTATUS
APIENTRY
DriverEntry( DriverEntry(
IN PDRIVER_OBJECT DriverObject, IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath) IN PUNICODE_STRING RegistryPath)
@ -407,146 +411,48 @@ DriverEntry (
} }
/* Allocate global server info structure */ /* Allocate global server info structure */
gpsi = UserHeapAlloc(sizeof(SERVERINFO));
if (!gpsi) if (!gpsi)
{ {
gpsi = UserHeapAlloc(sizeof(SERVERINFO)); DPRINT1("Failed allocate server info structure!\n");
if (gpsi)
{
RtlZeroMemory(gpsi, sizeof(SERVERINFO));
DPRINT("Global Server Data -> %x\n", gpsi);
}
else
{
ASSERT(FALSE);
}
}
if(!hsemDriverMgmt) hsemDriverMgmt = EngCreateSemaphore();
/* Create the GDI handle table */
GdiHandleTable = GDIOBJ_iAllocHandleTable(&GdiTableSection);
if (GdiHandleTable == NULL)
{
DPRINT1("Failed to initialize the GDI handle table.\n");
return STATUS_UNSUCCESSFUL; return STATUS_UNSUCCESSFUL;
} }
/* Initialize default palettes */ RtlZeroMemory(gpsi, sizeof(SERVERINFO));
PALETTE_Init(); DPRINT("Global Server Data -> %x\n", gpsi);
NT_ROF(InitGdiHandleTable());
NT_ROF(InitPaletteImpl());
/* Create stock objects, ie. precreated objects commonly /* Create stock objects, ie. precreated objects commonly
used by win32 applications */ used by win32 applications */
CreateStockObjects(); CreateStockObjects();
CreateSysColorObjects(); CreateSysColorObjects();
InitXlateImpl(); NT_ROF(InitXlateImpl());
InitPDEVImpl(); NT_ROF(InitPDEVImpl());
InitLDEVImpl(); NT_ROF(InitLDEVImpl());
InitDeviceImpl(); NT_ROF(InitDeviceImpl());
NT_ROF(InitDcImpl());
Status = InitDcImpl(); NT_ROF(InitUserImpl());
if (!NT_SUCCESS(Status)) NT_ROF(InitHotkeyImpl());
{ NT_ROF(InitWindowStationImpl());
DPRINT1("Failed to initialize Device context implementation!\n"); NT_ROF(InitDesktopImpl());
return STATUS_UNSUCCESSFUL; NT_ROF(InitWindowImpl());
} NT_ROF(InitMenuImpl());
NT_ROF(InitInputImpl());
Status = InitUserImpl(); NT_ROF(InitKeyboardImpl());
if (!NT_SUCCESS(Status)) NT_ROF(InitMonitorImpl());
{ NT_ROF(MsqInitializeImpl());
DPRINT1("Failed to initialize user implementation!\n"); NT_ROF(InitTimerImpl());
return STATUS_UNSUCCESSFUL; NT_ROF(InitAcceleratorImpl());
} NT_ROF(InitGuiCheckImpl());
Status = InitHotkeyImpl();
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to initialize hotkey implementation!\n");
return STATUS_UNSUCCESSFUL;
}
Status = InitWindowStationImpl();
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to initialize window station implementation!\n");
return STATUS_UNSUCCESSFUL;
}
Status = InitDesktopImpl();
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to initialize desktop implementation!\n");
return STATUS_UNSUCCESSFUL;
}
Status = InitWindowImpl();
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to initialize window implementation!\n");
return STATUS_UNSUCCESSFUL;
}
Status = InitMenuImpl();
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to initialize menu implementation!\n");
return STATUS_UNSUCCESSFUL;
}
Status = InitInputImpl();
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to initialize input implementation.\n");
return(Status);
}
Status = InitKeyboardImpl();
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to initialize keyboard implementation.\n");
return(Status);
}
Status = InitMonitorImpl();
if (!NT_SUCCESS(Status))
{
DbgPrint("Failed to initialize monitor implementation!\n");
return STATUS_UNSUCCESSFUL;
}
Status = MsqInitializeImpl();
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to initialize message queue implementation.\n");
return(Status);
}
Status = InitTimerImpl();
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to initialize timer implementation.\n");
return(Status);
}
Status = InitAcceleratorImpl();
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to initialize accelerator implementation.\n");
return(Status);
}
Status = InitGuiCheckImpl();
if (!NT_SUCCESS(Status))
{
DPRINT1("Failed to initialize GUI check implementation.\n");
return(Status);
}
/* Initialize FreeType library */ /* Initialize FreeType library */
if (!InitFontSupport()) if (!InitFontSupport())
{ {
DPRINT1("Unable to initialize font support\n"); DPRINT1("Unable to initialize font support\n");
return STATUS_UNSUCCESSFUL; return Status;
} }
gusLanguageID = IntGdiGetLanguageID(); gusLanguageID = IntGdiGetLanguageID();

View file

@ -56,7 +56,9 @@
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitAcceleratorImpl(VOID) InitAcceleratorImpl(VOID)
{ {
return(STATUS_SUCCESS); return(STATUS_SUCCESS);

View file

@ -170,8 +170,9 @@ IntDesktopObjectDelete(PWIN32_DELETEMETHOD_PARAMETERS Parameters)
/* PRIVATE FUNCTIONS **********************************************************/ /* PRIVATE FUNCTIONS **********************************************************/
INIT_FUNCTION
NTSTATUS NTSTATUS
FASTCALL NTAPI
InitDesktopImpl(VOID) InitDesktopImpl(VOID)
{ {
/* Set Desktop Object Attributes */ /* Set Desktop Object Attributes */

View file

@ -130,7 +130,9 @@ IntUserManualGuiCheck(LONG Check)
} }
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitGuiCheckImpl (VOID) InitGuiCheckImpl (VOID)
{ {
return STATUS_SUCCESS; return STATUS_SUCCESS;

View file

@ -51,7 +51,9 @@ LIST_ENTRY gHotkeyList;
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitHotkeyImpl(VOID) InitHotkeyImpl(VOID)
{ {
InitializeListHead(&gHotkeyList); InitializeListHead(&gHotkeyList);

View file

@ -922,7 +922,9 @@ RawInputThreadMain(PVOID StartContext)
DPRINT1("Raw Input Thread Exit!\n"); DPRINT1("Raw Input Thread Exit!\n");
} }
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitInputImpl(VOID) InitInputImpl(VOID)
{ {
NTSTATUS Status; NTSTATUS Status;

View file

@ -58,7 +58,10 @@ BYTE gQueueKeyStateTable[256];
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/
/* Initialization -- Right now, just zero the key state and init the lock */ /* Initialization -- Right now, just zero the key state and init the lock */
NTSTATUS FASTCALL InitKeyboardImpl(VOID) INIT_FUNCTION
NTSTATUS
NTAPI
InitKeyboardImpl(VOID)
{ {
RtlZeroMemory(&gQueueKeyStateTable,0x100); RtlZeroMemory(&gQueueKeyStateTable,0x100);
return STATUS_SUCCESS; return STATUS_SUCCESS;

View file

@ -86,7 +86,9 @@ UserMenuInfo(
( ((r).bottom >= y)) && \ ( ((r).bottom >= y)) && \
( ((r).top <= y)) ) ( ((r).top <= y)) )
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitMenuImpl(VOID) InitMenuImpl(VOID)
{ {
return(STATUS_SUCCESS); return(STATUS_SUCCESS);

View file

@ -28,7 +28,9 @@ static PMONITOR gMonitorList = NULL;
/* INITALIZATION FUNCTIONS ****************************************************/ /* INITALIZATION FUNCTIONS ****************************************************/
INIT_FUNCTION
NTSTATUS NTSTATUS
NTAPI
InitMonitorImpl() InitMonitorImpl()
{ {
DPRINT("Initializing monitor implementation...\n"); DPRINT("Initializing monitor implementation...\n");

View file

@ -140,7 +140,9 @@ MsqDecPaintCountQueue(PUSER_MESSAGE_QUEUE Queue)
} }
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
MsqInitializeImpl(VOID) MsqInitializeImpl(VOID)
{ {
/*CurrentFocusMessageQueue = NULL;*/ /*CurrentFocusMessageQueue = NULL;*/

View file

@ -53,8 +53,10 @@ InitUserAtoms(VOID)
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/
INIT_FUNCTION
NTSTATUS FASTCALL InitUserImpl(VOID) NTSTATUS
NTAPI
InitUserImpl(VOID)
{ {
NTSTATUS Status; NTSTATUS Status;

View file

@ -527,7 +527,9 @@ IntKillTimer(PWND Window, UINT_PTR IDEvent, BOOL SystemTimer)
return pTmr ? TRUE : FALSE; return pTmr ? TRUE : FALSE;
} }
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitTimerImpl(VOID) InitTimerImpl(VOID)
{ {
ULONG BitmapBytes; ULONG BitmapBytes;

View file

@ -29,7 +29,9 @@
* Initialize windowing implementation. * Initialize windowing implementation.
*/ */
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitWindowImpl(VOID) InitWindowImpl(VOID)
{ {
return STATUS_SUCCESS; return STATUS_SUCCESS;

View file

@ -56,7 +56,9 @@ static GENERIC_MAPPING IntWindowStationMapping =
}; };
NTSTATUS FASTCALL INIT_FUNCTION
NTSTATUS
NTAPI
InitWindowStationImpl(VOID) InitWindowStationImpl(VOID)
{ {
OBJECT_ATTRIBUTES ObjectAttributes; OBJECT_ATTRIBUTES ObjectAttributes;

View file

@ -58,7 +58,9 @@ static const MATRIX gmxWorldToPageDefault =
/** Internal functions ********************************************************/ /** Internal functions ********************************************************/
INIT_FUNCTION
NTSTATUS NTSTATUS
NTAPI
InitDcImpl() InitDcImpl()
{ {
psurfDefaultBitmap = SURFACE_ShareLockSurface(StockObjects[DEFAULT_BITMAP]); psurfDefaultBitmap = SURFACE_ShareLockSurface(StockObjects[DEFAULT_BITMAP]);

View file

@ -81,6 +81,8 @@ OBJ_TYPE_INFO ObjTypeInfo[BASE_OBJTYPE_COUNT] =
}; };
static LARGE_INTEGER ShortDelay; static LARGE_INTEGER ShortDelay;
PGDI_HANDLE_TABLE GdiHandleTable = NULL;
PSECTION_OBJECT GdiTableSection = NULL;
/** INTERNAL FUNCTIONS ********************************************************/ /** INTERNAL FUNCTIONS ********************************************************/
@ -151,7 +153,9 @@ GDI_CleanupDummy(PVOID ObjectBody)
* Allocate GDI object table. * Allocate GDI object table.
* \param Size - number of entries in the object table. * \param Size - number of entries in the object table.
*/ */
PGDI_HANDLE_TABLE INTERNAL_CALL INIT_FUNCTION
PGDI_HANDLE_TABLE
INTERNAL_CALL
GDIOBJ_iAllocHandleTable(OUT PSECTION_OBJECT *SectionObject) GDIOBJ_iAllocHandleTable(OUT PSECTION_OBJECT *SectionObject)
{ {
PGDI_HANDLE_TABLE HandleTable = NULL; PGDI_HANDLE_TABLE HandleTable = NULL;
@ -221,6 +225,23 @@ GDIOBJ_iAllocHandleTable(OUT PSECTION_OBJECT *SectionObject)
return HandleTable; return HandleTable;
} }
INIT_FUNCTION
NTSTATUS
NTAPI
InitGdiHandleTable()
{
/* Create the GDI handle table */
GdiHandleTable = GDIOBJ_iAllocHandleTable(&GdiTableSection);
if (GdiHandleTable == NULL)
{
DPRINT1("Failed to initialize the GDI handle table.\n");
return STATUS_UNSUCCESSFUL;
}
return STATUS_SUCCESS;
}
static void FASTCALL static void FASTCALL
LockErrorDebugOutput(HGDIOBJ hObj, PGDI_TABLE_ENTRY Entry, LPSTR Function) LockErrorDebugOutput(HGDIOBJ hObj, PGDI_TABLE_ENTRY Entry, LPSTR Function)
{ {

View file

@ -57,7 +57,10 @@ unsigned short GetNumberOfBits(unsigned int dwMask)
} }
// Create the system palette // Create the system palette
HPALETTE FASTCALL PALETTE_Init(VOID) INIT_FUNCTION
NTSTATUS
NTAPI
InitPaletteImpl()
{ {
int i; int i;
HPALETTE hpalette; HPALETTE hpalette;
@ -68,7 +71,7 @@ HPALETTE FASTCALL PALETTE_Init(VOID)
sizeof(LOGPALETTE) + sizeof(LOGPALETTE) +
(NB_RESERVED_COLORS * sizeof(PALETTEENTRY)), (NB_RESERVED_COLORS * sizeof(PALETTEENTRY)),
TAG_PALETTE); TAG_PALETTE);
if (!palPtr) return FALSE; if (!palPtr) return STATUS_NO_MEMORY;
palPtr->palVersion = 0x300; palPtr->palVersion = 0x300;
palPtr->palNumEntries = NB_RESERVED_COLORS; palPtr->palNumEntries = NB_RESERVED_COLORS;
@ -131,7 +134,7 @@ HPALETTE FASTCALL PALETTE_Init(VOID)
appalSurfaceDefault[BMF_JPEG] = &gpalRGB; appalSurfaceDefault[BMF_JPEG] = &gpalRGB;
appalSurfaceDefault[BMF_PNG] = &gpalRGB; appalSurfaceDefault[BMF_PNG] = &gpalRGB;
return hpalette; return STATUS_SUCCESS;
} }
VOID FASTCALL PALETTE_ValidateFlags(PALETTEENTRY* lpPalE, INT size) VOID FASTCALL PALETTE_ValidateFlags(PALETTEENTRY* lpPalE, INT size)