165 lines
4.4 KiB
C
165 lines
4.4 KiB
C
/*++ BUILD Version: 0001 // Increment this if a change has global effects
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
ntcsrmsg.h
|
|
|
|
Abstract:
|
|
|
|
This module defines the public message format shared by the client and
|
|
server sides of the Client-Server Runtime (Csr) Subsystem.
|
|
|
|
Author:
|
|
|
|
Steve Wood (stevewo) 09-Oct-1990
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _NTCSRMSG_
|
|
#define _NTCSRMSG_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define CSR_API_PORT_NAME L"ApiPort"
|
|
|
|
//
|
|
// This structure is filled in by the client prior to connecting to the CSR
|
|
// server. The CSR server will fill in the OUT fields if prior to accepting
|
|
// the connection.
|
|
//
|
|
|
|
typedef struct _CSR_API_CONNECTINFO {
|
|
IN ULONG ExpectedVersion;
|
|
OUT ULONG CurrentVersion;
|
|
OUT HANDLE ObjectDirectory;
|
|
OUT PVOID SharedSectionBase;
|
|
OUT PVOID SharedStaticServerData;
|
|
OUT PVOID SharedSectionHeap;
|
|
OUT ULONG DebugFlags;
|
|
OUT ULONG SizeOfPebData;
|
|
OUT ULONG SizeOfTebData;
|
|
OUT ULONG NumberOfServerDllNames;
|
|
OUT HANDLE ServerProcessId;
|
|
} CSR_API_CONNECTINFO, *PCSR_API_CONNECTINFO;
|
|
|
|
#define CSR_VERSION 0x10000
|
|
|
|
//
|
|
// Message format for messages sent from the client to the server
|
|
//
|
|
|
|
typedef struct _CSR_CLIENTCONNECT_MSG {
|
|
IN ULONG ServerDllIndex;
|
|
IN OUT PVOID ConnectionInformation;
|
|
IN OUT ULONG ConnectionInformationLength;
|
|
} CSR_CLIENTCONNECT_MSG, *PCSR_CLIENTCONNECT_MSG;
|
|
|
|
typedef struct _CSR_THREADCONNECT_MSG {
|
|
HANDLE SectionHandle;
|
|
HANDLE EventPairHandle;
|
|
OUT PCHAR MessageStack;
|
|
OUT ULONG MessageStackSize;
|
|
OUT ULONG RemoteViewDelta;
|
|
} CSR_THREADCONNECT_MSG, *PCSR_THREADCONNECT_MSG;
|
|
|
|
#define CSR_PROFILE_START 0x00000001
|
|
#define CSR_PROFILE_STOP 0x00000002
|
|
#define CSR_PROFILE_DUMP 0x00000003
|
|
#define CSR_PROFILE_STOPDUMP 0x00000004
|
|
|
|
typedef struct _CSR_PROFILE_CONTROL_MSG {
|
|
IN ULONG ProfileControlFlag;
|
|
} CSR_PROFILE_CONTROL_MSG, *PCSR_PROFILE_CONTROL_MSG;
|
|
|
|
typedef struct _CSR_IDENTIFY_ALERTABLE_MSG {
|
|
IN CLIENT_ID ClientId;
|
|
} CSR_IDENTIFY_ALERTABLE_MSG, *PCSR_IDENTIFY_ALERTABLE_MSG;
|
|
|
|
#define CSR_NORMAL_PRIORITY_CLASS 0x00000010
|
|
#define CSR_IDLE_PRIORITY_CLASS 0x00000020
|
|
#define CSR_HIGH_PRIORITY_CLASS 0x00000040
|
|
#define CSR_REALTIME_PRIORITY_CLASS 0x00000080
|
|
|
|
typedef struct _CSR_SETPRIORITY_CLASS_MSG {
|
|
IN HANDLE ProcessHandle;
|
|
IN ULONG PriorityClass;
|
|
} CSR_SETPRIORITY_CLASS_MSG, *PCSR_SETPRIORITY_CLASS_MSG;
|
|
|
|
//
|
|
// This helps out the Wow64 thunk generater, so we can change
|
|
// RelatedCaptureBuffer from struct _CSR_CAPTURE_HEADER* to PCSR_CAPTURE_HEADER.
|
|
// Redundant typedefs are legal, so we leave the usual form in as well.
|
|
//
|
|
struct _CSR_CAPTURE_HEADER;
|
|
typedef struct _CSR_CAPTURE_HEADER CSR_CAPTURE_HEADER, *PCSR_CAPTURE_HEADER;
|
|
|
|
typedef struct _CSR_CAPTURE_HEADER {
|
|
ULONG Length;
|
|
PCSR_CAPTURE_HEADER RelatedCaptureBuffer;
|
|
ULONG CountMessagePointers;
|
|
PCHAR FreeSpace;
|
|
ULONG_PTR MessagePointerOffsets[1]; // Offsets within CSR_API_MSG of pointers
|
|
} CSR_CAPTURE_HEADER, *PCSR_CAPTURE_HEADER;
|
|
|
|
typedef ULONG CSR_API_NUMBER;
|
|
|
|
typedef struct _CSR_API_MSG {
|
|
PORT_MESSAGE h;
|
|
union {
|
|
CSR_API_CONNECTINFO ConnectionRequest;
|
|
struct {
|
|
PCSR_CAPTURE_HEADER CaptureBuffer;
|
|
CSR_API_NUMBER ApiNumber;
|
|
ULONG ReturnValue;
|
|
ULONG Reserved;
|
|
union {
|
|
CSR_CLIENTCONNECT_MSG ClientConnect;
|
|
CSR_THREADCONNECT_MSG ThreadConnect;
|
|
CSR_PROFILE_CONTROL_MSG ProfileControl;
|
|
CSR_IDENTIFY_ALERTABLE_MSG IdentifyAlertable;
|
|
CSR_SETPRIORITY_CLASS_MSG PriorityClass;
|
|
ULONG_PTR ApiMessageData[39];
|
|
} u;
|
|
};
|
|
};
|
|
} CSR_API_MSG, *PCSR_API_MSG;
|
|
|
|
#define WINSS_OBJECT_DIRECTORY_NAME L"\\Windows"
|
|
|
|
#define CSRSRV_SERVERDLL_INDEX 0
|
|
#define CSRSRV_FIRST_API_NUMBER 0
|
|
|
|
#define BASESRV_SERVERDLL_INDEX 1
|
|
#define BASESRV_FIRST_API_NUMBER 0
|
|
|
|
#define CONSRV_SERVERDLL_INDEX 2
|
|
#define CONSRV_FIRST_API_NUMBER 512
|
|
|
|
#define USERSRV_SERVERDLL_INDEX 3
|
|
#define USERSRV_FIRST_API_NUMBER 1024
|
|
|
|
#define CSR_MAKE_API_NUMBER( DllIndex, ApiIndex ) \
|
|
(CSR_API_NUMBER)(((DllIndex) << 16) | (ApiIndex))
|
|
|
|
#define CSR_APINUMBER_TO_SERVERDLLINDEX( ApiNumber ) \
|
|
((ULONG)((ULONG)(ApiNumber) >> 16))
|
|
|
|
#define CSR_APINUMBER_TO_APITABLEINDEX( ApiNumber ) \
|
|
((ULONG)((USHORT)(ApiNumber)))
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _NTCSRMSG_
|