Author: hpoussin
Date: Mon Jul 9 01:23:47 2007
New Revision: 27521
URL:
http://svn.reactos.org/svn/reactos?rev=27521&view=rev
Log:
Revert half of revision 27465, as it breaks 2nd stage setup ("Failure rendering
glyph")
Modified:
trunk/reactos/subsystems/win32/win32k/ntuser/misc.c
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/misc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/misc.c (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/misc.c Mon Jul 9 01:23:47 2007
@@ -1434,94 +1434,6 @@
return TRUE;
}
-static BOOL
-UserSystemParametersInfo_StructSet(
- UINT uiAction,
- UINT uiParam,
- PVOID pvParam,
- UINT fWinIni,
- PVOID pBuffer, /* private kmode buffer */
- UINT cbSize /* size of buffer and expected size usermode data, pointed by pvParam
*/
- )
-{
- NTSTATUS Status = STATUS_SUCCESS;
- _SEH_TRY
- {
- ProbeForRead(pvParam, cbSize, 1);
- RtlCopyMemory(pBuffer,pvParam,cbSize);
- }
- _SEH_HANDLE
- {
- Status = _SEH_GetExceptionCode();
- }
- _SEH_END;
- if(!NT_SUCCESS(Status))
- {
- SetLastNtError(Status);
- return( FALSE);
- }
- if(*(PUINT)pBuffer != cbSize)
- {
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
- return( FALSE);
- }
- return IntSystemParametersInfo(uiAction, uiParam, pBuffer, fWinIni);
-}
-
-static BOOL
-UserSystemParametersInfo_StructGet(
- UINT uiAction,
- UINT uiParam,
- PVOID pvParam,
- UINT fWinIni,
- PVOID pBuffer, /* private kmode buffer */
- UINT cbSize /* size of buffer and expected size usermode data, pointed by pvParam
*/
- )
-{
- NTSTATUS Status = STATUS_SUCCESS;
- _SEH_TRY
- {
- ProbeForRead(pvParam, cbSize, 1);
- /* Copy only first UINT describing structure size*/
- *((PUINT)pBuffer) = *((PUINT)pvParam);
- }
- _SEH_HANDLE
- {
- Status = _SEH_GetExceptionCode();
- }
- _SEH_END;
- if(!NT_SUCCESS(Status))
- {
- SetLastNtError(Status);
- return( FALSE);
- }
- if(uiParam != cbSize || *((PUINT)pBuffer) != cbSize)
- {
- SetLastWin32Error(ERROR_INVALID_PARAMETER);
- return( FALSE);
- }
- if(!IntSystemParametersInfo(uiAction, uiParam, pBuffer, fWinIni))
- {
- return( FALSE);
- }
- _SEH_TRY
- {
- ProbeForWrite(pvParam, cbSize, 1);
- RtlCopyMemory(pvParam,pBuffer,cbSize);
- }
- _SEH_HANDLE
- {
- Status = _SEH_GetExceptionCode();
- }
- _SEH_END;
- if(!NT_SUCCESS(Status))
- {
- SetLastNtError(Status);
- return( FALSE);
- }
- return( TRUE);
-}
-
/*
* @implemented
*/
@@ -1713,125 +1625,64 @@
}
return( TRUE);
}
- case SPI_GETICONMETRICS:
- {
- ICONMETRICSW Buffer;
- return UserSystemParametersInfo_StructGet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_SETICONMETRICS:
- {
- ICONMETRICSW Buffer;
- return UserSystemParametersInfo_StructSet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
case SPI_GETMINIMIZEDMETRICS:
- {
- MINIMIZEDMETRICS Buffer;
- return UserSystemParametersInfo_StructGet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
case SPI_SETMINIMIZEDMETRICS:
{
- MINIMIZEDMETRICS Buffer;
- return UserSystemParametersInfo_StructSet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
+ MINIMIZEDMETRICS minimetrics;
+
+ Status = MmCopyFromCaller(&minimetrics, pvParam,
sizeof(MINIMIZEDMETRICS));
+ if(!NT_SUCCESS(Status))
+ {
+ SetLastNtError(Status);
+ return( FALSE);
+ }
+ if(minimetrics.cbSize != sizeof(MINIMIZEDMETRICS))
+ {
+ SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ return( FALSE);
+ }
+ if(!IntSystemParametersInfo(uiAction, uiParam, &minimetrics, fWinIni))
+ {
+ return( FALSE);
+ }
+
+ Status = MmCopyToCaller(pvParam, &minimetrics,
sizeof(MINIMIZEDMETRICS));
+ if(!NT_SUCCESS(Status))
+ {
+ SetLastNtError(Status);
+ return( FALSE);
+ }
+ return( TRUE);
}
case SPI_GETNONCLIENTMETRICS:
- {
- NONCLIENTMETRICS Buffer;
- return UserSystemParametersInfo_StructGet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
case SPI_SETNONCLIENTMETRICS:
{
- NONCLIENTMETRICS Buffer;
- return UserSystemParametersInfo_StructSet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_GETANIMATION:
- {
- ANIMATIONINFO Buffer;
- return UserSystemParametersInfo_StructGet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_SETANIMATION:
- {
- ANIMATIONINFO Buffer;
- return UserSystemParametersInfo_StructSet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_GETACCESSTIMEOUT:
- {
- ACCESSTIMEOUT Buffer;
- return UserSystemParametersInfo_StructGet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_SETACCESSTIMEOUT:
- {
- ACCESSTIMEOUT Buffer;
- return UserSystemParametersInfo_StructSet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_GETFILTERKEYS:
- {
- FILTERKEYS Buffer;
- return UserSystemParametersInfo_StructGet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_SETFILTERKEYS:
- {
- FILTERKEYS Buffer;
- return UserSystemParametersInfo_StructSet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_GETHIGHCONTRAST:
- {
- HIGHCONTRAST Buffer;
- return UserSystemParametersInfo_StructGet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_SETHIGHCONTRAST:
- {
- HIGHCONTRAST Buffer;
- return UserSystemParametersInfo_StructSet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_GETSOUNDSENTRY:
- {
- SOUNDSENTRY Buffer;
- return UserSystemParametersInfo_StructGet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_SETSOUNDSENTRY:
- {
- SOUNDSENTRY Buffer;
- return UserSystemParametersInfo_StructSet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_GETSTICKYKEYS:
- {
- STICKYKEYS Buffer;
- return UserSystemParametersInfo_StructGet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_SETSTICKYKEYS:
- {
- STICKYKEYS Buffer;
- return UserSystemParametersInfo_StructSet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_GETTOGGLEKEYS:
- {
- TOGGLEKEYS Buffer;
- return UserSystemParametersInfo_StructGet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
- }
- case SPI_SETTOGGLEKEYS:
- {
- TOGGLEKEYS Buffer;
- return UserSystemParametersInfo_StructSet(uiAction, uiParam, pvParam,
fWinIni,
- &Buffer,sizeof(Buffer));
+ NONCLIENTMETRICSW metrics;
+
+ Status = MmCopyFromCaller(&metrics, pvParam, sizeof(NONCLIENTMETRICSW));
+ if(!NT_SUCCESS(Status))
+ {
+ SetLastNtError(Status);
+ return( FALSE);
+ }
+ if(metrics.cbSize != sizeof(NONCLIENTMETRICSW))
+ {
+ SetLastWin32Error(ERROR_INVALID_PARAMETER);
+ return( FALSE);
+ }
+
+ if(!IntSystemParametersInfo(uiAction, uiParam, &metrics, fWinIni))
+ {
+ return( FALSE);
+ }
+
+ Status = MmCopyToCaller(pvParam, &metrics, sizeof(NONCLIENTMETRICSW));
+ if(!NT_SUCCESS(Status))
+ {
+ SetLastNtError(Status);
+ return( FALSE);
+ }
+ return( TRUE);
}
case SPI_SETWORKAREA:
{
@@ -1921,26 +1772,7 @@
}
return( TRUE);
}
- case SPI_SETICONTITLELOGFONT:
- {
- LOGFONTW LogFont;
- _SEH_TRY
- {
- ProbeForRead(pvParam, sizeof( LOGFONTW ), 1);
- RtlCopyMemory(&LogFont,pvParam,sizeof(LOGFONTW));
- }
- _SEH_HANDLE
- {
- Status = _SEH_GetExceptionCode();
- }
- _SEH_END;
- if(!NT_SUCCESS(Status))
- {
- SetLastNtError(Status);
- return( FALSE);
- }
- return IntSystemParametersInfo(uiAction, uiParam, &LogFont, fWinIni);
- }
+
case SPI_GETICONTITLELOGFONT:
{
LOGFONTW LogFont;
@@ -1965,35 +1797,6 @@
}
return( TRUE);
}
- case SPI_ICONVERTICALSPACING:
- case SPI_ICONHORIZONTALSPACING:
- {
- UINT Ret;
- if(!IntSystemParametersInfo(uiAction, uiParam, &Ret, fWinIni))
- {
- return( FALSE);
- }
- if(NULL != pvParam)
- {
- _SEH_TRY
- {
- ProbeForWrite(pvParam, sizeof(UINT ), 1);
- *(PUINT)pvParam = Ret;
- }
- _SEH_HANDLE
- {
- Status = _SEH_GetExceptionCode();
- }
- _SEH_END;
- if(!NT_SUCCESS(Status))
- {
- SetLastNtError(Status);
- return( FALSE);
- }
- }
- return( TRUE);
- }
- case SPI_SETDEFAULTINPUTLANG:
case SPI_SETDESKWALLPAPER: /* !!! As opposed to the user mode version this
version accepts a handle
to the bitmap! */
{
@@ -2015,7 +1818,6 @@
}
return IntSystemParametersInfo(uiAction, uiParam, &Handle, fWinIni);
}
- case SPI_GETDEFAULTINPUTLANG:
case SPI_GETDESKWALLPAPER:
{
HANDLE Handle;