|
|
cpp_quote ("/*++") cpp_quote(" ") cpp_quote("Copyright (c) 1997-1999 Microsoft Corporation") cpp_quote(" ") cpp_quote("Module Name: mddef.h") cpp_quote(" ") cpp_quote(" Definitions for Admin Objects and Metadata") cpp_quote(" ") cpp_quote ("--*/")
cpp_quote("#ifndef _MD_DEFW_") cpp_quote("#define _MD_DEFW_")
import "unknwn.idl"; import "wtypes.idl"; cpp_quote("#include <mdmsg.h>") cpp_quote("#include <mdcommsg.h>")
cpp_quote("/* ") cpp_quote(" Error Codes ") cpp_quote(" ") cpp_quote(" Metadata api's all return HRESULTS. Since internal results are either ") cpp_quote(" winerrors or Metadata specific return codes (see mdmsg.h), they are ") cpp_quote(" converted to HRESULTS using the RETURNCODETOHRESULT macro (see ") cpp_quote(" commsg.h). ") cpp_quote("*/ ")
cpp_quote(" ")
cpp_quote("/* ") cpp_quote(" Max Name Length ") cpp_quote(" The maximum number of characters in the length of a metaobject name, ") cpp_quote(" including the terminating NULL. This refers to each node in the tree, ") cpp_quote(" not the entire path. ") cpp_quote(" eg. strlen(\"Root\") < METADATA_MAX_NAME_LEN ") cpp_quote("*/ ")
cpp_quote("#define METADATA_MAX_NAME_LEN 256")
cpp_quote("/* ") cpp_quote(" Access Permissons ") cpp_quote(" Permissions associated with handles of type METADATA_HANDLE ") cpp_quote(" ") cpp_quote(" METADATA_PERMISSION_READ - Allows reading metadata. ") cpp_quote(" METADATA_PERMISSION_WRITE - Allows writing metadata. ") cpp_quote("*/ ")
cpp_quote("#define METADATA_PERMISSION_READ 0x00000001") cpp_quote("#define METADATA_PERMISSION_WRITE 0x00000002")
cpp_quote("/* ") cpp_quote(" Data Types ") cpp_quote(" ") cpp_quote(" ALL_METADATA - Used on Get/Enum/Getall api's (ComMDGetMetaData, ") cpp_quote(" ComMDEnumMetaData, and ComMDGetAllMetaData), api's to allow getting ") cpp_quote(" all data. Not valid on the Set api. ") cpp_quote(" ") cpp_quote(" DWORD_METADATA - The data is an unsigned 32 bit value. ") cpp_quote(" ") cpp_quote(" STRING_METADATA - The data is a null terminated ASCII string. ") cpp_quote(" ") cpp_quote(" BINARY_METADATA - The data is any binary value. ") cpp_quote(" ") cpp_quote(" EXPANDSZ_METADATA - The data is a null terminated ASCII string. ") cpp_quote(" Clients are expected to treat this as an expandsz string. ") cpp_quote(" ") cpp_quote(" MULTISZ_METADATA - A series of NULL terminated ASCII strings. ending ") cpp_quote(" with 2 NULL's. ") cpp_quote("*/ ")
enum METADATATYPES { ALL_METADATA, DWORD_METADATA, STRING_METADATA, BINARY_METADATA, EXPANDSZ_METADATA, MULTISZ_METADATA, INVALID_END_METADATA };
cpp_quote("/* ") cpp_quote(" Attributes - The flags for the data. ") cpp_quote(" ") cpp_quote(" METADATA_INHERIT - If set for a data item, the data item can be ") cpp_quote(" inherited. If set on input to the Get/Enum/Getall api's, ") cpp_quote(" (ComMDGetMetaData, ComMDEnumMetaData, and ComMDGetAllMetaData), ") cpp_quote(" inheritable data will be returned. If not set on input to the ") cpp_quote(" Get/Enum/Getall, inheritable data will not be returned. ") cpp_quote(" ") cpp_quote(" METADATA_PARTIAL_PATH - If set on input to Get/Enum/Getall api's, this ") cpp_quote(" routine will return ERROR_SUCCESS and the inherited data even if ") cpp_quote(" the entire path is not present. Only valid if METADATA_INHERIT is ") cpp_quote(" also set. Should not be set for data items on input the the Set api ") cpp_quote(" (ComMDSetMetaData). ") cpp_quote(" ") cpp_quote(" METADATA_SECURE - If set for a data item, the data is stored in a ") cpp_quote(" secure fasion. Should not be set on input to Get/Enum api's. ") cpp_quote(" ") cpp_quote(" METADATA_REFERENCE - If set for a data item, the data item may be ") cpp_quote(" gotten by reference. If set on input to Get/Enum/GetAll api's and ") cpp_quote(" set on a the data item being returned, the data is returned by ") cpp_quote(" reference. A pointer to the metadata server's copy of the data is ") cpp_quote(" placed in the Data field of the METADATA_RECORD or ") cpp_quote(" METADATA_GETALL_RECORD, and the DataTag field is set. This data must") cpp_quote(" be freed by calling ComMDReleaseReferenceData. The client must not ") cpp_quote(" change this data. This flag must not be set on input to ") cpp_quote(" Get/Enum/Getall api's from remote clients. ") cpp_quote(" ") cpp_quote(" METADATA_VOLATILE - If set for a data item, the data item will not be ") cpp_quote(" saved to long term storage. ") cpp_quote(" ") cpp_quote(" METADATA_ISINHERITED - If specified on input to one of the get api's, ") cpp_quote(" the flag will be set on return if the data was inherited. ") cpp_quote(" ") cpp_quote(" METADATA_INSERT_PATH - If specified on input to one of the get api's, ") cpp_quote(" and on a string data item, the path relative to handle will replaced the") cpp_quote(" string MD_INSERT_PATH_STRING in the string data. ") cpp_quote(" ") cpp_quote(" METADATA_LOCAL_MACHINE_ONLY - If set for a data item, the data item") cpp_quote(" will not be replicated during web cluster replication.") cpp_quote(" ") cpp_quote(" METADATA_NON_SECURE_ONLY - When using GetAll api, do not") cpp_quote(" retrieve properties which are secure.") cpp_quote(" ") cpp_quote("*/ ")
cpp_quote(" ") cpp_quote("#define METADATA_NO_ATTRIBUTES 0 ") cpp_quote("#define METADATA_INHERIT 0x00000001 ") cpp_quote("#define METADATA_PARTIAL_PATH 0x00000002 ") cpp_quote("#define METADATA_SECURE 0x00000004 ") cpp_quote("#define METADATA_REFERENCE 0x00000008 ") cpp_quote("#define METADATA_VOLATILE 0x00000010 ") cpp_quote("#define METADATA_ISINHERITED 0x00000020 ") cpp_quote("#define METADATA_INSERT_PATH 0x00000040 ") cpp_quote("#define METADATA_LOCAL_MACHINE_ONLY 0x00000080 ") cpp_quote("#define METADATA_NON_SECURE_ONLY 0x00000100 ") cpp_quote(" ")
cpp_quote("/* ") cpp_quote(" Backup Flags. ") cpp_quote(" ") cpp_quote(" MD_BACKUP_OVERWRITE - If set, the metabase will be backed up even if ") cpp_quote(" a backupe with the same name and version already exists. The ") cpp_quote(" existing backup will be overwritten. ") cpp_quote(" ") cpp_quote(" MD_BACKUP_SAVE_FIRST - If set backup will save the metabase prior to ") cpp_quote(" making the backup. If the save fails, backup behavior is dependent ") cpp_quote(" on the value of MD_BACKUP_FORCE_BACKUP. ") cpp_quote(" ") cpp_quote(" MD_BACKUP_FORCE_BACKUP - If set backup will proceed even if the save ") cpp_quote(" failed. Only valid if MD_BACKUP_SAVE_FIRST is set. If the save ") cpp_quote(" but the backup succeeds, a warning will be returned. ") cpp_quote("*/ ") cpp_quote(" ") cpp_quote("#define MD_BACKUP_OVERWRITE 0x00000001 ") cpp_quote("#define MD_BACKUP_SAVE_FIRST 0x00000002 ") cpp_quote("#define MD_BACKUP_FORCE_BACKUP 0x00000004 ") cpp_quote("/* ") cpp_quote(" Backup Version Defines. ") cpp_quote(" ") cpp_quote(" MD_BACKUP_NEXT_VERSION - For Backup, indicates use the next available ") cpp_quote(" backup version of the BackupLocation specified, ie. one higher than ") cpp_quote(" the highest existing version. ") cpp_quote(" Not valid for Restore or DeleteBackup. ") cpp_quote(" ") cpp_quote(" MD_BACKUP_HIGHEST_VERSION - For Backup, Restore, and DeleteBackup, will ") cpp_quote(" use the highest existing backup version of the BackupLocation ") cpp_quote(" specified. ") cpp_quote(" ") cpp_quote(" MD_BACKUP_MAX_VERSION - The highest allowed backup version number. ") cpp_quote(" ") cpp_quote(" MD_BACKUP_MAX_LEN - The maximup length, in UNICODE characters, of the ") cpp_quote(" BackupLocation. ") cpp_quote("*/ ") cpp_quote(" ") cpp_quote("#define MD_BACKUP_NEXT_VERSION 0xffffffff ") cpp_quote("#define MD_BACKUP_HIGHEST_VERSION 0xfffffffe ") cpp_quote("#define MD_BACKUP_MAX_VERSION 9999 ") cpp_quote("#define MD_BACKUP_MAX_LEN (100) ") cpp_quote(" ") cpp_quote("/* ") cpp_quote(" Backup Location Defines. ") cpp_quote(" ") cpp_quote(" MD_DEFAULT_BACKUP_LOCATION - The default location to backup from or ") cpp_quote(" restore to if no location is specified. ") cpp_quote("*/ ") cpp_quote(" ") cpp_quote("#define MD_DEFAULT_BACKUP_LOCATION TEXT(\"MDBackUp\") ") cpp_quote(" ") cpp_quote("/* ") cpp_quote(" History Flags. ") cpp_quote(" ") cpp_quote(" MD_HISTORY_LATEST - The most recent history file by timestamp ") cpp_quote("*/ ") cpp_quote(" ") cpp_quote("#define MD_HISTORY_LATEST 0x00000001 ") cpp_quote(" ")
cpp_quote("/* ") cpp_quote(" Export Flags. ") cpp_quote(" ") cpp_quote(" MD_EXPORT_INHERITED - If set, inherited properties will be backed up ") cpp_quote(" to special section in output file called IIsInheritedProperties. ") cpp_quote(" If not set, inherited properties are ignored. ") cpp_quote(" ") cpp_quote(" MD_EXPORT_NODE_ONLY - If set, children will not be exported. ") cpp_quote(" If not set, children will be exported. ") cpp_quote("*/ ") cpp_quote(" ") cpp_quote("#define MD_EXPORT_INHERITED 0x00000001 ") cpp_quote("#define MD_EXPORT_NODE_ONLY 0x00000002 ") cpp_quote(" ")
cpp_quote("/* ") cpp_quote(" Import Flags. ") cpp_quote(" ") cpp_quote(" MD_IMPORT_INHERITED - If set, inherited properties will be imported. ") cpp_quote(" ") cpp_quote(" MD_IMPORT_NODE_ONLY - If set, children will not be imported. ") cpp_quote(" If not set, children will be imported. ") cpp_quote(" ") cpp_quote(" MD_IMPORT_MERGE - If set, imported settings overwrite existing ") cpp_quote(" settings, but entire node is not overwritten. If not set, entire ") cpp_quote(" node is clobbered. ") cpp_quote("*/ ") cpp_quote(" ") cpp_quote("#define MD_IMPORT_INHERITED 0x00000001 ") cpp_quote("#define MD_IMPORT_NODE_ONLY 0x00000002 ") cpp_quote("#define MD_IMPORT_MERGE 0x00000004 ") cpp_quote(" ")
cpp_quote("/* ") cpp_quote(" Insert Path Defines. ") cpp_quote("*/ ") cpp_quote(" ") cpp_quote(" ") cpp_quote("#define MD_INSERT_PATH_STRINGA \"<%INSERT_PATH%>\" ") cpp_quote("#define MD_INSERT_PATH_STRINGW L##\"<%INSERT_PATH%>\" ") cpp_quote("#define MD_INSERT_PATH_STRING TEXT(\"<%INSERT_PATH%>\") ") cpp_quote(" ")
cpp_quote("/* ") cpp_quote(" Handle Defines. ") cpp_quote("*/ ") cpp_quote(" ") cpp_quote("#define METADATA_MASTER_ROOT_HANDLE 0") cpp_quote(" ")
cpp_quote("/* ") cpp_quote(" METADATA_RECORD is the basic input/output parameter for the set and get ") cpp_quote(" metadata api's. The Set api (ComMDSetMetaData) takes all fields as ") cpp_quote(" input, except DataTag. The Get/Enum api's (ComMDGetMetadata and ") cpp_quote(" ComMDEnumMetaData) take some of the fields as input, and fill in all ") cpp_quote(" fields as output. ") cpp_quote(" ") cpp_quote(" Identifier - The identifier of the data. ") cpp_quote(" ") cpp_quote(" Attributes - The flags for the data. ") cpp_quote(" ") cpp_quote(" UserType - The User Type for the data. This is a user defined field to allow") cpp_quote(" users to group data. If set to anything other than ALL_METADATA on input") cpp_quote(" to Get/Set apis, only metadata of the specified User Type will be ") cpp_quote(" returned. ") cpp_quote(" ") cpp_quote(" ALL_METADATA ") cpp_quote(" ") cpp_quote(" User Defined Values ") cpp_quote(" ") cpp_quote(" DataType - The Type of the data. Must be set to a valid value other than ") cpp_quote(" ALL_METADATA for each data item. If set to anything other than ") cpp_quote(" ALL_METADATA on input to Get/Set api's, only metadata of the ") cpp_quote(" specified Data Type will be returned. ") cpp_quote(" ALL_METADATA ") cpp_quote(" DWORD_METADATA ") cpp_quote(" STRING_METADATA ") cpp_quote(" BINARY_METADATA ") cpp_quote(" EXPANDSZ_METADATA ") cpp_quote(" ") cpp_quote(" DataLen - On input to the Set api, specifies the length of Data, in ") cpp_quote(" bytes. Inprocess clients only need to specify this for binary data. ") cpp_quote(" Remote clients need to specify this for all data types. For strings, ") cpp_quote(" this must include the trailing '\0', eg. strlen(string) + 1. ") cpp_quote(" On input to Get/Enum apis, specifies the size of the buffer pointed to ") cpp_quote(" by Data. On successful output from Get/Enum API's, specifies the size of") cpp_quote(" Data in bytes. ") cpp_quote(" ") cpp_quote(" Data - On input to the Set api, points to the data. On input to the ") cpp_quote(" Get/Enum api's, points to a buffer to return the data in. On output ") cpp_quote(" from the Get/Enum api's, points to the data. If the data is not ") cpp_quote(" gotten by reference, the pointer will be unchanged. ") cpp_quote(" ") cpp_quote(" DataTag - A tag for reference data. Not used in the Set api. Not used on ") cpp_quote(" input to the Get/Enum api's. On successful return from the Get/Enum ") cpp_quote(" api's, this is set to a nonzero tag if the data was gotten by reference,") cpp_quote(" and set to 0 if the data was not gotten by reference. ") cpp_quote("*/ ")
typedef struct _METADATA_RECORD { DWORD dwMDIdentifier; // The Data Identifier DWORD dwMDAttributes; // The Data Attributes DWORD dwMDUserType; // The User Type DWORD dwMDDataType; // The Data Type DWORD dwMDDataLen; // The Data Length [unique, size_is(dwMDDataLen)]unsigned char *pbMDData; // The buffer for // the data. The pointer is always an input // parameter, but the buffer is filled in by the get api's. DWORD dwMDDataTag; // Tag for use in freeing reference data } METADATA_RECORD, *PMETADATA_RECORD;
cpp_quote("/* ") cpp_quote(" METADATA_GETALL_RECORD, is essentially the same as METADATA_RECORD, but is ") cpp_quote(" used by MDGetAllMetaData. It is used the same as the corresponding ") cpp_quote(" METADATA_RECORD values for the MDGetMetaData, with the following ") cpp_quote(" exceptions: ") cpp_quote(" ") cpp_quote(" MDGetAllMetadata does not take the structure as input, but takes parameters ") cpp_quote(" equivalent to Attributes, UserType, and DataType. ") cpp_quote(" ") cpp_quote(" On output, MDGetAllMetadata returns an array of METADATA_GETALL_RECORD. ") cpp_quote(" ") cpp_quote(" DataOffset/Data - If the data is not returned by reference, DataOffset ") cpp_quote(" contains the byte offset into the buffer provided. If the data is ") cpp_quote(" returned by reference, Data contains a pointer to the data. ") cpp_quote(" ") cpp_quote(" ") cpp_quote(" Because an opaque pointer to an array of _METADATA_GETALL_RECORD's is ") cpp_quote(" passed on calls to GetAllData, its size must be the same on x86 and ia64. ") cpp_quote(" So, the pbMDData member (not used by the public interface) has been ") cpp_quote(" removed and a new structure _METADATA_GETALL_INTERNAL_RECORD has been ") cpp_quote(" created for use by the callees of the internal interface ") cpp_quote("*/ ")
typedef struct _METADATA_GETALL_RECORD { DWORD dwMDIdentifier; // The Data Identifier DWORD dwMDAttributes; // The Data Attributes DWORD dwMDUserType; // The User Type DWORD dwMDDataType; // The Data Type DWORD dwMDDataLen; // The Data Length DWORD dwMDDataOffset; // Offset from the pbBuffer parameter. Must be same size on x86 and ia64! DWORD dwMDDataTag; // Tag for use in freeing reference data } METADATA_GETALL_RECORD, *PMETADATA_GETALL_RECORD;
typedef struct _METADATA_GETALL_INTERNAL_RECORD { DWORD dwMDIdentifier; // The Data Identifier DWORD dwMDAttributes; // The Data Attributes DWORD dwMDUserType; // The User Type DWORD dwMDDataType; // The Data Type DWORD dwMDDataLen; // The Data Length union { DWORD_PTR dwMDDataOffset; // The buffer for the data. Offset from the pbBuffer parameter. Must be same size as pbMDData! unsigned char *pbMDData; // The buffer for the data. The pointer is always an input }; DWORD dwMDDataTag; // Tag for use in freeing reference data } METADATA_GETALL_INTERNAL_RECORD, *PMETADATA_GETALL_INTERNAL_RECORD;
typedef DWORD METADATA_HANDLE, *PMETADATA_HANDLE;
cpp_quote("/* ") cpp_quote("Handle Information ") cpp_quote(" ") cpp_quote(" Permissions - The permissions associated with the handle. ") cpp_quote(" METADATA_PERMISSION_READ ") cpp_quote(" METADATA_PERMISSION_WRITE ") cpp_quote(" ") cpp_quote(" SystemChangeNumber - The system change number at the time the handle was ") cpp_quote(" allocated. ") cpp_quote("*/ ")
typedef struct _METADATA_HANDLE_INFO { DWORD dwMDPermissions; DWORD dwMDSystemChangeNumber; } METADATA_HANDLE_INFO, *PMETADATA_HANDLE_INFO;
cpp_quote("/* ") cpp_quote(" Change Object - The structure passed to ComMDSinkNotify. ") cpp_quote(" ") cpp_quote(" Path - The path of the MetaObject modified. ") cpp_quote(" ") cpp_quote(" ChangeType - The types of changes made, from the flags below. ") cpp_quote(" ") cpp_quote(" NumDataIDs - The number of data id's changed. ") cpp_quote(" ") cpp_quote(" DataIDs - An array of the data id's changed. ") cpp_quote("*/ ")
cpp_quote(" ") cpp_quote("#define MD_CHANGE_OBJECT MD_CHANGE_OBJECT_W ") cpp_quote("#define PMD_CHANGE_OBJECT PMD_CHANGE_OBJECT_W ")
typedef struct _MD_CHANGE_OBJECT_W { [string] LPWSTR pszMDPath; DWORD dwMDChangeType; // The type of the change (add, delete, modify) DWORD dwMDNumDataIDs; [unique, size_is(dwMDNumDataIDs)] DWORD *pdwMDDataIDs; } MD_CHANGE_OBJECT_W, *PMD_CHANGE_OBJECT_W;
cpp_quote("/* ") cpp_quote(" ") cpp_quote("Change Types ") cpp_quote(" ") cpp_quote(" MD_CHANGE_TYPE_DELETE_OBJECT - The Meta Object was deleted. ") cpp_quote(" ") cpp_quote(" MD_CHANGE_TYPE_ADD_OBJECT - The Meta Object was added. ") cpp_quote(" ") cpp_quote(" MD_CHANGE_TYPE_SET_DATA - A data item was set. ") cpp_quote(" ") cpp_quote(" MD_CHANGE_TYPE_DELETE_DATA - A data item was deleted. ") cpp_quote(" ") cpp_quote(" MD_CHANGE_TYPE_RENAME_OBJECT - The Meta Object was renamed. ") cpp_quote(" ") cpp_quote("*/ ")
cpp_quote("#define MD_CHANGE_TYPE_DELETE_OBJECT 0x00000001") cpp_quote("#define MD_CHANGE_TYPE_ADD_OBJECT 0x00000002") cpp_quote("#define MD_CHANGE_TYPE_SET_DATA 0x00000004") cpp_quote("#define MD_CHANGE_TYPE_DELETE_DATA 0x00000008") cpp_quote("#define MD_CHANGE_TYPE_RENAME_OBJECT 0x00000010")
cpp_quote("/* ") cpp_quote(" ") cpp_quote("Max Change Entries - The maximum number of change entries that will be sent on ") cpp_quote(" a single call to IMDCOMSINK::ComMDSinkNotify. If more notifications are ") cpp_quote(" required, IMDCOMSINK::ComMDSinkNotify will be called multiple times. ") cpp_quote("*/ ")
cpp_quote("#define MD_MAX_CHANGE_ENTRIES 100")
cpp_quote("#endif")
|