mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 17:42:58 +00:00
[FORMATTING] - Cleanup win32.c
[AUDIT] - Only function of interest is PsConverToGuiThread, heavily documented at: http://www.windowsitlibrary.com/Content/356/07/1.html http://www.osronline.com/lists_archive/ntdev/thread4614.html http://www.i.u-tokyo.ac.jp/edu/training/ss/lecture/new-documents/Lectures/17-Win32K/Win32K.ppt svn path=/trunk/; revision=23127
This commit is contained in:
parent
d0ba1357ee
commit
7ddd4aa708
2 changed files with 37 additions and 50 deletions
|
@ -310,6 +310,13 @@ KeStartThread(
|
||||||
IN OUT PKTHREAD Thread
|
IN OUT PKTHREAD Thread
|
||||||
);
|
);
|
||||||
|
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
KeSwitchKernelStack(
|
||||||
|
IN PVOID StackBase,
|
||||||
|
IN PVOID StackLimit
|
||||||
|
);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
STDCALL
|
STDCALL
|
||||||
KeRundownThread(VOID);
|
KeRundownThread(VOID);
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
/* $Id$
|
/*
|
||||||
*
|
* PROJECT: ReactOS Kernel
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
|
||||||
* FILE: ntoskrnl/ps/win32.c
|
* FILE: ntoskrnl/ps/win32.c
|
||||||
* PURPOSE: win32k support
|
* PURPOSE: Process Manager: Win32K Initialization and Support
|
||||||
*
|
* PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
|
||||||
* PROGRAMMERS: Eric Kohl (ekohl@rz-online.de)
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* INCLUDES ****************************************************************/
|
/* INCLUDES ****************************************************************/
|
||||||
|
@ -22,43 +20,7 @@ extern PKWIN32_PARSEMETHOD_CALLOUT ExpWindowStationObjectParse;
|
||||||
extern PKWIN32_DELETEMETHOD_CALLOUT ExpWindowStationObjectDelete;
|
extern PKWIN32_DELETEMETHOD_CALLOUT ExpWindowStationObjectDelete;
|
||||||
extern PKWIN32_DELETEMETHOD_CALLOUT ExpDesktopObjectDelete;
|
extern PKWIN32_DELETEMETHOD_CALLOUT ExpDesktopObjectDelete;
|
||||||
|
|
||||||
#ifndef ALEX_CB_REWRITE
|
/* PRIVATE FUNCTIONS *********************************************************/
|
||||||
typedef struct _NTW32CALL_SAVED_STATE
|
|
||||||
{
|
|
||||||
ULONG_PTR SavedStackLimit;
|
|
||||||
PVOID SavedStackBase;
|
|
||||||
PVOID SavedInitialStack;
|
|
||||||
PVOID CallerResult;
|
|
||||||
PULONG CallerResultLength;
|
|
||||||
PNTSTATUS CallbackStatus;
|
|
||||||
PKTRAP_FRAME SavedTrapFrame;
|
|
||||||
PVOID SavedCallbackStack;
|
|
||||||
PVOID SavedExceptionStack;
|
|
||||||
} NTW32CALL_SAVED_STATE, *PNTW32CALL_SAVED_STATE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
PVOID
|
|
||||||
STDCALL
|
|
||||||
KeSwitchKernelStack(
|
|
||||||
IN PVOID StackBase,
|
|
||||||
IN PVOID StackLimit
|
|
||||||
);
|
|
||||||
|
|
||||||
/* FUNCTIONS ***************************************************************/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
PsEstablishWin32Callouts(PWIN32_CALLOUTS_FPNS CalloutData)
|
|
||||||
{
|
|
||||||
PspW32ProcessCallout = CalloutData->ProcessCallout;
|
|
||||||
PspW32ThreadCallout = CalloutData->ThreadCallout;
|
|
||||||
ExpWindowStationObjectParse = CalloutData->WindowStationParseProcedure;
|
|
||||||
ExpWindowStationObjectDelete = CalloutData->WindowStationDeleteProcedure;
|
|
||||||
ExpDesktopObjectDelete = CalloutData->DesktopDeleteProcedure;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -134,6 +96,23 @@ PsConvertToGuiThread(VOID)
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* PUBLIC FUNCTIONS **********************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
PsEstablishWin32Callouts(IN PWIN32_CALLOUTS_FPNS CalloutData)
|
||||||
|
{
|
||||||
|
/* Setup the callback pointers */
|
||||||
|
PspW32ProcessCallout = CalloutData->ProcessCallout;
|
||||||
|
PspW32ThreadCallout = CalloutData->ThreadCallout;
|
||||||
|
ExpWindowStationObjectParse = CalloutData->WindowStationParseProcedure;
|
||||||
|
ExpWindowStationObjectDelete = CalloutData->WindowStationDeleteProcedure;
|
||||||
|
ExpDesktopObjectDelete = CalloutData->DesktopDeleteProcedure;
|
||||||
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtW32Call(IN ULONG RoutineIndex,
|
NtW32Call(IN ULONG RoutineIndex,
|
||||||
|
@ -145,24 +124,23 @@ NtW32Call(IN ULONG RoutineIndex,
|
||||||
PVOID RetResult;
|
PVOID RetResult;
|
||||||
ULONG RetResultLength;
|
ULONG RetResultLength;
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
DPRINT("NtW32Call(RoutineIndex %d, Argument %p, ArgumentLength %d)\n",
|
|
||||||
RoutineIndex, Argument, ArgumentLength);
|
|
||||||
|
|
||||||
/* must not be called as KernelMode! */
|
|
||||||
ASSERT(KeGetPreviousMode() != KernelMode);
|
ASSERT(KeGetPreviousMode() != KernelMode);
|
||||||
|
|
||||||
|
/* Enter SEH for probing */
|
||||||
_SEH_TRY
|
_SEH_TRY
|
||||||
{
|
{
|
||||||
|
/* Probe arguments */
|
||||||
ProbeForWritePointer(Result);
|
ProbeForWritePointer(Result);
|
||||||
ProbeForWriteUlong(ResultLength);
|
ProbeForWriteUlong(ResultLength);
|
||||||
}
|
}
|
||||||
_SEH_HANDLE
|
_SEH_HANDLE
|
||||||
{
|
{
|
||||||
|
/* Get exception code */
|
||||||
Status = _SEH_GetExceptionCode();
|
Status = _SEH_GetExceptionCode();
|
||||||
}
|
}
|
||||||
_SEH_END;
|
_SEH_END;
|
||||||
|
|
||||||
|
/* Make sure we got success */
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* Call kernel function */
|
/* Call kernel function */
|
||||||
|
@ -171,16 +149,18 @@ NtW32Call(IN ULONG RoutineIndex,
|
||||||
ArgumentLength,
|
ArgumentLength,
|
||||||
&RetResult,
|
&RetResult,
|
||||||
&RetResultLength);
|
&RetResultLength);
|
||||||
|
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
/* Enter SEH for write back */
|
||||||
_SEH_TRY
|
_SEH_TRY
|
||||||
{
|
{
|
||||||
|
/* Return results to user mode */
|
||||||
*Result = RetResult;
|
*Result = RetResult;
|
||||||
*ResultLength = RetResultLength;
|
*ResultLength = RetResultLength;
|
||||||
}
|
}
|
||||||
_SEH_HANDLE
|
_SEH_HANDLE
|
||||||
{
|
{
|
||||||
|
/* Get the exception code */
|
||||||
Status = _SEH_GetExceptionCode();
|
Status = _SEH_GetExceptionCode();
|
||||||
}
|
}
|
||||||
_SEH_END;
|
_SEH_END;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue