appmodel.h 13 KB

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