source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/dismapi.h

Last change on this file was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 12.4 KB
Line 
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
7#ifndef _DISMAPI_H_
8#define _DISMAPI_H_
9
10#include <winapifamily.h>
11
12#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
13
14#ifdef __cplusplus
15extern "C"
16{
17#endif
18
19typedef UINT DismSession;
20
21typedef void(CALLBACK *DISM_PROGRESS_CALLBACK)(UINT Current, UINT Total, PVOID UserData);
22
23#define DISM_ONLINE_IMAGE L"DISM_{53BFAE52-B167-4E2F-A258-0A37B57FF845}"
24
25#define DISM_SESSION_DEFAULT 0
26
27#define DISM_MOUNT_READWRITE 0x00000000
28#define DISM_MOUNT_READONLY 0x00000001
29#define DISM_MOUNT_OPTIMIZE 0x00000002
30#define DISM_MOUNT_CHECK_INTEGRITY 0x00000004
31
32#define DISM_COMMIT_IMAGE 0x00000000
33#define DISM_DISCARD_IMAGE 0x00000001
34
35#define DISM_COMMIT_GENERATE_INTEGRITY 0x00010000
36#define DISM_COMMIT_APPEND 0x00020000
37#define DISM_COMMIT_MASK 0xffff0000
38
39/* https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism/dism-api-enumerations */
40
41typedef enum _DismLogLevel
42{
43 DismLogErrors = 0,
44 DismLogErrorsWarnings,
45 DismLogErrorsWarningsInfo
46} DismLogLevel;
47
48typedef enum _DismImageIdentifier
49{
50 DismImageIndex = 0,
51 DismImageName
52} DismImageIdentifier;
53
54typedef enum _DismMountMode
55{
56 DismReadWrite = 0,
57 DismReadOnly
58} DismMountMode;
59
60typedef enum _DismImageType
61{
62 DismImageTypeUnsupported = -1,
63 DismImageTypeWim = 0,
64 DismImageTypeVhd = 1
65} DismImageType;
66
67typedef enum _DismImageBootable
68{
69 DismImageBootableYes = 0,
70 DismImageBootableNo,
71 DismImageBootableUnknown
72} DismImageBootable;
73
74typedef enum _DismMountStatus
75{
76 DismMountStatusOk = 0,
77 DismMountStatusNeedsRemount,
78 DismMountStatusInvalid
79} DismMountStatus;
80
81typedef enum _DismImageHealthState
82{
83 DismImageHealthy = 0,
84 DismImageRepairable,
85 DismImageNonRepairable
86} DismImageHealthState;
87
88typedef enum _DismPackageIdentifier
89{
90 DismPackageNone = 0,
91 DismPackageName,
92 DismPackagePath
93} DismPackageIdentifier;
94
95typedef enum _DismPackageFeatureState
96{
97 DismStateNotPresent = 0,
98 DismStateUninstallPending,
99 DismStateStaged,
100 DismStateResolved,
101 DismStateRemoved = DismStateResolved,
102 DismStateInstalled,
103 DismStateInstallPending,
104 DismStateSuperseded,
105 DismStatePartiallyInstalled
106} DismPackageFeatureState;
107
108typedef enum _DismReleaseType
109{
110 DismReleaseTypeCriticalUpdate = 0,
111 DismReleaseTypeDriver,
112 DismReleaseTypeFeaturePack,
113 DismReleaseTypeHotfix,
114 DismReleaseTypeSecurityUpdate,
115 DismReleaseTypeSoftwareUpdate,
116 DismReleaseTypeUpdate,
117 DismReleaseTypeUpdateRollup,
118 DismReleaseTypeLanguagePack,
119 DismReleaseTypeFoundation,
120 DismReleaseTypeServicePack,
121 DismReleaseTypeProduct,
122 DismReleaseTypeLocalPack,
123 DismReleaseTypeOther,
124 DismReleaseTypeOnDemandPack
125} DismReleaseType;
126
127typedef enum _DismRestartType
128{
129 DismRestartNo = 0,
130 DismRestartPossible,
131 DismRestartRequired
132} DismRestartType;
133
134typedef enum _DismDriverSignature
135{
136 DismDriverSignatureUnknown = 0,
137 DismDriverSignatureUnsigned = 1,
138 DismDriverSignatureSigned = 2
139} DismDriverSignature;
140
141typedef enum _DismFullyOfflineInstallableType
142{
143 DismFullyOfflineInstallable = 0,
144 DismFullyOfflineNotInstallable,
145 DismFullyOfflineInstallableUndetermined
146} DismFullyOfflineInstallableType;
147
148/* https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism/dism-api-structures */
149
150#pragma pack(push, 1)
151
152typedef struct _DismPackage
153{
154 PCWSTR PackageName;
155 DismPackageFeatureState PackageState;
156 DismReleaseType ReleaseType;
157 SYSTEMTIME InstallTime;
158} DismPackage;
159
160typedef struct _DismCustomProperty
161{
162 PCWSTR Name;
163 PCWSTR Value;
164 PCWSTR Path;
165} DismCustomProperty;
166
167typedef struct _DismFeature
168{
169 PCWSTR FeatureName;
170 DismPackageFeatureState State;
171} DismFeature;
172
173typedef struct _DismCapability
174{
175 PCWSTR Name;
176 DismPackageFeatureState State;
177} DismCapability;
178
179typedef struct _DismPackageInfo
180{
181 PCWSTR PackageName;
182 DismPackageFeatureState PackageState;
183 DismReleaseType ReleaseType;
184 SYSTEMTIME InstallTime;
185 WINBOOL Applicable;
186 PCWSTR Copyright;
187 PCWSTR Company;
188 SYSTEMTIME CreationTime;
189 PCWSTR DisplayName;
190 PCWSTR Description;
191 PCWSTR InstallClient;
192 PCWSTR InstallPackageName;
193 SYSTEMTIME LastUpdateTime;
194 PCWSTR ProductName;
195 PCWSTR ProductVersion;
196 DismRestartType RestartRequired;
197 DismFullyOfflineInstallableType FullyOffline;
198 PCWSTR SupportInformation;
199 DismCustomProperty *CustomProperty;
200 UINT CustomPropertyCount;
201 DismFeature *Feature;
202 UINT FeatureCount;
203} DismPackageInfo;
204
205#ifdef __cplusplus
206typedef struct _DismPackageInfoEx : public _DismPackageInfo
207{
208#else
209typedef struct _DismPackageInfoEx
210{
211 DismPackageInfo;
212#endif
213 PCWSTR CapabilityId;
214} DismPackageInfoEx;
215
216typedef struct _DismFeatureInfo
217{
218 PCWSTR FeatureName;
219 DismPackageFeatureState FeatureState;
220 PCWSTR DisplayName;
221 PCWSTR Description;
222 DismRestartType RestartRequired;
223 DismCustomProperty *CustomProperty;
224 UINT CustomPropertyCount;
225} DismFeatureInfo;
226
227typedef struct _DismCapabilityInfo
228{
229 PCWSTR Name;
230 DismPackageFeatureState State;
231 PCWSTR DisplayName;
232 PCWSTR Description;
233 DWORD DownloadSize;
234 DWORD InstallSize;
235} DismCapabilityInfo;
236
237typedef struct _DismString
238{
239 PCWSTR Value;
240} DismString;
241
242typedef DismString DismLanguage;
243
244typedef struct _DismWimCustomizedInfo
245{
246 UINT Size;
247 UINT DirectoryCount;
248 UINT FileCount;
249 SYSTEMTIME CreatedTime;
250 SYSTEMTIME ModifiedTime;
251} DismWimCustomizedInfo;
252
253typedef struct _DismImageInfo
254{
255 DismImageType ImageType;
256 UINT ImageIndex;
257 PCWSTR ImageName;
258 PCWSTR ImageDescription;
259 UINT64 ImageSize;
260 UINT Architecture;
261 PCWSTR ProductName;
262 PCWSTR EditionId;
263 PCWSTR InstallationType;
264 PCWSTR Hal;
265 PCWSTR ProductType;
266 PCWSTR ProductSuite;
267 UINT MajorVersion;
268 UINT MinorVersion;
269 UINT Build;
270 UINT SpBuild;
271 UINT SpLevel;
272 DismImageBootable Bootable;
273 PCWSTR SystemRoot;
274 DismLanguage *Language;
275 UINT LanguageCount;
276 UINT DefaultLanguageIndex;
277 VOID *CustomizedInfo;
278} DismImageInfo;
279
280typedef struct _DismMountedImageInfo
281{
282 PCWSTR MountPath;
283 PCWSTR ImageFilePath;
284 UINT ImageIndex;
285 DismMountMode MountMode;
286 DismMountStatus MountStatus;
287} DismMountedImageInfo;
288
289typedef struct _DismDriverPackage
290{
291 PCWSTR PublishedName;
292 PCWSTR OriginalFileName;
293 WINBOOL InBox;
294 PCWSTR CatalogFile;
295 PCWSTR ClassName;
296 PCWSTR ClassGuid;
297 PCWSTR ClassDescription;
298 WINBOOL BootCritical;
299 DismDriverSignature DriverSignature;
300 PCWSTR ProviderName;
301 SYSTEMTIME Date;
302 UINT MajorVersion;
303 UINT MinorVersion;
304 UINT Build;
305 UINT Revision;
306} DismDriverPackage;
307
308typedef struct _DismDriver
309{
310 PCWSTR ManufacturerName;
311 PCWSTR HardwareDescription;
312 PCWSTR HardwareId;
313 UINT Architecture;
314 PCWSTR ServiceName;
315 PCWSTR CompatibleIds;
316 PCWSTR ExcludeIds;
317} DismDriver;
318
319#pragma pack(pop)
320
321/* https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism/dism-api-functions */
322
323HRESULT WINAPI DismInitialize (DismLogLevel LogLevel, PCWSTR LogFilePath, PCWSTR ScratchDirectory);
324HRESULT WINAPI DismShutdown (void);
325HRESULT WINAPI DismMountImage (PCWSTR ImageFilePath, PCWSTR MountPath, UINT ImageIndex, PCWSTR ImageName, DismImageIdentifier ImageIdentifier, DWORD Flags, HANDLE CancelEvent, DISM_PROGRESS_CALLBACK Progress, PVOID UserData);
326HRESULT WINAPI DismUnmountImage (PCWSTR MountPath, DWORD Flags, HANDLE CancelEvent, DISM_PROGRESS_CALLBACK Progress, PVOID UserData);
327HRESULT WINAPI DismOpenSession (PCWSTR ImagePath, PCWSTR WindowsDirectory, PCWSTR SystemDrive, DismSession *Session);
328HRESULT WINAPI DismCloseSession (DismSession Session);
329HRESULT WINAPI DismGetLastErrorMessage (DismString **ErrorMessage);
330HRESULT WINAPI DismRemountImage (PCWSTR MountPath);
331HRESULT WINAPI DismCommitImage (DismSession Session, DWORD Flags, HANDLE CancelEvent, DISM_PROGRESS_CALLBACK Progress, PVOID UserData);
332HRESULT WINAPI DismGetImageInfo (PCWSTR ImageFilePath, DismImageInfo **ImageInfo, UINT *Count);
333HRESULT WINAPI DismGetMountedImageInfo (DismMountedImageInfo **MountedImageInfo, UINT *Count);
334HRESULT WINAPI DismCleanupMountpoints (void);
335HRESULT WINAPI DismCheckImageHealth (DismSession Session, WINBOOL ScanImage, HANDLE CancelEvent, DISM_PROGRESS_CALLBACK Progress, PVOID UserData, DismImageHealthState *ImageHealth);
336HRESULT WINAPI DismRestoreImageHealth (DismSession Session, PCWSTR *SourcePaths, UINT SourcePathCount, WINBOOL LimitAccess, HANDLE CancelEvent, DISM_PROGRESS_CALLBACK Progress, PVOID UserData);
337HRESULT WINAPI DismDelete (VOID *DismStructure);
338HRESULT WINAPI DismAddPackage (DismSession Session, PCWSTR PackagePath, WINBOOL IgnoreCheck, WINBOOL PreventPending, HANDLE CancelEvent, DISM_PROGRESS_CALLBACK Progress, PVOID UserData);
339HRESULT WINAPI DismRemovePackage (DismSession Session, PCWSTR Identifier, DismPackageIdentifier PackageIdentifier, HANDLE CancelEvent, DISM_PROGRESS_CALLBACK Progress, PVOID UserData);
340HRESULT WINAPI DismEnableFeature (DismSession Session, PCWSTR FeatureName, PCWSTR Identifier, DismPackageIdentifier PackageIdentifier, WINBOOL LimitAccess, PCWSTR *SourcePaths, UINT SourcePathCount, WINBOOL EnableAll, HANDLE CancelEvent, DISM_PROGRESS_CALLBACK Progress, PVOID UserData);
341HRESULT WINAPI DismDisableFeature (DismSession Session, PCWSTR FeatureName, PCWSTR PackageName, WINBOOL RemovePayload, HANDLE CancelEvent, DISM_PROGRESS_CALLBACK Progress, PVOID UserData);
342HRESULT WINAPI DismGetPackages (DismSession Session, DismPackage **Package, UINT *Count);
343HRESULT WINAPI DismGetPackageInfo (DismSession Session, PCWSTR Identifier, DismPackageIdentifier PackageIdentifier, DismPackageInfo **PackageInfo);
344HRESULT WINAPI DismGetPackageInfoEx (DismSession Session, PCWSTR Identifier, DismPackageIdentifier PackageIdentifier, DismPackageInfoEx **PackageInfoEx);
345HRESULT WINAPI DismGetFeatures (DismSession Session, PCWSTR Identifier, DismPackageIdentifier PackageIdentifier, DismFeature **Feature, UINT *Count);
346HRESULT WINAPI DismGetFeatureInfo (DismSession Session, PCWSTR FeatureName, PCWSTR Identifier, DismPackageIdentifier PackageIdentifier, DismFeatureInfo **FeatureInfo);
347HRESULT WINAPI DismGetFeatureParent (DismSession Session, PCWSTR FeatureName, PCWSTR Identifier, DismPackageIdentifier PackageIdentifier, DismFeature **Feature, UINT *Count);
348HRESULT WINAPI DismApplyUnattend (DismSession Session, PCWSTR UnattendFile, WINBOOL SingleSession);
349HRESULT WINAPI DismAddDriver (DismSession Session, PCWSTR DriverPath, WINBOOL ForceUnsigned);
350HRESULT WINAPI DismRemoveDriver (DismSession Session, PCWSTR DriverPath);
351HRESULT WINAPI DismGetDrivers (DismSession Session, WINBOOL AllDrivers, DismDriverPackage **DriverPackage, UINT *Count);
352HRESULT WINAPI DismGetDriverInfo (DismSession Session, PCWSTR DriverPath, DismDriver **Driver, UINT *Count, DismDriverPackage **DriverPackage);
353HRESULT WINAPI DismGetCapabilities (DismSession Session, DismCapability **Capability, UINT *Count);
354HRESULT WINAPI DismGetCapabilityInfo (DismSession Session, PCWSTR Name, DismCapabilityInfo **Info);
355HRESULT WINAPI DismAddCapability (DismSession Session, PCWSTR Name, WINBOOL LimitAccess, PCWSTR *SourcePaths, UINT SourcePathCount, HANDLE CancelEvent, DISM_PROGRESS_CALLBACK Progress, PVOID UserData);
356HRESULT WINAPI DismRemoveCapability (DismSession Session, PCWSTR Name, HANDLE CancelEvent, DISM_PROGRESS_CALLBACK Progress, PVOID UserData);
357
358#define DISMAPI_S_RELOAD_IMAGE_SESSION_REQUIRED 0x00000001
359#define DISMAPI_E_DISMAPI_NOT_INITIALIZED 0xc0040001
360#define DISMAPI_E_SHUTDOWN_IN_PROGRESS 0xc0040002
361#define DISMAPI_E_OPEN_SESSION_HANDLES 0xc0040003
362#define DISMAPI_E_INVALID_DISM_SESSION 0xc0040004
363#define DISMAPI_E_INVALID_IMAGE_INDEX 0xc0040005
364#define DISMAPI_E_INVALID_IMAGE_NAME 0xc0040006
365#define DISMAPI_E_UNABLE_TO_UNMOUNT_IMAGE_PATH 0xc0040007
366#define DISMAPI_E_LOGGING_DISABLED 0xc0040009
367#define DISMAPI_E_OPEN_HANDLES_UNABLE_TO_UNMOUNT_IMAGE_PATH 0xc004000a
368#define DISMAPI_E_OPEN_HANDLES_UNABLE_TO_MOUNT_IMAGE_PATH 0xc004000b
369#define DISMAPI_E_OPEN_HANDLES_UNABLE_TO_REMOUNT_IMAGE_PATH 0xc004000c
370#define DISMAPI_E_PARENT_FEATURE_DISABLED 0xc004000d
371#define DISMAPI_E_MUST_SPECIFY_ONLINE_IMAGE 0xc004000e
372#define DISMAPI_E_INVALID_PRODUCT_KEY 0xc004000f
373#define DISMAPI_E_NEEDS_REMOUNT 0xc1510114
374#define DISMAPI_E_UNKNOWN_FEATURE 0x800f080c
375#define DISMAPI_E_BUSY 0x800f0902
376
377#ifdef __cplusplus
378}
379#endif
380
381#endif /* WINAPI_PARTITION_DESKTOP */
382
383#endif /* _DISMAPI_H_ */
Note: See TracBrowser for help on using the repository browser.