Author: cwittich Date: Tue Jun 30 01:10:40 2009 New Revision: 41700
URL: http://svn.reactos.org/svn/reactos?rev=41700&view=rev Log: fix formatting
Modified: trunk/reactos/base/system/smss/smapi.c
Modified: trunk/reactos/base/system/smss/smapi.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/smss/smapi.c?re... ============================================================================== --- trunk/reactos/base/system/smss/smapi.c [iso-8859-1] (original) +++ trunk/reactos/base/system/smss/smapi.c [iso-8859-1] Tue Jun 30 01:10:40 2009 @@ -20,9 +20,9 @@
SMAPI(SmInvalid) { - DPRINT("SM: %s called\n",__FUNCTION__); - Request->SmHeader.Status = STATUS_NOT_IMPLEMENTED; - return STATUS_SUCCESS; + DPRINT("SM: %s called\n",__FUNCTION__); + Request->SmHeader.Status = STATUS_NOT_IMPLEMENTED; + return STATUS_SUCCESS; }
/* SM API Table */ @@ -30,20 +30,20 @@
SM_PORT_API SmApi [] = { - SmInvalid, /* unused */ - SmCompSes, /* smapicomp.c */ - SmInvalid, /* obsolete */ - SmInvalid, /* unknown */ - SmExecPgm, /* smapiexec.c */ - SmQryInfo /* smapyqry.c */ + SmInvalid, /* unused */ + SmCompSes, /* smapicomp.c */ + SmInvalid, /* obsolete */ + SmInvalid, /* unknown */ + SmExecPgm, /* smapiexec.c */ + SmQryInfo /* smapyqry.c */ };
/* TODO: optimize this address computation (it should be done * with a macro) */ PSM_CONNECT_DATA FASTCALL SmpGetConnectData (PSM_PORT_MESSAGE Request) { - PPORT_MESSAGE PortMessage = (PPORT_MESSAGE) Request; - return (PSM_CONNECT_DATA)(PortMessage + 1); + PPORT_MESSAGE PortMessage = (PPORT_MESSAGE) Request; + return (PSM_CONNECT_DATA)(PortMessage + 1); }
NTSTATUS NTAPI @@ -60,46 +60,46 @@ */ static NTSTATUS SmpCallbackServer (PSM_PORT_MESSAGE Request, - PSM_CLIENT_DATA ClientData) -{ - NTSTATUS Status = STATUS_SUCCESS; - PSM_CONNECT_DATA ConnectData = SmpGetConnectData (Request); - UNICODE_STRING CallbackPortName; - ULONG CallbackPortNameLength = SM_SB_NAME_MAX_LENGTH; /* TODO: compute length */ - SB_CONNECT_DATA SbConnectData; - ULONG SbConnectDataLength = sizeof SbConnectData; - SECURITY_QUALITY_OF_SERVICE SecurityQos; - - DPRINT("SM: %s called\n", __FUNCTION__); - - if ( ((USHORT)-1 == ConnectData->SubSystemId) || - (IMAGE_SUBSYSTEM_NATIVE == ConnectData->SubSystemId)) - { - DPRINT("SM: %s: we do not need calling back SM!\n", - __FUNCTION__); - return STATUS_SUCCESS; - } - RtlCopyMemory (ClientData->SbApiPortName, - ConnectData->SbName, - CallbackPortNameLength); - RtlInitUnicodeString (& CallbackPortName, - ClientData->SbApiPortName); + PSM_CLIENT_DATA ClientData) +{ + NTSTATUS Status = STATUS_SUCCESS; + PSM_CONNECT_DATA ConnectData = SmpGetConnectData (Request); + UNICODE_STRING CallbackPortName; + ULONG CallbackPortNameLength = SM_SB_NAME_MAX_LENGTH; /* TODO: compute length */ + SB_CONNECT_DATA SbConnectData; + ULONG SbConnectDataLength = sizeof SbConnectData; + SECURITY_QUALITY_OF_SERVICE SecurityQos; + + DPRINT("SM: %s called\n", __FUNCTION__); + + if ( ((USHORT)-1 == ConnectData->SubSystemId) || + (IMAGE_SUBSYSTEM_NATIVE == ConnectData->SubSystemId)) + { + DPRINT("SM: %s: we do not need calling back SM!\n", + __FUNCTION__); + return STATUS_SUCCESS; + } + RtlCopyMemory (ClientData->SbApiPortName, + ConnectData->SbName, + CallbackPortNameLength); + RtlInitUnicodeString (& CallbackPortName, + ClientData->SbApiPortName);
SecurityQos.Length = sizeof (SecurityQos); SecurityQos.ImpersonationLevel = SecurityIdentification; SecurityQos.ContextTrackingMode = SECURITY_DYNAMIC_TRACKING; SecurityQos.EffectiveOnly = TRUE;
- SbConnectData.SmApiMax = (sizeof SmApi / sizeof SmApi[0]); - Status = NtConnectPort (& ClientData->SbApiPort, - & CallbackPortName, - &SecurityQos, - NULL, - NULL, - NULL, - & SbConnectData, - & SbConnectDataLength); - return Status; + SbConnectData.SmApiMax = (sizeof SmApi / sizeof SmApi[0]); + Status = NtConnectPort (& ClientData->SbApiPort, + & CallbackPortName, + &SecurityQos, + NULL, + NULL, + NULL, + & SbConnectData, + & SbConnectDataLength); + return Status; }
/********************************************************************** @@ -112,62 +112,62 @@ VOID NTAPI SmpApiConnectedThread(PVOID pConnectedPort) { - NTSTATUS Status = STATUS_SUCCESS; - PPORT_MESSAGE Reply = NULL; - SM_PORT_MESSAGE Request; - HANDLE ConnectedPort = * (PHANDLE) pConnectedPort; - - DPRINT("SM: %s called\n", __FUNCTION__); - RtlZeroMemory(&Request, sizeof(SM_PORT_MESSAGE)); - - while (TRUE) - { - DPRINT("SM: %s: waiting for message\n",__FUNCTION__); - - Status = NtReplyWaitReceivePort(ConnectedPort, - NULL, - Reply, - (PPORT_MESSAGE) & Request); - if (NT_SUCCESS(Status)) - { - DPRINT("SM: %s: message received (type=%d)\n", - __FUNCTION__, - Request.Header.u2.s2.Type); - - switch (Request.Header.u2.s2.Type) - { - case LPC_CONNECTION_REQUEST: - SmpHandleConnectionRequest (&Request); - Reply = NULL; - break; - case LPC_DEBUG_EVENT: + NTSTATUS Status = STATUS_SUCCESS; + PPORT_MESSAGE Reply = NULL; + SM_PORT_MESSAGE Request; + HANDLE ConnectedPort = * (PHANDLE) pConnectedPort; + + DPRINT("SM: %s called\n", __FUNCTION__); + RtlZeroMemory(&Request, sizeof(SM_PORT_MESSAGE)); + + while (TRUE) + { + DPRINT("SM: %s: waiting for message\n",__FUNCTION__); + + Status = NtReplyWaitReceivePort(ConnectedPort, + NULL, + Reply, + (PPORT_MESSAGE) & Request); + if (NT_SUCCESS(Status)) + { + DPRINT("SM: %s: message received (type=%d)\n", + __FUNCTION__, + Request.Header.u2.s2.Type); + + switch (Request.Header.u2.s2.Type) + { + case LPC_CONNECTION_REQUEST: + SmpHandleConnectionRequest (&Request); + Reply = NULL; + break; + case LPC_DEBUG_EVENT: // DbgSsHandleKmApiMsg (&Request, 0); - Reply = NULL; - break; - case LPC_PORT_CLOSED: - Reply = NULL; - continue; - default: - if ((Request.SmHeader.ApiIndex) && - (Request.SmHeader.ApiIndex < (sizeof SmApi / sizeof SmApi[0]))) - { - Status = SmApi[Request.SmHeader.ApiIndex](&Request); - Reply = (PPORT_MESSAGE) & Request; - } else { - Request.SmHeader.Status = STATUS_NOT_IMPLEMENTED; - Reply = (PPORT_MESSAGE) & Request; - } - } - } else { - /* LPC failed */ - DPRINT1("SM: %s: NtReplyWaitReceivePort() failed (Status=0x%08lx)\n", - __FUNCTION__, Status); - break; - } - } - NtClose (ConnectedPort); - DPRINT("SM: %s done\n", __FUNCTION__); - NtTerminateThread (NtCurrentThread(), Status); + Reply = NULL; + break; + case LPC_PORT_CLOSED: + Reply = NULL; + continue; + default: + if ((Request.SmHeader.ApiIndex) && + (Request.SmHeader.ApiIndex < (sizeof SmApi / sizeof SmApi[0]))) + { + Status = SmApi[Request.SmHeader.ApiIndex](&Request); + Reply = (PPORT_MESSAGE) & Request; + } else { + Request.SmHeader.Status = STATUS_NOT_IMPLEMENTED; + Reply = (PPORT_MESSAGE) & Request; + } + } + } else { + /* LPC failed */ + DPRINT1("SM: %s: NtReplyWaitReceivePort() failed (Status=0x%08lx)\n", + __FUNCTION__, Status); + break; + } + } + NtClose (ConnectedPort); + DPRINT("SM: %s done\n", __FUNCTION__); + NtTerminateThread (NtCurrentThread(), Status); }
/********************************************************************** @@ -183,106 +183,106 @@ NTSTATUS NTAPI SmpHandleConnectionRequest (PSM_PORT_MESSAGE Request) { - PSM_CONNECT_DATA ConnectData = SmpGetConnectData (Request); - NTSTATUS Status = STATUS_SUCCESS; - BOOL Accept = FALSE; - PSM_CLIENT_DATA ClientData = NULL; - HANDLE hClientDataApiPort = (HANDLE) 0; - PHANDLE ClientDataApiPort = & hClientDataApiPort; - HANDLE hClientDataApiPortThread = (HANDLE) 0; - PHANDLE ClientDataApiPortThread = & hClientDataApiPortThread; - PVOID Context = NULL; - - DPRINT("SM: %s called:\n SubSystemID=%d\n SbName="%S"\n", - __FUNCTION__, ConnectData->SubSystemId, ConnectData->SbName); - - if(sizeof (SM_CONNECT_DATA) == Request->Header.u1.s1.DataLength) - { - if(IMAGE_SUBSYSTEM_UNKNOWN == ConnectData->SubSystemId) - { - /* - * This is not a call to register an image set, - * but a simple connection request from a process - * that will use the SM API. - */ - DPRINT("SM: %s: simple request\n", __FUNCTION__); - ClientDataApiPort = & hClientDataApiPort; - ClientDataApiPortThread = & hClientDataApiPortThread; - Accept = TRUE; - } else { - DPRINT("SM: %s: request to register an image set\n", __FUNCTION__); - /* - * Reject GUIs classes: only odd subsystem IDs are - * allowed to register here (tty mode images). - */ - if(1 == (ConnectData->SubSystemId % 2)) - { - DPRINT("SM: %s: id = %d\n", __FUNCTION__, ConnectData->SubSystemId); - /* - * SmBeginClientInitialization/2 will succeed only if there - * is a candidate client ready. - */ - Status = SmBeginClientInitialization (Request, & ClientData); - if(STATUS_SUCCESS == Status) - { - DPRINT("SM: %s: ClientData = %p\n", - __FUNCTION__, ClientData); - /* - * OK: the client is an environment subsystem - * willing to manage a free image type. - */ - ClientDataApiPort = & ClientData->ApiPort; - ClientDataApiPortThread = & ClientData->ApiPortThread; - /* - * Call back the candidate environment subsystem - * server (use the port name sent in in the - * connection request message). - */ - Status = SmpCallbackServer (Request, ClientData); - if(NT_SUCCESS(Status)) - { - DPRINT("SM: %s: SmpCallbackServer OK\n", - __FUNCTION__); - Accept = TRUE; - } else { - DPRINT("SM: %s: SmpCallbackServer failed (Status=%08lx)\n", - __FUNCTION__, Status); - Status = SmDestroyClient (ConnectData->SubSystemId); - } - } - } - } - } - DPRINT("SM: %s: before NtAcceptConnectPort\n", __FUNCTION__); - - Status = NtAcceptConnectPort (ClientDataApiPort, - Context, - (PPORT_MESSAGE) Request, - Accept, - NULL, - NULL); - - if(Accept) - { - if(!NT_SUCCESS(Status)) - { - DPRINT1("SM: %s: NtAcceptConnectPort() failed (Status=0x%08lx)\n", - __FUNCTION__, Status); - return Status; - } else { - DPRINT("SM: %s: completing connection request\n", __FUNCTION__); - Status = NtCompleteConnectPort (*ClientDataApiPort); - if (!NT_SUCCESS(Status)) - { - DPRINT1("SM: %s: NtCompleteConnectPort() failed (Status=0x%08lx)\n", - __FUNCTION__, Status); - return Status; - } - } - Status = STATUS_SUCCESS; - } - DPRINT("SM: %s done\n", __FUNCTION__); - return Status; + PSM_CONNECT_DATA ConnectData = SmpGetConnectData (Request); + NTSTATUS Status = STATUS_SUCCESS; + BOOL Accept = FALSE; + PSM_CLIENT_DATA ClientData = NULL; + HANDLE hClientDataApiPort = (HANDLE) 0; + PHANDLE ClientDataApiPort = & hClientDataApiPort; + HANDLE hClientDataApiPortThread = (HANDLE) 0; + PHANDLE ClientDataApiPortThread = & hClientDataApiPortThread; + PVOID Context = NULL; + + DPRINT("SM: %s called:\n SubSystemID=%d\n SbName="%S"\n", + __FUNCTION__, ConnectData->SubSystemId, ConnectData->SbName); + + if(sizeof (SM_CONNECT_DATA) == Request->Header.u1.s1.DataLength) + { + if(IMAGE_SUBSYSTEM_UNKNOWN == ConnectData->SubSystemId) + { + /* + * This is not a call to register an image set, + * but a simple connection request from a process + * that will use the SM API. + */ + DPRINT("SM: %s: simple request\n", __FUNCTION__); + ClientDataApiPort = & hClientDataApiPort; + ClientDataApiPortThread = & hClientDataApiPortThread; + Accept = TRUE; + } else { + DPRINT("SM: %s: request to register an image set\n", __FUNCTION__); + /* + * Reject GUIs classes: only odd subsystem IDs are + * allowed to register here (tty mode images). + */ + if(1 == (ConnectData->SubSystemId % 2)) + { + DPRINT("SM: %s: id = %d\n", __FUNCTION__, ConnectData->SubSystemId); + /* + * SmBeginClientInitialization/2 will succeed only if there + * is a candidate client ready. + */ + Status = SmBeginClientInitialization (Request, & ClientData); + if(STATUS_SUCCESS == Status) + { + DPRINT("SM: %s: ClientData = %p\n", + __FUNCTION__, ClientData); + /* + * OK: the client is an environment subsystem + * willing to manage a free image type. + */ + ClientDataApiPort = & ClientData->ApiPort; + ClientDataApiPortThread = & ClientData->ApiPortThread; + /* + * Call back the candidate environment subsystem + * server (use the port name sent in in the + * connection request message). + */ + Status = SmpCallbackServer (Request, ClientData); + if(NT_SUCCESS(Status)) + { + DPRINT("SM: %s: SmpCallbackServer OK\n", + __FUNCTION__); + Accept = TRUE; + } else { + DPRINT("SM: %s: SmpCallbackServer failed (Status=%08lx)\n", + __FUNCTION__, Status); + Status = SmDestroyClient (ConnectData->SubSystemId); + } + } + } + } + } + DPRINT("SM: %s: before NtAcceptConnectPort\n", __FUNCTION__); + + Status = NtAcceptConnectPort (ClientDataApiPort, + Context, + (PPORT_MESSAGE) Request, + Accept, + NULL, + NULL); + + if(Accept) + { + if(!NT_SUCCESS(Status)) + { + DPRINT1("SM: %s: NtAcceptConnectPort() failed (Status=0x%08lx)\n", + __FUNCTION__, Status); + return Status; + } else { + DPRINT("SM: %s: completing connection request\n", __FUNCTION__); + Status = NtCompleteConnectPort (*ClientDataApiPort); + if (!NT_SUCCESS(Status)) + { + DPRINT1("SM: %s: NtCompleteConnectPort() failed (Status=0x%08lx)\n", + __FUNCTION__, Status); + return Status; + } + } + Status = STATUS_SUCCESS; + } + DPRINT("SM: %s done\n", __FUNCTION__); + return Status; }
@@ -303,16 +303,16 @@ NTSTATUS Status = STATUS_SUCCESS;
InitializeObjectAttributes(&ObjectAttributes, - &UnicodeString, - 0, - NULL, - NULL); + &UnicodeString, + 0, + NULL, + NULL);
Status = NtCreatePort(&SmApiPort, - &ObjectAttributes, - sizeof(SM_CONNECT_DATA), - sizeof(SM_PORT_MESSAGE), - 0); + &ObjectAttributes, + sizeof(SM_CONNECT_DATA), + sizeof(SM_PORT_MESSAGE), + 0); if (!NT_SUCCESS(Status)) { return(Status); @@ -323,22 +323,22 @@ * port \SmApiPort */ RtlCreateUserThread(NtCurrentProcess(), - NULL, - FALSE, - 0, - 0, - 0, - (PTHREAD_START_ROUTINE)SmpApiConnectedThread, - &SmApiPort, - NULL, - NULL); - - // - // On NT LPC, we need a second thread to handle incoming connections - // generated by incoming requests, otherwise the thread handling - // the request will be busy sending the LPC message, without any other - // thread being busy to receive the LPC message. - // + NULL, + FALSE, + 0, + 0, + 0, + (PTHREAD_START_ROUTINE)SmpApiConnectedThread, + &SmApiPort, + NULL, + NULL); + + /* + * On NT LPC, we need a second thread to handle incoming connections + * generated by incoming requests, otherwise the thread handling + * the request will be busy sending the LPC message, without any other + * thread being busy to receive the LPC message. + */ Status = RtlCreateUserThread(NtCurrentProcess(), NULL, FALSE,