|
|
/*++ BUILD Version: 0001 // Increment this if a change has global effects
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
ntsm.h
Abstract:
This module describes the data types and procedure prototypes that make up the NT session manager. This includes API's exported by the Session manager and related subsystems.
Author:
Mark Lucovsky (markl) 21-Jun-1989
Revision History:
--*/
#ifndef _NTSM_ #define _NTSM_
#if _MSC_VER > 1000 #pragma once #endif
#include <nt.h>
#ifdef __cplusplus extern "C" { #endif
typedef PVOID PARGUMENTS;
typedef PVOID PUSERPROFILE;
// // Message formats used by the Session Manager SubSystem to communicate // with the Emulation SubSystems, via the Sb API calls exported by each // emulation subsystem. //
typedef struct _SBCONNECTINFO { ULONG SubsystemImageType; WCHAR EmulationSubSystemPortName[120]; } SBCONNECTINFO, *PSBCONNECTINFO;
typedef enum _SBAPINUMBER { SbCreateSessionApi, SbTerminateSessionApi, SbForeignSessionCompleteApi, SbCreateProcessApi, SbMaxApiNumber } SBAPINUMBER;
typedef struct _SBCREATESESSION { ULONG SessionId; RTL_USER_PROCESS_INFORMATION ProcessInformation; PUSERPROFILE UserProfile; ULONG DebugSession; CLIENT_ID DebugUiClientId; } SBCREATESESSION, *PSBCREATESESSION;
typedef struct _SBTERMINATESESSION { ULONG SessionId; NTSTATUS TerminationStatus; } SBTERMINATESESSION, *PSBTERMINATESESSION;
typedef struct _SBFOREIGNSESSIONCOMPLETE { ULONG SessionId; NTSTATUS TerminationStatus; } SBFOREIGNSESSIONCOMPLETE, *PSBFOREIGNSESSIONCOMPLETE;
typedef struct _SBCREATEPROCESSIN { IN PUNICODE_STRING ImageFileName; IN PUNICODE_STRING CurrentDirectory; IN PUNICODE_STRING CommandLine; IN PUNICODE_STRING DefaultLibPath; IN ULONG Flags; IN ULONG DefaultDebugFlags; } SBCREATEPROCESSIN, *PSBCREATEPROCESSIN;
typedef struct _SBCREATEPROCESSOUT { OUT HANDLE Process; OUT HANDLE Thread; OUT ULONG SubSystemType; OUT CLIENT_ID ClientId; } SBCREATEPROCESSOUT, *PSBCREATEPROCESSOUT;
typedef struct _SBCREATEPROCESS { union { SBCREATEPROCESSIN i; SBCREATEPROCESSOUT o; }; } SBCREATEPROCESS, *PSBCREATEPROCESS;
typedef struct _SBAPIMSG { PORT_MESSAGE h; union { SBCONNECTINFO ConnectionRequest; struct { SBAPINUMBER ApiNumber; NTSTATUS ReturnedStatus; union { SBCREATESESSION CreateSession; SBTERMINATESESSION TerminateSession; SBFOREIGNSESSIONCOMPLETE ForeignSessionComplete; SBCREATEPROCESS CreateProcess; } u; }; }; } SBAPIMSG, *PSBAPIMSG;
// // API's Exported by Sm //
NTSTATUS NTAPI SmCreateForeignSession( IN HANDLE SmApiPort, OUT PULONG ForeignSessionId, IN ULONG SourceSessionId, IN PRTL_USER_PROCESS_INFORMATION ProcessInformation, IN PCLIENT_ID DebugUiClientId OPTIONAL );
NTSTATUS NTAPI SmSessionComplete( IN HANDLE SmApiPort, IN ULONG SessionId, IN NTSTATUS CompletionStatus );
NTSTATUS NTAPI SmTerminateForeignSession( IN HANDLE SmApiPort, IN ULONG ForeignSessionId, IN NTSTATUS TerminationStatus );
NTSTATUS NTAPI SmExecPgm( IN HANDLE SmApiPort, IN PRTL_USER_PROCESS_INFORMATION ProcessInformation, IN BOOLEAN DebugFlag );
NTSTATUS NTAPI SmLoadDeferedSubsystem( IN HANDLE SmApiPort, IN PUNICODE_STRING DeferedSubsystem );
NTSTATUS NTAPI SmConnectToSm( IN PUNICODE_STRING SbApiPortName OPTIONAL, IN HANDLE SbApiPort OPTIONAL, IN ULONG SbImageType OPTIONAL, OUT PHANDLE SmApiPort );
// // Emulation Subsystems must export the following APIs //
NTSTATUS NTAPI SbCreateSession( IN PSBAPIMSG SbApiMsg );
NTSTATUS NTAPI SbTerminateSession( IN PSBAPIMSG SbApiMsg );
NTSTATUS NTAPI SbForeignSessionComplete( IN PSBAPIMSG SbApiMsg );
NTSTATUS NTAPI SmStartCsr( IN HANDLE SmApiPort, OUT PULONG pMuSessionId, IN PUNICODE_STRING InitialCommand, OUT PULONG_PTR pInitialCommandProcessId, OUT PULONG_PTR pWindowsSubSysProcessId ); NTSTATUS
NTAPI SmStopCsr( IN HANDLE SmApiPort, IN ULONG LogonId );
// // Moved from sm\server\sminit.c so CSR can use it // #define SMP_DEBUG_FLAG 0x00000001 #define SMP_ASYNC_FLAG 0x00000002 #define SMP_AUTOCHK_FLAG 0x00000004 #define SMP_SUBSYSTEM_FLAG 0x00000008 #define SMP_IMAGE_NOT_FOUND 0x00000010 #define SMP_DONT_START 0x00000020 #define SMP_AUTOFMT_FLAG 0x00000040 #define SMP_POSIX_SI_FLAG 0x00000080 #define SMP_POSIX_FLAG 0x00000100 #define SMP_OS2_FLAG 0x00000200
#ifdef __cplusplus } #endif
#endif // _NTSM_
|