--------------------------------------------------------------------------------
-- <auto-generated>                                                           --
--     This code was generated by a tool.                                     --
--                                                                            --
--     Changes to this file may cause incorrect behavior and will be lost if  --
--     the code is regenerated.                                               --
-- </auto-generated>                                                          --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--                                                                            --
--    Copyright(c) 2018 Alexander Gamper, All Rights Reserved.                --
--                                                                            --
--    Ada-WinRT                                                               --
--                                                                            --
-- This program is free software: you can redistribute it and / or modify     --
-- it under the terms of the GNU Lesser General Public License as published by--
-- the Free Software Foundation, either version 3 of the License, or          --
-- (at your option) any later version.                                        --
--                                                                            --
-- This program is distributed in the hope that it will be useful,            --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of             --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the               --
-- GNU Lesser General Public License for more details.                        --
--                                                                            --
-- You should have received a copy of the GNU Lesser General Public License   --
-- along with this program.If not, see http://www.gnu.org/licenses            --
--                                                                            --
--------------------------------------------------------------------------------
with Windows.Foundation;
with Windows.Foundation.Collections;
limited with Windows.Storage.Streams;
--------------------------------------------------------------------------------
package Windows.System.Profile is

   pragma preelaborate;
   
   ------------------------------------------------------------------------
   -- Enums
   ------------------------------------------------------------------------
   
   type PlatformDataCollectionLevel is (
      Security,
      Basic,
      Enhanced,
      Full
   );
   for PlatformDataCollectionLevel use (
      Security => 0,
      Basic => 1,
      Enhanced => 2,
      Full => 3
   );
   for PlatformDataCollectionLevel'Size use 32;
   
   type PlatformDataCollectionLevel_Ptr is access PlatformDataCollectionLevel;
   
   type SystemIdentificationSource is (
      None,
      Tpm,
      Uefi,
      Registry
   );
   for SystemIdentificationSource use (
      None => 0,
      Tpm => 1,
      Uefi => 2,
      Registry => 3
   );
   for SystemIdentificationSource'Size use 32;
   
   type SystemIdentificationSource_Ptr is access SystemIdentificationSource;
   
   type SystemOutOfBoxExperienceState is (
      NotStarted,
      InProgress,
      Completed
   );
   for SystemOutOfBoxExperienceState use (
      NotStarted => 0,
      InProgress => 1,
      Completed => 2
   );
   for SystemOutOfBoxExperienceState'Size use 32;
   
   type SystemOutOfBoxExperienceState_Ptr is access SystemOutOfBoxExperienceState;
   
   type UnsupportedAppRequirementReasons is (
      Unknown,
      DeniedBySystem
   );
   for UnsupportedAppRequirementReasons use (
      Unknown => 0,
      DeniedBySystem => 1
   );
   for UnsupportedAppRequirementReasons'Size use 32;
   
   type UnsupportedAppRequirementReasons_Ptr is access UnsupportedAppRequirementReasons;
   
   ------------------------------------------------------------------------
   -- Record types
   ------------------------------------------------------------------------
   
   type ProfileHardwareTokenContract is null record;
   pragma Convention (C_Pass_By_Copy , ProfileHardwareTokenContract);
   
   type ProfileHardwareTokenContract_Ptr is access ProfileHardwareTokenContract;
   
   type ProfileRetailInfoContract is null record;
   pragma Convention (C_Pass_By_Copy , ProfileRetailInfoContract);
   
   type ProfileRetailInfoContract_Ptr is access ProfileRetailInfoContract;
   
   type ProfileSharedModeContract is null record;
   pragma Convention (C_Pass_By_Copy , ProfileSharedModeContract);
   
   type ProfileSharedModeContract_Ptr is access ProfileSharedModeContract;
   
   ------------------------------------------------------------------------
   -- Forward Declaration - Interfaces
   ------------------------------------------------------------------------
   
   type IAnalyticsInfoStatics_Interface;
   type IAnalyticsInfoStatics is access all IAnalyticsInfoStatics_Interface'Class;
   type IAnalyticsInfoStatics_Ptr is access all IAnalyticsInfoStatics;
   type IAnalyticsInfoStatics2_Interface;
   type IAnalyticsInfoStatics2 is access all IAnalyticsInfoStatics2_Interface'Class;
   type IAnalyticsInfoStatics2_Ptr is access all IAnalyticsInfoStatics2;
   type IAnalyticsVersionInfo_Interface;
   type IAnalyticsVersionInfo is access all IAnalyticsVersionInfo_Interface'Class;
   type IAnalyticsVersionInfo_Ptr is access all IAnalyticsVersionInfo;
   type IAppApplicabilityStatics_Interface;
   type IAppApplicabilityStatics is access all IAppApplicabilityStatics_Interface'Class;
   type IAppApplicabilityStatics_Ptr is access all IAppApplicabilityStatics;
   type IEducationSettingsStatics_Interface;
   type IEducationSettingsStatics is access all IEducationSettingsStatics_Interface'Class;
   type IEducationSettingsStatics_Ptr is access all IEducationSettingsStatics;
   type IHardwareIdentificationStatics_Interface;
   type IHardwareIdentificationStatics is access all IHardwareIdentificationStatics_Interface'Class;
   type IHardwareIdentificationStatics_Ptr is access all IHardwareIdentificationStatics;
   type IHardwareToken_Interface;
   type IHardwareToken is access all IHardwareToken_Interface'Class;
   type IHardwareToken_Ptr is access all IHardwareToken;
   type IIterable_IUnsupportedAppRequirement_Interface;
   type IIterable_IUnsupportedAppRequirement is access all IIterable_IUnsupportedAppRequirement_Interface'Class;
   type IIterable_IUnsupportedAppRequirement_Ptr is access all IIterable_IUnsupportedAppRequirement;
   type IIterator_IUnsupportedAppRequirement_Interface;
   type IIterator_IUnsupportedAppRequirement is access all IIterator_IUnsupportedAppRequirement_Interface'Class;
   type IIterator_IUnsupportedAppRequirement_Ptr is access all IIterator_IUnsupportedAppRequirement;
   type IKnownRetailInfoPropertiesStatics_Interface;
   type IKnownRetailInfoPropertiesStatics is access all IKnownRetailInfoPropertiesStatics_Interface'Class;
   type IKnownRetailInfoPropertiesStatics_Ptr is access all IKnownRetailInfoPropertiesStatics;
   type IPlatformDiagnosticsAndUsageDataSettingsStatics_Interface;
   type IPlatformDiagnosticsAndUsageDataSettingsStatics is access all IPlatformDiagnosticsAndUsageDataSettingsStatics_Interface'Class;
   type IPlatformDiagnosticsAndUsageDataSettingsStatics_Ptr is access all IPlatformDiagnosticsAndUsageDataSettingsStatics;
   type IRetailInfoStatics_Interface;
   type IRetailInfoStatics is access all IRetailInfoStatics_Interface'Class;
   type IRetailInfoStatics_Ptr is access all IRetailInfoStatics;
   type ISharedModeSettingsStatics_Interface;
   type ISharedModeSettingsStatics is access all ISharedModeSettingsStatics_Interface'Class;
   type ISharedModeSettingsStatics_Ptr is access all ISharedModeSettingsStatics;
   type ISharedModeSettingsStatics2_Interface;
   type ISharedModeSettingsStatics2 is access all ISharedModeSettingsStatics2_Interface'Class;
   type ISharedModeSettingsStatics2_Ptr is access all ISharedModeSettingsStatics2;
   type ISystemIdentificationInfo_Interface;
   type ISystemIdentificationInfo is access all ISystemIdentificationInfo_Interface'Class;
   type ISystemIdentificationInfo_Ptr is access all ISystemIdentificationInfo;
   type ISystemIdentificationStatics_Interface;
   type ISystemIdentificationStatics is access all ISystemIdentificationStatics_Interface'Class;
   type ISystemIdentificationStatics_Ptr is access all ISystemIdentificationStatics;
   type ISystemSetupInfoStatics_Interface;
   type ISystemSetupInfoStatics is access all ISystemSetupInfoStatics_Interface'Class;
   type ISystemSetupInfoStatics_Ptr is access all ISystemSetupInfoStatics;
   type IUnsupportedAppRequirement_Interface;
   type IUnsupportedAppRequirement is access all IUnsupportedAppRequirement_Interface'Class;
   type IUnsupportedAppRequirement_Ptr is access all IUnsupportedAppRequirement;
   type IVectorView_IUnsupportedAppRequirement_Interface;
   type IVectorView_IUnsupportedAppRequirement is access all IVectorView_IUnsupportedAppRequirement_Interface'Class;
   type IVectorView_IUnsupportedAppRequirement_Ptr is access all IVectorView_IUnsupportedAppRequirement;
   type IWindowsIntegrityPolicyStatics_Interface;
   type IWindowsIntegrityPolicyStatics is access all IWindowsIntegrityPolicyStatics_Interface'Class;
   type IWindowsIntegrityPolicyStatics_Ptr is access all IWindowsIntegrityPolicyStatics;
   
   ------------------------------------------------------------------------
   -- Interfaces
   ------------------------------------------------------------------------
   
   ------------------------------------------------------------------------
   
   IID_IAnalyticsInfoStatics : aliased constant Windows.IID := (492757094, 6285, 23465, (67, 135, 172, 174, 176, 231, 227, 5 ));
   
   type IAnalyticsInfoStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function get_VersionInfo
   (
      This       : access IAnalyticsInfoStatics_Interface
      ; RetVal : access Windows.System.Profile.IAnalyticsVersionInfo
   )
   return Windows.HRESULT is abstract;
   
   function get_DeviceForm
   (
      This       : access IAnalyticsInfoStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IAnalyticsInfoStatics2 : aliased constant Windows.IID := (269944042, 43001, 18130, (171, 148, 1, 104, 101, 175, 219, 37 ));
   
   type IAnalyticsInfoStatics2_Interface is interface and Windows.IInspectable_Interface;
   
   function GetSystemPropertiesAsync
   (
      This       : access IAnalyticsInfoStatics2_Interface
      ; attributeNames : Windows.Foundation.Collections.IIterable_String
      ; RetVal : access Windows.Address -- Generic Parameter Type
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IAnalyticsVersionInfo : aliased constant Windows.IID := (2455843000, 39253, 19572, (189, 193, 124, 208, 222, 207, 155, 3 ));
   
   type IAnalyticsVersionInfo_Interface is interface and Windows.IInspectable_Interface;
   
   function get_DeviceFamily
   (
      This       : access IAnalyticsVersionInfo_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_DeviceFamilyVersion
   (
      This       : access IAnalyticsVersionInfo_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IAppApplicabilityStatics : aliased constant Windows.IID := (375693442, 3896, 23705, (131, 228, 72, 153, 89, 112, 134, 28 ));
   
   type IAppApplicabilityStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function GetUnsupportedAppRequirements
   (
      This       : access IAppApplicabilityStatics_Interface
      ; capabilities : Windows.Foundation.Collections.IIterable_String
      ; RetVal : access Windows.System.Profile.IVectorView_IUnsupportedAppRequirement -- Generic Parameter Type
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IEducationSettingsStatics : aliased constant Windows.IID := (4233359599, 19774, 19987, (155, 35, 80, 95, 77, 9, 30, 146 ));
   
   type IEducationSettingsStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function get_IsEducationEnvironment
   (
      This       : access IEducationSettingsStatics_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IHardwareIdentificationStatics : aliased constant Windows.IID := (2534564064, 61808, 19010, (189, 85, 169, 0, 178, 18, 218, 226 ));
   
   type IHardwareIdentificationStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function GetPackageSpecificToken
   (
      This       : access IHardwareIdentificationStatics_Interface
      ; nonce : Windows.Storage.Streams.IBuffer
      ; RetVal : access Windows.System.Profile.IHardwareToken
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IHardwareToken : aliased constant Windows.IID := (687264960, 64274, 16548, (129, 103, 127, 78, 3, 210, 114, 76 ));
   
   type IHardwareToken_Interface is interface and Windows.IInspectable_Interface;
   
   function get_Id
   (
      This       : access IHardwareToken_Interface
      ; RetVal : access Windows.Storage.Streams.IBuffer
   )
   return Windows.HRESULT is abstract;
   
   function get_Signature
   (
      This       : access IHardwareToken_Interface
      ; RetVal : access Windows.Storage.Streams.IBuffer
   )
   return Windows.HRESULT is abstract;
   
   function get_Certificate
   (
      This       : access IHardwareToken_Interface
      ; RetVal : access Windows.Storage.Streams.IBuffer
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IIterable_IUnsupportedAppRequirement : aliased constant Windows.IID := (3181243677, 889, 20803, (164, 144, 22, 139, 107, 132, 19, 163 ));
   
   type IIterable_IUnsupportedAppRequirement_Interface is interface and Windows.IInspectable_Interface;
   
   function First
   (
      This       : access IIterable_IUnsupportedAppRequirement_Interface
      ; RetVal : access Windows.System.Profile.IIterator_IUnsupportedAppRequirement
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IIterator_IUnsupportedAppRequirement : aliased constant Windows.IID := (278225248, 25655, 21552, (147, 34, 223, 13, 106, 178, 235, 230 ));
   
   type IIterator_IUnsupportedAppRequirement_Interface is interface and Windows.IInspectable_Interface;
   
   function get_Current
   (
      This       : access IIterator_IUnsupportedAppRequirement_Interface
      ; RetVal : access Windows.System.Profile.IUnsupportedAppRequirement
   )
   return Windows.HRESULT is abstract;
   
   function get_HasCurrent
   (
      This       : access IIterator_IUnsupportedAppRequirement_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function MoveNext
   (
      This       : access IIterator_IUnsupportedAppRequirement_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function GetMany
   (
      This       : access IIterator_IUnsupportedAppRequirement_Interface
      ; items : Windows.System.Profile.IUnsupportedAppRequirement_Ptr
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IKnownRetailInfoPropertiesStatics : aliased constant Windows.IID := (2572620152, 20495, 18558, (142, 117, 41, 229, 81, 114, 135, 18 ));
   
   type IKnownRetailInfoPropertiesStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function get_RetailAccessCode
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_ManufacturerName
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_ModelName
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_DisplayModelName
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_Price
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_IsFeatured
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_FormFactor
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_ScreenSize
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_Weight
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_DisplayDescription
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_BatteryLifeDescription
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_ProcessorDescription
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_Memory
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_StorageDescription
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_GraphicsDescription
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_FrontCameraDescription
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_RearCameraDescription
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_HasNfc
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_HasSdSlot
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_HasOpticalDrive
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_IsOfficeInstalled
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_WindowsEdition
   (
      This       : access IKnownRetailInfoPropertiesStatics_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IPlatformDiagnosticsAndUsageDataSettingsStatics : aliased constant Windows.IID := (3068283931, 31516, 19250, (140, 98, 166, 101, 151, 206, 114, 58 ));
   
   type IPlatformDiagnosticsAndUsageDataSettingsStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function get_CollectionLevel
   (
      This       : access IPlatformDiagnosticsAndUsageDataSettingsStatics_Interface
      ; RetVal : access Windows.System.Profile.PlatformDataCollectionLevel
   )
   return Windows.HRESULT is abstract;
   
   function add_CollectionLevelChanged
   (
      This       : access IPlatformDiagnosticsAndUsageDataSettingsStatics_Interface
      ; handler : Windows.Foundation.EventHandler_Object
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_CollectionLevelChanged
   (
      This       : access IPlatformDiagnosticsAndUsageDataSettingsStatics_Interface
      ; token : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function CanCollectDiagnostics
   (
      This       : access IPlatformDiagnosticsAndUsageDataSettingsStatics_Interface
      ; level : Windows.System.Profile.PlatformDataCollectionLevel
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IRetailInfoStatics : aliased constant Windows.IID := (118671032, 35730, 20266, (132, 153, 3, 31, 23, 152, 214, 239 ));
   
   type IRetailInfoStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function get_IsDemoModeEnabled
   (
      This       : access IRetailInfoStatics_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function get_Properties
   (
      This       : access IRetailInfoStatics_Interface
      ; RetVal : access Windows.Address -- Generic Parameter Type
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ISharedModeSettingsStatics : aliased constant Windows.IID := (2302538766, 51926, 19792, (140, 73, 111, 207, 192, 62, 219, 41 ));
   
   type ISharedModeSettingsStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function get_IsEnabled
   (
      This       : access ISharedModeSettingsStatics_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ISharedModeSettingsStatics2 : aliased constant Windows.IID := (1619626148, 52465, 20200, (165, 226, 253, 106, 29, 12, 250, 200 ));
   
   type ISharedModeSettingsStatics2_Interface is interface and Windows.IInspectable_Interface;
   
   function get_ShouldAvoidLocalStorage
   (
      This       : access ISharedModeSettingsStatics2_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ISystemIdentificationInfo : aliased constant Windows.IID := (207986301, 50114, 19763, (162, 223, 33, 188, 65, 145, 110, 179 ));
   
   type ISystemIdentificationInfo_Interface is interface and Windows.IInspectable_Interface;
   
   function get_Id
   (
      This       : access ISystemIdentificationInfo_Interface
      ; RetVal : access Windows.Storage.Streams.IBuffer
   )
   return Windows.HRESULT is abstract;
   
   function get_Source
   (
      This       : access ISystemIdentificationInfo_Interface
      ; RetVal : access Windows.System.Profile.SystemIdentificationSource
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ISystemIdentificationStatics : aliased constant Windows.IID := (1434580010, 54239, 19859, (163, 125, 196, 26, 97, 108, 109, 1 ));
   
   type ISystemIdentificationStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function GetSystemIdForPublisher
   (
      This       : access ISystemIdentificationStatics_Interface
      ; RetVal : access Windows.System.Profile.ISystemIdentificationInfo
   )
   return Windows.HRESULT is abstract;
   
   function GetSystemIdForUser
   (
      This       : access ISystemIdentificationStatics_Interface
      ; user : Windows.System.IUser
      ; RetVal : access Windows.System.Profile.ISystemIdentificationInfo
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ISystemSetupInfoStatics : aliased constant Windows.IID := (748036264, 7560, 24109, (163, 36, 165, 67, 175, 66, 71, 238 ));
   
   type ISystemSetupInfoStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function get_OutOfBoxExperienceState
   (
      This       : access ISystemSetupInfoStatics_Interface
      ; RetVal : access Windows.System.Profile.SystemOutOfBoxExperienceState
   )
   return Windows.HRESULT is abstract;
   
   function add_OutOfBoxExperienceStateChanged
   (
      This       : access ISystemSetupInfoStatics_Interface
      ; handler : Windows.Foundation.EventHandler_Object
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_OutOfBoxExperienceStateChanged
   (
      This       : access ISystemSetupInfoStatics_Interface
      ; token : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IUnsupportedAppRequirement : aliased constant Windows.IID := (1635927132, 35147, 23740, (137, 118, 169, 142, 10, 155, 153, 141 ));
   
   type IUnsupportedAppRequirement_Interface is interface and Windows.IInspectable_Interface;
   
   function get_Requirement
   (
      This       : access IUnsupportedAppRequirement_Interface
      ; RetVal : access Windows.String
   )
   return Windows.HRESULT is abstract;
   
   function get_Reasons
   (
      This       : access IUnsupportedAppRequirement_Interface
      ; RetVal : access Windows.System.Profile.UnsupportedAppRequirementReasons
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IVectorView_IUnsupportedAppRequirement : aliased constant Windows.IID := (1533250648, 40196, 23834, (146, 251, 134, 8, 82, 195, 228, 208 ));
   
   type IVectorView_IUnsupportedAppRequirement_Interface is interface and Windows.IInspectable_Interface;
   
   function GetAt
   (
      This       : access IVectorView_IUnsupportedAppRequirement_Interface
      ; index : Windows.UInt32
      ; RetVal : access Windows.System.Profile.IUnsupportedAppRequirement
   )
   return Windows.HRESULT is abstract;
   
   function get_Size
   (
      This       : access IVectorView_IUnsupportedAppRequirement_Interface
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   function IndexOf
   (
      This       : access IVectorView_IUnsupportedAppRequirement_Interface
      ; value : Windows.System.Profile.IUnsupportedAppRequirement
      ; index : access Windows.UInt32
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function GetMany
   (
      This       : access IVectorView_IUnsupportedAppRequirement_Interface
      ; startIndex : Windows.UInt32
      ; items : Windows.System.Profile.IUnsupportedAppRequirement_Ptr
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IWindowsIntegrityPolicyStatics : aliased constant Windows.IID := (2099085787, 36195, 18313, (158, 165, 221, 207, 101, 169, 79, 60 ));
   
   type IWindowsIntegrityPolicyStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function get_IsEnabled
   (
      This       : access IWindowsIntegrityPolicyStatics_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function get_IsEnabledForTrial
   (
      This       : access IWindowsIntegrityPolicyStatics_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function get_CanDisable
   (
      This       : access IWindowsIntegrityPolicyStatics_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function get_IsDisableSupported
   (
      This       : access IWindowsIntegrityPolicyStatics_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function add_PolicyChanged
   (
      This       : access IWindowsIntegrityPolicyStatics_Interface
      ; handler : Windows.Foundation.EventHandler_Object
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_PolicyChanged
   (
      This       : access IWindowsIntegrityPolicyStatics_Interface
      ; token : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   -- Classes
   ------------------------------------------------------------------------
   
   subtype AnalyticsVersionInfo is Windows.System.Profile.IAnalyticsVersionInfo;
   subtype HardwareToken is Windows.System.Profile.IHardwareToken;
   subtype SystemIdentificationInfo is Windows.System.Profile.ISystemIdentificationInfo;
   subtype UnsupportedAppRequirement is Windows.System.Profile.IUnsupportedAppRequirement;
   
   ------------------------------------------------------------------------
   -- Static Procedures/functions
   ------------------------------------------------------------------------
   
   function get_DeviceForm
   return Windows.String;
   
   function get_VersionInfo
   return Windows.System.Profile.IAnalyticsVersionInfo;
   
   function GetSystemPropertiesAsync
   (
      attributeNames : Windows.Foundation.Collections.IIterable_String
   )
   return Windows.Address;
   
   function GetUnsupportedAppRequirements
   (
      capabilities : Windows.Foundation.Collections.IIterable_String
   )
   return Windows.System.Profile.IVectorView_IUnsupportedAppRequirement;
   
   function get_IsEducationEnvironment
   return Windows.Boolean;
   
   function GetPackageSpecificToken
   (
      nonce : Windows.Storage.Streams.IBuffer
   )
   return Windows.System.Profile.IHardwareToken;
   
   function get_BatteryLifeDescription
   return Windows.String;
   
   function get_DisplayDescription
   return Windows.String;
   
   function get_DisplayModelName
   return Windows.String;
   
   function get_FormFactor
   return Windows.String;
   
   function get_FrontCameraDescription
   return Windows.String;
   
   function get_GraphicsDescription
   return Windows.String;
   
   function get_HasNfc
   return Windows.String;
   
   function get_HasOpticalDrive
   return Windows.String;
   
   function get_HasSdSlot
   return Windows.String;
   
   function get_IsFeatured
   return Windows.String;
   
   function get_IsOfficeInstalled
   return Windows.String;
   
   function get_ManufacturerName
   return Windows.String;
   
   function get_Memory
   return Windows.String;
   
   function get_ModelName
   return Windows.String;
   
   function get_Price
   return Windows.String;
   
   function get_ProcessorDescription
   return Windows.String;
   
   function get_RearCameraDescription
   return Windows.String;
   
   function get_RetailAccessCode
   return Windows.String;
   
   function get_ScreenSize
   return Windows.String;
   
   function get_StorageDescription
   return Windows.String;
   
   function get_Weight
   return Windows.String;
   
   function get_WindowsEdition
   return Windows.String;
   
   function add_CollectionLevelChanged
   (
      handler : Windows.Foundation.EventHandler_Object
   )
   return Windows.Foundation.EventRegistrationToken;
   
   function CanCollectDiagnostics
   (
      level : Windows.System.Profile.PlatformDataCollectionLevel
   )
   return Windows.Boolean;
   
   function get_CollectionLevel
   return Windows.System.Profile.PlatformDataCollectionLevel;
   
   procedure remove_CollectionLevelChanged
   (
      token : Windows.Foundation.EventRegistrationToken
   )
   ;
   
   function get_IsDemoModeEnabled
   return Windows.Boolean;
   
   function get_Properties
   return Windows.Address;
   
   function get_IsEnabled
   return Windows.Boolean;
   
   function get_ShouldAvoidLocalStorage
   return Windows.Boolean;
   
   function GetSystemIdForPublisher
   return Windows.System.Profile.ISystemIdentificationInfo;
   
   function GetSystemIdForUser
   (
      user : Windows.System.IUser
   )
   return Windows.System.Profile.ISystemIdentificationInfo;
   
   function add_OutOfBoxExperienceStateChanged
   (
      handler : Windows.Foundation.EventHandler_Object
   )
   return Windows.Foundation.EventRegistrationToken;
   
   function get_OutOfBoxExperienceState
   return Windows.System.Profile.SystemOutOfBoxExperienceState;
   
   procedure remove_OutOfBoxExperienceStateChanged
   (
      token : Windows.Foundation.EventRegistrationToken
   )
   ;
   
   function add_PolicyChanged
   (
      handler : Windows.Foundation.EventHandler_Object
   )
   return Windows.Foundation.EventRegistrationToken;
   
   function get_CanDisable
   return Windows.Boolean;
   
   function get_IsDisableSupported
   return Windows.Boolean;
   
   function get_IsEnabled_WindowsIntegrityPolicy
   return Windows.Boolean;
   
   function get_IsEnabledForTrial
   return Windows.Boolean;
   
   procedure remove_PolicyChanged
   (
      token : Windows.Foundation.EventRegistrationToken
   )
   ;
   
end;
