1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef __REQUIRED_RPCNDR_H_VERSION__
7 #define __REQUIRED_RPCNDR_H_VERSION__ 475
8 #endif
9 
10 #include "rpc.h"
11 #include "rpcndr.h"
12 
13 #ifndef __RPCNDR_H_VERSION__
14 #error This stub requires an updated version of <rpcndr.h>
15 #endif
16 
17 #ifndef __mddefw_h__
18 #define __mddefw_h__
19 
20 #include "unknwn.h"
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 #ifndef __MIDL_user_allocate_free_DEFINED__
27 #define __MIDL_user_allocate_free_DEFINED__
28   void *__RPC_API MIDL_user_allocate(size_t);
29   void __RPC_API MIDL_user_free(void *);
30 #endif
31 
32 #ifndef _MD_DEFW_
33 #define _MD_DEFW_
34 #include <mdmsg.h>
35 #include <mdcommsg.h>
36 
37 #define METADATA_MAX_NAME_LEN 256
38 
39 #define METADATA_PERMISSION_READ 0x00000001
40 #define METADATA_PERMISSION_WRITE 0x00000002
41 
42   enum METADATATYPES {
43     ALL_METADATA = 0,DWORD_METADATA,STRING_METADATA,BINARY_METADATA,
44     EXPANDSZ_METADATA,MULTISZ_METADATA,INVALID_END_METADATA
45   };
46 
47 #define METADATA_NO_ATTRIBUTES 0
48 #define METADATA_INHERIT 0x00000001
49 #define METADATA_PARTIAL_PATH 0x00000002
50 #define METADATA_SECURE 0x00000004
51 #define METADATA_REFERENCE 0x00000008
52 #define METADATA_VOLATILE 0x00000010
53 #define METADATA_ISINHERITED 0x00000020
54 #define METADATA_INSERT_PATH 0x00000040
55 #define METADATA_LOCAL_MACHINE_ONLY 0x00000080
56 #define METADATA_NON_SECURE_ONLY 0x00000100
57 
58 #define MD_BACKUP_OVERWRITE 0x00000001
59 #define MD_BACKUP_SAVE_FIRST 0x00000002
60 #define MD_BACKUP_FORCE_BACKUP 0x00000004
61 
62 #define MD_BACKUP_NEXT_VERSION 0xffffffff
63 #define MD_BACKUP_HIGHEST_VERSION 0xfffffffe
64 #define MD_BACKUP_MAX_VERSION 9999
65 #define MD_BACKUP_MAX_LEN (100)
66 
67 #define MD_DEFAULT_BACKUP_LOCATION TEXT("MDBackUp")
68 
69 #define MD_HISTORY_LATEST 0x00000001
70 
71 #define MD_EXPORT_INHERITED 0x00000001
72 #define MD_EXPORT_NODE_ONLY 0x00000002
73 
74 #define MD_IMPORT_INHERITED 0x00000001
75 #define MD_IMPORT_NODE_ONLY 0x00000002
76 #define MD_IMPORT_MERGE 0x00000004
77 
78 #define MD_INSERT_PATH_STRINGA "<%INSERT_PATH%>"
79 #define MD_INSERT_PATH_STRINGW L##"<%INSERT_PATH%>"
80 #define MD_INSERT_PATH_STRING TEXT("<%INSERT_PATH%>")
81 
82 #define METADATA_MASTER_ROOT_HANDLE 0
83 
84   typedef struct _METADATA_RECORD {
85     DWORD dwMDIdentifier;
86     DWORD dwMDAttributes;
87     DWORD dwMDUserType;
88     DWORD dwMDDataType;
89     DWORD dwMDDataLen;
90     unsigned char *pbMDData;
91     DWORD dwMDDataTag;
92   } METADATA_RECORD;
93 
94   typedef struct _METADATA_RECORD *PMETADATA_RECORD;
95 
96   typedef struct _METADATA_GETALL_RECORD {
97     DWORD dwMDIdentifier;
98     DWORD dwMDAttributes;
99     DWORD dwMDUserType;
100     DWORD dwMDDataType;
101     DWORD dwMDDataLen;
102     DWORD dwMDDataOffset;
103     DWORD dwMDDataTag;
104   } METADATA_GETALL_RECORD;
105 
106   typedef struct _METADATA_GETALL_RECORD *PMETADATA_GETALL_RECORD;
107 
108   typedef struct _METADATA_GETALL_INTERNAL_RECORD {
109     DWORD dwMDIdentifier;
110     DWORD dwMDAttributes;
111     DWORD dwMDUserType;
112     DWORD dwMDDataType;
113     DWORD dwMDDataLen;
114     union {
115       DWORD_PTR dwMDDataOffset;
116       unsigned char *pbMDData;
117     };
118     DWORD dwMDDataTag;
119   } METADATA_GETALL_INTERNAL_RECORD;
120 
121   typedef struct _METADATA_GETALL_INTERNAL_RECORD *PMETADATA_GETALL_INTERNAL_RECORD;
122   typedef DWORD METADATA_HANDLE;
123   typedef DWORD *PMETADATA_HANDLE;
124 
125   typedef struct _METADATA_HANDLE_INFO {
126     DWORD dwMDPermissions;
127     DWORD dwMDSystemChangeNumber;
128   } METADATA_HANDLE_INFO;
129 
130   typedef struct _METADATA_HANDLE_INFO *PMETADATA_HANDLE_INFO;
131 
132 #define MD_CHANGE_OBJECT MD_CHANGE_OBJECT_W
133 #define PMD_CHANGE_OBJECT PMD_CHANGE_OBJECT_W
134   typedef struct _MD_CHANGE_OBJECT_W {
135     LPWSTR pszMDPath;
136     DWORD dwMDChangeType;
137     DWORD dwMDNumDataIDs;
138     DWORD *pdwMDDataIDs;
139   } MD_CHANGE_OBJECT_W;
140 
141   typedef struct _MD_CHANGE_OBJECT_W *PMD_CHANGE_OBJECT_W;
142 
143 #define MD_CHANGE_TYPE_DELETE_OBJECT 0x00000001
144 #define MD_CHANGE_TYPE_ADD_OBJECT 0x00000002
145 #define MD_CHANGE_TYPE_SET_DATA 0x00000004
146 #define MD_CHANGE_TYPE_DELETE_DATA 0x00000008
147 #define MD_CHANGE_TYPE_RENAME_OBJECT 0x00000010
148 
149 #define MD_MAX_CHANGE_ENTRIES 100
150 #endif
151 
152   extern RPC_IF_HANDLE __MIDL_itf_mddefw_0000_v0_0_c_ifspec;
153   extern RPC_IF_HANDLE __MIDL_itf_mddefw_0000_v0_0_s_ifspec;
154 
155 #ifdef __cplusplus
156 }
157 #endif
158 #endif
159