Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

317 lines
9.2 KiB

  1. /*++
  2. Copyright (c) 1990 Microsoft Corporation
  3. Module Name:
  4. basemsg.h
  5. Abstract:
  6. This include file defines the message formats used to communicate
  7. between the client and server portions of the BASE portion of the
  8. Windows subsystem.
  9. Author:
  10. Steve Wood (stevewo) 25-Oct-1990
  11. Revision History:
  12. --*/
  13. //
  14. // This structure is filled in by the client prior to connecting to the BASESRV
  15. // DLL in the Windows subsystem server. The server DLL will fill in the OUT
  16. // fields if prior to accepting the connection.
  17. //
  18. typedef struct _BASESRV_API_CONNECTINFO {
  19. IN ULONG ExpectedVersion;
  20. OUT HANDLE DefaultObjectDirectory;
  21. OUT ULONG WindowsVersion;
  22. OUT ULONG CurrentVersion;
  23. OUT ULONG DebugFlags;
  24. OUT WCHAR WindowsDirectory[ MAX_PATH ];
  25. OUT WCHAR WindowsSystemDirectory[ MAX_PATH ];
  26. } BASESRV_API_CONNECTINFO, *PBASESRV_API_CONNECTINFO;
  27. #define BASESRV_VERSION 0x10000
  28. //
  29. // Message format for messages sent from the client to the server
  30. //
  31. typedef enum _BASESRV_API_NUMBER {
  32. BasepGlobalAddAtom = BASESRV_FIRST_API_NUMBER,
  33. BasepGlobalFindAtom,
  34. BasepGlobalDeleteAtom,
  35. BasepGlobalGetAtomName,
  36. BasepCreateProcess,
  37. BasepCreateThread,
  38. BasepGetTempFile,
  39. BasepExitProcess,
  40. BasepDebugProcess,
  41. BasepCheckVDM,
  42. BasepUpdateVDMEntry,
  43. BasepGetNextVDMCommand,
  44. BasepExitVDM,
  45. BasepIsFirstVDM,
  46. BasepGetVDMExitCode,
  47. BasepSetReenterCount,
  48. BasepSetProcessShutdownParam,
  49. BasepGetProcessShutdownParam,
  50. BasepNlsSetUserInfo,
  51. BasepNlsSetMultipleUserInfo,
  52. BasepNlsCreateSortSection,
  53. BasepNlsPreserveSection,
  54. BasepDefineDosDevice,
  55. BasepSetVDMCurDirs,
  56. BasepGetVDMCurDirs,
  57. BasepBatNotification,
  58. BasepRegisterWowExec,
  59. BasepSoundSentryNotification,
  60. BasepRefreshIniFileMapping,
  61. BasepRefreshDriveType,
  62. #ifdef NTUSERK
  63. BasepDestroyGlobalAtomTable,
  64. #endif
  65. BasepMaxApiNumber
  66. } BASESRV_API_NUMBER, *PBASESRV_API_NUMBER;
  67. typedef struct _BASE_NLS_SET_USER_INFO_MSG {
  68. LPWSTR pValue;
  69. LPWSTR pCacheString;
  70. LPWSTR pData;
  71. ULONG DataLength;
  72. } BASE_NLS_SET_USER_INFO_MSG, *PBASE_NLS_SET_USER_INFO_MSG;
  73. typedef struct _BASE_NLS_SET_MULTIPLE_USER_INFO_MSG {
  74. ULONG Flags;
  75. ULONG DataLength;
  76. LPWSTR pPicture;
  77. LPWSTR pSeparator;
  78. LPWSTR pOrder;
  79. LPWSTR pTLZero;
  80. LPWSTR pTimeMarkPosn;
  81. } BASE_NLS_SET_MULTIPLE_USER_INFO_MSG, *PBASE_NLS_SET_MULTIPLE_USER_INFO_MSG;
  82. typedef struct _BASE_NLS_CREATE_SORT_SECTION_MSG {
  83. UNICODE_STRING SectionName;
  84. HANDLE hNewSection;
  85. LARGE_INTEGER SectionSize;
  86. } BASE_NLS_CREATE_SORT_SECTION_MSG, *PBASE_NLS_CREATE_SORT_SECTION_MSG;
  87. typedef struct _BASE_NLS_PRESERVE_SECTION_MSG {
  88. HANDLE hSection;
  89. } BASE_NLS_PRESERVE_SECTION_MSG, *PBASE_NLS_PRESERVE_SECTION_MSG;
  90. typedef struct _BASE_DEFINEDOSDEVICE_MSG {
  91. ULONG Flags;
  92. UNICODE_STRING DeviceName;
  93. UNICODE_STRING TargetPath;
  94. } BASE_DEFINEDOSDEVICE_MSG, *PBASE_DEFINEDOSDEVICE_MSG;
  95. typedef struct _BASE_SHUTDOWNPARAM_MSG {
  96. ULONG ShutdownLevel;
  97. ULONG ShutdownFlags;
  98. } BASE_SHUTDOWNPARAM_MSG, *PBASE_SHUTDOWNPARAM_MSG;
  99. //
  100. // Used for Add, Find and GetAtomName
  101. //
  102. typedef struct _BASE_GLOBALATOMNAME_MSG {
  103. ULONG Atom;
  104. BOOLEAN AtomNameInClient;
  105. UNICODE_STRING AtomName;
  106. } BASE_GLOBALATOMNAME_MSG, *PBASE_GLOBALATOMNAME_MSG;
  107. typedef struct _BASE_GLOBALDELETEATOM_MSG {
  108. ULONG Atom;
  109. } BASE_GLOBALDELETEATOM_MSG, *PBASE_GLOBALDELETEATOM_MSG;
  110. typedef struct _BASE_CREATEPROCESS_MSG {
  111. HANDLE ProcessHandle;
  112. HANDLE ThreadHandle;
  113. CLIENT_ID ClientId;
  114. CLIENT_ID DebuggerClientId;
  115. ULONG CreationFlags;
  116. ULONG IsVDM;
  117. HANDLE hVDM;
  118. } BASE_CREATEPROCESS_MSG, *PBASE_CREATEPROCESS_MSG;
  119. typedef struct _BASE_CREATETHREAD_MSG {
  120. HANDLE ThreadHandle;
  121. CLIENT_ID ClientId;
  122. } BASE_CREATETHREAD_MSG, *PBASE_CREATETHREAD_MSG;
  123. typedef struct _BASE_GETTEMPFILE_MSG {
  124. UINT uUnique;
  125. } BASE_GETTEMPFILE_MSG, *PBASE_GETTEMPFILE_MSG;
  126. typedef struct _BASE_EXITPROCESS_MSG {
  127. UINT uExitCode;
  128. } BASE_EXITPROCESS_MSG, *PBASE_EXITPROCESS_MSG;
  129. typedef struct _BASE_DEBUGPROCESS_MSG {
  130. DWORD dwProcessId;
  131. CLIENT_ID DebuggerClientId;
  132. PVOID AttachCompleteRoutine;
  133. } BASE_DEBUGPROCESS_MSG, *PBASE_DEBUGPROCESS_MSG;
  134. typedef struct _BASE_CHECKVDM_MSG {
  135. ULONG iTask; // Only for WOW
  136. HANDLE ConsoleHandle;
  137. ULONG BinaryType;
  138. HANDLE WaitObjectForParent;
  139. HANDLE StdIn;
  140. HANDLE StdOut;
  141. HANDLE StdErr;
  142. PCHAR CmdLine;
  143. PCHAR Env;
  144. USHORT CurDrive;
  145. USHORT CmdLen;
  146. USHORT VDMState;
  147. ULONG EnvLen;
  148. ULONG CodePage;
  149. ULONG dwCreationFlags;
  150. LPSTARTUPINFOA StartupInfo;
  151. PCHAR Desktop;
  152. ULONG DesktopLen;
  153. PCHAR Title;
  154. ULONG TitleLen;
  155. PCHAR Reserved;
  156. ULONG ReservedLen;
  157. PCHAR CurDirectory;
  158. ULONG CurDirectoryLen;
  159. } BASE_CHECKVDM_MSG, *PBASE_CHECKVDM_MSG;
  160. typedef struct _BASE_UPDATE_VDM_ENTRY_MSG {
  161. ULONG iTask; // Only for WOW
  162. HANDLE ConsoleHandle;
  163. HANDLE VDMProcessHandle;
  164. WORD EntryIndex;
  165. WORD VDMCreationState;
  166. HANDLE WaitObjectForParent;
  167. } BASE_UPDATE_VDM_ENTRY_MSG, *PBASE_UPDATE_VDM_ENTRY_MSG;
  168. typedef struct _BASE_GET_NEXT_VDM_COMMAND_MSG {
  169. HANDLE ConsoleHandle;
  170. HANDLE StdIn;
  171. HANDLE StdOut;
  172. HANDLE StdErr;
  173. PCHAR CmdLine;
  174. PCHAR Env;
  175. USHORT CurrentDrive;
  176. USHORT CmdLen;
  177. ULONG EnvLen;
  178. ULONG ExitCode;
  179. ULONG VDMState;
  180. ULONG iTask;
  181. HANDLE WaitObjectForVDM;
  182. ULONG CodePage;
  183. ULONG dwCreationFlags;
  184. LPSTARTUPINFOA StartupInfo;
  185. PCHAR Desktop;
  186. ULONG DesktopLen;
  187. PCHAR Title;
  188. ULONG TitleLen;
  189. PCHAR Reserved;
  190. ULONG ReservedLen;
  191. PCHAR CurDirectory;
  192. ULONG CurDirectoryLen;
  193. ULONG fComingFromBat;
  194. } BASE_GET_NEXT_VDM_COMMAND_MSG, *PBASE_GET_NEXT_VDM_COMMAND_MSG;
  195. typedef struct _BASE_EXIT_VDM_MSG {
  196. HANDLE ConsoleHandle;
  197. ULONG iWowTask;
  198. HANDLE WaitObjectForVDM;
  199. } BASE_EXIT_VDM_MSG, *PBASE_EXIT_VDM_MSG;
  200. typedef struct _BASE_SET_REENTER_COUNT {
  201. HANDLE ConsoleHandle;
  202. ULONG fIncDec;
  203. } BASE_SET_REENTER_COUNT_MSG, *PBASE_SET_REENTER_COUNT_MSG;
  204. typedef struct _BASE_IS_FIRST_VDM_MSG {
  205. BOOL FirstVDM;
  206. } BASE_IS_FIRST_VDM_MSG, *PBASE_IS_FIRST_VDM_MSG;
  207. typedef struct _BASE_GET_VDM_EXIT_CODE_MSG {
  208. HANDLE ConsoleHandle;
  209. HANDLE hParent;
  210. ULONG ExitCode;
  211. } BASE_GET_VDM_EXIT_CODE_MSG, *PBASE_GET_VDM_EXIT_CODE_MSG;
  212. typedef struct _BASE_GET_SET_VDM_CUR_DIRS_MSG {
  213. HANDLE ConsoleHandle;
  214. PCHAR lpszzCurDirs;
  215. ULONG cchCurDirs;
  216. } BASE_GET_SET_VDM_CUR_DIRS_MSG, *PBASE_GET_SET_VDM_CUR_DIRS_MSG;
  217. typedef struct _BASE_BAT_NOTIFICATION_MSG {
  218. HANDLE ConsoleHandle;
  219. ULONG fBeginEnd;
  220. } BASE_BAT_NOTIFICATION_MSG, *PBASE_BAT_NOTIFICATION_MSG;
  221. typedef struct _BASE_REGISTER_WOWEXEC_MSG {
  222. HANDLE hwndWowExec;
  223. } BASE_REGISTER_WOWEXEC_MSG, *PBASE_REGISTER_WOWEXEC_MSG;
  224. typedef struct _BASE_SOUNDSENTRY_NOTIFICATION_MSG {
  225. ULONG VideoMode;
  226. } BASE_SOUNDSENTRY_NOTIFICATION_MSG, *PBASE_SOUNDSENTRY_NOTIFICATION_MSG;
  227. typedef struct _BASE_REFRESHINIFILEMAPPING_MSG {
  228. UNICODE_STRING IniFileName;
  229. } BASE_REFRESHINIFILEMAPPING_MSG, *PBASE_REFRESHINIFILEMAPPING_MSG;
  230. typedef struct _BASE_REFRESHDRIVETYPE_MSG {
  231. ULONG DriveNumber;
  232. } BASE_REFRESHDRIVETYPE_MSG, *PBASE_REFRESHDRIVETYPE_MSG;
  233. #ifdef NTUSERK
  234. typedef struct _BASE_DESTROYGLOBALATOMTABLE_MSG {
  235. PVOID GlobalAtomTable;
  236. } BASE_DESTROYGLOBALATOMTABLE_MSG, *PBASE_DESTROYGLOBALATOMTABLE_MSG;
  237. #endif
  238. typedef struct _BASE_API_MSG {
  239. PORT_MESSAGE h;
  240. PCSR_CAPTURE_HEADER CaptureBuffer;
  241. CSR_API_NUMBER ApiNumber;
  242. ULONG ReturnValue;
  243. ULONG Reserved;
  244. union {
  245. BASE_NLS_SET_USER_INFO_MSG NlsSetUserInfo;
  246. BASE_NLS_SET_MULTIPLE_USER_INFO_MSG NlsSetMultipleUserInfo;
  247. BASE_NLS_CREATE_SORT_SECTION_MSG NlsCreateSortSection;
  248. BASE_NLS_PRESERVE_SECTION_MSG NlsPreserveSection;
  249. BASE_DEFINEDOSDEVICE_MSG DefineDosDeviceApi;
  250. BASE_SHUTDOWNPARAM_MSG ShutdownParam;
  251. BASE_GLOBALATOMNAME_MSG GlobalAtomName;
  252. BASE_GLOBALDELETEATOM_MSG GlobalDeleteAtom;
  253. BASE_CREATEPROCESS_MSG CreateProcess;
  254. BASE_CREATETHREAD_MSG CreateThread;
  255. BASE_GETTEMPFILE_MSG GetTempFile;
  256. BASE_EXITPROCESS_MSG ExitProcess;
  257. BASE_DEBUGPROCESS_MSG DebugProcess;
  258. BASE_CHECKVDM_MSG CheckVDM;
  259. BASE_UPDATE_VDM_ENTRY_MSG UpdateVDMEntry;
  260. BASE_GET_NEXT_VDM_COMMAND_MSG GetNextVDMCommand;
  261. BASE_EXIT_VDM_MSG ExitVDM;
  262. BASE_IS_FIRST_VDM_MSG IsFirstVDM;
  263. BASE_GET_VDM_EXIT_CODE_MSG GetVDMExitCode;
  264. BASE_SET_REENTER_COUNT_MSG SetReenterCount;
  265. BASE_GET_SET_VDM_CUR_DIRS_MSG GetSetVDMCurDirs;
  266. BASE_BAT_NOTIFICATION_MSG BatNotification;
  267. BASE_REGISTER_WOWEXEC_MSG RegisterWowExec;
  268. BASE_SOUNDSENTRY_NOTIFICATION_MSG SoundSentryNotification;
  269. BASE_REFRESHINIFILEMAPPING_MSG RefreshIniFileMapping;
  270. BASE_REFRESHDRIVETYPE_MSG RefreshDriveType;
  271. #ifdef NTUSERK
  272. BASE_DESTROYGLOBALATOMTABLE_MSG DestroyGlobalAtomTable;
  273. #endif
  274. } u;
  275. } BASE_API_MSG, *PBASE_API_MSG;