Source code of Windows XP (NT5)
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.

536 lines
18 KiB

  1. /*++
  2. Copyright (c) 2000 Microsoft Corporation
  3. Module Name:
  4. ismproc.h
  5. Abstract:
  6. Callback function prototype definitions for the Intermediate State Manager.
  7. Author:
  8. Jim Schmidt (jimschm) 15-Nov-1999
  9. Revision History:
  10. <alias> <date> <comments>
  11. --*/
  12. #pragma once
  13. //
  14. // Types
  15. //
  16. //
  17. // misc types
  18. //
  19. #define ISM_VERSION 0x10000
  20. typedef VOID (WINAPI MIG_LOGCALLBACK)(PVOID Arg);
  21. typedef MIG_LOGCALLBACK * PMIG_LOGCALLBACK;
  22. typedef VOID(PROGRESSBARFN)(
  23. MIG_PROGRESSPHASE Phase,
  24. MIG_PROGRESSSTATE State,
  25. UINT WorkDone,
  26. UINT TotalWork,
  27. ULONG_PTR Arg
  28. );
  29. typedef PROGRESSBARFN * PPROGRESSBARFN;
  30. //
  31. // transport
  32. //
  33. typedef BOOL(WINAPI TRANSPORTINITIALIZE)(PMIG_LOGCALLBACK LogCallback);
  34. typedef TRANSPORTINITIALIZE *PTRANSPORTINITIALIZE;
  35. typedef VOID(WINAPI TRANSPORTESTIMATEPROGRESSBAR)(MIG_PLATFORMTYPEID PlatformTypeId);
  36. typedef TRANSPORTESTIMATEPROGRESSBAR *PTRANSPORTESTIMATEPROGRESSBAR;
  37. typedef BOOL(WINAPI TRANSPORTQUERYCAPABILITIES)(
  38. IN MIG_TRANSPORTSTORAGEID TransportStorageId,
  39. OUT PMIG_TRANSPORTTYPE TransportType,
  40. OUT PMIG_TRANSPORTCAPABILITIES Capabilities,
  41. OUT PCTSTR *FriendlyDescription
  42. );
  43. typedef TRANSPORTQUERYCAPABILITIES *PTRANSPORTQUERYCAPABILITIES;
  44. typedef BOOL(WINAPI TRANSPORTSETSTORAGE)(
  45. IN MIG_PLATFORMTYPEID Platform,
  46. IN MIG_TRANSPORTSTORAGEID TransportStorageId,
  47. IN MIG_TRANSPORTCAPABILITIES Capabilities,
  48. IN PCTSTR StoragePath,
  49. OUT PBOOL Valid,
  50. OUT PBOOL ImageExists
  51. );
  52. typedef TRANSPORTSETSTORAGE *PTRANSPORTSETSTORAGE;
  53. typedef VOID(WINAPI TRANSPORTRESETSTORAGE)(MIG_TRANSPORTSTORAGEID TransportStorageId);
  54. typedef TRANSPORTRESETSTORAGE *PTRANSPORTRESETSTORAGE;
  55. typedef VOID(WINAPI TRANSPORTTERMINATE)(VOID);
  56. typedef TRANSPORTTERMINATE *PTRANSPORTTERMINATE;
  57. typedef BOOL(WINAPI TRANSPORTSAVESTATE)(VOID);
  58. typedef TRANSPORTSAVESTATE *PTRANSPORTSAVESTATE;
  59. typedef BOOL(WINAPI TRANSPORTRESUMESAVESTATE)(VOID);
  60. typedef TRANSPORTRESUMESAVESTATE *PTRANSPORTRESUMESAVESTATE;
  61. typedef BOOL(WINAPI TRANSPORTBEGINAPPLY)(VOID);
  62. typedef TRANSPORTBEGINAPPLY *PTRANSPORTBEGINAPPLY;
  63. typedef BOOL(WINAPI TRANSPORTRESUMEAPPLY)(VOID);
  64. typedef TRANSPORTRESUMEAPPLY *PTRANSPORTRESUMEAPPLY;
  65. typedef BOOL(WINAPI TRANSPORTACQUIREOBJECT)(
  66. IN MIG_OBJECTTYPEID ObjectTypeId,
  67. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  68. IN OUT PMIG_CONTENT ObjectContent,
  69. IN MIG_CONTENTTYPE ContentType,
  70. IN UINT MemoryContentLimit
  71. );
  72. typedef TRANSPORTACQUIREOBJECT *PTRANSPORTACQUIREOBJECT;
  73. typedef BOOL(WINAPI TRANSPORTRELEASEOBJECT)(PMIG_CONTENT ObjectContent);
  74. typedef TRANSPORTRELEASEOBJECT *PTRANSPORTRELEASEOBJECT;
  75. typedef VOID(WINAPI TRANSPORTENDAPPLY)(VOID);
  76. typedef TRANSPORTENDAPPLY *PTRANSPORTENDAPPLY;
  77. typedef struct {
  78. UINT Version;
  79. PTRANSPORTINITIALIZE TransportInitialize;
  80. PTRANSPORTESTIMATEPROGRESSBAR TransportEstimateProgressBar;
  81. PTRANSPORTQUERYCAPABILITIES TransportQueryCapabilities;
  82. PTRANSPORTSETSTORAGE TransportSetStorage;
  83. PTRANSPORTRESETSTORAGE TransportResetStorage;
  84. PTRANSPORTTERMINATE TransportTerminate;
  85. PTRANSPORTSAVESTATE TransportSaveState;
  86. PTRANSPORTRESUMESAVESTATE TransportResumeSaveState;
  87. PTRANSPORTBEGINAPPLY TransportBeginApply;
  88. PTRANSPORTRESUMEAPPLY TransportResumeApply;
  89. PTRANSPORTACQUIREOBJECT TransportAcquireObject;
  90. PTRANSPORTRELEASEOBJECT TransportReleaseObject;
  91. PTRANSPORTENDAPPLY TransportEndApply;
  92. } TRANSPORT_ENTRYPOINTS, *PTRANSPORT_ENTRYPOINTS;
  93. //
  94. // operations
  95. //
  96. typedef BOOL (WINAPI OPMFILTERCALLBACK)(
  97. PCMIG_FILTERINPUT InputData,
  98. PMIG_FILTEROUTPUT OutputData,
  99. BOOL NoRestoreObject,
  100. PCMIG_BLOB SourceOperationData, OPTIONAL
  101. PCMIG_BLOB DestinationOperationData OPTIONAL
  102. );
  103. typedef OPMFILTERCALLBACK *POPMFILTERCALLBACK;
  104. typedef BOOL (WINAPI OPMAPPLYCALLBACK)(
  105. MIG_OBJECTTYPEID SrcObjectTypeId,
  106. MIG_OBJECTSTRINGHANDLE SrcObjectName,
  107. PCMIG_CONTENT OriginalContent,
  108. PCMIG_CONTENT CurrentContent,
  109. PMIG_CONTENT NewContent,
  110. PCMIG_BLOB SourceOperationData, OPTIONAL
  111. PCMIG_BLOB DestinationOperationData OPTIONAL
  112. );
  113. typedef OPMAPPLYCALLBACK *POPMAPPLYCALLBACK;
  114. //
  115. // message passing
  116. //
  117. typedef ULONG_PTR(CALLBACK MESSAGECALLBACK)(UINT Message, ULONG_PTR Arg);
  118. typedef MESSAGECALLBACK *PMESSAGECALLBACK;
  119. //
  120. // ETM entry points
  121. //
  122. typedef BOOL(WINAPI TYPE_ENUMFIRSTPHYSICALOBJECT)(
  123. IN OUT PMIG_TYPEOBJECTENUM EnumPtr,
  124. IN MIG_OBJECTSTRINGHANDLE Pattern,
  125. IN UINT MaxLevel
  126. );
  127. typedef TYPE_ENUMFIRSTPHYSICALOBJECT *PTYPE_ENUMFIRSTPHYSICALOBJECT;
  128. typedef BOOL(WINAPI TYPE_ENUMNEXTPHYSICALOBJECT)(
  129. IN OUT PMIG_TYPEOBJECTENUM EnumPtr
  130. );
  131. typedef TYPE_ENUMNEXTPHYSICALOBJECT *PTYPE_ENUMNEXTPHYSICALOBJECT;
  132. typedef VOID(WINAPI TYPE_ABORTENUMCURRENTPHYSICALNODE)(
  133. IN OUT PMIG_TYPEOBJECTENUM EnumPtr
  134. );
  135. typedef TYPE_ABORTENUMCURRENTPHYSICALNODE *PTYPE_ABORTENUMCURRENTPHYSICALNODE;
  136. typedef VOID(WINAPI TYPE_ABORTENUMPHYSICALOBJECT)(
  137. IN OUT PMIG_TYPEOBJECTENUM EnumPtr
  138. );
  139. typedef TYPE_ABORTENUMPHYSICALOBJECT *PTYPE_ABORTENUMPHYSICALOBJECT;
  140. typedef PCTSTR(WINAPI TYPE_CONVERTOBJECTTOMULTISZ)(
  141. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  142. IN PMIG_CONTENT ObjectContent
  143. );
  144. typedef TYPE_CONVERTOBJECTTOMULTISZ *PTYPE_CONVERTOBJECTTOMULTISZ;
  145. typedef BOOL(WINAPI TYPE_CONVERTMULTISZTOOBJECT)(
  146. IN PCTSTR ObjectMultiSz,
  147. OUT MIG_OBJECTSTRINGHANDLE *ObjectName,
  148. OUT PMIG_CONTENT ObjectContent OPTIONAL
  149. );
  150. typedef TYPE_CONVERTMULTISZTOOBJECT *PTYPE_CONVERTMULTISZTOOBJECT;
  151. typedef PCTSTR(WINAPI TYPE_GETNATIVEOBJECTNAME)(
  152. IN MIG_OBJECTSTRINGHANDLE ObjectName
  153. );
  154. typedef TYPE_GETNATIVEOBJECTNAME *PTYPE_GETNATIVEOBJECTNAME;
  155. typedef BOOL(WINAPI TYPE_ACQUIREPHYSICALOBJECT)(
  156. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  157. OUT PMIG_CONTENT ObjectContent,
  158. IN MIG_CONTENTTYPE ContentType,
  159. IN UINT MemoryContentLimit
  160. );
  161. typedef TYPE_ACQUIREPHYSICALOBJECT *PTYPE_ACQUIREPHYSICALOBJECT;
  162. typedef BOOL(WINAPI TYPE_RELEASEPHYSICALOBJECT)(
  163. IN OUT PMIG_CONTENT ObjectContent
  164. );
  165. typedef TYPE_RELEASEPHYSICALOBJECT *PTYPE_RELEASEPHYSICALOBJECT;
  166. typedef BOOL(WINAPI TYPE_DOESPHYSICALOBJECTEXIST)(
  167. IN MIG_OBJECTSTRINGHANDLE ObjectName
  168. );
  169. typedef TYPE_DOESPHYSICALOBJECTEXIST *PTYPE_DOESPHYSICALOBJECTEXIST;
  170. typedef BOOL(WINAPI TYPE_REMOVEPHYSICALOBJECT)(
  171. IN MIG_OBJECTSTRINGHANDLE ObjectName
  172. );
  173. typedef TYPE_REMOVEPHYSICALOBJECT *PTYPE_REMOVEPHYSICALOBJECT;
  174. typedef BOOL(WINAPI TYPE_CREATEPHYSICALOBJECT)(
  175. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  176. IN PMIG_CONTENT ObjectContent
  177. );
  178. typedef TYPE_CREATEPHYSICALOBJECT *PTYPE_CREATEPHYSICALOBJECT;
  179. typedef BOOL(WINAPI TYPE_REPLACEPHYSICALOBJECT)(
  180. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  181. IN PMIG_CONTENT ObjectContent
  182. );
  183. typedef TYPE_REPLACEPHYSICALOBJECT *PTYPE_REPLACEPHYSICALOBJECT;
  184. typedef PMIG_CONTENT(WINAPI TYPE_CONVERTOBJECTCONTENTTOUNICODE)(
  185. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  186. IN PMIG_CONTENT ObjectContent
  187. );
  188. typedef TYPE_CONVERTOBJECTCONTENTTOUNICODE *PTYPE_CONVERTOBJECTCONTENTTOUNICODE;
  189. typedef PMIG_CONTENT(WINAPI TYPE_CONVERTOBJECTCONTENTTOANSI)(
  190. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  191. IN PMIG_CONTENT ObjectContent
  192. );
  193. typedef TYPE_CONVERTOBJECTCONTENTTOANSI *PTYPE_CONVERTOBJECTCONTENTTOANSI;
  194. typedef BOOL(WINAPI TYPE_FREECONVERTEDOBJECTCONTENT)(
  195. IN PMIG_CONTENT ObjectContent
  196. );
  197. typedef TYPE_FREECONVERTEDOBJECTCONTENT *PTYPE_FREECONVERTEDOBJECTCONTENT;
  198. typedef struct {
  199. PTYPE_ENUMFIRSTPHYSICALOBJECT EnumFirstPhysicalObject;
  200. PTYPE_ENUMNEXTPHYSICALOBJECT EnumNextPhysicalObject;
  201. PTYPE_ABORTENUMCURRENTPHYSICALNODE AbortEnumCurrentPhysicalNode;
  202. PTYPE_ABORTENUMPHYSICALOBJECT AbortEnumPhysicalObject;
  203. PTYPE_CONVERTOBJECTTOMULTISZ ConvertObjectToMultiSz;
  204. PTYPE_CONVERTMULTISZTOOBJECT ConvertMultiSzToObject;
  205. PTYPE_GETNATIVEOBJECTNAME GetNativeObjectName;
  206. PTYPE_ACQUIREPHYSICALOBJECT AcquirePhysicalObject;
  207. PTYPE_RELEASEPHYSICALOBJECT ReleasePhysicalObject;
  208. PTYPE_DOESPHYSICALOBJECTEXIST DoesPhysicalObjectExist;
  209. PTYPE_REMOVEPHYSICALOBJECT RemovePhysicalObject;
  210. PTYPE_CREATEPHYSICALOBJECT CreatePhysicalObject;
  211. PTYPE_REPLACEPHYSICALOBJECT ReplacePhysicalObject;
  212. PTYPE_CONVERTOBJECTCONTENTTOUNICODE ConvertObjectContentToUnicode;
  213. PTYPE_CONVERTOBJECTCONTENTTOANSI ConvertObjectContentToAnsi;
  214. PTYPE_FREECONVERTEDOBJECTCONTENT FreeConvertedObjectContent;
  215. } TYPE_REGISTER, *PTYPE_REGISTER;
  216. typedef BOOL (WINAPI MIG_PHYSICALENUMCHECK)(
  217. IN PMIG_TYPEOBJECTENUM ObjectEnum,
  218. IN ULONG_PTR Arg
  219. );
  220. typedef MIG_PHYSICALENUMCHECK *PMIG_PHYSICALENUMCHECK;
  221. typedef BOOL (WINAPI MIG_PHYSICALENUMADD)(
  222. IN OUT PMIG_TYPEOBJECTENUM ObjectEnum,
  223. IN MIG_OBJECTSTRINGHANDLE Pattern, // NULL if Abort is TRUE
  224. IN MIG_PARSEDPATTERN ParsedPattern, // NULL if Abort is TRUE
  225. IN ULONG_PTR Arg,
  226. IN BOOL Abort
  227. );
  228. typedef MIG_PHYSICALENUMADD *PMIG_PHYSICALENUMADD;
  229. typedef BOOL (WINAPI MIG_PHYSICALACQUIREHOOK)(
  230. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  231. IN PMIG_CONTENT ObjectContent,
  232. IN MIG_CONTENTTYPE ContentType,
  233. IN UINT MemoryContentLimit,
  234. OUT PMIG_CONTENT *NewObjectContent, CALLER_INITIALIZED OPTIONAL
  235. IN BOOL ReleaseContent,
  236. IN ULONG_PTR Arg
  237. );
  238. typedef MIG_PHYSICALACQUIREHOOK *PMIG_PHYSICALACQUIREHOOK;
  239. typedef VOID (WINAPI MIG_PHYSICALACQUIREFREE)(PMIG_CONTENT ObjectContent);
  240. typedef MIG_PHYSICALACQUIREFREE *PMIG_PHYSICALACQUIREFREE;
  241. //
  242. // module entry points
  243. //
  244. typedef BOOL(WINAPI MODULEINITIALIZE)(VOID);
  245. typedef MODULEINITIALIZE * PMODULEINITIALIZE;
  246. typedef VOID(WINAPI MODULETERMINATE)(VOID);
  247. typedef MODULETERMINATE * PMODULETERMINATE;
  248. typedef BOOL(WINAPI ETMINITIALIZE)(MIG_PLATFORMTYPEID Platform, PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  249. typedef ETMINITIALIZE * PETMINITIALIZE;
  250. typedef BOOL(WINAPI ETMPARSE)(PVOID Reserved);
  251. typedef ETMPARSE *PETMPARSE;
  252. typedef VOID(WINAPI ETMTERMINATE)(VOID);
  253. typedef ETMTERMINATE * PETMTERMINATE;
  254. typedef VOID(WINAPI ETMNEWUSERCREATED)(PCTSTR UserName, PCTSTR DomainName, PCTSTR UserProfileRoot, PSID UserSid);
  255. typedef ETMNEWUSERCREATED * PETMNEWUSERCREATED;
  256. typedef struct {
  257. UINT Version;
  258. PETMINITIALIZE EtmInitialize;
  259. PETMPARSE EtmParse;
  260. PETMTERMINATE EtmTerminate;
  261. PETMNEWUSERCREATED EtmNewUserCreated;
  262. } TYPE_ENTRYPOINTS, *PTYPE_ENTRYPOINTS;
  263. typedef BOOL(WINAPI VCMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  264. typedef VCMINITIALIZE * PVCMINITIALIZE;
  265. typedef BOOL(WINAPI VCMPARSE)(PVOID Reserved);
  266. typedef VCMPARSE * PVCMPARSE;
  267. typedef BOOL(WINAPI VCMQUEUEENUMERATION)(PVOID Reserved);
  268. typedef VCMQUEUEENUMERATION * PVCMQUEUEENUMERATION;
  269. typedef BOOL(WINAPI VCMQUEUEHIGHPRIORITYENUMERATION)(PVOID Reserved);
  270. typedef VCMQUEUEHIGHPRIORITYENUMERATION * PVCMQUEUEHIGHPRIORITYENUMERATION;
  271. typedef UINT(WINAPI VCMENUMERATIONCALLBACK)(
  272. IN PCMIG_OBJECTENUMDATA Data,
  273. IN ULONG_PTR CallerArg
  274. );
  275. typedef VCMENUMERATIONCALLBACK * PVCMENUMERATIONCALLBACK;
  276. typedef VOID(WINAPI VCMTERMINATE)(VOID);
  277. typedef VCMTERMINATE * PVCMTERMINATE;
  278. typedef struct {
  279. UINT Version;
  280. PVCMINITIALIZE VcmInitialize;
  281. PVCMPARSE VcmParse;
  282. PVCMQUEUEENUMERATION VcmQueueEnumeration;
  283. PVCMQUEUEHIGHPRIORITYENUMERATION VcmQueueHighPriorityEnumeration;
  284. PVCMTERMINATE VcmTerminate;
  285. } VIRTUAL_COMPUTER_ENTRYPOINTS, *PVIRTUAL_COMPUTER_ENTRYPOINTS;
  286. typedef BOOL(WINAPI SGMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  287. typedef SGMINITIALIZE * PSGMINITIALIZE;
  288. typedef BOOL(WINAPI SGMPARSE)(PVOID Reserved);
  289. typedef SGMPARSE * PSGMPARSE;
  290. typedef BOOL(WINAPI SGMQUEUEENUMERATION)(PVOID Reserved);
  291. typedef SGMQUEUEENUMERATION * PSGMQUEUEENUMERATION;
  292. typedef BOOL(WINAPI SGMQUEUEHIGHPRIORITYENUMERATION)(PVOID Reserved);
  293. typedef SGMQUEUEHIGHPRIORITYENUMERATION * PSGMQUEUEHIGHPRIORITYENUMERATION;
  294. typedef UINT(WINAPI SGMENUMERATIONCALLBACK)(
  295. IN PCMIG_OBJECTENUMDATA Data,
  296. IN ULONG_PTR CallerArg
  297. );
  298. typedef SGMENUMERATIONCALLBACK * PSGMENUMERATIONCALLBACK;
  299. typedef VOID(WINAPI SGMTERMINATE)(VOID);
  300. typedef SGMTERMINATE * PSGMTERMINATE;
  301. typedef BOOL(WINAPI SAMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  302. typedef SAMINITIALIZE * PSAMINITIALIZE;
  303. typedef BOOL(WINAPI SAMEXECUTE)(VOID);
  304. typedef SAMEXECUTE * PSAMEXECUTE;
  305. typedef VOID(WINAPI SAMESTIMATEPROGRESSBAR)(VOID);
  306. typedef SAMESTIMATEPROGRESSBAR *PSAMESTIMATEPROGRESSBAR;
  307. typedef VOID(WINAPI SAMTERMINATE)(VOID);
  308. typedef SAMTERMINATE * PSAMTERMINATE;
  309. typedef struct {
  310. UINT Version;
  311. PSGMINITIALIZE SgmInitialize;
  312. PSGMPARSE SgmParse;
  313. PSGMQUEUEENUMERATION SgmQueueEnumeration;
  314. PSGMQUEUEHIGHPRIORITYENUMERATION SgmQueueHighPriorityEnumeration;
  315. PSGMTERMINATE SgmTerminate;
  316. PSAMINITIALIZE SamInitialize;
  317. PSAMEXECUTE SamExecute;
  318. PSAMESTIMATEPROGRESSBAR SamEstimateProgressBar;
  319. PSAMTERMINATE SamTerminate;
  320. } SOURCE_ENTRYPOINTS, *PSOURCE_ENTRYPOINTS;
  321. typedef BOOL(WINAPI DGMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  322. typedef DGMINITIALIZE * PDGMINITIALIZE;
  323. typedef BOOL(WINAPI DGMQUEUEENUMERATION)(PVOID Reserved);
  324. typedef DGMQUEUEENUMERATION * PDGMQUEUEENUMERATION;
  325. typedef BOOL(WINAPI DGMQUEUEHIGHPRIORITYENUMERATION)(PVOID Reserved);
  326. typedef DGMQUEUEHIGHPRIORITYENUMERATION * PDGMQUEUEHIGHPRIORITYENUMERATION;
  327. typedef UINT(WINAPI DGMENUMERATIONCALLBACK)(
  328. IN PCMIG_OBJECTENUMDATA Data,
  329. IN ULONG_PTR CallerArg
  330. );
  331. typedef DGMENUMERATIONCALLBACK * PDGMENUMERATIONCALLBACK;
  332. typedef VOID(WINAPI DGMTERMINATE)(VOID);
  333. typedef DGMTERMINATE * PDGMTERMINATE;
  334. typedef BOOL(WINAPI DAMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  335. typedef DAMINITIALIZE * PDAMINITIALIZE;
  336. typedef BOOL(WINAPI DAMEXECUTE)(VOID);
  337. typedef DAMEXECUTE * PDAMEXECUTE;
  338. typedef VOID(WINAPI DAMESTIMATEPROGRESSBAR)(VOID);
  339. typedef DAMESTIMATEPROGRESSBAR *PDAMESTIMATEPROGRESSBAR;
  340. typedef VOID(WINAPI DAMTERMINATE)(VOID);
  341. typedef DAMTERMINATE * PDAMTERMINATE;
  342. typedef BOOL(WINAPI CSMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  343. typedef CSMINITIALIZE * PCSMINITIALIZE;
  344. typedef BOOL(WINAPI CSMEXECUTE)(VOID);
  345. typedef CSMEXECUTE * PCSMEXECUTE;
  346. typedef VOID(WINAPI CSMESTIMATEPROGRESSBAR)(VOID);
  347. typedef CSMESTIMATEPROGRESSBAR *PCSMESTIMATEPROGRESSBAR;
  348. typedef VOID(WINAPI CSMTERMINATE)(VOID);
  349. typedef CSMTERMINATE * PCSMTERMINATE;
  350. typedef BOOL(WINAPI OPMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  351. typedef OPMINITIALIZE * POPMINITIALIZE;
  352. typedef VOID(WINAPI OPMTERMINATE)(VOID);
  353. typedef OPMTERMINATE * POPMTERMINATE;
  354. typedef struct {
  355. UINT Version;
  356. PDGMINITIALIZE DgmInitialize;
  357. PDGMQUEUEENUMERATION DgmQueueEnumeration;
  358. PDGMQUEUEHIGHPRIORITYENUMERATION DgmQueueHighPriorityEnumeration;
  359. PDGMTERMINATE DgmTerminate;
  360. PDAMINITIALIZE DamInitialize;
  361. PDAMEXECUTE DamExecute;
  362. PDAMESTIMATEPROGRESSBAR DamEstimateProgressBar;
  363. PDAMTERMINATE DamTerminate;
  364. PCSMINITIALIZE CsmInitialize;
  365. PCSMEXECUTE CsmExecute;
  366. PCSMESTIMATEPROGRESSBAR CsmEstimateProgressBar;
  367. PCSMTERMINATE CsmTerminate;
  368. POPMINITIALIZE OpmInitialize;
  369. POPMTERMINATE OpmTerminate;
  370. } DESTINATION_ENTRYPOINTS, *PDESTINATION_ENTRYPOINTS;
  371. //
  372. // callback prototypes
  373. //
  374. typedef UINT (WINAPI MIG_OBJECTENUMCALLBACK)(PCMIG_OBJECTENUMDATA Data, ULONG_PTR CallerArg);
  375. typedef MIG_OBJECTENUMCALLBACK *PMIG_OBJECTENUMCALLBACK;
  376. typedef BOOL (WINAPI MIG_PREENUMCALLBACK)(VOID);
  377. typedef MIG_PREENUMCALLBACK *PMIG_PREENUMCALLBACK;
  378. typedef BOOL (WINAPI MIG_POSTENUMCALLBACK)(VOID);
  379. typedef MIG_POSTENUMCALLBACK *PMIG_POSTENUMCALLBACK;
  380. typedef BOOL (WINAPI MIG_DYNAMICEXCLUSIONCALLBACK)(
  381. MIG_OBJECTTYPEID ObjectTypeId,
  382. MIG_OBJECTSTRINGHANDLE EncodedObjectName,
  383. ULONG_PTR Arg
  384. );
  385. typedef MIG_DYNAMICEXCLUSIONCALLBACK *PMIG_DYNAMICEXCLUSIONCALLBACK;
  386. typedef BOOL (WINAPI MIG_RESTORECALLBACK)(MIG_OBJECTTYPEID,MIG_OBJECTID,MIG_OBJECTSTRINGHANDLE);
  387. typedef MIG_RESTORECALLBACK *PMIG_RESTORECALLBACK;
  388. //
  389. // entry points that return module funciton addresses
  390. //
  391. typedef BOOL(WINAPI VIRTUALCOMPUTERMODULE)(
  392. IN PCTSTR ModuleId,
  393. IN OUT PVIRTUAL_COMPUTER_ENTRYPOINTS VirtualComputerEntryPoints
  394. );
  395. typedef VIRTUALCOMPUTERMODULE *PVIRTUALCOMPUTERMODULE;
  396. typedef BOOL(WINAPI SOURCEMODULE)(
  397. IN PCTSTR ModuleId,
  398. IN OUT PSOURCE_ENTRYPOINTS SourceEntryPoints
  399. );
  400. typedef SOURCEMODULE *PSOURCEMODULE;
  401. typedef BOOL(WINAPI DESTINATIONMODULE)(
  402. IN PCTSTR ModuleId,
  403. IN OUT PDESTINATION_ENTRYPOINTS DestinationEntryPoints
  404. );
  405. typedef DESTINATIONMODULE *PDESTINATIONMODULE;
  406. typedef BOOL(WINAPI TYPEMODULE)(
  407. IN PCTSTR ModuleId,
  408. IN OUT PTYPE_ENTRYPOINTS TypeEntryPoints
  409. );
  410. typedef TYPEMODULE *PTYPEMODULE;
  411. typedef BOOL(WINAPI TRANSPORTMODULE)(
  412. IN PCTSTR ModuleId,
  413. IN OUT PTRANSPORT_ENTRYPOINTS TransportEntryPoints
  414. );
  415. typedef TRANSPORTMODULE *PTRANSPORTMODULE;