2012-01-30 02:10:39 +00:00
|
|
|
/*
|
|
|
|
* PROJECT: ReactOS Windows-Compatible Session Manager
|
|
|
|
* LICENSE: BSD 2-Clause License
|
|
|
|
* FILE: base/system/smss/smss.h
|
|
|
|
* PURPOSE: Main SMSS Header
|
|
|
|
* PROGRAMMERS: Alex Ionescu
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* DEPENDENCIES ***************************************************************/
|
|
|
|
|
|
|
|
//
|
|
|
|
// Native Headers
|
|
|
|
//
|
2012-01-23 16:49:52 +00:00
|
|
|
#define WIN32_NO_STATUS
|
2012-01-30 02:10:39 +00:00
|
|
|
#include <windows.h> // Should just be using ntdef.h I think
|
|
|
|
#define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0]))
|
|
|
|
#define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A)
|
|
|
|
#ifdef ENABLE_RTL_NUMBER_OF_V2
|
|
|
|
#define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V2(A)
|
|
|
|
#else
|
|
|
|
#define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V1(A)
|
|
|
|
#endif
|
2012-01-23 16:49:52 +00:00
|
|
|
#define NTOS_MODE_USER
|
|
|
|
#include <ndk/ntndk.h>
|
2012-01-30 02:10:39 +00:00
|
|
|
|
|
|
|
//
|
|
|
|
// SM Protocol Header
|
|
|
|
//
|
|
|
|
#include "sm/smmsg.h"
|
|
|
|
|
|
|
|
/* DEFINES ********************************************************************/
|
|
|
|
|
2012-01-30 19:29:30 +00:00
|
|
|
#define SMP_DEBUG_FLAG 0x01
|
|
|
|
#define SMP_ASYNC_FLAG 0x02
|
|
|
|
#define SMP_AUTOCHK_FLAG 0x04
|
|
|
|
#define SMP_INVALID_PATH 0x10
|
|
|
|
|
2012-01-30 03:44:27 +00:00
|
|
|
/* EXTERNALS ******************************************************************/
|
|
|
|
|
|
|
|
extern RTL_CRITICAL_SECTION SmpKnownSubSysLock;
|
|
|
|
extern LIST_ENTRY SmpKnownSubSysHead;
|
|
|
|
extern RTL_CRITICAL_SECTION SmpSessionListLock;
|
|
|
|
extern LIST_ENTRY SmpSessionListHead;
|
|
|
|
extern ULONG SmpNextSessionId;
|
|
|
|
extern ULONG SmpNextSessionIdScanMode;
|
|
|
|
extern BOOLEAN SmpDbgSsLoaded;
|
|
|
|
extern HANDLE SmpWindowsSubSysProcess;
|
2012-01-30 05:32:34 +00:00
|
|
|
extern HANDLE SmpSessionsObjectDirectory;
|
|
|
|
extern HANDLE SmpWindowsSubSysProcessId;
|
[SMSS]: Co-exist with SMSS2 by using OBJ_OPENIF when creating object directories and sections, in case SMSS2 has already done so (which now it probably will).
[SMSS2]: Implement all the required registry configuration parsing functions. KnownDLLs, DosDevices, PageFiles, Subsystems, ExcludedKnownDLLs, PendingFileRenameOperations, ObjectDirectories, Environment keys are all processed and put into lists. Other than creating the object directories and setting the environment variables, though, no other work happens -- but we do DPRINT1 what should happen.
svn path=/trunk/; revision=55319
2012-01-30 08:02:17 +00:00
|
|
|
extern BOOLEAN RegPosixSingleInstance;
|
2012-01-30 19:29:30 +00:00
|
|
|
extern UNICODE_STRING SmpDebugKeyword, SmpASyncKeyword, SmpAutoChkKeyword;
|
|
|
|
extern PVOID SmpHeap;
|
|
|
|
extern ULONG SmBaseTag;
|
|
|
|
extern UNICODE_STRING SmpSystemRoot;
|
|
|
|
extern PWCHAR SmpDefaultEnvironment;
|
|
|
|
extern UNICODE_STRING SmpDefaultLibPath;
|
2012-01-30 05:32:34 +00:00
|
|
|
|
2012-01-30 02:10:39 +00:00
|
|
|
/* FUNCTIONS ******************************************************************/
|
|
|
|
|
2012-01-30 10:22:21 +00:00
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SmpTerminate(
|
|
|
|
IN PULONG_PTR Parameters,
|
|
|
|
IN ULONG ParameterMask,
|
|
|
|
IN ULONG ParameterCount
|
|
|
|
);
|
|
|
|
|
2012-01-30 05:32:34 +00:00
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SmpCreateSecurityDescriptors(
|
|
|
|
IN BOOLEAN InitialCall
|
|
|
|
);
|
|
|
|
|
2012-01-30 02:10:39 +00:00
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SmpInit(
|
|
|
|
IN PUNICODE_STRING InitialCommand,
|
|
|
|
OUT PHANDLE ProcessHandle
|
|
|
|
);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SmpAcquirePrivilege(
|
|
|
|
IN ULONG Privilege,
|
|
|
|
OUT PVOID *PrivilegeStat
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
SmpReleasePrivilege(
|
|
|
|
IN PVOID State
|
|
|
|
);
|
2012-01-30 03:44:27 +00:00
|
|
|
|
|
|
|
ULONG
|
|
|
|
NTAPI
|
|
|
|
SmpApiLoop(
|
|
|
|
IN PVOID Parameter
|
|
|
|
);
|
2012-01-30 05:32:34 +00:00
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SmpExecuteCommand(
|
|
|
|
IN PUNICODE_STRING CommandLine,
|
|
|
|
IN ULONG MuSessionId,
|
|
|
|
OUT PULONG ProcessId,
|
|
|
|
IN ULONG Flags
|
|
|
|
);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SmpLoadSubSystemsForMuSession(
|
|
|
|
IN PULONG MuSessionId,
|
|
|
|
OUT PHANDLE ProcessId,
|
|
|
|
IN PUNICODE_STRING InitialCommand
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
SmpPagingFileInitialize(
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SmpCreatePagingFileDescriptor(
|
|
|
|
IN PUNICODE_STRING PageFileToken
|
|
|
|
);
|
|
|
|
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SmpCreatePagingFiles(
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
2012-01-30 19:29:30 +00:00
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SmpParseCommandLine(
|
|
|
|
IN PUNICODE_STRING CommandLine,
|
|
|
|
OUT PULONG Flags,
|
|
|
|
OUT PUNICODE_STRING FileName,
|
|
|
|
OUT PUNICODE_STRING Directory,
|
|
|
|
OUT PUNICODE_STRING Arguments
|
|
|
|
);
|