reactos/reactos/win32ss/win32kp.h
Hermès Bélusca-Maïto 56347a8b98 [WIN32K]
Reintroduce CSR support for kernel mode, based on code from Ge that was wiped out in revision 58770, and by ntdll CSR code. Is needed for kernel to user-mode CSR callbacks.

For readers, I remind you the big callback picture in the Win32 subsystem:
- In Windows NT 3.1 and 3.51, USER and GDI was modeled against client/server model (USER32.DLL and WINSRV.DLL, and GDI32.DLL and GDISRV.DLL), all running in user mode (using the CSR API).
- Starting Windows NT 4.0 (and up), some USER and GDI parts were moved into kernel mode (in the WIN32K.SYS driver) to speedup communication. We get:
  * GDI32.DLL as the client, doing win32k system calls (kernel-mode system calls to win32k),
  * and USER32.DLL, WINSRV.DLL and WIN32K.SYS working in tandem, USER32.DLL being the client and {WINSRV.DLL, WIN32K.SYS} being the server.
    USER32.DLL can do win32k system calls or CSR calls to WINSRV.DLL (client to server calls). For server-to-server calls, we have WINSRV.DLL
    doing win32k system calls, or WIN32K.SYS doing CSR calls back to WINSRV.DLL . Also, there is the possibility for WIN32K.SYS to make user-mode
    callbacks to USER32.DLL.

svn path=/trunk/; revision=65817
2014-12-23 21:17:24 +00:00

111 lines
3 KiB
C

/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Graphics Subsystem
* FILE: win32ss/win32kp.h
* PURPOSE: Internal Win32K Header
* PROGRAMMER: Alex Ionescu (alex@relsoft.net)
*/
/* INCLUDES ******************************************************************/
#pragma once
#if 0
#ifndef _MSC_VER
#define PLACE_IN_SECTION(s) __attribute__((section(s)))
#define INIT_FUNCTION PLACE_IN_SECTION("INIT")
#else
#define INIT_FUNCTION
#endif
#else
#define INIT_FUNCTION
#endif
/* Enable debugging features */
#define GDI_DEBUG 0
#define DBG_ENABLE_EVENT_LOGGING 0
#define DBG_ENABLE_SERVICE_HOOKS 0
/* CSRSS Interface */
#include "user/ntuser/csr.h"
/* Misc headers */
#include "user/ntuser/win32kdebug.h"
#include "user/ntuser/mmcopy.h"
#include "user/ntuser/tags.h"
#include "gdi/ntgdi/rect.h"
#include "gdi/ntgdi/misc.h"
/* Internal NtGdi Headers */
typedef struct _DC *PDC;
typedef struct _PALETTE *PPALETTE;
#include "gdi/ntgdi/gdiobj.h"
#include "gdi/eng/surface.h"
#include "gdi/eng/pdevobj.h"
#include "gdi/eng/ldevobj.h"
#include "gdi/eng/device.h"
#include "gdi/eng/driverobj.h"
#include "gdi/eng/engobjects.h"
#include "gdi/eng/eng.h"
#include "gdi/eng/engevent.h"
#include "gdi/eng/inteng.h"
#include "gdi/eng/xlateobj.h"
#include "gdi/eng/floatobj.h"
#include "gdi/eng/mouse.h"
#include "gdi/eng/mapping.h"
#include "gdi/ntgdi/xformobj.h"
#include "gdi/ntgdi/brush.h"
#include "gdi/ntgdi/color.h"
#include "gdi/ntgdi/bitmaps.h"
#include "gdi/ntgdi/palette.h"
#include "gdi/ntgdi/region.h"
#include "gdi/ntgdi/dc.h"
#include "gdi/ntgdi/dib.h"
#include "gdi/ntgdi/cliprgn.h"
#include "gdi/ntgdi/intgdi.h"
#include "gdi/ntgdi/paint.h"
#include "gdi/ntgdi/text.h"
#include "gdi/ntgdi/pen.h"
#include "gdi/ntgdi/cliprgn.h"
#include "gdi/ntgdi/coord.h"
#include "gdi/ntgdi/gdifloat.h"
#include "gdi/ntgdi/path.h"
#include "gdi/dib/dib.h"
#include "reactx/ntddraw/intddraw.h"
/* Internal NtUser Headers */
typedef struct _DESKTOP *PDESKTOP;
#include "user/ntuser/win32.h"
#include "user/ntuser/object.h"
#include "user/ntuser/ntuser.h"
#include "user/ntuser/shutdown.h"
#include "user/ntuser/cursoricon.h"
#include "user/ntuser/accelerator.h"
#include "user/ntuser/hook.h"
#include "user/ntuser/clipboard.h"
#include "user/ntuser/winsta.h"
#include "user/ntuser/msgqueue.h"
#include "user/ntuser/desktop.h"
#include "user/ntuser/dce.h"
#include "user/ntuser/focus.h"
#include "user/ntuser/hotkey.h"
#include "user/ntuser/input.h"
#include "user/ntuser/menu.h"
#include "user/ntuser/monitor.h"
#include "user/ntuser/timer.h"
#include "user/ntuser/caret.h"
#include "user/ntuser/painting.h"
#include "user/ntuser/class.h"
#include "user/ntuser/window.h"
#include "user/ntuser/sysparams.h"
#include "user/ntuser/prop.h"
#include "user/ntuser/guicheck.h"
#include "user/ntuser/useratom.h"
#include "user/ntuser/vis.h"
#include "user/ntuser/userfuncs.h"
#include "user/ntuser/scroll.h"
#include "user/ntuser/winpos.h"
#include "user/ntuser/callback.h"
#include "gdi/ntgdi/gdidebug.h"