Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2364 lines
51 KiB

  1. /*++
  2. Copyright (c) 2000 Microsoft Corporation
  3. Module Name:
  4. ism.h
  5. Abstract:
  6. Base definitions for the Intermediate State Manager.
  7. Author:
  8. Jim Schmidt (jimschm) 15-Nov-1999
  9. Revision History:
  10. <alias> <date> <comments>
  11. --*/
  12. #pragma once
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. //
  17. // Strings
  18. //
  19. #define S_DATATYPE TEXT("Data")
  20. #define S_REGISTRYTYPE TEXT("Registry")
  21. #define S_INITYPE TEXT("IniFile")
  22. #define S_FILETYPE TEXT("File")
  23. #define S_VER_HIVEMAPPEDLOCATION TEXT("HiveMappedLocation")
  24. //
  25. // Constants
  26. //
  27. // Priorities for the type IDs. This gives the order of
  28. // processing and enumeration inside the engine.
  29. #define PRIORITY_DATA 0x00000100
  30. #define PRIORITY_REGISTRY 0x00000200
  31. #define PRIORITY_INI 0x00000300
  32. #define PRIORITY_FILE 0x00000400
  33. #define PRIORITY_LOWEST 0xFFFFFFFF
  34. //
  35. // If either DBG or DEBUG defined, use debug mode
  36. //
  37. #if defined(DBG) && !defined(DEBUG)
  38. #define DEBUG
  39. #endif
  40. #if defined(DEBUG) && !defined(DBG)
  41. #define DBG
  42. #endif
  43. #ifdef DEBUG
  44. #define TRACKING_DEF , PCSTR File, UINT Line
  45. #define TRACKING_CALL ,__FILE__,__LINE__
  46. #define TRACKING_INLINE_CALL ,File,Line
  47. #else
  48. #define TRACKING_DEF
  49. #define TRACKING_CALL
  50. #define TRACKING_INLINE_CALL
  51. #endif
  52. //
  53. // callback constants
  54. //
  55. #define CALLBACK_ENUM_CONTINUE 0x00000000
  56. #define CALLBACK_SKIP_LEAVES 0x00000001
  57. #define CALLBACK_SKIP_NODES 0x00000002
  58. #define CALLBACK_SKIP_TREE 0x00000004
  59. #define CALLBACK_SKIP_REMAINING_TREE CALLBACK_SKIP_TREE
  60. #define CALLBACK_THIS_TREE_ONLY 0x00000008
  61. #define CALLBACK_DONE_ENUMERATING 0x00000010
  62. #define CALLBACK_ERROR 0x80000000
  63. #define ALL_PATTERN ((PMIG_SEGMENTS) 1)
  64. //
  65. // used by rollback and delayed operations mechanism
  66. //
  67. #define JRNOP_CREATE 0x00000001
  68. #define JRNOP_DELETE 0x00000002
  69. #define JRNOP_REPLACE 0x00000003
  70. #define ZEROED
  71. #define CALLER_INITIALIZED
  72. //
  73. // component constants
  74. //
  75. #define MASTERGROUP_NONE 0
  76. #define MASTERGROUP_SCRIPT 1
  77. #define MASTERGROUP_FILES_AND_FOLDERS 2
  78. #define MASTERGROUP_USER 3
  79. #define MASTERGROUP_APP 4
  80. #define MASTERGROUP_SYSTEM 5
  81. #define MASTERGROUP_ALL 255
  82. //
  83. // IsmQueueEnumeration constants
  84. //
  85. #define QUEUE_MAKE_APPLY 0x0001
  86. #define QUEUE_MAKE_PERSISTENT 0x0002
  87. #define QUEUE_OVERWRITE_DEST 0x0004
  88. #define QUEUE_DONT_OVERWRITE_DEST 0x0008
  89. #define QUEUE_MAKE_NONCRITICAL 0x0010
  90. //
  91. // execute constants
  92. //
  93. #define MIG_EXECUTE_PREPROCESS 0x0001
  94. #define MIG_EXECUTE_REFRESH 0x0002
  95. #define MIG_EXECUTE_POSTPROCESS 0x0003
  96. #define ISMMESSAGE_EXECUTE_PREPROCESS 0x0001
  97. #define ISMMESSAGE_EXECUTE_REFRESH 0x0002
  98. #define ISMMESSAGE_EXECUTE_POSTPROCESS 0x0003
  99. #define ISMMESSAGE_EXECUTE_ROLLBACK 0x0004
  100. #define ISMMESSAGE_APP_INFO 0x0005
  101. #define ISMMESSAGE_APP_INFO_NOW 0x0006
  102. //
  103. // Macros
  104. //
  105. // None
  106. //
  107. // Types
  108. //
  109. //
  110. // misc types
  111. //
  112. typedef enum {
  113. CONTENTTYPE_ANY = 0,
  114. CONTENTTYPE_MEMORY,
  115. CONTENTTYPE_FILE,
  116. CONTENTTYPE_DETAILS_ONLY
  117. } MIG_CONTENTTYPE;
  118. #define PLATFORM_CURRENT 0x00000000
  119. #define PLATFORM_SOURCE 0x10000000
  120. #define PLATFORM_DESTINATION 0x20000000
  121. #define PLATFORM_MASK 0xF0000000
  122. #define TYPE_MASK 0x0FFFFFFF
  123. #define COMPONENTENUM_ALIASES 0x00000001
  124. #define COMPONENTENUM_ENABLED 0x00000002
  125. #define COMPONENTENUM_DISABLED 0x00000004
  126. #define COMPONENTENUM_PREFERRED_ONLY 0x00000008
  127. #define COMPONENTENUM_NON_PREFERRED_ONLY 0x00000010
  128. #define COMPONENTENUM_ALL_COMPONENTS (COMPONENTENUM_ENABLED|COMPONENTENUM_DISABLED)
  129. #define COMPONENTENUM_ALL_ALIASES (COMPONENTENUM_ALIASES|COMPONENTENUM_ENABLED|COMPONENTENUM_DISABLED)
  130. #define EXECUTETYPE_VIRTUALCOMPUTER_PARSING 0x00000001
  131. #define EXECUTETYPE_VIRTUALCOMPUTER 0x00000002
  132. #define EXECUTETYPE_EXECUTESOURCE_PARSING 0x00000003
  133. #define EXECUTETYPE_EXECUTESOURCE 0x00000004
  134. #define EXECUTETYPE_EXECUTEDESTINATION 0x00000005
  135. #define EXECUTETYPE_DELAYEDOPERATIONS 0x00000006
  136. #define EXECUTETYPE_DELAYEDOPERATIONSCLEANUP 0x00000007
  137. #define TRANSPORTTYPE_LIGHT 0x00000001
  138. #define TRANSPORTTYPE_FULL 0x00000002
  139. #define MIG_DATA_TYPE IsmGetObjectTypeId(S_DATATYPE)
  140. #define MIG_REGISTRY_TYPE IsmGetObjectTypeId(S_REGISTRYTYPE)
  141. #define MIG_INI_TYPE IsmGetObjectTypeId(S_INITYPE)
  142. #define MIG_FILE_TYPE IsmGetObjectTypeId(S_FILETYPE)
  143. typedef enum {
  144. MIG_TRANSPORT_PHASE = 1,
  145. MIG_HIGHPRIORITYQUEUE_PHASE,
  146. MIG_HIGHPRIORITYESTIMATE_PHASE,
  147. MIG_HIGHPRIORITYGATHER_PHASE,
  148. MIG_GATHERQUEUE_PHASE,
  149. MIG_GATHERESTIMATE_PHASE,
  150. MIG_GATHER_PHASE,
  151. MIG_ANALYSIS_PHASE,
  152. MIG_APPLY_PHASE
  153. } MIG_PROGRESSPHASE;
  154. typedef enum {
  155. MIG_BEGIN_PHASE = 1,
  156. MIG_IN_PHASE,
  157. MIG_END_PHASE
  158. } MIG_PROGRESSSTATE;
  159. typedef struct {
  160. DWORD TotalObjects;
  161. DWORD PersistentObjects;
  162. DWORD ApplyObjects;
  163. } MIG_OBJECTCOUNT, *PMIG_OBJECTCOUNT;
  164. #ifndef PCVOID
  165. typedef const void * PCVOID;
  166. #endif
  167. #ifndef PCBYTE
  168. typedef const unsigned char * PCBYTE;
  169. #endif
  170. typedef unsigned long MIG_ATTRIBUTEID;
  171. typedef unsigned int MIG_PROPERTYID;
  172. typedef unsigned long MIG_OBJECTTYPEID;
  173. typedef unsigned long MIG_OPERATIONID;
  174. typedef signed int MIG_OBJECTID;
  175. typedef unsigned int MIG_PROPERTYDATAID;
  176. typedef unsigned int MIG_DATAHANDLE;
  177. typedef PCTSTR MIG_OBJECTSTRINGHANDLE;
  178. typedef unsigned int MIG_PLATFORMTYPEID;
  179. typedef LONG_PTR MIG_TRANSPORTID;
  180. typedef signed long MIG_TRANSPORTSTORAGEID;
  181. typedef unsigned long MIG_TRANSPORTTYPE;
  182. typedef unsigned long MIG_TRANSPORTCAPABILITIES;
  183. typedef signed short MIG_PROGRESSSLICEID;
  184. typedef unsigned int MIG_EXECUTETYPEID;
  185. typedef PCVOID MIG_PARSEDPATTERN;
  186. typedef MIG_TRANSPORTTYPE *PMIG_TRANSPORTTYPE;
  187. typedef MIG_TRANSPORTCAPABILITIES *PMIG_TRANSPORTCAPABILITIES;
  188. typedef enum {
  189. PHYSICAL_OBJECT = 1,
  190. ISM_OBJECT
  191. } MIG_LOCATION_TYPE;
  192. typedef enum {
  193. CR_FAILED = 1,
  194. CR_SOURCE_DOES_NOT_EXIST,
  195. CR_DESTINATION_EXISTS
  196. } MIG_COMPARERESULT;
  197. //
  198. // object values
  199. //
  200. typedef struct {
  201. UINT DetailsSize;
  202. PCVOID DetailsData;
  203. } MIG_DETAILS, *PMIG_DETAILS;
  204. typedef struct {
  205. MIG_OBJECTTYPEID ObjectTypeId;
  206. BOOL ContentInFile;
  207. union {
  208. struct _TAG_FILECONTENT {
  209. PCTSTR ContentPath;
  210. LONGLONG ContentSize;
  211. } FileContent;
  212. struct _TAG_MEMORYCONTENT {
  213. PCBYTE ContentBytes;
  214. UINT ContentSize;
  215. } MemoryContent;
  216. };
  217. MIG_DETAILS Details;
  218. // internal members
  219. union {
  220. PVOID EtmHandle;
  221. PVOID TransHandle;
  222. };
  223. PVOID IsmHandle;
  224. } MIG_CONTENT, *PMIG_CONTENT;
  225. typedef MIG_CONTENT const * PCMIG_CONTENT;
  226. typedef struct {
  227. PCTSTR Segment;
  228. BOOL IsPattern;
  229. } MIG_SEGMENTS, *PMIG_SEGMENTS;
  230. //
  231. // transport module structs and function types
  232. //
  233. typedef struct {
  234. MIG_TRANSPORTID TransportId;
  235. MIG_TRANSPORTSTORAGEID SupportedStorageId;
  236. MIG_TRANSPORTTYPE TransportType;
  237. MIG_TRANSPORTCAPABILITIES Capabilities;
  238. PCTSTR FriendlyDescription;
  239. PVOID Handle;
  240. } MIG_TRANSPORTENUM, *PMIG_TRANSPORTENUM;
  241. //
  242. // type id enum
  243. //
  244. typedef struct {
  245. MIG_OBJECTTYPEID ObjectTypeId;
  246. LONG_PTR EnumHandle;
  247. } MIG_OBJECTTYPEIDENUM, *PMIG_OBJECTTYPEIDENUM;
  248. //
  249. // object enum
  250. //
  251. typedef struct {
  252. MIG_OBJECTTYPEID ObjectTypeId;
  253. MIG_OBJECTSTRINGHANDLE ObjectName;
  254. PCTSTR NativeObjectName;
  255. PCTSTR ObjectNode;
  256. PCTSTR ObjectLeaf;
  257. UINT Level;
  258. UINT SubLevel;
  259. BOOL IsLeaf;
  260. BOOL IsNode;
  261. MIG_DETAILS Details;
  262. LONG_PTR EtmHandle;
  263. PVOID IsmHandle;
  264. } MIG_TYPEOBJECTENUM, *PMIG_TYPEOBJECTENUM;
  265. typedef struct {
  266. MIG_OBJECTTYPEID ObjectTypeId;
  267. MIG_OBJECTSTRINGHANDLE ObjectName;
  268. PCTSTR NativeObjectName;
  269. PCTSTR ObjectNode;
  270. PCTSTR ObjectLeaf;
  271. UINT Level;
  272. UINT SubLevel;
  273. BOOL IsLeaf;
  274. BOOL IsNode;
  275. MIG_DETAILS Details;
  276. } MIG_OBJECTENUMDATA, *PMIG_OBJECTENUMDATA;
  277. typedef const MIG_OBJECTENUMDATA * PCMIG_OBJECTENUMDATA;
  278. typedef struct {
  279. MIG_OBJECTTYPEID ObjectTypeId;
  280. MIG_OBJECTSTRINGHANDLE ObjectName;
  281. MIG_OBJECTID ObjectId; // 0 == physical object
  282. PVOID Handle; // used by enum routines
  283. } MIG_OBJECT_ENUM, *PMIG_OBJECT_ENUM;
  284. //
  285. // properties
  286. //
  287. typedef enum {
  288. BLOBTYPE_STRING = 1,
  289. BLOBTYPE_BINARY = 2
  290. } MIG_BLOBTYPE, *PMIG_BLOBTYPE;
  291. typedef struct {
  292. MIG_BLOBTYPE Type;
  293. union {
  294. PCTSTR String;
  295. struct {
  296. PCBYTE BinaryData;
  297. UINT BinarySize;
  298. };
  299. };
  300. } MIG_BLOB, *PMIG_BLOB;
  301. typedef const MIG_BLOB * PCMIG_BLOB;
  302. typedef struct {
  303. MIG_PROPERTYID PropertyId;
  304. MIG_PROPERTYDATAID PropertyDataId;
  305. BOOL Private;
  306. PVOID Handle; // used by enum routines
  307. } MIG_OBJECTPROPERTY_ENUM, *PMIG_OBJECTPROPERTY_ENUM;
  308. typedef struct {
  309. MIG_OBJECTTYPEID ObjectTypeId;
  310. MIG_OBJECTSTRINGHANDLE ObjectName;
  311. MIG_OBJECTID ObjectId;
  312. PVOID Handle; // used by enum routines
  313. } MIG_OBJECTWITHPROPERTY_ENUM, *PMIG_OBJECTWITHPROPERTY_ENUM;
  314. //
  315. // attributes
  316. //
  317. typedef struct {
  318. MIG_ATTRIBUTEID AttributeId;
  319. BOOL Private;
  320. PVOID Handle; // used by enum routines
  321. } MIG_OBJECTATTRIBUTE_ENUM, *PMIG_OBJECTATTRIBUTE_ENUM;
  322. typedef struct {
  323. MIG_OBJECTTYPEID ObjectTypeId;
  324. MIG_OBJECTSTRINGHANDLE ObjectName;
  325. MIG_OBJECTID ObjectId;
  326. PVOID Handle; // used by enum routines
  327. } MIG_OBJECTWITHATTRIBUTE_ENUM, *PMIG_OBJECTWITHATTRIBUTE_ENUM;
  328. //
  329. // operations
  330. //
  331. typedef struct {
  332. MIG_OPERATIONID OperationId;
  333. PCMIG_BLOB SourceData; OPTIONAL
  334. PCMIG_BLOB DestinationData; OPTIONAL
  335. BOOL Private;
  336. PVOID Handle; // used by enum routines
  337. } MIG_OBJECTOPERATION_ENUM, *PMIG_OBJECTOPERATION_ENUM;
  338. typedef struct {
  339. MIG_OBJECTSTRINGHANDLE ObjectName;
  340. MIG_OBJECTTYPEID ObjectTypeId;
  341. MIG_OBJECTID ObjectId;
  342. MIG_OPERATIONID OperationId;
  343. PCMIG_BLOB SourceData; OPTIONAL
  344. PCMIG_BLOB DestinationData; OPTIONAL
  345. PVOID Handle; // used by enum routines
  346. } MIG_OBJECTWITHOPERATION_ENUM, *PMIG_OBJECTWITHOPERATION_ENUM;
  347. typedef struct {
  348. MIG_OBJECTTYPEID ObjectTypeId;
  349. MIG_OBJECTSTRINGHANDLE ObjectName;
  350. } MIG_OBJECT, *PMIG_OBJECT;
  351. typedef const MIG_OBJECT * PCMIG_OBJECT;
  352. typedef struct {
  353. MIG_OBJECT OriginalObject;
  354. MIG_OBJECT CurrentObject;
  355. BOOL FilterTreeChangesOnly;
  356. BOOL Deleted;
  357. BOOL Replaced;
  358. } MIG_FILTERINPUT, *PMIG_FILTERINPUT;
  359. typedef MIG_FILTERINPUT const * PCMIG_FILTERINPUT;
  360. typedef struct {
  361. MIG_OBJECT NewObject;
  362. BOOL Deleted;
  363. BOOL Replaced;
  364. } MIG_FILTEROUTPUT, *PMIG_FILTEROUTPUT;
  365. //
  366. // environment & message passing types
  367. //
  368. typedef enum {
  369. ENVENTRY_NONE = 0,
  370. ENVENTRY_STRING,
  371. ENVENTRY_MULTISZ,
  372. ENVENTRY_CALLBACK,
  373. ENVENTRY_BINARY
  374. } ENVENTRY_TYPE, *PENVENTRY_TYPE;
  375. typedef BOOL (WINAPI ENVENTRYCALLBACK)(PCTSTR,PTSTR,UINT,PUINT,PCTSTR);
  376. typedef ENVENTRYCALLBACK *PENVENTRYCALLBACK;
  377. typedef struct {
  378. ENVENTRY_TYPE Type;
  379. union {
  380. PCTSTR EnvString;
  381. PCTSTR MultiSz;
  382. struct {
  383. PCBYTE EnvBinaryData;
  384. UINT EnvBinaryDataSize;
  385. };
  386. PENVENTRYCALLBACK EnvCallback;
  387. };
  388. } ENVENTRY_STRUCT, *PENVENTRY_STRUCT;
  389. typedef struct {
  390. PCTSTR UserName;
  391. PCTSTR DomainName;
  392. PCTSTR AccountName;
  393. PCTSTR UserProfileRoot;
  394. PSID UserSid;
  395. } MIG_USERDATA, *PMIG_USERDATA;
  396. typedef struct {
  397. MIG_PROGRESSPHASE Phase;
  398. UINT SubPhase;
  399. MIG_OBJECTTYPEID ObjectTypeId;
  400. MIG_OBJECTSTRINGHANDLE ObjectName;
  401. PCTSTR Text;
  402. } MIG_APPINFO, *PMIG_APPINFO;
  403. //
  404. // components
  405. //
  406. typedef struct {
  407. PCTSTR ComponentString;
  408. PCTSTR LocalizedAlias;
  409. UINT Instance;
  410. UINT GroupId;
  411. BOOL Preferred;
  412. BOOL UserSupplied;
  413. BOOL Enabled;
  414. UINT MasterGroup;
  415. BOOL SkipToNextComponent; // set this to TRUE to cause enumeration to continue to next component
  416. // (instead of next alias of same component)
  417. PVOID Handle;
  418. } MIG_COMPONENT_ENUM, *PMIG_COMPONENT_ENUM;
  419. //
  420. // Version
  421. //
  422. #define OSTYPE_WINDOWS9X 1
  423. #define OSTYPE_WINDOWS9X_STR TEXT("9X")
  424. #define OSTYPE_WINDOWSNT 2
  425. #define OSTYPE_WINDOWSNT_STR TEXT("NT")
  426. #define OSMAJOR_WIN95 1
  427. #define OSMAJOR_WIN95_STR TEXT("Windows 95")
  428. #define OSMAJOR_WIN95OSR2 2
  429. #define OSMAJOR_WIN95OSR2_STR TEXT("Windows 95 - OSR2")
  430. #define OSMAJOR_WIN98 3
  431. #define OSMAJOR_WIN98_STR TEXT("Windows 98")
  432. #define OSMAJOR_WINME 4
  433. #define OSMAJOR_WINME_STR TEXT("Windows Millennium")
  434. #define OSMAJOR_WINNT4 1
  435. #define OSMAJOR_WINNT4_STR TEXT("Windows NT4")
  436. #define OSMAJOR_WINNT5 2
  437. #define OSMAJOR_WINNT5_STR TEXT("Windows 2000")
  438. #define OSMINOR_GOLD 0
  439. #define OSMINOR_GOLD_STR TEXT("Gold")
  440. #define OSMINOR_WIN95OSR21 1
  441. #define OSMINOR_WIN95OSR21_STR TEXT("1")
  442. #define OSMINOR_WIN95OSR25 2
  443. #define OSMINOR_WIN95OSR25_STR TEXT("5")
  444. #define OSMINOR_WIN98SE 1
  445. #define OSMINOR_WIN98SE_STR TEXT("Second Edition")
  446. #define OSMINOR_WINNT51 1
  447. #define OSMINOR_WINNT51_STR TEXT("XP")
  448. typedef struct {
  449. UINT OsType;
  450. PCTSTR OsTypeName;
  451. UINT OsMajorVersion;
  452. PCTSTR OsMajorVersionName;
  453. UINT OsMinorVersion;
  454. PCTSTR OsMinorVersionName;
  455. UINT OsBuildNumber;
  456. } MIG_OSVERSIONINFO, *PMIG_OSVERSIONINFO;
  457. #include "ismproc.h"
  458. //
  459. // Globals
  460. //
  461. // None
  462. //
  463. // Macro expansion list
  464. //
  465. // None
  466. //
  467. // Macro expansion definition
  468. //
  469. // None
  470. //
  471. // Public function declarations
  472. //
  473. //
  474. // app layer
  475. //
  476. BOOL
  477. WINAPI
  478. IsmInitialize (
  479. IN PCTSTR InfPath,
  480. IN PMESSAGECALLBACK MessageCallback, OPTIONAL
  481. IN PMIG_LOGCALLBACK LogCallback
  482. );
  483. BOOL
  484. WINAPI
  485. IsmSetPlatform (
  486. IN MIG_PLATFORMTYPEID Platform
  487. );
  488. BOOL
  489. WINAPI
  490. IsmRegisterProgressBarCallback (
  491. IN PPROGRESSBARFN ProgressBarFn,
  492. IN ULONG_PTR Arg
  493. );
  494. BOOL
  495. WINAPI
  496. IsmStartEtmModules (
  497. VOID
  498. );
  499. BOOL
  500. WINAPI
  501. IsmStartTransport (
  502. VOID
  503. );
  504. BOOL
  505. WINAPI
  506. IsmEnumFirstTransport (
  507. OUT PMIG_TRANSPORTENUM Enum,
  508. IN MIG_TRANSPORTSTORAGEID DesiredType OPTIONAL
  509. );
  510. BOOL
  511. WINAPI
  512. IsmEnumNextTransport (
  513. IN OUT PMIG_TRANSPORTENUM Enum
  514. );
  515. VOID
  516. WINAPI
  517. IsmAbortTransportEnum (
  518. IN PMIG_TRANSPORTENUM Enum
  519. );
  520. MIG_TRANSPORTID
  521. WINAPI
  522. IsmSelectTransport (
  523. IN MIG_TRANSPORTSTORAGEID DesiredStorageId,
  524. IN MIG_TRANSPORTTYPE TransportType,
  525. IN MIG_TRANSPORTCAPABILITIES RequiredCapabilities
  526. );
  527. BOOL
  528. WINAPI
  529. IsmSetTransportStorage (
  530. IN MIG_PLATFORMTYPEID Platform,
  531. IN MIG_TRANSPORTID TransportId,
  532. IN MIG_TRANSPORTSTORAGEID StorageId,
  533. IN MIG_TRANSPORTCAPABILITIES RequiredCapabilities,
  534. IN PCTSTR StoragePath,
  535. OUT PBOOL StoragePathIsValid, OPTIONAL
  536. OUT PBOOL ImageExistsInStorage OPTIONAL
  537. );
  538. BOOL
  539. WINAPI
  540. IsmPerformParsing (
  541. VOID
  542. );
  543. BOOL
  544. WINAPI
  545. IsmExecute (
  546. IN MIG_EXECUTETYPEID ExecuteType
  547. );
  548. BOOL
  549. WINAPI
  550. IsmLoad (
  551. VOID
  552. );
  553. BOOL
  554. WINAPI
  555. IsmResumeLoad (
  556. VOID
  557. );
  558. BOOL
  559. WINAPI
  560. IsmSave (
  561. VOID
  562. );
  563. BOOL
  564. WINAPI
  565. IsmResumeSave (
  566. VOID
  567. );
  568. VOID
  569. WINAPI
  570. IsmTerminate (
  571. VOID
  572. );
  573. //
  574. // component apis
  575. //
  576. BOOL
  577. WINAPI
  578. IsmAddComponentAlias (
  579. IN PCTSTR ComponentString, OPTIONAL
  580. IN UINT MasterGroup,
  581. IN PCTSTR LocalizedAlias,
  582. IN UINT ComponentGroupId,
  583. IN BOOL UserSupplied
  584. );
  585. BOOL
  586. WINAPI
  587. IsmSelectPreferredAlias (
  588. IN PCTSTR ComponentString,
  589. IN PCTSTR LocalizedAlias, OPTIONAL
  590. IN UINT ComponentGroupId OPTIONAL
  591. );
  592. BOOL
  593. WINAPI
  594. IsmSelectComponent (
  595. IN PCTSTR ComponentOrAlias,
  596. IN UINT ComponentGroupId, OPTIONAL
  597. IN BOOL Enable
  598. );
  599. BOOL
  600. WINAPI
  601. IsmSelectMasterGroup (
  602. IN UINT MasterGroup,
  603. IN BOOL Enable
  604. );
  605. BOOL
  606. WINAPI
  607. IsmEnumFirstComponent (
  608. OUT PMIG_COMPONENT_ENUM EnumPtr,
  609. IN DWORD ComponentEnumFlags,
  610. IN UINT GroupIdFilter OPTIONAL
  611. );
  612. BOOL
  613. WINAPI
  614. IsmEnumNextComponent (
  615. IN OUT PMIG_COMPONENT_ENUM EnumPtr
  616. );
  617. VOID
  618. WINAPI
  619. IsmAbortComponentEnum (
  620. IN PMIG_COMPONENT_ENUM EnumPtr ZEROED
  621. );
  622. VOID
  623. WINAPI
  624. IsmRemoveAllUserSuppliedComponents (
  625. VOID
  626. );
  627. BOOL
  628. WINAPI
  629. IsmIsComponentSelected (
  630. IN PCTSTR ComponentOrAlias,
  631. IN UINT ComponentGroupId OPTIONAL
  632. );
  633. //
  634. // module support routines
  635. //
  636. PVOID
  637. WINAPI
  638. TrackedIsmGetMemory (
  639. IN UINT Size
  640. TRACKING_DEF
  641. );
  642. #define IsmGetMemory(s) TrackedIsmGetMemory(s TRACKING_CALL)
  643. PCTSTR
  644. WINAPI
  645. TrackedIsmDuplicateString (
  646. IN PCTSTR String
  647. TRACKING_DEF
  648. );
  649. #define IsmDuplicateString(s) TrackedIsmDuplicateString(s TRACKING_CALL)
  650. BOOL
  651. WINAPI
  652. IsmReleaseMemory (
  653. IN PCVOID Memory
  654. );
  655. MIG_PLATFORMTYPEID
  656. WINAPI
  657. IsmGetRealPlatform (
  658. VOID
  659. );
  660. BOOL
  661. WINAPI
  662. IsmCreateUser (
  663. IN PCTSTR UserName,
  664. IN PCTSTR Domain
  665. );
  666. MIG_OBJECTSTRINGHANDLE
  667. TrackedIsmGetLongName (
  668. IN MIG_OBJECTTYPEID ObjectTypeId,
  669. IN MIG_OBJECTSTRINGHANDLE ObjectName
  670. TRACKING_DEF
  671. );
  672. #define IsmGetLongName(t,n) TrackedIsmGetLongName(t,n TRACKING_CALL)
  673. //
  674. // type module interface
  675. //
  676. MIG_OBJECTTYPEID
  677. WINAPI
  678. IsmRegisterObjectType (
  679. IN PCTSTR ObjectTypeName,
  680. IN BOOL CanBeRestored,
  681. IN BOOL ReadOnly,
  682. IN PTYPE_REGISTER TypeRegisterData
  683. );
  684. BOOL
  685. WINAPI
  686. IsmEnumFirstObjectTypeId (
  687. OUT PMIG_OBJECTTYPEIDENUM ObjectTypeIdEnum
  688. );
  689. BOOL
  690. WINAPI
  691. IsmEnumNextObjectTypeId (
  692. IN OUT PMIG_OBJECTTYPEIDENUM ObjectTypeIdEnum
  693. );
  694. VOID
  695. WINAPI
  696. IsmAbortObjectTypeIdEnum (
  697. IN OUT PMIG_OBJECTTYPEIDENUM ObjectTypeIdEnum
  698. );
  699. PCTSTR
  700. WINAPI
  701. IsmConvertObjectToMultiSz (
  702. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  703. IN PMIG_CONTENT ObjectContent
  704. );
  705. BOOL
  706. WINAPI
  707. IsmConvertMultiSzToObject (
  708. IN MIG_OBJECTTYPEID ObjectTypeId,
  709. IN PCTSTR ObjectMultiSz,
  710. OUT MIG_OBJECTSTRINGHANDLE *ObjectName,
  711. OUT PMIG_CONTENT ObjectContent OPTIONAL
  712. );
  713. PCTSTR
  714. WINAPI
  715. TrackedIsmGetNativeObjectName (
  716. IN MIG_OBJECTTYPEID ObjectTypeId,
  717. IN MIG_OBJECTSTRINGHANDLE ObjectName
  718. TRACKING_DEF
  719. );
  720. #define IsmGetNativeObjectName(t,n) TrackedIsmGetNativeObjectName(t,n TRACKING_CALL)
  721. BOOL
  722. IsmRegisterPhysicalAcquireHook (
  723. IN MIG_OBJECTTYPEID ObjectTypeId,
  724. IN MIG_OBJECTSTRINGHANDLE ObjectPattern,
  725. IN PMIG_PHYSICALACQUIREHOOK HookCallback,
  726. IN PMIG_PHYSICALACQUIREFREE FreeCallback, OPTIONAL
  727. IN ULONG_PTR CallbackArg, OPTIONAL
  728. IN PCTSTR FunctionId OPTIONAL
  729. );
  730. BOOL
  731. IsmProhibitPhysicalEnum (
  732. IN MIG_OBJECTTYPEID ObjectTypeId,
  733. IN MIG_OBJECTSTRINGHANDLE ObjectPattern,
  734. IN PMIG_PHYSICALENUMCHECK EnumCheckCallback, OPTIONAL
  735. IN ULONG_PTR CallbackArg, OPTIONAL
  736. IN PCTSTR FunctionId OPTIONAL
  737. );
  738. BOOL
  739. IsmAddToPhysicalEnum (
  740. IN MIG_OBJECTTYPEID ObjectTypeId,
  741. IN MIG_OBJECTSTRINGHANDLE ObjectBase,
  742. IN PMIG_PHYSICALENUMADD EnumAddCallback,
  743. IN ULONG_PTR CallbackArg OPTIONAL
  744. );
  745. //
  746. // environment & messaging
  747. //
  748. BOOL
  749. WINAPI
  750. IsmSetEnvironmentValue (
  751. IN MIG_PLATFORMTYPEID Platform,
  752. IN PCTSTR Group, OPTIONAL
  753. IN PCTSTR VariableName,
  754. IN PENVENTRY_STRUCT VariableData OPTIONAL
  755. );
  756. BOOL
  757. WINAPI
  758. IsmSetEnvironmentString (
  759. IN MIG_PLATFORMTYPEID Platform,
  760. IN PCTSTR Group, OPTIONAL
  761. IN PCTSTR VariableName,
  762. IN PCTSTR VariableValue
  763. );
  764. BOOL
  765. WINAPI
  766. IsmSetEnvironmentMultiSz (
  767. IN MIG_PLATFORMTYPEID Platform,
  768. IN PCTSTR Group, OPTIONAL
  769. IN PCTSTR VariableName,
  770. IN PCTSTR VariableValue
  771. );
  772. BOOL
  773. WINAPI
  774. IsmAppendEnvironmentString (
  775. IN MIG_PLATFORMTYPEID Platform,
  776. IN PCTSTR Group, OPTIONAL
  777. IN PCTSTR VariableName,
  778. IN PCTSTR VariableValue
  779. );
  780. BOOL
  781. WINAPI
  782. IsmAppendEnvironmentMultiSz (
  783. IN MIG_PLATFORMTYPEID Platform,
  784. IN PCTSTR Group, OPTIONAL
  785. IN PCTSTR VariableName,
  786. IN PCTSTR VariableValue
  787. );
  788. BOOL
  789. WINAPI
  790. IsmSetEnvironmentCallback (
  791. IN MIG_PLATFORMTYPEID Platform,
  792. IN PCTSTR Group, OPTIONAL
  793. IN PCTSTR VariableName,
  794. IN PENVENTRYCALLBACK VariableCallback
  795. );
  796. BOOL
  797. WINAPI
  798. IsmSetEnvironmentData (
  799. IN MIG_PLATFORMTYPEID Platform,
  800. IN PCTSTR Group, OPTIONAL
  801. IN PCTSTR VariableName,
  802. IN PCBYTE VariableData,
  803. IN UINT VariableDataSize
  804. );
  805. BOOL
  806. WINAPI
  807. IsmSetEnvironmentFlag (
  808. IN MIG_PLATFORMTYPEID Platform,
  809. IN PCTSTR Group, OPTIONAL
  810. IN PCTSTR VariableName
  811. );
  812. BOOL
  813. WINAPI
  814. IsmGetEnvironmentValue (
  815. IN MIG_PLATFORMTYPEID Platform,
  816. IN PCTSTR Group, OPTIONAL
  817. IN PCTSTR VariableName,
  818. OUT PBYTE Data, OPTIONAL
  819. IN UINT DataSize,
  820. OUT PUINT DataSizeNeeded, OPTIONAL
  821. OUT PENVENTRY_TYPE DataType OPTIONAL
  822. );
  823. BOOL
  824. WINAPI
  825. IsmGetEnvironmentString (
  826. IN MIG_PLATFORMTYPEID Platform,
  827. IN PCTSTR Group, OPTIONAL
  828. IN PCTSTR VariableName,
  829. OUT PTSTR VariableValue, OPTIONAL
  830. IN UINT DataSize,
  831. OUT PUINT DataSizeNeeded OPTIONAL
  832. );
  833. #define IsmCopyEnvironmentString(p,g,n,v) IsmGetEnvironmentString(p,g,n,v,sizeof(v)/sizeof((v)[0]),NULL)
  834. BOOL
  835. WINAPI
  836. IsmGetEnvironmentMultiSz (
  837. IN MIG_PLATFORMTYPEID Platform,
  838. IN PCTSTR Group, OPTIONAL
  839. IN PCTSTR VariableName,
  840. OUT PTSTR VariableValue, OPTIONAL
  841. IN UINT DataSize,
  842. OUT PUINT DataSizeNeeded OPTIONAL
  843. );
  844. BOOL
  845. WINAPI
  846. IsmGetEnvironmentCallback (
  847. IN MIG_PLATFORMTYPEID Platform,
  848. IN PCTSTR Group, OPTIONAL
  849. IN PCTSTR VariableName,
  850. OUT PENVENTRYCALLBACK *VariableCallback OPTIONAL
  851. );
  852. BOOL
  853. WINAPI
  854. IsmGetEnvironmentData (
  855. IN MIG_PLATFORMTYPEID Platform,
  856. IN PCTSTR Group, OPTIONAL
  857. IN PCTSTR VariableName,
  858. OUT PBYTE VariableData, OPTIONAL
  859. IN UINT DataSize,
  860. OUT PUINT DataSizeNeeded OPTIONAL
  861. );
  862. BOOL
  863. WINAPI
  864. IsmIsEnvironmentFlagSet (
  865. IN MIG_PLATFORMTYPEID Platform,
  866. IN PCTSTR Group, OPTIONAL
  867. IN PCTSTR VariableName
  868. );
  869. BOOL
  870. WINAPI
  871. IsmDeleteEnvironmentVariable (
  872. IN MIG_PLATFORMTYPEID Platform,
  873. IN PCTSTR Group, OPTIONAL
  874. IN PCTSTR VariableName
  875. );
  876. PCTSTR
  877. WINAPI
  878. TrackedIsmExpandEnvironmentString (
  879. IN MIG_PLATFORMTYPEID Platform,
  880. IN PCTSTR Group, OPTIONAL
  881. IN PCTSTR SrcString,
  882. IN PCTSTR Context
  883. TRACKING_DEF
  884. );
  885. #define IsmExpandEnvironmentString(p,g,s,c) TrackedIsmExpandEnvironmentString(p,g,s,c TRACKING_CALL)
  886. PCTSTR
  887. WINAPI
  888. TrackedIsmCompressEnvironmentString (
  889. IN MIG_PLATFORMTYPEID Platform,
  890. IN PCTSTR Group, OPTIONAL
  891. IN PCTSTR SrcString,
  892. IN PCTSTR Context,
  893. IN BOOL MustExistOnOtherPlatform
  894. TRACKING_DEF
  895. );
  896. #define IsmCompressEnvironmentString(p,g,s,c,m) TrackedIsmCompressEnvironmentString(p,g,s,c,m TRACKING_CALL)
  897. BOOL
  898. WINAPI
  899. IsmGetTransportVariable (
  900. IN MIG_PLATFORMTYPEID Platform,
  901. IN PCTSTR Section,
  902. IN PCTSTR Key,
  903. OUT PTSTR KeyData, OPTIONAL
  904. IN UINT KeyDataBufferSizeInBytes
  905. );
  906. BOOL
  907. WINAPI
  908. IsmSetTransportVariable (
  909. IN MIG_PLATFORMTYPEID Platform,
  910. IN PCTSTR Section,
  911. IN PCTSTR Key,
  912. IN PCTSTR KeyData
  913. );
  914. ULONG_PTR
  915. WINAPI
  916. IsmSendMessageToApp (
  917. UINT Message,
  918. ULONG_PTR Arg
  919. );
  920. MIG_PROGRESSSLICEID
  921. WINAPI
  922. IsmRegisterProgressSlice (
  923. IN UINT Ticks,
  924. IN UINT TimeEstimateInSeconds
  925. );
  926. BOOL
  927. WINAPI
  928. IsmTickProgressBar (
  929. IN MIG_PROGRESSSLICEID SliceId,
  930. IN UINT TickDelta OPTIONAL
  931. );
  932. #define IsmCheckCancel() (IsmTickProgressBar(0,0)==FALSE)
  933. BOOL
  934. WINAPI
  935. IsmCurrentlyExecuting (
  936. VOID
  937. );
  938. VOID
  939. WINAPI
  940. IsmSetCancel (
  941. VOID
  942. );
  943. //
  944. // encoded strings support
  945. //
  946. MIG_OBJECTSTRINGHANDLE
  947. WINAPI
  948. TrackedIsmCreateObjectHandle (
  949. IN PCTSTR Node,
  950. IN PCTSTR Leaf
  951. TRACKING_DEF
  952. );
  953. #define IsmCreateObjectHandle(n,l) TrackedIsmCreateObjectHandle(n,l TRACKING_CALL)
  954. BOOL
  955. WINAPI
  956. TrackedIsmCreateObjectStringsFromHandleEx (
  957. IN MIG_OBJECTSTRINGHANDLE Handle,
  958. OUT PCTSTR *Node, OPTIONAL
  959. OUT PCTSTR *Leaf, OPTIONAL
  960. IN BOOL DoNotDecode
  961. TRACKING_DEF
  962. );
  963. #define IsmCreateObjectStringsFromHandleEx(h,n,l,d) TrackedIsmCreateObjectStringsFromHandleEx(h,n,l,d TRACKING_CALL)
  964. #define IsmCreateObjectStringsFromHandle(handle,node,leaf) IsmCreateObjectStringsFromHandleEx(handle,node,leaf,FALSE)
  965. BOOL
  966. WINAPI
  967. IsmIsObjectHandleNodeOnly (
  968. IN MIG_OBJECTSTRINGHANDLE Handle
  969. );
  970. BOOL
  971. WINAPI
  972. IsmIsObjectHandleLeafOnly (
  973. IN MIG_OBJECTSTRINGHANDLE Handle
  974. );
  975. VOID
  976. WINAPI
  977. IsmDestroyObjectString (
  978. IN PCTSTR String
  979. );
  980. VOID
  981. WINAPI
  982. IsmDestroyObjectHandle (
  983. IN MIG_OBJECTSTRINGHANDLE Handle
  984. );
  985. MIG_OBJECTSTRINGHANDLE
  986. WINAPI
  987. TrackedIsmCreateObjectPattern (
  988. IN PMIG_SEGMENTS NodeSegments, OPTIONAL
  989. IN UINT NodeSegmentsNr,
  990. IN PMIG_SEGMENTS LeafSegments, OPTIONAL
  991. IN UINT LeafSegmentsNr
  992. TRACKING_DEF
  993. );
  994. #define IsmCreateObjectPattern(node,ncnt,leaf,lcnt) TrackedIsmCreateObjectPattern(node,ncnt,leaf,lcnt TRACKING_CALL)
  995. MIG_OBJECTSTRINGHANDLE
  996. WINAPI
  997. TrackedIsmCreateSimpleObjectPattern (
  998. IN PCTSTR BaseNode, OPTIONAL
  999. IN BOOL EnumTree,
  1000. IN PCTSTR Leaf, OPTIONAL
  1001. IN BOOL LeafIsPattern
  1002. TRACKING_DEF
  1003. );
  1004. #define IsmCreateSimpleObjectPattern(base,tree,leaf,pat) TrackedIsmCreateSimpleObjectPattern(base,tree,leaf,pat TRACKING_CALL)
  1005. MIG_PARSEDPATTERN
  1006. IsmCreateParsedPattern (
  1007. IN MIG_OBJECTSTRINGHANDLE EncodedObject
  1008. );
  1009. VOID
  1010. IsmDestroyParsedPattern (
  1011. IN MIG_PARSEDPATTERN ParsedPattern
  1012. );
  1013. BOOL
  1014. WINAPI
  1015. IsmParsedPatternMatchEx (
  1016. IN MIG_PARSEDPATTERN ParsedPattern,
  1017. IN MIG_OBJECTTYPEID ObjectTypeId, OPTIONAL
  1018. IN PCTSTR Node, OPTIONAL
  1019. IN PCTSTR Leaf OPTIONAL
  1020. );
  1021. BOOL
  1022. WINAPI
  1023. IsmParsedPatternMatch (
  1024. IN MIG_PARSEDPATTERN ParsedPattern,
  1025. IN MIG_OBJECTTYPEID ObjectTypeId, OPTIONAL
  1026. IN MIG_OBJECTSTRINGHANDLE ObjectName
  1027. );
  1028. //
  1029. // objects
  1030. //
  1031. MIG_OBJECTID
  1032. WINAPI
  1033. IsmGetObjectIdFromName (
  1034. IN MIG_OBJECTTYPEID ObjectTypeId,
  1035. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName,
  1036. IN BOOL MustExist
  1037. );
  1038. VOID
  1039. WINAPI
  1040. IsmLockObjectId (
  1041. IN MIG_OBJECTID ObjectId
  1042. );
  1043. VOID
  1044. WINAPI
  1045. IsmLockObject (
  1046. IN MIG_OBJECTTYPEID ObjectTypeId,
  1047. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1048. );
  1049. MIG_OBJECTSTRINGHANDLE
  1050. WINAPI
  1051. IsmFilterObject (
  1052. IN MIG_OBJECTTYPEID ObjectTypeId,
  1053. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1054. OUT MIG_OBJECTTYPEID *NewObjectTypeId, OPTIONAL
  1055. OUT PBOOL ObjectDeleted, OPTIONAL
  1056. OUT PBOOL ObjectReplaced OPTIONAL
  1057. );
  1058. BOOL
  1059. WINAPI
  1060. IsmEnumFirstSourceObjectEx (
  1061. OUT PMIG_OBJECT_ENUM ObjectEnum,
  1062. IN MIG_OBJECTTYPEID ObjectTypeId,
  1063. IN MIG_OBJECTSTRINGHANDLE ObjectPattern,
  1064. IN BOOL EnumerateVirtualObjects
  1065. );
  1066. #define IsmEnumFirstSourceObject(e,t,p) IsmEnumFirstSourceObjectEx(e,t,p,FALSE)
  1067. BOOL
  1068. WINAPI
  1069. IsmEnumFirstDestinationObjectEx (
  1070. OUT PMIG_OBJECT_ENUM ObjectEnum,
  1071. IN MIG_OBJECTTYPEID ObjectTypeId,
  1072. IN MIG_OBJECTSTRINGHANDLE ObjectPattern,
  1073. IN BOOL EnumerateVirtualObjects
  1074. );
  1075. #define IsmEnumFirstDestinationObject(e,t,p) IsmEnumFirstDestinationObjectEx(e,t,p,FALSE)
  1076. BOOL
  1077. WINAPI
  1078. IsmEnumNextObject (
  1079. IN OUT PMIG_OBJECT_ENUM ObjectEnum
  1080. );
  1081. VOID
  1082. WINAPI
  1083. IsmAbortObjectEnum (
  1084. IN PMIG_OBJECT_ENUM ObjectEnum
  1085. );
  1086. //
  1087. // persistence, apply, AbandonOnCollision, and NonCritical flags
  1088. //
  1089. BOOL
  1090. WINAPI
  1091. IsmMakePersistentObjectId (
  1092. IN MIG_OBJECTID ObjectId
  1093. );
  1094. BOOL
  1095. WINAPI
  1096. IsmMakePersistentObject (
  1097. IN MIG_OBJECTTYPEID ObjectTypeId,
  1098. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1099. );
  1100. BOOL
  1101. WINAPI
  1102. IsmClearPersistenceOnObjectId (
  1103. IN MIG_OBJECTID ObjectId
  1104. );
  1105. BOOL
  1106. WINAPI
  1107. IsmClearPersistenceOnObject (
  1108. IN MIG_OBJECTTYPEID ObjectTypeId,
  1109. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1110. );
  1111. BOOL
  1112. WINAPI
  1113. IsmIsPersistentObjectId (
  1114. IN MIG_OBJECTID ObjectId
  1115. );
  1116. BOOL
  1117. WINAPI
  1118. IsmIsPersistentObject (
  1119. IN MIG_OBJECTTYPEID ObjectTypeId,
  1120. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1121. );
  1122. BOOL
  1123. WINAPI
  1124. IsmEnumFirstPersistentObject (
  1125. OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr
  1126. );
  1127. BOOL
  1128. WINAPI
  1129. IsmEnumNextPersistentObject (
  1130. IN OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr
  1131. );
  1132. VOID
  1133. WINAPI
  1134. IsmAbortPersistentObjectEnum (
  1135. IN PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr
  1136. );
  1137. BOOL
  1138. WINAPI
  1139. IsmMakeApplyObjectId (
  1140. IN MIG_OBJECTID ObjectId
  1141. );
  1142. BOOL
  1143. WINAPI
  1144. IsmMakeApplyObject (
  1145. IN MIG_OBJECTTYPEID ObjectTypeId,
  1146. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1147. );
  1148. BOOL
  1149. WINAPI
  1150. IsmClearApplyOnObjectId (
  1151. IN MIG_OBJECTID ObjectId
  1152. );
  1153. BOOL
  1154. WINAPI
  1155. IsmClearApplyOnObject (
  1156. IN MIG_OBJECTTYPEID ObjectTypeId,
  1157. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1158. );
  1159. BOOL
  1160. WINAPI
  1161. IsmIsApplyObjectId (
  1162. IN MIG_OBJECTID ObjectId
  1163. );
  1164. BOOL
  1165. WINAPI
  1166. IsmIsApplyObject (
  1167. IN MIG_OBJECTTYPEID ObjectTypeId,
  1168. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1169. );
  1170. BOOL
  1171. WINAPI
  1172. IsmEnumFirstApplyObject (
  1173. OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr
  1174. );
  1175. BOOL
  1176. WINAPI
  1177. IsmEnumNextApplyObject (
  1178. IN OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr
  1179. );
  1180. VOID
  1181. WINAPI
  1182. IsmAbortApplyObjectEnum (
  1183. IN PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr
  1184. );
  1185. BOOL
  1186. WINAPI
  1187. IsmAbandonObjectIdOnCollision (
  1188. IN MIG_OBJECTID ObjectId
  1189. );
  1190. BOOL
  1191. WINAPI
  1192. IsmAbandonObjectOnCollision (
  1193. IN MIG_OBJECTTYPEID ObjectTypeId,
  1194. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1195. );
  1196. BOOL
  1197. WINAPI
  1198. IsmClearAbandonObjectIdOnCollision (
  1199. IN MIG_OBJECTID ObjectId
  1200. );
  1201. BOOL
  1202. WINAPI
  1203. IsmClearAbandonObjectOnCollision (
  1204. IN MIG_OBJECTTYPEID ObjectTypeId,
  1205. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1206. );
  1207. BOOL
  1208. WINAPI
  1209. IsmIsObjectIdAbandonedOnCollision (
  1210. IN MIG_OBJECTID ObjectId
  1211. );
  1212. BOOL
  1213. WINAPI
  1214. IsmIsObjectAbandonedOnCollision (
  1215. IN MIG_OBJECTTYPEID ObjectTypeId,
  1216. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1217. );
  1218. BOOL
  1219. WINAPI
  1220. IsmMakeNonCriticalObjectId (
  1221. IN MIG_OBJECTID ObjectId
  1222. );
  1223. BOOL
  1224. WINAPI
  1225. IsmMakeNonCriticalObject (
  1226. IN MIG_OBJECTTYPEID ObjectTypeId,
  1227. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1228. );
  1229. BOOL
  1230. WINAPI
  1231. IsmClearNonCriticalFlagOnObjectId (
  1232. IN MIG_OBJECTID ObjectId
  1233. );
  1234. BOOL
  1235. WINAPI
  1236. IsmClearNonCriticalFlagOnObject (
  1237. IN MIG_OBJECTTYPEID ObjectTypeId,
  1238. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1239. );
  1240. BOOL
  1241. WINAPI
  1242. IsmIsNonCriticalObjectId (
  1243. IN MIG_OBJECTID ObjectId
  1244. );
  1245. BOOL
  1246. WINAPI
  1247. IsmIsNonCriticalObject (
  1248. IN MIG_OBJECTTYPEID ObjectTypeId,
  1249. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1250. );
  1251. //
  1252. // attributes
  1253. //
  1254. MIG_ATTRIBUTEID
  1255. WINAPI
  1256. IsmRegisterAttribute (
  1257. IN PCTSTR AttributeName,
  1258. IN BOOL Private
  1259. );
  1260. BOOL
  1261. WINAPI
  1262. IsmGetAttributeName (
  1263. IN MIG_ATTRIBUTEID AttributeId,
  1264. OUT PTSTR AttributeName, OPTIONAL
  1265. IN UINT AttributeNameBufChars,
  1266. OUT PBOOL Private, OPTIONAL
  1267. OUT PBOOL BelongsToMe, OPTIONAL
  1268. OUT PUINT ObjectReferences OPTIONAL
  1269. );
  1270. MIG_ATTRIBUTEID
  1271. WINAPI
  1272. IsmGetAttributeGroup (
  1273. IN MIG_ATTRIBUTEID AttributeId
  1274. );
  1275. BOOL
  1276. WINAPI
  1277. IsmSetAttributeOnObjectId (
  1278. IN MIG_OBJECTID ObjectId,
  1279. IN MIG_ATTRIBUTEID AttributeId
  1280. );
  1281. BOOL
  1282. WINAPI
  1283. IsmSetAttributeOnObject (
  1284. IN MIG_OBJECTTYPEID ObjectTypeId,
  1285. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName,
  1286. IN MIG_ATTRIBUTEID AttributeId
  1287. );
  1288. VOID
  1289. WINAPI
  1290. IsmLockAttribute (
  1291. IN MIG_OBJECTID ObjectId,
  1292. IN MIG_ATTRIBUTEID AttributeId
  1293. );
  1294. BOOL
  1295. WINAPI
  1296. IsmClearAttributeOnObjectId (
  1297. IN MIG_OBJECTID ObjectId,
  1298. IN MIG_ATTRIBUTEID AttributeId
  1299. );
  1300. BOOL
  1301. WINAPI
  1302. IsmClearAttributeOnObject (
  1303. IN MIG_OBJECTTYPEID ObjectTypeId,
  1304. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName,
  1305. IN MIG_ATTRIBUTEID AttributeId
  1306. );
  1307. BOOL
  1308. WINAPI
  1309. IsmIsAttributeSetOnObjectId (
  1310. IN MIG_OBJECTID ObjectId,
  1311. IN MIG_ATTRIBUTEID AttributeId
  1312. );
  1313. BOOL
  1314. WINAPI
  1315. IsmIsAttributeSetOnObject (
  1316. IN MIG_OBJECTTYPEID ObjectTypeId,
  1317. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName,
  1318. IN MIG_ATTRIBUTEID AttributeId
  1319. );
  1320. BOOL
  1321. WINAPI
  1322. IsmEnumFirstObjectAttributeById (
  1323. OUT PMIG_OBJECTATTRIBUTE_ENUM EnumPtr,
  1324. IN MIG_OBJECTID ObjectId
  1325. );
  1326. BOOL
  1327. WINAPI
  1328. IsmEnumFirstObjectAttribute (
  1329. OUT PMIG_OBJECTATTRIBUTE_ENUM EnumPtr,
  1330. IN MIG_OBJECTTYPEID ObjectTypeId,
  1331. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1332. );
  1333. BOOL
  1334. WINAPI
  1335. IsmEnumNextObjectAttribute (
  1336. IN OUT PMIG_OBJECTATTRIBUTE_ENUM EnumPtr
  1337. );
  1338. VOID
  1339. WINAPI
  1340. IsmAbortObjectAttributeEnum (
  1341. IN OUT PMIG_OBJECTATTRIBUTE_ENUM EnumPtr
  1342. );
  1343. BOOL
  1344. WINAPI
  1345. IsmEnumFirstObjectWithAttribute (
  1346. OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr,
  1347. IN MIG_ATTRIBUTEID AttributeId
  1348. );
  1349. BOOL
  1350. WINAPI
  1351. IsmEnumNextObjectWithAttribute (
  1352. IN OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr
  1353. );
  1354. VOID
  1355. WINAPI
  1356. IsmAbortObjectWithAttributeEnum (
  1357. IN OUT PMIG_OBJECTWITHATTRIBUTE_ENUM EnumPtr
  1358. );
  1359. //
  1360. // properties
  1361. //
  1362. MIG_PROPERTYID
  1363. WINAPI
  1364. IsmRegisterProperty (
  1365. IN PCTSTR PropertyName,
  1366. IN BOOL Private
  1367. );
  1368. BOOL
  1369. WINAPI
  1370. IsmGetPropertyName (
  1371. IN MIG_PROPERTYID PropertyId,
  1372. OUT PTSTR PropertyName, OPTIONAL
  1373. IN UINT PropertyNameBufChars,
  1374. OUT PBOOL Private, OPTIONAL
  1375. OUT PBOOL BelongsToMe, OPTIONAL
  1376. OUT PUINT ObjectReferences OPTIONAL
  1377. );
  1378. MIG_PROPERTYID
  1379. WINAPI
  1380. IsmGetPropertyGroup (
  1381. IN MIG_PROPERTYID PropertyId
  1382. );
  1383. MIG_PROPERTYDATAID
  1384. WINAPI
  1385. IsmAddPropertyToObjectId (
  1386. IN MIG_OBJECTID ObjectId,
  1387. IN MIG_PROPERTYID PropertyId,
  1388. IN PCMIG_BLOB Property
  1389. );
  1390. MIG_PROPERTYDATAID
  1391. WINAPI
  1392. IsmAddPropertyToObject (
  1393. IN MIG_OBJECTTYPEID ObjectTypeId,
  1394. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName,
  1395. IN MIG_PROPERTYID PropertyId,
  1396. IN PCMIG_BLOB Property
  1397. );
  1398. MIG_PROPERTYDATAID
  1399. WINAPI
  1400. IsmRegisterPropertyData (
  1401. IN PCMIG_BLOB Property
  1402. );
  1403. BOOL
  1404. WINAPI
  1405. IsmAddPropertyDataToObjectId (
  1406. IN MIG_OBJECTID ObjectId,
  1407. IN MIG_PROPERTYID PropertyId,
  1408. IN MIG_PROPERTYDATAID PropertyDataId
  1409. );
  1410. BOOL
  1411. WINAPI
  1412. IsmAddPropertyDataToObject (
  1413. IN MIG_OBJECTTYPEID ObjectTypeId,
  1414. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName,
  1415. IN MIG_PROPERTYID PropertyId,
  1416. IN MIG_PROPERTYDATAID PropertyDataId
  1417. );
  1418. VOID
  1419. WINAPI
  1420. IsmLockProperty (
  1421. IN MIG_OBJECTID ObjectId,
  1422. IN MIG_PROPERTYID PropertyId
  1423. );
  1424. BOOL
  1425. WINAPI
  1426. IsmGetPropertyData (
  1427. IN MIG_PROPERTYDATAID PropertyDataId,
  1428. OUT PBYTE Buffer, OPTIONAL
  1429. IN UINT BufferSize,
  1430. OUT PUINT PropertyDataSize, OPTIONAL
  1431. OUT PMIG_BLOBTYPE PropertyDataType OPTIONAL
  1432. );
  1433. BOOL
  1434. WINAPI
  1435. IsmRemovePropertyData (
  1436. IN MIG_PROPERTYDATAID PropertyDataId
  1437. );
  1438. BOOL
  1439. WINAPI
  1440. IsmRemovePropertyFromObject (
  1441. IN MIG_OBJECTTYPEID ObjectTypeId,
  1442. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName,
  1443. IN MIG_PROPERTYDATAID PropertyId
  1444. );
  1445. BOOL
  1446. WINAPI
  1447. IsmRemovePropertyFromObjectId (
  1448. IN MIG_OBJECTID ObjectId,
  1449. IN MIG_PROPERTYID PropertyId
  1450. );
  1451. BOOL
  1452. WINAPI
  1453. IsmIsPropertySetOnObject (
  1454. IN MIG_OBJECTTYPEID ObjectTypeId,
  1455. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName,
  1456. IN MIG_PROPERTYID PropertyId
  1457. );
  1458. BOOL
  1459. WINAPI
  1460. IsmIsPropertySetOnObjectId (
  1461. IN MIG_OBJECTID ObjectId,
  1462. IN MIG_PROPERTYID PropertyId
  1463. );
  1464. BOOL
  1465. WINAPI
  1466. IsmEnumFirstObjectProperty (
  1467. OUT PMIG_OBJECTPROPERTY_ENUM EnumPtr,
  1468. IN MIG_OBJECTTYPEID ObjectTypeId,
  1469. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1470. IN MIG_PROPERTYID FilterProperty OPTIONAL
  1471. );
  1472. BOOL
  1473. WINAPI
  1474. IsmEnumFirstObjectPropertyById (
  1475. OUT PMIG_OBJECTPROPERTY_ENUM EnumPtr,
  1476. IN MIG_OBJECTID ObjectId,
  1477. IN MIG_PROPERTYID FilterProperty OPTIONAL
  1478. );
  1479. BOOL
  1480. WINAPI
  1481. IsmEnumNextObjectProperty (
  1482. IN OUT PMIG_OBJECTPROPERTY_ENUM EnumPtr
  1483. );
  1484. VOID
  1485. WINAPI
  1486. IsmAbortObjectPropertyEnum (
  1487. IN OUT PMIG_OBJECTPROPERTY_ENUM EnumPtr
  1488. );
  1489. MIG_PROPERTYDATAID
  1490. WINAPI
  1491. IsmGetPropertyFromObject (
  1492. IN MIG_OBJECTTYPEID ObjectTypeId,
  1493. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1494. IN MIG_PROPERTYID ObjectProperty
  1495. );
  1496. MIG_PROPERTYDATAID
  1497. WINAPI
  1498. IsmGetPropertyFromObjectId (
  1499. IN MIG_OBJECTID ObjectId,
  1500. IN MIG_PROPERTYID ObjectProperty
  1501. );
  1502. BOOL
  1503. WINAPI
  1504. IsmEnumFirstObjectWithProperty (
  1505. OUT PMIG_OBJECTWITHPROPERTY_ENUM EnumPtr,
  1506. IN MIG_PROPERTYID PropertyId
  1507. );
  1508. BOOL
  1509. WINAPI
  1510. IsmEnumNextObjectWithProperty (
  1511. IN OUT PMIG_OBJECTWITHPROPERTY_ENUM EnumPtr
  1512. );
  1513. VOID
  1514. WINAPI
  1515. IsmAbortObjectWithPropertyEnum (
  1516. IN OUT PMIG_OBJECTWITHPROPERTY_ENUM EnumPtr
  1517. );
  1518. //
  1519. // operations
  1520. //
  1521. MIG_OPERATIONID
  1522. WINAPI
  1523. IsmRegisterOperation (
  1524. IN PCTSTR Name,
  1525. IN BOOL Private
  1526. );
  1527. BOOL
  1528. WINAPI
  1529. IsmGetOperationName (
  1530. IN MIG_OPERATIONID OperationId,
  1531. OUT PTSTR OperationName, OPTIONAL
  1532. IN UINT OperationNameBufChars,
  1533. OUT PBOOL Private, OPTIONAL
  1534. OUT PBOOL BelongsToMe, OPTIONAL
  1535. OUT PUINT ObjectReferences OPTIONAL
  1536. );
  1537. MIG_OPERATIONID
  1538. WINAPI
  1539. IsmGetOperationGroup (
  1540. IN MIG_OPERATIONID OperationId
  1541. );
  1542. BOOL
  1543. WINAPI
  1544. IsmSetOperationOnObjectId (
  1545. IN MIG_OBJECTID ObjectId,
  1546. IN MIG_OPERATIONID OperationId,
  1547. IN PCMIG_BLOB SourceData, OPTIONAL
  1548. IN PCMIG_BLOB DestinationData OPTIONAL
  1549. );
  1550. BOOL
  1551. WINAPI
  1552. IsmSetOperationOnObject (
  1553. IN MIG_OBJECTTYPEID ObjectTypeId,
  1554. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1555. IN MIG_OPERATIONID OperationId,
  1556. IN PCMIG_BLOB SourceData, OPTIONAL
  1557. IN PCMIG_BLOB DestinationData OPTIONAL
  1558. );
  1559. MIG_DATAHANDLE
  1560. WINAPI
  1561. IsmRegisterOperationData (
  1562. IN PCMIG_BLOB Data
  1563. );
  1564. BOOL
  1565. WINAPI
  1566. IsmSetOperationOnObjectId2 (
  1567. IN MIG_OBJECTID ObjectId,
  1568. IN MIG_OPERATIONID OperationId,
  1569. IN MIG_DATAHANDLE SourceData, OPTIONAL
  1570. IN MIG_DATAHANDLE DestinationData OPTIONAL
  1571. );
  1572. BOOL
  1573. WINAPI
  1574. IsmSetOperationOnObject2 (
  1575. IN MIG_OBJECTTYPEID ObjectTypeId,
  1576. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1577. IN MIG_OPERATIONID OperationId,
  1578. IN MIG_DATAHANDLE SourceData, OPTIONAL
  1579. IN MIG_DATAHANDLE DestinationData OPTIONAL
  1580. );
  1581. VOID
  1582. WINAPI
  1583. IsmLockOperation (
  1584. IN MIG_OBJECTID ObjectId,
  1585. IN MIG_OPERATIONID OperationId
  1586. );
  1587. BOOL
  1588. WINAPI
  1589. IsmClearOperationOnObjectId (
  1590. IN MIG_OBJECTID ObjectId,
  1591. IN MIG_OPERATIONID OperationId
  1592. );
  1593. BOOL
  1594. WINAPI
  1595. IsmClearOperationOnObject (
  1596. IN MIG_OBJECTTYPEID ObjectTypeId,
  1597. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1598. IN MIG_OPERATIONID OperationId
  1599. );
  1600. BOOL
  1601. WINAPI
  1602. IsmIsOperationSetOnObjectId (
  1603. IN MIG_OBJECTID ObjectId,
  1604. IN MIG_OPERATIONID OperationId
  1605. );
  1606. BOOL
  1607. WINAPI
  1608. IsmIsOperationSetOnObject (
  1609. IN MIG_OBJECTTYPEID ObjectTypeId,
  1610. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1611. IN MIG_OPERATIONID OperationId
  1612. );
  1613. BOOL
  1614. WINAPI
  1615. IsmGetObjectOperationDataById (
  1616. IN MIG_OBJECTID ObjectId,
  1617. IN MIG_OPERATIONID OperationId,
  1618. OUT PBYTE Buffer, OPTIONAL
  1619. IN UINT BufferSize,
  1620. OUT PUINT BufferSizeNeeded, OPTIONAL
  1621. OUT PMIG_BLOBTYPE Type, OPTIONAL
  1622. IN BOOL DestinationData
  1623. );
  1624. BOOL
  1625. WINAPI
  1626. IsmGetObjectOperationData (
  1627. IN MIG_OBJECTTYPEID ObjectTypeId,
  1628. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1629. IN MIG_OPERATIONID OperationId,
  1630. OUT PBYTE Buffer, OPTIONAL
  1631. IN UINT BufferSize,
  1632. OUT PUINT BufferSizeNeeded, OPTIONAL
  1633. OUT PMIG_BLOBTYPE Type, OPTIONAL
  1634. IN BOOL DestinationData
  1635. );
  1636. BOOL
  1637. WINAPI
  1638. IsmEnumFirstObjectOperationById (
  1639. OUT PMIG_OBJECTOPERATION_ENUM EnumPtr,
  1640. IN MIG_OBJECTID ObjectId
  1641. );
  1642. BOOL
  1643. WINAPI
  1644. IsmEnumFirstObjectOperation (
  1645. OUT PMIG_OBJECTOPERATION_ENUM EnumPtr,
  1646. IN MIG_OBJECTTYPEID ObjectTypeId,
  1647. IN MIG_OBJECTSTRINGHANDLE ObjectName
  1648. );
  1649. BOOL
  1650. WINAPI
  1651. IsmEnumNextObjectOperation (
  1652. IN OUT PMIG_OBJECTOPERATION_ENUM EnumPtr
  1653. );
  1654. VOID
  1655. WINAPI
  1656. IsmAbortObjectOperationEnum (
  1657. IN OUT PMIG_OBJECTOPERATION_ENUM EnumPtr
  1658. );
  1659. BOOL
  1660. WINAPI
  1661. IsmEnumFirstObjectWithOperation (
  1662. OUT PMIG_OBJECTWITHOPERATION_ENUM EnumPtr,
  1663. IN MIG_OPERATIONID OperationId
  1664. );
  1665. BOOL
  1666. WINAPI
  1667. IsmEnumNextObjectWithOperation (
  1668. IN OUT PMIG_OBJECTWITHOPERATION_ENUM EnumPtr
  1669. );
  1670. VOID
  1671. WINAPI
  1672. IsmAbortObjectWithOperationEnum (
  1673. IN OUT PMIG_OBJECTWITHOPERATION_ENUM EnumPtr
  1674. );
  1675. BOOL
  1676. WINAPI
  1677. IsmRegisterOperationFilterCallback (
  1678. IN MIG_OPERATIONID OperationId,
  1679. IN POPMFILTERCALLBACK Callback,
  1680. IN BOOL TreeFilter,
  1681. IN BOOL HighPriority,
  1682. IN BOOL CanHandleNoRestore
  1683. );
  1684. BOOL
  1685. WINAPI
  1686. IsmRegisterGlobalFilterCallback (
  1687. IN MIG_OBJECTTYPEID ObjectTypeId,
  1688. IN PCTSTR FunctionId,
  1689. IN POPMFILTERCALLBACK Callback,
  1690. IN BOOL TreeFilter,
  1691. IN BOOL CanHandleNoRestore
  1692. );
  1693. BOOL
  1694. WINAPI
  1695. IsmRegisterOperationApplyCallback (
  1696. IN MIG_OPERATIONID OperationId,
  1697. IN POPMAPPLYCALLBACK Callback,
  1698. IN BOOL HighPriority
  1699. );
  1700. BOOL
  1701. WINAPI
  1702. IsmRegisterGlobalApplyCallback (
  1703. IN MIG_OBJECTTYPEID ObjectTypeId,
  1704. IN PCTSTR FunctionId,
  1705. IN POPMAPPLYCALLBACK Callback
  1706. );
  1707. //
  1708. // enumeration and object types
  1709. //
  1710. BOOL
  1711. WINAPI
  1712. IsmQueueEnumeration (
  1713. IN MIG_OBJECTTYPEID ObjectTypeId,
  1714. IN MIG_OBJECTSTRINGHANDLE ObjectPattern,
  1715. IN PMIG_OBJECTENUMCALLBACK Callback, OPTIONAL
  1716. IN ULONG_PTR CallbackArg, OPTIONAL
  1717. IN PCTSTR FunctionId OPTIONAL
  1718. );
  1719. BOOL
  1720. WINAPI
  1721. IsmHookEnumeration (
  1722. IN MIG_OBJECTTYPEID ObjectTypeId,
  1723. IN MIG_OBJECTSTRINGHANDLE ObjectPattern,
  1724. IN PMIG_OBJECTENUMCALLBACK Callback,
  1725. IN ULONG_PTR CallbackArg, OPTIONAL
  1726. IN PCTSTR FunctionId OPTIONAL
  1727. );
  1728. BOOL
  1729. WINAPI
  1730. IsmRegisterStaticExclusion (
  1731. IN MIG_OBJECTTYPEID ObjectTypeId,
  1732. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1733. );
  1734. BOOL
  1735. WINAPI
  1736. IsmRegisterDynamicExclusion (
  1737. IN MIG_OBJECTTYPEID ObjectTypeId,
  1738. IN MIG_OBJECTSTRINGHANDLE ObjectPattern,
  1739. IN PMIG_DYNAMICEXCLUSIONCALLBACK Callback,
  1740. IN ULONG_PTR CallbackArg, OPTIONAL
  1741. IN PCTSTR FunctionId OPTIONAL
  1742. );
  1743. BOOL
  1744. WINAPI
  1745. IsmRegisterPreEnumerationCallback (
  1746. IN PMIG_PREENUMCALLBACK Callback,
  1747. IN PCTSTR FunctionId OPTIONAL
  1748. );
  1749. BOOL
  1750. WINAPI
  1751. IsmRegisterTypePreEnumerationCallback (
  1752. IN MIG_OBJECTTYPEID ObjectTypeId,
  1753. IN PMIG_PREENUMCALLBACK Callback,
  1754. IN PCTSTR FunctionId OPTIONAL
  1755. );
  1756. BOOL
  1757. WINAPI
  1758. IsmRegisterPostEnumerationCallback (
  1759. IN PMIG_POSTENUMCALLBACK Callback,
  1760. IN PCTSTR FunctionId OPTIONAL
  1761. );
  1762. BOOL
  1763. WINAPI
  1764. IsmRegisterTypePostEnumerationCallback (
  1765. IN MIG_OBJECTTYPEID ObjectTypeId,
  1766. IN PMIG_POSTENUMCALLBACK Callback,
  1767. IN PCTSTR FunctionId OPTIONAL
  1768. );
  1769. MIG_OBJECTTYPEID
  1770. WINAPI
  1771. IsmGetObjectTypeId (
  1772. IN PCTSTR ObjectTypeName
  1773. );
  1774. PCTSTR
  1775. WINAPI
  1776. IsmGetObjectTypeName (
  1777. IN MIG_OBJECTTYPEID TypeId
  1778. );
  1779. UINT
  1780. WINAPI
  1781. IsmGetObjectTypePriority (
  1782. IN MIG_OBJECTTYPEID TypeId
  1783. );
  1784. VOID
  1785. WINAPI
  1786. IsmExecuteHooks (
  1787. IN MIG_OBJECTTYPEID ObjectTypeId,
  1788. IN MIG_OBJECTSTRINGHANDLE EncodedObjectName
  1789. );
  1790. //
  1791. // transport interface
  1792. //
  1793. BOOL
  1794. IsmDoesObjectExist (
  1795. IN MIG_OBJECTTYPEID ObjectTypeId,
  1796. IN MIG_OBJECTSTRINGHANDLE ObjectName
  1797. );
  1798. BOOL
  1799. WINAPI
  1800. IsmAcquireObjectEx (
  1801. IN MIG_OBJECTTYPEID ObjectTypeId,
  1802. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1803. OUT PMIG_CONTENT ObjectContent,
  1804. IN MIG_CONTENTTYPE ContentType,
  1805. IN UINT MemoryContentLimit
  1806. );
  1807. #define IsmAcquireObject(type,name,content) IsmAcquireObjectEx(type,name,content,CONTENTTYPE_ANY,0)
  1808. BOOL
  1809. WINAPI
  1810. IsmReleaseObject (
  1811. IN OUT PMIG_CONTENT ObjectContent
  1812. );
  1813. PMIG_CONTENT
  1814. IsmConvertObjectContentToUnicode (
  1815. IN MIG_OBJECTTYPEID ObjectTypeId,
  1816. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1817. IN PMIG_CONTENT ObjectContent
  1818. );
  1819. PMIG_CONTENT
  1820. IsmConvertObjectContentToAnsi (
  1821. IN MIG_OBJECTTYPEID ObjectTypeId,
  1822. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1823. IN PMIG_CONTENT ObjectContent
  1824. );
  1825. BOOL
  1826. IsmFreeConvertedObjectContent (
  1827. IN MIG_OBJECTTYPEID ObjectTypeId,
  1828. IN PMIG_CONTENT ObjectContent
  1829. );
  1830. BOOL
  1831. WINAPI
  1832. IsmRegisterRestoreCallback (
  1833. IN PMIG_RESTORECALLBACK RestoreCallback
  1834. );
  1835. BOOL
  1836. WINAPI
  1837. IsmRegisterCompareCallback (
  1838. IN MIG_OBJECTTYPEID ObjectTypeId,
  1839. IN PMIG_COMPARECALLBACK CompareCallback
  1840. );
  1841. BOOL
  1842. IsmAreObjectsIdentical (
  1843. IN MIG_OBJECTTYPEID SrcObjectTypeId,
  1844. IN MIG_OBJECTSTRINGHANDLE SrcObjectName,
  1845. IN PMIG_CONTENT SrcContent,
  1846. IN MIG_OBJECTTYPEID DestObjectTypeId,
  1847. IN MIG_OBJECTSTRINGHANDLE DestObjectName,
  1848. IN PMIG_CONTENT DestContent,
  1849. OUT PBOOL DifferentDetailsOnly OPTIONAL
  1850. );
  1851. MIG_TRANSPORTSTORAGEID
  1852. WINAPI
  1853. IsmRegisterTransport (
  1854. IN PCTSTR TypeString
  1855. );
  1856. BOOL
  1857. WINAPI
  1858. IsmGetMappedUserData (
  1859. OUT PMIG_USERDATA UserData
  1860. );
  1861. BOOL
  1862. WINAPI
  1863. IsmAddControlFile (
  1864. IN PCTSTR ObjectName,
  1865. IN PCTSTR NativePath
  1866. );
  1867. BOOL
  1868. WINAPI
  1869. IsmGetControlFile (
  1870. MIG_OBJECTTYPEID ObjectTypeId,
  1871. IN PCTSTR ObjectName,
  1872. IN PTSTR Buffer
  1873. );
  1874. BOOL
  1875. WINAPI
  1876. IsmSetRollbackJournalType (
  1877. IN BOOL Common
  1878. );
  1879. BOOL
  1880. WINAPI
  1881. IsmCanWriteRollbackJournal (
  1882. VOID
  1883. );
  1884. BOOL
  1885. IsmDoesRollbackDataExist (
  1886. OUT PCTSTR *UserName,
  1887. OUT PCTSTR *UserDomain,
  1888. OUT PCTSTR *UserStringSid,
  1889. OUT PCTSTR *UserProfilePath,
  1890. OUT BOOL *UserProfileCreated
  1891. );
  1892. VOID
  1893. WINAPI
  1894. IsmRecordOperation (
  1895. IN DWORD OperationType,
  1896. IN MIG_OBJECTTYPEID ObjectTypeId,
  1897. IN MIG_OBJECTSTRINGHANDLE ObjectName
  1898. );
  1899. BOOL
  1900. WINAPI
  1901. IsmRollback (
  1902. VOID
  1903. );
  1904. BOOL
  1905. IsmPreserveJournal (
  1906. IN BOOL Preserve
  1907. );
  1908. BOOL
  1909. WINAPI
  1910. IsmSetDelayedOperationsCommand (
  1911. IN PCTSTR DelayedOperationsCommand
  1912. );
  1913. VOID
  1914. IsmRecordDelayedOperation (
  1915. IN DWORD OperationType,
  1916. IN MIG_OBJECTTYPEID ObjectTypeId,
  1917. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1918. IN PMIG_CONTENT ObjectContent
  1919. );
  1920. PMIG_OBJECTCOUNT
  1921. IsmGetObjectsStatistics (
  1922. IN MIG_OBJECTTYPEID ObjectTypeId OPTIONAL
  1923. );
  1924. BOOL
  1925. IsmGetOsVersionInfo (
  1926. IN MIG_PLATFORMTYPEID Platform,
  1927. OUT PMIG_OSVERSIONINFO VersionInfo
  1928. );
  1929. BOOL
  1930. IsmGetTempStorage (
  1931. OUT PTSTR Path,
  1932. IN UINT PathTchars
  1933. );
  1934. BOOL
  1935. IsmGetTempDirectory (
  1936. OUT PTSTR Path,
  1937. IN UINT PathTchars
  1938. );
  1939. BOOL
  1940. IsmGetTempFile (
  1941. OUT PTSTR Path,
  1942. IN UINT PathTchars
  1943. );
  1944. BOOL
  1945. IsmExecuteFunction (
  1946. IN UINT ExecutionPhase,
  1947. IN PCTSTR FunctionMultiSz
  1948. );
  1949. BOOL
  1950. IsmReplacePhysicalObject (
  1951. IN MIG_OBJECTTYPEID ObjectTypeId,
  1952. IN MIG_OBJECTSTRINGHANDLE ObjectName,
  1953. IN PMIG_CONTENT ObjectContent
  1954. );
  1955. BOOL
  1956. IsmRemovePhysicalObject (
  1957. IN MIG_OBJECTTYPEID ObjectTypeId,
  1958. IN MIG_OBJECTSTRINGHANDLE ObjectName
  1959. );
  1960. PCTSTR
  1961. IsmGetCurrentSidString (
  1962. VOID
  1963. );
  1964. //
  1965. // ANSI/UNICODE macros
  1966. //
  1967. // None
  1968. #ifdef __cplusplus
  1969. }
  1970. #endif