migrate substitution keywords to SVN
[reactos.git] / reactos / subsys / csrss / include / api.h
1 /* $Id$
2 *
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
7 */
8
9 #ifndef API_H_INCLUDED
10 #define API_H_INCLUDED
11
12 #include <ntos.h>
13
14 #include <csrss/csrss.h>
15
16 typedef struct Object_tt
17 {
18 LONG Type;
19 LONG ReferenceCount;
20 CRITICAL_SECTION Lock;
21 } Object_t;
22
23 typedef struct ConsoleInput_t
24 {
25 LIST_ENTRY ListEntry;
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
30 } ConsoleInput;
31
32 typedef struct tagCSRSS_CONSOLE *PCSRSS_CONSOLE;
33
34 typedef struct _CSRSS_PROCESS_DATA
35 {
36 PCSRSS_CONSOLE Console;
37 ULONG HandleTableSize;
38 Object_t ** HandleTable;
39 ULONG ProcessId;
40 ULONG ShutdownLevel;
41 ULONG ShutdownFlags;
42 HANDLE ConsoleEvent;
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;
49
50 typedef VOID (STDCALL *CSR_CLEANUP_OBJECT_PROC)(Object_t *Object);
51
52 typedef struct tagCSRSS_OBJECT_DEFINITION
53 {
54 LONG Type;
55 CSR_CLEANUP_OBJECT_PROC CsrCleanupObjectProc;
56 } CSRSS_OBJECT_DEFINITION, *PCSRSS_OBJECT_DEFINITION;
57
58 typedef NTSTATUS (STDCALL *CSRSS_API_PROC)(PCSRSS_PROCESS_DATA ProcessData,
59 PCSRSS_API_REQUEST Request,
60 PCSRSS_API_REPLY Reply);
61
62 typedef struct _CSRSS_API_DEFINITION
63 {
64 ULONG Type;
65 ULONG MinRequestSize;
66 ULONG MinReplySize;
67 CSRSS_API_PROC Handler;
68 } CSRSS_API_DEFINITION, *PCSRSS_API_DEFINITION;
69
70 #define CSRSS_DEFINE_API(Func, Handler) \
71 { Func, sizeof(Func##_REQUEST), sizeof(Func##_REPLY), Handler }
72
73 typedef struct _CSRSS_LISTEN_DATA
74 {
75 HANDLE ApiPortHandle;
76 ULONG ApiDefinitionsCount;
77 PCSRSS_API_DEFINITION *ApiDefinitions;
78 } CSRSS_LISTEN_DATA, *PCSRSS_LISTEN_DATA;
79
80 #define CSR_API(n) NTSTATUS STDCALL n (\
81 PCSRSS_PROCESS_DATA ProcessData,\
82 PCSRSS_API_REQUEST Request,\
83 PCSRSS_API_REPLY Reply)
84
85 /* api/process.c */
86 CSR_API(CsrConnectProcess);
87 CSR_API(CsrCreateProcess);
88 CSR_API(CsrTerminateProcess);
89
90 /* print.c */
91 VOID STDCALL DisplayString(LPCWSTR lpwString);
92 VOID STDCALL PrintString (char* fmt, ...);
93
94 /* api/wapi.c */
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 );
101
102 extern HANDLE CsrssApiHeap;
103
104 /* api/conio.c */
105 VOID STDCALL CsrInitConsoleSupport(VOID);
106
107 /* api/process.c */
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 );
112
113 /* api/handle.c */
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 );
121
122 CSR_API(CsrGetInputHandle);
123 CSR_API(CsrGetOutputHandle);
124 CSR_API(CsrCloseHandle);
125 CSR_API(CsrVerifyHandle);
126 CSR_API(CsrDuplicateHandle);
127 CSR_API(CsrGetInputWaitHandle);
128
129 /* api/user.c */
130 CSR_API(CsrRegisterServicesProcess);
131 CSR_API(CsrExitReactos);
132 CSR_API(CsrGetShutdownParameters);
133 CSR_API(CsrSetShutdownParameters);
134
135 CSR_API(CsrSetLogonNotifyWindow);
136 CSR_API(CsrRegisterLogonProcess);
137
138 #endif /* ndef API_H_INCLUDED */
139
140 /* EOF */
141