/*++ Copyright (c) 2000 Microsoft Corporation Module Name: ism.h Abstract: Base definitions for the Intermediate State Manager. Author: Jim Schmidt (jimschm) 15-Nov-1999 Revision History: --*/ #pragma once #ifdef __cplusplus extern "C" { #endif // // Strings // #define S_DATATYPE TEXT("Data") #define S_REGISTRYTYPE TEXT("Registry") #define S_INITYPE TEXT("IniFile") #define S_FILETYPE TEXT("File") #define S_VER_HIVEMAPPEDLOCATION TEXT("HiveMappedLocation") // // Constants // // Priorities for the type IDs. This gives the order of // processing and enumeration inside the engine. #define PRIORITY_DATA 0x00000100 #define PRIORITY_REGISTRY 0x00000200 #define PRIORITY_INI 0x00000300 #define PRIORITY_FILE 0x00000400 #define PRIORITY_LOWEST 0xFFFFFFFF // // If either DBG or DEBUG defined, use debug mode // #if defined(DBG) && !defined(DEBUG) #define DEBUG #endif #if defined(DEBUG) && !defined(DBG) #define DBG #endif #ifdef DEBUG #define TRACKING_DEF , PCSTR File, UINT Line #define TRACKING_CALL ,__FILE__,__LINE__ #define TRACKING_INLINE_CALL ,File,Line #else #define TRACKING_DEF #define TRACKING_CALL #define TRACKING_INLINE_CALL #endif // // callback constants // #define CALLBACK_ENUM_CONTINUE 0x00000000 #define CALLBACK_SKIP_LEAVES 0x00000001 #define CALLBACK_SKIP_NODES 0x00000002 #define CALLBACK_SKIP_TREE 0x00000004 #define CALLBACK_SKIP_REMAINING_TREE CALLBACK_SKIP_TREE #define CALLBACK_THIS_TREE_ONLY 0x00000008 #define CALLBACK_DONE_ENUMERATING 0x00000010 #define CALLBACK_ERROR 0x80000000 #define ALL_PATTERN ((PMIG_SEGMENTS) 1) // // used by rollback and delayed operations mechanism // #define JRNOP_CREATE 0x00000001 #define JRNOP_DELETE 0x00000002 #define JRNOP_REPLACE 0x00000003 #define ZEROED #define CALLER_INITIALIZED // // component constants // #define MASTERGROUP_NONE 0 #define MASTERGROUP_SCRIPT 1 #define MASTERGROUP_FILES_AND_FOLDERS 2 #define MASTERGROUP_USER 3 #define MASTERGROUP_APP 4 #define MASTERGROUP_SYSTEM 5 #define MASTERGROUP_ALL 255 // // IsmQueueEnumeration constants // #define QUEUE_MAKE_APPLY 0x0001 #define QUEUE_MAKE_PERSISTENT 0x0002 #define QUEUE_OVERWRITE_DEST 0x0004 #define QUEUE_DONT_OVERWRITE_DEST 0x0008 #define QUEUE_MAKE_NONCRITICAL 0x0010 // // execute constants // #define MIG_EXECUTE_PREPROCESS 0x0001 #define MIG_EXECUTE_REFRESH 0x0002 #define MIG_EXECUTE_POSTPROCESS 0x0003 #define ISMMESSAGE_EXECUTE_PREPROCESS 0x0001 #define ISMMESSAGE_EXECUTE_REFRESH 0x0002 #define ISMMESSAGE_EXECUTE_POSTPROCESS 0x0003 #define ISMMESSAGE_EXECUTE_ROLLBACK 0x0004 #define ISMMESSAGE_APP_INFO 0x0005 #define ISMMESSAGE_APP_INFO_NOW 0x0006 // // Macros // // None // // Types // // // misc types // typedef enum { CONTENTTYPE_ANY = 0, CONTENTTYPE_MEMORY, CONTENTTYPE_FILE, CONTENTTYPE_DETAILS_ONLY } MIG_CONTENTTYPE; #define PLATFORM_CURRENT 0x00000000 #define PLATFORM_SOURCE 0x10000000 #define PLATFORM_DESTINATION 0x20000000 #define PLATFORM_MASK 0xF0000000 #define TYPE_MASK 0x0FFFFFFF #define COMPONENTENUM_ALIASES 0x00000001 #define COMPONENTENUM_ENABLED 0x00000002 #define COMPONENTENUM_DISABLED 0x00000004 #define COMPONENTENUM_PREFERRED_ONLY 0x00000008 #define COMPONENTENUM_NON_PREFERRED_ONLY 0x00000010 #define COMPONENTENUM_ALL_COMPONENTS (COMPONENTENUM_ENABLED|COMPONENTENUM_DISABLED) #define COMPONENTENUM_ALL_ALIASES (COMPONENTENUM_ALIASES|COMPONENTENUM_ENABLED|COMPONENTENUM_DISABLED) #define EXECUTETYPE_VIRTUALCOMPUTER_PARSING 0x00000001 #define EXECUTETYPE_VIRTUALCOMPUTER 0x00000002 #define EXECUTETYPE_EXECUTESOURCE_PARSING 0x00000003 #define EXECUTETYPE_EXECUTESOURCE 0x00000004 #define EXECUTETYPE_EXECUTEDESTINATION 0x00000005 #define EXECUTETYPE_DELAYEDOPERATIONS 0x00000006 #define EXECUTETYPE_DELAYEDOPERATIONSCLEANUP 0x00000007 #define TRANSPORTTYPE_LIGHT 0x00000001 #define TRANSPORTTYPE_FULL 0x00000002 #define MIG_DATA_TYPE IsmGetObjectTypeId(S_DATATYPE) #define MIG_REGISTRY_TYPE IsmGetObjectTypeId(S_REGISTRYTYPE) #define MIG_INI_TYPE IsmGetObjectTypeId(S_INITYPE) #define MIG_FILE_TYPE IsmGetObjectTypeId(S_FILETYPE) typedef enum { MIG_TRANSPORT_PHASE = 1, MIG_HIGHPRIORITYQUEUE_PHASE, MIG_HIGHPRIORITYESTIMATE_PHASE, MIG_HIGHPRIORITYGATHER_PHASE, MIG_GATHERQUEUE_PHASE, MIG_GATHERESTIMATE_PHASE, MIG_GATHER_PHASE, MIG_ANALYSIS_PHASE, MIG_APPLY_PHASE } MIG_PROGRESSPHASE; typedef enum { MIG_BEGIN_PHASE = 1, MIG_IN_PHASE, MIG_END_PHASE } MIG_PROGRESSSTATE; typedef struct { DWORD TotalObjects; DWORD PersistentObjects; DWORD ApplyObjects; } MIG_OBJECTCOUNT, *PMIG_OBJECTCOUNT; #ifndef PCVOID typedef const void * PCVOID; #endif #ifndef PCBYTE typedef const unsigned char * PCBYTE; #endif typedef unsigned long MIG_ATTRIBUTEID; typedef unsigned int MIG_PROPERTYID; typedef unsigned long MIG_OBJECTTYPEID; typedef unsigned long MIG_OPERATIONID; typedef signed int MIG_OBJECTID; typedef unsigned int MIG_PROPERTYDATAID; typedef unsigned int MIG_DATAHANDLE; typedef PCTSTR MIG_OBJECTSTRINGHANDLE; typedef unsigned int MIG_PLATFORMTYPEID; typedef LONG_PTR MIG_TRANSPORTID; typedef signed long MIG_TRANSPORTSTORAGEID; typedef unsigned long MIG_TRANSPORTTYPE; typedef unsigned long MIG_TRANSPORTCAPABILITIES; typedef signed short MIG_PROGRESSSLICEID; typedef unsigned int MIG_EXECUTETYPEID; typedef PCVOID MIG_PARSEDPATTERN; typedef MIG_TRANSPORTTYPE *PMIG_TRANSPORTTYPE; typedef MIG_TRANSPORTCAPABILITIES *PMIG_TRANSPORTCAPABILITIES; typedef enum { PHYSICAL_OBJECT = 1, ISM_OBJECT } MIG_LOCATION_TYPE; typedef enum { CR_FAILED = 1, CR_SOURCE_DOES_NOT_EXIST, CR_DESTINATION_EXISTS } MIG_COMPARERESULT; // // object values // typedef struct { UINT DetailsSize; PCVOID DetailsData; } MIG_DETAILS, *PMIG_DETAILS; typedef struct { MIG_OBJECTTYPEID ObjectTypeId; BOOL ContentInFile; union { struct _TAG_FILECONTENT { PCTSTR ContentPath; LONGLONG ContentSize; } FileContent; struct _TAG_MEMORYCONTENT { PCBYTE ContentBytes; UINT ContentSize; } MemoryContent; }; MIG_DETAILS Details; // internal members union { PVOID EtmHandle; PVOID TransHandle; }; PVOID IsmHandle; } MIG_CONTENT, *PMIG_CONTENT; typedef MIG_CONTENT const * PCMIG_CONTENT; typedef struct { PCTSTR Segment; BOOL IsPattern; } MIG_SEGMENTS, *PMIG_SEGMENTS; // // transport module structs and function types // typedef struct { MIG_TRANSPORTID TransportId; MIG_TRANSPORTSTORAGEID SupportedStorageId; MIG_TRANSPORTTYPE TransportType; MIG_TRANSPORTCAPABILITIES Capabilities; PCTSTR FriendlyDescription; PVOID Handle; } MIG_TRANSPORTENUM, *PMIG_TRANSPORTENUM; // // type id enum // typedef struct { MIG_OBJECTTYPEID ObjectTypeId; LONG_PTR EnumHandle; } MIG_OBJECTTYPEIDENUM, *PMIG_OBJECTTYPEIDENUM; // // object enum // typedef struct { MIG_OBJECTTYPEID ObjectTypeId; MIG_OBJECTSTRINGHANDLE ObjectName; PCTSTR NativeObjectName; PCTSTR ObjectNode; PCTSTR ObjectLeaf; UINT Level; UINT SubLevel; BOOL IsLeaf; BOOL IsNode; MIG_DETAILS Details; LONG_PTR EtmHandle; PVOID IsmHandle; } MIG_TYPEOBJECTENUM, *PMIG_TYPEOBJECTENUM; typedef struct { MIG_OBJECTTYPEID ObjectTypeId; MIG_OBJECTSTRINGHANDLE ObjectName; PCTSTR NativeObjectName; PCTSTR ObjectNode; PCTSTR ObjectLeaf; UINT Level; UINT SubLevel; BOOL IsLeaf; BOOL IsNode; MIG_DETAILS Details; } MIG_OBJECTENUMDATA, *PMIG_OBJECTENUMDATA; typedef const MIG_OBJECTENUMDATA * PCMIG_OBJECTENUMDATA; typedef struct { MIG_OBJECTTYPEID ObjectTypeId; MIG_OBJECTSTRINGHANDLE ObjectName; MIG_OBJECTID ObjectId; // 0 == physical object PVOID Handle; // used by enum routines } MIG_OBJECT_ENUM, *PMIG_OBJECT_ENUM; // // properties // typedef enum { BLOBTYPE_STRING = 1, BLOBTYPE_BINARY = 2 } MIG_BLOBTYPE, *PMIG_BLOBTYPE; typedef struct { MIG_BLOBTYPE Type; union { PCTSTR String; struct { PCBYTE BinaryData; UINT BinarySize; }; }; } MIG_BLOB, *PMIG_BLOB; typedef const MIG_BLOB * PCMIG_BLOB; typedef struct { MIG_PROPERTYID PropertyId; MIG_PROPERTYDATAID PropertyDataId; BOOL Private; PVOID Handle; // used by enum routines } MIG_OBJECTPROPERTY_ENUM, *PMIG_OBJECTPROPERTY_ENUM; typedef struct { MIG_OBJECTTYPEID ObjectTypeId; MIG_OBJECTSTRINGHANDLE ObjectName; MIG_OBJECTID ObjectId; PVOID Handle; // used by enum routines } MIG_OBJECTWITHPROPERTY_ENUM, *PMIG_OBJECTWITHPROPERTY_ENUM; // // attributes // typedef struct { MIG_ATTRIBUTEID AttributeId; BOOL Private; PVOID Handle; // used by enum routines } MIG_OBJECTATTRIBUTE_ENUM, *PMIG_OBJECTATTRIBUTE_ENUM; typedef struct { MIG_OBJECTTYPEID ObjectTypeId; MIG_OBJECTSTRINGHANDLE ObjectName; MIG_OBJECTID ObjectId; PVOID Handle; // used by enum routines } MIG_OBJECTWITHATTRIBUTE_ENUM, *PMIG_OBJECTWITHATTRIBUTE_ENUM; // // operations // typedef struct { MIG_OPERATIONID OperationId; PCMIG_BLOB SourceData; OPTIONAL PCMIG_BLOB DestinationData; OPTIONAL BOOL Private; PVOID Handle; // used by enum routines } MIG_OBJECTOPERATION_ENUM, *PMIG_OBJECTOPERATION_ENUM; typedef struct { MIG_OBJECTSTRINGHANDLE ObjectName; MIG_OBJECTTYPEID ObjectTypeId; MIG_OBJECTID ObjectId; MIG_OPERATIONID OperationId; PCMIG_BLOB SourceData; OPTIONAL PCMIG_BLOB DestinationData; OPTIONAL PVOID Handle; // used by enum routines } MIG_OBJECTWITHOPERATION_ENUM, *PMIG_OBJECTWITHOPERATION_ENUM; typedef struct { MIG_OBJECTTYPEID ObjectTypeId; MIG_OBJECTSTRINGHANDLE ObjectName; } MIG_OBJECT, *PMIG_OBJECT; typedef const MIG_OBJECT * PCMIG_OBJECT; typedef struct { MIG_OBJECT OriginalObject; MIG_OBJECT CurrentObject; BOOL FilterTreeChangesOnly; BOOL Deleted; BOOL Replaced; } MIG_FILTERINPUT, *PMIG_FILTERINPUT; typedef MIG_FILTERINPUT const * PCMIG_FILTERINPUT; typedef struct { MIG_OBJECT NewObject; BOOL Deleted; BOOL Replaced; } MIG_FILTEROUTPUT, *PMIG_FILTEROUTPUT; // // environment & message passing types // typedef enum { ENVENTRY_NONE = 0, ENVENTRY_STRING, ENVENTRY_MULTISZ, ENVENTRY_CALLBACK, ENVENTRY_BINARY } ENVENTRY_TYPE, *PENVENTRY_TYPE; typedef BOOL (WINAPI ENVENTRYCALLBACK)(PCTSTR,PTSTR,UINT,PUINT,PCTSTR); typedef ENVENTRYCALLBACK *PENVENTRYCALLBACK; typedef struct { ENVENTRY_TYPE Type; union { PCTSTR EnvString; PCTSTR MultiSz; struct { PCBYTE EnvBinaryData; UINT EnvBinaryDataSize; }; PENVENTRYCALLBACK EnvCallback; }; } ENVENTRY_STRUCT, *PENVENTRY_STRUCT; typedef struct { PCTSTR UserName; PCTSTR DomainName; PCTSTR AccountName; PCTSTR UserProfileRoot; PSID UserSid; } MIG_USERDATA, *PMIG_USERDATA; typedef struct { MIG_PROGRESSPHASE Phase; UINT SubPhase; MIG_OBJECTTYPEID ObjectTypeId; MIG_OBJECTSTRINGHANDLE ObjectName; PCTSTR Text; } MIG_APPINFO, *PMIG_APPINFO; // // components // typedef struct { PCTSTR ComponentString; PCTSTR LocalizedAlias; UINT Instance; UINT GroupId; BOOL Preferred; BOOL UserSupplied; BOOL Enabled; UINT MasterGroup; BOOL SkipToNextComponent; // set this to TRUE to cause enumeration to continue to next component // (instead of next alias of same component) PVOID Handle; } MIG_COMPONENT_ENUM, *PMIG_COMPONENT_ENUM; // // Version // #define OSTYPE_WINDOWS9X 1 #define OSTYPE_WINDOWS9X_STR TEXT("9X") #define OSTYPE_WINDOWSNT 2 #define OSTYPE_WINDOWSNT_STR TEXT("NT") #define OSMAJOR_WIN95 1 #define OSMAJOR_WIN95_STR TEXT("Windows 95") #define OSMAJOR_WIN95OSR2 2 #define OSMAJOR_WIN95OSR2_STR TEXT("Windows 95 - OSR2") #define OSMAJOR_WIN98 3 #define OSMAJOR_WIN98_STR TEXT("Windows 98") #define OSMAJOR_WINME 4 #define OSMAJOR_WINME_STR TEXT("Windows Millennium") #define OSMAJOR_WINNT4 1 #define OSMAJOR_WINNT4_STR TEXT("Windows NT4") #define OSMAJOR_WINNT5 2 #define OSMAJOR_WINNT5_STR TEXT("Windows 2000") #define OSMINOR_GOLD 0 #define OSMINOR_GOLD_STR TEXT("Gold") #define OSMINOR_WIN95OSR21 1 #define OSMINOR_WIN95OSR21_STR TEXT("1") #define OSMINOR_WIN95OSR25 2 #define OSMINOR_WIN95OSR25_STR TEXT("5") #define OSMINOR_WIN98SE 1 #define OSMINOR_WIN98SE_STR TEXT("Second Edition") #define OSMINOR_WINNT51 1 #define OSMINOR_WINNT51_STR TEXT("XP") typedef struct { UINT OsType; PCTSTR OsTypeName; UINT OsMajorVersion; PCTSTR OsMajorVersionName; UINT OsMinorVersion; PCTSTR OsMinorVersionName; UINT OsBuildNumber; } MIG_OSVERSIONINFO, *PMIG_OSVERSIONINFO; #include "ismproc.h" // // Globals // // None // // Macro expansion list // // None // // Macro expansion definition // // None // // Public function declarations // // // app layer // BOOL WINAPI IsmInitialize ( IN PCTSTR InfPath, IN PMESSAGECALLBACK MessageCallback, OPTIONAL IN PMIG_LOGCALLBACK LogCallback ); BOOL WINAPI IsmSetPlatform ( IN MIG_PLATFORMTYPEID Platform ); BOOL WINAPI IsmRegisterProgressBarCallback ( IN PPROGRESSBARFN ProgressBarFn, IN ULONG_PTR Arg ); BOOL WINAPI IsmStartEtmModules ( VOID ); BOOL WINAPI IsmStartTransport ( VOID ); BOOL WINAPI IsmEnumFirstTransport ( OUT PMIG_TRANSPORTENUM Enum, IN MIG_TRANSPORTSTORAGEID DesiredType OPTIONAL ); BOOL WINAPI IsmEnumNextTransport ( IN OUT PMIG_TRANSPORTENUM Enum ); VOID WINAPI IsmAbortTransportEnum ( IN PMIG_TRANSPORTENUM Enum ); MIG_TRANSPORTID WINAPI IsmSelectTransport ( IN MIG_TRANSPORTSTORAGEID DesiredStorageId, IN MIG_TRANSPORTTYPE TransportType, IN MIG_TRANSPORTCAPABILITIES RequiredCapabilities ); BOOL WINAPI IsmSetTransportStorage ( IN MIG_PLATFORMTYPEID Platform, IN MIG_TRANSPORTID TransportId, IN MIG_TRANSPORTSTORAGEID StorageId, IN MIG_TRANSPORTCAPABILITIES RequiredCapabilities, IN PCTSTR StoragePath, OUT PBOOL StoragePathIsValid, OPTIONAL OUT PBOOL ImageExistsInStorage OPTIONAL ); BOOL WINAPI IsmPerformParsing ( VOID ); BOOL WINAPI IsmExecute ( IN MIG_EXECUTETYPEID ExecuteType ); BOOL WINAPI IsmLoad ( VOID ); BOOL WINAPI IsmResumeLoad ( VOID ); BOOL WINAPI IsmSave ( VOID ); BOOL WINAPI IsmResumeSave ( VOID ); VOID WINAPI IsmTerminate ( VOID ); // // component apis // BOOL WINAPI IsmAddComponentAlias ( IN PCTSTR ComponentString, OPTIONAL IN UINT MasterGroup, IN PCTSTR LocalizedAlias, IN UINT ComponentGroupId, IN BOOL UserSupplied ); BOOL WINAPI IsmSelectPreferredAlias ( IN PCTSTR ComponentString, IN PCTSTR LocalizedAlias, OPTIONAL IN UINT ComponentGroupId OPTIONAL ); BOOL WINAPI IsmSelectComponent ( IN PCTSTR ComponentOrAlias, IN UINT ComponentGroupId, OPTIONAL IN BOOL Enable ); BOOL WINAPI IsmSelectMasterGroup ( IN UINT MasterGroup, IN BOOL Enable ); BOOL WINAPI IsmEnumFirstComponent ( OUT PMIG_COMPONENT_ENUM EnumPtr, IN DWORD ComponentEnumFlags, IN UINT GroupIdFilter OPTIONAL ); BOOL WINAPI IsmEnumNextComponent ( IN OUT PMIG_COMPONENT_ENUM EnumPtr ); VOID WINAPI IsmAbortComponentEnum ( IN PMIG_COMPONENT_ENUM EnumPtr ZEROED ); VOID WINAPI IsmRemoveAllUserSuppliedComponents ( VOID ); BOOL WINAPI IsmIsComponentSelected ( IN PCTSTR ComponentOrAlias, IN UINT ComponentGroupId OPTIONAL ); // // module support routines // PVOID WINAPI TrackedIsmGetMemory ( IN UINT Size TRACKING_DEF ); #define IsmGetMemory(s) TrackedIsmGetMemory(s TRACKING_CALL) PCTSTR WINAPI TrackedIsmDuplicateString ( IN PCTSTR String TRACKING_DEF ); #define IsmDuplicateString(s) TrackedIsmDuplicateString(s TRACKING_CALL) BOOL WINAPI IsmReleaseMemory ( IN PCVOID Memory ); MIG_PLATFORMTYPEID WINAPI IsmGetRealPlatform ( VOID ); BOOL WINAPI IsmCreateUser ( IN PCTSTR UserName, IN PCTSTR Domain ); MIG_OBJECTSTRINGHANDLE TrackedIsmGetLongName ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName TRACKING_DEF ); #define IsmGetLongName(t,n) TrackedIsmGetLongName(t,n TRACKING_CALL) // // type module interface // MIG_OBJECTTYPEID WINAPI IsmRegisterObjectType ( IN PCTSTR ObjectTypeName, IN BOOL CanBeRestored, IN BOOL ReadOnly, IN PTYPE_REGISTER TypeRegisterData ); BOOL WINAPI IsmEnumFirstObjectTypeId ( OUT PMIG_OBJECTTYPEIDENUM ObjectTypeIdEnum ); BOOL WINAPI IsmEnumNextObjectTypeId ( IN OUT PMIG_OBJECTTYPEIDENUM ObjectTypeIdEnum ); VOID WINAPI IsmAbortObjectTypeIdEnum ( IN OUT PMIG_OBJECTTYPEIDENUM ObjectTypeIdEnum ); PCTSTR WINAPI IsmConvertObjectToMultiSz ( IN MIG_OBJECTSTRINGHANDLE ObjectName, IN PMIG_CONTENT ObjectContent ); BOOL WINAPI IsmConvertMultiSzToObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN PCTSTR ObjectMultiSz, OUT MIG_OBJECTSTRINGHANDLE *ObjectName, OUT PMIG_CONTENT ObjectContent OPTIONAL ); PCTSTR WINAPI TrackedIsmGetNativeObjectName ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName TRACKING_DEF ); #define IsmGetNativeObjectName(t,n) TrackedIsmGetNativeObjectName(t,n TRACKING_CALL) BOOL IsmRegisterPhysicalAcquireHook ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectPattern, IN PMIG_PHYSICALACQUIREHOOK HookCallback, IN PMIG_PHYSICALACQUIREFREE FreeCallback, OPTIONAL IN ULONG_PTR CallbackArg, OPTIONAL IN PCTSTR FunctionId OPTIONAL ); BOOL IsmProhibitPhysicalEnum ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectPattern, IN PMIG_PHYSICALENUMCHECK EnumCheckCallback, OPTIONAL IN ULONG_PTR CallbackArg, OPTIONAL IN PCTSTR FunctionId OPTIONAL ); BOOL IsmAddToPhysicalEnum ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectBase, IN PMIG_PHYSICALENUMADD EnumAddCallback, IN ULONG_PTR CallbackArg OPTIONAL ); // // environment & messaging // BOOL WINAPI IsmSetEnvironmentValue ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName, IN PENVENTRY_STRUCT VariableData OPTIONAL ); BOOL WINAPI IsmSetEnvironmentString ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName, IN PCTSTR VariableValue ); BOOL WINAPI IsmSetEnvironmentMultiSz ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName, IN PCTSTR VariableValue ); BOOL WINAPI IsmAppendEnvironmentString ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName, IN PCTSTR VariableValue ); BOOL WINAPI IsmAppendEnvironmentMultiSz ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName, IN PCTSTR VariableValue ); BOOL WINAPI IsmSetEnvironmentCallback ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName, IN PENVENTRYCALLBACK VariableCallback ); BOOL WINAPI IsmSetEnvironmentData ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName, IN PCBYTE VariableData, IN UINT VariableDataSize ); BOOL WINAPI IsmSetEnvironmentFlag ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName ); BOOL WINAPI IsmGetEnvironmentValue ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName, OUT PBYTE Data, OPTIONAL IN UINT DataSize, OUT PUINT DataSizeNeeded, OPTIONAL OUT PENVENTRY_TYPE DataType OPTIONAL ); BOOL WINAPI IsmGetEnvironmentString ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName, OUT PTSTR VariableValue, OPTIONAL IN UINT DataSize, OUT PUINT DataSizeNeeded OPTIONAL ); #define IsmCopyEnvironmentString(p,g,n,v) IsmGetEnvironmentString(p,g,n,v,sizeof(v)/sizeof((v)[0]),NULL) BOOL WINAPI IsmGetEnvironmentMultiSz ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName, OUT PTSTR VariableValue, OPTIONAL IN UINT DataSize, OUT PUINT DataSizeNeeded OPTIONAL ); BOOL WINAPI IsmGetEnvironmentCallback ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName, OUT PENVENTRYCALLBACK *VariableCallback OPTIONAL ); BOOL WINAPI IsmGetEnvironmentData ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName, OUT PBYTE VariableData, OPTIONAL IN UINT DataSize, OUT PUINT DataSizeNeeded OPTIONAL ); BOOL WINAPI IsmIsEnvironmentFlagSet ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName ); BOOL WINAPI IsmDeleteEnvironmentVariable ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR VariableName ); PCTSTR WINAPI TrackedIsmExpandEnvironmentString ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR SrcString, IN PCTSTR Context TRACKING_DEF ); #define IsmExpandEnvironmentString(p,g,s,c) TrackedIsmExpandEnvironmentString(p,g,s,c TRACKING_CALL) PCTSTR WINAPI TrackedIsmCompressEnvironmentString ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Group, OPTIONAL IN PCTSTR SrcString, IN PCTSTR Context, IN BOOL MustExistOnOtherPlatform TRACKING_DEF ); #define IsmCompressEnvironmentString(p,g,s,c,m) TrackedIsmCompressEnvironmentString(p,g,s,c,m TRACKING_CALL) BOOL WINAPI IsmGetTransportVariable ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Section, IN PCTSTR Key, OUT PTSTR KeyData, OPTIONAL IN UINT KeyDataBufferSizeInBytes ); BOOL WINAPI IsmSetTransportVariable ( IN MIG_PLATFORMTYPEID Platform, IN PCTSTR Section, IN PCTSTR Key, IN PCTSTR KeyData ); ULONG_PTR WINAPI IsmSendMessageToApp ( UINT Message, ULONG_PTR Arg ); MIG_PROGRESSSLICEID WINAPI IsmRegisterProgressSlice ( IN UINT Ticks, IN UINT TimeEstimateInSeconds ); BOOL WINAPI IsmTickProgressBar ( IN MIG_PROGRESSSLICEID SliceId, IN UINT TickDelta OPTIONAL ); #define IsmCheckCancel() (IsmTickProgressBar(0,0)==FALSE) BOOL WINAPI IsmCurrentlyExecuting ( VOID ); VOID WINAPI IsmSetCancel ( VOID ); // // encoded strings support // MIG_OBJECTSTRINGHANDLE WINAPI TrackedIsmCreateObjectHandle ( IN PCTSTR Node, IN PCTSTR Leaf TRACKING_DEF ); #define IsmCreateObjectHandle(n,l) TrackedIsmCreateObjectHandle(n,l TRACKING_CALL) BOOL WINAPI TrackedIsmCreateObjectStringsFromHandleEx ( IN MIG_OBJECTSTRINGHANDLE Handle, OUT PCTSTR *Node, OPTIONAL OUT PCTSTR *Leaf, OPTIONAL IN BOOL DoNotDecode TRACKING_DEF ); #define IsmCreateObjectStringsFromHandleEx(h,n,l,d) TrackedIsmCreateObjectStringsFromHandleEx(h,n,l,d TRACKING_CALL) #define IsmCreateObjectStringsFromHandle(handle,node,leaf) IsmCreateObjectStringsFromHandleEx(handle,node,leaf,FALSE) BOOL WINAPI IsmIsObjectHandleNodeOnly ( IN MIG_OBJECTSTRINGHANDLE Handle ); BOOL WINAPI IsmIsObjectHandleLeafOnly ( IN MIG_OBJECTSTRINGHANDLE Handle ); VOID WINAPI IsmDestroyObjectString ( IN PCTSTR String ); VOID WINAPI IsmDestroyObjectHandle ( IN MIG_OBJECTSTRINGHANDLE Handle ); MIG_OBJECTSTRINGHANDLE WINAPI TrackedIsmCreateObjectPattern ( IN PMIG_SEGMENTS NodeSegments, OPTIONAL IN UINT NodeSegmentsNr, IN PMIG_SEGMENTS LeafSegments, OPTIONAL IN UINT LeafSegmentsNr TRACKING_DEF ); #define IsmCreateObjectPattern(node,ncnt,leaf,lcnt) TrackedIsmCreateObjectPattern(node,ncnt,leaf,lcnt TRACKING_CALL) MIG_OBJECTSTRINGHANDLE WINAPI TrackedIsmCreateSimpleObjectPattern ( IN PCTSTR BaseNode, OPTIONAL IN BOOL EnumTree, IN PCTSTR Leaf, OPTIONAL IN BOOL LeafIsPattern TRACKING_DEF ); #define IsmCreateSimpleObjectPattern(base,tree,leaf,pat) TrackedIsmCreateSimpleObjectPattern(base,tree,leaf,pat TRACKING_CALL) MIG_PARSEDPATTERN IsmCreateParsedPattern ( IN MIG_OBJECTSTRINGHANDLE EncodedObject ); VOID IsmDestroyParsedPattern ( IN MIG_PARSEDPATTERN ParsedPattern ); BOOL WINAPI IsmParsedPatternMatchEx ( IN MIG_PARSEDPATTERN ParsedPattern, IN MIG_OBJECTTYPEID ObjectTypeId, OPTIONAL IN PCTSTR Node, OPTIONAL IN PCTSTR Leaf OPTIONAL ); BOOL WINAPI IsmParsedPatternMatch ( IN MIG_PARSEDPATTERN ParsedPattern, IN MIG_OBJECTTYPEID ObjectTypeId, OPTIONAL IN MIG_OBJECTSTRINGHANDLE ObjectName ); // // objects // MIG_OBJECTID WINAPI IsmGetObjectIdFromName ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName, IN BOOL MustExist ); VOID WINAPI IsmLockObjectId ( IN MIG_OBJECTID ObjectId ); VOID WINAPI IsmLockObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); MIG_OBJECTSTRINGHANDLE WINAPI IsmFilterObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, OUT MIG_OBJECTTYPEID *NewObjectTypeId, OPTIONAL OUT PBOOL ObjectDeleted, OPTIONAL OUT PBOOL ObjectReplaced OPTIONAL ); BOOL WINAPI IsmEnumFirstSourceObjectEx ( OUT PMIG_OBJECT_ENUM ObjectEnum, IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectPattern, IN BOOL EnumerateVirtualObjects ); #define IsmEnumFirstSourceObject(e,t,p) IsmEnumFirstSourceObjectEx(e,t,p,FALSE) BOOL WINAPI IsmEnumFirstDestinationObjectEx ( OUT PMIG_OBJECT_ENUM ObjectEnum, IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectPattern, IN BOOL EnumerateVirtualObjects ); #define IsmEnumFirstDestinationObject(e,t,p) IsmEnumFirstDestinationObjectEx(e,t,p,FALSE) BOOL WINAPI IsmEnumNextObject ( IN OUT PMIG_OBJECT_ENUM ObjectEnum ); VOID WINAPI IsmAbortObjectEnum ( IN PMIG_OBJECT_ENUM ObjectEnum ); // // persistence, apply, AbandonOnCollision, and NonCritical flags // BOOL WINAPI IsmMakePersistentObjectId ( IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmMakePersistentObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmClearPersistenceOnObjectId ( IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmClearPersistenceOnObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmIsPersistentObjectId ( IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmIsPersistentObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmEnumFirstPersistentObject ( OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr ); BOOL WINAPI IsmEnumNextPersistentObject ( IN OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr ); VOID WINAPI IsmAbortPersistentObjectEnum ( IN PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr ); BOOL WINAPI IsmMakeApplyObjectId ( IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmMakeApplyObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmClearApplyOnObjectId ( IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmClearApplyOnObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmIsApplyObjectId ( IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmIsApplyObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmEnumFirstApplyObject ( OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr ); BOOL WINAPI IsmEnumNextApplyObject ( IN OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr ); VOID WINAPI IsmAbortApplyObjectEnum ( IN PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr ); BOOL WINAPI IsmAbandonObjectIdOnCollision ( IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmAbandonObjectOnCollision ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmClearAbandonObjectIdOnCollision ( IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmClearAbandonObjectOnCollision ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmIsObjectIdAbandonedOnCollision ( IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmIsObjectAbandonedOnCollision ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmMakeNonCriticalObjectId ( IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmMakeNonCriticalObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmClearNonCriticalFlagOnObjectId ( IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmClearNonCriticalFlagOnObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmIsNonCriticalObjectId ( IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmIsNonCriticalObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); // // attributes // MIG_ATTRIBUTEID WINAPI IsmRegisterAttribute ( IN PCTSTR AttributeName, IN BOOL Private ); BOOL WINAPI IsmGetAttributeName ( IN MIG_ATTRIBUTEID AttributeId, OUT PTSTR AttributeName, OPTIONAL IN UINT AttributeNameBufChars, OUT PBOOL Private, OPTIONAL OUT PBOOL BelongsToMe, OPTIONAL OUT PUINT ObjectReferences OPTIONAL ); MIG_ATTRIBUTEID WINAPI IsmGetAttributeGroup ( IN MIG_ATTRIBUTEID AttributeId ); BOOL WINAPI IsmSetAttributeOnObjectId ( IN MIG_OBJECTID ObjectId, IN MIG_ATTRIBUTEID AttributeId ); BOOL WINAPI IsmSetAttributeOnObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName, IN MIG_ATTRIBUTEID AttributeId ); VOID WINAPI IsmLockAttribute ( IN MIG_OBJECTID ObjectId, IN MIG_ATTRIBUTEID AttributeId ); BOOL WINAPI IsmClearAttributeOnObjectId ( IN MIG_OBJECTID ObjectId, IN MIG_ATTRIBUTEID AttributeId ); BOOL WINAPI IsmClearAttributeOnObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName, IN MIG_ATTRIBUTEID AttributeId ); BOOL WINAPI IsmIsAttributeSetOnObjectId ( IN MIG_OBJECTID ObjectId, IN MIG_ATTRIBUTEID AttributeId ); BOOL WINAPI IsmIsAttributeSetOnObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName, IN MIG_ATTRIBUTEID AttributeId ); BOOL WINAPI IsmEnumFirstObjectAttributeById ( OUT PMIG_OBJECTATTRIBUTE_ENUM EnumPtr, IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmEnumFirstObjectAttribute ( OUT PMIG_OBJECTATTRIBUTE_ENUM EnumPtr, IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmEnumNextObjectAttribute ( IN OUT PMIG_OBJECTATTRIBUTE_ENUM EnumPtr ); VOID WINAPI IsmAbortObjectAttributeEnum ( IN OUT PMIG_OBJECTATTRIBUTE_ENUM EnumPtr ); BOOL WINAPI IsmEnumFirstObjectWithAttribute ( OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr, IN MIG_ATTRIBUTEID AttributeId ); BOOL WINAPI IsmEnumNextObjectWithAttribute ( IN OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr ); VOID WINAPI IsmAbortObjectWithAttributeEnum ( IN OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr ); // // properties // MIG_PROPERTYID WINAPI IsmRegisterProperty ( IN PCTSTR PropertyName, IN BOOL Private ); BOOL WINAPI IsmGetPropertyName ( IN MIG_PROPERTYID PropertyId, OUT PTSTR PropertyName, OPTIONAL IN UINT PropertyNameBufChars, OUT PBOOL Private, OPTIONAL OUT PBOOL BelongsToMe, OPTIONAL OUT PUINT ObjectReferences OPTIONAL ); MIG_PROPERTYID WINAPI IsmGetPropertyGroup ( IN MIG_PROPERTYID PropertyId ); MIG_PROPERTYDATAID WINAPI IsmAddPropertyToObjectId ( IN MIG_OBJECTID ObjectId, IN MIG_PROPERTYID PropertyId, IN PCMIG_BLOB Property ); MIG_PROPERTYDATAID WINAPI IsmAddPropertyToObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName, IN MIG_PROPERTYID PropertyId, IN PCMIG_BLOB Property ); MIG_PROPERTYDATAID WINAPI IsmRegisterPropertyData ( IN PCMIG_BLOB Property ); BOOL WINAPI IsmAddPropertyDataToObjectId ( IN MIG_OBJECTID ObjectId, IN MIG_PROPERTYID PropertyId, IN MIG_PROPERTYDATAID PropertyDataId ); BOOL WINAPI IsmAddPropertyDataToObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName, IN MIG_PROPERTYID PropertyId, IN MIG_PROPERTYDATAID PropertyDataId ); VOID WINAPI IsmLockProperty ( IN MIG_OBJECTID ObjectId, IN MIG_PROPERTYID PropertyId ); BOOL WINAPI IsmGetPropertyData ( IN MIG_PROPERTYDATAID PropertyDataId, OUT PBYTE Buffer, OPTIONAL IN UINT BufferSize, OUT PUINT PropertyDataSize, OPTIONAL OUT PMIG_BLOBTYPE PropertyDataType OPTIONAL ); BOOL WINAPI IsmRemovePropertyData ( IN MIG_PROPERTYDATAID PropertyDataId ); BOOL WINAPI IsmRemovePropertyFromObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName, IN MIG_PROPERTYDATAID PropertyId ); BOOL WINAPI IsmRemovePropertyFromObjectId ( IN MIG_OBJECTID ObjectId, IN MIG_PROPERTYID PropertyId ); BOOL WINAPI IsmIsPropertySetOnObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName, IN MIG_PROPERTYID PropertyId ); BOOL WINAPI IsmIsPropertySetOnObjectId ( IN MIG_OBJECTID ObjectId, IN MIG_PROPERTYID PropertyId ); BOOL WINAPI IsmEnumFirstObjectProperty ( OUT PMIG_OBJECTPROPERTY_ENUM EnumPtr, IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, IN MIG_PROPERTYID FilterProperty OPTIONAL ); BOOL WINAPI IsmEnumFirstObjectPropertyById ( OUT PMIG_OBJECTPROPERTY_ENUM EnumPtr, IN MIG_OBJECTID ObjectId, IN MIG_PROPERTYID FilterProperty OPTIONAL ); BOOL WINAPI IsmEnumNextObjectProperty ( IN OUT PMIG_OBJECTPROPERTY_ENUM EnumPtr ); VOID WINAPI IsmAbortObjectPropertyEnum ( IN OUT PMIG_OBJECTPROPERTY_ENUM EnumPtr ); MIG_PROPERTYDATAID WINAPI IsmGetPropertyFromObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, IN MIG_PROPERTYID ObjectProperty ); MIG_PROPERTYDATAID WINAPI IsmGetPropertyFromObjectId ( IN MIG_OBJECTID ObjectId, IN MIG_PROPERTYID ObjectProperty ); BOOL WINAPI IsmEnumFirstObjectWithProperty ( OUT PMIG_OBJECTWITHPROPERTY_ENUM EnumPtr, IN MIG_PROPERTYID PropertyId ); BOOL WINAPI IsmEnumNextObjectWithProperty ( IN OUT PMIG_OBJECTWITHPROPERTY_ENUM EnumPtr ); VOID WINAPI IsmAbortObjectWithPropertyEnum ( IN OUT PMIG_OBJECTWITHPROPERTY_ENUM EnumPtr ); // // operations // MIG_OPERATIONID WINAPI IsmRegisterOperation ( IN PCTSTR Name, IN BOOL Private ); BOOL WINAPI IsmGetOperationName ( IN MIG_OPERATIONID OperationId, OUT PTSTR OperationName, OPTIONAL IN UINT OperationNameBufChars, OUT PBOOL Private, OPTIONAL OUT PBOOL BelongsToMe, OPTIONAL OUT PUINT ObjectReferences OPTIONAL ); MIG_OPERATIONID WINAPI IsmGetOperationGroup ( IN MIG_OPERATIONID OperationId ); BOOL WINAPI IsmSetOperationOnObjectId ( IN MIG_OBJECTID ObjectId, IN MIG_OPERATIONID OperationId, IN PCMIG_BLOB SourceData, OPTIONAL IN PCMIG_BLOB DestinationData OPTIONAL ); BOOL WINAPI IsmSetOperationOnObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, IN MIG_OPERATIONID OperationId, IN PCMIG_BLOB SourceData, OPTIONAL IN PCMIG_BLOB DestinationData OPTIONAL ); MIG_DATAHANDLE WINAPI IsmRegisterOperationData ( IN PCMIG_BLOB Data ); BOOL WINAPI IsmSetOperationOnObjectId2 ( IN MIG_OBJECTID ObjectId, IN MIG_OPERATIONID OperationId, IN MIG_DATAHANDLE SourceData, OPTIONAL IN MIG_DATAHANDLE DestinationData OPTIONAL ); BOOL WINAPI IsmSetOperationOnObject2 ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, IN MIG_OPERATIONID OperationId, IN MIG_DATAHANDLE SourceData, OPTIONAL IN MIG_DATAHANDLE DestinationData OPTIONAL ); VOID WINAPI IsmLockOperation ( IN MIG_OBJECTID ObjectId, IN MIG_OPERATIONID OperationId ); BOOL WINAPI IsmClearOperationOnObjectId ( IN MIG_OBJECTID ObjectId, IN MIG_OPERATIONID OperationId ); BOOL WINAPI IsmClearOperationOnObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, IN MIG_OPERATIONID OperationId ); BOOL WINAPI IsmIsOperationSetOnObjectId ( IN MIG_OBJECTID ObjectId, IN MIG_OPERATIONID OperationId ); BOOL WINAPI IsmIsOperationSetOnObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, IN MIG_OPERATIONID OperationId ); BOOL WINAPI IsmGetObjectOperationDataById ( IN MIG_OBJECTID ObjectId, IN MIG_OPERATIONID OperationId, OUT PBYTE Buffer, OPTIONAL IN UINT BufferSize, OUT PUINT BufferSizeNeeded, OPTIONAL OUT PMIG_BLOBTYPE Type, OPTIONAL IN BOOL DestinationData ); BOOL WINAPI IsmGetObjectOperationData ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, IN MIG_OPERATIONID OperationId, OUT PBYTE Buffer, OPTIONAL IN UINT BufferSize, OUT PUINT BufferSizeNeeded, OPTIONAL OUT PMIG_BLOBTYPE Type, OPTIONAL IN BOOL DestinationData ); BOOL WINAPI IsmEnumFirstObjectOperationById ( OUT PMIG_OBJECTOPERATION_ENUM EnumPtr, IN MIG_OBJECTID ObjectId ); BOOL WINAPI IsmEnumFirstObjectOperation ( OUT PMIG_OBJECTOPERATION_ENUM EnumPtr, IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName ); BOOL WINAPI IsmEnumNextObjectOperation ( IN OUT PMIG_OBJECTOPERATION_ENUM EnumPtr ); VOID WINAPI IsmAbortObjectOperationEnum ( IN OUT PMIG_OBJECTOPERATION_ENUM EnumPtr ); BOOL WINAPI IsmEnumFirstObjectWithOperation ( OUT PMIG_OBJECTWITHOPERATION_ENUM EnumPtr, IN MIG_OPERATIONID OperationId ); BOOL WINAPI IsmEnumNextObjectWithOperation ( IN OUT PMIG_OBJECTWITHOPERATION_ENUM EnumPtr ); VOID WINAPI IsmAbortObjectWithOperationEnum ( IN OUT PMIG_OBJECTWITHOPERATION_ENUM EnumPtr ); BOOL WINAPI IsmRegisterOperationFilterCallback ( IN MIG_OPERATIONID OperationId, IN POPMFILTERCALLBACK Callback, IN BOOL TreeFilter, IN BOOL HighPriority, IN BOOL CanHandleNoRestore ); BOOL WINAPI IsmRegisterGlobalFilterCallback ( IN MIG_OBJECTTYPEID ObjectTypeId, IN PCTSTR FunctionId, IN POPMFILTERCALLBACK Callback, IN BOOL TreeFilter, IN BOOL CanHandleNoRestore ); BOOL WINAPI IsmRegisterOperationApplyCallback ( IN MIG_OPERATIONID OperationId, IN POPMAPPLYCALLBACK Callback, IN BOOL HighPriority ); BOOL WINAPI IsmRegisterGlobalApplyCallback ( IN MIG_OBJECTTYPEID ObjectTypeId, IN PCTSTR FunctionId, IN POPMAPPLYCALLBACK Callback ); // // enumeration and object types // BOOL WINAPI IsmQueueEnumeration ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectPattern, IN PMIG_OBJECTENUMCALLBACK Callback, OPTIONAL IN ULONG_PTR CallbackArg, OPTIONAL IN PCTSTR FunctionId OPTIONAL ); BOOL WINAPI IsmHookEnumeration ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectPattern, IN PMIG_OBJECTENUMCALLBACK Callback, IN ULONG_PTR CallbackArg, OPTIONAL IN PCTSTR FunctionId OPTIONAL ); BOOL WINAPI IsmRegisterStaticExclusion ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); BOOL WINAPI IsmRegisterDynamicExclusion ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectPattern, IN PMIG_DYNAMICEXCLUSIONCALLBACK Callback, IN ULONG_PTR CallbackArg, OPTIONAL IN PCTSTR FunctionId OPTIONAL ); BOOL WINAPI IsmRegisterPreEnumerationCallback ( IN PMIG_PREENUMCALLBACK Callback, IN PCTSTR FunctionId OPTIONAL ); BOOL WINAPI IsmRegisterTypePreEnumerationCallback ( IN MIG_OBJECTTYPEID ObjectTypeId, IN PMIG_PREENUMCALLBACK Callback, IN PCTSTR FunctionId OPTIONAL ); BOOL WINAPI IsmRegisterPostEnumerationCallback ( IN PMIG_POSTENUMCALLBACK Callback, IN PCTSTR FunctionId OPTIONAL ); BOOL WINAPI IsmRegisterTypePostEnumerationCallback ( IN MIG_OBJECTTYPEID ObjectTypeId, IN PMIG_POSTENUMCALLBACK Callback, IN PCTSTR FunctionId OPTIONAL ); MIG_OBJECTTYPEID WINAPI IsmGetObjectTypeId ( IN PCTSTR ObjectTypeName ); PCTSTR WINAPI IsmGetObjectTypeName ( IN MIG_OBJECTTYPEID TypeId ); UINT WINAPI IsmGetObjectTypePriority ( IN MIG_OBJECTTYPEID TypeId ); VOID WINAPI IsmExecuteHooks ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE EncodedObjectName ); // // transport interface // BOOL IsmDoesObjectExist ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName ); BOOL WINAPI IsmAcquireObjectEx ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, OUT PMIG_CONTENT ObjectContent, IN MIG_CONTENTTYPE ContentType, IN UINT MemoryContentLimit ); #define IsmAcquireObject(type,name,content) IsmAcquireObjectEx(type,name,content,CONTENTTYPE_ANY,0) BOOL WINAPI IsmReleaseObject ( IN OUT PMIG_CONTENT ObjectContent ); PMIG_CONTENT IsmConvertObjectContentToUnicode ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, IN PMIG_CONTENT ObjectContent ); PMIG_CONTENT IsmConvertObjectContentToAnsi ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, IN PMIG_CONTENT ObjectContent ); BOOL IsmFreeConvertedObjectContent ( IN MIG_OBJECTTYPEID ObjectTypeId, IN PMIG_CONTENT ObjectContent ); BOOL WINAPI IsmRegisterRestoreCallback ( IN PMIG_RESTORECALLBACK RestoreCallback ); BOOL WINAPI IsmRegisterCompareCallback ( IN MIG_OBJECTTYPEID ObjectTypeId, IN PMIG_COMPARECALLBACK CompareCallback ); BOOL IsmAreObjectsIdentical ( IN MIG_OBJECTTYPEID SrcObjectTypeId, IN MIG_OBJECTSTRINGHANDLE SrcObjectName, IN PMIG_CONTENT SrcContent, IN MIG_OBJECTTYPEID DestObjectTypeId, IN MIG_OBJECTSTRINGHANDLE DestObjectName, IN PMIG_CONTENT DestContent, OUT PBOOL DifferentDetailsOnly OPTIONAL ); MIG_TRANSPORTSTORAGEID WINAPI IsmRegisterTransport ( IN PCTSTR TypeString ); BOOL WINAPI IsmGetMappedUserData ( OUT PMIG_USERDATA UserData ); BOOL WINAPI IsmAddControlFile ( IN PCTSTR ObjectName, IN PCTSTR NativePath ); BOOL WINAPI IsmGetControlFile ( MIG_OBJECTTYPEID ObjectTypeId, IN PCTSTR ObjectName, IN PTSTR Buffer ); BOOL WINAPI IsmSetRollbackJournalType ( IN BOOL Common ); BOOL WINAPI IsmCanWriteRollbackJournal ( VOID ); BOOL IsmDoesRollbackDataExist ( OUT PCTSTR *UserName, OUT PCTSTR *UserDomain, OUT PCTSTR *UserStringSid, OUT PCTSTR *UserProfilePath, OUT BOOL *UserProfileCreated ); VOID WINAPI IsmRecordOperation ( IN DWORD OperationType, IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName ); BOOL WINAPI IsmRollback ( VOID ); BOOL IsmPreserveJournal ( IN BOOL Preserve ); BOOL WINAPI IsmSetDelayedOperationsCommand ( IN PCTSTR DelayedOperationsCommand ); VOID IsmRecordDelayedOperation ( IN DWORD OperationType, IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, IN PMIG_CONTENT ObjectContent ); PMIG_OBJECTCOUNT IsmGetObjectsStatistics ( IN MIG_OBJECTTYPEID ObjectTypeId OPTIONAL ); BOOL IsmGetOsVersionInfo ( IN MIG_PLATFORMTYPEID Platform, OUT PMIG_OSVERSIONINFO VersionInfo ); BOOL IsmGetTempStorage ( OUT PTSTR Path, IN UINT PathTchars ); BOOL IsmGetTempDirectory ( OUT PTSTR Path, IN UINT PathTchars ); BOOL IsmGetTempFile ( OUT PTSTR Path, IN UINT PathTchars ); BOOL IsmExecuteFunction ( IN UINT ExecutionPhase, IN PCTSTR FunctionMultiSz ); BOOL IsmReplacePhysicalObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName, IN PMIG_CONTENT ObjectContent ); BOOL IsmRemovePhysicalObject ( IN MIG_OBJECTTYPEID ObjectTypeId, IN MIG_OBJECTSTRINGHANDLE ObjectName ); PCTSTR IsmGetCurrentSidString ( VOID ); // // ANSI/UNICODE macros // // None #ifdef __cplusplus } #endif