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.
 
 
 
 
 
 

2303 lines
47 KiB

/*++
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:
<alias> <date> <comments>
--*/
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
//
// Strings
//
#define S_DATATYPE TEXT("Data")
#define S_FILETYPE TEXT("File")
#define S_REGISTRYTYPE TEXT("Registry")
//
// Constants
//
//
// 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_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;
//
// 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
);
MIG_OBJECTTYPEID
WINAPI
IsmGetFirstObjectTypeId (
VOID
);
MIG_OBJECTTYPEID
WINAPI
IsmGetNextObjectTypeId (
IN MIG_OBJECTTYPEID CurrentTypeId
);
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)
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
);
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
);
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