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