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
