From 344e472e73eb6fb3905b0229a062d79adb989db8 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Mon, 10 Aug 2009 20:19:33 +0000 Subject: [PATCH] - Move some functions from stubs.c to new file eng/mapping.c - Move EngSetPointerTag to mouse.c - Move EngQuerySystemAttribute and EngGetTickCount to engmisc.c - Unimplement EngLoadModule as it was wrong - FLOATOBJ_XxxFloatObj are duplicated from FLOATOBJ_Xxx, remove the stubs and redirect in the pspec. - Redirect EngGetCurrentProcessId and EngGetcurrentThreadId to ntoskrnl svn path=/trunk/; revision=42601 --- reactos/subsystems/win32/win32k/eng/engmisc.c | 67 ++++- reactos/subsystems/win32/win32k/eng/mapping.c | 145 ++++++++++ reactos/subsystems/win32/win32k/eng/mouse.c | 15 ++ reactos/subsystems/win32/win32k/ldr/loader.c | 21 -- .../subsystems/win32/win32k/objects/device.c | 25 +- .../subsystems/win32/win32k/objects/dibobj.c | 5 + reactos/subsystems/win32/win32k/stubs/stubs.c | 250 ------------------ reactos/subsystems/win32/win32k/win32k.pspec | 12 +- reactos/subsystems/win32/win32k/win32k.rbuild | 1 + 9 files changed, 240 insertions(+), 301 deletions(-) create mode 100644 reactos/subsystems/win32/win32k/eng/mapping.c diff --git a/reactos/subsystems/win32/win32k/eng/engmisc.c b/reactos/subsystems/win32/win32k/eng/engmisc.c index a48a4f4e082..776db0facd9 100644 --- a/reactos/subsystems/win32/win32k/eng/engmisc.c +++ b/reactos/subsystems/win32/win32k/eng/engmisc.c @@ -221,20 +221,6 @@ IntEngLeave(PINTENG_ENTER_LEAVE EnterLeave) return Result; } -HANDLE APIENTRY -EngGetCurrentProcessId(VOID) -{ - /* http://www.osr.com/ddk/graphics/gdifncs_5ovb.htm */ - return PsGetCurrentProcessId(); -} - -HANDLE APIENTRY -EngGetCurrentThreadId(VOID) -{ - /* http://www.osr.com/ddk/graphics/gdifncs_25rb.htm */ - return PsGetCurrentThreadId(); -} - HANDLE APIENTRY EngGetProcessHandle(VOID) { @@ -253,4 +239,57 @@ EngGetCurrentCodePage(OUT PUSHORT OemCodePage, RtlGetDefaultCodePage(AnsiCodePage, OemCodePage); } +BOOL +APIENTRY +EngQuerySystemAttribute( + IN ENG_SYSTEM_ATTRIBUTE CapNum, + OUT PDWORD pCapability) +{ + SYSTEM_BASIC_INFORMATION sbi; + SYSTEM_PROCESSOR_INFORMATION spi; + + switch (CapNum) + { + case EngNumberOfProcessors: + NtQuerySystemInformation(SystemBasicInformation, + &sbi, + sizeof(SYSTEM_BASIC_INFORMATION), + NULL); + *pCapability = sbi.NumberOfProcessors; + return TRUE; + + case EngProcessorFeature: + NtQuerySystemInformation(SystemProcessorInformation, + &spi, + sizeof(SYSTEM_PROCESSOR_INFORMATION), + NULL); + *pCapability = spi.ProcessorFeatureBits; + return TRUE; + + default: + break; + } + + return FALSE; +} + +ULONGLONG +APIENTRY +EngGetTickCount(VOID) +{ + ULONG Multiplier; + LARGE_INTEGER TickCount; + + /* Get the multiplier and current tick count */ + KeQueryTickCount(&TickCount); + Multiplier = SharedUserData->TickCountMultiplier; + + /* Convert to milliseconds and return */ + return (Int64ShrlMod32(UInt32x32To64(Multiplier, TickCount.LowPart), 24) + + (Multiplier * (TickCount.HighPart << 8))); +} + + + + /* EOF */ diff --git a/reactos/subsystems/win32/win32k/eng/mapping.c b/reactos/subsystems/win32/win32k/eng/mapping.c new file mode 100644 index 00000000000..39de58264d1 --- /dev/null +++ b/reactos/subsystems/win32/win32k/eng/mapping.c @@ -0,0 +1,145 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * PURPOSE: Functions for mapping files and sections + * FILE: subsys/win32k/eng/device.c + * PROGRAMER: + */ + +#include + +#define NDEBUG +#include + +HANDLE +APIENTRY +EngLoadModule(LPWSTR pwsz) +{ + UNIMPLEMENTED; + return NULL; +} + +HANDLE +APIENTRY +EngLoadModuleForWrite( + IN LPWSTR pwsz, + IN ULONG cjSizeOfModule) +{ + // www.osr.com/ddk/graphics/gdifncs_98rr.htm + UNIMPLEMENTED; + return NULL; +} + +PVOID +APIENTRY +EngMapModule( + IN HANDLE h, + OUT PULONG pulSize) +{ + // www.osr.com/ddk/graphics/gdifncs_9b1j.htm + UNIMPLEMENTED; + return NULL; +} + +VOID +APIENTRY +EngFreeModule (IN HANDLE h) +{ + // www.osr.com/ddk/graphics/gdifncs_9fzb.htm + UNIMPLEMENTED; +} + +PVOID +APIENTRY +EngMapFile( + IN LPWSTR pwsz, + IN ULONG cjSize, + OUT ULONG_PTR *piFile) +{ + UNIMPLEMENTED; + return NULL; +} + +BOOL +APIENTRY +EngUnmapFile( + IN ULONG_PTR iFile) +{ + UNIMPLEMENTED; + return FALSE; +} + + +BOOL +APIENTRY +EngMapFontFileFD( + IN ULONG_PTR iFile, + OUT PULONG *ppjBuf, + OUT ULONG *pcjBuf) +{ + // www.osr.com/ddk/graphics/gdifncs_0co7.htm + UNIMPLEMENTED; + return FALSE; +} + +VOID +APIENTRY +EngUnmapFontFileFD( + IN ULONG_PTR iFile) +{ + // http://www.osr.com/ddk/graphics/gdifncs_6wbr.htm + UNIMPLEMENTED; +} + +BOOL +APIENTRY +EngMapFontFile( + ULONG_PTR iFile, + PULONG *ppjBuf, + ULONG *pcjBuf) +{ + // www.osr.com/ddk/graphics/gdifncs_3up3.htm + return EngMapFontFileFD(iFile, ppjBuf, pcjBuf); +} + +VOID +APIENTRY +EngUnmapFontFile( + IN ULONG_PTR iFile) +{ + // www.osr.com/ddk/graphics/gdifncs_09wn.htm + EngUnmapFontFileFD(iFile); +} + + +BOOLEAN +APIENTRY +EngMapSection(IN PVOID Section, + IN BOOLEAN Map, + IN HANDLE Process, + IN PVOID* BaseAddress) +{ + UNIMPLEMENTED; + return FALSE; +} + +PVOID +APIENTRY +EngAllocSectionMem(IN PVOID SectionObject, + IN ULONG Flags, + IN SIZE_T MemSize, + IN ULONG Tag) +{ + UNIMPLEMENTED; + return NULL; +} + + +BOOLEAN +APIENTRY +EngFreeSectionMem(IN PVOID SectionObject OPTIONAL, + IN PVOID MappedBase) +{ + UNIMPLEMENTED; + return FALSE; +} diff --git a/reactos/subsystems/win32/win32k/eng/mouse.c b/reactos/subsystems/win32/win32k/eng/mouse.c index d72915f1417..97a84d158a3 100644 --- a/reactos/subsystems/win32/win32k/eng/mouse.c +++ b/reactos/subsystems/win32/win32k/eng/mouse.c @@ -16,6 +16,21 @@ /* FUNCTIONS *****************************************************************/ +BOOL +APIENTRY +EngSetPointerTag( + IN HDEV hdev, + IN SURFOBJ *psoMask, + IN SURFOBJ *psoColor, + IN XLATEOBJ *pxlo, + IN FLONG fl) +{ + // This function is obsolete for Windows 2000 and later. + // This function is still supported, but always returns FALSE. + // www.osr.com/ddk/graphics/gdifncs_4yav.htm + return FALSE; +} + /* * FUNCTION: Notify the mouse driver that drawing is about to begin in * a rectangle on a particular surface. diff --git a/reactos/subsystems/win32/win32k/ldr/loader.c b/reactos/subsystems/win32/win32k/ldr/loader.c index 2d815c08711..bfc38171496 100644 --- a/reactos/subsystems/win32/win32k/ldr/loader.c +++ b/reactos/subsystems/win32/win32k/ldr/loader.c @@ -243,27 +243,6 @@ EngLoadImage (LPWSTR DriverName) return hImageHandle; } - -/* - * @unimplemented - */ -HANDLE -APIENTRY -EngLoadModule(LPWSTR ModuleName) -{ - SYSTEM_GDI_DRIVER_INFORMATION GdiDriverInfo; - NTSTATUS Status; - - // FIXME: should load as readonly - - RtlInitUnicodeString (&GdiDriverInfo.DriverName, ModuleName); - Status = ZwSetSystemInformation (SystemLoadGdiDriverInformation, - &GdiDriverInfo, sizeof(SYSTEM_GDI_DRIVER_INFORMATION)); - if (!NT_SUCCESS(Status)) return NULL; - - return (HANDLE)GdiDriverInfo.ImageAddress; -} - VOID APIENTRY EngUnloadImage ( IN HANDLE hModule ) diff --git a/reactos/subsystems/win32/win32k/objects/device.c b/reactos/subsystems/win32/win32k/objects/device.c index ffb38c13fa6..bd8741bb526 100644 --- a/reactos/subsystems/win32/win32k/objects/device.c +++ b/reactos/subsystems/win32/win32k/objects/device.c @@ -8,7 +8,7 @@ #include -#define NDEBUG +#define YDEBUG #include // TODO: proper implementation of LDEVOBJ and PDEVOBJ interface @@ -214,6 +214,9 @@ IntPrepareDriver() LARGE_INTEGER Zero; BOOLEAN ret = FALSE; + DPRINT("IntPrepareDriver()\n"); +ASSERT(FALSE); + Zero.QuadPart = 0; if (STATUS_SUCCESS != KeWaitForSingleObject(&VideoDriverNeedsPreparation, Executive, KernelMode, TRUE, &Zero)) { @@ -450,7 +453,7 @@ PrepareVideoPrt() IO_STATUS_BLOCK Iosb; BOOL Prepare = TRUE; ULONG Length = sizeof(BOOL); - PIO_STACK_LOCATION StackPtr; +// PIO_STACK_LOCATION StackPtr; LARGE_INTEGER StartOffset; PFILE_OBJECT FileObject = PrimarySurface.VideoFileObject; PDEVICE_OBJECT DeviceObject = FileObject->DeviceObject; @@ -475,16 +478,16 @@ PrepareVideoPrt() } /* Set up IRP Data */ - Irp->Tail.Overlay.OriginalFileObject = FileObject; - Irp->RequestorMode = KernelMode; - Irp->Overlay.AsynchronousParameters.UserApcRoutine = NULL; - Irp->Overlay.AsynchronousParameters.UserApcContext = NULL; - Irp->Flags |= IRP_WRITE_OPERATION; +// Irp->Tail.Overlay.OriginalFileObject = FileObject; +// Irp->RequestorMode = KernelMode; +// Irp->Overlay.AsynchronousParameters.UserApcRoutine = NULL; +// Irp->Overlay.AsynchronousParameters.UserApcContext = NULL; +// Irp->Flags |= IRP_WRITE_OPERATION; /* Setup Stack Data */ - StackPtr = IoGetNextIrpStackLocation(Irp); - StackPtr->FileObject = PrimarySurface.VideoFileObject; - StackPtr->Parameters.Write.Key = 0; +// StackPtr = IoGetNextIrpStackLocation(Irp); +// StackPtr->FileObject = PrimarySurface.VideoFileObject; +// StackPtr->Parameters.Write.Key = 0; Status = IoCallDriver(DeviceObject, Irp); @@ -506,6 +509,8 @@ IntCreatePrimarySurface() SURFOBJ *SurfObj; BOOL calledFromUser; + DPRINT("IntCreatePrimarySurface()\n"); + if (! IntPrepareDriverIfNeeded()) { return FALSE; diff --git a/reactos/subsystems/win32/win32k/objects/dibobj.c b/reactos/subsystems/win32/win32k/objects/dibobj.c index e5aac6035b7..3fc4e41bdd4 100644 --- a/reactos/subsystems/win32/win32k/objects/dibobj.c +++ b/reactos/subsystems/win32/win32k/objects/dibobj.c @@ -19,6 +19,9 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#if 0 +#include "dibbmp.c" +#else #include #define NDEBUG @@ -1735,4 +1738,6 @@ BuildDIBPalette(CONST BITMAPINFO *bmi, PINT paletteType) return hPal; } +#endif + /* EOF */ diff --git a/reactos/subsystems/win32/win32k/stubs/stubs.c b/reactos/subsystems/win32/win32k/stubs/stubs.c index 0b8a9a84a4d..af55ddb1b69 100644 --- a/reactos/subsystems/win32/win32k/stubs/stubs.c +++ b/reactos/subsystems/win32/win32k/stubs/stubs.c @@ -6,58 +6,7 @@ #define UNIMPLEMENTED DbgPrint("(%s:%i) WIN32K: %s UNIMPLEMENTED\n", __FILE__, __LINE__, __FUNCTION__ ) -/* - * @unimplemented - */ -BOOL -APIENTRY -EngMapFontFileFD ( - IN ULONG_PTR iFile, - OUT PULONG *ppjBuf, - OUT ULONG *pcjBuf - ) -{ - // www.osr.com/ddk/graphics/gdifncs_0co7.htm - UNIMPLEMENTED; - return FALSE; -} -/* - * @unimplemented - */ -VOID -APIENTRY -EngUnmapFontFileFD ( IN ULONG_PTR iFile ) -{ - // http://www.osr.com/ddk/graphics/gdifncs_6wbr.htm - UNIMPLEMENTED; -} - -/* - * @implemented - */ -BOOL -APIENTRY -EngMapFontFile ( - ULONG_PTR iFile, - PULONG *ppjBuf, - ULONG *pcjBuf - ) -{ - // www.osr.com/ddk/graphics/gdifncs_3up3.htm - return EngMapFontFileFD ( iFile, ppjBuf, pcjBuf ); -} - -/* - * @implemented - */ -VOID -APIENTRY -EngUnmapFontFile ( ULONG_PTR iFile ) -{ - // www.osr.com/ddk/graphics/gdifncs_09wn.htm - EngUnmapFontFileFD ( iFile ); -} /* * @unimplemented @@ -201,18 +150,6 @@ EngFindResource( return NULL; } -/* - * @unimplemented - */ -VOID -APIENTRY -EngFreeModule ( IN HANDLE h ) -{ - // www.osr.com/ddk/graphics/gdifncs_9fzb.htm - UNIMPLEMENTED; -} - - /* * @unimplemented */ @@ -342,36 +279,6 @@ EngGetType1FontList( return FALSE; } -/* - * @unimplemented - */ -HANDLE -APIENTRY -EngLoadModuleForWrite( - IN LPWSTR pwsz, - IN ULONG cjSizeOfModule - ) -{ - // www.osr.com/ddk/graphics/gdifncs_98rr.htm - UNIMPLEMENTED; - return NULL; -} - -/* - * @unimplemented - */ -PVOID -APIENTRY -EngMapModule( - IN HANDLE h, - OUT PULONG pSize - ) -{ - // www.osr.com/ddk/graphics/gdifncs_9b1j.htm - UNIMPLEMENTED; - return NULL; -} - /* * @unimplemented */ @@ -421,21 +328,6 @@ EngQueryPalette( return 0; } -BOOL -APIENTRY -EngSetPointerTag( - IN HDEV hdev, - IN SURFOBJ *psoMask, - IN SURFOBJ *psoColor, - IN XLATEOBJ *pxlo, - IN FLONG fl - ) -{ - // This function is obsolete for Windows 2000 and later. - // This function is still supported, but always returns FALSE. - // www.osr.com/ddk/graphics/gdifncs_4yav.htm - return FALSE; -} DWORD APIENTRY @@ -746,45 +638,6 @@ EngDitherColor( return DCR_SOLID; } -/* - * @implemented - */ -BOOL APIENTRY -EngQuerySystemAttribute( - IN ENG_SYSTEM_ATTRIBUTE CapNum, - OUT PDWORD pCapability) -{ - SYSTEM_BASIC_INFORMATION sbi; - SYSTEM_PROCESSOR_INFORMATION spi; - - switch (CapNum) - { - case EngNumberOfProcessors: - NtQuerySystemInformation( - SystemBasicInformation, - &sbi, - sizeof(SYSTEM_BASIC_INFORMATION), - NULL); - *pCapability = sbi.NumberOfProcessors; - return TRUE; - - case EngProcessorFeature: - NtQuerySystemInformation( - SystemProcessorInformation, - &spi, - sizeof(SYSTEM_PROCESSOR_INFORMATION), - NULL); - *pCapability = spi.ProcessorFeatureBits; - return TRUE; - - default: - break; - } - - return FALSE; -} - - /* * @unimplemented */ @@ -850,19 +703,6 @@ EngLpkInstalled() return FALSE; } -/* - * @unimplemented - */ -PVOID APIENTRY -EngMapFile( - IN LPWSTR Filename, - IN ULONG Size, - OUT ULONG_PTR *File) -{ - UNIMPLEMENTED; - return NULL; -} - /* * @unimplemented */ @@ -913,16 +753,6 @@ EngQueryFileTimeStamp(IN LPWSTR FileName) return FileTime; } -/* - * @unimplemented - */ -BOOL APIENTRY -EngUnmapFile( - IN ULONG_PTR File) -{ - UNIMPLEMENTED; - return FALSE; -} /* * @unimplemented @@ -2753,86 +2583,6 @@ EngFntCacheLookUp(IN ULONG FastCheckSum, return NULL; } -VOID -APIENTRY -FLOATOBJ_AddFloatObj(PFLOATOBJ pFloatObj1, - PFLOATOBJ pFloatObj2) -{ - UNIMPLEMENTED; -} - -VOID -APIENTRY -FLOATOBJ_DivFloatObj(PFLOATOBJ pFloatObj1, - PFLOATOBJ pFloatObj2) -{ - UNIMPLEMENTED; -} - -VOID -APIENTRY -FLOATOBJ_MulFloatObj(PFLOATOBJ pFloatObj1, - PFLOATOBJ pFloatObj2) -{ - UNIMPLEMENTED; -} - -VOID -APIENTRY -FLOATOBJ_SubFloatObj(PFLOATOBJ pFloatObj1, - PFLOATOBJ pFloatObj2) -{ - UNIMPLEMENTED; -} - -PVOID -APIENTRY -EngAllocSectionMem(IN PVOID SectionObject, - IN ULONG Flags, - IN SIZE_T MemSize, - IN ULONG Tag) -{ - UNIMPLEMENTED; - return NULL; -} - - -BOOLEAN -APIENTRY -EngFreeSectionMem(IN PVOID SectionObject OPTIONAL, - IN PVOID MappedBase) -{ - UNIMPLEMENTED; - return FALSE; -} - -ULONGLONG -APIENTRY -EngGetTickCount(VOID) -{ - ULONG Multiplier; - LARGE_INTEGER TickCount; - - /* Get the multiplier and current tick count */ - KeQueryTickCount(&TickCount); - Multiplier = SharedUserData->TickCountMultiplier; - - /* Convert to milliseconds and return */ - return (Int64ShrlMod32(UInt32x32To64(Multiplier, TickCount.LowPart), 24) + - (Multiplier * (TickCount.HighPart << 8))); -} - -BOOLEAN -APIENTRY -EngMapSection(IN PVOID Section, - IN BOOLEAN Map, - IN HANDLE Process, - IN PVOID* BaseAddress) -{ - UNIMPLEMENTED; - return FALSE; -} - BOOLEAN APIENTRY EngNineGrid(IN SURFOBJ* pDestSurfaceObj, diff --git a/reactos/subsystems/win32/win32k/win32k.pspec b/reactos/subsystems/win32/win32k/win32k.pspec index 5b928a951dd..bfa2e6a1d95 100644 --- a/reactos/subsystems/win32/win32k/win32k.pspec +++ b/reactos/subsystems/win32/win32k/win32k.pspec @@ -1,9 +1,9 @@ #include "include/reactos/msvctarget.h" -@ stdcall FLOATOBJ_AddFloatObj(ptr ptr) -@ stdcall FLOATOBJ_DivFloatObj(ptr ptr) -@ stdcall FLOATOBJ_MulFloatObj(ptr ptr) -@ stdcall FLOATOBJ_SubFloatObj(ptr ptr) +@ stdcall FLOATOBJ_AddFloatObj(ptr ptr) FLOATOBJ_Add +@ stdcall FLOATOBJ_DivFloatObj(ptr ptr) FLOATOBJ_Div +@ stdcall FLOATOBJ_MulFloatObj(ptr ptr) FLOATOBJ_Mul +@ stdcall FLOATOBJ_SubFloatObj(ptr ptr) FLOATOBJ_Sub @ stdcall BRUSHOBJ_hGetColorTransform(ptr) @ stdcall BRUSHOBJ_pvAllocRbrush(ptr long) @ stdcall BRUSHOBJ_pvGetRbrush(ptr) @@ -66,8 +66,8 @@ @ stdcall EngFreeSectionMem(ptr ptr) @ stdcall EngFreeUserMem(ptr) @ stdcall EngGetCurrentCodePage(ptr ptr) -@ stdcall EngGetCurrentProcessId() -@ stdcall EngGetCurrentThreadId() +@ stdcall EngGetCurrentProcessId() NTOSKRNL.PsGetCurrentProcessId +@ stdcall EngGetCurrentThreadId() NTOSKRNL.PsGetCurrentThreadId @ stdcall EngGetDriverName(ptr) @ stdcall EngGetFileChangeTime(ptr ptr) @ stdcall EngGetFilePath(ptr ptr) diff --git a/reactos/subsystems/win32/win32k/win32k.rbuild b/reactos/subsystems/win32/win32k/win32k.rbuild index 47edc91dad5..e52055eba5f 100644 --- a/reactos/subsystems/win32/win32k/win32k.rbuild +++ b/reactos/subsystems/win32/win32k/win32k.rbuild @@ -65,6 +65,7 @@ gradient.c lineto.c + mapping.c mem.c engmisc.c mouse.c