233 lines
4.6 KiB
C
233 lines
4.6 KiB
C
|
/*++ 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_
|