From a8d5e08510b894b7832dbd26c23f945180425062 Mon Sep 17 00:00:00 2001 From: Ged Murphy Date: Sat, 15 Dec 2007 12:16:45 +0000 Subject: [PATCH] remove the ros only NtUserGetCursorIconSize and implement NtUserGetIconSize in it's place svn path=/trunk/; revision=31239 --- .../win32/win32k/ntuser/cursoricon.c | 71 ++++++++----------- .../subsystems/win32/win32k/ntuser/ntstubs.c | 15 ---- reactos/subsystems/win32/win32k/w32ksvc.db | 1 - 3 files changed, 28 insertions(+), 59 deletions(-) diff --git a/reactos/subsystems/win32/win32k/ntuser/cursoricon.c b/reactos/subsystems/win32/win32k/ntuser/cursoricon.c index 0539f5ed384..5ac24725cdc 100644 --- a/reactos/subsystems/win32/win32k/ntuser/cursoricon.c +++ b/reactos/subsystems/win32/win32k/ntuser/cursoricon.c @@ -676,69 +676,54 @@ CLEANUP: } +/* for hints how the prototype might be, see + http://forum.grafika.cz/read.php?23,1816012,1816139,quote=1 + http://www.cyber-ta.org/releases/malware-analysis/public/SOURCES/b47155634ccb2c30630da7e3666d3d07/b47155634ccb2c30630da7e3666d3d07.trace.html#NtUserGetIconSize */ /* * @implemented */ BOOL -STDCALL -NtUserGetCursorIconSize( - HANDLE hCurIcon, - BOOL *fIcon, - SIZE *Size) +NTAPI +NtUserGetIconSize( + HANDLE hCurIcon, + DWORD dwUnknown2, // Most of the time Zero. + PLONG plcx, // &size.cx + PLONG plcy) // &size.cy { PCURICON_OBJECT CurIcon; - PBITMAPOBJ bmp; - PWINSTATION_OBJECT WinSta; - NTSTATUS Status; - BOOL Ret = FALSE; - SIZE SafeSize; - DECLARE_RETURN(BOOL); + NTSTATUS Status = STATUS_SUCCESS; + BOOL bRet = FALSE; - DPRINT("Enter NtUserGetCursorIconSize\n"); + DPRINT("Enter NtUserGetIconSize\n"); UserEnterExclusive(); - WinSta = IntGetWinStaObj(); - if(WinSta == NULL) - { - RETURN( FALSE); - } - if (!(CurIcon = UserGetCurIconObject(hCurIcon))) { - ObDereferenceObject(WinSta); - RETURN(FALSE); + goto cleanup; } - /* Copy fields */ - Status = MmCopyToCaller(fIcon, &CurIcon->IconInfo.fIcon, sizeof(BOOL)); - if(!NT_SUCCESS(Status)) + _SEH_TRY { - SetLastNtError(Status); - goto done; + ProbeForWrite(plcx, sizeof(LONG), 1); + RtlCopyMemory(plcx, &CurIcon->Size.cx, sizeof(LONG)); + ProbeForWrite(plcy, sizeof(LONG), 1); + RtlCopyMemory(plcy, &CurIcon->Size.cy, sizeof(LONG)); } + _SEH_HANDLE + { + Status = _SEH_GetExceptionCode(); + } + _SEH_END - bmp = BITMAPOBJ_LockBitmap(CurIcon->IconInfo.hbmColor); - if(!bmp) - goto done; - - SafeSize.cx = bmp->SurfObj.sizlBitmap.cx; - SafeSize.cy = bmp->SurfObj.sizlBitmap.cy; - Status = MmCopyToCaller(Size, &SafeSize, sizeof(SIZE)); if(NT_SUCCESS(Status)) - Ret = TRUE; + bRet = TRUE; else - SetLastNtError(Status); + SetLastNtError(Status); // maybe not, test this - BITMAPOBJ_UnlockBitmap(bmp); - -done: - ObDereferenceObject(WinSta); - RETURN( Ret); - -CLEANUP: - DPRINT("Leave NtUserGetCursorIconSize, ret=%i\n",_ret_); +cleanup: + DPRINT("Leave NtUserGetIconSize, ret=%i\n", bRet); UserLeave(); - END_CLEANUP; + return bRet; } diff --git a/reactos/subsystems/win32/win32k/ntuser/ntstubs.c b/reactos/subsystems/win32/win32k/ntuser/ntstubs.c index cf12dc3851b..a40920319de 100644 --- a/reactos/subsystems/win32/win32k/ntuser/ntstubs.c +++ b/reactos/subsystems/win32/win32k/ntuser/ntstubs.c @@ -758,21 +758,6 @@ NtUserGetAtomName( return 0; } -/* for hints how the prototype might be, see - http://forum.grafika.cz/read.php?23,1816012,1816139,quote=1 - http://www.cyber-ta.org/releases/malware-analysis/public/SOURCES/b47155634ccb2c30630da7e3666d3d07/b47155634ccb2c30630da7e3666d3d07.trace.html#NtUserGetIconSize */ -BOOL -NTAPI -NtUserGetIconSize( - HANDLE Handle, - DWORD dwUnknown2, // Most of the time Zero. - PLONG plcx, // &size.cx - PLONG plcy) // &size.cy -{ - UNIMPLEMENTED; - return FALSE; -} - DWORD NTAPI NtUserGetImeInfoEx( diff --git a/reactos/subsystems/win32/win32k/w32ksvc.db b/reactos/subsystems/win32/win32k/w32ksvc.db index 03268338cb8..5ad3142b015 100644 --- a/reactos/subsystems/win32/win32k/w32ksvc.db +++ b/reactos/subsystems/win32/win32k/w32ksvc.db @@ -697,7 +697,6 @@ NtUserGetClassLong 3 NtUserGetClientOrigin 2 NtUserGetClientRect 2 NtUserGetMenuDefaultItem 3 -NtUserGetCursorIconSize 3 NtUserGetLastInputInfo 1 NtUserGetMinMaxInfo 3 NtUserGetMonitorInfo 2