From 26f425e49efd216bf002f12bbca11ca7e0a56651 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <[email protected]>
Date: Wed, 9 Dec 2020 15:45:05 +0530
Subject: [PATCH] headers: Add dismapi.h file.

Signed-off-by: Biswapriyo Nath <[email protected]>
---
 mingw-w64-headers/include/dismapi.h | 592 ++++++++++++++++++++++++++++
 1 file changed, 592 insertions(+)
 create mode 100644 mingw-w64-headers/include/dismapi.h

diff --git a/mingw-w64-headers/include/dismapi.h 
b/mingw-w64-headers/include/dismapi.h
new file mode 100644
index 0000000..cc8571d
--- /dev/null
+++ b/mingw-w64-headers/include/dismapi.h
@@ -0,0 +1,592 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _DISMAPI_H_
+#define _DISMAPI_H_
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+typedef UINT DismSession;
+
+typedef void(CALLBACK *DISM_PROGRESS_CALLBACK)(UINT Current, UINT Total, PVOID 
UserData);
+
+#define DISM_ONLINE_IMAGE L"DISM_{53BFAE52-B167-4E2F-A258-0A37B57FF845}"
+
+#define DISM_SESSION_DEFAULT 0
+
+#define DISM_MOUNT_READWRITE 0x00000000
+#define DISM_MOUNT_READONLY 0x00000001
+#define DISM_MOUNT_OPTIMIZE 0x00000002
+#define DISM_MOUNT_CHECK_INTEGRITY 0x00000004
+
+#define DISM_COMMIT_IMAGE 0x00000000
+#define DISM_DISCARD_IMAGE 0x00000001
+
+#define DISM_COMMIT_GENERATE_INTEGRITY 0x00010000
+#define DISM_COMMIT_APPEND 0x00020000
+#define DISM_COMMIT_MASK 0xffff0000
+
+/* 
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism/dism-api-enumerations
 */
+
+typedef enum _DismLogLevel
+{
+    DismLogErrors = 0,
+    DismLogErrorsWarnings,
+    DismLogErrorsWarningsInfo
+} DismLogLevel;
+
+typedef enum _DismImageIdentifier
+{
+    DismImageIndex = 0,
+    DismImageName
+} DismImageIdentifier;
+
+typedef enum _DismMountMode
+{
+    DismReadWrite = 0,
+    DismReadOnly
+} DismMountMode;
+
+typedef enum _DismImageType
+{
+    DismImageTypeUnsupported = -1,
+    DismImageTypeWim = 0,
+    DismImageTypeVhd = 1
+} DismImageType;
+
+typedef enum _DismImageBootable
+{
+    DismImageBootableYes = 0,
+    DismImageBootableNo,
+    DismImageBootableUnknown
+} DismImageBootable;
+
+typedef enum _DismMountStatus
+{
+    DismMountStatusOk = 0,
+    DismMountStatusNeedsRemount,
+    DismMountStatusInvalid
+} DismMountStatus;
+
+typedef enum _DismImageHealthState
+{
+    DismImageHealthy = 0,
+    DismImageRepairable,
+    DismImageNonRepairable
+} DismImageHealthState;
+
+typedef enum _DismPackageIdentifier
+{
+    DismPackageNone = 0,
+    DismPackageName,
+    DismPackagePath
+} DismPackageIdentifier;
+
+typedef enum _DismPackageFeatureState
+{
+    DismStateNotPresent = 0,
+    DismStateUninstallPending,
+    DismStateStaged,
+    DismStateResolved,
+    DismStateRemoved = DismStateResolved,
+    DismStateInstalled,
+    DismStateInstallPending,
+    DismStateSuperseded,
+    DismStatePartiallyInstalled
+} DismPackageFeatureState;
+
+typedef enum _DismReleaseType
+{
+    DismReleaseTypeCriticalUpdate = 0,
+    DismReleaseTypeDriver,
+    DismReleaseTypeFeaturePack,
+    DismReleaseTypeHotfix,
+    DismReleaseTypeSecurityUpdate,
+    DismReleaseTypeSoftwareUpdate,
+    DismReleaseTypeUpdate,
+    DismReleaseTypeUpdateRollup,
+    DismReleaseTypeLanguagePack,
+    DismReleaseTypeFoundation,
+    DismReleaseTypeServicePack,
+    DismReleaseTypeProduct,
+    DismReleaseTypeLocalPack,
+    DismReleaseTypeOther,
+    DismReleaseTypeOnDemandPack
+} DismReleaseType;
+
+typedef enum _DismRestartType
+{
+    DismRestartNo = 0,
+    DismRestartPossible,
+    DismRestartRequired
+} DismRestartType;
+
+typedef enum _DismDriverSignature
+{
+    DismDriverSignatureUnknown = 0,
+    DismDriverSignatureUnsigned = 1,
+    DismDriverSignatureSigned = 2
+} DismDriverSignature;
+
+typedef enum _DismFullyOfflineInstallableType
+{
+    DismFullyOfflineInstallable = 0,
+    DismFullyOfflineNotInstallable,
+    DismFullyOfflineInstallableUndetermined
+} DismFullyOfflineInstallableType;
+
+/* 
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism/dism-api-structures
 */
+
+#pragma pack(push, 1)
+
+typedef struct _DismPackage
+{
+    PCWSTR PackageName;
+    DismPackageFeatureState PackageState;
+    DismReleaseType ReleaseType;
+    SYSTEMTIME InstallTime;
+} DismPackage;
+
+typedef struct _DismCustomProperty
+{
+    PCWSTR Name;
+    PCWSTR Value;
+    PCWSTR Path;
+} DismCustomProperty;
+
+typedef struct _DismFeature
+{
+    PCWSTR FeatureName;
+    DismPackageFeatureState State;
+} DismFeature;
+
+typedef struct _DismCapability
+{
+    PCWSTR Name;
+    DismPackageFeatureState State;
+} DismCapability;
+
+typedef struct _DismPackageInfo
+{
+    PCWSTR PackageName;
+    DismPackageFeatureState PackageState;
+    DismReleaseType ReleaseType;
+    SYSTEMTIME InstallTime;
+    WINBOOL Applicable;
+    PCWSTR Copyright;
+    PCWSTR Company;
+    SYSTEMTIME CreationTime;
+    PCWSTR DisplayName;
+    PCWSTR Description;
+    PCWSTR InstallClient;
+    PCWSTR InstallPackageName;
+    SYSTEMTIME LastUpdateTime;
+    PCWSTR ProductName;
+    PCWSTR ProductVersion;
+    DismRestartType RestartRequired;
+    DismFullyOfflineInstallableType FullyOffline;
+    PCWSTR SupportInformation;
+    DismCustomProperty *CustomProperty;
+    UINT CustomPropertyCount;
+    DismFeature *Feature;
+    UINT FeatureCount;
+} DismPackageInfo;
+
+#ifdef __cplusplus
+typedef struct _DismPackageInfoEx : public _DismPackageInfo
+{
+#else
+typedef struct _DismPackageInfoEx
+{
+    DismPackageInfo;
+#endif
+    PCWSTR CapabilityId;
+} DismPackageInfoEx;
+
+typedef struct _DismFeatureInfo
+{
+    PCWSTR FeatureName;
+    DismPackageFeatureState FeatureState;
+    PCWSTR DisplayName;
+    PCWSTR Description;
+    DismRestartType RestartRequired;
+    DismCustomProperty *CustomProperty;
+    UINT CustomPropertyCount;
+} DismFeatureInfo;
+
+typedef struct _DismCapabilityInfo
+{
+    PCWSTR Name;
+    DismPackageFeatureState State;
+    PCWSTR DisplayName;
+    PCWSTR Description;
+    DWORD DownloadSize;
+    DWORD InstallSize;
+} DismCapabilityInfo;
+
+typedef struct _DismString
+{
+    PCWSTR Value;
+} DismString;
+
+typedef DismString DismLanguage;
+
+typedef struct _DismWimCustomizedInfo
+{
+    UINT Size;
+    UINT DirectoryCount;
+    UINT FileCount;
+    SYSTEMTIME CreatedTime;
+    SYSTEMTIME ModifiedTime;
+} DismWimCustomizedInfo;
+
+typedef struct _DismImageInfo
+{
+    DismImageType ImageType;
+    UINT ImageIndex;
+    PCWSTR ImageName;
+    PCWSTR ImageDescription;
+    UINT64 ImageSize;
+    UINT Architecture;
+    PCWSTR ProductName;
+    PCWSTR EditionId;
+    PCWSTR InstallationType;
+    PCWSTR Hal;
+    PCWSTR ProductType;
+    PCWSTR ProductSuite;
+    UINT MajorVersion;
+    UINT MinorVersion;
+    UINT Build;
+    UINT SpBuild;
+    UINT SpLevel;
+    DismImageBootable Bootable;
+    PCWSTR SystemRoot;
+    DismLanguage *Language;
+    UINT LanguageCount;
+    UINT DefaultLanguageIndex;
+    VOID *CustomizedInfo;
+} DismImageInfo;
+
+typedef struct _DismMountedImageInfo
+{
+    PCWSTR MountPath;
+    PCWSTR ImageFilePath;
+    UINT ImageIndex;
+    DismMountMode MountMode;
+    DismMountStatus MountStatus;
+} DismMountedImageInfo;
+
+typedef struct _DismDriverPackage
+{
+    PCWSTR PublishedName;
+    PCWSTR OriginalFileName;
+    WINBOOL InBox;
+    PCWSTR CatalogFile;
+    PCWSTR ClassName;
+    PCWSTR ClassGuid;
+    PCWSTR ClassDescription;
+    WINBOOL BootCritical;
+    DismDriverSignature DriverSignature;
+    PCWSTR ProviderName;
+    SYSTEMTIME Date;
+    UINT MajorVersion;
+    UINT MinorVersion;
+    UINT Build;
+    UINT Revision;
+} DismDriverPackage;
+
+typedef struct _DismDriver
+{
+    PCWSTR ManufacturerName;
+    PCWSTR HardwareDescription;
+    PCWSTR HardwareId;
+    UINT Architecture;
+    PCWSTR ServiceName;
+    PCWSTR CompatibleIds;
+    PCWSTR ExcludeIds;
+} DismDriver;
+
+#pragma pack(pop)
+
+/* 
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism/dism-api-functions
 */
+
+HRESULT WINAPI
+DismInitialize(
+    DismLogLevel LogLevel,
+    PCWSTR LogFilePath,
+    PCWSTR ScratchDirectory);
+
+HRESULT WINAPI
+DismShutdown(void);
+
+HRESULT WINAPI
+DismMountImage(
+    PCWSTR ImageFilePath,
+    PCWSTR MountPath,
+    UINT ImageIndex,
+    PCWSTR ImageName,
+    DismImageIdentifier ImageIdentifier,
+    DWORD Flags,
+    HANDLE CancelEvent,
+    DISM_PROGRESS_CALLBACK Progress,
+    PVOID UserData);
+
+HRESULT WINAPI
+DismUnmountImage(
+    PCWSTR MountPath,
+    DWORD Flags,
+    HANDLE CancelEvent,
+    DISM_PROGRESS_CALLBACK Progress,
+    PVOID UserData);
+
+HRESULT WINAPI
+DismOpenSession(
+    PCWSTR ImagePath,
+    PCWSTR WindowsDirectory,
+    PCWSTR SystemDrive,
+    DismSession *Session);
+
+HRESULT WINAPI
+DismCloseSession(
+    DismSession Session);
+
+HRESULT WINAPI
+DismGetLastErrorMessage(
+    DismString **ErrorMessage);
+
+HRESULT WINAPI
+DismRemountImage(
+    PCWSTR MountPath);
+
+HRESULT WINAPI
+DismCommitImage(
+    DismSession Session,
+    DWORD Flags,
+    HANDLE CancelEvent,
+    DISM_PROGRESS_CALLBACK Progress,
+    PVOID UserData);
+
+HRESULT WINAPI
+DismGetImageInfo(
+    PCWSTR ImageFilePath,
+    DismImageInfo **ImageInfo,
+    UINT *Count);
+
+HRESULT WINAPI
+DismGetMountedImageInfo(
+    DismMountedImageInfo **MountedImageInfo,
+    UINT *Count);
+
+HRESULT WINAPI
+DismCleanupMountpoints(void);
+
+HRESULT WINAPI
+DismCheckImageHealth(
+    DismSession Session,
+    WINBOOL ScanImage,
+    HANDLE CancelEvent,
+    DISM_PROGRESS_CALLBACK Progress,
+    PVOID UserData,
+    DismImageHealthState *ImageHealth);
+
+HRESULT WINAPI
+DismRestoreImageHealth(
+    DismSession Session,
+    PCWSTR *SourcePaths,
+    UINT SourcePathCount,
+    WINBOOL LimitAccess,
+    HANDLE CancelEvent,
+    DISM_PROGRESS_CALLBACK Progress,
+    PVOID UserData);
+
+HRESULT WINAPI
+DismDelete(
+    VOID *DismStructure);
+
+HRESULT WINAPI
+DismAddPackage(
+    DismSession Session,
+    PCWSTR PackagePath,
+    WINBOOL IgnoreCheck,
+    WINBOOL PreventPending,
+    HANDLE CancelEvent,
+    DISM_PROGRESS_CALLBACK Progress,
+    PVOID UserData);
+
+HRESULT WINAPI
+DismRemovePackage(
+    DismSession Session,
+    PCWSTR Identifier,
+    DismPackageIdentifier PackageIdentifier,
+    HANDLE CancelEvent,
+    DISM_PROGRESS_CALLBACK Progress,
+    PVOID UserData);
+
+HRESULT 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);
+
+HRESULT WINAPI
+DismDisableFeature(
+    DismSession Session,
+    PCWSTR FeatureName,
+    PCWSTR PackageName,
+    WINBOOL RemovePayload,
+    HANDLE CancelEvent,
+    DISM_PROGRESS_CALLBACK Progress,
+    PVOID UserData);
+
+HRESULT WINAPI
+DismGetPackages(
+    DismSession Session,
+    DismPackage **Package,
+    UINT *Count);
+
+HRESULT WINAPI
+DismGetPackageInfo(
+    DismSession Session,
+    PCWSTR Identifier,
+    DismPackageIdentifier PackageIdentifier,
+    DismPackageInfo **PackageInfo);
+
+HRESULT WINAPI
+DismGetPackageInfoEx(
+    DismSession Session,
+    PCWSTR Identifier,
+    DismPackageIdentifier PackageIdentifier,
+    DismPackageInfoEx **PackageInfoEx);
+
+HRESULT WINAPI
+DismGetFeatures(
+    DismSession Session,
+    PCWSTR Identifier,
+    DismPackageIdentifier PackageIdentifier,
+    DismFeature **Feature,
+    UINT *Count);
+
+HRESULT WINAPI
+DismGetFeatureInfo(
+    DismSession Session,
+    PCWSTR FeatureName,
+    PCWSTR Identifier,
+    DismPackageIdentifier PackageIdentifier,
+    DismFeatureInfo **FeatureInfo);
+
+HRESULT WINAPI
+DismGetFeatureParent(
+    DismSession Session,
+    PCWSTR FeatureName,
+    PCWSTR Identifier,
+    DismPackageIdentifier PackageIdentifier,
+    DismFeature **Feature,
+    UINT *Count);
+
+HRESULT WINAPI
+DismApplyUnattend(
+    DismSession Session,
+    PCWSTR UnattendFile,
+    WINBOOL SingleSession);
+
+HRESULT WINAPI
+DismAddDriver(
+    DismSession Session,
+    PCWSTR DriverPath,
+    WINBOOL ForceUnsigned);
+
+HRESULT WINAPI
+DismRemoveDriver(
+    DismSession Session,
+    PCWSTR DriverPath);
+
+HRESULT WINAPI
+DismGetDrivers(
+    DismSession Session,
+    WINBOOL AllDrivers,
+    DismDriverPackage **DriverPackage,
+    UINT *Count);
+
+HRESULT WINAPI
+DismGetDriverInfo(
+    DismSession Session,
+    PCWSTR DriverPath,
+    DismDriver **Driver,
+    UINT *Count,
+    DismDriverPackage **DriverPackage);
+
+HRESULT WINAPI
+DismGetCapabilities(
+    DismSession Session,
+    DismCapability **Capability,
+    UINT *Count);
+
+HRESULT WINAPI
+DismGetCapabilityInfo(
+    DismSession Session,
+    PCWSTR Name,
+    DismCapabilityInfo **Info);
+
+HRESULT WINAPI
+DismAddCapability(
+    DismSession Session,
+    PCWSTR Name,
+    WINBOOL LimitAccess,
+    PCWSTR *SourcePaths,
+    UINT SourcePathCount,
+    HANDLE CancelEvent,
+    DISM_PROGRESS_CALLBACK Progress,
+    PVOID UserData);
+
+HRESULT WINAPI
+DismRemoveCapability(
+    DismSession Session,
+    PCWSTR Name,
+    HANDLE CancelEvent,
+    DISM_PROGRESS_CALLBACK Progress,
+    PVOID UserData);
+
+#define DISMAPI_S_RELOAD_IMAGE_SESSION_REQUIRED 0x00000001
+#define DISMAPI_E_DISMAPI_NOT_INITIALIZED 0xc0040001
+#define DISMAPI_E_SHUTDOWN_IN_PROGRESS 0xc0040002
+#define DISMAPI_E_OPEN_SESSION_HANDLES 0xc0040003
+#define DISMAPI_E_INVALID_DISM_SESSION 0xc0040004
+#define DISMAPI_E_INVALID_IMAGE_INDEX 0xc0040005
+#define DISMAPI_E_INVALID_IMAGE_NAME 0xc0040006
+#define DISMAPI_E_UNABLE_TO_UNMOUNT_IMAGE_PATH 0xc0040007
+#define DISMAPI_E_LOGGING_DISABLED 0xc0040009
+#define DISMAPI_E_OPEN_HANDLES_UNABLE_TO_UNMOUNT_IMAGE_PATH 0xc004000a
+#define DISMAPI_E_OPEN_HANDLES_UNABLE_TO_MOUNT_IMAGE_PATH 0xc004000b
+#define DISMAPI_E_OPEN_HANDLES_UNABLE_TO_REMOUNT_IMAGE_PATH 0xc004000c
+#define DISMAPI_E_PARENT_FEATURE_DISABLED 0xc004000d
+#define DISMAPI_E_MUST_SPECIFY_ONLINE_IMAGE 0xc004000e
+#define DISMAPI_E_INVALID_PRODUCT_KEY 0xc004000f
+#define DISMAPI_E_NEEDS_REMOUNT 0xc1510114
+#define DISMAPI_E_UNKNOWN_FEATURE 0x800f080c
+#define DISMAPI_E_BUSY 0x800f0902
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WINAPI_PARTITION_DESKTOP */
+
+#endif /* _DISMAPI_H_ */
-- 
2.29.2

_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to