3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: subsys/csrss/include/api.h
6 * PURPOSE: CSRSS API interface
10 #define API_H_INCLUDED
14 #include <csrss/csrss.h>
16 typedef struct Object_tt
20 CRITICAL_SECTION Lock
;
23 typedef struct ConsoleInput_t
26 INPUT_RECORD InputEvent
;
27 BOOLEAN Echoed
; // already been echoed or not
28 BOOLEAN Fake
; // synthesized, not a real event
29 BOOLEAN NotChar
; // message should not be used to return a character
32 typedef struct tagCSRSS_CONSOLE
*PCSRSS_CONSOLE
;
34 typedef struct _CSRSS_PROCESS_DATA
36 PCSRSS_CONSOLE Console
;
37 ULONG HandleTableSize
;
38 Object_t
** HandleTable
;
43 PVOID CsrSectionViewBase
;
44 ULONG CsrSectionViewSize
;
45 struct _CSRSS_PROCESS_DATA
* next
;
46 LIST_ENTRY ProcessEntry
;
47 PCONTROLDISPATCHER CtrlDispatcher
;
48 } CSRSS_PROCESS_DATA
, *PCSRSS_PROCESS_DATA
;
50 typedef VOID (STDCALL
*CSR_CLEANUP_OBJECT_PROC
)(Object_t
*Object
);
52 typedef struct tagCSRSS_OBJECT_DEFINITION
55 CSR_CLEANUP_OBJECT_PROC CsrCleanupObjectProc
;
56 } CSRSS_OBJECT_DEFINITION
, *PCSRSS_OBJECT_DEFINITION
;
58 typedef NTSTATUS (STDCALL
*CSRSS_API_PROC
)(PCSRSS_PROCESS_DATA ProcessData
,
59 PCSRSS_API_REQUEST Request
,
60 PCSRSS_API_REPLY Reply
);
62 typedef struct _CSRSS_API_DEFINITION
67 CSRSS_API_PROC Handler
;
68 } CSRSS_API_DEFINITION
, *PCSRSS_API_DEFINITION
;
70 #define CSRSS_DEFINE_API(Func, Handler) \
71 { Func, sizeof(Func##_REQUEST), sizeof(Func##_REPLY), Handler }
73 typedef struct _CSRSS_LISTEN_DATA
76 ULONG ApiDefinitionsCount
;
77 PCSRSS_API_DEFINITION
*ApiDefinitions
;
78 } CSRSS_LISTEN_DATA
, *PCSRSS_LISTEN_DATA
;
80 #define CSR_API(n) NTSTATUS STDCALL n (\
81 PCSRSS_PROCESS_DATA ProcessData,\
82 PCSRSS_API_REQUEST Request,\
83 PCSRSS_API_REPLY Reply)
86 CSR_API(CsrConnectProcess
);
87 CSR_API(CsrCreateProcess
);
88 CSR_API(CsrTerminateProcess
);
91 VOID STDCALL
DisplayString(LPCWSTR lpwString
);
92 VOID STDCALL
PrintString (char* fmt
, ...);
95 NTSTATUS FASTCALL
CsrApiRegisterDefinitions(PCSRSS_API_DEFINITION NewDefinitions
);
96 VOID FASTCALL
CsrApiCallHandler(PCSRSS_PROCESS_DATA ProcessData
,
97 PCSRSS_API_REQUEST Request
,
98 PCSRSS_API_REPLY Reply
);
99 VOID STDCALL
ServerApiPortThead(PVOID PortHandle
);
100 VOID
Console_Api( DWORD Ignored
);
102 extern HANDLE CsrssApiHeap
;
105 VOID STDCALL
CsrInitConsoleSupport(VOID
);
108 VOID STDCALL
CsrInitProcessData(VOID
);
109 PCSRSS_PROCESS_DATA STDCALL
CsrGetProcessData(ULONG ProcessId
);
110 PCSRSS_PROCESS_DATA STDCALL
CsrCreateProcessData(ULONG ProcessId
);
111 NTSTATUS STDCALL
CsrFreeProcessData( ULONG Pid
);
114 NTSTATUS FASTCALL
CsrRegisterObjectDefinitions(PCSRSS_OBJECT_DEFINITION NewDefinitions
);
115 NTSTATUS STDCALL
CsrInsertObject( PCSRSS_PROCESS_DATA ProcessData
, PHANDLE Handle
, Object_t
*Object
);
116 NTSTATUS STDCALL
CsrGetObject( PCSRSS_PROCESS_DATA ProcessData
, HANDLE Handle
, Object_t
**Object
);
117 BOOL STDCALL
CsrServerInitialization (ULONG ArgumentCount
, PWSTR
*ArgumentArray
);
118 NTSTATUS STDCALL
CsrReleaseObjectByPointer(Object_t
*Object
);
119 NTSTATUS STDCALL
CsrReleaseObject( PCSRSS_PROCESS_DATA ProcessData
, HANDLE Object
);
120 NTSTATUS STDCALL
CsrVerifyObject( PCSRSS_PROCESS_DATA ProcessData
, HANDLE Object
);
122 CSR_API(CsrGetInputHandle
);
123 CSR_API(CsrGetOutputHandle
);
124 CSR_API(CsrCloseHandle
);
125 CSR_API(CsrVerifyHandle
);
126 CSR_API(CsrDuplicateHandle
);
127 CSR_API(CsrGetInputWaitHandle
);
130 CSR_API(CsrRegisterServicesProcess
);
131 CSR_API(CsrExitReactos
);
132 CSR_API(CsrGetShutdownParameters
);
133 CSR_API(CsrSetShutdownParameters
);
135 CSR_API(CsrSetLogonNotifyWindow
);
136 CSR_API(CsrRegisterLogonProcess
);
138 #endif /* ndef API_H_INCLUDED */