/*++ Copyright (c) 2000 Microsoft Corporation Module Name: ismproc.h Abstract: Callback function prototype definitions for the Intermediate State Manager. Author: Jim Schmidt (jimschm) 15-Nov-1999 Revision History: --*/ #pragma once // // Types // // // misc types // #define ISM_VERSION 0x10000 typedef VOID (WINAPI MIG_LOGCALLBACK)(PVOID Arg); typedef MIG_LOGCALLBACK * PMIG_LOGCALLBACK; typedef VOID(PROGRESSBARFN)( MIG_PROGRESSPHASE Phase, MIG_PROGRESSSTATE State, UINT WorkDone, UINT TotalWork, ULONG_PTR Arg ); typedef PROGRESSBARFN * PPROGRESSBARFN; // // transport // typedef BOOL(WINAPI TRANSPORTINITIALIZE)(PMIG_LOGCALLBACK LogCallback); typedef TRANSPORTINITIALIZE *PTRANSPORTINITIALIZE; typedef VOID(WINAPI TRANSPORTESTIMATEPROGRESSBAR)(MIG_PLATFORMTYPEID PlatformTypeId); typedef TRANSPORTESTIMATEPROGRESSBAR *PTRANSPORTESTIMATEPROGRESSBAR; typedef BOOL(WINAPI TRANSPORTQUERYCAPABILITIES)( IN MIG_TRANSPORTSTORAGEID TransportStorageId, OUT PMIG_TRANSPORTTYPE TransportType, OUT PMIG_TRANSPORTCAPABILITIES Capabilities, OUT PCTSTR *FriendlyDescription ); typedef TRANSPORTQUERYCAPABILITIES *PTRANSPORTQUERYCAPABILITIES; typedef BOOL(WINAPI TRANSPORTSETSTORAGE)( IN MIG_PLATFORMTYPEID Platform, IN MIG_TRANSPORTSTORAGEID TransportStorageId, IN MIG_TRANSPORTCAPABILITIES Capabilities, IN PCTSTR StoragePath, OUT PBOOL Valid, OUT PBOOL ImageExists ); typedef TRANSPORTSETSTORAGE *PTRANSPORTSETSTORAGE; typedef VOID(WINAPI TRANSPORTRESETSTORAGE)(MIG_TRANSPORTSTORAGEID TransportStorageId); typedef TRANSPORTRESETSTORAGE *PTRANSPORTRESETSTORAGE; typedef VOID(WINAPI TRANSPORTTERMINATE)(VOID); typedef TRANSPORTTERMINATE *PTRANSPORTTERMINATE; typedef BOOL(WINAPI TRANSPORTSAVESTATE)(VOID); typedef TRANSPORTSAVESTATE *PTRANSPORTSAVESTATE; typedef BOOL(WINAPI TRANSPORTRESUMESAVESTATE)(VOID); typedef TRANSPORTRESUMESAVESTATE *PTRANSPORTRESUMESAVESTATE; typedef BOOL(WINAPI TRANSPORTBEGINAPPLY)(VOID); typedef TRANSPORTBEGINAPPLY *PTRANSPORTBEGINAPPLY; typedef BOOL(WINAPI TRANSPORTRESUMEAPPLY)(VOID); typedef TRANSPORTRESUMEAPPLY *PTRANSPORTRESUMEAPPLY; typedef BOOL(WINAPI TRANSPORTACQUIREOBJECT)( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, IN OUT PMIG_CONTENT ObjectContent, IN MIG_CONTENTTYPE ContentType, IN UINT MemoryContentLimit ); typedef TRANSPORTACQUIREOBJECT *PTRANSPORTACQUIREOBJECT; typedef BOOL(WINAPI TRANSPORTRELEASEOBJECT)(PMIG_CONTENT ObjectContent); typedef TRANSPORTRELEASEOBJECT *PTRANSPORTRELEASEOBJECT; typedef VOID(WINAPI TRANSPORTENDAPPLY)(VOID); typedef TRANSPORTENDAPPLY *PTRANSPORTENDAPPLY; typedef struct { UINT Version; PTRANSPORTINITIALIZE TransportInitialize; PTRANSPORTESTIMATEPROGRESSBAR TransportEstimateProgressBar; PTRANSPORTQUERYCAPABILITIES TransportQueryCapabilities; PTRANSPORTSETSTORAGE TransportSetStorage; PTRANSPORTRESETSTORAGE TransportResetStorage; PTRANSPORTTERMINATE TransportTerminate; PTRANSPORTSAVESTATE TransportSaveState; PTRANSPORTRESUMESAVESTATE TransportResumeSaveState; PTRANSPORTBEGINAPPLY TransportBeginApply; PTRANSPORTRESUMEAPPLY TransportResumeApply; PTRANSPORTACQUIREOBJECT TransportAcquireObject; PTRANSPORTRELEASEOBJECT TransportReleaseObject; PTRANSPORTENDAPPLY TransportEndApply; } TRANSPORT_ENTRYPOINTS, *PTRANSPORT_ENTRYPOINTS; // // operations // typedef BOOL (WINAPI OPMFILTERCALLBACK)( PCMIG_FILTERINPUT InputData, PMIG_FILTEROUTPUT OutputData, BOOL NoRestoreObject, PCMIG_BLOB SourceOperationData, OPTIONAL PCMIG_BLOB DestinationOperationData OPTIONAL ); typedef OPMFILTERCALLBACK *POPMFILTERCALLBACK; typedef BOOL (WINAPI OPMAPPLYCALLBACK)( MIG_OBJECTTYPEID SrcObjectTypeId, MIG_OBJECTSTRINGHANDLE SrcObjectName, PCMIG_CONTENT OriginalContent, PCMIG_CONTENT CurrentContent, PMIG_CONTENT NewContent, PCMIG_BLOB SourceOperationData, OPTIONAL PCMIG_BLOB DestinationOperationData OPTIONAL ); typedef OPMAPPLYCALLBACK *POPMAPPLYCALLBACK; // // message passing // typedef ULONG_PTR(CALLBACK MESSAGECALLBACK)(UINT Message, ULONG_PTR Arg); typedef MESSAGECALLBACK *PMESSAGECALLBACK; // // ETM entry points // typedef BOOL(WINAPI TYPE_ENUMFIRSTPHYSICALOBJECT)( IN OUT PMIG_TYPEOBJECTENUM EnumPtr, IN MIG_OBJECTSTRINGHANDLE Pattern, IN UINT MaxLevel ); typedef TYPE_ENUMFIRSTPHYSICALOBJECT *PTYPE_ENUMFIRSTPHYSICALOBJECT; typedef BOOL(WINAPI TYPE_ENUMNEXTPHYSICALOBJECT)( IN OUT PMIG_TYPEOBJECTENUM EnumPtr ); typedef TYPE_ENUMNEXTPHYSICALOBJECT *PTYPE_ENUMNEXTPHYSICALOBJECT; typedef VOID(WINAPI TYPE_ABORTENUMCURRENTPHYSICALNODE)( IN OUT PMIG_TYPEOBJECTENUM EnumPtr ); typedef TYPE_ABORTENUMCURRENTPHYSICALNODE *PTYPE_ABORTENUMCURRENTPHYSICALNODE; typedef VOID(WINAPI TYPE_ABORTENUMPHYSICALOBJECT)( IN OUT PMIG_TYPEOBJECTENUM EnumPtr ); typedef TYPE_ABORTENUMPHYSICALOBJECT *PTYPE_ABORTENUMPHYSICALOBJECT; typedef PCTSTR(WINAPI TYPE_CONVERTOBJECTTOMULTISZ)( IN MIG_OBJECTSTRINGHANDLE ObjectName, IN PMIG_CONTENT ObjectContent ); typedef TYPE_CONVERTOBJECTTOMULTISZ *PTYPE_CONVERTOBJECTTOMULTISZ; typedef BOOL(WINAPI TYPE_CONVERTMULTISZTOOBJECT)( IN PCTSTR ObjectMultiSz, OUT MIG_OBJECTSTRINGHANDLE *ObjectName, OUT PMIG_CONTENT ObjectContent OPTIONAL ); typedef TYPE_CONVERTMULTISZTOOBJECT *PTYPE_CONVERTMULTISZTOOBJECT; typedef PCTSTR(WINAPI TYPE_GETNATIVEOBJECTNAME)( IN MIG_OBJECTSTRINGHANDLE ObjectName ); typedef TYPE_GETNATIVEOBJECTNAME *PTYPE_GETNATIVEOBJECTNAME; typedef BOOL(WINAPI TYPE_ACQUIREPHYSICALOBJECT)( IN MIG_OBJECTSTRINGHANDLE ObjectName, OUT PMIG_CONTENT ObjectContent, IN MIG_CONTENTTYPE ContentType, IN UINT MemoryContentLimit ); typedef TYPE_ACQUIREPHYSICALOBJECT *PTYPE_ACQUIREPHYSICALOBJECT; typedef BOOL(WINAPI TYPE_RELEASEPHYSICALOBJECT)( IN OUT PMIG_CONTENT ObjectContent ); typedef TYPE_RELEASEPHYSICALOBJECT *PTYPE_RELEASEPHYSICALOBJECT; typedef BOOL(WINAPI TYPE_DOESPHYSICALOBJECTEXIST)( IN MIG_OBJECTSTRINGHANDLE ObjectName ); typedef TYPE_DOESPHYSICALOBJECTEXIST *PTYPE_DOESPHYSICALOBJECTEXIST; typedef BOOL(WINAPI TYPE_REMOVEPHYSICALOBJECT)( IN MIG_OBJECTSTRINGHANDLE ObjectName ); typedef TYPE_REMOVEPHYSICALOBJECT *PTYPE_REMOVEPHYSICALOBJECT; typedef BOOL(WINAPI TYPE_CREATEPHYSICALOBJECT)( IN MIG_OBJECTSTRINGHANDLE ObjectName, IN PMIG_CONTENT ObjectContent ); typedef TYPE_CREATEPHYSICALOBJECT *PTYPE_CREATEPHYSICALOBJECT; typedef BOOL(WINAPI TYPE_REPLACEPHYSICALOBJECT)( IN MIG_OBJECTSTRINGHANDLE ObjectName, IN PMIG_CONTENT ObjectContent ); typedef TYPE_REPLACEPHYSICALOBJECT *PTYPE_REPLACEPHYSICALOBJECT; typedef PMIG_CONTENT(WINAPI TYPE_CONVERTOBJECTCONTENTTOUNICODE)( IN MIG_OBJECTSTRINGHANDLE ObjectName, IN PMIG_CONTENT ObjectContent ); typedef TYPE_CONVERTOBJECTCONTENTTOUNICODE *PTYPE_CONVERTOBJECTCONTENTTOUNICODE; typedef PMIG_CONTENT(WINAPI TYPE_CONVERTOBJECTCONTENTTOANSI)( IN MIG_OBJECTSTRINGHANDLE ObjectName, IN PMIG_CONTENT ObjectContent ); typedef TYPE_CONVERTOBJECTCONTENTTOANSI *PTYPE_CONVERTOBJECTCONTENTTOANSI; typedef BOOL(WINAPI TYPE_FREECONVERTEDOBJECTCONTENT)( IN PMIG_CONTENT ObjectContent ); typedef TYPE_FREECONVERTEDOBJECTCONTENT *PTYPE_FREECONVERTEDOBJECTCONTENT; typedef struct { UINT Priority; PTYPE_ENUMFIRSTPHYSICALOBJECT EnumFirstPhysicalObject; PTYPE_ENUMNEXTPHYSICALOBJECT EnumNextPhysicalObject; PTYPE_ABORTENUMCURRENTPHYSICALNODE AbortEnumCurrentPhysicalNode; PTYPE_ABORTENUMPHYSICALOBJECT AbortEnumPhysicalObject; PTYPE_CONVERTOBJECTTOMULTISZ ConvertObjectToMultiSz; PTYPE_CONVERTMULTISZTOOBJECT ConvertMultiSzToObject; PTYPE_GETNATIVEOBJECTNAME GetNativeObjectName; PTYPE_ACQUIREPHYSICALOBJECT AcquirePhysicalObject; PTYPE_RELEASEPHYSICALOBJECT ReleasePhysicalObject; PTYPE_DOESPHYSICALOBJECTEXIST DoesPhysicalObjectExist; PTYPE_REMOVEPHYSICALOBJECT RemovePhysicalObject; PTYPE_CREATEPHYSICALOBJECT CreatePhysicalObject; PTYPE_REPLACEPHYSICALOBJECT ReplacePhysicalObject; PTYPE_CONVERTOBJECTCONTENTTOUNICODE ConvertObjectContentToUnicode; PTYPE_CONVERTOBJECTCONTENTTOANSI ConvertObjectContentToAnsi; PTYPE_FREECONVERTEDOBJECTCONTENT FreeConvertedObjectContent; } TYPE_REGISTER, *PTYPE_REGISTER; typedef BOOL (WINAPI MIG_PHYSICALENUMCHECK)( IN PMIG_TYPEOBJECTENUM ObjectEnum, IN ULONG_PTR Arg ); typedef MIG_PHYSICALENUMCHECK *PMIG_PHYSICALENUMCHECK; typedef BOOL (WINAPI MIG_PHYSICALENUMADD)( IN OUT PMIG_TYPEOBJECTENUM ObjectEnum, IN MIG_OBJECTSTRINGHANDLE Pattern, // NULL if Abort is TRUE IN MIG_PARSEDPATTERN ParsedPattern, // NULL if Abort is TRUE IN ULONG_PTR Arg, IN BOOL Abort ); typedef MIG_PHYSICALENUMADD *PMIG_PHYSICALENUMADD; typedef BOOL (WINAPI MIG_PHYSICALACQUIREHOOK)( IN MIG_OBJECTSTRINGHANDLE ObjectName, IN PMIG_CONTENT ObjectContent, IN MIG_CONTENTTYPE ContentType, IN UINT MemoryContentLimit, OUT PMIG_CONTENT *NewObjectContent, CALLER_INITIALIZED OPTIONAL IN BOOL ReleaseContent, IN ULONG_PTR Arg ); typedef MIG_PHYSICALACQUIREHOOK *PMIG_PHYSICALACQUIREHOOK; typedef VOID (WINAPI MIG_PHYSICALACQUIREFREE)(PMIG_CONTENT ObjectContent); typedef MIG_PHYSICALACQUIREFREE *PMIG_PHYSICALACQUIREFREE; // // module entry points // typedef BOOL(WINAPI MODULEINITIALIZE)(VOID); typedef MODULEINITIALIZE * PMODULEINITIALIZE; typedef VOID(WINAPI MODULETERMINATE)(VOID); typedef MODULETERMINATE * PMODULETERMINATE; typedef BOOL(WINAPI ETMINITIALIZE)(MIG_PLATFORMTYPEID Platform, PMIG_LOGCALLBACK LogCallback, PVOID Reserved); typedef ETMINITIALIZE * PETMINITIALIZE; typedef BOOL(WINAPI ETMPARSE)(PVOID Reserved); typedef ETMPARSE *PETMPARSE; typedef VOID(WINAPI ETMTERMINATE)(VOID); typedef ETMTERMINATE * PETMTERMINATE; typedef VOID(WINAPI ETMNEWUSERCREATED)(PCTSTR UserName, PCTSTR DomainName, PCTSTR UserProfileRoot, PSID UserSid); typedef ETMNEWUSERCREATED * PETMNEWUSERCREATED; typedef struct { UINT Version; PETMINITIALIZE EtmInitialize; PETMPARSE EtmParse; PETMTERMINATE EtmTerminate; PETMNEWUSERCREATED EtmNewUserCreated; } TYPE_ENTRYPOINTS, *PTYPE_ENTRYPOINTS; typedef BOOL(WINAPI VCMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved); typedef VCMINITIALIZE * PVCMINITIALIZE; typedef BOOL(WINAPI VCMPARSE)(PVOID Reserved); typedef VCMPARSE * PVCMPARSE; typedef BOOL(WINAPI VCMQUEUEENUMERATION)(PVOID Reserved); typedef VCMQUEUEENUMERATION * PVCMQUEUEENUMERATION; typedef BOOL(WINAPI VCMQUEUEHIGHPRIORITYENUMERATION)(PVOID Reserved); typedef VCMQUEUEHIGHPRIORITYENUMERATION * PVCMQUEUEHIGHPRIORITYENUMERATION; typedef UINT(WINAPI VCMENUMERATIONCALLBACK)( IN PCMIG_OBJECTENUMDATA Data, IN ULONG_PTR CallerArg ); typedef VCMENUMERATIONCALLBACK * PVCMENUMERATIONCALLBACK; typedef VOID(WINAPI VCMTERMINATE)(VOID); typedef VCMTERMINATE * PVCMTERMINATE; typedef struct { UINT Version; PVCMINITIALIZE VcmInitialize; PVCMPARSE VcmParse; PVCMQUEUEENUMERATION VcmQueueEnumeration; PVCMQUEUEHIGHPRIORITYENUMERATION VcmQueueHighPriorityEnumeration; PVCMTERMINATE VcmTerminate; } VIRTUAL_COMPUTER_ENTRYPOINTS, *PVIRTUAL_COMPUTER_ENTRYPOINTS; typedef BOOL(WINAPI SGMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved); typedef SGMINITIALIZE * PSGMINITIALIZE; typedef BOOL(WINAPI SGMPARSE)(PVOID Reserved); typedef SGMPARSE * PSGMPARSE; typedef BOOL(WINAPI SGMQUEUEENUMERATION)(PVOID Reserved); typedef SGMQUEUEENUMERATION * PSGMQUEUEENUMERATION; typedef BOOL(WINAPI SGMQUEUEHIGHPRIORITYENUMERATION)(PVOID Reserved); typedef SGMQUEUEHIGHPRIORITYENUMERATION * PSGMQUEUEHIGHPRIORITYENUMERATION; typedef UINT(WINAPI SGMENUMERATIONCALLBACK)( IN PCMIG_OBJECTENUMDATA Data, IN ULONG_PTR CallerArg ); typedef SGMENUMERATIONCALLBACK * PSGMENUMERATIONCALLBACK; typedef VOID(WINAPI SGMTERMINATE)(VOID); typedef SGMTERMINATE * PSGMTERMINATE; typedef BOOL(WINAPI SAMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved); typedef SAMINITIALIZE * PSAMINITIALIZE; typedef BOOL(WINAPI SAMEXECUTE)(VOID); typedef SAMEXECUTE * PSAMEXECUTE; typedef VOID(WINAPI SAMESTIMATEPROGRESSBAR)(VOID); typedef SAMESTIMATEPROGRESSBAR *PSAMESTIMATEPROGRESSBAR; typedef VOID(WINAPI SAMTERMINATE)(VOID); typedef SAMTERMINATE * PSAMTERMINATE; typedef struct { UINT Version; PSGMINITIALIZE SgmInitialize; PSGMPARSE SgmParse; PSGMQUEUEENUMERATION SgmQueueEnumeration; PSGMQUEUEHIGHPRIORITYENUMERATION SgmQueueHighPriorityEnumeration; PSGMTERMINATE SgmTerminate; PSAMINITIALIZE SamInitialize; PSAMEXECUTE SamExecute; PSAMESTIMATEPROGRESSBAR SamEstimateProgressBar; PSAMTERMINATE SamTerminate; } SOURCE_ENTRYPOINTS, *PSOURCE_ENTRYPOINTS; typedef BOOL(WINAPI DGMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved); typedef DGMINITIALIZE * PDGMINITIALIZE; typedef BOOL(WINAPI DGMQUEUEENUMERATION)(PVOID Reserved); typedef DGMQUEUEENUMERATION * PDGMQUEUEENUMERATION; typedef BOOL(WINAPI DGMQUEUEHIGHPRIORITYENUMERATION)(PVOID Reserved); typedef DGMQUEUEHIGHPRIORITYENUMERATION * PDGMQUEUEHIGHPRIORITYENUMERATION; typedef UINT(WINAPI DGMENUMERATIONCALLBACK)( IN PCMIG_OBJECTENUMDATA Data, IN ULONG_PTR CallerArg ); typedef DGMENUMERATIONCALLBACK * PDGMENUMERATIONCALLBACK; typedef VOID(WINAPI DGMTERMINATE)(VOID); typedef DGMTERMINATE * PDGMTERMINATE; typedef BOOL(WINAPI DAMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved); typedef DAMINITIALIZE * PDAMINITIALIZE; typedef BOOL(WINAPI DAMEXECUTE)(VOID); typedef DAMEXECUTE * PDAMEXECUTE; typedef VOID(WINAPI DAMESTIMATEPROGRESSBAR)(VOID); typedef DAMESTIMATEPROGRESSBAR *PDAMESTIMATEPROGRESSBAR; typedef VOID(WINAPI DAMTERMINATE)(VOID); typedef DAMTERMINATE * PDAMTERMINATE; typedef BOOL(WINAPI CSMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved); typedef CSMINITIALIZE * PCSMINITIALIZE; typedef BOOL(WINAPI CSMEXECUTE)(VOID); typedef CSMEXECUTE * PCSMEXECUTE; typedef VOID(WINAPI CSMESTIMATEPROGRESSBAR)(VOID); typedef CSMESTIMATEPROGRESSBAR *PCSMESTIMATEPROGRESSBAR; typedef VOID(WINAPI CSMTERMINATE)(VOID); typedef CSMTERMINATE * PCSMTERMINATE; typedef BOOL(WINAPI OPMINITIALIZE)(PMIG_LOGCALLBACK LogCallback, PVOID Reserved); typedef OPMINITIALIZE * POPMINITIALIZE; typedef VOID(WINAPI OPMTERMINATE)(VOID); typedef OPMTERMINATE * POPMTERMINATE; typedef struct { UINT Version; PDGMINITIALIZE DgmInitialize; PDGMQUEUEENUMERATION DgmQueueEnumeration; PDGMQUEUEHIGHPRIORITYENUMERATION DgmQueueHighPriorityEnumeration; PDGMTERMINATE DgmTerminate; PDAMINITIALIZE DamInitialize; PDAMEXECUTE DamExecute; PDAMESTIMATEPROGRESSBAR DamEstimateProgressBar; PDAMTERMINATE DamTerminate; PCSMINITIALIZE CsmInitialize; PCSMEXECUTE CsmExecute; PCSMESTIMATEPROGRESSBAR CsmEstimateProgressBar; PCSMTERMINATE CsmTerminate; POPMINITIALIZE OpmInitialize; POPMTERMINATE OpmTerminate; } DESTINATION_ENTRYPOINTS, *PDESTINATION_ENTRYPOINTS; // // callback prototypes // typedef UINT (WINAPI MIG_OBJECTENUMCALLBACK)(PCMIG_OBJECTENUMDATA Data, ULONG_PTR CallerArg); typedef MIG_OBJECTENUMCALLBACK *PMIG_OBJECTENUMCALLBACK; typedef BOOL (WINAPI MIG_PREENUMCALLBACK)(VOID); typedef MIG_PREENUMCALLBACK *PMIG_PREENUMCALLBACK; typedef BOOL (WINAPI MIG_POSTENUMCALLBACK)(VOID); typedef MIG_POSTENUMCALLBACK *PMIG_POSTENUMCALLBACK; typedef BOOL (WINAPI MIG_DYNAMICEXCLUSIONCALLBACK)( MIG_OBJECTTYPEID ObjectTypeId, MIG_OBJECTSTRINGHANDLE EncodedObjectName, ULONG_PTR Arg ); typedef MIG_DYNAMICEXCLUSIONCALLBACK *PMIG_DYNAMICEXCLUSIONCALLBACK; typedef BOOL (WINAPI MIG_RESTORECALLBACK)(MIG_OBJECTTYPEID,MIG_OBJECTID,MIG_OBJECTSTRINGHANDLE); typedef MIG_RESTORECALLBACK *PMIG_RESTORECALLBACK; typedef BOOL (WINAPI MIG_COMPARECALLBACK)(BOOL,MIG_OBJECTTYPEID,MIG_OBJECTSTRINGHANDLE,PMIG_CONTENT,MIG_OBJECTTYPEID,MIG_OBJECTSTRINGHANDLE,PMIG_CONTENT,PBOOL,PBOOL); typedef MIG_COMPARECALLBACK *PMIG_COMPARECALLBACK; // // entry points that return module funciton addresses // typedef BOOL(WINAPI VIRTUALCOMPUTERMODULE)( IN PCTSTR ModuleId, IN OUT PVIRTUAL_COMPUTER_ENTRYPOINTS VirtualComputerEntryPoints ); typedef VIRTUALCOMPUTERMODULE *PVIRTUALCOMPUTERMODULE; typedef BOOL(WINAPI SOURCEMODULE)( IN PCTSTR ModuleId, IN OUT PSOURCE_ENTRYPOINTS SourceEntryPoints ); typedef SOURCEMODULE *PSOURCEMODULE; typedef BOOL(WINAPI DESTINATIONMODULE)( IN PCTSTR ModuleId, IN OUT PDESTINATION_ENTRYPOINTS DestinationEntryPoints ); typedef DESTINATIONMODULE *PDESTINATIONMODULE; typedef BOOL(WINAPI TYPEMODULE)( IN PCTSTR ModuleId, IN OUT PTYPE_ENTRYPOINTS TypeEntryPoints ); typedef TYPEMODULE *PTYPEMODULE; typedef BOOL(WINAPI TRANSPORTMODULE)( IN PCTSTR ModuleId, IN OUT PTRANSPORT_ENTRYPOINTS TransportEntryPoints ); typedef TRANSPORTMODULE *PTRANSPORTMODULE;