| /** | |
| * 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 _APPMODEL_H_ | |
| #define _APPMODEL_H_ | |
| #include <minappmodel.h> | |
| #if defined(__cplusplus) | |
| extern "C" { | |
| #endif | |
| #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) | |
| #include <pshpack4.h> | |
| typedef struct PACKAGE_VERSION { | |
| __C89_NAMELESS union { | |
| UINT64 Version; | |
| __C89_NAMELESS struct { | |
| USHORT Revision; | |
| USHORT Build; | |
| USHORT Minor; | |
| USHORT Major; | |
| }; | |
| }; | |
| } PACKAGE_VERSION; | |
| typedef struct PACKAGE_ID { | |
| UINT32 reserved; | |
| UINT32 processorArchitecture; | |
| PACKAGE_VERSION version; | |
| PWSTR name; | |
| PWSTR publisher; | |
| PWSTR resourceId; | |
| PWSTR publisherId; | |
| } PACKAGE_ID; | |
| #include <poppack.h> | |
| WINBASEAPI LONG WINAPI GetCurrentPackageId(UINT32 *bufferLength, BYTE *buffer); | |
| WINBASEAPI LONG WINAPI GetCurrentPackageFullName(UINT32 *packageFullNameLength, PWSTR packageFullName); | |
| WINBASEAPI LONG WINAPI GetCurrentPackageFamilyName(UINT32 *packageFamilyNameLength, PWSTR packageFamilyName); | |
| WINBASEAPI LONG WINAPI GetCurrentPackagePath(UINT32 *pathLength, PWSTR path); | |
| WINBASEAPI LONG WINAPI GetPackageId(HANDLE hProcess, UINT32 *bufferLength, BYTE *buffer); | |
| WINBASEAPI LONG WINAPI GetPackageFullName(HANDLE hProcess, UINT32 *packageFullNameLength, PWSTR packageFullName); | |
| WINBASEAPI LONG WINAPI GetPackageFullNameFromToken(HANDLE token, UINT32 *packageFullNameLength, PWSTR packageFullName); | |
| WINBASEAPI LONG WINAPI GetPackageFamilyName(HANDLE hProcess, UINT32 *packageFamilyNameLength, PWSTR packageFamilyName); | |
| WINBASEAPI LONG WINAPI GetPackageFamilyNameFromToken(HANDLE token, UINT32 *packageFamilyNameLength, PWSTR packageFamilyName); | |
| WINBASEAPI LONG WINAPI GetPackagePath(const PACKAGE_ID *packageId, const UINT32 reserved, UINT32 *pathLength, PWSTR path); | |
| WINBASEAPI LONG WINAPI GetPackagePathByFullName(PCWSTR packageFullName, UINT32 *pathLength, PWSTR path); | |
| WINBASEAPI LONG WINAPI GetStagedPackagePathByFullName(PCWSTR packageFullName, UINT32 *pathLength, PWSTR path); | |
| #if NTDDI_VERSION >= NTDDI_WIN10_19H1 | |
| typedef enum PackagePathType { | |
| PackagePathType_Install = 0, | |
| PackagePathType_Mutable = 1, | |
| PackagePathType_Effective = 2 | |
| #if NTDDI_VERSION >= NTDDI_WIN10_VB | |
| ,PackagePathType_MachineExternal = 3 | |
| ,PackagePathType_UserExternal = 4 | |
| ,PackagePathType_EffectiveExternal = 5 | |
| #endif | |
| } PackagePathType; | |
| WINBASEAPI LONG WINAPI GetPackagePathByFullName2(PCWSTR packageFullName, PackagePathType packagePathType, UINT32 *pathLength, PWSTR path); | |
| WINBASEAPI LONG WINAPI GetStagedPackagePathByFullName2(PCWSTR packageFullName, PackagePathType packagePathType, UINT32 *pathLength, PWSTR path); | |
| WINBASEAPI LONG WINAPI GetCurrentPackageInfo2(const UINT32 flags, PackagePathType packagePathType, UINT32 *bufferLength, BYTE *buffer, UINT32 *count); | |
| WINBASEAPI LONG WINAPI GetCurrentPackagePath2(PackagePathType packagePathType, UINT32 *pathLength, PWSTR path); | |
| #endif /* NTDDI_VERSION >= NTDDI_WIN10_19H1 */ | |
| WINBASEAPI LONG WINAPI GetCurrentApplicationUserModelId(UINT32 *applicationUserModelIdLength, PWSTR applicationUserModelId); | |
| WINBASEAPI LONG WINAPI GetApplicationUserModelId(HANDLE hProcess, UINT32 *applicationUserModelIdLength, PWSTR applicationUserModelId); | |
| WINBASEAPI LONG WINAPI GetApplicationUserModelIdFromToken(HANDLE token, UINT32 *applicationUserModelIdLength, PWSTR applicationUserModelId); | |
| WINBASEAPI LONG WINAPI VerifyPackageFullName(PCWSTR packageFullName); | |
| WINBASEAPI LONG WINAPI VerifyPackageFamilyName(PCWSTR packageFamilyName); | |
| WINBASEAPI LONG WINAPI VerifyPackageId(const PACKAGE_ID *packageId); | |
| WINBASEAPI LONG WINAPI VerifyApplicationUserModelId(PCWSTR applicationUserModelId); | |
| WINBASEAPI LONG WINAPI VerifyPackageRelativeApplicationId(PCWSTR packageRelativeApplicationId); | |
| WINBASEAPI LONG WINAPI PackageIdFromFullName(PCWSTR packageFullName, const UINT32 flags, UINT32 *bufferLength, BYTE *buffer); | |
| WINBASEAPI LONG WINAPI PackageFullNameFromId(const PACKAGE_ID *packageId, UINT32 *packageFullNameLength, PWSTR packageFullName); | |
| WINBASEAPI LONG WINAPI PackageFamilyNameFromId(const PACKAGE_ID *packageId, UINT32 *packageFamilyNameLength, PWSTR packageFamilyName); | |
| WINBASEAPI LONG WINAPI PackageFamilyNameFromFullName(PCWSTR packageFullName, UINT32 *packageFamilyNameLength, PWSTR packageFamilyName); | |
| WINBASEAPI LONG WINAPI PackageNameAndPublisherIdFromFamilyName(PCWSTR packageFamilyName, UINT32 *packageNameLength, PWSTR packageName, UINT32 *packagePublisherIdLength, PWSTR packagePublisherId); | |
| WINBASEAPI LONG WINAPI FormatApplicationUserModelId(PCWSTR packageFamilyName, PCWSTR packageRelativeApplicationId, UINT32 *applicationUserModelIdLength, PWSTR applicationUserModelId); | |
| WINBASEAPI LONG WINAPI ParseApplicationUserModelId(PCWSTR applicationUserModelId, UINT32 *packageFamilyNameLength, PWSTR packageFamilyName, UINT32 *packageRelativeApplicationIdLength, PWSTR packageRelativeApplicationId); | |
| WINBASEAPI LONG WINAPI GetPackagesByPackageFamily(PCWSTR packageFamilyName, UINT32 *count, PWSTR *packageFullNames, UINT32 *bufferLength, WCHAR *buffer); | |
| WINBASEAPI LONG WINAPI FindPackagesByPackageFamily(PCWSTR packageFamilyName, UINT32 packageFilters, UINT32 *count, PWSTR *packageFullNames, UINT32 *bufferLength, WCHAR *buffer, UINT32 *packageProperties); | |
| typedef enum PackageOrigin { | |
| PackageOrigin_Unknown = 0, | |
| PackageOrigin_Unsigned = 1, | |
| PackageOrigin_Inbox = 2, | |
| PackageOrigin_Store = 3, | |
| PackageOrigin_DeveloperUnsigned = 4, | |
| PackageOrigin_DeveloperSigned = 5, | |
| PackageOrigin_LineOfBusiness = 6 | |
| } PackageOrigin; | |
| WINBASEAPI LONG WINAPI GetStagedPackageOrigin(PCWSTR packageFullName, PackageOrigin *origin); | |
| #define PACKAGE_PROPERTY_FRAMEWORK 0x00000001 | |
| #define PACKAGE_PROPERTY_RESOURCE 0x00000002 | |
| #define PACKAGE_PROPERTY_BUNDLE 0x00000004 | |
| #define PACKAGE_PROPERTY_OPTIONAL 0x00000008 | |
| #define PACKAGE_FILTER_HEAD 0x00000010 | |
| #define PACKAGE_FILTER_DIRECT 0x00000020 | |
| #define PACKAGE_FILTER_RESOURCE 0x00000040 | |
| #define PACKAGE_FILTER_BUNDLE 0x00000080 | |
| #define PACKAGE_INFORMATION_BASIC 0x00000000 | |
| #define PACKAGE_INFORMATION_FULL 0x00000100 | |
| #define PACKAGE_PROPERTY_DEVELOPMENT_MODE 0x00010000 | |
| #define PACKAGE_FILTER_OPTIONAL 0x00020000 | |
| #define PACKAGE_PROPERTY_IS_IN_RELATED_SET 0x00040000 | |
| #define PACKAGE_FILTER_IS_IN_RELATED_SET PACKAGE_PROPERTY_IS_IN_RELATED_SET | |
| #define PACKAGE_PROPERTY_STATIC 0x00080000 | |
| #define PACKAGE_FILTER_STATIC PACKAGE_PROPERTY_STATIC | |
| #define PACKAGE_PROPERTY_DYNAMIC 0x00100000 | |
| #define PACKAGE_FILTER_DYNAMIC PACKAGE_PROPERTY_DYNAMIC | |
| #if NTDDI_VERSION >= NTDDI_WIN10_MN | |
| #define PACKAGE_PROPERTY_HOSTRUNTIME 0x00200000 | |
| #define PACKAGE_FILTER_HOSTRUNTIME PACKAGE_PROPERTY_HOSTRUNTIME | |
| #endif | |
| typedef struct _PACKAGE_INFO_REFERENCE { | |
| void *reserved; | |
| } PACKAGE_INFO_REFERENCE; | |
| #include <pshpack4.h> | |
| typedef struct PACKAGE_INFO { | |
| UINT32 reserved; | |
| UINT32 flags; | |
| PWSTR path; | |
| PWSTR packageFullName; | |
| PWSTR packageFamilyName; | |
| PACKAGE_ID packageId; | |
| } PACKAGE_INFO; | |
| #include <poppack.h> | |
| WINBASEAPI LONG WINAPI GetCurrentPackageInfo(const UINT32 flags, UINT32 *bufferLength, BYTE *buffer, UINT32 *count); | |
| WINBASEAPI LONG WINAPI OpenPackageInfoByFullName(PCWSTR packageFullName, const UINT32 reserved, PACKAGE_INFO_REFERENCE *packageInfoReference); | |
| WINBASEAPI LONG WINAPI OpenPackageInfoByFullNameForUser(PSID userSid, PCWSTR packageFullName, const UINT32 reserved, PACKAGE_INFO_REFERENCE *packageInfoReference); | |
| WINBASEAPI LONG WINAPI ClosePackageInfo(PACKAGE_INFO_REFERENCE packageInfoReference); | |
| WINBASEAPI LONG WINAPI GetPackageInfo(PACKAGE_INFO_REFERENCE packageInfoReference, const UINT32 flags, UINT32 *bufferLength, BYTE *buffer, UINT32 *count); | |
| WINBASEAPI LONG WINAPI GetPackageApplicationIds(PACKAGE_INFO_REFERENCE packageInfoReference, UINT32 *bufferLength, BYTE *buffer, UINT32 *count); | |
| #if NTDDI_VERSION >= NTDDI_WIN10_19H1 | |
| WINBASEAPI LONG WINAPI GetPackageInfo2(PACKAGE_INFO_REFERENCE packageInfoReference, const UINT32 flags, PackagePathType packagePathType, UINT32 *bufferLength, BYTE *buffer, UINT32 *count); | |
| #endif | |
| WINBASEAPI HRESULT WINAPI CheckIsMSIXPackage(PCWSTR packageFullName, WINBOOL *isMSIXPackage); | |
| #if NTDDI_VERSION >= NTDDI_WIN10_CO | |
| typedef enum CreatePackageDependencyOptions { | |
| CreatePackageDependencyOptions_None = 0, | |
| CreatePackageDependencyOptions_DoNotVerifyDependencyResolution = 0x00000001, | |
| CreatePackageDependencyOptions_ScopeIsSystem = 0x00000002 | |
| } CreatePackageDependencyOptions; | |
| DEFINE_ENUM_FLAG_OPERATORS(CreatePackageDependencyOptions) | |
| typedef enum PackageDependencyLifetimeKind { | |
| PackageDependencyLifetimeKind_Process = 0, | |
| PackageDependencyLifetimeKind_FilePath = 1, | |
| PackageDependencyLifetimeKind_RegistryKey = 2 | |
| } PackageDependencyLifetimeKind; | |
| typedef enum AddPackageDependencyOptions { | |
| AddPackageDependencyOptions_None = 0, | |
| AddPackageDependencyOptions_PrependIfRankCollision = 0x00000001 | |
| } AddPackageDependencyOptions; | |
| DEFINE_ENUM_FLAG_OPERATORS(AddPackageDependencyOptions) | |
| #define PACKAGE_DEPENDENCY_RANK_DEFAULT 0 | |
| typedef enum PackageDependencyProcessorArchitectures { | |
| PackageDependencyProcessorArchitectures_None = 0, | |
| PackageDependencyProcessorArchitectures_Neutral = 0x00000001, | |
| PackageDependencyProcessorArchitectures_X86 = 0x00000002, | |
| PackageDependencyProcessorArchitectures_X64 = 0x00000004, | |
| PackageDependencyProcessorArchitectures_Arm = 0x00000008, | |
| PackageDependencyProcessorArchitectures_Arm64 = 0x00000010, | |
| PackageDependencyProcessorArchitectures_X86A64 = 0x00000020 | |
| } PackageDependencyProcessorArchitectures; | |
| DEFINE_ENUM_FLAG_OPERATORS(PackageDependencyProcessorArchitectures) | |
| DECLARE_HANDLE(PACKAGEDEPENDENCY_CONTEXT); | |
| WINBASEAPI HRESULT WINAPI TryCreatePackageDependency(PSID user, PCWSTR packageFamilyName, PACKAGE_VERSION minVersion, PackageDependencyProcessorArchitectures packageDependencyProcessorArchitectures, PackageDependencyLifetimeKind lifetimeKind, PCWSTR lifetimeArtifact, CreatePackageDependencyOptions options, PWSTR *packageDependencyId); | |
| WINBASEAPI HRESULT WINAPI DeletePackageDependency(PCWSTR packageDependencyId); | |
| WINBASEAPI HRESULT WINAPI AddPackageDependency(PCWSTR packageDependencyId, INT32 rank, AddPackageDependencyOptions options, PACKAGEDEPENDENCY_CONTEXT *packageDependencyContext, PWSTR *packageFullName); | |
| WINBASEAPI HRESULT WINAPI RemovePackageDependency(PACKAGEDEPENDENCY_CONTEXT packageDependencyContext); | |
| WINBASEAPI HRESULT WINAPI GetResolvedPackageFullNameForPackageDependency(PCWSTR packageDependencyId, PWSTR *packageFullName); | |
| WINBASEAPI HRESULT WINAPI GetIdForPackageDependencyContext(PACKAGEDEPENDENCY_CONTEXT packageDependencyContext, PWSTR *packageDependencyId); | |
| #endif /* NTDDI_VERSION >= NTDDI_WIN10_CO */ | |
| #if NTDDI_VERSION >= NTDDI_WIN10_NI | |
| WINBASEAPI UINT32 WINAPI GetPackageGraphRevisionId(void); | |
| #endif | |
| typedef enum AppPolicyLifecycleManagement { | |
| AppPolicyLifecycleManagement_Unmanaged = 0, | |
| AppPolicyLifecycleManagement_Managed = 1 | |
| } AppPolicyLifecycleManagement; | |
| WINBASEAPI LONG WINAPI AppPolicyGetLifecycleManagement(HANDLE processToken, AppPolicyLifecycleManagement *policy); | |
| typedef enum AppPolicyWindowingModel { | |
| AppPolicyWindowingModel_None = 0, | |
| AppPolicyWindowingModel_Universal = 1, | |
| AppPolicyWindowingModel_ClassicDesktop = 2, | |
| AppPolicyWindowingModel_ClassicPhone = 3 | |
| } AppPolicyWindowingModel; | |
| WINBASEAPI LONG WINAPI AppPolicyGetWindowingModel(HANDLE processToken, AppPolicyWindowingModel *policy); | |
| typedef enum AppPolicyMediaFoundationCodecLoading { | |
| AppPolicyMediaFoundationCodecLoading_All = 0, | |
| AppPolicyMediaFoundationCodecLoading_InboxOnly = 1 | |
| } AppPolicyMediaFoundationCodecLoading; | |
| WINBASEAPI LONG WINAPI AppPolicyGetMediaFoundationCodecLoading(HANDLE processToken, AppPolicyMediaFoundationCodecLoading *policy); | |
| typedef enum AppPolicyClrCompat { | |
| AppPolicyClrCompat_Other = 0, | |
| AppPolicyClrCompat_ClassicDesktop = 1, | |
| AppPolicyClrCompat_Universal = 2, | |
| AppPolicyClrCompat_PackagedDesktop = 3 | |
| } AppPolicyClrCompat; | |
| WINBASEAPI LONG WINAPI AppPolicyGetClrCompat(HANDLE processToken, AppPolicyClrCompat *policy); | |
| typedef enum AppPolicyThreadInitializationType { | |
| AppPolicyThreadInitializationType_None = 0, | |
| AppPolicyThreadInitializationType_InitializeWinRT = 1 | |
| } AppPolicyThreadInitializationType; | |
| WINBASEAPI LONG WINAPI AppPolicyGetThreadInitializationType(HANDLE processToken, AppPolicyThreadInitializationType *policy); | |
| typedef enum AppPolicyShowDeveloperDiagnostic { | |
| AppPolicyShowDeveloperDiagnostic_None = 0, | |
| AppPolicyShowDeveloperDiagnostic_ShowUI = 1 | |
| } AppPolicyShowDeveloperDiagnostic; | |
| WINBASEAPI LONG WINAPI AppPolicyGetShowDeveloperDiagnostic(HANDLE processToken, AppPolicyShowDeveloperDiagnostic *policy); | |
| typedef enum AppPolicyProcessTerminationMethod { | |
| AppPolicyProcessTerminationMethod_ExitProcess = 0, | |
| AppPolicyProcessTerminationMethod_TerminateProcess = 1 | |
| } AppPolicyProcessTerminationMethod; | |
| WINBASEAPI LONG WINAPI AppPolicyGetProcessTerminationMethod(HANDLE processToken, AppPolicyProcessTerminationMethod *policy); | |
| typedef enum AppPolicyCreateFileAccess { | |
| AppPolicyCreateFileAccess_Full = 0, | |
| AppPolicyCreateFileAccess_Limited = 1 | |
| } AppPolicyCreateFileAccess; | |
| WINBASEAPI LONG WINAPI AppPolicyGetCreateFileAccess(HANDLE processToken, AppPolicyCreateFileAccess *policy); | |
| #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ | |
| #if defined(__cplusplus) | |
| } | |
| #endif | |
| #endif /* _APPMODEL_H_ */ |