| /** |
| * 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_ */ |