/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS system libraries * FILE: lib/smlib/compses.c * PURPOSE: Call SM API SM_API_COMPLETE_SESSION */ #include "precomp.h" #define NDEBUG #include /********************************************************************** * NAME EXPORTED * SmCompleteSession/3 * * DESCRIPTION * This function is called by an environment subsystem server to * tell the SM it finished initialization phase and is ready to * manage processes it registered for (SmConnectApiPort). * * ARGUMENTS * hSmApiPort: port handle returned by SmConnectApiPort; * hSbApiPort: call back API port of the subsystem (handle); * hApiPort : API port of the subsystem (handle). * * RETURN VALUE * Success status as handed by the SM reply; otherwise a failure * status code. */ NTSTATUS WINAPI SmCompleteSession (IN HANDLE hSmApiPort, IN HANDLE hSbApiPort, IN HANDLE hApiPort) { NTSTATUS Status; SM_PORT_MESSAGE SmReqMsg; DPRINT("SMLIB: %s called\n", __FUNCTION__); /* Marshal Ses in the LPC message */ SmReqMsg.Request.CompSes.hApiPort = hApiPort; SmReqMsg.Request.CompSes.hSbApiPort = hSbApiPort; /* SM API to invoke */ SmReqMsg.SmHeader.ApiIndex = SM_API_COMPLETE_SESSION; /* Port message */ SmReqMsg.Header.u2.s2.Type = LPC_NEW_MESSAGE; SmReqMsg.Header.u1.s1.DataLength = SM_PORT_DATA_SIZE(SmReqMsg.Request); SmReqMsg.Header.u1.s1.TotalLength = SM_PORT_MESSAGE_SIZE; Status = NtRequestWaitReplyPort (hSmApiPort, (PPORT_MESSAGE) & SmReqMsg, (PPORT_MESSAGE) & SmReqMsg); if (NT_SUCCESS(Status)) { return SmReqMsg.SmHeader.Status; } DPRINT("SMLIB: %s failed (Status=0x%08lx)\n", __FUNCTION__, Status); return Status; } /* EOF */