mirror of
https://github.com/reactos/reactos.git
synced 2025-07-30 17:32:32 +00:00
SM: some server side code for SM_API_QUERY_INFORMATION
svn path=/trunk/; revision=14598
This commit is contained in:
parent
95cdf6e471
commit
b27e166698
5 changed files with 80 additions and 3 deletions
|
@ -276,4 +276,49 @@ SmDestroyClient (ULONG SubsystemId)
|
|||
return Status;
|
||||
}
|
||||
|
||||
/* === Utilities for SmQryInfo === */
|
||||
|
||||
/**********************************************************************
|
||||
* SmGetClientBasicInformation/1
|
||||
*/
|
||||
NTSTATUS FASTCALL
|
||||
SmGetClientBasicInformation (PSM_BASIC_INFORMATION i)
|
||||
{
|
||||
INT Index = 0;
|
||||
PSM_CLIENT_DATA Client = NULL;
|
||||
|
||||
DPRINT("SM: %s called\n", __FUNCTION__);
|
||||
|
||||
RtlEnterCriticalSection (& SmpClientDirectory.Lock);
|
||||
|
||||
i->SubSystemCount = SmpClientDirectory.Count;
|
||||
i->Unused = 0;
|
||||
|
||||
if (SmpClientDirectory.Count > 0)
|
||||
{
|
||||
Client = SmpClientDirectory.Client;
|
||||
while ((NULL != Client) && (Index < SM_QRYINFO_MAX_SS_COUNT))
|
||||
{
|
||||
i->SubSystem[Index].Id = Client->SubsystemId;
|
||||
i->SubSystem[Index].Flags = 0; /* TODO */
|
||||
i->SubSystem[Index].ProcessId = 0; /* TODO */
|
||||
Client = Client->Next;
|
||||
}
|
||||
}
|
||||
|
||||
RtlLeaveCriticalSection (& SmpClientDirectory.Lock);
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* SmGetSubSystemInformation/1
|
||||
*/
|
||||
NTSTATUS FASTCALL
|
||||
SmGetSubSystemInformation (PSM_SUBSYSTEM_INFORMATION i)
|
||||
{
|
||||
DPRINT("SM: %s called\n", __FUNCTION__);
|
||||
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -24,8 +24,12 @@ TARGET_OBJECTS = $(TARGET_NAME).o \
|
|||
smapi.o smapicomp.o smapiexec.o smapiquery.o \
|
||||
client.o debug.o print.o
|
||||
|
||||
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
include $(TOOLS_PATH)/depend.mk
|
||||
|
||||
# EOF
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: $
|
||||
/* $Id$
|
||||
*
|
||||
* smapiquery.c - SM_API_QUERY_INFORMATION
|
||||
*
|
||||
|
@ -37,8 +37,33 @@ SMAPI(SmQryInfo)
|
|||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
|
||||
DPRINT("SM: %s called\n", __FUNCTION__);
|
||||
|
||||
Request->SmHeader.Status = STATUS_NOT_IMPLEMENTED;
|
||||
|
||||
switch (Request->Request.QryInfo.SmInformationClass)
|
||||
{
|
||||
case SmBasicInformation:
|
||||
if(Request->Request.QryInfo.DataLength != sizeof (SM_BASIC_INFORMATION))
|
||||
{
|
||||
Request->Reply.QryInfo.DataLength = sizeof (SM_BASIC_INFORMATION);
|
||||
Request->SmHeader.Status = STATUS_INFO_LENGTH_MISMATCH;
|
||||
}else{
|
||||
Request->SmHeader.Status =
|
||||
SmGetClientBasicInformation (& Request->Reply.QryInfo.BasicInformation);
|
||||
}
|
||||
break;
|
||||
case SmSubSystemInformation:
|
||||
if(Request->Request.QryInfo.DataLength != sizeof (SM_SUBSYSTEM_INFORMATION))
|
||||
{
|
||||
Request->Reply.QryInfo.DataLength = sizeof (SM_SUBSYSTEM_INFORMATION);
|
||||
Request->SmHeader.Status = STATUS_INFO_LENGTH_MISMATCH;
|
||||
}else{
|
||||
Request->SmHeader.Status =
|
||||
SmGetSubSystemInformation (& Request->Reply.QryInfo.SubSystemInformation);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Request->SmHeader.Status = STATUS_NOT_IMPLEMENTED;
|
||||
break;
|
||||
}
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@ NtProcessStartup(PPEB Peb)
|
|||
}
|
||||
/* Initialize the system */
|
||||
Status = InitSessionManager();
|
||||
/* Watch required subsystems TODO */
|
||||
#if 0
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
|
|
|
@ -96,6 +96,8 @@ NTSTATUS SmInitializeClientManagement(VOID);
|
|||
NTSTATUS STDCALL SmCreateClient(PSM_PORT_MESSAGE,PSM_CLIENT_DATA*);
|
||||
NTSTATUS STDCALL SmDestroyClient(ULONG);
|
||||
NTSTATUS STDCALL SmCompleteClientInitialization (HANDLE hProcess);
|
||||
NTSTATUS FASTCALL SmGetClientBasicInformation (PSM_BASIC_INFORMATION);
|
||||
NTSTATUS FASTCALL SmGetSubSystemInformation (PSM_SUBSYSTEM_INFORMATION);
|
||||
|
||||
/* debug.c */
|
||||
extern HANDLE DbgSsApiPort;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue