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
12 #define NTOS_MODE_USER
13 #include <ndk/ntndk.h>
15 #include <csrss/csrss.h>
17 typedef struct Object_tt
21 CRITICAL_SECTION Lock
;
24 typedef struct ConsoleInput_t
27 INPUT_RECORD InputEvent
;
28 BOOLEAN Echoed
; // already been echoed or not
29 BOOLEAN Fake
; // synthesized, not a real event
30 BOOLEAN NotChar
; // message should not be used to return a character
33 typedef struct tagCSRSS_CONSOLE
*PCSRSS_CONSOLE
;
35 typedef struct _CSRSS_PROCESS_DATA
37 PCSRSS_CONSOLE Console
;
38 PCSRSS_CONSOLE ParentConsole
;
40 RTL_CRITICAL_SECTION HandleTableLock
;
41 ULONG HandleTableSize
;
42 Object_t
** HandleTable
;
48 PVOID CsrSectionViewBase
;
49 ULONG CsrSectionViewSize
;
50 struct _CSRSS_PROCESS_DATA
* next
;
51 LIST_ENTRY ProcessEntry
;
52 PCONTROLDISPATCHER CtrlDispatcher
;
53 } CSRSS_PROCESS_DATA
, *PCSRSS_PROCESS_DATA
;
55 typedef VOID (STDCALL
*CSR_CLEANUP_OBJECT_PROC
)(Object_t
*Object
);
57 typedef struct tagCSRSS_OBJECT_DEFINITION
60 CSR_CLEANUP_OBJECT_PROC CsrCleanupObjectProc
;
61 } CSRSS_OBJECT_DEFINITION
, *PCSRSS_OBJECT_DEFINITION
;
63 typedef NTSTATUS (STDCALL
*CSRSS_API_PROC
)(PCSRSS_PROCESS_DATA ProcessData
,
64 PCSR_API_MESSAGE Request
);
66 typedef struct _CSRSS_API_DEFINITION
70 CSRSS_API_PROC Handler
;
71 } CSRSS_API_DEFINITION
, *PCSRSS_API_DEFINITION
;
73 #define CSRSS_DEFINE_API(Func, Handler) \
74 { Func, sizeof(CSRSS_##Func), Handler }
76 typedef struct _CSRSS_LISTEN_DATA
79 ULONG ApiDefinitionsCount
;
80 PCSRSS_API_DEFINITION
*ApiDefinitions
;
81 } CSRSS_LISTEN_DATA
, *PCSRSS_LISTEN_DATA
;
83 #define CSR_API(n) NTSTATUS STDCALL n (\
84 PCSRSS_PROCESS_DATA ProcessData,\
85 PCSR_API_MESSAGE Request)
88 extern HANDLE hBootstrapOk
;
91 CSR_API(CsrConnectProcess
);
92 CSR_API(CsrCreateProcess
);
93 CSR_API(CsrTerminateProcess
);
96 VOID STDCALL
DisplayString(LPCWSTR lpwString
);
97 VOID STDCALL
PrintString (char* fmt
, ...);
100 NTSTATUS FASTCALL
CsrApiRegisterDefinitions(PCSRSS_API_DEFINITION NewDefinitions
);
101 VOID FASTCALL
CsrApiCallHandler(PCSRSS_PROCESS_DATA ProcessData
,
102 PCSR_API_MESSAGE Request
);
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
CsrDuplicateHandleTable(PCSRSS_PROCESS_DATA SourceProcessData
, PCSRSS_PROCESS_DATA TargetProcessData
);
122 NTSTATUS STDCALL
CsrGetObject( PCSRSS_PROCESS_DATA ProcessData
, HANDLE Handle
, Object_t
**Object
);
123 BOOL STDCALL
CsrServerInitialization (int,char**,char**);
124 NTSTATUS STDCALL
CsrReleaseObjectByPointer(Object_t
*Object
);
125 NTSTATUS STDCALL
CsrReleaseObject( PCSRSS_PROCESS_DATA ProcessData
, HANDLE Object
);
126 NTSTATUS STDCALL
CsrVerifyObject( PCSRSS_PROCESS_DATA ProcessData
, HANDLE Object
);
128 CSR_API(CsrGetInputHandle
);
129 CSR_API(CsrGetOutputHandle
);
130 CSR_API(CsrCloseHandle
);
131 CSR_API(CsrVerifyHandle
);
132 CSR_API(CsrDuplicateHandle
);
133 CSR_API(CsrGetInputWaitHandle
);
136 CSR_API(CsrRegisterServicesProcess
);
137 CSR_API(CsrExitReactos
);
138 CSR_API(CsrGetShutdownParameters
);
139 CSR_API(CsrSetShutdownParameters
);
141 CSR_API(CsrSetLogonNotifyWindow
);
142 CSR_API(CsrRegisterLogonProcess
);
144 #endif /* ndef API_H_INCLUDED */