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.

434 lines
34 KiB

  1. cpp_quote ("/*++")
  2. cpp_quote(" ")
  3. cpp_quote("Copyright (c) 1997-1999 Microsoft Corporation")
  4. cpp_quote(" ")
  5. cpp_quote("Module Name: mddef.h")
  6. cpp_quote(" ")
  7. cpp_quote(" Definitions for Admin Objects and Metadata")
  8. cpp_quote(" ")
  9. cpp_quote ("--*/")
  10. cpp_quote("#ifndef _MD_DEFW_")
  11. cpp_quote("#define _MD_DEFW_")
  12. import "unknwn.idl";
  13. import "wtypes.idl";
  14. cpp_quote("#include <mdmsg.h>")
  15. cpp_quote("#include <mdcommsg.h>")
  16. cpp_quote("/* ")
  17. cpp_quote(" Error Codes ")
  18. cpp_quote(" ")
  19. cpp_quote(" Metadata api's all return HRESULTS. Since internal results are either ")
  20. cpp_quote(" winerrors or Metadata specific return codes (see mdmsg.h), they are ")
  21. cpp_quote(" converted to HRESULTS using the RETURNCODETOHRESULT macro (see ")
  22. cpp_quote(" commsg.h). ")
  23. cpp_quote("*/ ")
  24. cpp_quote(" ")
  25. cpp_quote("/* ")
  26. cpp_quote(" Max Name Length ")
  27. cpp_quote(" The maximum number of characters in the length of a metaobject name, ")
  28. cpp_quote(" including the terminating NULL. This refers to each node in the tree, ")
  29. cpp_quote(" not the entire path. ")
  30. cpp_quote(" eg. strlen(\"Root\") < METADATA_MAX_NAME_LEN ")
  31. cpp_quote("*/ ")
  32. cpp_quote("#define METADATA_MAX_NAME_LEN 256")
  33. cpp_quote("/* ")
  34. cpp_quote(" Access Permissons ")
  35. cpp_quote(" Permissions associated with handles of type METADATA_HANDLE ")
  36. cpp_quote(" ")
  37. cpp_quote(" METADATA_PERMISSION_READ - Allows reading metadata. ")
  38. cpp_quote(" METADATA_PERMISSION_WRITE - Allows writing metadata. ")
  39. cpp_quote("*/ ")
  40. cpp_quote("#define METADATA_PERMISSION_READ 0x00000001")
  41. cpp_quote("#define METADATA_PERMISSION_WRITE 0x00000002")
  42. cpp_quote("/* ")
  43. cpp_quote(" Data Types ")
  44. cpp_quote(" ")
  45. cpp_quote(" ALL_METADATA - Used on Get/Enum/Getall api's (ComMDGetMetaData, ")
  46. cpp_quote(" ComMDEnumMetaData, and ComMDGetAllMetaData), api's to allow getting ")
  47. cpp_quote(" all data. Not valid on the Set api. ")
  48. cpp_quote(" ")
  49. cpp_quote(" DWORD_METADATA - The data is an unsigned 32 bit value. ")
  50. cpp_quote(" ")
  51. cpp_quote(" STRING_METADATA - The data is a null terminated ASCII string. ")
  52. cpp_quote(" ")
  53. cpp_quote(" BINARY_METADATA - The data is any binary value. ")
  54. cpp_quote(" ")
  55. cpp_quote(" EXPANDSZ_METADATA - The data is a null terminated ASCII string. ")
  56. cpp_quote(" Clients are expected to treat this as an expandsz string. ")
  57. cpp_quote(" ")
  58. cpp_quote(" MULTISZ_METADATA - A series of NULL terminated ASCII strings. ending ")
  59. cpp_quote(" with 2 NULL's. ")
  60. cpp_quote("*/ ")
  61. enum METADATATYPES {
  62. ALL_METADATA,
  63. DWORD_METADATA,
  64. STRING_METADATA,
  65. BINARY_METADATA,
  66. EXPANDSZ_METADATA,
  67. MULTISZ_METADATA,
  68. INVALID_END_METADATA
  69. };
  70. cpp_quote("/* ")
  71. cpp_quote(" Attributes - The flags for the data. ")
  72. cpp_quote(" ")
  73. cpp_quote(" METADATA_INHERIT - If set for a data item, the data item can be ")
  74. cpp_quote(" inherited. If set on input to the Get/Enum/Getall api's, ")
  75. cpp_quote(" (ComMDGetMetaData, ComMDEnumMetaData, and ComMDGetAllMetaData), ")
  76. cpp_quote(" inheritable data will be returned. If not set on input to the ")
  77. cpp_quote(" Get/Enum/Getall, inheritable data will not be returned. ")
  78. cpp_quote(" ")
  79. cpp_quote(" METADATA_PARTIAL_PATH - If set on input to Get/Enum/Getall api's, this ")
  80. cpp_quote(" routine will return ERROR_SUCCESS and the inherited data even if ")
  81. cpp_quote(" the entire path is not present. Only valid if METADATA_INHERIT is ")
  82. cpp_quote(" also set. Should not be set for data items on input the the Set api ")
  83. cpp_quote(" (ComMDSetMetaData). ")
  84. cpp_quote(" ")
  85. cpp_quote(" METADATA_SECURE - If set for a data item, the data is stored in a ")
  86. cpp_quote(" secure fasion. Should not be set on input to Get/Enum api's. ")
  87. cpp_quote(" ")
  88. cpp_quote(" METADATA_REFERENCE - If set for a data item, the data item may be ")
  89. cpp_quote(" gotten by reference. If set on input to Get/Enum/GetAll api's and ")
  90. cpp_quote(" set on a the data item being returned, the data is returned by ")
  91. cpp_quote(" reference. A pointer to the metadata server's copy of the data is ")
  92. cpp_quote(" placed in the Data field of the METADATA_RECORD or ")
  93. cpp_quote(" METADATA_GETALL_RECORD, and the DataTag field is set. This data must")
  94. cpp_quote(" be freed by calling ComMDReleaseReferenceData. The client must not ")
  95. cpp_quote(" change this data. This flag must not be set on input to ")
  96. cpp_quote(" Get/Enum/Getall api's from remote clients. ")
  97. cpp_quote(" ")
  98. cpp_quote(" METADATA_VOLATILE - If set for a data item, the data item will not be ")
  99. cpp_quote(" saved to long term storage. ")
  100. cpp_quote(" ")
  101. cpp_quote(" METADATA_ISINHERITED - If specified on input to one of the get api's, ")
  102. cpp_quote(" the flag will be set on return if the data was inherited. ")
  103. cpp_quote(" ")
  104. cpp_quote(" METADATA_INSERT_PATH - If specified on input to one of the get api's, ")
  105. cpp_quote(" and on a string data item, the path relative to handle will replaced the")
  106. cpp_quote(" string MD_INSERT_PATH_STRING in the string data. ")
  107. cpp_quote(" ")
  108. cpp_quote(" METADATA_LOCAL_MACHINE_ONLY - If set for a data item, the data item")
  109. cpp_quote(" will not be replicated during web cluster replication.")
  110. cpp_quote(" ")
  111. cpp_quote(" METADATA_NON_SECURE_ONLY - When using GetAll api, do not")
  112. cpp_quote(" retrieve properties which are secure.")
  113. cpp_quote(" ")
  114. cpp_quote("*/ ")
  115. cpp_quote(" ")
  116. cpp_quote("#define METADATA_NO_ATTRIBUTES 0 ")
  117. cpp_quote("#define METADATA_INHERIT 0x00000001 ")
  118. cpp_quote("#define METADATA_PARTIAL_PATH 0x00000002 ")
  119. cpp_quote("#define METADATA_SECURE 0x00000004 ")
  120. cpp_quote("#define METADATA_REFERENCE 0x00000008 ")
  121. cpp_quote("#define METADATA_VOLATILE 0x00000010 ")
  122. cpp_quote("#define METADATA_ISINHERITED 0x00000020 ")
  123. cpp_quote("#define METADATA_INSERT_PATH 0x00000040 ")
  124. cpp_quote("#define METADATA_LOCAL_MACHINE_ONLY 0x00000080 ")
  125. cpp_quote("#define METADATA_NON_SECURE_ONLY 0x00000100 ")
  126. cpp_quote(" ")
  127. cpp_quote("/* ")
  128. cpp_quote(" Backup Flags. ")
  129. cpp_quote(" ")
  130. cpp_quote(" MD_BACKUP_OVERWRITE - If set, the metabase will be backed up even if ")
  131. cpp_quote(" a backupe with the same name and version already exists. The ")
  132. cpp_quote(" existing backup will be overwritten. ")
  133. cpp_quote(" ")
  134. cpp_quote(" MD_BACKUP_SAVE_FIRST - If set backup will save the metabase prior to ")
  135. cpp_quote(" making the backup. If the save fails, backup behavior is dependent ")
  136. cpp_quote(" on the value of MD_BACKUP_FORCE_BACKUP. ")
  137. cpp_quote(" ")
  138. cpp_quote(" MD_BACKUP_FORCE_BACKUP - If set backup will proceed even if the save ")
  139. cpp_quote(" failed. Only valid if MD_BACKUP_SAVE_FIRST is set. If the save ")
  140. cpp_quote(" but the backup succeeds, a warning will be returned. ")
  141. cpp_quote("*/ ")
  142. cpp_quote(" ")
  143. cpp_quote("#define MD_BACKUP_OVERWRITE 0x00000001 ")
  144. cpp_quote("#define MD_BACKUP_SAVE_FIRST 0x00000002 ")
  145. cpp_quote("#define MD_BACKUP_FORCE_BACKUP 0x00000004 ")
  146. cpp_quote("/* ")
  147. cpp_quote(" Backup Version Defines. ")
  148. cpp_quote(" ")
  149. cpp_quote(" MD_BACKUP_NEXT_VERSION - For Backup, indicates use the next available ")
  150. cpp_quote(" backup version of the BackupLocation specified, ie. one higher than ")
  151. cpp_quote(" the highest existing version. ")
  152. cpp_quote(" Not valid for Restore or DeleteBackup. ")
  153. cpp_quote(" ")
  154. cpp_quote(" MD_BACKUP_HIGHEST_VERSION - For Backup, Restore, and DeleteBackup, will ")
  155. cpp_quote(" use the highest existing backup version of the BackupLocation ")
  156. cpp_quote(" specified. ")
  157. cpp_quote(" ")
  158. cpp_quote(" MD_BACKUP_MAX_VERSION - The highest allowed backup version number. ")
  159. cpp_quote(" ")
  160. cpp_quote(" MD_BACKUP_MAX_LEN - The maximup length, in UNICODE characters, of the ")
  161. cpp_quote(" BackupLocation. ")
  162. cpp_quote("*/ ")
  163. cpp_quote(" ")
  164. cpp_quote("#define MD_BACKUP_NEXT_VERSION 0xffffffff ")
  165. cpp_quote("#define MD_BACKUP_HIGHEST_VERSION 0xfffffffe ")
  166. cpp_quote("#define MD_BACKUP_MAX_VERSION 9999 ")
  167. cpp_quote("#define MD_BACKUP_MAX_LEN (100) ")
  168. cpp_quote(" ")
  169. cpp_quote("/* ")
  170. cpp_quote(" Backup Location Defines. ")
  171. cpp_quote(" ")
  172. cpp_quote(" MD_DEFAULT_BACKUP_LOCATION - The default location to backup from or ")
  173. cpp_quote(" restore to if no location is specified. ")
  174. cpp_quote("*/ ")
  175. cpp_quote(" ")
  176. cpp_quote("#define MD_DEFAULT_BACKUP_LOCATION TEXT(\"MDBackUp\") ")
  177. cpp_quote(" ")
  178. cpp_quote("/* ")
  179. cpp_quote(" History Flags. ")
  180. cpp_quote(" ")
  181. cpp_quote(" MD_HISTORY_LATEST - The most recent history file by timestamp ")
  182. cpp_quote("*/ ")
  183. cpp_quote(" ")
  184. cpp_quote("#define MD_HISTORY_LATEST 0x00000001 ")
  185. cpp_quote(" ")
  186. cpp_quote("/* ")
  187. cpp_quote(" Export Flags. ")
  188. cpp_quote(" ")
  189. cpp_quote(" MD_EXPORT_INHERITED - If set, inherited properties will be backed up ")
  190. cpp_quote(" to special section in output file called IIsInheritedProperties. ")
  191. cpp_quote(" If not set, inherited properties are ignored. ")
  192. cpp_quote(" ")
  193. cpp_quote(" MD_EXPORT_NODE_ONLY - If set, children will not be exported. ")
  194. cpp_quote(" If not set, children will be exported. ")
  195. cpp_quote("*/ ")
  196. cpp_quote(" ")
  197. cpp_quote("#define MD_EXPORT_INHERITED 0x00000001 ")
  198. cpp_quote("#define MD_EXPORT_NODE_ONLY 0x00000002 ")
  199. cpp_quote(" ")
  200. cpp_quote("/* ")
  201. cpp_quote(" Import Flags. ")
  202. cpp_quote(" ")
  203. cpp_quote(" MD_IMPORT_INHERITED - If set, inherited properties will be imported. ")
  204. cpp_quote(" ")
  205. cpp_quote(" MD_IMPORT_NODE_ONLY - If set, children will not be imported. ")
  206. cpp_quote(" If not set, children will be imported. ")
  207. cpp_quote(" ")
  208. cpp_quote(" MD_IMPORT_MERGE - If set, imported settings overwrite existing ")
  209. cpp_quote(" settings, but entire node is not overwritten. If not set, entire ")
  210. cpp_quote(" node is clobbered. ")
  211. cpp_quote("*/ ")
  212. cpp_quote(" ")
  213. cpp_quote("#define MD_IMPORT_INHERITED 0x00000001 ")
  214. cpp_quote("#define MD_IMPORT_NODE_ONLY 0x00000002 ")
  215. cpp_quote("#define MD_IMPORT_MERGE 0x00000004 ")
  216. cpp_quote(" ")
  217. cpp_quote("/* ")
  218. cpp_quote(" Insert Path Defines. ")
  219. cpp_quote("*/ ")
  220. cpp_quote(" ")
  221. cpp_quote(" ")
  222. cpp_quote("#define MD_INSERT_PATH_STRINGA \"<%INSERT_PATH%>\" ")
  223. cpp_quote("#define MD_INSERT_PATH_STRINGW L##\"<%INSERT_PATH%>\" ")
  224. cpp_quote("#define MD_INSERT_PATH_STRING TEXT(\"<%INSERT_PATH%>\") ")
  225. cpp_quote(" ")
  226. cpp_quote("/* ")
  227. cpp_quote(" Handle Defines. ")
  228. cpp_quote("*/ ")
  229. cpp_quote(" ")
  230. cpp_quote("#define METADATA_MASTER_ROOT_HANDLE 0")
  231. cpp_quote(" ")
  232. cpp_quote("/* ")
  233. cpp_quote(" METADATA_RECORD is the basic input/output parameter for the set and get ")
  234. cpp_quote(" metadata api's. The Set api (ComMDSetMetaData) takes all fields as ")
  235. cpp_quote(" input, except DataTag. The Get/Enum api's (ComMDGetMetadata and ")
  236. cpp_quote(" ComMDEnumMetaData) take some of the fields as input, and fill in all ")
  237. cpp_quote(" fields as output. ")
  238. cpp_quote(" ")
  239. cpp_quote(" Identifier - The identifier of the data. ")
  240. cpp_quote(" ")
  241. cpp_quote(" Attributes - The flags for the data. ")
  242. cpp_quote(" ")
  243. cpp_quote(" UserType - The User Type for the data. This is a user defined field to allow")
  244. cpp_quote(" users to group data. If set to anything other than ALL_METADATA on input")
  245. cpp_quote(" to Get/Set apis, only metadata of the specified User Type will be ")
  246. cpp_quote(" returned. ")
  247. cpp_quote(" ")
  248. cpp_quote(" ALL_METADATA ")
  249. cpp_quote(" ")
  250. cpp_quote(" User Defined Values ")
  251. cpp_quote(" ")
  252. cpp_quote(" DataType - The Type of the data. Must be set to a valid value other than ")
  253. cpp_quote(" ALL_METADATA for each data item. If set to anything other than ")
  254. cpp_quote(" ALL_METADATA on input to Get/Set api's, only metadata of the ")
  255. cpp_quote(" specified Data Type will be returned. ")
  256. cpp_quote(" ALL_METADATA ")
  257. cpp_quote(" DWORD_METADATA ")
  258. cpp_quote(" STRING_METADATA ")
  259. cpp_quote(" BINARY_METADATA ")
  260. cpp_quote(" EXPANDSZ_METADATA ")
  261. cpp_quote(" ")
  262. cpp_quote(" DataLen - On input to the Set api, specifies the length of Data, in ")
  263. cpp_quote(" bytes. Inprocess clients only need to specify this for binary data. ")
  264. cpp_quote(" Remote clients need to specify this for all data types. For strings, ")
  265. cpp_quote(" this must include the trailing '\0', eg. strlen(string) + 1. ")
  266. cpp_quote(" On input to Get/Enum apis, specifies the size of the buffer pointed to ")
  267. cpp_quote(" by Data. On successful output from Get/Enum API's, specifies the size of")
  268. cpp_quote(" Data in bytes. ")
  269. cpp_quote(" ")
  270. cpp_quote(" Data - On input to the Set api, points to the data. On input to the ")
  271. cpp_quote(" Get/Enum api's, points to a buffer to return the data in. On output ")
  272. cpp_quote(" from the Get/Enum api's, points to the data. If the data is not ")
  273. cpp_quote(" gotten by reference, the pointer will be unchanged. ")
  274. cpp_quote(" ")
  275. cpp_quote(" DataTag - A tag for reference data. Not used in the Set api. Not used on ")
  276. cpp_quote(" input to the Get/Enum api's. On successful return from the Get/Enum ")
  277. cpp_quote(" api's, this is set to a nonzero tag if the data was gotten by reference,")
  278. cpp_quote(" and set to 0 if the data was not gotten by reference. ")
  279. cpp_quote("*/ ")
  280. typedef struct _METADATA_RECORD {
  281. DWORD dwMDIdentifier; // The Data Identifier
  282. DWORD dwMDAttributes; // The Data Attributes
  283. DWORD dwMDUserType; // The User Type
  284. DWORD dwMDDataType; // The Data Type
  285. DWORD dwMDDataLen; // The Data Length
  286. [unique, size_is(dwMDDataLen)]unsigned char *pbMDData; // The buffer for
  287. // the data. The pointer is always an input
  288. // parameter, but the buffer is filled in by the get api's.
  289. DWORD dwMDDataTag; // Tag for use in freeing reference data
  290. } METADATA_RECORD, *PMETADATA_RECORD;
  291. cpp_quote("/* ")
  292. cpp_quote(" METADATA_GETALL_RECORD, is essentially the same as METADATA_RECORD, but is ")
  293. cpp_quote(" used by MDGetAllMetaData. It is used the same as the corresponding ")
  294. cpp_quote(" METADATA_RECORD values for the MDGetMetaData, with the following ")
  295. cpp_quote(" exceptions: ")
  296. cpp_quote(" ")
  297. cpp_quote(" MDGetAllMetadata does not take the structure as input, but takes parameters ")
  298. cpp_quote(" equivalent to Attributes, UserType, and DataType. ")
  299. cpp_quote(" ")
  300. cpp_quote(" On output, MDGetAllMetadata returns an array of METADATA_GETALL_RECORD. ")
  301. cpp_quote(" ")
  302. cpp_quote(" DataOffset/Data - If the data is not returned by reference, DataOffset ")
  303. cpp_quote(" contains the byte offset into the buffer provided. If the data is ")
  304. cpp_quote(" returned by reference, Data contains a pointer to the data. ")
  305. cpp_quote(" ")
  306. cpp_quote(" ")
  307. cpp_quote(" Because an opaque pointer to an array of _METADATA_GETALL_RECORD's is ")
  308. cpp_quote(" passed on calls to GetAllData, its size must be the same on x86 and ia64. ")
  309. cpp_quote(" So, the pbMDData member (not used by the public interface) has been ")
  310. cpp_quote(" removed and a new structure _METADATA_GETALL_INTERNAL_RECORD has been ")
  311. cpp_quote(" created for use by the callees of the internal interface ")
  312. cpp_quote("*/ ")
  313. typedef struct _METADATA_GETALL_RECORD {
  314. DWORD dwMDIdentifier; // The Data Identifier
  315. DWORD dwMDAttributes; // The Data Attributes
  316. DWORD dwMDUserType; // The User Type
  317. DWORD dwMDDataType; // The Data Type
  318. DWORD dwMDDataLen; // The Data Length
  319. DWORD dwMDDataOffset; // Offset from the pbBuffer parameter. Must be same size on x86 and ia64!
  320. DWORD dwMDDataTag; // Tag for use in freeing reference data
  321. } METADATA_GETALL_RECORD, *PMETADATA_GETALL_RECORD;
  322. typedef struct _METADATA_GETALL_INTERNAL_RECORD {
  323. DWORD dwMDIdentifier; // The Data Identifier
  324. DWORD dwMDAttributes; // The Data Attributes
  325. DWORD dwMDUserType; // The User Type
  326. DWORD dwMDDataType; // The Data Type
  327. DWORD dwMDDataLen; // The Data Length
  328. union {
  329. DWORD_PTR dwMDDataOffset; // The buffer for the data. Offset from the pbBuffer parameter. Must be same size as pbMDData!
  330. unsigned char *pbMDData; // The buffer for the data. The pointer is always an input
  331. };
  332. DWORD dwMDDataTag; // Tag for use in freeing reference data
  333. } METADATA_GETALL_INTERNAL_RECORD, *PMETADATA_GETALL_INTERNAL_RECORD;
  334. typedef DWORD METADATA_HANDLE, *PMETADATA_HANDLE;
  335. cpp_quote("/* ")
  336. cpp_quote("Handle Information ")
  337. cpp_quote(" ")
  338. cpp_quote(" Permissions - The permissions associated with the handle. ")
  339. cpp_quote(" METADATA_PERMISSION_READ ")
  340. cpp_quote(" METADATA_PERMISSION_WRITE ")
  341. cpp_quote(" ")
  342. cpp_quote(" SystemChangeNumber - The system change number at the time the handle was ")
  343. cpp_quote(" allocated. ")
  344. cpp_quote("*/ ")
  345. typedef struct _METADATA_HANDLE_INFO {
  346. DWORD dwMDPermissions;
  347. DWORD dwMDSystemChangeNumber;
  348. } METADATA_HANDLE_INFO, *PMETADATA_HANDLE_INFO;
  349. cpp_quote("/* ")
  350. cpp_quote(" Change Object - The structure passed to ComMDSinkNotify. ")
  351. cpp_quote(" ")
  352. cpp_quote(" Path - The path of the MetaObject modified. ")
  353. cpp_quote(" ")
  354. cpp_quote(" ChangeType - The types of changes made, from the flags below. ")
  355. cpp_quote(" ")
  356. cpp_quote(" NumDataIDs - The number of data id's changed. ")
  357. cpp_quote(" ")
  358. cpp_quote(" DataIDs - An array of the data id's changed. ")
  359. cpp_quote("*/ ")
  360. cpp_quote(" ")
  361. cpp_quote("#define MD_CHANGE_OBJECT MD_CHANGE_OBJECT_W ")
  362. cpp_quote("#define PMD_CHANGE_OBJECT PMD_CHANGE_OBJECT_W ")
  363. typedef struct _MD_CHANGE_OBJECT_W {
  364. [string] LPWSTR pszMDPath;
  365. DWORD dwMDChangeType; // The type of the change (add, delete, modify)
  366. DWORD dwMDNumDataIDs;
  367. [unique, size_is(dwMDNumDataIDs)] DWORD *pdwMDDataIDs;
  368. } MD_CHANGE_OBJECT_W, *PMD_CHANGE_OBJECT_W;
  369. cpp_quote("/* ")
  370. cpp_quote(" ")
  371. cpp_quote("Change Types ")
  372. cpp_quote(" ")
  373. cpp_quote(" MD_CHANGE_TYPE_DELETE_OBJECT - The Meta Object was deleted. ")
  374. cpp_quote(" ")
  375. cpp_quote(" MD_CHANGE_TYPE_ADD_OBJECT - The Meta Object was added. ")
  376. cpp_quote(" ")
  377. cpp_quote(" MD_CHANGE_TYPE_SET_DATA - A data item was set. ")
  378. cpp_quote(" ")
  379. cpp_quote(" MD_CHANGE_TYPE_DELETE_DATA - A data item was deleted. ")
  380. cpp_quote(" ")
  381. cpp_quote(" MD_CHANGE_TYPE_RENAME_OBJECT - The Meta Object was renamed. ")
  382. cpp_quote(" ")
  383. cpp_quote("*/ ")
  384. cpp_quote("#define MD_CHANGE_TYPE_DELETE_OBJECT 0x00000001")
  385. cpp_quote("#define MD_CHANGE_TYPE_ADD_OBJECT 0x00000002")
  386. cpp_quote("#define MD_CHANGE_TYPE_SET_DATA 0x00000004")
  387. cpp_quote("#define MD_CHANGE_TYPE_DELETE_DATA 0x00000008")
  388. cpp_quote("#define MD_CHANGE_TYPE_RENAME_OBJECT 0x00000010")
  389. cpp_quote("/* ")
  390. cpp_quote(" ")
  391. cpp_quote("Max Change Entries - The maximum number of change entries that will be sent on ")
  392. cpp_quote(" a single call to IMDCOMSINK::ComMDSinkNotify. If more notifications are ")
  393. cpp_quote(" required, IMDCOMSINK::ComMDSinkNotify will be called multiple times. ")
  394. cpp_quote("*/ ")
  395. cpp_quote("#define MD_MAX_CHANGE_ENTRIES 100")
  396. cpp_quote("#endif")