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
;
44 PVOID CsrSectionViewBase
;
45 ULONG CsrSectionViewSize
;
46 struct _CSRSS_PROCESS_DATA
* next
;
47 LIST_ENTRY ProcessEntry
;
48 PCONTROLDISPATCHER CtrlDispatcher
;
49 } CSRSS_PROCESS_DATA
, *PCSRSS_PROCESS_DATA
;
51 typedef VOID (STDCALL
*CSR_CLEANUP_OBJECT_PROC
)(Object_t
*Object
);
53 typedef struct tagCSRSS_OBJECT_DEFINITION
56 CSR_CLEANUP_OBJECT_PROC CsrCleanupObjectProc
;
57 } CSRSS_OBJECT_DEFINITION
, *PCSRSS_OBJECT_DEFINITION
;
59 typedef NTSTATUS (STDCALL
*CSRSS_API_PROC
)(PCSRSS_PROCESS_DATA ProcessData
,
60 PCSRSS_API_REQUEST Request
,
61 PCSRSS_API_REPLY Reply
);
63 typedef struct _CSRSS_API_DEFINITION
68 CSRSS_API_PROC Handler
;
69 } CSRSS_API_DEFINITION
, *PCSRSS_API_DEFINITION
;
71 #define CSRSS_DEFINE_API(Func, Handler) \
72 { Func, sizeof(Func##_REQUEST), sizeof(Func##_REPLY), Handler }
74 typedef struct _CSRSS_LISTEN_DATA
77 ULONG ApiDefinitionsCount
;
78 PCSRSS_API_DEFINITION
*ApiDefinitions
;
79 } CSRSS_LISTEN_DATA
, *PCSRSS_LISTEN_DATA
;
81 #define CSR_API(n) NTSTATUS STDCALL n (\
82 PCSRSS_PROCESS_DATA ProcessData,\
83 PCSRSS_API_REQUEST Request,\
84 PCSRSS_API_REPLY Reply)
87 extern HANDLE hBootstrapOk
;
90 CSR_API(CsrConnectProcess
);
91 CSR_API(CsrCreateProcess
);
92 CSR_API(CsrTerminateProcess
);
95 VOID STDCALL
DisplayString(LPCWSTR lpwString
);
96 VOID STDCALL
PrintString (char* fmt
, ...);
99 NTSTATUS FASTCALL
CsrApiRegisterDefinitions(PCSRSS_API_DEFINITION NewDefinitions
);
100 VOID FASTCALL
CsrApiCallHandler(PCSRSS_PROCESS_DATA ProcessData
,
101 PCSRSS_API_REQUEST Request
,
102 PCSRSS_API_REPLY Reply
);
103 DWORD STDCALL
ServerApiPortThread (PVOID PortHandle
);
104 DWORD STDCALL
ServerSbApiPortThread (PVOID PortHandle
);
105 DWORD STDCALL
Console_Api( PVOID unused
);
107 extern HANDLE CsrssApiHeap
;
110 VOID STDCALL
CsrInitConsoleSupport(VOID
);
113 VOID STDCALL
CsrInitProcessData(VOID
);
114 PCSRSS_PROCESS_DATA STDCALL
CsrGetProcessData(HANDLE ProcessId
);
115 PCSRSS_PROCESS_DATA STDCALL
CsrCreateProcessData(HANDLE ProcessId
);
116 NTSTATUS STDCALL
CsrFreeProcessData( HANDLE Pid
);
119 NTSTATUS FASTCALL
CsrRegisterObjectDefinitions(PCSRSS_OBJECT_DEFINITION NewDefinitions
);
120 NTSTATUS STDCALL
CsrInsertObject( PCSRSS_PROCESS_DATA ProcessData
, PHANDLE Handle
, Object_t
*Object
);
121 NTSTATUS STDCALL
CsrGetObject( PCSRSS_PROCESS_DATA ProcessData
, HANDLE Handle
, Object_t
**Object
);
122 BOOL STDCALL
CsrServerInitialization (ULONG ArgumentCount
, PWSTR
*ArgumentArray
);
123 NTSTATUS STDCALL
CsrReleaseObjectByPointer(Object_t
*Object
);
124 NTSTATUS STDCALL
CsrReleaseObject( PCSRSS_PROCESS_DATA ProcessData
, HANDLE Object
);
125 NTSTATUS STDCALL
CsrVerifyObject( PCSRSS_PROCESS_DATA ProcessData
, HANDLE Object
);
127 CSR_API(CsrGetInputHandle
);
128 CSR_API(CsrGetOutputHandle
);
129 CSR_API(CsrCloseHandle
);
130 CSR_API(CsrVerifyHandle
);
131 CSR_API(CsrDuplicateHandle
);
132 CSR_API(CsrGetInputWaitHandle
);
135 CSR_API(CsrRegisterServicesProcess
);
136 CSR_API(CsrExitReactos
);
137 CSR_API(CsrGetShutdownParameters
);
138 CSR_API(CsrSetShutdownParameters
);
140 CSR_API(CsrSetLogonNotifyWindow
);
141 CSR_API(CsrRegisterLogonProcess
);
143 #endif /* ndef API_H_INCLUDED */