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.

744 lines
23 KiB

  1. // Copyright (c) 2000-2004 Microsoft Corporation
  2. // WMI Class Definitions for the Security Configuration Engine
  3. // Version 1.0
  4. #pragma autorecover
  5. #pragma classflags("forceupdate")
  6. #pragma namespace("\\\\.\\root")
  7. instance of __Namespace
  8. {
  9. Name = "Security";
  10. };
  11. #pragma namespace("\\\\.\\root\\Security")
  12. instance of __Namespace
  13. {
  14. Name = "SCE";
  15. };
  16. #pragma namespace("\\\\.\\root\\Security\\SCE")
  17. //**************************************************************************
  18. //* Declare an instance of the __Win32Provider so as to "register" the
  19. //* SCE provider.
  20. //**************************************************************************
  21. instance of __Win32Provider as $P
  22. {
  23. Name = "SCEProvider|1.0" ;
  24. ClsId = "{bd7570f7-9f0e-4c6b-b525-e078691b6d0e}" ;
  25. ImpersonationLevel = 1;
  26. PerUserInitialization = TRUE;
  27. HostingModel = "NetworkServiceHost";
  28. };
  29. instance of __InstanceProviderRegistration
  30. {
  31. Provider = $P;
  32. SupportsPut = TRUE;
  33. SupportsGet = TRUE;
  34. SupportsDelete = TRUE;
  35. SupportsEnumeration = TRUE;
  36. QuerySupportLevels = {"WQL:UnarySelect"};
  37. };
  38. instance of __MethodProviderRegistration
  39. {
  40. Provider = $P;
  41. };
  42. //*************************************************************************
  43. //* Class: Sce_Template
  44. //* A new template can be physically created by doing a PutInstance on the
  45. //* template class or (because we have the storetype with each security
  46. //* setting) by doing a PutInstance on a security setting which
  47. //* refers to a template that does not physically exist.
  48. //*************************************************************************
  49. [dynamic, provider("SCEProvider|1.0")]
  50. class Sce_Template
  51. {
  52. [key, DisplayName (""), Description ("")]
  53. string Path;
  54. [read,write, DisplayName (""), Description ("")]
  55. string Description;
  56. [read, DisplayName (""), Description ("")]
  57. string Sce_Version;
  58. [read, DisplayName (""), Description ("")]
  59. boolean Readonly;
  60. [read, DisplayName (""), Description ("")]
  61. boolean Dirty;
  62. };
  63. //**********************************************************************
  64. //* Class: Sce_Database
  65. //* In V1, this class is provided strictly for query support.
  66. //* To create or otherwise work with data in a database, use one of the
  67. //* methods in the ESC_Operation class.
  68. //**********************************************************************
  69. [dynamic, provider("SCEProvider|1.0")]
  70. class Sce_Database
  71. {
  72. [key, DisplayName (""), Description ("")]
  73. string Path;
  74. [read, DisplayName (""), Description ("")]
  75. string Description;
  76. [read, DisplayName (""), Description ("")]
  77. string Sce_Version;
  78. [read, DisplayName (""), Description ("")]
  79. datetime LastAnalysis;
  80. [read, DisplayName (""), Description ("")]
  81. datetime LastConfiguration;
  82. };
  83. //**********************************************************************
  84. //* Class: Sce_Operation
  85. //**********************************************************************
  86. [dynamic, provider("SCEProvider|1.0")]
  87. class Sce_Operation
  88. {
  89. [static,Implemented] uint32 Import ([in] string TemplatePath, [in] string DatabasePath, [in] uint32 AreaMask, [in] boolean Overwrite = FALSE);
  90. [static,Implemented] uint32 Export ([in] string TemplatePath, [in] string DatabasePath, [in] uint32 AreaMask);
  91. [static,Implemented] uint32 Configure ([in] string DatabasePath, [in] uint32 AreaMask, [in] string LogFilePath);
  92. };
  93. //***********************************************************************
  94. //* Class: Sce_SecuritySetting
  95. //* Abstract base class to support database\template queries that span
  96. //* all security settings. For example:
  97. //* Select * from Sce_SecuritySetting where SceStorePath="foo.bar"
  98. //* would result in iterative queries of all the derived classes (below)
  99. //* sucy that, in the end, all security settings in the template are
  100. //* returned.
  101. //* Configurable security items for SCE Pods should also inherit
  102. //* from this class so that those data are also returned.
  103. //***********************************************************************
  104. [abstract]
  105. class Sce_SecuritySetting
  106. {
  107. [DisplayName ("") : ToSubClass, Description ("") : ToSubClass]
  108. string SceStorePath;
  109. };
  110. //***********************************************************************
  111. //* Class: Sce_CoreSecuritySetting
  112. //* Abstract base class to support database\template queries that span
  113. //* all core security settings. For example:
  114. //* Select * from Sce_CoreSecuritySetting where SceStorePath="foo.bar"
  115. //* would result in iterative queries of all the derived classes (below)
  116. //* sucy that, in the end, all core security settings in the template are
  117. //* returned (excluding SCE Pods).
  118. //***********************************************************************
  119. [abstract]
  120. class Sce_CoreSecuritySetting : Sce_SecuritySetting
  121. {
  122. [DisplayName ("") : ToSubClass, Description ("") : ToSubClass]
  123. string SceStorePath;
  124. };
  125. //***********************************************************************
  126. //* Class: Sce_PasswordPolicy
  127. //* Derived from: Sce_CoreSecuritySetting
  128. //***********************************************************************
  129. [dynamic, provider("SCEProvider|1.0")]
  130. class Sce_PasswordPolicy : Sce_CoreSecuritySetting
  131. {
  132. [key]
  133. string SceStorePath;
  134. [DisplayName (""), Description ("")]
  135. uint32 MinAge;
  136. [DisplayName (""), Description ("")]
  137. uint32 MaxAge;
  138. [DisplayName (""), Description ("")]
  139. uint32 MinLength;
  140. [DisplayName (""), Description ("")]
  141. uint32 History;
  142. [DisplayName (""), Description ("")]
  143. boolean Complexity;
  144. [DisplayName (""), Description ("")]
  145. boolean StoreClearText;
  146. [DisplayName (""), Description ("")]
  147. boolean ForceLogoff;
  148. [DisplayName (""), Description ("")]
  149. boolean LsaLookupPol;
  150. [DisplayName (""), Description ("")]
  151. boolean DisableAdmin;
  152. [DisplayName (""), Description ("")]
  153. boolean DisableGuest;
  154. };
  155. //***********************************************************************
  156. //* Class: Sce_AccountLockoutPolicy
  157. //* Derived from: Sce_CoreSecuritySetting
  158. //***********************************************************************
  159. [dynamic, provider("SCEProvider|1.0")]
  160. class Sce_AccountLockoutPolicy : Sce_CoreSecuritySetting
  161. {
  162. [key]
  163. string SceStorePath;
  164. [DisplayName (""), Description ("")]
  165. uint32 Threshold;
  166. [DisplayName (""), Description ("")]
  167. uint32 Duration;
  168. [DisplayName (""), Description ("")]
  169. uint32 ResetTimer;
  170. };
  171. //***********************************************************************
  172. //* Class: Sce_KerberosPolicy
  173. //* Derived from: Sce_CoreSecuritySetting
  174. //***********************************************************************
  175. [dynamic, provider("SCEProvider|1.0")]
  176. class Sce_KerberosPolicy : Sce_CoreSecuritySetting
  177. {
  178. [key]
  179. string SceStorePath;
  180. [DisplayName (""), Description ("in hours")]
  181. uint32 MaxTicketAge;
  182. [DisplayName (""), Description ("in days")]
  183. uint32 MaxRenewAge;
  184. [DisplayName (""), Description ("in minutes")]
  185. uint32 MaxServiceAge;
  186. [DisplayName (""), Description ("in minutes")]
  187. uint32 MaxClockSkew;
  188. [DisplayName (""), Description ("")]
  189. boolean EnforceLogonRestrictions;
  190. };
  191. //***********************************************************************
  192. //* Class: Sce_AuditPolicy
  193. //* Derived from: Sce_CoreSecuritySetting
  194. //***********************************************************************
  195. [dynamic, provider("SCEProvider|1.0")]
  196. class Sce_AuditPolicy : Sce_CoreSecuritySetting
  197. {
  198. [key]
  199. string SceStorePath;
  200. [key]
  201. string Category; //Display information is instance-dependent.
  202. [NotNull, DisplayName (""), Description ("")]
  203. boolean Success;
  204. [NotNull, DisplayName (""), Description ("")]
  205. boolean Failure;
  206. };
  207. //***********************************************************************
  208. //* Class: Sce_EventLog
  209. //* Derived from: Sce_CoreSecuritySetting
  210. //***********************************************************************
  211. [dynamic, provider("SCEProvider|1.0")]
  212. class Sce_EventLog : Sce_CoreSecuritySetting
  213. {
  214. [key]
  215. string SceStorePath;
  216. [key]
  217. string Type; //Display information is instance dependent
  218. [DisplayName (""), Description ("")]
  219. uint32 Size;
  220. [Values {"Overwrite Events As Needed", "Overwrite Events by Days", "Do Not Overwrite Events (Clear Log Manually)"}, DisplayName (""), Description ("")]
  221. uint32 OverwritePolicy;
  222. [DisplayName (""), Description ("")]
  223. uint32 RetentionPeriod;
  224. [DisplayName (""), Description ("")]
  225. boolean RestrictGuestAccess;
  226. };
  227. //************************************************************************
  228. //* Class: Sce_RegistryValue
  229. //* Derived from: Sce_CoreSecuritySetting
  230. //* Question: How do we handle Adding\Removing entries from REG_MULTI_SZ types?
  231. //************************************************************************
  232. [dynamic, provider("SCEProvider|1.0")]
  233. class Sce_RegistryValue : Sce_CoreSecuritySetting
  234. {
  235. [key]
  236. string SceStorePath;
  237. [key] //Display information is instance dependent
  238. string Path;
  239. [ValueMap {"1","2","3","4","7"}, Values {"REG_SZ", "REG_EXPAND_SZ", "REG_BINARY", "REG_DWORD", "REG_MULTI_SZ"}, NotNull]
  240. uint32 Type;
  241. [NotNull]
  242. string Data;
  243. };
  244. //************************************************************************
  245. //* Class: Sce_SecurityOptions
  246. //* Derived from: Sce_CoreSecuritySetting
  247. //* Security relevant options that aren't registry values.
  248. //************************************************************************
  249. [dynamic, provider("SCEProvider|1.0")]
  250. class Sce_SecurityOptions : Sce_CoreSecuritySetting
  251. {
  252. [key]
  253. string SceStorePath;
  254. [DisplayName (""), Description ("")]
  255. string AdministratorAccountName;
  256. [DisplayName (""), Description ("")]
  257. string AdministratorAccountDescription; //Not currently supported
  258. [DisplayName (""), Description ("")]
  259. string GuestAccountName;
  260. [DisplayName (""), Description ("")]
  261. string GuestAccountDescription; //Not currently supported
  262. };
  263. //************************************************************************
  264. //* Class: Sce_UserPrivilegeRight
  265. //* Derived from: Sce_CoreSecuritySetting
  266. //************************************************************************
  267. [dynamic, provider("SCEProvider|1.0")]
  268. class Sce_UserPrivilegeRight : Sce_CoreSecuritySetting
  269. {
  270. [key]
  271. string SceStorePath;
  272. [key]
  273. string UserRight; //Display information is instance-dependent
  274. [Values {"AddRemove" , "Set"}]
  275. uint32 Mode;
  276. [DisplayName (""), Description ("")]
  277. string AddList[]; //If Mode=Set, then AddList specifies the complete list
  278. [DisplayName (""), Description ("")]
  279. string RemoveList[]; //If Mode=Set, then RemoveList is ignored
  280. };
  281. //************************************************************************
  282. //* Class: Sce_RestrictedGroup
  283. //* Derived from: Sce_CoreSecuritySetting
  284. //************************************************************************
  285. [dynamic, provider("SCEProvider|1.0")]
  286. class Sce_RestrictedGroup : Sce_CoreSecuritySetting
  287. {
  288. [key] string SceStorePath;
  289. [key] string GroupName;
  290. [Values {"AddRemove" , "Set"}]
  291. uint32 Mode;
  292. string AddList[]; //If Mode=Set, then AddList specifies the complete list
  293. string RemoveList[]; //If Mode=Set, then RemoveList is ignored
  294. };
  295. //************************************************************************
  296. //* Class: Sce_SystemService
  297. //* Derived from: Sce_CoreSecuritySetting
  298. //************************************************************************
  299. [dynamic, provider("SCEProvider|1.0")]
  300. class Sce_SystemService : Sce_CoreSecuritySetting
  301. {
  302. [key] string SceStorePath;
  303. [key] string Service;
  304. [ValueMap {"2", "3", "4"}, Values {"Automatic", "Manual", "Disabled"}]
  305. uint32 StartupMode;
  306. string SDDLString;
  307. };
  308. //************************************************************************
  309. //* Class: Sce_FileObject
  310. //* Derived from: Sce_CoreSecuritySetting
  311. //************************************************************************
  312. [dynamic, provider("SCEProvider|1.0")]
  313. class Sce_FileObject : Sce_CoreSecuritySetting
  314. {
  315. [key] string SceStorePath;
  316. [key] string Path;
  317. [Values {"Inherit", "Ignore", "Overwrite"}]
  318. uint32 Mode;
  319. string SDDLString;
  320. };
  321. //************************************************************************
  322. //* Class: Sce_KeyObject
  323. //* Derived from: Sce_CoreSecuritySetting
  324. //************************************************************************
  325. [dynamic, provider("SCEProvider|1.0")]
  326. class Sce_KeyObject : Sce_CoreSecuritySetting
  327. {
  328. [key] string SceStorePath;
  329. [key] string Path;
  330. [Values {"Inherit", "Ignore", "Overwrite"}]
  331. uint32 Mode;
  332. string SDDLString;
  333. };
  334. //*************************************************************************
  335. //******************** Sce_SupportedSecurityAreas *************************
  336. //* Allows caller to determine specific areas that the current version of
  337. //* SCE can configure, import, export. These areas may change over time.
  338. //* Will need static instances for v1.
  339. class Sce_SupportedSecurityAreas
  340. {
  341. [key] string areaname;
  342. uint32 bitmask;
  343. };
  344. instance of Sce_SupportedSecurityAreas
  345. {
  346. areaname = "Security Policy";
  347. bitmask = 0x1;
  348. };
  349. instance of Sce_SupportedSecurityAreas
  350. {
  351. areaname = "Group Membership";
  352. bitmask = 0x4;
  353. };
  354. instance of Sce_SupportedSecurityAreas
  355. {
  356. areaname = "Privilege Rights";
  357. bitmask = 0x8;
  358. };
  359. instance of Sce_SupportedSecurityAreas
  360. {
  361. areaname = "Registry Key Security";
  362. bitmask = 0x20;
  363. };
  364. instance of Sce_SupportedSecurityAreas
  365. {
  366. areaname = "File Security";
  367. bitmask = 0x40;
  368. };
  369. instance of Sce_SupportedSecurityAreas
  370. {
  371. areaname = "System Service Security";
  372. bitmask = 0x80;
  373. };
  374. instance of Sce_SupportedSecurityAreas
  375. {
  376. areaname = "Security Extensions";
  377. bitmask = 0x8000;
  378. };
  379. instance of Sce_SupportedSecurityAreas
  380. {
  381. areaname = "All Areas";
  382. bitmask = 0xFFFF;
  383. };
  384. //******************** Sce_SupportedAuditCategories ***********************
  385. //*Allows caller to enumerate the Audit Categories which can be configured
  386. //*by SCE as well as their freindly names for display.
  387. //*Will need static instances for v1.
  388. class Sce_SupportedAuditCategories
  389. {
  390. [key] string CategoryName;
  391. string DisplayName;
  392. };
  393. instance of Sce_SupportedAuditCategories
  394. {
  395. CategoryName = "AuditSystemEvents";
  396. DisplayName = "Audit system events";
  397. };
  398. instance of Sce_SupportedAuditCategories
  399. {
  400. CategoryName = "AuditLogonEvents";
  401. DisplayName = "Audit logon events";
  402. };
  403. instance of Sce_SupportedAuditCategories
  404. {
  405. CategoryName = "AuditObjectAccess";
  406. DisplayName = "Audit object access";
  407. };
  408. instance of Sce_SupportedAuditCategories
  409. {
  410. CategoryName = "AuditPrivilegeUse";
  411. DisplayName = "Audit privilege use";
  412. };
  413. instance of Sce_SupportedAuditCategories
  414. {
  415. CategoryName = "AuditPolicyChange";
  416. DisplayName = "Audit policy change";
  417. };
  418. instance of Sce_SupportedAuditCategories
  419. {
  420. CategoryName = "AuditAccountManage";
  421. DisplayName = "Audit account management";
  422. };
  423. instance of Sce_SupportedAuditCategories
  424. {
  425. CategoryName = "AuditProcessTracking";
  426. DisplayName = "Audit process tracking";
  427. };
  428. instance of Sce_SupportedAuditCategories
  429. {
  430. CategoryName = "AuditDSAccess";
  431. DisplayName = "Audit directory service access";
  432. };
  433. instance of Sce_SupportedAuditCategories
  434. {
  435. CategoryName = "AuditAccountLogon";
  436. DisplayName = "Audit account logon events";
  437. };
  438. //******************** Sce_SupportedEventLogTypes *************************
  439. //*Allows caller to enumerate the types of EventLogs which can be configured
  440. //*by SCE (e.g. System, Application, Security).
  441. //*Will need static instances for v1.
  442. class Sce_SupportedEventLogTypes
  443. {
  444. [key] string TypeName;
  445. };
  446. instance of Sce_SupportedEventLogTypes
  447. {
  448. TypeName = "Application Log";
  449. };
  450. instance of Sce_SupportedEventLogTypes
  451. {
  452. TypeName = "System Log";
  453. };
  454. instance of Sce_SupportedEventLogTypes
  455. {
  456. TypeName = "Security Log";
  457. };
  458. //******************** Sce_KnownRegistryValues ***************************
  459. //*Provides caller with display properties for security relevant registry
  460. //*values as specified in sceregvl.inf. For example:
  461. //* PathName="MACHINE\System\CurrentControlSet\Control\Lsa\LmCompatibilityLevel"
  462. //* TypeName=4
  463. //* DisplayName="LAN Manager Authentication Level"
  464. //* DisplayDialog=3
  465. //* DisplayChoice=["Send NT and LM Responses", "Send NTLM response only",...]
  466. //* DisplayChoiceValue=["0","2",...]
  467. [dynamic, provider("SCEProvider|1.0")]
  468. class Sce_KnownRegistryValues
  469. {
  470. [key] string PathName;
  471. [ValueMap {"1","2","3","4","7"}, Values {"REG_SZ", "REG_EXPAND_SZ", "REG_BINARY", "REG_DWORD", "REG_MULTI_SZ"}]
  472. uint32 Type;
  473. string DisplayName;
  474. [Values {"Boolean", "Numeric", "String", "Choices"}]
  475. uint32 DisplayDialog;
  476. string DisplayChoice[]; //Valid only if DisplayDialog is "Choices"
  477. string DisplayChoiceResult[]; //Corresponding value stored for a given choice
  478. string Units; //Valid only if DisplayDialog is "Numeric"
  479. };
  480. //******************** Sce_SupportedUserRights *************************
  481. //* Base class for allowing caller to enumerate the privileges and
  482. //* rights that that can be configured by SCE.
  483. [abstract]
  484. class Sce_SupportedUserRights
  485. {
  486. string RightName;
  487. };
  488. //******************** Sce_SupportedPrivileges *************************
  489. //*Allows caller to enumerate the types of Privileges which can be
  490. //*configured by SCE.
  491. [dynamic, provider("SCEProvider|1.0")]
  492. class Sce_SupportedPrivileges : Sce_SupportedUserRights
  493. {
  494. [key] string RightName;
  495. string DisplayName;
  496. };
  497. //******************** Sce_SupportedRights *************************
  498. //*Allows caller to enumerate the types of Rights which can be
  499. //*configured by SCE.
  500. //*Will need static instances for the eight nonqueryable rights on NT.
  501. class Sce_SupportedRights : Sce_SupportedUserRights
  502. {
  503. [key] string RightName;
  504. string DisplayName;
  505. };
  506. instance of Sce_SupportedRights
  507. {
  508. RightName = "SeInteractiveLogonRight";
  509. DisplayName = "Logon locally";
  510. };
  511. instance of Sce_SupportedRights
  512. {
  513. RightName = "SeNetworkLogonRight";
  514. DisplayName = "Access this computer from network";
  515. };
  516. instance of Sce_SupportedRights
  517. {
  518. RightName = "SeBatchLogonRight";
  519. DisplayName = "Logon as a batch";
  520. };
  521. instance of Sce_SupportedRights
  522. {
  523. RightName = "SeServiceLogonRight";
  524. DisplayName = "Logon as a service";
  525. };
  526. instance of Sce_SupportedRights
  527. {
  528. RightName = "SeDenyInteractiveLogonRight";
  529. DisplayName = "Deny logon locally";
  530. };
  531. instance of Sce_SupportedRights
  532. {
  533. RightName = "SeDenyNetworkLogonRight";
  534. DisplayName = "Deny access this computer from network";
  535. };
  536. instance of Sce_SupportedRights
  537. {
  538. RightName = "SeDenyBatchLogonRight";
  539. DisplayName = "Deny logon as a batch";
  540. };
  541. instance of Sce_SupportedRights
  542. {
  543. RightName = "SeDenyServiceLogonRight";
  544. DisplayName = "Deny logon as a service";
  545. };
  546. //******************** Sce_SupportedServices ***********************
  547. //* ServiceNames and their corresponding DisplayNames can be queried
  548. //* From the XXXXXX class in the CIMv2 namespace.
  549. //****************************************************************************
  550. //******************** Sce_PodData *******************************************
  551. //* This class is used by SCE Pods to Set\Get data To\From an SCE Store.
  552. [dynamic, provider("SCEProvider|1.0")]
  553. Class Sce_PodData
  554. {
  555. [key] string SceStorePath;
  556. [key] string PodID; //GUID
  557. [key] string PodSection;
  558. [key] string Key; //A specific configurable item within a Pod Section
  559. string Value; //Data for the specic configurable item.
  560. };
  561. //******************** Sce_PodConfigurationLogRecord *********************************
  562. //* In V1, this class is provided for SCE Pods so that they may add entries
  563. //* to the log file during configuration. They do this via PutInstance.
  564. [dynamic, provider("SCEProvider|1.0")]
  565. class Sce_ConfigurationLogRecord
  566. {
  567. [key] string LogFilePath;
  568. string LogArea;
  569. string Action;
  570. string ErrorCause;
  571. string ObjectDetail;
  572. string ParameterDetail;
  573. uint32 LogErrorCode;
  574. };
  575. //******************** Sce_Pod **********************************************
  576. //All SCE Pods must implement the configure method.
  577. [abstract]
  578. class Sce_Pod
  579. {
  580. string PodID;
  581. [static] uint32 Configure ([in] string SceStorePath, [in] string LogFilePath); //Pod must implement
  582. };
  583. //******************** Sce_EmbedFO ******************************************
  584. // this is the base class that enables SCE provider to use foreign objects
  585. [abstract]
  586. class Sce_EmbedFO
  587. {
  588. string SceStorePath;
  589. [static] string ForeignNamespace;
  590. [static] string ForeignClassName;
  591. [static] string Sce_Configure_Method = "Sce_MethodCall_PutInstance()";
  592. uint32 Configure([in] string LogFilePath);
  593. };
  594. // this class determines the sequencing of embedded classes for a particular method
  595. // The smaller the priority value of the class, the higher its method execution priority.
  596. // Order member is a ':' delimited string of class names
  597. class Sce_Sequence
  598. {
  599. [key] string Method;
  600. [key] uint32 Priority;
  601. string Order;
  602. };
  603. // this class controls the per template sequencing
  604. [dynamic, provider("SCEProvider|1.0")]
  605. class Sce_ClassOrder
  606. {
  607. [key] string SceStorePath;
  608. string ClassOrder; // colon delimited class names
  609. };
  610. // this class controls the logging detail levels.
  611. class Sce_LogOptions
  612. {
  613. [Values {"None", "ErrorOnly", "SuccessOnly", "ErrorAndSuccess"}, read]
  614. uint16 LogErrorType = 1; // 0 for none, 1 for ErrorOnly, 2 for SuccessOnly, 3 for ErrorAndSuccess
  615. boolean Verbose = 1; // default to true
  616. };
  617. // Per template token. This will be used to identify information deposited
  618. // by our method execution so that we can do rollbacks
  619. [dynamic, provider("SCEProvider|1.0")]
  620. class Sce_TransactionID
  621. {
  622. [key] string SceStorePath;
  623. string TranxGuid;
  624. };
  625. //---------------------------------------------------------------------------
  626. // Transaction token passed to WMI to record a transaction boundary
  627. [dynamic, provider("SCEProvider|1.0")]
  628. class Sce_TransactionToken
  629. {
  630. [key] string TranxGuid;
  631. };