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.

540 lines
19 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. UINT Priority;
  200. PTYPE_ENUMFIRSTPHYSICALOBJECT EnumFirstPhysicalObject;
  201. PTYPE_ENUMNEXTPHYSICALOBJECT EnumNextPhysicalObject;
  202. PTYPE_ABORTENUMCURRENTPHYSICALNODE AbortEnumCurrentPhysicalNode;
  203. PTYPE_ABORTENUMPHYSICALOBJECT AbortEnumPhysicalObject;
  204. PTYPE_CONVERTOBJECTTOMULTISZ ConvertObjectToMultiSz;
  205. PTYPE_CONVERTMULTISZTOOBJECT ConvertMultiSzToObject;
  206. PTYPE_GETNATIVEOBJECTNAME GetNativeObjectName;
  207. PTYPE_ACQUIREPHYSICALOBJECT AcquirePhysicalObject;
  208. PTYPE_RELEASEPHYSICALOBJECT ReleasePhysicalObject;
  209. PTYPE_DOESPHYSICALOBJECTEXIST DoesPhysicalObjectExist;
  210. PTYPE_REMOVEPHYSICALOBJECT RemovePhysicalObject;
  211. PTYPE_CREATEPHYSICALOBJECT CreatePhysicalObject;
  212. PTYPE_REPLACEPHYSICALOBJECT ReplacePhysicalObject;
  213. PTYPE_CONVERTOBJECTCONTENTTOUNICODE ConvertObjectContentToUnicode;
  214. PTYPE_CONVERTOBJECTCONTENTTOANSI ConvertObjectContentToAnsi;
  215. PTYPE_FREECONVERTEDOBJECTCONTENT FreeConvertedObjectContent;
  216. } TYPE_REGISTER, *PTYPE_REGISTER;
  217. typedef BOOL (WINAPI MIG_PHYSICALENUMCHECK)(
  218. IN PMIG_TYPEOBJECTENUM ObjectEnum,
  219. IN ULONG_PTR Arg
  220. );
  221. typedef MIG_PHYSICALENUMCHECK *PMIG_PHYSICALENUMCHECK;
  222. typedef BOOL (WINAPI MIG_PHYSICALENUMADD)(
  223. IN OUT PMIG_TYPEOBJECTENUM ObjectEnum,
  224. IN MIG_OBJECTSTRINGHANDLE Pattern, // NULL if Abort is TRUE
  225. IN MIG_PARSEDPATTERN ParsedPattern, // NULL if Abort is TRUE
  226. IN ULONG_PTR Arg,
  227. IN BOOL Abort
  228. );
  229. typedef MIG_PHYSICALENUMADD *PMIG_PHYSICALENUMADD;
  230. typedef BOOL (WINAPI MIG_PHYSICALACQUIREHOOK)(
  231. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  232. IN PMIG_CONTENT ObjectContent,
  233. IN MIG_CONTENTTYPE ContentType,
  234. IN UINT MemoryContentLimit,
  235. OUT PMIG_CONTENT *NewObjectContent, CALLER_INITIALIZED OPTIONAL
  236. IN BOOL ReleaseContent,
  237. IN ULONG_PTR Arg
  238. );
  239. typedef MIG_PHYSICALACQUIREHOOK *PMIG_PHYSICALACQUIREHOOK;
  240. typedef VOID (WINAPI MIG_PHYSICALACQUIREFREE)(PMIG_CONTENT ObjectContent);
  241. typedef MIG_PHYSICALACQUIREFREE *PMIG_PHYSICALACQUIREFREE;
  242. //
  243. // module entry points
  244. //
  245. typedef BOOL(WINAPI MODULEINITIALIZE)(VOID);
  246. typedef MODULEINITIALIZE * PMODULEINITIALIZE;
  247. typedef VOID(WINAPI MODULETERMINATE)(VOID);
  248. typedef MODULETERMINATE * PMODULETERMINATE;
  249. typedef BOOL(WINAPI ETMINITIALIZE)(MIG_PLATFORMTYPEID Platform, PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  250. typedef ETMINITIALIZE * PETMINITIALIZE;
  251. typedef BOOL(WINAPI ETMPARSE)(PVOID Reserved);
  252. typedef ETMPARSE *PETMPARSE;
  253. typedef VOID(WINAPI ETMTERMINATE)(VOID);
  254. typedef ETMTERMINATE * PETMTERMINATE;
  255. typedef VOID(WINAPI ETMNEWUSERCREATED)(PCTSTR UserName, PCTSTR DomainName, PCTSTR UserProfileRoot, PSID UserSid);
  256. typedef ETMNEWUSERCREATED * PETMNEWUSERCREATED;
  257. typedef struct {
  258. UINT Version;
  259. PETMINITIALIZE EtmInitialize;
  260. PETMPARSE EtmParse;
  261. PETMTERMINATE EtmTerminate;
  262. PETMNEWUSERCREATED EtmNewUserCreated;
  263. } TYPE_ENTRYPOINTS, *PTYPE_ENTRYPOINTS;
  264. typedef BOOL(WINAPI VCMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  265. typedef VCMINITIALIZE * PVCMINITIALIZE;
  266. typedef BOOL(WINAPI VCMPARSE)(PVOID Reserved);
  267. typedef VCMPARSE * PVCMPARSE;
  268. typedef BOOL(WINAPI VCMQUEUEENUMERATION)(PVOID Reserved);
  269. typedef VCMQUEUEENUMERATION * PVCMQUEUEENUMERATION;
  270. typedef BOOL(WINAPI VCMQUEUEHIGHPRIORITYENUMERATION)(PVOID Reserved);
  271. typedef VCMQUEUEHIGHPRIORITYENUMERATION * PVCMQUEUEHIGHPRIORITYENUMERATION;
  272. typedef UINT(WINAPI VCMENUMERATIONCALLBACK)(
  273. IN PCMIG_OBJECTENUMDATA Data,
  274. IN ULONG_PTR CallerArg
  275. );
  276. typedef VCMENUMERATIONCALLBACK * PVCMENUMERATIONCALLBACK;
  277. typedef VOID(WINAPI VCMTERMINATE)(VOID);
  278. typedef VCMTERMINATE * PVCMTERMINATE;
  279. typedef struct {
  280. UINT Version;
  281. PVCMINITIALIZE VcmInitialize;
  282. PVCMPARSE VcmParse;
  283. PVCMQUEUEENUMERATION VcmQueueEnumeration;
  284. PVCMQUEUEHIGHPRIORITYENUMERATION VcmQueueHighPriorityEnumeration;
  285. PVCMTERMINATE VcmTerminate;
  286. } VIRTUAL_COMPUTER_ENTRYPOINTS, *PVIRTUAL_COMPUTER_ENTRYPOINTS;
  287. typedef BOOL(WINAPI SGMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  288. typedef SGMINITIALIZE * PSGMINITIALIZE;
  289. typedef BOOL(WINAPI SGMPARSE)(PVOID Reserved);
  290. typedef SGMPARSE * PSGMPARSE;
  291. typedef BOOL(WINAPI SGMQUEUEENUMERATION)(PVOID Reserved);
  292. typedef SGMQUEUEENUMERATION * PSGMQUEUEENUMERATION;
  293. typedef BOOL(WINAPI SGMQUEUEHIGHPRIORITYENUMERATION)(PVOID Reserved);
  294. typedef SGMQUEUEHIGHPRIORITYENUMERATION * PSGMQUEUEHIGHPRIORITYENUMERATION;
  295. typedef UINT(WINAPI SGMENUMERATIONCALLBACK)(
  296. IN PCMIG_OBJECTENUMDATA Data,
  297. IN ULONG_PTR CallerArg
  298. );
  299. typedef SGMENUMERATIONCALLBACK * PSGMENUMERATIONCALLBACK;
  300. typedef VOID(WINAPI SGMTERMINATE)(VOID);
  301. typedef SGMTERMINATE * PSGMTERMINATE;
  302. typedef BOOL(WINAPI SAMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  303. typedef SAMINITIALIZE * PSAMINITIALIZE;
  304. typedef BOOL(WINAPI SAMEXECUTE)(VOID);
  305. typedef SAMEXECUTE * PSAMEXECUTE;
  306. typedef VOID(WINAPI SAMESTIMATEPROGRESSBAR)(VOID);
  307. typedef SAMESTIMATEPROGRESSBAR *PSAMESTIMATEPROGRESSBAR;
  308. typedef VOID(WINAPI SAMTERMINATE)(VOID);
  309. typedef SAMTERMINATE * PSAMTERMINATE;
  310. typedef struct {
  311. UINT Version;
  312. PSGMINITIALIZE SgmInitialize;
  313. PSGMPARSE SgmParse;
  314. PSGMQUEUEENUMERATION SgmQueueEnumeration;
  315. PSGMQUEUEHIGHPRIORITYENUMERATION SgmQueueHighPriorityEnumeration;
  316. PSGMTERMINATE SgmTerminate;
  317. PSAMINITIALIZE SamInitialize;
  318. PSAMEXECUTE SamExecute;
  319. PSAMESTIMATEPROGRESSBAR SamEstimateProgressBar;
  320. PSAMTERMINATE SamTerminate;
  321. } SOURCE_ENTRYPOINTS, *PSOURCE_ENTRYPOINTS;
  322. typedef BOOL(WINAPI DGMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  323. typedef DGMINITIALIZE * PDGMINITIALIZE;
  324. typedef BOOL(WINAPI DGMQUEUEENUMERATION)(PVOID Reserved);
  325. typedef DGMQUEUEENUMERATION * PDGMQUEUEENUMERATION;
  326. typedef BOOL(WINAPI DGMQUEUEHIGHPRIORITYENUMERATION)(PVOID Reserved);
  327. typedef DGMQUEUEHIGHPRIORITYENUMERATION * PDGMQUEUEHIGHPRIORITYENUMERATION;
  328. typedef UINT(WINAPI DGMENUMERATIONCALLBACK)(
  329. IN PCMIG_OBJECTENUMDATA Data,
  330. IN ULONG_PTR CallerArg
  331. );
  332. typedef DGMENUMERATIONCALLBACK * PDGMENUMERATIONCALLBACK;
  333. typedef VOID(WINAPI DGMTERMINATE)(VOID);
  334. typedef DGMTERMINATE * PDGMTERMINATE;
  335. typedef BOOL(WINAPI DAMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  336. typedef DAMINITIALIZE * PDAMINITIALIZE;
  337. typedef BOOL(WINAPI DAMEXECUTE)(VOID);
  338. typedef DAMEXECUTE * PDAMEXECUTE;
  339. typedef VOID(WINAPI DAMESTIMATEPROGRESSBAR)(VOID);
  340. typedef DAMESTIMATEPROGRESSBAR *PDAMESTIMATEPROGRESSBAR;
  341. typedef VOID(WINAPI DAMTERMINATE)(VOID);
  342. typedef DAMTERMINATE * PDAMTERMINATE;
  343. typedef BOOL(WINAPI CSMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  344. typedef CSMINITIALIZE * PCSMINITIALIZE;
  345. typedef BOOL(WINAPI CSMEXECUTE)(VOID);
  346. typedef CSMEXECUTE * PCSMEXECUTE;
  347. typedef VOID(WINAPI CSMESTIMATEPROGRESSBAR)(VOID);
  348. typedef CSMESTIMATEPROGRESSBAR *PCSMESTIMATEPROGRESSBAR;
  349. typedef VOID(WINAPI CSMTERMINATE)(VOID);
  350. typedef CSMTERMINATE * PCSMTERMINATE;
  351. typedef BOOL(WINAPI OPMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved);
  352. typedef OPMINITIALIZE * POPMINITIALIZE;
  353. typedef VOID(WINAPI OPMTERMINATE)(VOID);
  354. typedef OPMTERMINATE * POPMTERMINATE;
  355. typedef struct {
  356. UINT Version;
  357. PDGMINITIALIZE DgmInitialize;
  358. PDGMQUEUEENUMERATION DgmQueueEnumeration;
  359. PDGMQUEUEHIGHPRIORITYENUMERATION DgmQueueHighPriorityEnumeration;
  360. PDGMTERMINATE DgmTerminate;
  361. PDAMINITIALIZE DamInitialize;
  362. PDAMEXECUTE DamExecute;
  363. PDAMESTIMATEPROGRESSBAR DamEstimateProgressBar;
  364. PDAMTERMINATE DamTerminate;
  365. PCSMINITIALIZE CsmInitialize;
  366. PCSMEXECUTE CsmExecute;
  367. PCSMESTIMATEPROGRESSBAR CsmEstimateProgressBar;
  368. PCSMTERMINATE CsmTerminate;
  369. POPMINITIALIZE OpmInitialize;
  370. POPMTERMINATE OpmTerminate;
  371. } DESTINATION_ENTRYPOINTS, *PDESTINATION_ENTRYPOINTS;
  372. //
  373. // callback prototypes
  374. //
  375. typedef UINT (WINAPI MIG_OBJECTENUMCALLBACK)(PCMIG_OBJECTENUMDATA Data, ULONG_PTR CallerArg);
  376. typedef MIG_OBJECTENUMCALLBACK *PMIG_OBJECTENUMCALLBACK;
  377. typedef BOOL (WINAPI MIG_PREENUMCALLBACK)(VOID);
  378. typedef MIG_PREENUMCALLBACK *PMIG_PREENUMCALLBACK;
  379. typedef BOOL (WINAPI MIG_POSTENUMCALLBACK)(VOID);
  380. typedef MIG_POSTENUMCALLBACK *PMIG_POSTENUMCALLBACK;
  381. typedef BOOL (WINAPI MIG_DYNAMICEXCLUSIONCALLBACK)(
  382. MIG_OBJECTTYPEID ObjectTypeId,
  383. MIG_OBJECTSTRINGHANDLE EncodedObjectName,
  384. ULONG_PTR Arg
  385. );
  386. typedef MIG_DYNAMICEXCLUSIONCALLBACK *PMIG_DYNAMICEXCLUSIONCALLBACK;
  387. typedef BOOL (WINAPI MIG_RESTORECALLBACK)(MIG_OBJECTTYPEID,MIG_OBJECTID,MIG_OBJECTSTRINGHANDLE);
  388. typedef MIG_RESTORECALLBACK *PMIG_RESTORECALLBACK;
  389. typedef BOOL (WINAPI MIG_COMPARECALLBACK)(BOOL,MIG_OBJECTTYPEID,MIG_OBJECTSTRINGHANDLE,PMIG_CONTENT,MIG_OBJECTTYPEID,MIG_OBJECTSTRINGHANDLE,PMIG_CONTENT,PBOOL,PBOOL);
  390. typedef MIG_COMPARECALLBACK *PMIG_COMPARECALLBACK;
  391. //
  392. // entry points that return module funciton addresses
  393. //
  394. typedef BOOL(WINAPI VIRTUALCOMPUTERMODULE)(
  395. IN PCTSTR ModuleId,
  396. IN OUT PVIRTUAL_COMPUTER_ENTRYPOINTS VirtualComputerEntryPoints
  397. );
  398. typedef VIRTUALCOMPUTERMODULE *PVIRTUALCOMPUTERMODULE;
  399. typedef BOOL(WINAPI SOURCEMODULE)(
  400. IN PCTSTR ModuleId,
  401. IN OUT PSOURCE_ENTRYPOINTS SourceEntryPoints
  402. );
  403. typedef SOURCEMODULE *PSOURCEMODULE;
  404. typedef BOOL(WINAPI DESTINATIONMODULE)(
  405. IN PCTSTR ModuleId,
  406. IN OUT PDESTINATION_ENTRYPOINTS DestinationEntryPoints
  407. );
  408. typedef DESTINATIONMODULE *PDESTINATIONMODULE;
  409. typedef BOOL(WINAPI TYPEMODULE)(
  410. IN PCTSTR ModuleId,
  411. IN OUT PTYPE_ENTRYPOINTS TypeEntryPoints
  412. );
  413. typedef TYPEMODULE *PTYPEMODULE;
  414. typedef BOOL(WINAPI TRANSPORTMODULE)(
  415. IN PCTSTR ModuleId,
  416. IN OUT PTRANSPORT_ENTRYPOINTS TransportEntryPoints
  417. );
  418. typedef TRANSPORTMODULE *PTRANSPORTMODULE;