xref: /reactos/subsystems/csr/csrsrv/status.h (revision 565bf9e3)
1 /*
2  * CSRSRV Status
3  */
4 
5 /* Organization
6  *
7  * api.c      - Handles the LPC Reply/Request Threads which wait on Sb and Csr APIs.
8  *              Also in charge of creating those threads and setting up the ports.
9  *              Finally, it provides external APIs for validating the API buffers
10  *              and doing server-to-server API calls.
11  *
12  * init.c     - Handles initialization of CSRSRV, including command-line parsing,
13  *              loading the Server DLLs, creating the Session Directories, setting
14  *              up the DosDevices Object Directory, and initializing each component.
15  *
16  * procsup.c  - Handles all internal functions dealing with the CSR Process Object,
17  *              including de/allocation, de/referencing, un/locking, priority, and
18  *              lookups. Also handles all external APIs which touch the CSR Process Object.
19  *
20  * server.c   - Handles all internal functions related to loading and managing Server
21  *              DLLs, as well as the routines handling the Shared Static Memory Section.
22  *              Holds the API Dispatch/Valid/Name Tables and the public CSR_SERVER API
23  *              interface. Also home of the SEH handler.
24  *
25  * session.c  - Handles all internal functions dealing with the CSR Session Object,
26  *              including de/allocation, de/referencing, and un/locking. Holds the SB API
27  *              Dispatch/Name Tables and the public CsrSv API Interface for communication
28  *              with the Session Manager.
29  *
30  * thredsup.c - Handles all internal functions dealing with the CSR Thread Object,
31  *              including de/allocation, de/referencing, un/locking, impersonation, and
32  *              lookups. Also handles all external APIs which touch the CSR Thread Object.
33  *
34  * wait.c     - Handles all internal functions dealing with the CSR Wait Object,
35  *              including de/allocation, de/referencing and un/locking. Also implements
36  *              the external Wait API for creating, removing and/or notifying waits.
37  */
38 
39 /* Exported APIs                     Location     Status
40  *------------------------------------------------------------
41  * CsrAddStaticServerThread     1  - server.c   - IMPLEMENTED
42  * CsrCallServerFromServer      2  - api.c      - IMPLEMENTED
43  * CsrConnectToUser             3  - api.c      - IMPLEMENTED
44  * CsrCreateProcess             4  - procsup.c  - IMPLEMENTED
45  * CsrCreateRemoteThread        5  - thredsup.c - IMPLEMENTED
46  * CsrCreateThread              6  - thredsup.c - IMPLEMENTED
47  * CsrCreateWait                7  - wait.c     - IMPLEMENTED
48  * CsrDebugProcess              8  - procsup.c  - IMPLEMENTED
49  * CsrDebugProcessStop          9  - procsup.c  - IMPLEMENTED
50  * CsrDereferenceProcess        10 - procsup.c  - IMPLEMENTED
51  * CsrDereferenceThread         11 - thredsup.c - IMPLEMENTED
52  * CsrDereferenceWait           12 - wait.c     - IMPLEMENTED
53  * CsrDestroyProcess            13 - procsup.c  - IMPLEMENTED
54  * CsrDestroyThread             14 - thredsup.c - IMPLEMENTED
55  * CsrExecServerThread          15 - thredsup.c - IMPLEMENTED
56  * CsrGetProcessLuid            16 - procsup.c  - IMPLEMENTED
57  * CsrImpersonateClient         17 - thredsup.c - IMPLEMENTED
58  * CsrLockProcessByClientId     18 - procsup.c  - IMPLEMENTED
59  * CsrLockThreadByClientId      19 - thredsup.c - IMPLEMENTED
60  * CsrMoveSatisfiedWait         20 - wait.c     - IMPLEMENTED
61  * CsrNotifyWait                21 - wait.c     - IMPLEMENTED
62  * CsrPopulateDosDevices        22 - init.c     - IMPLEMENTED
63  * CsrQueryApiPort              23 - api.c      - IMPLEMENTED
64  * CsrReferenceThread           24 - thredsup.c - IMPLEMENTED
65  * CsrRevertToSelf              25 - thredsup.c - IMPLEMENTED
66  * CsrServerInitialization      26 - server.c   - IMPLEMENTED
67  * CsrSetBackgroundPriority     27 - procsup.c  - IMPLEMENTED
68  * CsrSetCallingSpooler         28 - server.c   - IMPLEMENTED
69  * CsrSetForegroundPriority     29 - procsup.c  - IMPLEMENTED
70  * CsrShutdownProcesses         30 - procsup.c  - IMPLEMENTED
71  * CsrUnhandledExceptionFilter  31 - server.c   - IMPLEMENTED
72  * CsrUnlockProcess             32 - procsup.c  - IMPLEMENTED
73  * CsrUnlockThread              33 - thredsup.c - IMPLEMENTED
74  * CsrValidateMessageBuffer     34 - api.c      - IMPLEMENTED
75  * CsrValidateMessageString     35 - api.c      - IMPLEMENTED
76  */
77 
78 /* Public CSR API Interface Status (server.c)
79  * CsrSrvClientConnect                          - IMPLEMENTED
80  * CsrSrvUnusedFunction                         - IMPLEMENTED
81  */
82 
83 /* Public SB API Interface Status (session.c)
84  * CsrSbCreateSession                           - IMPLEMENTED
85  * CsrSbForeignSessionComplete                  - IMPLEMENTED
86  * CsrSbTerminateSession                        - UNIMPLEMENTED
87  * CsrSbCreateProcess                           - UNIMPLEMENTED
88  */
89 
90 /* What's missing:
91  *
92  * - SMSS needs to be partly re-written to match some things done here.
93  *   Among other things, SmConnectToSm, SmCompleteSession and the other
94  *   Sm* Exported APIs have to be properly implemented, as well as the
95  *   callback calling and SM LPC APIs. [PARTLY DONE!]
96  *
97  * - USER32 needs to register with winsrv properly. Additionally, it
98  *   needs to have ClientThreadStartup implemented properly and do the
99  *   syscall NtUserInitialize (I think) which also needs to be implemented
100  *   in win32k.sys. All this should be less then 100 lines of code.
101  *   [NOT DONE]
102  */
103