appmodel.h (13358B) - Raw
1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 7 #ifndef _APPMODEL_H_ 8 #define _APPMODEL_H_ 9 10 #include <minappmodel.h> 11 12 #if defined(__cplusplus) 13 extern "C" { 14 #endif 15 16 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) 17 18 #include <pshpack4.h> 19 20 typedef struct PACKAGE_VERSION { 21 __C89_NAMELESS union { 22 UINT64 Version; 23 __C89_NAMELESS struct { 24 USHORT Revision; 25 USHORT Build; 26 USHORT Minor; 27 USHORT Major; 28 }; 29 }; 30 } PACKAGE_VERSION; 31 32 typedef struct PACKAGE_ID { 33 UINT32 reserved; 34 UINT32 processorArchitecture; 35 PACKAGE_VERSION version; 36 PWSTR name; 37 PWSTR publisher; 38 PWSTR resourceId; 39 PWSTR publisherId; 40 } PACKAGE_ID; 41 42 #include <poppack.h> 43 44 WINBASEAPI LONG WINAPI GetCurrentPackageId(UINT32 *bufferLength, BYTE *buffer); 45 WINBASEAPI LONG WINAPI GetCurrentPackageFullName(UINT32 *packageFullNameLength, PWSTR packageFullName); 46 WINBASEAPI LONG WINAPI GetCurrentPackageFamilyName(UINT32 *packageFamilyNameLength, PWSTR packageFamilyName); 47 WINBASEAPI LONG WINAPI GetCurrentPackagePath(UINT32 *pathLength, PWSTR path); 48 WINBASEAPI LONG WINAPI GetPackageId(HANDLE hProcess, UINT32 *bufferLength, BYTE *buffer); 49 WINBASEAPI LONG WINAPI GetPackageFullName(HANDLE hProcess, UINT32 *packageFullNameLength, PWSTR packageFullName); 50 WINBASEAPI LONG WINAPI GetPackageFullNameFromToken(HANDLE token, UINT32 *packageFullNameLength, PWSTR packageFullName); 51 WINBASEAPI LONG WINAPI GetPackageFamilyName(HANDLE hProcess, UINT32 *packageFamilyNameLength, PWSTR packageFamilyName); 52 WINBASEAPI LONG WINAPI GetPackageFamilyNameFromToken(HANDLE token, UINT32 *packageFamilyNameLength, PWSTR packageFamilyName); 53 WINBASEAPI LONG WINAPI GetPackagePath(const PACKAGE_ID *packageId, const UINT32 reserved, UINT32 *pathLength, PWSTR path); 54 WINBASEAPI LONG WINAPI GetPackagePathByFullName(PCWSTR packageFullName, UINT32 *pathLength, PWSTR path); 55 WINBASEAPI LONG WINAPI GetStagedPackagePathByFullName(PCWSTR packageFullName, UINT32 *pathLength, PWSTR path); 56 57 #if NTDDI_VERSION >= NTDDI_WIN10_19H1 58 typedef enum PackagePathType { 59 PackagePathType_Install = 0, 60 PackagePathType_Mutable = 1, 61 PackagePathType_Effective = 2 62 #if NTDDI_VERSION >= NTDDI_WIN10_VB 63 ,PackagePathType_MachineExternal = 3 64 ,PackagePathType_UserExternal = 4 65 ,PackagePathType_EffectiveExternal = 5 66 #endif 67 } PackagePathType; 68 69 WINBASEAPI LONG WINAPI GetPackagePathByFullName2(PCWSTR packageFullName, PackagePathType packagePathType, UINT32 *pathLength, PWSTR path); 70 WINBASEAPI LONG WINAPI GetStagedPackagePathByFullName2(PCWSTR packageFullName, PackagePathType packagePathType, UINT32 *pathLength, PWSTR path); 71 WINBASEAPI LONG WINAPI GetCurrentPackageInfo2(const UINT32 flags, PackagePathType packagePathType, UINT32 *bufferLength, BYTE *buffer, UINT32 *count); 72 WINBASEAPI LONG WINAPI GetCurrentPackagePath2(PackagePathType packagePathType, UINT32 *pathLength, PWSTR path); 73 74 #endif /* NTDDI_VERSION >= NTDDI_WIN10_19H1 */ 75 76 WINBASEAPI LONG WINAPI GetCurrentApplicationUserModelId(UINT32 *applicationUserModelIdLength, PWSTR applicationUserModelId); 77 WINBASEAPI LONG WINAPI GetApplicationUserModelId(HANDLE hProcess, UINT32 *applicationUserModelIdLength, PWSTR applicationUserModelId); 78 WINBASEAPI LONG WINAPI GetApplicationUserModelIdFromToken(HANDLE token, UINT32 *applicationUserModelIdLength, PWSTR applicationUserModelId); 79 WINBASEAPI LONG WINAPI VerifyPackageFullName(PCWSTR packageFullName); 80 WINBASEAPI LONG WINAPI VerifyPackageFamilyName(PCWSTR packageFamilyName); 81 WINBASEAPI LONG WINAPI VerifyPackageId(const PACKAGE_ID *packageId); 82 WINBASEAPI LONG WINAPI VerifyApplicationUserModelId(PCWSTR applicationUserModelId); 83 WINBASEAPI LONG WINAPI VerifyPackageRelativeApplicationId(PCWSTR packageRelativeApplicationId); 84 WINBASEAPI LONG WINAPI PackageIdFromFullName(PCWSTR packageFullName, const UINT32 flags, UINT32 *bufferLength, BYTE *buffer); 85 WINBASEAPI LONG WINAPI PackageFullNameFromId(const PACKAGE_ID *packageId, UINT32 *packageFullNameLength, PWSTR packageFullName); 86 WINBASEAPI LONG WINAPI PackageFamilyNameFromId(const PACKAGE_ID *packageId, UINT32 *packageFamilyNameLength, PWSTR packageFamilyName); 87 WINBASEAPI LONG WINAPI PackageFamilyNameFromFullName(PCWSTR packageFullName, UINT32 *packageFamilyNameLength, PWSTR packageFamilyName); 88 WINBASEAPI LONG WINAPI PackageNameAndPublisherIdFromFamilyName(PCWSTR packageFamilyName, UINT32 *packageNameLength, PWSTR packageName, UINT32 *packagePublisherIdLength, PWSTR packagePublisherId); 89 WINBASEAPI LONG WINAPI FormatApplicationUserModelId(PCWSTR packageFamilyName, PCWSTR packageRelativeApplicationId, UINT32 *applicationUserModelIdLength, PWSTR applicationUserModelId); 90 WINBASEAPI LONG WINAPI ParseApplicationUserModelId(PCWSTR applicationUserModelId, UINT32 *packageFamilyNameLength, PWSTR packageFamilyName, UINT32 *packageRelativeApplicationIdLength, PWSTR packageRelativeApplicationId); 91 WINBASEAPI LONG WINAPI GetPackagesByPackageFamily(PCWSTR packageFamilyName, UINT32 *count, PWSTR *packageFullNames, UINT32 *bufferLength, WCHAR *buffer); 92 WINBASEAPI LONG WINAPI FindPackagesByPackageFamily(PCWSTR packageFamilyName, UINT32 packageFilters, UINT32 *count, PWSTR *packageFullNames, UINT32 *bufferLength, WCHAR *buffer, UINT32 *packageProperties); 93 94 typedef enum PackageOrigin { 95 PackageOrigin_Unknown = 0, 96 PackageOrigin_Unsigned = 1, 97 PackageOrigin_Inbox = 2, 98 PackageOrigin_Store = 3, 99 PackageOrigin_DeveloperUnsigned = 4, 100 PackageOrigin_DeveloperSigned = 5, 101 PackageOrigin_LineOfBusiness = 6 102 } PackageOrigin; 103 104 WINBASEAPI LONG WINAPI GetStagedPackageOrigin(PCWSTR packageFullName, PackageOrigin *origin); 105 106 #define PACKAGE_PROPERTY_FRAMEWORK 0x00000001 107 #define PACKAGE_PROPERTY_RESOURCE 0x00000002 108 #define PACKAGE_PROPERTY_BUNDLE 0x00000004 109 #define PACKAGE_PROPERTY_OPTIONAL 0x00000008 110 #define PACKAGE_FILTER_HEAD 0x00000010 111 #define PACKAGE_FILTER_DIRECT 0x00000020 112 #define PACKAGE_FILTER_RESOURCE 0x00000040 113 #define PACKAGE_FILTER_BUNDLE 0x00000080 114 #define PACKAGE_INFORMATION_BASIC 0x00000000 115 #define PACKAGE_INFORMATION_FULL 0x00000100 116 #define PACKAGE_PROPERTY_DEVELOPMENT_MODE 0x00010000 117 #define PACKAGE_FILTER_OPTIONAL 0x00020000 118 #define PACKAGE_PROPERTY_IS_IN_RELATED_SET 0x00040000 119 #define PACKAGE_FILTER_IS_IN_RELATED_SET PACKAGE_PROPERTY_IS_IN_RELATED_SET 120 #define PACKAGE_PROPERTY_STATIC 0x00080000 121 #define PACKAGE_FILTER_STATIC PACKAGE_PROPERTY_STATIC 122 #define PACKAGE_PROPERTY_DYNAMIC 0x00100000 123 #define PACKAGE_FILTER_DYNAMIC PACKAGE_PROPERTY_DYNAMIC 124 #if NTDDI_VERSION >= NTDDI_WIN10_MN 125 #define PACKAGE_PROPERTY_HOSTRUNTIME 0x00200000 126 #define PACKAGE_FILTER_HOSTRUNTIME PACKAGE_PROPERTY_HOSTRUNTIME 127 #endif 128 129 typedef struct _PACKAGE_INFO_REFERENCE { 130 void *reserved; 131 } PACKAGE_INFO_REFERENCE; 132 133 #include <pshpack4.h> 134 135 typedef struct PACKAGE_INFO { 136 UINT32 reserved; 137 UINT32 flags; 138 PWSTR path; 139 PWSTR packageFullName; 140 PWSTR packageFamilyName; 141 PACKAGE_ID packageId; 142 } PACKAGE_INFO; 143 144 #include <poppack.h> 145 146 WINBASEAPI LONG WINAPI GetCurrentPackageInfo(const UINT32 flags, UINT32 *bufferLength, BYTE *buffer, UINT32 *count); 147 WINBASEAPI LONG WINAPI OpenPackageInfoByFullName(PCWSTR packageFullName, const UINT32 reserved, PACKAGE_INFO_REFERENCE *packageInfoReference); 148 WINBASEAPI LONG WINAPI OpenPackageInfoByFullNameForUser(PSID userSid, PCWSTR packageFullName, const UINT32 reserved, PACKAGE_INFO_REFERENCE *packageInfoReference); 149 WINBASEAPI LONG WINAPI ClosePackageInfo(PACKAGE_INFO_REFERENCE packageInfoReference); 150 WINBASEAPI LONG WINAPI GetPackageInfo(PACKAGE_INFO_REFERENCE packageInfoReference, const UINT32 flags, UINT32 *bufferLength, BYTE *buffer, UINT32 *count); 151 WINBASEAPI LONG WINAPI GetPackageApplicationIds(PACKAGE_INFO_REFERENCE packageInfoReference, UINT32 *bufferLength, BYTE *buffer, UINT32 *count); 152 153 #if NTDDI_VERSION >= NTDDI_WIN10_19H1 154 WINBASEAPI LONG WINAPI GetPackageInfo2(PACKAGE_INFO_REFERENCE packageInfoReference, const UINT32 flags, PackagePathType packagePathType, UINT32 *bufferLength, BYTE *buffer, UINT32 *count); 155 #endif 156 157 WINBASEAPI HRESULT WINAPI CheckIsMSIXPackage(PCWSTR packageFullName, WINBOOL *isMSIXPackage); 158 159 #if NTDDI_VERSION >= NTDDI_WIN10_CO 160 161 typedef enum CreatePackageDependencyOptions { 162 CreatePackageDependencyOptions_None = 0, 163 CreatePackageDependencyOptions_DoNotVerifyDependencyResolution = 0x00000001, 164 CreatePackageDependencyOptions_ScopeIsSystem = 0x00000002 165 } CreatePackageDependencyOptions; 166 DEFINE_ENUM_FLAG_OPERATORS(CreatePackageDependencyOptions) 167 168 typedef enum PackageDependencyLifetimeKind { 169 PackageDependencyLifetimeKind_Process = 0, 170 PackageDependencyLifetimeKind_FilePath = 1, 171 PackageDependencyLifetimeKind_RegistryKey = 2 172 } PackageDependencyLifetimeKind; 173 174 typedef enum AddPackageDependencyOptions { 175 AddPackageDependencyOptions_None = 0, 176 AddPackageDependencyOptions_PrependIfRankCollision = 0x00000001 177 } AddPackageDependencyOptions; 178 DEFINE_ENUM_FLAG_OPERATORS(AddPackageDependencyOptions) 179 180 #define PACKAGE_DEPENDENCY_RANK_DEFAULT 0 181 182 typedef enum PackageDependencyProcessorArchitectures { 183 PackageDependencyProcessorArchitectures_None = 0, 184 PackageDependencyProcessorArchitectures_Neutral = 0x00000001, 185 PackageDependencyProcessorArchitectures_X86 = 0x00000002, 186 PackageDependencyProcessorArchitectures_X64 = 0x00000004, 187 PackageDependencyProcessorArchitectures_Arm = 0x00000008, 188 PackageDependencyProcessorArchitectures_Arm64 = 0x00000010, 189 PackageDependencyProcessorArchitectures_X86A64 = 0x00000020 190 } PackageDependencyProcessorArchitectures; 191 DEFINE_ENUM_FLAG_OPERATORS(PackageDependencyProcessorArchitectures) 192 193 DECLARE_HANDLE(PACKAGEDEPENDENCY_CONTEXT); 194 195 WINBASEAPI HRESULT WINAPI TryCreatePackageDependency(PSID user, PCWSTR packageFamilyName, PACKAGE_VERSION minVersion, PackageDependencyProcessorArchitectures packageDependencyProcessorArchitectures, PackageDependencyLifetimeKind lifetimeKind, PCWSTR lifetimeArtifact, CreatePackageDependencyOptions options, PWSTR *packageDependencyId); 196 WINBASEAPI HRESULT WINAPI DeletePackageDependency(PCWSTR packageDependencyId); 197 WINBASEAPI HRESULT WINAPI AddPackageDependency(PCWSTR packageDependencyId, INT32 rank, AddPackageDependencyOptions options, PACKAGEDEPENDENCY_CONTEXT *packageDependencyContext, PWSTR *packageFullName); 198 WINBASEAPI HRESULT WINAPI RemovePackageDependency(PACKAGEDEPENDENCY_CONTEXT packageDependencyContext); 199 WINBASEAPI HRESULT WINAPI GetResolvedPackageFullNameForPackageDependency(PCWSTR packageDependencyId, PWSTR *packageFullName); 200 WINBASEAPI HRESULT WINAPI GetIdForPackageDependencyContext(PACKAGEDEPENDENCY_CONTEXT packageDependencyContext, PWSTR *packageDependencyId); 201 202 #endif /* NTDDI_VERSION >= NTDDI_WIN10_CO */ 203 204 #if NTDDI_VERSION >= NTDDI_WIN10_NI 205 WINBASEAPI UINT32 WINAPI GetPackageGraphRevisionId(void); 206 #endif 207 208 typedef enum AppPolicyLifecycleManagement { 209 AppPolicyLifecycleManagement_Unmanaged = 0, 210 AppPolicyLifecycleManagement_Managed = 1 211 } AppPolicyLifecycleManagement; 212 213 WINBASEAPI LONG WINAPI AppPolicyGetLifecycleManagement(HANDLE processToken, AppPolicyLifecycleManagement *policy); 214 215 typedef enum AppPolicyWindowingModel { 216 AppPolicyWindowingModel_None = 0, 217 AppPolicyWindowingModel_Universal = 1, 218 AppPolicyWindowingModel_ClassicDesktop = 2, 219 AppPolicyWindowingModel_ClassicPhone = 3 220 } AppPolicyWindowingModel; 221 222 WINBASEAPI LONG WINAPI AppPolicyGetWindowingModel(HANDLE processToken, AppPolicyWindowingModel *policy); 223 224 typedef enum AppPolicyMediaFoundationCodecLoading { 225 AppPolicyMediaFoundationCodecLoading_All = 0, 226 AppPolicyMediaFoundationCodecLoading_InboxOnly = 1 227 } AppPolicyMediaFoundationCodecLoading; 228 229 WINBASEAPI LONG WINAPI AppPolicyGetMediaFoundationCodecLoading(HANDLE processToken, AppPolicyMediaFoundationCodecLoading *policy); 230 231 typedef enum AppPolicyClrCompat { 232 AppPolicyClrCompat_Other = 0, 233 AppPolicyClrCompat_ClassicDesktop = 1, 234 AppPolicyClrCompat_Universal = 2, 235 AppPolicyClrCompat_PackagedDesktop = 3 236 } AppPolicyClrCompat; 237 238 WINBASEAPI LONG WINAPI AppPolicyGetClrCompat(HANDLE processToken, AppPolicyClrCompat *policy); 239 240 typedef enum AppPolicyThreadInitializationType { 241 AppPolicyThreadInitializationType_None = 0, 242 AppPolicyThreadInitializationType_InitializeWinRT = 1 243 } AppPolicyThreadInitializationType; 244 245 WINBASEAPI LONG WINAPI AppPolicyGetThreadInitializationType(HANDLE processToken, AppPolicyThreadInitializationType *policy); 246 247 typedef enum AppPolicyShowDeveloperDiagnostic { 248 AppPolicyShowDeveloperDiagnostic_None = 0, 249 AppPolicyShowDeveloperDiagnostic_ShowUI = 1 250 } AppPolicyShowDeveloperDiagnostic; 251 252 WINBASEAPI LONG WINAPI AppPolicyGetShowDeveloperDiagnostic(HANDLE processToken, AppPolicyShowDeveloperDiagnostic *policy); 253 254 typedef enum AppPolicyProcessTerminationMethod { 255 AppPolicyProcessTerminationMethod_ExitProcess = 0, 256 AppPolicyProcessTerminationMethod_TerminateProcess = 1 257 } AppPolicyProcessTerminationMethod; 258 259 WINBASEAPI LONG WINAPI AppPolicyGetProcessTerminationMethod(HANDLE processToken, AppPolicyProcessTerminationMethod *policy); 260 261 typedef enum AppPolicyCreateFileAccess { 262 AppPolicyCreateFileAccess_Full = 0, 263 AppPolicyCreateFileAccess_Limited = 1 264 } AppPolicyCreateFileAccess; 265 266 WINBASEAPI LONG WINAPI AppPolicyGetCreateFileAccess(HANDLE processToken, AppPolicyCreateFileAccess *policy); 267 268 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ 269 270 #if defined(__cplusplus) 271 } 272 #endif 273 274 #endif /* _APPMODEL_H_ */