zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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