mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 16:36:11 +00:00
Retool SetSysColors and use SEH.
svn path=/trunk/; revision=33922
This commit is contained in:
parent
78c0b7a1df
commit
93c1e5a013
|
@ -69,9 +69,6 @@
|
|||
#define NtUserGetSysColors(ColorRefs, count) \
|
||||
(BOOL)NtUserCallTwoParam((DWORD)(ColorRefs), (DWORD)(count), TWOPARAM_ROUTINE_GETSYSCOLORS)
|
||||
|
||||
#define NtUserSetSysColors(ColorRefs, count) \
|
||||
(BOOL)NtUserCallTwoParam((DWORD)(ColorRefs), (DWORD)(count), TWOPARAM_ROUTINE_SETSYSCOLORS)
|
||||
|
||||
#define NtUserSetCaretBlinkTime(uMSeconds) \
|
||||
(BOOL)NtUserCallOneParam((DWORD)uMSeconds, ONEPARAM_ROUTINE_SETCARETBLINKTIME)
|
||||
|
||||
|
|
|
@ -110,27 +110,7 @@ SetSysColors(
|
|||
CONST INT *lpaElements,
|
||||
CONST COLORREF *lpaRgbValues)
|
||||
{
|
||||
BOOL Ret;
|
||||
struct
|
||||
{
|
||||
INT *Elements;
|
||||
COLORREF *Colors;
|
||||
} ChangeSysColors;
|
||||
|
||||
ChangeSysColors.Elements = (INT*)lpaElements;
|
||||
ChangeSysColors.Colors = (COLORREF*)lpaRgbValues;
|
||||
|
||||
if(cElements > 0)
|
||||
{
|
||||
Ret = NtUserSetSysColors(&ChangeSysColors, cElements);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
Ret = FALSE;
|
||||
}
|
||||
|
||||
return Ret;
|
||||
return NtUserSetSysColors(cElements, lpaElements, lpaRgbValues, 0);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -2230,12 +2230,12 @@ NtUserSetShellWindowEx(
|
|||
HWND hwndShell,
|
||||
HWND hwndShellListView);
|
||||
|
||||
DWORD
|
||||
BOOL
|
||||
NTAPI
|
||||
NtUserSetSysColors(
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
int cElements,
|
||||
IN INT *lpaElements,
|
||||
IN COLORREF *lpaRgbValues,
|
||||
DWORD Unknown3);
|
||||
|
||||
BOOL
|
||||
|
@ -2639,7 +2639,6 @@ typedef struct tagKMDDELPARAM
|
|||
#define TWOPARAM_ROUTINE_GETSYSCOLORBRUSHES 0xfffd0063
|
||||
#define TWOPARAM_ROUTINE_GETSYSCOLORPENS 0xfffd0064
|
||||
#define TWOPARAM_ROUTINE_GETSYSCOLORS 0xfffd0065
|
||||
#define TWOPARAM_ROUTINE_SETSYSCOLORS 0xfffd0066 // use NtUserSetSysColors
|
||||
#define TWOPARAM_ROUTINE_ROS_SHOWWINDOW 0x1000
|
||||
#define TWOPARAM_ROUTINE_ROS_ISACTIVEICON 0x1001
|
||||
#define TWOPARAM_ROUTINE_ROS_NCDESTROY 0x1002
|
||||
|
|
|
@ -521,17 +521,39 @@ NtUserSetRipFlags(
|
|||
return 0;
|
||||
}
|
||||
|
||||
DWORD
|
||||
BOOL
|
||||
STDCALL
|
||||
NtUserSetSysColors(
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
int cElements,
|
||||
IN INT *lpaElements,
|
||||
IN COLORREF *lpaRgbValues,
|
||||
DWORD Unknown3)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
DWORD Ret = FALSE;
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
UserEnterExclusive();
|
||||
_SEH_TRY
|
||||
{
|
||||
ProbeForRead(lpaElements,
|
||||
sizeof(INT),
|
||||
1);
|
||||
ProbeForRead(lpaRgbValues,
|
||||
sizeof(INT),
|
||||
1);
|
||||
Ret = IntSetSysColors(cElements, lpaElements, lpaRgbValues);
|
||||
}
|
||||
_SEH_HANDLE
|
||||
{
|
||||
Status = _SEH_GetExceptionCode();
|
||||
}
|
||||
_SEH_END;
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastNtError(Status);
|
||||
Ret = FALSE;
|
||||
}
|
||||
UserLeave();
|
||||
return Ret;
|
||||
}
|
||||
|
||||
DWORD
|
||||
|
|
|
@ -612,53 +612,6 @@ NtUserCallTwoParam(
|
|||
case TWOPARAM_ROUTINE_REGISTERLOGONPROC:
|
||||
RETURN( (DWORD)co_IntRegisterLogonProcess((HANDLE)Param1, (BOOL)Param2));
|
||||
|
||||
case TWOPARAM_ROUTINE_SETSYSCOLORS:
|
||||
{
|
||||
DWORD Ret = 0;
|
||||
PVOID Buffer;
|
||||
struct
|
||||
{
|
||||
INT *Elements;
|
||||
COLORREF *Colors;
|
||||
}
|
||||
ChangeSysColors;
|
||||
|
||||
/* FIXME - we should make use of SEH here... */
|
||||
|
||||
Status = MmCopyFromCaller(&ChangeSysColors, (PVOID)Param1, sizeof(ChangeSysColors));
|
||||
if(!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastNtError(Status);
|
||||
RETURN( 0);
|
||||
}
|
||||
|
||||
Buffer = ExAllocatePool(PagedPool, (Param2 * sizeof(INT)) + (Param2 * sizeof(COLORREF)));
|
||||
if(Buffer != NULL)
|
||||
{
|
||||
INT *Elements = (INT*)Buffer;
|
||||
COLORREF *Colors = (COLORREF*)Buffer + Param2;
|
||||
|
||||
Status = MmCopyFromCaller(Elements, ChangeSysColors.Elements, Param2 * sizeof(INT));
|
||||
if(NT_SUCCESS(Status))
|
||||
{
|
||||
Status = MmCopyFromCaller(Colors, ChangeSysColors.Colors, Param2 * sizeof(COLORREF));
|
||||
if(NT_SUCCESS(Status))
|
||||
{
|
||||
Ret = (DWORD)IntSetSysColors((UINT)Param2, Elements, Colors);
|
||||
}
|
||||
else
|
||||
SetLastNtError(Status);
|
||||
}
|
||||
else
|
||||
SetLastNtError(Status);
|
||||
|
||||
ExFreePool(Buffer);
|
||||
}
|
||||
|
||||
|
||||
RETURN( Ret);
|
||||
}
|
||||
|
||||
case TWOPARAM_ROUTINE_GETSYSCOLORBRUSHES:
|
||||
case TWOPARAM_ROUTINE_GETSYSCOLORPENS:
|
||||
case TWOPARAM_ROUTINE_GETSYSCOLORS:
|
||||
|
|
Loading…
Reference in a new issue