164 lines
3.1 KiB
C
164 lines
3.1 KiB
C
/*++ BUILD Version: 0001 // Increment this if a change has global effects
|
|
|
|
Copyright (c) 1989-1993 Microsoft Corporation
|
|
|
|
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_
|
|
|
|
#include <nt.h>
|
|
|
|
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,
|
|
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 _SBAPIMSG {
|
|
PORT_MESSAGE h;
|
|
union {
|
|
SBCONNECTINFO ConnectionRequest;
|
|
struct {
|
|
SBAPINUMBER ApiNumber;
|
|
NTSTATUS ReturnedStatus;
|
|
union {
|
|
SBCREATESESSION CreateSession;
|
|
SBTERMINATESESSION TerminateSession;
|
|
SBFOREIGNSESSIONCOMPLETE ForeignSessionComplete;
|
|
} 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
|
|
);
|
|
|
|
#endif // _NTSM_
|