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) \
|
#define NtUserGetSysColors(ColorRefs, count) \
|
||||||
(BOOL)NtUserCallTwoParam((DWORD)(ColorRefs), (DWORD)(count), TWOPARAM_ROUTINE_GETSYSCOLORS)
|
(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) \
|
#define NtUserSetCaretBlinkTime(uMSeconds) \
|
||||||
(BOOL)NtUserCallOneParam((DWORD)uMSeconds, ONEPARAM_ROUTINE_SETCARETBLINKTIME)
|
(BOOL)NtUserCallOneParam((DWORD)uMSeconds, ONEPARAM_ROUTINE_SETCARETBLINKTIME)
|
||||||
|
|
||||||
|
|
|
@ -110,27 +110,7 @@ SetSysColors(
|
||||||
CONST INT *lpaElements,
|
CONST INT *lpaElements,
|
||||||
CONST COLORREF *lpaRgbValues)
|
CONST COLORREF *lpaRgbValues)
|
||||||
{
|
{
|
||||||
BOOL Ret;
|
return NtUserSetSysColors(cElements, lpaElements, lpaRgbValues, 0);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -2230,12 +2230,12 @@ NtUserSetShellWindowEx(
|
||||||
HWND hwndShell,
|
HWND hwndShell,
|
||||||
HWND hwndShellListView);
|
HWND hwndShellListView);
|
||||||
|
|
||||||
DWORD
|
BOOL
|
||||||
NTAPI
|
NTAPI
|
||||||
NtUserSetSysColors(
|
NtUserSetSysColors(
|
||||||
DWORD Unknown0,
|
int cElements,
|
||||||
DWORD Unknown1,
|
IN INT *lpaElements,
|
||||||
DWORD Unknown2,
|
IN COLORREF *lpaRgbValues,
|
||||||
DWORD Unknown3);
|
DWORD Unknown3);
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
|
@ -2639,7 +2639,6 @@ typedef struct tagKMDDELPARAM
|
||||||
#define TWOPARAM_ROUTINE_GETSYSCOLORBRUSHES 0xfffd0063
|
#define TWOPARAM_ROUTINE_GETSYSCOLORBRUSHES 0xfffd0063
|
||||||
#define TWOPARAM_ROUTINE_GETSYSCOLORPENS 0xfffd0064
|
#define TWOPARAM_ROUTINE_GETSYSCOLORPENS 0xfffd0064
|
||||||
#define TWOPARAM_ROUTINE_GETSYSCOLORS 0xfffd0065
|
#define TWOPARAM_ROUTINE_GETSYSCOLORS 0xfffd0065
|
||||||
#define TWOPARAM_ROUTINE_SETSYSCOLORS 0xfffd0066 // use NtUserSetSysColors
|
|
||||||
#define TWOPARAM_ROUTINE_ROS_SHOWWINDOW 0x1000
|
#define TWOPARAM_ROUTINE_ROS_SHOWWINDOW 0x1000
|
||||||
#define TWOPARAM_ROUTINE_ROS_ISACTIVEICON 0x1001
|
#define TWOPARAM_ROUTINE_ROS_ISACTIVEICON 0x1001
|
||||||
#define TWOPARAM_ROUTINE_ROS_NCDESTROY 0x1002
|
#define TWOPARAM_ROUTINE_ROS_NCDESTROY 0x1002
|
||||||
|
|
|
@ -521,17 +521,39 @@ NtUserSetRipFlags(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUserSetSysColors(
|
NtUserSetSysColors(
|
||||||
DWORD Unknown0,
|
int cElements,
|
||||||
DWORD Unknown1,
|
IN INT *lpaElements,
|
||||||
DWORD Unknown2,
|
IN COLORREF *lpaRgbValues,
|
||||||
DWORD Unknown3)
|
DWORD Unknown3)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED
|
DWORD Ret = FALSE;
|
||||||
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
return 0;
|
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
|
DWORD
|
||||||
|
|
|
@ -612,53 +612,6 @@ NtUserCallTwoParam(
|
||||||
case TWOPARAM_ROUTINE_REGISTERLOGONPROC:
|
case TWOPARAM_ROUTINE_REGISTERLOGONPROC:
|
||||||
RETURN( (DWORD)co_IntRegisterLogonProcess((HANDLE)Param1, (BOOL)Param2));
|
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_GETSYSCOLORBRUSHES:
|
||||||
case TWOPARAM_ROUTINE_GETSYSCOLORPENS:
|
case TWOPARAM_ROUTINE_GETSYSCOLORPENS:
|
||||||
case TWOPARAM_ROUTINE_GETSYSCOLORS:
|
case TWOPARAM_ROUTINE_GETSYSCOLORS:
|
||||||
|
|
Loading…
Reference in a new issue