mirror of
https://git.code.sf.net/p/mingw-w64/mingw-w64
synced 2024-11-23 09:54:39 +08:00
headers: Add dismapi.h file.
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com> Signed-off-by: Liu Hao <lh_mouse@126.com>
This commit is contained in:
parent
f45f1d3552
commit
829a2e2a00
383
mingw-w64-headers/include/dismapi.h
Normal file
383
mingw-w64-headers/include/dismapi.h
Normal file
@ -0,0 +1,383 @@
|
||||
/**
|
||||
* 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_ */
|
Loading…
Reference in New Issue
Block a user