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_HANDLE
40 } CSRSS_HANDLE
, *PCSRSS_HANDLE
;
42 typedef struct _CSRSS_PROCESS_DATA
44 PCSRSS_CONSOLE Console
;
45 PCSRSS_CONSOLE ParentConsole
;
47 RTL_CRITICAL_SECTION HandleTableLock
;
48 ULONG HandleTableSize
;
49 PCSRSS_HANDLE HandleTable
;
55 PVOID CsrSectionViewBase
;
56 ULONG CsrSectionViewSize
;
57 HANDLE ServerCommunicationPort
;
58 struct _CSRSS_PROCESS_DATA
* next
;
59 LIST_ENTRY ProcessEntry
;
60 PCONTROLDISPATCHER CtrlDispatcher
;
62 } CSRSS_PROCESS_DATA
, *PCSRSS_PROCESS_DATA
;
64 typedef VOID (STDCALL
*CSR_CLEANUP_OBJECT_PROC
)(Object_t
*Object
);
66 typedef struct tagCSRSS_OBJECT_DEFINITION
69 CSR_CLEANUP_OBJECT_PROC CsrCleanupObjectProc
;
70 } CSRSS_OBJECT_DEFINITION
, *PCSRSS_OBJECT_DEFINITION
;
72 typedef NTSTATUS (STDCALL
*CSRSS_API_PROC
)(PCSRSS_PROCESS_DATA ProcessData
,
73 PCSR_API_MESSAGE Request
);
75 typedef struct _CSRSS_API_DEFINITION
79 CSRSS_API_PROC Handler
;
80 } CSRSS_API_DEFINITION
, *PCSRSS_API_DEFINITION
;
82 #define CSRSS_DEFINE_API(Func, Handler) \
83 { Func, sizeof(CSRSS_##Func), Handler }
85 typedef struct _CSRSS_LISTEN_DATA
88 ULONG ApiDefinitionsCount
;
89 PCSRSS_API_DEFINITION
*ApiDefinitions
;
90 } CSRSS_LISTEN_DATA
, *PCSRSS_LISTEN_DATA
;
92 #define CSR_API(n) NTSTATUS STDCALL n (\
93 PCSRSS_PROCESS_DATA ProcessData,\
94 PCSR_API_MESSAGE Request)
97 extern HANDLE hBootstrapOk
;
100 CSR_API(CsrConnectProcess
);
101 CSR_API(CsrCreateProcess
);
102 CSR_API(CsrTerminateProcess
);
105 VOID STDCALL
DisplayString(LPCWSTR lpwString
);
106 VOID STDCALL
PrintString (char* fmt
, ...);
109 NTSTATUS FASTCALL
CsrApiRegisterDefinitions(PCSRSS_API_DEFINITION NewDefinitions
);
110 VOID FASTCALL
CsrApiCallHandler(PCSRSS_PROCESS_DATA ProcessData
,
111 PCSR_API_MESSAGE Request
);
112 DWORD STDCALL
ServerApiPortThread (PVOID PortHandle
);
113 DWORD STDCALL
ServerSbApiPortThread (PVOID PortHandle
);
114 DWORD STDCALL
Console_Api( PVOID unused
);
117 ClientConnectionThread(HANDLE ServerPort
);
119 extern HANDLE CsrssApiHeap
;
122 VOID STDCALL
CsrInitConsoleSupport(VOID
);
125 typedef NTSTATUS (STDCALL
*CSRSS_ENUM_PROCESS_PROC
)(PCSRSS_PROCESS_DATA ProcessData
,
127 VOID STDCALL
CsrInitProcessData(VOID
);
128 PCSRSS_PROCESS_DATA STDCALL
CsrGetProcessData(HANDLE ProcessId
);
129 PCSRSS_PROCESS_DATA STDCALL
CsrCreateProcessData(HANDLE ProcessId
);
130 NTSTATUS STDCALL
CsrFreeProcessData( HANDLE Pid
);
131 NTSTATUS STDCALL
CsrEnumProcesses(CSRSS_ENUM_PROCESS_PROC EnumProc
, PVOID Context
);
134 NTSTATUS FASTCALL
CsrRegisterObjectDefinitions(PCSRSS_OBJECT_DEFINITION NewDefinitions
);
135 NTSTATUS STDCALL
CsrInsertObject( PCSRSS_PROCESS_DATA ProcessData
, PHANDLE Handle
, Object_t
*Object
, DWORD Access
, BOOL Inheritable
);
136 NTSTATUS STDCALL
CsrDuplicateHandleTable(PCSRSS_PROCESS_DATA SourceProcessData
, PCSRSS_PROCESS_DATA TargetProcessData
);
137 NTSTATUS STDCALL
CsrGetObject( PCSRSS_PROCESS_DATA ProcessData
, HANDLE Handle
, Object_t
**Object
, DWORD Access
);
138 BOOL STDCALL
CsrServerInitialization (int,char**,char**);
139 NTSTATUS STDCALL
CsrReleaseObjectByPointer(Object_t
*Object
);
140 NTSTATUS STDCALL
CsrReleaseObject( PCSRSS_PROCESS_DATA ProcessData
, HANDLE Object
);
141 NTSTATUS STDCALL
CsrVerifyObject( PCSRSS_PROCESS_DATA ProcessData
, HANDLE Object
);
143 CSR_API(CsrGetInputHandle
);
144 CSR_API(CsrGetOutputHandle
);
145 CSR_API(CsrCloseHandle
);
146 CSR_API(CsrVerifyHandle
);
147 CSR_API(CsrDuplicateHandle
);
148 CSR_API(CsrGetInputWaitHandle
);
151 CSR_API(CsrRegisterServicesProcess
);
152 CSR_API(CsrExitReactos
);
153 CSR_API(CsrGetShutdownParameters
);
154 CSR_API(CsrSetShutdownParameters
);
156 CSR_API(CsrSetLogonNotifyWindow
);
157 CSR_API(CsrRegisterLogonProcess
);
159 CSR_API(CsrAddConsoleAlias
);
160 CSR_API(CsrGetConsoleAlias
);
161 CSR_API(CsrGetAllConsoleAliases
);
162 CSR_API(CsrGetAllConsoleAliasesLength
);
163 CSR_API(CsrGetConsoleAliasesExes
);
164 CSR_API(CsrGetConsoleAliasesExesLength
);
167 #endif /* ndef API_H_INCLUDED */