]>
Commit | Line | Data |
---|---|---|
e1599b0c XL |
1 | // Copyright © 2015, Brian Vincent |
2 | // Licensed under the MIT License <LICENSE.md> | |
3 | //! VSS Writer header file | |
4 | ENUM!{enum VSS_USAGE_TYPE { | |
5 | VSS_UT_UNDEFINED = 0, | |
6 | VSS_UT_BOOTABLESYSTEMSTATE = 1, | |
7 | VSS_UT_SYSTEMSERVICE = 2, | |
8 | VSS_UT_USERDATA = 3, | |
9 | VSS_UT_OTHER = 4, | |
10 | }} | |
11 | ENUM!{enum VSS_SOURCE_TYPE { | |
12 | VSS_ST_UNDEFINED = 0, | |
13 | VSS_ST_TRANSACTEDDB = 1, | |
14 | VSS_ST_NONTRANSACTEDDB = 2, | |
15 | VSS_ST_OTHER = 3, | |
16 | }} | |
17 | ENUM!{enum VSS_RESTOREMETHOD_ENUM { | |
18 | VSS_RME_UNDEFINED = 0, | |
19 | VSS_RME_RESTORE_IF_NOT_THERE = 1, | |
20 | VSS_RME_RESTORE_IF_CAN_REPLACE = 2, | |
21 | VSS_RME_STOP_RESTORE_START = 3, | |
22 | VSS_RME_RESTORE_TO_ALTERNATE_LOCATION = 4, | |
23 | VSS_RME_RESTORE_AT_REBOOT = 5, | |
24 | VSS_RME_RESTORE_AT_REBOOT_IF_CANNOT_REPLACE = 6, | |
25 | VSS_RME_CUSTOM = 7, | |
26 | VSS_RME_RESTORE_STOP_START = 8, | |
27 | }} | |
28 | ENUM!{enum VSS_WRITERRESTORE_ENUM { | |
29 | VSS_WRE_UNDEFINED = 0, | |
30 | VSS_WRE_NEVER = 1, | |
31 | VSS_WRE_IF_REPLACE_FAILS = 2, | |
32 | VSS_WRE_ALWAYS = 3, | |
33 | }} | |
34 | ENUM!{enum VSS_COMPONENT_TYPE { | |
35 | VSS_CT_UNDEFINED = 0, | |
36 | VSS_CT_DATABASE = 1, | |
37 | VSS_CT_FILEGROUP = 2, | |
38 | }} | |
39 | ENUM!{enum VSS_ALTERNATE_WRITER_STATE { | |
40 | VSS_AWS_UNDEFINED = 0, | |
41 | VSS_AWS_NO_ALTERNATE_WRITER = 1, | |
42 | VSS_AWS_ALTERNATE_WRITER_EXISTS = 2, | |
43 | VSS_AWS_THIS_IS_ALTERNATE_WRITER = 3, | |
44 | }} | |
45 | pub type VSS_SUBSCRIBE_MASK = ::DWORD; | |
46 | pub const VSS_SM_POST_SNAPSHOT_FLAG: ::DWORD = 0x00000001; | |
47 | pub const VSS_SM_BACKUP_EVENTS_FLAG: ::DWORD = 0x00000002; | |
48 | pub const VSS_SM_RESTORE_EVENTS_FLAG: ::DWORD = 0x00000004; | |
49 | pub const VSS_SM_IO_THROTTLING_FLAG: ::DWORD = 0x00000008; | |
50 | pub const VSS_SM_ALL_FLAGS: ::DWORD = 0xffffffff; | |
51 | ENUM!{enum VSS_RESTORE_TARGET { | |
52 | VSS_RT_UNDEFINED = 0, | |
53 | VSS_RT_ORIGINAL = 1, | |
54 | VSS_RT_ALTERNATE = 2, | |
55 | VSS_RT_DIRECTED = 3, | |
56 | VSS_RT_ORIGINAL_LOCATION = 4, | |
57 | }} | |
58 | ENUM!{enum VSS_FILE_RESTORE_STATUS { | |
59 | VSS_RS_UNDEFINED = 0, | |
60 | VSS_RS_NONE = 1, | |
61 | VSS_RS_ALL = 2, | |
62 | VSS_RS_FAILED = 3, | |
63 | }} | |
64 | pub type VSS_COMPONENT_FLAGS = ::DWORD; | |
65 | pub const VSS_CF_BACKUP_RECOVERY: ::DWORD = 0x00000001; | |
66 | pub const VSS_CF_APP_ROLLBACK_RECOVERY: ::DWORD = 0x00000002; | |
67 | pub const VSS_CF_NOT_SYSTEM_STATE: ::DWORD = 0x00000004; | |
68 | RIDL!( | |
69 | interface IVssWMFiledesc(IVssWMFiledescVtbl): IUnknown(IUnknownVtbl) { | |
70 | fn GetPath(&mut self, pbstrPath: *mut ::BSTR) -> ::HRESULT, | |
71 | fn GetFilespec(&mut self, pbstrFilespec: *mut ::BSTR) -> ::HRESULT, | |
72 | fn GetRecursive(&mut self, pbRecursive: *mut bool) -> ::HRESULT, | |
73 | fn GetAlternateLocation(&mut self, pbstrAlternateLocation: *mut ::BSTR) -> ::HRESULT, | |
74 | fn GetBackupTypeMask(&mut self, pdwTypeMask: *mut ::DWORD) -> ::HRESULT | |
75 | } | |
76 | ); | |
77 | RIDL!( | |
78 | interface IVssWMDependency(IVssWMDependencyVtbl): IUnknown(IUnknownVtbl) { | |
79 | fn GetWriterId(&mut self, pWriterId: *mut ::VSS_ID) -> ::HRESULT, | |
80 | fn GetLogicalPath(&mut self, pbstrLogicalPath: *mut ::BSTR) -> ::HRESULT, | |
81 | fn GetComponentName(&mut self, pbstrComponentName: *mut ::BSTR) -> ::HRESULT | |
82 | } | |
83 | ); | |
84 | RIDL!( | |
85 | interface IVssComponent(IVssComponentVtbl): IUnknown(IUnknownVtbl) { | |
86 | fn GetLogicalPath(&mut self, pbstrPath: *mut ::BSTR) -> ::HRESULT, | |
87 | fn GetComponentType(&mut self, pct: *mut ::VSS_COMPONENT_TYPE) -> ::HRESULT, | |
88 | fn GetComponentName(&mut self, pbstrName: *mut ::BSTR) -> ::HRESULT, | |
89 | fn GetBackupSucceeded(&mut self, pbSucceeded: *mut bool) -> ::HRESULT, | |
90 | fn GetAlternateLocationMappingCount(&mut self, pcMappings: *mut ::UINT) -> ::HRESULT, | |
91 | fn GetAlternateLocationMapping( | |
92 | &mut self, iMapping: ::UINT, ppFiledesc: *mut *mut ::IVssWMFiledesc | |
93 | ) -> ::HRESULT, | |
94 | fn SetBackupMetadata(&mut self, wszData: ::LPCWSTR) -> ::HRESULT, | |
95 | fn GetBackupMetadata(&mut self, pbstrData: *mut ::BSTR) -> ::HRESULT, | |
96 | fn AddPartialFile( | |
97 | &mut self, wszPath: ::LPCWSTR, wszFilename: ::LPCWSTR, wszRanges: ::LPCWSTR, | |
98 | wszMetadata: ::LPCWSTR | |
99 | ) -> ::HRESULT, | |
100 | fn GetPartialFileCount(&mut self, pcPartialFiles: *mut ::UINT) -> ::HRESULT, | |
101 | fn GetPartialFile( | |
102 | &mut self, iPartialFile: ::UINT, pbstrPath: *mut ::BSTR, pbstrFilename: *mut ::BSTR, | |
103 | pbstrRange: *mut ::BSTR, pbstrMetadata: *mut ::BSTR | |
104 | ) -> ::HRESULT, | |
105 | fn IsSelectedForRestore(&mut self, pbSelectedForRestore: *mut bool) -> ::HRESULT, | |
106 | fn GetAdditionalRestores(&mut self, pbAdditionalRestores: *mut bool) -> ::HRESULT, | |
107 | fn GetNewTargetCount(&mut self, pcNewTarget: *mut ::UINT) -> ::HRESULT, | |
108 | fn GetNewTarget( | |
109 | &mut self, iNewTarget: ::UINT, ppFiledesc: *mut *mut ::IVssWMFiledesc | |
110 | ) -> ::HRESULT, | |
111 | fn AddDirectedTarget( | |
112 | &mut self, wszSourcePath: ::LPCWSTR, wszSourceFilename: ::LPCWSTR, | |
113 | wszSourceRangeList: ::LPCWSTR, wszDestinationPath: ::LPCWSTR, | |
114 | wszDestinationFilename: ::LPCWSTR, wszDestinationRangeList: ::LPCWSTR | |
115 | ) -> ::HRESULT, | |
116 | fn GetDirectedTargetCount(&mut self, pcDirectedTarget: *mut ::UINT) -> ::HRESULT, | |
117 | fn GetDirectedTarget( | |
118 | &mut self, iDirectedTarget: ::UINT, pbstrSourcePath: *mut ::BSTR, | |
119 | pbstrSourceFileName: *mut ::BSTR, pbstrSourceRangeList: *mut ::BSTR, | |
120 | pbstrDestinationPath: *mut ::BSTR, pbstrDestinationFilename: *mut ::BSTR, | |
121 | pbstrDestinationRangeList: *mut ::BSTR | |
122 | ) -> ::HRESULT, | |
123 | fn SetRestoreMetadata(&mut self, wszRestoreMetadata: ::LPCWSTR) -> ::HRESULT, | |
124 | fn GetRestoreMetadata(&mut self, pbstrRestoreMetadata: *mut ::BSTR) -> ::HRESULT, | |
125 | fn SetRestoreTarget(&mut self, target: ::VSS_RESTORE_TARGET) -> ::HRESULT, | |
126 | fn GetRestoreTarget(&mut self, pTarget: *mut ::VSS_RESTORE_TARGET) -> ::HRESULT, | |
127 | fn SetPreRestoreFailureMsg(&mut self, wszPreRestoreFailureMsg: ::LPCWSTR) -> ::HRESULT, | |
128 | fn GetPreRestoreFailureMsg(&mut self, pbstrPreRestoreFailureMsg: *mut ::BSTR) -> ::HRESULT, | |
129 | fn SetPostRestoreFailureMsg(&mut self, wszPostRestoreFailureMsg: ::LPCWSTR) -> ::HRESULT, | |
130 | fn GetPostRestoreFailureMsg(&mut self, pbstrPostRestoreFailureMsg: *mut ::BSTR) -> ::HRESULT, | |
131 | fn SetBackupStamp(&mut self, wszBackupStamp: ::LPCWSTR) -> ::HRESULT, | |
132 | fn GetBackupStamp(&mut self, pbstrBackupStamp: *mut ::BSTR) -> ::HRESULT, | |
133 | fn GetPreviousBackupStamp(&mut self, pbstrBackupStamp: *mut ::BSTR) -> ::HRESULT, | |
134 | fn GetBackupOptions(&mut self, pbstrBackupOptions: *mut ::BSTR) -> ::HRESULT, | |
135 | fn GetRestoreOptions(&mut self, pbstrRestoreOptions: *mut ::BSTR) -> ::HRESULT, | |
136 | fn GetRestoreSubcomponentCount(&mut self, pcRestoreSubcomponent: *mut ::UINT) -> ::HRESULT, | |
137 | fn GetRestoreSubcomponent( | |
138 | &mut self, iComponent: ::UINT, pbstrLogicalPath: *mut ::BSTR, | |
139 | pbstrComponentName: *mut ::BSTR, pbRepair: *mut bool | |
140 | ) -> ::HRESULT, | |
141 | fn GetFileRestoreStatus(&mut self, pStatus: *mut VSS_FILE_RESTORE_STATUS) -> ::HRESULT, | |
142 | fn AddDifferencedFilesByLastModifyTime( | |
143 | &mut self, wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, bRecursive: ::BOOL, | |
144 | ftLastModifyTime: ::FILETIME | |
145 | ) -> ::HRESULT, | |
146 | fn AddDifferencedFilesByLastModifyLSN( | |
147 | &mut self, wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, bRecursive: ::BOOL, | |
148 | bstrLsnString: ::BSTR | |
149 | ) -> ::HRESULT, | |
150 | fn GetDifferencedFilesCount(&mut self, pcDifferencedFiles: *mut ::UINT) -> ::HRESULT, | |
151 | fn GetDifferencedFile( | |
152 | &mut self, iDifferencedFile: ::UINT, pbstrPath: *mut ::BSTR, pbstrFilespec: *mut ::BSTR, | |
153 | pbRecursive: *mut ::BOOL, pbstrLsnString: *mut ::BSTR, pftLastModifyTime: *mut ::FILETIME | |
154 | ) -> ::HRESULT | |
155 | } | |
156 | ); | |
157 | RIDL!( | |
158 | interface IVssWriterComponents(IVssWriterComponentsVtbl) { | |
159 | fn GetComponentCount(&mut self, pcComponents: *mut ::UINT) -> ::HRESULT, | |
160 | fn GetWriterInfo( | |
161 | &mut self, pidInstance: *mut ::VSS_ID, pidWriter: *mut ::VSS_ID | |
162 | ) -> ::HRESULT, | |
163 | fn GetComponent( | |
164 | &mut self, iComponent: ::UINT, ppComponent: *mut *mut ::IVssComponent | |
165 | ) -> ::HRESULT | |
166 | } | |
167 | ); | |
168 | RIDL!( | |
169 | interface IVssComponentEx(IVssComponentExVtbl): IVssComponent(IVssComponentVtbl) { | |
170 | fn SetPrepareForBackupFailureMsg(&mut self, wszFailureMsg: ::LPCWSTR) -> ::HRESULT, | |
171 | fn SetPostSnapshotFailureMsg(&mut self, wszFailureMsg: ::LPCWSTR) -> ::HRESULT, | |
172 | fn GetPrepareForBackupFailureMsg(&mut self, pbstrFailureMsg: *mut ::BSTR) -> ::HRESULT, | |
173 | fn GetPostSnapshotFailureMsg(&mut self, pbstrFailureMsg: *mut ::BSTR) -> ::HRESULT, | |
174 | fn GetAuthoritativeRestore(&mut self, pbAuth: *mut bool) -> ::HRESULT, | |
175 | fn GetRollForward( | |
176 | &mut self, pRollType: *mut ::VSS_ROLLFORWARD_TYPE, pbstrPoint: *mut ::BSTR | |
177 | ) -> ::HRESULT, | |
178 | fn GetRestoreName(&mut self, pbstrName: *mut ::BSTR) -> ::HRESULT | |
179 | } | |
180 | ); | |
181 | RIDL!( | |
182 | interface IVssComponentEx2(IVssComponentEx2Vtbl): IVssComponentEx(IVssComponentExVtbl) { | |
183 | fn SetFailure( | |
184 | &mut self, hr: ::HRESULT, hrApplication: ::HRESULT, wszApplicationMessage: ::LPCWSTR, | |
185 | dwReserved: ::DWORD | |
186 | ) -> ::HRESULT, | |
187 | fn GetFailure( | |
188 | &mut self, phr: *mut ::HRESULT, phrApplication: *mut ::HRESULT, | |
189 | pbstrApplicationMessage: *mut ::BSTR, pdwReserved: *mut ::DWORD | |
190 | ) -> ::HRESULT | |
191 | } | |
192 | ); | |
193 | RIDL!( | |
194 | interface IVssCreateWriterMetadata(IVssCreateWriterMetadataVtbl) { | |
195 | fn AddIncludeFiles( | |
196 | &mut self, wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, bRecursive: bool, | |
197 | wszAlternateLocation: ::LPCWSTR | |
198 | ) -> ::HRESULT, | |
199 | fn AddExcludeFiles( | |
200 | &mut self, wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, bRecursive: bool | |
201 | ) -> ::HRESULT, | |
202 | fn AddComponent( | |
203 | &mut self, ct: ::VSS_COMPONENT_TYPE, wszLogicalPath: ::LPCWSTR, | |
204 | wszComponentName: ::LPCWSTR, wszCaption: ::LPCWSTR, pbIcon: *const ::BYTE, cbIcon: ::UINT, | |
205 | bRestoreMetadata: bool, bNotifyOnBackupComplete: bool, bSelectableForRestore: bool, | |
206 | dwComponentFlags: ::DWORD | |
207 | ) -> ::HRESULT, | |
208 | fn AddDatabaseFiles( | |
209 | &mut self, wszLogicalPath: ::LPCWSTR, wszDatabaseName: ::LPCWSTR, wszPath: ::LPCWSTR, | |
210 | wszFilespec: ::LPCWSTR, dwBackupTypeMask: ::DWORD | |
211 | ) -> ::HRESULT, | |
212 | fn AddDatabaseLogFiles(&mut self, wszLogicalPath: ::LPCWSTR, wszDatabaseName: ::LPCWSTR, | |
213 | wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, dwBackupTypeMask: ::DWORD | |
214 | ) -> ::HRESULT, | |
215 | fn AddFilesToFileGroup(&mut self, wszLogicalPath: ::LPCWSTR, wszGroupName: ::LPCWSTR, | |
216 | wszPath: ::LPCWSTR, wszFilespec: ::LPCWSTR, bRecursive: bool, | |
217 | wszAlternateLocation: ::LPCWSTR, dwBackupTypeMask: ::DWORD | |
218 | ) -> ::HRESULT, | |
219 | fn SetRestoreMethod(&mut self, method: ::VSS_RESTOREMETHOD_ENUM, wszService: ::LPCWSTR, | |
220 | wszUserProcedure: ::LPCWSTR, writerRestore: ::VSS_WRITERRESTORE_ENUM, | |
221 | bRebootRequired: bool | |
222 | ) -> ::HRESULT, | |
223 | fn AddAlternateLocationMapping(&mut self, wszSourcePath: ::LPCWSTR, | |
224 | wszSourceFilespec: ::LPCWSTR, bRecursive: bool, wszDestination: ::LPCWSTR | |
225 | ) -> ::HRESULT, | |
226 | fn AddComponentDependency(&mut self, wszForLogicalPath: ::LPCWSTR, | |
227 | wszForComponentName: ::LPCWSTR, onWriterId: ::VSS_ID, wszOnLogicalPath: ::LPCWSTR, | |
228 | wszOnComponentName: ::LPCWSTR | |
229 | ) -> ::HRESULT, | |
230 | fn SetBackupSchema(&mut self, dwSchemaMask: ::DWORD) -> ::HRESULT, | |
231 | fn GetDocument(&mut self, pDoc: *mut *mut ::VOID) -> ::HRESULT, //TODO IXMLDOMDocument | |
232 | fn SaveAsXML(&mut self, pbstrXML: *mut ::BSTR) -> ::HRESULT | |
233 | } | |
234 | ); | |
235 | //IVssCreateWriterMetadataEx | |
236 | //IVssWriterImpl | |
237 | //IVssCreateExpressWriterMetadata | |
238 | //IVssExpressWriter | |
239 | //CVssWriter | |
240 | //CVssWriterEx | |
241 | //CVssWriterEx2 |