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

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