7 /*** DATA TYPES ******************************************************/
9 #define SM_SB_NAME_MAX_LENGTH 120
13 /* SmConnectApiPort (SS->SM) */
14 typedef struct _SM_CONNECT_DATA
18 WCHAR SbName
[SM_SB_NAME_MAX_LENGTH
];
20 } SM_CONNECT_DATA
, *PSM_CONNECT_DATA
;
22 /* SmpConnectSbApiPort (SM->SS) */
23 typedef struct _SB_CONNECT_DATA
26 } SB_CONNECT_DATA
, *PSB_CONNECT_DATA
;
31 /*** 1 ****************************************************************/
33 #define SM_API_COMPLETE_SESSION 1 /* complete a session initialization */
35 typedef struct _SM_PORT_MESSAGE_COMPSES
40 } SM_PORT_MESSAGE_COMPSES
, *PSM_PORT_MESSAGE_COMPSES
;
42 /*** 2 ****************************************************************/
48 /*** 3 ****************************************************************/
54 /*** 4 ****************************************************************/
56 #define SM_API_EXECUTE_PROGRAMME 4 /* start a subsystem (server) */
58 #define SM_EXEXPGM_MAX_LENGTH 32 /* max count of wide string */
60 typedef struct _SM_PORT_MESSAGE_EXECPGM
63 WCHAR Name
[SM_EXEXPGM_MAX_LENGTH
];
65 } SM_PORT_MESSAGE_EXECPGM
, *PSM_PORT_MESSAGE_EXECPGM
;
67 /*** 5 ****************************************************************/
69 #define SM_API_QUERY_INFORMATION 5 /* ask SM to send back some data */
70 /* Note: this is not in NT */
71 #define SM_QRYINFO_MAX_SS_COUNT 8
72 #define SM_QRYINFO_MAX_ROOT_NODE 30
75 SmBasicInformation
= 0,
76 SmSubSystemInformation
= 1,
77 } SM_INFORMATION_CLASS
;
79 typedef struct _SM_BASIC_INFORMATION
81 USHORT SubSystemCount
;
87 } SubSystem
[SM_QRYINFO_MAX_SS_COUNT
];
88 } SM_BASIC_INFORMATION
, *PSM_BASIC_INFORMATION
;
90 typedef struct _SM_SUBSYSTEM_INFORMATION
95 WCHAR NameSpaceRootNode
[SM_QRYINFO_MAX_ROOT_NODE
];
96 } SM_SUBSYSTEM_INFORMATION
, *PSM_SUBSYSTEM_INFORMATION
;
98 typedef struct _SM_PORT_MESSAGE_QRYINFO
100 SM_INFORMATION_CLASS SmInformationClass
;
103 SM_BASIC_INFORMATION BasicInformation
;
104 SM_SUBSYSTEM_INFORMATION SubSystemInformation
;
106 } SM_PORT_MESSAGE_QRYINFO
, * PSM_PORT_MESSAGE_QRYINFO
;
108 /*** | ****************************************************************/
110 typedef union _SM_PORT_MESSAGE
112 /*** LPC common header ***/
115 UCHAR LpcHeader
[LPC_MESSAGE_BASE_SIZE
];
116 /*** SM common header ***/
121 /*** SM per API arguments ***/
124 SM_PORT_MESSAGE_COMPSES CompSes
;
125 SM_PORT_MESSAGE_EXECPGM ExecPgm
;
126 SM_PORT_MESSAGE_QRYINFO QryInfo
;
129 SM_PORT_MESSAGE_COMPSES CompSes
;
130 SM_PORT_MESSAGE_EXECPGM ExecPgm
;
131 SM_PORT_MESSAGE_QRYINFO QryInfo
;
135 } SM_PORT_MESSAGE
, * PSM_PORT_MESSAGE
;
139 /*** MACRO ***********************************************************/
141 #define SM_CONNECT_DATA_SIZE(m) ((m).Header.DataSize-sizeof(USHORT)-sizeof(WORD))
142 #define SM_PORT_DATA_SIZE(c) (sizeof(DWORD)+sizeof(NTSTATUS)+sizeof(c))
143 #define SM_PORT_MESSAGE_SIZE (sizeof(SM_PORT_MESSAGE))
146 #endif /* !def __SM_API_H */