--------------------------------------------------------------------------------
-- <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) 2020 Alexander Gamper, All Rights Reserved.                --
--                                                                            --
--    Ada-Win32                                                               --
--    Version   : 1.4.0.0                                                     --
--    Microsoft SDK Version : 10.0.19041.0                                    --
--    Microsoft Windows Release : 20H1                                        --
--                                                                            --
-- 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 System;
with Interfaces.C;                   use Interfaces.C;
with Interfaces.C.Extensions;        use Interfaces.C.Extensions;
--------------------------------------------------------------------------------
package Win32 is
   
   type Void is null record;
   
   -- #include <Win32.hpp>
   -- #include <sdkddkver.h>
   NTDDI_WIN2K : constant := 16#05000000#;
   NTDDI_WIN2KSP1 : constant := 16#05000100#;
   NTDDI_WIN2KSP2 : constant := 16#05000200#;
   NTDDI_WIN2KSP3 : constant := 16#05000300#;
   NTDDI_WIN2KSP4 : constant := 16#05000400#;
   NTDDI_WINXP : constant := 16#05010000#;
   NTDDI_WINXPSP1 : constant := 16#05010100#;
   NTDDI_WINXPSP2 : constant := 16#05010200#;
   NTDDI_WINXPSP3 : constant := 16#05010300#;
   NTDDI_WINXPSP4 : constant := 16#05010400#;
   NTDDI_WS03 : constant := 16#05020000#;
   NTDDI_WS03SP1 : constant := 16#05020100#;
   NTDDI_WS03SP2 : constant := 16#05020200#;
   NTDDI_WS03SP3 : constant := 16#05020300#;
   NTDDI_WS03SP4 : constant := 16#05020400#;
   NTDDI_WIN6 : constant := 16#06000000#;
   NTDDI_WIN6SP1 : constant := 16#06000100#;
   NTDDI_WIN6SP2 : constant := 16#06000200#;
   NTDDI_WIN6SP3 : constant := 16#06000300#;
   NTDDI_WIN6SP4 : constant := 16#06000400#;
   NTDDI_WIN7 : constant := 16#06010000#;
   NTDDI_WIN8 : constant := 16#06020000#;
   NTDDI_WINBLUE : constant := 16#06030000#;
   NTDDI_WINTHRESHOLD : constant := 16#0A000000#;
   NTDDI_WIN10 : constant := 16#0A000000#;
   NTDDI_WIN10_TH2 : constant := 16#0A000001#;
   NTDDI_WIN10_RS1 : constant := 16#0A000002#;
   NTDDI_WIN10_RS2 : constant := 16#0A000003#;
   NTDDI_WIN10_RS3 : constant := 16#0A000004#;
   NTDDI_WIN10_RS4 : constant := 16#0A000005#;
   NTDDI_WIN10_RS5 : constant := 16#0A000006#;
   NTDDI_WIN10_19H1 : constant := 16#0A000007#;
   NTDDI_WIN10_VB : constant := 16#0A000008#;
   OSVERSION_MASK : constant := 16#FFFF0000#;
   SPVERSION_MASK : constant := 16#0000FF00#;
   SUBVERSION_MASK : constant := 16#000000FF#;
   -- [Todo] NTDDI_VERSION_FROM_WIN32_WINNT2 ( ver ) ver ## 0000;
   -- #include <Win32.hpp>
   -- #include <windows.h>
   -- #include <winapifamily.h>
   -- #include <winpackagefamily.h>
   -- #include <winapifamily.h>
   WINAPI_FAMILY_PC_APP : constant := 2;
   WINAPI_FAMILY_PHONE_APP : constant := 3;
   WINAPI_FAMILY_SYSTEM : constant := 4;
   WINAPI_FAMILY_SERVER : constant := 5;
   WINAPI_FAMILY_GAMES : constant := 6;
   WINAPI_FAMILY_DESKTOP_APP : constant := 100;
   -- #include <windows.h>
   -- #include <excpt.h>
   -- #include <vcruntime.h>
   -- #include <sal.h>
   -- #include <concurrencysal.h>
   -- #include <vcruntime.h>
   -- #include <vadefs.h>
   -- #include <vcruntime.h>
   -- #include <excpt.h>
   EXCEPTION_EXECUTE_HANDLER : constant := 1;
   EXCEPTION_CONTINUE_SEARCH : constant := 0;
   EXCEPTION_CONTINUE_EXECUTION : constant := -1;
   -- #include <windows.h>
   -- #include <stdarg.h>
   -- #include <windows.h>
   -- #include <windef.h>
   -- #include <minwindef.h>
   -- #include <SpecStrings.h>
   -- #include <specstrings_strict.h>
   -- #include <SpecStrings.h>
   -- #include <DriverSpecs.h>
   -- #include <sdv_driverspecs.h>
   -- #include <DriverSpecs.h>
   -- #include <SpecStrings.h>
   -- #include <minwindef.h>
   STRICT : constant := 1;
   MAX_PATH : constant := 260;
   FALSE : constant := 0;
   TRUE : constant := 1;
   -- #include <winnt.h>
   -- #include <ctype.h>
   -- #include <corecrt.h>
   -- #include <ctype.h>
   -- #include <corecrt_wctype.h>
   WEOF : constant := 16#FFFF#;
   -- #include <ctype.h>
   -- #include <winnt.h>
   ANYSIZE_ARRAY : constant := 1;
   -- #include <kernelspecs.h>
   DISPATCH_LEVEL : constant := 2;
   APC_LEVEL : constant := 1;
   PASSIVE_LEVEL : constant := 0;
   HIGH_LEVEL : constant := 15;
   -- #include <winnt.h>
   MEMORY_ALLOCATION_ALIGNMENT : constant := 16;
   -- #include <basetsd.h>
   ADDRESS_TAG_BIT : constant := 16#40000000000#;
   MAXUHALF_PTR : constant := 0;
   -- #include <winnt.h>
   SYSTEM_CACHE_ALIGNMENT_SIZE : constant := 64;
   DECLSPEC_CACHEALIGN : constant := SYSTEM_CACHE_ALIGNMENT_SIZE;
   PRAGMA_DEPRECATED_DDK : constant := 0;
   UCSCHAR_INVALID_CHARACTER : constant := 16#ffffffff#;
   MIN_UCSCHAR : constant := 0;
   MAX_UCSCHAR : constant := 16#0010FFFF#;
   ALL_PROCESSOR_GROUPS : constant := 16#ffff#;
   MAXIMUM_PROC_PER_GROUP : constant := 64;
   APPLICATION_ERROR_MASK : constant := 16#20000000#;
   ERROR_SEVERITY_SUCCESS : constant := 16#00000000#;
   ERROR_SEVERITY_INFORMATIONAL : constant := 16#40000000#;
   ERROR_SEVERITY_WARNING : constant := 16#80000000#;
   ERROR_SEVERITY_ERROR : constant := 16#C0000000#;
   MAXLONGLONG : constant := 16#7fffffffffffffff#;
   ANSI_NULL : constant := 0;
   UNICODE_NULL : constant := 0;
   UNICODE_STRING_MAX_BYTES : constant := 65534;
   UNICODE_STRING_MAX_CHARS : constant := 32767;
   -- #include <guiddef.h>
   -- #include <string.h>
   -- #include <corecrt_memory.h>
   -- #include <corecrt_memcpy_s.h>
   -- #include <errno.h>
   EPERM : constant := 1;
   ENOENT : constant := 2;
   ESRCH : constant := 3;
   EINTR : constant := 4;
   EIO : constant := 5;
   ENXIO : constant := 6;
   E2BIG : constant := 7;
   ENOEXEC : constant := 8;
   EBADF : constant := 9;
   ECHILD : constant := 10;
   EAGAIN : constant := 11;
   ENOMEM : constant := 12;
   EACCES : constant := 13;
   EFAULT : constant := 14;
   EBUSY : constant := 16;
   EEXIST : constant := 17;
   EXDEV : constant := 18;
   ENODEV : constant := 19;
   ENOTDIR : constant := 20;
   EISDIR : constant := 21;
   ENFILE : constant := 23;
   EMFILE : constant := 24;
   ENOTTY : constant := 25;
   EFBIG : constant := 27;
   ENOSPC : constant := 28;
   ESPIPE : constant := 29;
   EROFS : constant := 30;
   EMLINK : constant := 31;
   EPIPE : constant := 32;
   EDOM : constant := 33;
   EDEADLK : constant := 36;
   ENAMETOOLONG : constant := 38;
   ENOLCK : constant := 39;
   ENOSYS : constant := 40;
   ENOTEMPTY : constant := 41;
   EINVAL : constant := 22;
   ERANGE : constant := 34;
   EILSEQ : constant := 42;
   STRUNCATE : constant := 80;
   EADDRINUSE : constant := 100;
   EADDRNOTAVAIL : constant := 101;
   EAFNOSUPPORT : constant := 102;
   EALREADY : constant := 103;
   EBADMSG : constant := 104;
   ECANCELED : constant := 105;
   ECONNABORTED : constant := 106;
   ECONNREFUSED : constant := 107;
   ECONNRESET : constant := 108;
   EDESTADDRREQ : constant := 109;
   EHOSTUNREACH : constant := 110;
   EIDRM : constant := 111;
   EINPROGRESS : constant := 112;
   EISCONN : constant := 113;
   ELOOP : constant := 114;
   EMSGSIZE : constant := 115;
   ENETDOWN : constant := 116;
   ENETRESET : constant := 117;
   ENETUNREACH : constant := 118;
   ENOBUFS : constant := 119;
   ENODATA : constant := 120;
   ENOLINK : constant := 121;
   ENOMSG : constant := 122;
   ENOPROTOOPT : constant := 123;
   ENOSR : constant := 124;
   ENOSTR : constant := 125;
   ENOTCONN : constant := 126;
   ENOTRECOVERABLE : constant := 127;
   ENOTSOCK : constant := 128;
   ENOTSUP : constant := 129;
   EOPNOTSUPP : constant := 130;
   EOTHER : constant := 131;
   EOVERFLOW : constant := 132;
   EOWNERDEAD : constant := 133;
   EPROTO : constant := 134;
   EPROTONOSUPPORT : constant := 135;
   EPROTOTYPE : constant := 136;
   ETIME : constant := 137;
   ETIMEDOUT : constant := 138;
   ETXTBSY : constant := 139;
   EWOULDBLOCK : constant := 140;
   -- #include <corecrt_memcpy_s.h>
   -- #include <vcruntime_string.h>
   -- #include <corecrt_memcpy_s.h>
   -- #include <corecrt_memory.h>
   -- #include <string.h>
   -- #include <corecrt_wstring.h>
   -- #include <string.h>
   -- #include <guiddef.h>
   -- #include <winnt.h>
   MINCHAR : constant := 16#80#;
   MAXCHAR : constant := 16#7f#;
   MINSHORT : constant := 16#8000#;
   MAXSHORT : constant := 16#7fff#;
   MINLONG : constant := 16#80000000#;
   MAXLONG : constant := 16#7fffffff#;
   MAXBYTE : constant := 16#ff#;
   MAXWORD : constant := 16#ffff#;
   MAXDWORD : constant := 16#ffffffff#;
   ENCLAVE_SHORT_ID_LENGTH : constant := 16;
   ENCLAVE_LONG_ID_LENGTH : constant := 32;
   VER_SERVER_NT : constant := 16#80000000#;
   VER_WORKSTATION_NT : constant := 16#40000000#;
   VER_SUITE_SMALLBUSINESS : constant := 16#00000001#;
   VER_SUITE_ENTERPRISE : constant := 16#00000002#;
   VER_SUITE_BACKOFFICE : constant := 16#00000004#;
   VER_SUITE_COMMUNICATIONS : constant := 16#00000008#;
   VER_SUITE_TERMINAL : constant := 16#00000010#;
   VER_SUITE_SMALLBUSINESS_RESTRICTED : constant := 16#00000020#;
   VER_SUITE_EMBEDDEDNT : constant := 16#00000040#;
   VER_SUITE_DATACENTER : constant := 16#00000080#;
   VER_SUITE_SINGLEUSERTS : constant := 16#00000100#;
   VER_SUITE_PERSONAL : constant := 16#00000200#;
   VER_SUITE_BLADE : constant := 16#00000400#;
   VER_SUITE_EMBEDDED_RESTRICTED : constant := 16#00000800#;
   VER_SUITE_SECURITY_APPLIANCE : constant := 16#00001000#;
   VER_SUITE_STORAGE_SERVER : constant := 16#00002000#;
   VER_SUITE_COMPUTE_SERVER : constant := 16#00004000#;
   VER_SUITE_WH_SERVER : constant := 16#00008000#;
   VER_SUITE_MULTIUSERTS : constant := 16#00020000#;
   PRODUCT_UNDEFINED : constant := 16#00000000#;
   PRODUCT_ULTIMATE : constant := 16#00000001#;
   PRODUCT_HOME_BASIC : constant := 16#00000002#;
   PRODUCT_HOME_PREMIUM : constant := 16#00000003#;
   PRODUCT_ENTERPRISE : constant := 16#00000004#;
   PRODUCT_HOME_BASIC_N : constant := 16#00000005#;
   PRODUCT_BUSINESS : constant := 16#00000006#;
   PRODUCT_STANDARD_SERVER : constant := 16#00000007#;
   PRODUCT_DATACENTER_SERVER : constant := 16#00000008#;
   PRODUCT_SMALLBUSINESS_SERVER : constant := 16#00000009#;
   PRODUCT_ENTERPRISE_SERVER : constant := 16#0000000A#;
   PRODUCT_STARTER : constant := 16#0000000B#;
   PRODUCT_DATACENTER_SERVER_CORE : constant := 16#0000000C#;
   PRODUCT_STANDARD_SERVER_CORE : constant := 16#0000000D#;
   PRODUCT_ENTERPRISE_SERVER_CORE : constant := 16#0000000E#;
   PRODUCT_ENTERPRISE_SERVER_IA64 : constant := 16#0000000F#;
   PRODUCT_BUSINESS_N : constant := 16#00000010#;
   PRODUCT_WEB_SERVER : constant := 16#00000011#;
   PRODUCT_CLUSTER_SERVER : constant := 16#00000012#;
   PRODUCT_HOME_SERVER : constant := 16#00000013#;
   PRODUCT_STORAGE_EXPRESS_SERVER : constant := 16#00000014#;
   PRODUCT_STORAGE_STANDARD_SERVER : constant := 16#00000015#;
   PRODUCT_STORAGE_WORKGROUP_SERVER : constant := 16#00000016#;
   PRODUCT_STORAGE_ENTERPRISE_SERVER : constant := 16#00000017#;
   PRODUCT_SERVER_FOR_SMALLBUSINESS : constant := 16#00000018#;
   PRODUCT_SMALLBUSINESS_SERVER_PREMIUM : constant := 16#00000019#;
   PRODUCT_HOME_PREMIUM_N : constant := 16#0000001A#;
   PRODUCT_ENTERPRISE_N : constant := 16#0000001B#;
   PRODUCT_ULTIMATE_N : constant := 16#0000001C#;
   PRODUCT_WEB_SERVER_CORE : constant := 16#0000001D#;
   PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT : constant := 16#0000001E#;
   PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY : constant := 16#0000001F#;
   PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING : constant := 16#00000020#;
   PRODUCT_SERVER_FOUNDATION : constant := 16#00000021#;
   PRODUCT_HOME_PREMIUM_SERVER : constant := 16#00000022#;
   PRODUCT_SERVER_FOR_SMALLBUSINESS_V : constant := 16#00000023#;
   PRODUCT_STANDARD_SERVER_V : constant := 16#00000024#;
   PRODUCT_DATACENTER_SERVER_V : constant := 16#00000025#;
   PRODUCT_ENTERPRISE_SERVER_V : constant := 16#00000026#;
   PRODUCT_DATACENTER_SERVER_CORE_V : constant := 16#00000027#;
   PRODUCT_STANDARD_SERVER_CORE_V : constant := 16#00000028#;
   PRODUCT_ENTERPRISE_SERVER_CORE_V : constant := 16#00000029#;
   PRODUCT_HYPERV : constant := 16#0000002A#;
   PRODUCT_STORAGE_EXPRESS_SERVER_CORE : constant := 16#0000002B#;
   PRODUCT_STORAGE_STANDARD_SERVER_CORE : constant := 16#0000002C#;
   PRODUCT_STORAGE_WORKGROUP_SERVER_CORE : constant := 16#0000002D#;
   PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE : constant := 16#0000002E#;
   PRODUCT_STARTER_N : constant := 16#0000002F#;
   PRODUCT_PROFESSIONAL : constant := 16#00000030#;
   PRODUCT_PROFESSIONAL_N : constant := 16#00000031#;
   PRODUCT_SB_SOLUTION_SERVER : constant := 16#00000032#;
   PRODUCT_SERVER_FOR_SB_SOLUTIONS : constant := 16#00000033#;
   PRODUCT_STANDARD_SERVER_SOLUTIONS : constant := 16#00000034#;
   PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE : constant := 16#00000035#;
   PRODUCT_SB_SOLUTION_SERVER_EM : constant := 16#00000036#;
   PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM : constant := 16#00000037#;
   PRODUCT_SOLUTION_EMBEDDEDSERVER : constant := 16#00000038#;
   PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE : constant := 16#00000039#;
   PRODUCT_PROFESSIONAL_EMBEDDED : constant := 16#0000003A#;
   PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT : constant := 16#0000003B#;
   PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL : constant := 16#0000003C#;
   PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC : constant := 16#0000003D#;
   PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC : constant := 16#0000003E#;
   PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE : constant := 16#0000003F#;
   PRODUCT_CLUSTER_SERVER_V : constant := 16#00000040#;
   PRODUCT_EMBEDDED : constant := 16#00000041#;
   PRODUCT_STARTER_E : constant := 16#00000042#;
   PRODUCT_HOME_BASIC_E : constant := 16#00000043#;
   PRODUCT_HOME_PREMIUM_E : constant := 16#00000044#;
   PRODUCT_PROFESSIONAL_E : constant := 16#00000045#;
   PRODUCT_ENTERPRISE_E : constant := 16#00000046#;
   PRODUCT_ULTIMATE_E : constant := 16#00000047#;
   PRODUCT_ENTERPRISE_EVALUATION : constant := 16#00000048#;
   PRODUCT_MULTIPOINT_STANDARD_SERVER : constant := 16#0000004C#;
   PRODUCT_MULTIPOINT_PREMIUM_SERVER : constant := 16#0000004D#;
   PRODUCT_STANDARD_EVALUATION_SERVER : constant := 16#0000004F#;
   PRODUCT_DATACENTER_EVALUATION_SERVER : constant := 16#00000050#;
   PRODUCT_ENTERPRISE_N_EVALUATION : constant := 16#00000054#;
   PRODUCT_EMBEDDED_AUTOMOTIVE : constant := 16#00000055#;
   PRODUCT_EMBEDDED_INDUSTRY_A : constant := 16#00000056#;
   PRODUCT_THINPC : constant := 16#00000057#;
   PRODUCT_EMBEDDED_A : constant := 16#00000058#;
   PRODUCT_EMBEDDED_INDUSTRY : constant := 16#00000059#;
   PRODUCT_EMBEDDED_E : constant := 16#0000005A#;
   PRODUCT_EMBEDDED_INDUSTRY_E : constant := 16#0000005B#;
   PRODUCT_EMBEDDED_INDUSTRY_A_E : constant := 16#0000005C#;
   PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER : constant := 16#0000005F#;
   PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER : constant := 16#00000060#;
   PRODUCT_CORE_ARM : constant := 16#00000061#;
   PRODUCT_CORE_N : constant := 16#00000062#;
   PRODUCT_CORE_COUNTRYSPECIFIC : constant := 16#00000063#;
   PRODUCT_CORE_SINGLELANGUAGE : constant := 16#00000064#;
   PRODUCT_CORE : constant := 16#00000065#;
   PRODUCT_PROFESSIONAL_WMC : constant := 16#00000067#;
   PRODUCT_EMBEDDED_INDUSTRY_EVAL : constant := 16#00000069#;
   PRODUCT_EMBEDDED_INDUSTRY_E_EVAL : constant := 16#0000006A#;
   PRODUCT_EMBEDDED_EVAL : constant := 16#0000006B#;
   PRODUCT_EMBEDDED_E_EVAL : constant := 16#0000006C#;
   PRODUCT_NANO_SERVER : constant := 16#0000006D#;
   PRODUCT_CLOUD_STORAGE_SERVER : constant := 16#0000006E#;
   PRODUCT_CORE_CONNECTED : constant := 16#0000006F#;
   PRODUCT_PROFESSIONAL_STUDENT : constant := 16#00000070#;
   PRODUCT_CORE_CONNECTED_N : constant := 16#00000071#;
   PRODUCT_PROFESSIONAL_STUDENT_N : constant := 16#00000072#;
   PRODUCT_CORE_CONNECTED_SINGLELANGUAGE : constant := 16#00000073#;
   PRODUCT_CORE_CONNECTED_COUNTRYSPECIFIC : constant := 16#00000074#;
   PRODUCT_CONNECTED_CAR : constant := 16#00000075#;
   PRODUCT_INDUSTRY_HANDHELD : constant := 16#00000076#;
   PRODUCT_PPI_PRO : constant := 16#00000077#;
   PRODUCT_ARM64_SERVER : constant := 16#00000078#;
   PRODUCT_EDUCATION : constant := 16#00000079#;
   PRODUCT_EDUCATION_N : constant := 16#0000007A#;
   PRODUCT_IOTUAP : constant := 16#0000007B#;
   PRODUCT_CLOUD_HOST_INFRASTRUCTURE_SERVER : constant := 16#0000007C#;
   PRODUCT_ENTERPRISE_S : constant := 16#0000007D#;
   PRODUCT_ENTERPRISE_S_N : constant := 16#0000007E#;
   PRODUCT_PROFESSIONAL_S : constant := 16#0000007F#;
   PRODUCT_PROFESSIONAL_S_N : constant := 16#00000080#;
   PRODUCT_ENTERPRISE_S_EVALUATION : constant := 16#00000081#;
   PRODUCT_ENTERPRISE_S_N_EVALUATION : constant := 16#00000082#;
   PRODUCT_HOLOGRAPHIC : constant := 16#00000087#;
   PRODUCT_HOLOGRAPHIC_BUSINESS : constant := 16#00000088#;
   PRODUCT_PRO_SINGLE_LANGUAGE : constant := 16#0000008A#;
   PRODUCT_PRO_CHINA : constant := 16#0000008B#;
   PRODUCT_ENTERPRISE_SUBSCRIPTION : constant := 16#0000008C#;
   PRODUCT_ENTERPRISE_SUBSCRIPTION_N : constant := 16#0000008D#;
   PRODUCT_DATACENTER_NANO_SERVER : constant := 16#0000008F#;
   PRODUCT_STANDARD_NANO_SERVER : constant := 16#00000090#;
   PRODUCT_DATACENTER_A_SERVER_CORE : constant := 16#00000091#;
   PRODUCT_STANDARD_A_SERVER_CORE : constant := 16#00000092#;
   PRODUCT_DATACENTER_WS_SERVER_CORE : constant := 16#00000093#;
   PRODUCT_STANDARD_WS_SERVER_CORE : constant := 16#00000094#;
   PRODUCT_UTILITY_VM : constant := 16#00000095#;
   PRODUCT_DATACENTER_EVALUATION_SERVER_CORE : constant := 16#0000009F#;
   PRODUCT_STANDARD_EVALUATION_SERVER_CORE : constant := 16#000000A0#;
   PRODUCT_PRO_WORKSTATION : constant := 16#000000A1#;
   PRODUCT_PRO_WORKSTATION_N : constant := 16#000000A2#;
   PRODUCT_PRO_FOR_EDUCATION : constant := 16#000000A4#;
   PRODUCT_PRO_FOR_EDUCATION_N : constant := 16#000000A5#;
   PRODUCT_AZURE_SERVER_CORE : constant := 16#000000A8#;
   PRODUCT_AZURE_NANO_SERVER : constant := 16#000000A9#;
   PRODUCT_ENTERPRISEG : constant := 16#000000AB#;
   PRODUCT_ENTERPRISEGN : constant := 16#000000AC#;
   PRODUCT_SERVERRDSH : constant := 16#000000AF#;
   PRODUCT_CLOUD : constant := 16#000000B2#;
   PRODUCT_CLOUDN : constant := 16#000000B3#;
   PRODUCT_HUBOS : constant := 16#000000B4#;
   PRODUCT_ONECOREUPDATEOS : constant := 16#000000B6#;
   PRODUCT_CLOUDE : constant := 16#000000B7#;
   PRODUCT_ANDROMEDA : constant := 16#000000B8#;
   PRODUCT_IOTOS : constant := 16#000000B9#;
   PRODUCT_CLOUDEN : constant := 16#000000BA#;
   PRODUCT_IOTEDGEOS : constant := 16#000000BB#;
   PRODUCT_IOTENTERPRISE : constant := 16#000000BC#;
   PRODUCT_LITE : constant := 16#000000BD#;
   PRODUCT_IOTENTERPRISES : constant := 16#000000BF#;
   PRODUCT_XBOX_SYSTEMOS : constant := 16#000000C0#;
   PRODUCT_XBOX_NATIVEOS : constant := 16#000000C1#;
   PRODUCT_XBOX_GAMEOS : constant := 16#000000C2#;
   PRODUCT_XBOX_ERAOS : constant := 16#000000C3#;
   PRODUCT_XBOX_DURANGOHOSTOS : constant := 16#000000C4#;
   PRODUCT_XBOX_SCARLETTHOSTOS : constant := 16#000000C5#;
   PRODUCT_UNLICENSED : constant := 16#ABCDABCD#;
   LANG_NEUTRAL : constant := 16#00#;
   LANG_INVARIANT : constant := 16#7f#;
   LANG_AFRIKAANS : constant := 16#36#;
   LANG_ALBANIAN : constant := 16#1c#;
   LANG_ALSATIAN : constant := 16#84#;
   LANG_AMHARIC : constant := 16#5e#;
   LANG_ARABIC : constant := 16#01#;
   LANG_ARMENIAN : constant := 16#2b#;
   LANG_ASSAMESE : constant := 16#4d#;
   LANG_AZERI : constant := 16#2c#;
   LANG_AZERBAIJANI : constant := 16#2c#;
   LANG_BANGLA : constant := 16#45#;
   LANG_BASHKIR : constant := 16#6d#;
   LANG_BASQUE : constant := 16#2d#;
   LANG_BELARUSIAN : constant := 16#23#;
   LANG_BENGALI : constant := 16#45#;
   LANG_BRETON : constant := 16#7e#;
   LANG_BOSNIAN : constant := 16#1a#;
   LANG_BOSNIAN_NEUTRAL : constant := 16#781a#;
   LANG_BULGARIAN : constant := 16#02#;
   LANG_CATALAN : constant := 16#03#;
   LANG_CENTRAL_KURDISH : constant := 16#92#;
   LANG_CHEROKEE : constant := 16#5c#;
   LANG_CHINESE : constant := 16#04#;
   LANG_CHINESE_SIMPLIFIED : constant := 16#04#;
   LANG_CHINESE_TRADITIONAL : constant := 16#7c04#;
   LANG_CORSICAN : constant := 16#83#;
   LANG_CROATIAN : constant := 16#1a#;
   LANG_CZECH : constant := 16#05#;
   LANG_DANISH : constant := 16#06#;
   LANG_DARI : constant := 16#8c#;
   LANG_DIVEHI : constant := 16#65#;
   LANG_DUTCH : constant := 16#13#;
   LANG_ENGLISH : constant := 16#09#;
   LANG_ESTONIAN : constant := 16#25#;
   LANG_FAEROESE : constant := 16#38#;
   LANG_FARSI : constant := 16#29#;
   LANG_FILIPINO : constant := 16#64#;
   LANG_FINNISH : constant := 16#0b#;
   LANG_FRENCH : constant := 16#0c#;
   LANG_FRISIAN : constant := 16#62#;
   LANG_FULAH : constant := 16#67#;
   LANG_GALICIAN : constant := 16#56#;
   LANG_GEORGIAN : constant := 16#37#;
   LANG_GERMAN : constant := 16#07#;
   LANG_GREEK : constant := 16#08#;
   LANG_GREENLANDIC : constant := 16#6f#;
   LANG_GUJARATI : constant := 16#47#;
   LANG_HAUSA : constant := 16#68#;
   LANG_HAWAIIAN : constant := 16#75#;
   LANG_HEBREW : constant := 16#0d#;
   LANG_HINDI : constant := 16#39#;
   LANG_HUNGARIAN : constant := 16#0e#;
   LANG_ICELANDIC : constant := 16#0f#;
   LANG_IGBO : constant := 16#70#;
   LANG_INDONESIAN : constant := 16#21#;
   LANG_INUKTITUT : constant := 16#5d#;
   LANG_IRISH : constant := 16#3c#;
   LANG_ITALIAN : constant := 16#10#;
   LANG_JAPANESE : constant := 16#11#;
   LANG_KANNADA : constant := 16#4b#;
   LANG_KASHMIRI : constant := 16#60#;
   LANG_KAZAK : constant := 16#3f#;
   LANG_KHMER : constant := 16#53#;
   LANG_KICHE : constant := 16#86#;
   LANG_KINYARWANDA : constant := 16#87#;
   LANG_KONKANI : constant := 16#57#;
   LANG_KOREAN : constant := 16#12#;
   LANG_KYRGYZ : constant := 16#40#;
   LANG_LAO : constant := 16#54#;
   LANG_LATVIAN : constant := 16#26#;
   LANG_LITHUANIAN : constant := 16#27#;
   LANG_LOWER_SORBIAN : constant := 16#2e#;
   LANG_LUXEMBOURGISH : constant := 16#6e#;
   LANG_MACEDONIAN : constant := 16#2f#;
   LANG_MALAY : constant := 16#3e#;
   LANG_MALAYALAM : constant := 16#4c#;
   LANG_MALTESE : constant := 16#3a#;
   LANG_MANIPURI : constant := 16#58#;
   LANG_MAORI : constant := 16#81#;
   LANG_MAPUDUNGUN : constant := 16#7a#;
   LANG_MARATHI : constant := 16#4e#;
   LANG_MOHAWK : constant := 16#7c#;
   LANG_MONGOLIAN : constant := 16#50#;
   LANG_NEPALI : constant := 16#61#;
   LANG_NORWEGIAN : constant := 16#14#;
   LANG_OCCITAN : constant := 16#82#;
   LANG_ODIA : constant := 16#48#;
   LANG_ORIYA : constant := 16#48#;
   LANG_PASHTO : constant := 16#63#;
   LANG_PERSIAN : constant := 16#29#;
   LANG_POLISH : constant := 16#15#;
   LANG_PORTUGUESE : constant := 16#16#;
   LANG_PULAR : constant := 16#67#;
   LANG_PUNJABI : constant := 16#46#;
   LANG_QUECHUA : constant := 16#6b#;
   LANG_ROMANIAN : constant := 16#18#;
   LANG_ROMANSH : constant := 16#17#;
   LANG_RUSSIAN : constant := 16#19#;
   LANG_SAKHA : constant := 16#85#;
   LANG_SAMI : constant := 16#3b#;
   LANG_SANSKRIT : constant := 16#4f#;
   LANG_SCOTTISH_GAELIC : constant := 16#91#;
   LANG_SERBIAN : constant := 16#1a#;
   LANG_SERBIAN_NEUTRAL : constant := 16#7c1a#;
   LANG_SINDHI : constant := 16#59#;
   LANG_SINHALESE : constant := 16#5b#;
   LANG_SLOVAK : constant := 16#1b#;
   LANG_SLOVENIAN : constant := 16#24#;
   LANG_SOTHO : constant := 16#6c#;
   LANG_SPANISH : constant := 16#0a#;
   LANG_SWAHILI : constant := 16#41#;
   LANG_SWEDISH : constant := 16#1d#;
   LANG_SYRIAC : constant := 16#5a#;
   LANG_TAJIK : constant := 16#28#;
   LANG_TAMAZIGHT : constant := 16#5f#;
   LANG_TAMIL : constant := 16#49#;
   LANG_TATAR : constant := 16#44#;
   LANG_TELUGU : constant := 16#4a#;
   LANG_THAI : constant := 16#1e#;
   LANG_TIBETAN : constant := 16#51#;
   LANG_TIGRIGNA : constant := 16#73#;
   LANG_TIGRINYA : constant := 16#73#;
   LANG_TSWANA : constant := 16#32#;
   LANG_TURKISH : constant := 16#1f#;
   LANG_TURKMEN : constant := 16#42#;
   LANG_UIGHUR : constant := 16#80#;
   LANG_UKRAINIAN : constant := 16#22#;
   LANG_UPPER_SORBIAN : constant := 16#2e#;
   LANG_URDU : constant := 16#20#;
   LANG_UZBEK : constant := 16#43#;
   LANG_VALENCIAN : constant := 16#03#;
   LANG_VIETNAMESE : constant := 16#2a#;
   LANG_WELSH : constant := 16#52#;
   LANG_WOLOF : constant := 16#88#;
   LANG_XHOSA : constant := 16#34#;
   LANG_YAKUT : constant := 16#85#;
   LANG_YI : constant := 16#78#;
   LANG_YORUBA : constant := 16#6a#;
   LANG_ZULU : constant := 16#35#;
   SUBLANG_NEUTRAL : constant := 16#00#;
   SUBLANG_DEFAULT : constant := 16#01#;
   SUBLANG_SYS_DEFAULT : constant := 16#02#;
   SUBLANG_CUSTOM_DEFAULT : constant := 16#03#;
   SUBLANG_CUSTOM_UNSPECIFIED : constant := 16#04#;
   SUBLANG_UI_CUSTOM_DEFAULT : constant := 16#05#;
   SUBLANG_AFRIKAANS_SOUTH_AFRICA : constant := 16#01#;
   SUBLANG_ALBANIAN_ALBANIA : constant := 16#01#;
   SUBLANG_ALSATIAN_FRANCE : constant := 16#01#;
   SUBLANG_AMHARIC_ETHIOPIA : constant := 16#01#;
   SUBLANG_ARABIC_SAUDI_ARABIA : constant := 16#01#;
   SUBLANG_ARABIC_IRAQ : constant := 16#02#;
   SUBLANG_ARABIC_EGYPT : constant := 16#03#;
   SUBLANG_ARABIC_LIBYA : constant := 16#04#;
   SUBLANG_ARABIC_ALGERIA : constant := 16#05#;
   SUBLANG_ARABIC_MOROCCO : constant := 16#06#;
   SUBLANG_ARABIC_TUNISIA : constant := 16#07#;
   SUBLANG_ARABIC_OMAN : constant := 16#08#;
   SUBLANG_ARABIC_YEMEN : constant := 16#09#;
   SUBLANG_ARABIC_SYRIA : constant := 16#0a#;
   SUBLANG_ARABIC_JORDAN : constant := 16#0b#;
   SUBLANG_ARABIC_LEBANON : constant := 16#0c#;
   SUBLANG_ARABIC_KUWAIT : constant := 16#0d#;
   SUBLANG_ARABIC_UAE : constant := 16#0e#;
   SUBLANG_ARABIC_BAHRAIN : constant := 16#0f#;
   SUBLANG_ARABIC_QATAR : constant := 16#10#;
   SUBLANG_ARMENIAN_ARMENIA : constant := 16#01#;
   SUBLANG_ASSAMESE_INDIA : constant := 16#01#;
   SUBLANG_AZERI_LATIN : constant := 16#01#;
   SUBLANG_AZERI_CYRILLIC : constant := 16#02#;
   SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN : constant := 16#01#;
   SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC : constant := 16#02#;
   SUBLANG_BANGLA_INDIA : constant := 16#01#;
   SUBLANG_BANGLA_BANGLADESH : constant := 16#02#;
   SUBLANG_BASHKIR_RUSSIA : constant := 16#01#;
   SUBLANG_BASQUE_BASQUE : constant := 16#01#;
   SUBLANG_BELARUSIAN_BELARUS : constant := 16#01#;
   SUBLANG_BENGALI_INDIA : constant := 16#01#;
   SUBLANG_BENGALI_BANGLADESH : constant := 16#02#;
   SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN : constant := 16#05#;
   SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC : constant := 16#08#;
   SUBLANG_BRETON_FRANCE : constant := 16#01#;
   SUBLANG_BULGARIAN_BULGARIA : constant := 16#01#;
   SUBLANG_CATALAN_CATALAN : constant := 16#01#;
   SUBLANG_CENTRAL_KURDISH_IRAQ : constant := 16#01#;
   SUBLANG_CHEROKEE_CHEROKEE : constant := 16#01#;
   SUBLANG_CHINESE_TRADITIONAL : constant := 16#01#;
   SUBLANG_CHINESE_SIMPLIFIED : constant := 16#02#;
   SUBLANG_CHINESE_HONGKONG : constant := 16#03#;
   SUBLANG_CHINESE_SINGAPORE : constant := 16#04#;
   SUBLANG_CHINESE_MACAU : constant := 16#05#;
   SUBLANG_CORSICAN_FRANCE : constant := 16#01#;
   SUBLANG_CZECH_CZECH_REPUBLIC : constant := 16#01#;
   SUBLANG_CROATIAN_CROATIA : constant := 16#01#;
   SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN : constant := 16#04#;
   SUBLANG_DANISH_DENMARK : constant := 16#01#;
   SUBLANG_DARI_AFGHANISTAN : constant := 16#01#;
   SUBLANG_DIVEHI_MALDIVES : constant := 16#01#;
   SUBLANG_DUTCH : constant := 16#01#;
   SUBLANG_DUTCH_BELGIAN : constant := 16#02#;
   SUBLANG_ENGLISH_US : constant := 16#01#;
   SUBLANG_ENGLISH_UK : constant := 16#02#;
   SUBLANG_ENGLISH_AUS : constant := 16#03#;
   SUBLANG_ENGLISH_CAN : constant := 16#04#;
   SUBLANG_ENGLISH_NZ : constant := 16#05#;
   SUBLANG_ENGLISH_EIRE : constant := 16#06#;
   SUBLANG_ENGLISH_SOUTH_AFRICA : constant := 16#07#;
   SUBLANG_ENGLISH_JAMAICA : constant := 16#08#;
   SUBLANG_ENGLISH_CARIBBEAN : constant := 16#09#;
   SUBLANG_ENGLISH_BELIZE : constant := 16#0a#;
   SUBLANG_ENGLISH_TRINIDAD : constant := 16#0b#;
   SUBLANG_ENGLISH_ZIMBABWE : constant := 16#0c#;
   SUBLANG_ENGLISH_PHILIPPINES : constant := 16#0d#;
   SUBLANG_ENGLISH_INDIA : constant := 16#10#;
   SUBLANG_ENGLISH_MALAYSIA : constant := 16#11#;
   SUBLANG_ENGLISH_SINGAPORE : constant := 16#12#;
   SUBLANG_ESTONIAN_ESTONIA : constant := 16#01#;
   SUBLANG_FAEROESE_FAROE_ISLANDS : constant := 16#01#;
   SUBLANG_FILIPINO_PHILIPPINES : constant := 16#01#;
   SUBLANG_FINNISH_FINLAND : constant := 16#01#;
   SUBLANG_FRENCH : constant := 16#01#;
   SUBLANG_FRENCH_BELGIAN : constant := 16#02#;
   SUBLANG_FRENCH_CANADIAN : constant := 16#03#;
   SUBLANG_FRENCH_SWISS : constant := 16#04#;
   SUBLANG_FRENCH_LUXEMBOURG : constant := 16#05#;
   SUBLANG_FRENCH_MONACO : constant := 16#06#;
   SUBLANG_FRISIAN_NETHERLANDS : constant := 16#01#;
   SUBLANG_FULAH_SENEGAL : constant := 16#02#;
   SUBLANG_GALICIAN_GALICIAN : constant := 16#01#;
   SUBLANG_GEORGIAN_GEORGIA : constant := 16#01#;
   SUBLANG_GERMAN : constant := 16#01#;
   SUBLANG_GERMAN_SWISS : constant := 16#02#;
   SUBLANG_GERMAN_AUSTRIAN : constant := 16#03#;
   SUBLANG_GERMAN_LUXEMBOURG : constant := 16#04#;
   SUBLANG_GERMAN_LIECHTENSTEIN : constant := 16#05#;
   SUBLANG_GREEK_GREECE : constant := 16#01#;
   SUBLANG_GREENLANDIC_GREENLAND : constant := 16#01#;
   SUBLANG_GUJARATI_INDIA : constant := 16#01#;
   SUBLANG_HAUSA_NIGERIA_LATIN : constant := 16#01#;
   SUBLANG_HAWAIIAN_US : constant := 16#01#;
   SUBLANG_HEBREW_ISRAEL : constant := 16#01#;
   SUBLANG_HINDI_INDIA : constant := 16#01#;
   SUBLANG_HUNGARIAN_HUNGARY : constant := 16#01#;
   SUBLANG_ICELANDIC_ICELAND : constant := 16#01#;
   SUBLANG_IGBO_NIGERIA : constant := 16#01#;
   SUBLANG_INDONESIAN_INDONESIA : constant := 16#01#;
   SUBLANG_INUKTITUT_CANADA : constant := 16#01#;
   SUBLANG_INUKTITUT_CANADA_LATIN : constant := 16#02#;
   SUBLANG_IRISH_IRELAND : constant := 16#02#;
   SUBLANG_ITALIAN : constant := 16#01#;
   SUBLANG_ITALIAN_SWISS : constant := 16#02#;
   SUBLANG_JAPANESE_JAPAN : constant := 16#01#;
   SUBLANG_KANNADA_INDIA : constant := 16#01#;
   SUBLANG_KASHMIRI_SASIA : constant := 16#02#;
   SUBLANG_KASHMIRI_INDIA : constant := 16#02#;
   SUBLANG_KAZAK_KAZAKHSTAN : constant := 16#01#;
   SUBLANG_KHMER_CAMBODIA : constant := 16#01#;
   SUBLANG_KICHE_GUATEMALA : constant := 16#01#;
   SUBLANG_KINYARWANDA_RWANDA : constant := 16#01#;
   SUBLANG_KONKANI_INDIA : constant := 16#01#;
   SUBLANG_KOREAN : constant := 16#01#;
   SUBLANG_KYRGYZ_KYRGYZSTAN : constant := 16#01#;
   SUBLANG_LAO_LAO : constant := 16#01#;
   SUBLANG_LATVIAN_LATVIA : constant := 16#01#;
   SUBLANG_LITHUANIAN : constant := 16#01#;
   SUBLANG_LOWER_SORBIAN_GERMANY : constant := 16#02#;
   SUBLANG_LUXEMBOURGISH_LUXEMBOURG : constant := 16#01#;
   SUBLANG_MACEDONIAN_MACEDONIA : constant := 16#01#;
   SUBLANG_MALAY_MALAYSIA : constant := 16#01#;
   SUBLANG_MALAY_BRUNEI_DARUSSALAM : constant := 16#02#;
   SUBLANG_MALAYALAM_INDIA : constant := 16#01#;
   SUBLANG_MALTESE_MALTA : constant := 16#01#;
   SUBLANG_MAORI_NEW_ZEALAND : constant := 16#01#;
   SUBLANG_MAPUDUNGUN_CHILE : constant := 16#01#;
   SUBLANG_MARATHI_INDIA : constant := 16#01#;
   SUBLANG_MOHAWK_MOHAWK : constant := 16#01#;
   SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA : constant := 16#01#;
   SUBLANG_MONGOLIAN_PRC : constant := 16#02#;
   SUBLANG_NEPALI_INDIA : constant := 16#02#;
   SUBLANG_NEPALI_NEPAL : constant := 16#01#;
   SUBLANG_NORWEGIAN_BOKMAL : constant := 16#01#;
   SUBLANG_NORWEGIAN_NYNORSK : constant := 16#02#;
   SUBLANG_OCCITAN_FRANCE : constant := 16#01#;
   SUBLANG_ODIA_INDIA : constant := 16#01#;
   SUBLANG_ORIYA_INDIA : constant := 16#01#;
   SUBLANG_PASHTO_AFGHANISTAN : constant := 16#01#;
   SUBLANG_PERSIAN_IRAN : constant := 16#01#;
   SUBLANG_POLISH_POLAND : constant := 16#01#;
   SUBLANG_PORTUGUESE : constant := 16#02#;
   SUBLANG_PORTUGUESE_BRAZILIAN : constant := 16#01#;
   SUBLANG_PULAR_SENEGAL : constant := 16#02#;
   SUBLANG_PUNJABI_INDIA : constant := 16#01#;
   SUBLANG_PUNJABI_PAKISTAN : constant := 16#02#;
   SUBLANG_QUECHUA_BOLIVIA : constant := 16#01#;
   SUBLANG_QUECHUA_ECUADOR : constant := 16#02#;
   SUBLANG_QUECHUA_PERU : constant := 16#03#;
   SUBLANG_ROMANIAN_ROMANIA : constant := 16#01#;
   SUBLANG_ROMANSH_SWITZERLAND : constant := 16#01#;
   SUBLANG_RUSSIAN_RUSSIA : constant := 16#01#;
   SUBLANG_SAKHA_RUSSIA : constant := 16#01#;
   SUBLANG_SAMI_NORTHERN_NORWAY : constant := 16#01#;
   SUBLANG_SAMI_NORTHERN_SWEDEN : constant := 16#02#;
   SUBLANG_SAMI_NORTHERN_FINLAND : constant := 16#03#;
   SUBLANG_SAMI_LULE_NORWAY : constant := 16#04#;
   SUBLANG_SAMI_LULE_SWEDEN : constant := 16#05#;
   SUBLANG_SAMI_SOUTHERN_NORWAY : constant := 16#06#;
   SUBLANG_SAMI_SOUTHERN_SWEDEN : constant := 16#07#;
   SUBLANG_SAMI_SKOLT_FINLAND : constant := 16#08#;
   SUBLANG_SAMI_INARI_FINLAND : constant := 16#09#;
   SUBLANG_SANSKRIT_INDIA : constant := 16#01#;
   SUBLANG_SCOTTISH_GAELIC : constant := 16#01#;
   SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN : constant := 16#06#;
   SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC : constant := 16#07#;
   SUBLANG_SERBIAN_MONTENEGRO_LATIN : constant := 16#0b#;
   SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC : constant := 16#0c#;
   SUBLANG_SERBIAN_SERBIA_LATIN : constant := 16#09#;
   SUBLANG_SERBIAN_SERBIA_CYRILLIC : constant := 16#0a#;
   SUBLANG_SERBIAN_CROATIA : constant := 16#01#;
   SUBLANG_SERBIAN_LATIN : constant := 16#02#;
   SUBLANG_SERBIAN_CYRILLIC : constant := 16#03#;
   SUBLANG_SINDHI_INDIA : constant := 16#01#;
   SUBLANG_SINDHI_PAKISTAN : constant := 16#02#;
   SUBLANG_SINDHI_AFGHANISTAN : constant := 16#02#;
   SUBLANG_SINHALESE_SRI_LANKA : constant := 16#01#;
   SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA : constant := 16#01#;
   SUBLANG_SLOVAK_SLOVAKIA : constant := 16#01#;
   SUBLANG_SLOVENIAN_SLOVENIA : constant := 16#01#;
   SUBLANG_SPANISH : constant := 16#01#;
   SUBLANG_SPANISH_MEXICAN : constant := 16#02#;
   SUBLANG_SPANISH_MODERN : constant := 16#03#;
   SUBLANG_SPANISH_GUATEMALA : constant := 16#04#;
   SUBLANG_SPANISH_COSTA_RICA : constant := 16#05#;
   SUBLANG_SPANISH_PANAMA : constant := 16#06#;
   SUBLANG_SPANISH_DOMINICAN_REPUBLIC : constant := 16#07#;
   SUBLANG_SPANISH_VENEZUELA : constant := 16#08#;
   SUBLANG_SPANISH_COLOMBIA : constant := 16#09#;
   SUBLANG_SPANISH_PERU : constant := 16#0a#;
   SUBLANG_SPANISH_ARGENTINA : constant := 16#0b#;
   SUBLANG_SPANISH_ECUADOR : constant := 16#0c#;
   SUBLANG_SPANISH_CHILE : constant := 16#0d#;
   SUBLANG_SPANISH_URUGUAY : constant := 16#0e#;
   SUBLANG_SPANISH_PARAGUAY : constant := 16#0f#;
   SUBLANG_SPANISH_BOLIVIA : constant := 16#10#;
   SUBLANG_SPANISH_EL_SALVADOR : constant := 16#11#;
   SUBLANG_SPANISH_HONDURAS : constant := 16#12#;
   SUBLANG_SPANISH_NICARAGUA : constant := 16#13#;
   SUBLANG_SPANISH_PUERTO_RICO : constant := 16#14#;
   SUBLANG_SPANISH_US : constant := 16#15#;
   SUBLANG_SWAHILI_KENYA : constant := 16#01#;
   SUBLANG_SWEDISH : constant := 16#01#;
   SUBLANG_SWEDISH_FINLAND : constant := 16#02#;
   SUBLANG_SYRIAC_SYRIA : constant := 16#01#;
   SUBLANG_TAJIK_TAJIKISTAN : constant := 16#01#;
   SUBLANG_TAMAZIGHT_ALGERIA_LATIN : constant := 16#02#;
   SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH : constant := 16#04#;
   SUBLANG_TAMIL_INDIA : constant := 16#01#;
   SUBLANG_TAMIL_SRI_LANKA : constant := 16#02#;
   SUBLANG_TATAR_RUSSIA : constant := 16#01#;
   SUBLANG_TELUGU_INDIA : constant := 16#01#;
   SUBLANG_THAI_THAILAND : constant := 16#01#;
   SUBLANG_TIBETAN_PRC : constant := 16#01#;
   SUBLANG_TIGRIGNA_ERITREA : constant := 16#02#;
   SUBLANG_TIGRINYA_ERITREA : constant := 16#02#;
   SUBLANG_TIGRINYA_ETHIOPIA : constant := 16#01#;
   SUBLANG_TSWANA_BOTSWANA : constant := 16#02#;
   SUBLANG_TSWANA_SOUTH_AFRICA : constant := 16#01#;
   SUBLANG_TURKISH_TURKEY : constant := 16#01#;
   SUBLANG_TURKMEN_TURKMENISTAN : constant := 16#01#;
   SUBLANG_UIGHUR_PRC : constant := 16#01#;
   SUBLANG_UKRAINIAN_UKRAINE : constant := 16#01#;
   SUBLANG_UPPER_SORBIAN_GERMANY : constant := 16#01#;
   SUBLANG_URDU_PAKISTAN : constant := 16#01#;
   SUBLANG_URDU_INDIA : constant := 16#02#;
   SUBLANG_UZBEK_LATIN : constant := 16#01#;
   SUBLANG_UZBEK_CYRILLIC : constant := 16#02#;
   SUBLANG_VALENCIAN_VALENCIA : constant := 16#02#;
   SUBLANG_VIETNAMESE_VIETNAM : constant := 16#01#;
   SUBLANG_WELSH_UNITED_KINGDOM : constant := 16#01#;
   SUBLANG_WOLOF_SENEGAL : constant := 16#01#;
   SUBLANG_XHOSA_SOUTH_AFRICA : constant := 16#01#;
   SUBLANG_YAKUT_RUSSIA : constant := 16#01#;
   SUBLANG_YI_PRC : constant := 16#01#;
   SUBLANG_YORUBA_NIGERIA : constant := 16#01#;
   SUBLANG_ZULU_SOUTH_AFRICA : constant := 16#01#;
   SORT_DEFAULT : constant := 16#0#;
   SORT_INVARIANT_MATH : constant := 16#1#;
   SORT_JAPANESE_XJIS : constant := 16#0#;
   SORT_JAPANESE_UNICODE : constant := 16#1#;
   SORT_JAPANESE_RADICALSTROKE : constant := 16#4#;
   SORT_CHINESE_BIG5 : constant := 16#0#;
   SORT_CHINESE_PRCP : constant := 16#0#;
   SORT_CHINESE_UNICODE : constant := 16#1#;
   SORT_CHINESE_PRC : constant := 16#2#;
   SORT_CHINESE_BOPOMOFO : constant := 16#3#;
   SORT_CHINESE_RADICALSTROKE : constant := 16#4#;
   SORT_KOREAN_KSC : constant := 16#0#;
   SORT_KOREAN_UNICODE : constant := 16#1#;
   SORT_GERMAN_PHONE_BOOK : constant := 16#1#;
   SORT_HUNGARIAN_DEFAULT : constant := 16#0#;
   SORT_HUNGARIAN_TECHNICAL : constant := 16#1#;
   SORT_GEORGIAN_TRADITIONAL : constant := 16#0#;
   SORT_GEORGIAN_MODERN : constant := 16#1#;
   NLS_VALID_LOCALE_MASK : constant := 16#000fffff#;
   LOCALE_NAME_MAX_LENGTH : constant := 85;
   LOCALE_TRANSIENT_KEYBOARD1 : constant := 16#2000#;
   LOCALE_TRANSIENT_KEYBOARD2 : constant := 16#2400#;
   LOCALE_TRANSIENT_KEYBOARD3 : constant := 16#2800#;
   LOCALE_TRANSIENT_KEYBOARD4 : constant := 16#2c00#;
   STATUS_WAIT_0 : constant := 16#00000000#;
   STATUS_ABANDONED_WAIT_0 : constant := 16#00000080#;
   STATUS_USER_APC : constant := 16#000000C0#;
   STATUS_TIMEOUT : constant := 16#00000102#;
   STATUS_PENDING : constant := 16#00000103#;
   DBG_EXCEPTION_HANDLED : constant := 16#00010001#;
   DBG_CONTINUE : constant := 16#00010002#;
   STATUS_SEGMENT_NOTIFICATION : constant := 16#40000005#;
   STATUS_FATAL_APP_EXIT : constant := 16#40000015#;
   DBG_REPLY_LATER : constant := 16#40010001#;
   DBG_TERMINATE_THREAD : constant := 16#40010003#;
   DBG_TERMINATE_PROCESS : constant := 16#40010004#;
   DBG_CONTROL_C : constant := 16#40010005#;
   DBG_PRINTEXCEPTION_C : constant := 16#40010006#;
   DBG_RIPEXCEPTION : constant := 16#40010007#;
   DBG_CONTROL_BREAK : constant := 16#40010008#;
   DBG_COMMAND_EXCEPTION : constant := 16#40010009#;
   DBG_PRINTEXCEPTION_WIDE_C : constant := 16#4001000A#;
   STATUS_GUARD_PAGE_VIOLATION : constant := 16#80000001#;
   STATUS_DATATYPE_MISALIGNMENT : constant := 16#80000002#;
   STATUS_BREAKPOINT : constant := 16#80000003#;
   STATUS_SINGLE_STEP : constant := 16#80000004#;
   STATUS_LONGJUMP : constant := 16#80000026#;
   STATUS_UNWIND_CONSOLIDATE : constant := 16#80000029#;
   DBG_EXCEPTION_NOT_HANDLED : constant := 16#80010001#;
   STATUS_ACCESS_VIOLATION : constant := 16#C0000005#;
   STATUS_IN_PAGE_ERROR : constant := 16#C0000006#;
   STATUS_INVALID_HANDLE : constant := 16#C0000008#;
   STATUS_INVALID_PARAMETER : constant := 16#C000000D#;
   STATUS_NO_MEMORY : constant := 16#C0000017#;
   STATUS_ILLEGAL_INSTRUCTION : constant := 16#C000001D#;
   STATUS_NONCONTINUABLE_EXCEPTION : constant := 16#C0000025#;
   STATUS_INVALID_DISPOSITION : constant := 16#C0000026#;
   STATUS_ARRAY_BOUNDS_EXCEEDED : constant := 16#C000008C#;
   STATUS_FLOAT_DENORMAL_OPERAND : constant := 16#C000008D#;
   STATUS_FLOAT_DIVIDE_BY_ZERO : constant := 16#C000008E#;
   STATUS_FLOAT_INEXACT_RESULT : constant := 16#C000008F#;
   STATUS_FLOAT_INVALID_OPERATION : constant := 16#C0000090#;
   STATUS_FLOAT_OVERFLOW : constant := 16#C0000091#;
   STATUS_FLOAT_STACK_CHECK : constant := 16#C0000092#;
   STATUS_FLOAT_UNDERFLOW : constant := 16#C0000093#;
   STATUS_INTEGER_DIVIDE_BY_ZERO : constant := 16#C0000094#;
   STATUS_INTEGER_OVERFLOW : constant := 16#C0000095#;
   STATUS_PRIVILEGED_INSTRUCTION : constant := 16#C0000096#;
   STATUS_STACK_OVERFLOW : constant := 16#C00000FD#;
   STATUS_DLL_NOT_FOUND : constant := 16#C0000135#;
   STATUS_ORDINAL_NOT_FOUND : constant := 16#C0000138#;
   STATUS_ENTRYPOINT_NOT_FOUND : constant := 16#C0000139#;
   STATUS_CONTROL_C_EXIT : constant := 16#C000013A#;
   STATUS_DLL_INIT_FAILED : constant := 16#C0000142#;
   STATUS_CONTROL_STACK_VIOLATION : constant := 16#C00001B2#;
   STATUS_FLOAT_MULTIPLE_FAULTS : constant := 16#C00002B4#;
   STATUS_FLOAT_MULTIPLE_TRAPS : constant := 16#C00002B5#;
   STATUS_REG_NAT_CONSUMPTION : constant := 16#C00002C9#;
   STATUS_HEAP_CORRUPTION : constant := 16#C0000374#;
   STATUS_STACK_BUFFER_OVERRUN : constant := 16#C0000409#;
   STATUS_INVALID_CRUNTIME_PARAMETER : constant := 16#C0000417#;
   STATUS_ASSERTION_FAILURE : constant := 16#C0000420#;
   STATUS_ENCLAVE_VIOLATION : constant := 16#C00004A2#;
   STATUS_INTERRUPTED : constant := 16#C0000515#;
   STATUS_THREAD_NOT_RUNNING : constant := 16#C0000516#;
   STATUS_ALREADY_REGISTERED : constant := 16#C0000718#;
   STATUS_SXS_EARLY_DEACTIVATION : constant := 16#C015000F#;
   STATUS_SXS_INVALID_DEACTIVATION : constant := 16#C0150010#;
   MAXIMUM_WAIT_OBJECTS : constant := 64;
   EXCEPTION_READ_FAULT : constant := 0;
   EXCEPTION_WRITE_FAULT : constant := 1;
   EXCEPTION_EXECUTE_FAULT : constant := 8;
   CONTEXT_AMD64 : constant := 16#00100000#;
   CONTEXT_CONTROL : constant := ( Interfaces.C.Unsigned( CONTEXT_AMD64 ) or 16#00000001# );
   CONTEXT_INTEGER : constant := ( Interfaces.C.Unsigned( CONTEXT_AMD64 ) or 16#00000002# );
   CONTEXT_SEGMENTS : constant := ( Interfaces.C.Unsigned( CONTEXT_AMD64 ) or 16#00000004# );
   CONTEXT_FLOATING_POINT : constant := ( Interfaces.C.Unsigned( CONTEXT_AMD64 ) or 16#00000008# );
   CONTEXT_DEBUG_REGISTERS : constant := ( Interfaces.C.Unsigned( CONTEXT_AMD64 ) or 16#00000010# );
   CONTEXT_FULL : constant := ( Interfaces.C.Unsigned( CONTEXT_CONTROL )
       or Interfaces.C.Unsigned( CONTEXT_INTEGER )
       or Interfaces.C.Unsigned( CONTEXT_FLOATING_POINT ) );
   CONTEXT_ALL : constant := ( Interfaces.C.Unsigned( CONTEXT_CONTROL )
       or Interfaces.C.Unsigned( CONTEXT_INTEGER )
       or Interfaces.C.Unsigned( CONTEXT_SEGMENTS )
       or Interfaces.C.Unsigned( CONTEXT_FLOATING_POINT )
       or Interfaces.C.Unsigned( CONTEXT_DEBUG_REGISTERS ) );
   CONTEXT_XSTATE : constant := ( Interfaces.C.Unsigned( CONTEXT_AMD64 ) or 16#00000040# );
   CONTEXT_EXCEPTION_ACTIVE : constant := 16#08000000#;
   CONTEXT_SERVICE_ACTIVE : constant := 16#10000000#;
   CONTEXT_EXCEPTION_REQUEST : constant := 16#40000000#;
   CONTEXT_EXCEPTION_REPORTING : constant := 16#80000000#;
   INITIAL_MXCSR : constant := 16#1f80#;
   INITIAL_FPCSR : constant := 16#027f#;
   RUNTIME_FUNCTION_INDIRECT : constant := 16#1#;
   UNW_FLAG_NHANDLER : constant := 16#0#;
   UNW_FLAG_EHANDLER : constant := 16#1#;
   UNW_FLAG_UHANDLER : constant := 16#2#;
   UNW_FLAG_CHAININFO : constant := 16#4#;
   UNW_FLAG_NO_EPILOGUE : constant := 16#80000000#;
   UNWIND_CHAIN_LIMIT : constant := 32;
   UNWIND_HISTORY_TABLE_SIZE : constant := 12;
   WOW64_CONTEXT_i386 : constant := 16#00010000#;
   WOW64_CONTEXT_i486 : constant := 16#00010000#;
   WOW64_CONTEXT_CONTROL : constant := ( Interfaces.C.Unsigned( WOW64_CONTEXT_i386 ) or 16#00000001# );
   WOW64_CONTEXT_INTEGER : constant := ( Interfaces.C.Unsigned( WOW64_CONTEXT_i386 ) or 16#00000002# );
   WOW64_CONTEXT_SEGMENTS : constant := ( Interfaces.C.Unsigned( WOW64_CONTEXT_i386 ) or 16#00000004# );
   WOW64_CONTEXT_FLOATING_POINT : constant := ( Interfaces.C.Unsigned( WOW64_CONTEXT_i386 ) or 16#00000008# );
   WOW64_CONTEXT_DEBUG_REGISTERS : constant := ( Interfaces.C.Unsigned( WOW64_CONTEXT_i386 ) or 16#00000010# );
   WOW64_CONTEXT_EXTENDED_REGISTERS : constant := ( Interfaces.C.Unsigned( WOW64_CONTEXT_i386 ) or 16#00000020# );
   WOW64_CONTEXT_FULL : constant := ( Interfaces.C.Unsigned( WOW64_CONTEXT_CONTROL )
       or Interfaces.C.Unsigned( WOW64_CONTEXT_INTEGER )
       or Interfaces.C.Unsigned( WOW64_CONTEXT_SEGMENTS ) );
   WOW64_CONTEXT_ALL : constant := ( Interfaces.C.Unsigned( WOW64_CONTEXT_CONTROL )
       or Interfaces.C.Unsigned( WOW64_CONTEXT_INTEGER )
       or Interfaces.C.Unsigned( WOW64_CONTEXT_SEGMENTS )
       or Interfaces.C.Unsigned( WOW64_CONTEXT_FLOATING_POINT )
       or Interfaces.C.Unsigned( WOW64_CONTEXT_DEBUG_REGISTERS )
       or Interfaces.C.Unsigned( WOW64_CONTEXT_EXTENDED_REGISTERS ) );
   WOW64_CONTEXT_XSTATE : constant := ( Interfaces.C.Unsigned( WOW64_CONTEXT_i386 ) or 16#00000040# );
   WOW64_CONTEXT_EXCEPTION_ACTIVE : constant := 16#08000000#;
   WOW64_CONTEXT_SERVICE_ACTIVE : constant := 16#10000000#;
   WOW64_CONTEXT_EXCEPTION_REQUEST : constant := 16#40000000#;
   WOW64_CONTEXT_EXCEPTION_REPORTING : constant := 16#80000000#;
   WOW64_SIZE_OF_80387_REGISTERS : constant := 80;
   WOW64_MAXIMUM_SUPPORTED_EXTENSION : constant := 512;
   -- #include <pshpack4.h>
   -- #include <winnt.h>
   -- #include <poppack.h>
   -- #include <winnt.h>
   EXCEPTION_NONCONTINUABLE : constant := 16#1#;
   EXCEPTION_UNWINDING : constant := 16#2#;
   EXCEPTION_EXIT_UNWIND : constant := 16#4#;
   EXCEPTION_STACK_INVALID : constant := 16#8#;
   EXCEPTION_NESTED_CALL : constant := 16#10#;
   EXCEPTION_TARGET_UNWIND : constant := 16#20#;
   EXCEPTION_COLLIDED_UNWIND : constant := 16#40#;
   EXCEPTION_UNWIND : constant := ( Interfaces.C.Unsigned( EXCEPTION_UNWINDING )
       or Interfaces.C.Unsigned( EXCEPTION_EXIT_UNWIND )
       or Interfaces.C.Unsigned( EXCEPTION_TARGET_UNWIND )
       or Interfaces.C.Unsigned( EXCEPTION_COLLIDED_UNWIND ) );
   EXCEPTION_MAXIMUM_PARAMETERS : constant := 15;
   DELETE : constant := 16#00010000#;
   READ_CONTROL : constant := 16#00020000#;
   WRITE_DAC : constant := 16#00040000#;
   WRITE_OWNER : constant := 16#00080000#;
   SYNCHRONIZE : constant := 16#00100000#;
   STANDARD_RIGHTS_REQUIRED : constant := 16#000F0000#;
   STANDARD_RIGHTS_READ : constant := READ_CONTROL;
   STANDARD_RIGHTS_WRITE : constant := READ_CONTROL;
   STANDARD_RIGHTS_EXECUTE : constant := READ_CONTROL;
   STANDARD_RIGHTS_ALL : constant := 16#001F0000#;
   SPECIFIC_RIGHTS_ALL : constant := 16#0000FFFF#;
   ACCESS_SYSTEM_SECURITY : constant := 16#01000000#;
   MAXIMUM_ALLOWED : constant := 16#02000000#;
   GENERIC_READ : constant := 16#80000000#;
   GENERIC_WRITE : constant := 16#40000000#;
   GENERIC_EXECUTE : constant := 16#20000000#;
   GENERIC_ALL : constant := 16#10000000#;
   -- #include <pshpack4.h>
   -- #include <winnt.h>
   -- #include <poppack.h>
   -- #include <winnt.h>
   SID_REVISION : constant := 1;
   SID_MAX_SUB_AUTHORITIES : constant := 15;
   SID_RECOMMENDED_SUB_AUTHORITIES : constant := 1;
   SID_HASH_SIZE : constant := 32;
   SECURITY_NULL_RID : constant := 16#00000000#;
   SECURITY_WORLD_RID : constant := 16#00000000#;
   SECURITY_LOCAL_RID : constant := 16#00000000#;
   SECURITY_LOCAL_LOGON_RID : constant := 16#00000001#;
   SECURITY_CREATOR_OWNER_RID : constant := 16#00000000#;
   SECURITY_CREATOR_GROUP_RID : constant := 16#00000001#;
   SECURITY_CREATOR_OWNER_SERVER_RID : constant := 16#00000002#;
   SECURITY_CREATOR_GROUP_SERVER_RID : constant := 16#00000003#;
   SECURITY_CREATOR_OWNER_RIGHTS_RID : constant := 16#00000004#;
   SECURITY_DIALUP_RID : constant := 16#00000001#;
   SECURITY_NETWORK_RID : constant := 16#00000002#;
   SECURITY_BATCH_RID : constant := 16#00000003#;
   SECURITY_INTERACTIVE_RID : constant := 16#00000004#;
   SECURITY_LOGON_IDS_RID : constant := 16#00000005#;
   SECURITY_LOGON_IDS_RID_COUNT : constant := 3;
   SECURITY_SERVICE_RID : constant := 16#00000006#;
   SECURITY_ANONYMOUS_LOGON_RID : constant := 16#00000007#;
   SECURITY_PROXY_RID : constant := 16#00000008#;
   SECURITY_ENTERPRISE_CONTROLLERS_RID : constant := 16#00000009#;
   SECURITY_PRINCIPAL_SELF_RID : constant := 16#0000000A#;
   SECURITY_AUTHENTICATED_USER_RID : constant := 16#0000000B#;
   SECURITY_RESTRICTED_CODE_RID : constant := 16#0000000C#;
   SECURITY_TERMINAL_SERVER_RID : constant := 16#0000000D#;
   SECURITY_REMOTE_LOGON_RID : constant := 16#0000000E#;
   SECURITY_THIS_ORGANIZATION_RID : constant := 16#0000000F#;
   SECURITY_IUSER_RID : constant := 16#00000011#;
   SECURITY_LOCAL_SYSTEM_RID : constant := 16#00000012#;
   SECURITY_LOCAL_SERVICE_RID : constant := 16#00000013#;
   SECURITY_NETWORK_SERVICE_RID : constant := 16#00000014#;
   SECURITY_NT_NON_UNIQUE : constant := 16#00000015#;
   SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT : constant := 3;
   SECURITY_ENTERPRISE_READONLY_CONTROLLERS_RID : constant := 16#00000016#;
   SECURITY_BUILTIN_DOMAIN_RID : constant := 16#00000020#;
   SECURITY_WRITE_RESTRICTED_CODE_RID : constant := 16#00000021#;
   SECURITY_PACKAGE_BASE_RID : constant := 16#00000040#;
   SECURITY_PACKAGE_RID_COUNT : constant := 2;
   SECURITY_PACKAGE_NTLM_RID : constant := 16#0000000A#;
   SECURITY_PACKAGE_SCHANNEL_RID : constant := 16#0000000E#;
   SECURITY_PACKAGE_DIGEST_RID : constant := 16#00000015#;
   SECURITY_CRED_TYPE_BASE_RID : constant := 16#00000041#;
   SECURITY_CRED_TYPE_RID_COUNT : constant := 2;
   SECURITY_CRED_TYPE_THIS_ORG_CERT_RID : constant := 16#00000001#;
   SECURITY_MIN_BASE_RID : constant := 16#00000050#;
   SECURITY_SERVICE_ID_BASE_RID : constant := 16#00000050#;
   SECURITY_SERVICE_ID_RID_COUNT : constant := 6;
   SECURITY_RESERVED_ID_BASE_RID : constant := 16#00000051#;
   SECURITY_APPPOOL_ID_BASE_RID : constant := 16#00000052#;
   SECURITY_APPPOOL_ID_RID_COUNT : constant := 6;
   SECURITY_VIRTUALSERVER_ID_BASE_RID : constant := 16#00000053#;
   SECURITY_VIRTUALSERVER_ID_RID_COUNT : constant := 6;
   SECURITY_USERMODEDRIVERHOST_ID_BASE_RID : constant := 16#00000054#;
   SECURITY_USERMODEDRIVERHOST_ID_RID_COUNT : constant := 6;
   SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_BASE_RID : constant := 16#00000055#;
   SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_RID_COUNT : constant := 6;
   SECURITY_WMIHOST_ID_BASE_RID : constant := 16#00000056#;
   SECURITY_WMIHOST_ID_RID_COUNT : constant := 6;
   SECURITY_TASK_ID_BASE_RID : constant := 16#00000057#;
   SECURITY_NFS_ID_BASE_RID : constant := 16#00000058#;
   SECURITY_COM_ID_BASE_RID : constant := 16#00000059#;
   SECURITY_WINDOW_MANAGER_BASE_RID : constant := 16#0000005A#;
   SECURITY_RDV_GFX_BASE_RID : constant := 16#0000005B#;
   SECURITY_DASHOST_ID_BASE_RID : constant := 16#0000005C#;
   SECURITY_DASHOST_ID_RID_COUNT : constant := 6;
   SECURITY_USERMANAGER_ID_BASE_RID : constant := 16#0000005D#;
   SECURITY_USERMANAGER_ID_RID_COUNT : constant := 6;
   SECURITY_WINRM_ID_BASE_RID : constant := 16#0000005E#;
   SECURITY_WINRM_ID_RID_COUNT : constant := 6;
   SECURITY_CCG_ID_BASE_RID : constant := 16#0000005F#;
   SECURITY_UMFD_BASE_RID : constant := 16#00000060#;
   SECURITY_VIRTUALACCOUNT_ID_RID_COUNT : constant := 6;
   SECURITY_MAX_BASE_RID : constant := 16#0000006F#;
   SECURITY_MAX_ALWAYS_FILTERED : constant := 16#000003E7#;
   SECURITY_MIN_NEVER_FILTERED : constant := 16#000003E8#;
   SECURITY_OTHER_ORGANIZATION_RID : constant := 16#000003E8#;
   SECURITY_WINDOWSMOBILE_ID_BASE_RID : constant := 16#00000070#;
   SECURITY_INSTALLER_GROUP_CAPABILITY_BASE : constant := 16#20#;
   SECURITY_INSTALLER_GROUP_CAPABILITY_RID_COUNT : constant := 9;
   SECURITY_INSTALLER_CAPABILITY_RID_COUNT : constant := 10;
   SECURITY_LOCAL_ACCOUNT_RID : constant := 16#00000071#;
   SECURITY_LOCAL_ACCOUNT_AND_ADMIN_RID : constant := 16#00000072#;
   DOMAIN_GROUP_RID_AUTHORIZATION_DATA_IS_COMPOUNDED : constant := 16#000001F0#;
   DOMAIN_GROUP_RID_AUTHORIZATION_DATA_CONTAINS_CLAIMS : constant := 16#000001F1#;
   DOMAIN_GROUP_RID_ENTERPRISE_READONLY_DOMAIN_CONTROLLERS : constant := 16#000001F2#;
   FOREST_USER_RID_MAX : constant := 16#000001F3#;
   DOMAIN_USER_RID_ADMIN : constant := 16#000001F4#;
   DOMAIN_USER_RID_GUEST : constant := 16#000001F5#;
   DOMAIN_USER_RID_KRBTGT : constant := 16#000001F6#;
   DOMAIN_USER_RID_DEFAULT_ACCOUNT : constant := 16#000001F7#;
   DOMAIN_USER_RID_WDAG_ACCOUNT : constant := 16#000001F8#;
   DOMAIN_USER_RID_MAX : constant := 16#000003E7#;
   DOMAIN_GROUP_RID_ADMINS : constant := 16#00000200#;
   DOMAIN_GROUP_RID_USERS : constant := 16#00000201#;
   DOMAIN_GROUP_RID_GUESTS : constant := 16#00000202#;
   DOMAIN_GROUP_RID_COMPUTERS : constant := 16#00000203#;
   DOMAIN_GROUP_RID_CONTROLLERS : constant := 16#00000204#;
   DOMAIN_GROUP_RID_CERT_ADMINS : constant := 16#00000205#;
   DOMAIN_GROUP_RID_SCHEMA_ADMINS : constant := 16#00000206#;
   DOMAIN_GROUP_RID_ENTERPRISE_ADMINS : constant := 16#00000207#;
   DOMAIN_GROUP_RID_POLICY_ADMINS : constant := 16#00000208#;
   DOMAIN_GROUP_RID_READONLY_CONTROLLERS : constant := 16#00000209#;
   DOMAIN_GROUP_RID_CLONEABLE_CONTROLLERS : constant := 16#0000020A#;
   DOMAIN_GROUP_RID_CDC_RESERVED : constant := 16#0000020C#;
   DOMAIN_GROUP_RID_PROTECTED_USERS : constant := 16#0000020D#;
   DOMAIN_GROUP_RID_KEY_ADMINS : constant := 16#0000020E#;
   DOMAIN_GROUP_RID_ENTERPRISE_KEY_ADMINS : constant := 16#0000020F#;
   DOMAIN_ALIAS_RID_ADMINS : constant := 16#00000220#;
   DOMAIN_ALIAS_RID_USERS : constant := 16#00000221#;
   DOMAIN_ALIAS_RID_GUESTS : constant := 16#00000222#;
   DOMAIN_ALIAS_RID_POWER_USERS : constant := 16#00000223#;
   DOMAIN_ALIAS_RID_ACCOUNT_OPS : constant := 16#00000224#;
   DOMAIN_ALIAS_RID_SYSTEM_OPS : constant := 16#00000225#;
   DOMAIN_ALIAS_RID_PRINT_OPS : constant := 16#00000226#;
   DOMAIN_ALIAS_RID_BACKUP_OPS : constant := 16#00000227#;
   DOMAIN_ALIAS_RID_REPLICATOR : constant := 16#00000228#;
   DOMAIN_ALIAS_RID_RAS_SERVERS : constant := 16#00000229#;
   DOMAIN_ALIAS_RID_PREW2KCOMPACCESS : constant := 16#0000022A#;
   DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS : constant := 16#0000022B#;
   DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS : constant := 16#0000022C#;
   DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS : constant := 16#0000022D#;
   DOMAIN_ALIAS_RID_MONITORING_USERS : constant := 16#0000022E#;
   DOMAIN_ALIAS_RID_LOGGING_USERS : constant := 16#0000022F#;
   DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS : constant := 16#00000230#;
   DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS : constant := 16#00000231#;
   DOMAIN_ALIAS_RID_DCOM_USERS : constant := 16#00000232#;
   DOMAIN_ALIAS_RID_IUSERS : constant := 16#00000238#;
   DOMAIN_ALIAS_RID_CRYPTO_OPERATORS : constant := 16#00000239#;
   DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP : constant := 16#0000023B#;
   DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP : constant := 16#0000023C#;
   DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP : constant := 16#0000023D#;
   DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP : constant := 16#0000023E#;
   DOMAIN_ALIAS_RID_RDS_REMOTE_ACCESS_SERVERS : constant := 16#0000023F#;
   DOMAIN_ALIAS_RID_RDS_ENDPOINT_SERVERS : constant := 16#00000240#;
   DOMAIN_ALIAS_RID_RDS_MANAGEMENT_SERVERS : constant := 16#00000241#;
   DOMAIN_ALIAS_RID_HYPER_V_ADMINS : constant := 16#00000242#;
   DOMAIN_ALIAS_RID_ACCESS_CONTROL_ASSISTANCE_OPS : constant := 16#00000243#;
   DOMAIN_ALIAS_RID_REMOTE_MANAGEMENT_USERS : constant := 16#00000244#;
   DOMAIN_ALIAS_RID_DEFAULT_ACCOUNT : constant := 16#00000245#;
   DOMAIN_ALIAS_RID_STORAGE_REPLICA_ADMINS : constant := 16#00000246#;
   DOMAIN_ALIAS_RID_DEVICE_OWNERS : constant := 16#00000247#;
   SECURITY_APP_PACKAGE_BASE_RID : constant := 16#00000002#;
   SECURITY_BUILTIN_APP_PACKAGE_RID_COUNT : constant := 2;
   SECURITY_APP_PACKAGE_RID_COUNT : constant := 8;
   SECURITY_CAPABILITY_BASE_RID : constant := 16#00000003#;
   SECURITY_CAPABILITY_APP_RID : constant := 16#000000400#;
   SECURITY_BUILTIN_CAPABILITY_RID_COUNT : constant := 2;
   SECURITY_CAPABILITY_RID_COUNT : constant := 5;
   SECURITY_PARENT_PACKAGE_RID_COUNT : constant := SECURITY_APP_PACKAGE_RID_COUNT;
   SECURITY_CHILD_PACKAGE_RID_COUNT : constant := 12;
   SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE : constant := 16#00000001#;
   SECURITY_BUILTIN_PACKAGE_ANY_RESTRICTED_PACKAGE : constant := 16#00000002#;
   SECURITY_CAPABILITY_INTERNET_CLIENT : constant := 16#00000001#;
   SECURITY_CAPABILITY_INTERNET_CLIENT_SERVER : constant := 16#00000002#;
   SECURITY_CAPABILITY_PRIVATE_NETWORK_CLIENT_SERVER : constant := 16#00000003#;
   SECURITY_CAPABILITY_PICTURES_LIBRARY : constant := 16#00000004#;
   SECURITY_CAPABILITY_VIDEOS_LIBRARY : constant := 16#00000005#;
   SECURITY_CAPABILITY_MUSIC_LIBRARY : constant := 16#00000006#;
   SECURITY_CAPABILITY_DOCUMENTS_LIBRARY : constant := 16#00000007#;
   SECURITY_CAPABILITY_ENTERPRISE_AUTHENTICATION : constant := 16#00000008#;
   SECURITY_CAPABILITY_SHARED_USER_CERTIFICATES : constant := 16#00000009#;
   SECURITY_CAPABILITY_REMOVABLE_STORAGE : constant := 16#0000000A#;
   SECURITY_CAPABILITY_APPOINTMENTS : constant := 16#0000000B#;
   SECURITY_CAPABILITY_CONTACTS : constant := 16#0000000C#;
   SECURITY_CAPABILITY_INTERNET_EXPLORER : constant := 16#00001000#;
   SECURITY_MANDATORY_UNTRUSTED_RID : constant := 16#00000000#;
   SECURITY_MANDATORY_LOW_RID : constant := 16#00001000#;
   SECURITY_MANDATORY_MEDIUM_RID : constant := 16#00002000#;
   SECURITY_MANDATORY_MEDIUM_PLUS_RID : constant := SECURITY_MANDATORY_MEDIUM_RID + 16#100#;
   SECURITY_MANDATORY_HIGH_RID : constant := 16#00003000#;
   SECURITY_MANDATORY_SYSTEM_RID : constant := 16#00004000#;
   SECURITY_MANDATORY_PROTECTED_PROCESS_RID : constant := 16#00005000#;
   SECURITY_AUTHENTICATION_AUTHORITY_RID_COUNT : constant := 1;
   SECURITY_AUTHENTICATION_AUTHORITY_ASSERTED_RID : constant := 16#00000001#;
   SECURITY_AUTHENTICATION_SERVICE_ASSERTED_RID : constant := 16#00000002#;
   SECURITY_AUTHENTICATION_FRESH_KEY_AUTH_RID : constant := 16#00000003#;
   SECURITY_AUTHENTICATION_KEY_TRUST_RID : constant := 16#00000004#;
   SECURITY_AUTHENTICATION_KEY_PROPERTY_MFA_RID : constant := 16#00000005#;
   SECURITY_AUTHENTICATION_KEY_PROPERTY_ATTESTATION_RID : constant := 16#00000006#;
   SECURITY_PROCESS_TRUST_AUTHORITY_RID_COUNT : constant := 2;
   SECURITY_PROCESS_PROTECTION_TYPE_FULL_RID : constant := 16#00000400#;
   SECURITY_PROCESS_PROTECTION_TYPE_LITE_RID : constant := 16#00000200#;
   SECURITY_PROCESS_PROTECTION_TYPE_NONE_RID : constant := 16#00000000#;
   SECURITY_PROCESS_PROTECTION_LEVEL_WINTCB_RID : constant := 16#00002000#;
   SECURITY_PROCESS_PROTECTION_LEVEL_WINDOWS_RID : constant := 16#00001000#;
   SECURITY_PROCESS_PROTECTION_LEVEL_APP_RID : constant := 16#00000800#;
   SECURITY_PROCESS_PROTECTION_LEVEL_ANTIMALWARE_RID : constant := 16#00000600#;
   SECURITY_PROCESS_PROTECTION_LEVEL_AUTHENTICODE_RID : constant := 16#00000400#;
   SECURITY_PROCESS_PROTECTION_LEVEL_NONE_RID : constant := 16#00000000#;
   SECURITY_TRUSTED_INSTALLER_RID1 : constant := 956008885;
   SECURITY_TRUSTED_INSTALLER_RID3 : constant := 1831038044;
   SECURITY_TRUSTED_INSTALLER_RID4 : constant := 1853292631;
   SE_GROUP_MANDATORY : constant := 16#00000001#;
   SE_GROUP_ENABLED_BY_DEFAULT : constant := 16#00000002#;
   SE_GROUP_ENABLED : constant := 16#00000004#;
   SE_GROUP_OWNER : constant := 16#00000008#;
   SE_GROUP_USE_FOR_DENY_ONLY : constant := 16#00000010#;
   SE_GROUP_INTEGRITY : constant := 16#00000020#;
   SE_GROUP_INTEGRITY_ENABLED : constant := 16#00000040#;
   SE_GROUP_LOGON_ID : constant := 16#C0000000#;
   SE_GROUP_RESOURCE : constant := 16#20000000#;
   SE_GROUP_VALID_ATTRIBUTES : constant := ( Interfaces.C.Unsigned( SE_GROUP_MANDATORY )
       or Interfaces.C.Unsigned( SE_GROUP_ENABLED_BY_DEFAULT )
       or Interfaces.C.Unsigned( SE_GROUP_ENABLED )
       or Interfaces.C.Unsigned( SE_GROUP_OWNER )
       or Interfaces.C.Unsigned( SE_GROUP_USE_FOR_DENY_ONLY )
       or Interfaces.C.Unsigned( SE_GROUP_LOGON_ID )
       or Interfaces.C.Unsigned( SE_GROUP_RESOURCE )
       or Interfaces.C.Unsigned( SE_GROUP_INTEGRITY )
       or Interfaces.C.Unsigned( SE_GROUP_INTEGRITY_ENABLED ) );
   ACL_REVISION : constant := 2;
   ACL_REVISION_DS : constant := 4;
   ACL_REVISION1 : constant := 1;
   ACL_REVISION2 : constant := 2;
   ACL_REVISION3 : constant := 3;
   ACL_REVISION4 : constant := 4;
   ACCESS_MIN_MS_ACE_TYPE : constant := 16#0#;
   ACCESS_ALLOWED_ACE_TYPE : constant := 16#0#;
   ACCESS_DENIED_ACE_TYPE : constant := 16#1#;
   SYSTEM_AUDIT_ACE_TYPE : constant := 16#2#;
   SYSTEM_ALARM_ACE_TYPE : constant := 16#3#;
   ACCESS_MAX_MS_V2_ACE_TYPE : constant := 16#3#;
   ACCESS_ALLOWED_COMPOUND_ACE_TYPE : constant := 16#4#;
   ACCESS_MAX_MS_V3_ACE_TYPE : constant := 16#4#;
   ACCESS_MIN_MS_OBJECT_ACE_TYPE : constant := 16#5#;
   ACCESS_ALLOWED_OBJECT_ACE_TYPE : constant := 16#5#;
   ACCESS_DENIED_OBJECT_ACE_TYPE : constant := 16#6#;
   SYSTEM_AUDIT_OBJECT_ACE_TYPE : constant := 16#7#;
   SYSTEM_ALARM_OBJECT_ACE_TYPE : constant := 16#8#;
   ACCESS_MAX_MS_OBJECT_ACE_TYPE : constant := 16#8#;
   ACCESS_MAX_MS_V4_ACE_TYPE : constant := 16#8#;
   ACCESS_MAX_MS_ACE_TYPE : constant := 16#8#;
   ACCESS_ALLOWED_CALLBACK_ACE_TYPE : constant := 16#9#;
   ACCESS_DENIED_CALLBACK_ACE_TYPE : constant := 16#A#;
   ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE : constant := 16#B#;
   ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE : constant := 16#C#;
   SYSTEM_AUDIT_CALLBACK_ACE_TYPE : constant := 16#D#;
   SYSTEM_ALARM_CALLBACK_ACE_TYPE : constant := 16#E#;
   SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE : constant := 16#F#;
   SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE : constant := 16#10#;
   SYSTEM_MANDATORY_LABEL_ACE_TYPE : constant := 16#11#;
   SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE : constant := 16#12#;
   SYSTEM_SCOPED_POLICY_ID_ACE_TYPE : constant := 16#13#;
   SYSTEM_PROCESS_TRUST_LABEL_ACE_TYPE : constant := 16#14#;
   SYSTEM_ACCESS_FILTER_ACE_TYPE : constant := 16#15#;
   ACCESS_MAX_MS_V5_ACE_TYPE : constant := 16#15#;
   OBJECT_INHERIT_ACE : constant := 16#1#;
   CONTAINER_INHERIT_ACE : constant := 16#2#;
   NO_PROPAGATE_INHERIT_ACE : constant := 16#4#;
   INHERIT_ONLY_ACE : constant := 16#8#;
   INHERITED_ACE : constant := 16#10#;
   VALID_INHERIT_FLAGS : constant := 16#1F#;
   CRITICAL_ACE_FLAG : constant := 16#20#;
   SUCCESSFUL_ACCESS_ACE_FLAG : constant := 16#40#;
   FAILED_ACCESS_ACE_FLAG : constant := 16#80#;
   TRUST_PROTECTED_FILTER_ACE_FLAG : constant := 16#40#;
   SYSTEM_MANDATORY_LABEL_NO_WRITE_UP : constant := 16#1#;
   SYSTEM_MANDATORY_LABEL_NO_READ_UP : constant := 16#2#;
   SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP : constant := 16#4#;
   SYSTEM_MANDATORY_LABEL_VALID_MASK : constant := ( Interfaces.C.Unsigned( SYSTEM_MANDATORY_LABEL_NO_WRITE_UP )
       or Interfaces.C.Unsigned( SYSTEM_MANDATORY_LABEL_NO_READ_UP )
       or Interfaces.C.Unsigned( SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP ) );
   SYSTEM_PROCESS_TRUST_LABEL_VALID_MASK : constant := 16#00ffffff#;
   SYSTEM_PROCESS_TRUST_NOCONSTRAINT_MASK : constant := 16#ffffffff#;
   SYSTEM_ACCESS_FILTER_VALID_MASK : constant := 16#00ffffff#;
   SYSTEM_ACCESS_FILTER_NOCONSTRAINT_MASK : constant := 16#ffffffff#;
   ACE_OBJECT_TYPE_PRESENT : constant := 16#1#;
   ACE_INHERITED_OBJECT_TYPE_PRESENT : constant := 16#2#;
   SECURITY_DESCRIPTOR_REVISION : constant := 1;
   SECURITY_DESCRIPTOR_REVISION1 : constant := 1;
   SE_OWNER_DEFAULTED : constant := 16#0001#;
   SE_GROUP_DEFAULTED : constant := 16#0002#;
   SE_DACL_PRESENT : constant := 16#0004#;
   SE_DACL_DEFAULTED : constant := 16#0008#;
   SE_SACL_PRESENT : constant := 16#0010#;
   SE_SACL_DEFAULTED : constant := 16#0020#;
   SE_DACL_AUTO_INHERIT_REQ : constant := 16#0100#;
   SE_SACL_AUTO_INHERIT_REQ : constant := 16#0200#;
   SE_DACL_AUTO_INHERITED : constant := 16#0400#;
   SE_SACL_AUTO_INHERITED : constant := 16#0800#;
   SE_DACL_PROTECTED : constant := 16#1000#;
   SE_SACL_PROTECTED : constant := 16#2000#;
   SE_RM_CONTROL_VALID : constant := 16#4000#;
   SE_SELF_RELATIVE : constant := 16#8000#;
   ACCESS_OBJECT_GUID : constant := 0;
   ACCESS_PROPERTY_SET_GUID : constant := 1;
   ACCESS_PROPERTY_GUID : constant := 2;
   ACCESS_MAX_LEVEL : constant := 4;
   AUDIT_ALLOW_NO_PRIVILEGE : constant := 16#1#;
   SE_PRIVILEGE_ENABLED_BY_DEFAULT : constant := 16#00000001#;
   SE_PRIVILEGE_ENABLED : constant := 16#00000002#;
   SE_PRIVILEGE_REMOVED : constant := 16#00000004#;
   SE_PRIVILEGE_USED_FOR_ACCESS : constant := 16#80000000#;
   SE_PRIVILEGE_VALID_ATTRIBUTES : constant := ( Interfaces.C.Unsigned( SE_PRIVILEGE_ENABLED_BY_DEFAULT )
       or Interfaces.C.Unsigned( SE_PRIVILEGE_ENABLED )
       or Interfaces.C.Unsigned( SE_PRIVILEGE_REMOVED )
       or Interfaces.C.Unsigned( SE_PRIVILEGE_USED_FOR_ACCESS ) );
   PRIVILEGE_SET_ALL_NECESSARY : constant := 1;
   ACCESS_REASON_TYPE_MASK : constant := 16#00ff0000#;
   ACCESS_REASON_DATA_MASK : constant := 16#0000ffff#;
   ACCESS_REASON_STAGING_MASK : constant := 16#80000000#;
   ACCESS_REASON_EXDATA_MASK : constant := 16#7f000000#;
   SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE : constant := 16#00000001#;
   SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE : constant := 16#00000002#;
   SE_SECURITY_DESCRIPTOR_FLAG_NO_ACCESS_FILTER_ACE : constant := 16#00000004#;
   SE_SECURITY_DESCRIPTOR_VALID_FLAGS : constant := 16#00000007#;
   SE_ACCESS_CHECK_FLAG_NO_LEARNING_MODE_LOGGING : constant := 16#00000008#;
   SE_ACCESS_CHECK_VALID_FLAGS : constant := 16#00000008#;
   TOKEN_ASSIGN_PRIMARY : constant := 16#0001#;
   TOKEN_DUPLICATE : constant := 16#0002#;
   TOKEN_IMPERSONATE : constant := 16#0004#;
   TOKEN_QUERY : constant := 16#0008#;
   TOKEN_QUERY_SOURCE : constant := 16#0010#;
   TOKEN_ADJUST_PRIVILEGES : constant := 16#0020#;
   TOKEN_ADJUST_GROUPS : constant := 16#0040#;
   TOKEN_ADJUST_DEFAULT : constant := 16#0080#;
   TOKEN_ADJUST_SESSIONID : constant := 16#0100#;
   TOKEN_ALL_ACCESS_P : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( TOKEN_ASSIGN_PRIMARY )
       or Interfaces.C.Unsigned( TOKEN_DUPLICATE )
       or Interfaces.C.Unsigned( TOKEN_IMPERSONATE )
       or Interfaces.C.Unsigned( TOKEN_QUERY )
       or Interfaces.C.Unsigned( TOKEN_QUERY_SOURCE )
       or Interfaces.C.Unsigned( TOKEN_ADJUST_PRIVILEGES )
       or Interfaces.C.Unsigned( TOKEN_ADJUST_GROUPS )
       or Interfaces.C.Unsigned( TOKEN_ADJUST_DEFAULT ) );
   TOKEN_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( TOKEN_ALL_ACCESS_P )
       or Interfaces.C.Unsigned( TOKEN_ADJUST_SESSIONID ) );
   TOKEN_READ : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_READ )
       or Interfaces.C.Unsigned( TOKEN_QUERY ) );
   TOKEN_WRITE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_WRITE )
       or Interfaces.C.Unsigned( TOKEN_ADJUST_PRIVILEGES )
       or Interfaces.C.Unsigned( TOKEN_ADJUST_GROUPS )
       or Interfaces.C.Unsigned( TOKEN_ADJUST_DEFAULT ) );
   TOKEN_EXECUTE : constant := STANDARD_RIGHTS_EXECUTE;
   TOKEN_TRUST_CONSTRAINT_MASK : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_READ )
       or Interfaces.C.Unsigned( TOKEN_QUERY )
       or Interfaces.C.Unsigned( TOKEN_QUERY_SOURCE ) );
   TOKEN_ACCESS_PSEUDO_HANDLE_WIN8 : constant := ( Interfaces.C.Unsigned( TOKEN_QUERY )
       or Interfaces.C.Unsigned( TOKEN_QUERY_SOURCE ) );
   TOKEN_MANDATORY_POLICY_OFF : constant := 16#0#;
   TOKEN_MANDATORY_POLICY_NO_WRITE_UP : constant := 16#1#;
   TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN : constant := 16#2#;
   TOKEN_MANDATORY_POLICY_VALID_MASK : constant := ( Interfaces.C.Unsigned( TOKEN_MANDATORY_POLICY_NO_WRITE_UP )
       or Interfaces.C.Unsigned( TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN ) );
   POLICY_AUDIT_SUBCATEGORY_COUNT : constant := 59;
   TOKEN_SOURCE_LENGTH : constant := 8;
   CLAIM_SECURITY_ATTRIBUTE_TYPE_INVALID : constant := 16#00#;
   CLAIM_SECURITY_ATTRIBUTE_TYPE_INT64 : constant := 16#01#;
   CLAIM_SECURITY_ATTRIBUTE_TYPE_UINT64 : constant := 16#02#;
   CLAIM_SECURITY_ATTRIBUTE_TYPE_STRING : constant := 16#03#;
   CLAIM_SECURITY_ATTRIBUTE_TYPE_FQBN : constant := 16#04#;
   CLAIM_SECURITY_ATTRIBUTE_TYPE_SID : constant := 16#05#;
   CLAIM_SECURITY_ATTRIBUTE_TYPE_BOOLEAN : constant := 16#06#;
   CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING : constant := 16#10#;
   CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE : constant := 16#0001#;
   CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE : constant := 16#0002#;
   CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY : constant := 16#0004#;
   CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT : constant := 16#0008#;
   CLAIM_SECURITY_ATTRIBUTE_DISABLED : constant := 16#0010#;
   CLAIM_SECURITY_ATTRIBUTE_MANDATORY : constant := 16#0020#;
   CLAIM_SECURITY_ATTRIBUTE_VALID_FLAGS : constant := ( Interfaces.C.Unsigned( CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE )
       or Interfaces.C.Unsigned( CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE )
       or Interfaces.C.Unsigned( CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY )
       or Interfaces.C.Unsigned( CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT )
       or Interfaces.C.Unsigned( CLAIM_SECURITY_ATTRIBUTE_DISABLED )
       or Interfaces.C.Unsigned( CLAIM_SECURITY_ATTRIBUTE_MANDATORY ) );
   CLAIM_SECURITY_ATTRIBUTE_CUSTOM_FLAGS : constant := 16#FFFF0000#;
   CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1 : constant := 1;
   SECURITY_DYNAMIC_TRACKING : constant := TRUE;
   SECURITY_STATIC_TRACKING : constant := FALSE;
   DISABLE_MAX_PRIVILEGE : constant := 16#1#;
   SANDBOX_INERT : constant := 16#2#;
   LUA_TOKEN : constant := 16#4#;
   WRITE_RESTRICTED : constant := 16#8#;
   OWNER_SECURITY_INFORMATION : constant := 16#00000001#;
   GROUP_SECURITY_INFORMATION : constant := 16#00000002#;
   DACL_SECURITY_INFORMATION : constant := 16#00000004#;
   SACL_SECURITY_INFORMATION : constant := 16#00000008#;
   LABEL_SECURITY_INFORMATION : constant := 16#00000010#;
   ATTRIBUTE_SECURITY_INFORMATION : constant := 16#00000020#;
   SCOPE_SECURITY_INFORMATION : constant := 16#00000040#;
   PROCESS_TRUST_LABEL_SECURITY_INFORMATION : constant := 16#00000080#;
   ACCESS_FILTER_SECURITY_INFORMATION : constant := 16#00000100#;
   BACKUP_SECURITY_INFORMATION : constant := 16#00010000#;
   PROTECTED_DACL_SECURITY_INFORMATION : constant := 16#80000000#;
   PROTECTED_SACL_SECURITY_INFORMATION : constant := 16#40000000#;
   UNPROTECTED_DACL_SECURITY_INFORMATION : constant := 16#20000000#;
   UNPROTECTED_SACL_SECURITY_INFORMATION : constant := 16#10000000#;
   SE_SIGNING_LEVEL_UNCHECKED : constant := 16#00000000#;
   SE_SIGNING_LEVEL_UNSIGNED : constant := 16#00000001#;
   SE_SIGNING_LEVEL_ENTERPRISE : constant := 16#00000002#;
   SE_SIGNING_LEVEL_CUSTOM_1 : constant := 16#00000003#;
   SE_SIGNING_LEVEL_AUTHENTICODE : constant := 16#00000004#;
   SE_SIGNING_LEVEL_CUSTOM_2 : constant := 16#00000005#;
   SE_SIGNING_LEVEL_STORE : constant := 16#00000006#;
   SE_SIGNING_LEVEL_CUSTOM_3 : constant := 16#00000007#;
   SE_SIGNING_LEVEL_MICROSOFT : constant := 16#00000008#;
   SE_SIGNING_LEVEL_CUSTOM_4 : constant := 16#00000009#;
   SE_SIGNING_LEVEL_CUSTOM_5 : constant := 16#0000000A#;
   SE_SIGNING_LEVEL_DYNAMIC_CODEGEN : constant := 16#0000000B#;
   SE_SIGNING_LEVEL_WINDOWS : constant := 16#0000000C#;
   SE_SIGNING_LEVEL_CUSTOM_7 : constant := 16#0000000D#;
   SE_SIGNING_LEVEL_WINDOWS_TCB : constant := 16#0000000E#;
   SE_SIGNING_LEVEL_CUSTOM_6 : constant := 16#0000000F#;
   SE_LEARNING_MODE_FLAG_PERMISSIVE : constant := 16#00000001#;
   PROCESS_TERMINATE : constant := 16#0001#;
   PROCESS_CREATE_THREAD : constant := 16#0002#;
   PROCESS_SET_SESSIONID : constant := 16#0004#;
   PROCESS_VM_OPERATION : constant := 16#0008#;
   PROCESS_VM_READ : constant := 16#0010#;
   PROCESS_VM_WRITE : constant := 16#0020#;
   PROCESS_DUP_HANDLE : constant := 16#0040#;
   PROCESS_CREATE_PROCESS : constant := 16#0080#;
   PROCESS_SET_QUOTA : constant := 16#0100#;
   PROCESS_SET_INFORMATION : constant := 16#0200#;
   PROCESS_QUERY_INFORMATION : constant := 16#0400#;
   PROCESS_SUSPEND_RESUME : constant := 16#0800#;
   PROCESS_QUERY_LIMITED_INFORMATION : constant := 16#1000#;
   PROCESS_SET_LIMITED_INFORMATION : constant := 16#2000#;
   PROCESS_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SYNCHRONIZE )
       or 16#FFFF# );
   THREAD_TERMINATE : constant := 16#0001#;
   THREAD_SUSPEND_RESUME : constant := 16#0002#;
   THREAD_GET_CONTEXT : constant := 16#0008#;
   THREAD_SET_CONTEXT : constant := 16#0010#;
   THREAD_QUERY_INFORMATION : constant := 16#0040#;
   THREAD_SET_INFORMATION : constant := 16#0020#;
   THREAD_SET_THREAD_TOKEN : constant := 16#0080#;
   THREAD_IMPERSONATE : constant := 16#0100#;
   THREAD_DIRECT_IMPERSONATION : constant := 16#0200#;
   THREAD_SET_LIMITED_INFORMATION : constant := 16#0400#;
   THREAD_QUERY_LIMITED_INFORMATION : constant := 16#0800#;
   THREAD_RESUME : constant := 16#1000#;
   THREAD_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SYNCHRONIZE )
       or 16#FFFF# );
   JOB_OBJECT_ASSIGN_PROCESS : constant := 16#0001#;
   JOB_OBJECT_SET_ATTRIBUTES : constant := 16#0002#;
   JOB_OBJECT_QUERY : constant := 16#0004#;
   JOB_OBJECT_TERMINATE : constant := 16#0008#;
   JOB_OBJECT_SET_SECURITY_ATTRIBUTES : constant := 16#0010#;
   JOB_OBJECT_IMPERSONATE : constant := 16#0020#;
   JOB_OBJECT_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SYNCHRONIZE )
       or 16#3F# );
   FLS_MAXIMUM_AVAILABLE : constant := 4080;
   TLS_MINIMUM_AVAILABLE : constant := 64;
   THREAD_DYNAMIC_CODE_ALLOW : constant := 1;
   THREAD_BASE_PRIORITY_LOWRT : constant := 15;
   THREAD_BASE_PRIORITY_MAX : constant := 2;
   THREAD_BASE_PRIORITY_MIN : constant := -2;
   THREAD_BASE_PRIORITY_IDLE : constant := -15;
   MEMORY_PRIORITY_LOWEST : constant := 0;
   MEMORY_PRIORITY_VERY_LOW : constant := 1;
   MEMORY_PRIORITY_LOW : constant := 2;
   MEMORY_PRIORITY_MEDIUM : constant := 3;
   MEMORY_PRIORITY_BELOW_NORMAL : constant := 4;
   MEMORY_PRIORITY_NORMAL : constant := 5;
   DYNAMIC_EH_CONTINUATION_TARGET_ADD : constant := 16#00000001#;
   DYNAMIC_EH_CONTINUATION_TARGET_PROCESSED : constant := 16#00000002#;
   QUOTA_LIMITS_HARDWS_MIN_ENABLE : constant := 16#00000001#;
   QUOTA_LIMITS_HARDWS_MIN_DISABLE : constant := 16#00000002#;
   QUOTA_LIMITS_HARDWS_MAX_ENABLE : constant := 16#00000004#;
   QUOTA_LIMITS_HARDWS_MAX_DISABLE : constant := 16#00000008#;
   QUOTA_LIMITS_USE_DEFAULT_LIMITS : constant := 16#00000010#;
   MAX_HW_COUNTERS : constant := 16;
   THREAD_PROFILING_FLAG_DISPATCH : constant := 16#00000001#;
   JOB_OBJECT_NET_RATE_CONTROL_MAX_DSCP_TAG : constant := 64;
   JOB_OBJECT_TERMINATE_AT_END_OF_JOB : constant := 0;
   JOB_OBJECT_POST_AT_END_OF_JOB : constant := 1;
   JOB_OBJECT_MSG_END_OF_JOB_TIME : constant := 1;
   JOB_OBJECT_MSG_END_OF_PROCESS_TIME : constant := 2;
   JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT : constant := 3;
   JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO : constant := 4;
   JOB_OBJECT_MSG_NEW_PROCESS : constant := 6;
   JOB_OBJECT_MSG_EXIT_PROCESS : constant := 7;
   JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS : constant := 8;
   JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT : constant := 9;
   JOB_OBJECT_MSG_JOB_MEMORY_LIMIT : constant := 10;
   JOB_OBJECT_MSG_NOTIFICATION_LIMIT : constant := 11;
   JOB_OBJECT_MSG_JOB_CYCLE_TIME_LIMIT : constant := 12;
   JOB_OBJECT_MSG_SILO_TERMINATED : constant := 13;
   JOB_OBJECT_MSG_MINIMUM : constant := 1;
   JOB_OBJECT_MSG_MAXIMUM : constant := 13;
   JOB_OBJECT_LIMIT_WORKINGSET : constant := 16#00000001#;
   JOB_OBJECT_LIMIT_PROCESS_TIME : constant := 16#00000002#;
   JOB_OBJECT_LIMIT_JOB_TIME : constant := 16#00000004#;
   JOB_OBJECT_LIMIT_ACTIVE_PROCESS : constant := 16#00000008#;
   JOB_OBJECT_LIMIT_AFFINITY : constant := 16#00000010#;
   JOB_OBJECT_LIMIT_PRIORITY_CLASS : constant := 16#00000020#;
   JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME : constant := 16#00000040#;
   JOB_OBJECT_LIMIT_SCHEDULING_CLASS : constant := 16#00000080#;
   JOB_OBJECT_LIMIT_PROCESS_MEMORY : constant := 16#00000100#;
   JOB_OBJECT_LIMIT_JOB_MEMORY : constant := 16#00000200#;
   JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION : constant := 16#00000400#;
   JOB_OBJECT_LIMIT_BREAKAWAY_OK : constant := 16#00000800#;
   JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK : constant := 16#00001000#;
   JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE : constant := 16#00002000#;
   JOB_OBJECT_LIMIT_SUBSET_AFFINITY : constant := 16#00004000#;
   JOB_OBJECT_LIMIT_JOB_MEMORY_LOW : constant := 16#00008000#;
   JOB_OBJECT_LIMIT_JOB_READ_BYTES : constant := 16#00010000#;
   JOB_OBJECT_LIMIT_JOB_WRITE_BYTES : constant := 16#00020000#;
   JOB_OBJECT_LIMIT_RATE_CONTROL : constant := 16#00040000#;
   JOB_OBJECT_LIMIT_IO_RATE_CONTROL : constant := 16#00080000#;
   JOB_OBJECT_LIMIT_NET_RATE_CONTROL : constant := 16#00100000#;
   JOB_OBJECT_LIMIT_VALID_FLAGS : constant := 16#0007ffff#;
   JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS : constant := 16#000000ff#;
   JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS : constant := 16#00007fff#;
   -- [Todo] JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS ( JOB_OBJECT_LIMIT_JOB_READ_BYTES | JOB_OBJECT_LIMIT_JOB_WRITE_BYTES | JOB_OBJECT_LIMIT_JOB_TIME | JOB_OBJECT_LIMIT_JOB_MEMORY_LOW | JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH | JOB_OBJECT_LIMIT_CPU_RATE_CONTROL | JOB_OBJECT_LIMIT_IO_RATE_CONTROL | JOB_OBJECT_LIMIT_NET_RATE_CONTROL );
   JOB_OBJECT_UILIMIT_NONE : constant := 16#00000000#;
   JOB_OBJECT_UILIMIT_HANDLES : constant := 16#00000001#;
   JOB_OBJECT_UILIMIT_READCLIPBOARD : constant := 16#00000002#;
   JOB_OBJECT_UILIMIT_WRITECLIPBOARD : constant := 16#00000004#;
   JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS : constant := 16#00000008#;
   JOB_OBJECT_UILIMIT_DISPLAYSETTINGS : constant := 16#00000010#;
   JOB_OBJECT_UILIMIT_GLOBALATOMS : constant := 16#00000020#;
   JOB_OBJECT_UILIMIT_DESKTOP : constant := 16#00000040#;
   JOB_OBJECT_UILIMIT_EXITWINDOWS : constant := 16#00000080#;
   JOB_OBJECT_UILIMIT_ALL : constant := 16#000000FF#;
   JOB_OBJECT_UI_VALID_FLAGS : constant := 16#000000FF#;
   JOB_OBJECT_SECURITY_NO_ADMIN : constant := 16#00000001#;
   JOB_OBJECT_SECURITY_RESTRICTED_TOKEN : constant := 16#00000002#;
   JOB_OBJECT_SECURITY_ONLY_TOKEN : constant := 16#00000004#;
   JOB_OBJECT_SECURITY_FILTER_TOKENS : constant := 16#00000008#;
   JOB_OBJECT_SECURITY_VALID_FLAGS : constant := 16#0000000f#;
   JOB_OBJECT_CPU_RATE_CONTROL_ENABLE : constant := 16#1#;
   JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED : constant := 16#2#;
   JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP : constant := 16#4#;
   JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY : constant := 16#8#;
   JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE : constant := 16#10#;
   JOB_OBJECT_CPU_RATE_CONTROL_VALID_FLAGS : constant := 16#1f#;
   EVENT_MODIFY_STATE : constant := 16#0002#;
   EVENT_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SYNCHRONIZE )
       or 16#3# );
   MUTANT_QUERY_STATE : constant := 16#0001#;
   MUTANT_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SYNCHRONIZE )
       or Interfaces.C.Unsigned( MUTANT_QUERY_STATE ) );
   SEMAPHORE_MODIFY_STATE : constant := 16#0002#;
   SEMAPHORE_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SYNCHRONIZE )
       or 16#3# );
   TIMER_QUERY_STATE : constant := 16#0001#;
   TIMER_MODIFY_STATE : constant := 16#0002#;
   TIMER_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SYNCHRONIZE )
       or Interfaces.C.Unsigned( TIMER_QUERY_STATE )
       or Interfaces.C.Unsigned( TIMER_MODIFY_STATE ) );
   TIME_ZONE_ID_UNKNOWN : constant := 0;
   TIME_ZONE_ID_STANDARD : constant := 1;
   TIME_ZONE_ID_DAYLIGHT : constant := 2;
   LTP_PC_SMT : constant := 16#1#;
   CACHE_FULLY_ASSOCIATIVE : constant := 16#FF#;
   SYSTEM_CPU_SET_INFORMATION_PARKED : constant := 16#1#;
   SYSTEM_CPU_SET_INFORMATION_ALLOCATED : constant := 16#2#;
   SYSTEM_CPU_SET_INFORMATION_ALLOCATED_TO_TARGET_PROCESS : constant := 16#4#;
   SYSTEM_CPU_SET_INFORMATION_REALTIME : constant := 16#8#;
   PROCESSOR_INTEL_386 : constant := 386;
   PROCESSOR_INTEL_486 : constant := 486;
   PROCESSOR_INTEL_PENTIUM : constant := 586;
   PROCESSOR_INTEL_IA64 : constant := 2200;
   PROCESSOR_AMD_X8664 : constant := 8664;
   PROCESSOR_MIPS_R4000 : constant := 4000;
   PROCESSOR_ALPHA_21064 : constant := 21064;
   PROCESSOR_PPC_601 : constant := 601;
   PROCESSOR_PPC_603 : constant := 603;
   PROCESSOR_PPC_604 : constant := 604;
   PROCESSOR_PPC_620 : constant := 620;
   PROCESSOR_HITACHI_SH3 : constant := 10003;
   PROCESSOR_HITACHI_SH3E : constant := 10004;
   PROCESSOR_HITACHI_SH4 : constant := 10005;
   PROCESSOR_MOTOROLA_821 : constant := 821;
   PROCESSOR_SHx_SH3 : constant := 103;
   PROCESSOR_SHx_SH4 : constant := 104;
   PROCESSOR_STRONGARM : constant := 2577;
   PROCESSOR_ARM720 : constant := 1824;
   PROCESSOR_ARM820 : constant := 2080;
   PROCESSOR_ARM920 : constant := 2336;
   PROCESSOR_ARM_7TDMI : constant := 70001;
   PROCESSOR_OPTIL : constant := 16#494f#;
   PROCESSOR_ARCHITECTURE_INTEL : constant := 0;
   PROCESSOR_ARCHITECTURE_MIPS : constant := 1;
   PROCESSOR_ARCHITECTURE_ALPHA : constant := 2;
   PROCESSOR_ARCHITECTURE_PPC : constant := 3;
   PROCESSOR_ARCHITECTURE_SHX : constant := 4;
   PROCESSOR_ARCHITECTURE_ARM : constant := 5;
   PROCESSOR_ARCHITECTURE_IA64 : constant := 6;
   PROCESSOR_ARCHITECTURE_ALPHA64 : constant := 7;
   PROCESSOR_ARCHITECTURE_MSIL : constant := 8;
   PROCESSOR_ARCHITECTURE_AMD64 : constant := 9;
   PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 : constant := 10;
   PROCESSOR_ARCHITECTURE_NEUTRAL : constant := 11;
   PROCESSOR_ARCHITECTURE_ARM64 : constant := 12;
   PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 : constant := 13;
   PROCESSOR_ARCHITECTURE_IA32_ON_ARM64 : constant := 14;
   PROCESSOR_ARCHITECTURE_UNKNOWN : constant := 16#FFFF#;
   PF_FLOATING_POINT_PRECISION_ERRATA : constant := 0;
   PF_FLOATING_POINT_EMULATED : constant := 1;
   PF_COMPARE_EXCHANGE_DOUBLE : constant := 2;
   PF_MMX_INSTRUCTIONS_AVAILABLE : constant := 3;
   PF_PPC_MOVEMEM_64BIT_OK : constant := 4;
   PF_ALPHA_BYTE_INSTRUCTIONS : constant := 5;
   PF_XMMI_INSTRUCTIONS_AVAILABLE : constant := 6;
   PF_3DNOW_INSTRUCTIONS_AVAILABLE : constant := 7;
   PF_RDTSC_INSTRUCTION_AVAILABLE : constant := 8;
   PF_PAE_ENABLED : constant := 9;
   PF_XMMI64_INSTRUCTIONS_AVAILABLE : constant := 10;
   PF_SSE_DAZ_MODE_AVAILABLE : constant := 11;
   PF_NX_ENABLED : constant := 12;
   PF_SSE3_INSTRUCTIONS_AVAILABLE : constant := 13;
   PF_COMPARE_EXCHANGE128 : constant := 14;
   PF_COMPARE64_EXCHANGE128 : constant := 15;
   PF_CHANNELS_ENABLED : constant := 16;
   PF_XSAVE_ENABLED : constant := 17;
   PF_ARM_VFP_32_REGISTERS_AVAILABLE : constant := 18;
   PF_ARM_NEON_INSTRUCTIONS_AVAILABLE : constant := 19;
   PF_SECOND_LEVEL_ADDRESS_TRANSLATION : constant := 20;
   PF_VIRT_FIRMWARE_ENABLED : constant := 21;
   PF_RDWRFSGSBASE_AVAILABLE : constant := 22;
   PF_FASTFAIL_AVAILABLE : constant := 23;
   PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE : constant := 24;
   PF_ARM_64BIT_LOADSTORE_ATOMIC : constant := 25;
   PF_ARM_EXTERNAL_CACHE_AVAILABLE : constant := 26;
   PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE : constant := 27;
   PF_RDRAND_INSTRUCTION_AVAILABLE : constant := 28;
   PF_ARM_V8_INSTRUCTIONS_AVAILABLE : constant := 29;
   PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE : constant := 30;
   PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE : constant := 31;
   PF_RDTSCP_INSTRUCTION_AVAILABLE : constant := 32;
   PF_RDPID_INSTRUCTION_AVAILABLE : constant := 33;
   PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE : constant := 34;
   PF_MONITORX_INSTRUCTION_AVAILABLE : constant := 35;
   PF_SSSE3_INSTRUCTIONS_AVAILABLE : constant := 36;
   PF_SSE4_1_INSTRUCTIONS_AVAILABLE : constant := 37;
   PF_SSE4_2_INSTRUCTIONS_AVAILABLE : constant := 38;
   PF_AVX_INSTRUCTIONS_AVAILABLE : constant := 39;
   PF_AVX2_INSTRUCTIONS_AVAILABLE : constant := 40;
   PF_AVX512F_INSTRUCTIONS_AVAILABLE : constant := 41;
   XSTATE_LEGACY_FLOATING_POINT : constant := 0;
   XSTATE_LEGACY_SSE : constant := 1;
   XSTATE_GSSE : constant := 2;
   XSTATE_AVX : constant := XSTATE_GSSE;
   XSTATE_MPX_BNDREGS : constant := 3;
   XSTATE_MPX_BNDCSR : constant := 4;
   XSTATE_AVX512_KMASK : constant := 5;
   XSTATE_AVX512_ZMM_H : constant := 6;
   XSTATE_AVX512_ZMM : constant := 7;
   XSTATE_IPT : constant := 8;
   XSTATE_CET_U : constant := 11;
   XSTATE_LWP : constant := 62;
   MAXIMUM_XSTATE_FEATURES : constant := 64;
   -- [Todo] XSTATE_MASK_LEGACY_FLOATING_POINT ( 1ui64 << ( XSTATE_LEGACY_FLOATING_POINT ) );
   -- [Todo] XSTATE_MASK_LEGACY_SSE ( 1ui64 << ( XSTATE_LEGACY_SSE ) );
   -- [Todo] XSTATE_MASK_LEGACY ( XSTATE_MASK_LEGACY_FLOATING_POINT | XSTATE_MASK_LEGACY_SSE );
   -- [Todo] XSTATE_MASK_GSSE ( 1ui64 << ( XSTATE_GSSE ) );
   -- [Todo] XSTATE_MASK_IPT ( 1ui64 << ( XSTATE_IPT ) );
   -- [Todo] XSTATE_MASK_CET_U ( 1ui64 << ( XSTATE_CET_U ) );
   -- [Todo] XSTATE_MASK_LWP ( 1ui64 << ( XSTATE_LWP ) );
   -- [Todo] XSTATE_MASK_ALLOWED ( XSTATE_MASK_LEGACY | XSTATE_MASK_AVX | XSTATE_MASK_MPX | XSTATE_MASK_AVX512 | XSTATE_MASK_IPT | XSTATE_MASK_CET_U | XSTATE_MASK_LWP );
   XSTATE_COMPACTION_ENABLE : constant := 63;
   -- [Todo] XSTATE_COMPACTION_ENABLE_MASK ( 1ui64 << ( XSTATE_COMPACTION_ENABLE ) );
   XSTATE_ALIGN_BIT : constant := 1;
   -- [Todo] XSTATE_ALIGN_MASK ( 1ui64 << ( XSTATE_ALIGN_BIT ) );
   XSTATE_CONTROLFLAG_XSAVEOPT_MASK : constant := 1;
   XSTATE_CONTROLFLAG_XSAVEC_MASK : constant := 2;
   XSTATE_CONTROLFLAG_VALID_MASK : constant := ( Interfaces.C.Unsigned( XSTATE_CONTROLFLAG_XSAVEOPT_MASK )
       or Interfaces.C.Unsigned( XSTATE_CONTROLFLAG_XSAVEC_MASK ) );
   CFG_CALL_TARGET_VALID : constant := 16#00000001#;
   CFG_CALL_TARGET_PROCESSED : constant := 16#00000002#;
   CFG_CALL_TARGET_CONVERT_EXPORT_SUPPRESSED_TO_VALID : constant := 16#00000004#;
   SECTION_QUERY : constant := 16#0001#;
   SECTION_MAP_WRITE : constant := 16#0002#;
   SECTION_MAP_READ : constant := 16#0004#;
   SECTION_MAP_EXECUTE : constant := 16#0008#;
   SECTION_EXTEND_SIZE : constant := 16#0010#;
   SECTION_MAP_EXECUTE_EXPLICIT : constant := 16#0020#;
   SECTION_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SECTION_QUERY )
       or Interfaces.C.Unsigned( SECTION_MAP_WRITE )
       or Interfaces.C.Unsigned( SECTION_MAP_READ )
       or Interfaces.C.Unsigned( SECTION_MAP_EXECUTE )
       or Interfaces.C.Unsigned( SECTION_EXTEND_SIZE ) );
   SESSION_QUERY_ACCESS : constant := 16#0001#;
   SESSION_MODIFY_ACCESS : constant := 16#0002#;
   SESSION_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SESSION_QUERY_ACCESS )
       or Interfaces.C.Unsigned( SESSION_MODIFY_ACCESS ) );
   PAGE_NOACCESS : constant := 16#01#;
   PAGE_READONLY : constant := 16#02#;
   PAGE_READWRITE : constant := 16#04#;
   PAGE_WRITECOPY : constant := 16#08#;
   PAGE_EXECUTE : constant := 16#10#;
   PAGE_EXECUTE_READ : constant := 16#20#;
   PAGE_EXECUTE_READWRITE : constant := 16#40#;
   PAGE_EXECUTE_WRITECOPY : constant := 16#80#;
   PAGE_GUARD : constant := 16#100#;
   PAGE_NOCACHE : constant := 16#200#;
   PAGE_WRITECOMBINE : constant := 16#400#;
   PAGE_GRAPHICS_NOACCESS : constant := 16#0800#;
   PAGE_GRAPHICS_READONLY : constant := 16#1000#;
   PAGE_GRAPHICS_READWRITE : constant := 16#2000#;
   PAGE_GRAPHICS_EXECUTE : constant := 16#4000#;
   PAGE_GRAPHICS_EXECUTE_READ : constant := 16#8000#;
   PAGE_GRAPHICS_EXECUTE_READWRITE : constant := 16#10000#;
   PAGE_GRAPHICS_COHERENT : constant := 16#20000#;
   PAGE_GRAPHICS_NOCACHE : constant := 16#40000#;
   PAGE_ENCLAVE_THREAD_CONTROL : constant := 16#80000000#;
   PAGE_REVERT_TO_FILE_MAP : constant := 16#80000000#;
   PAGE_TARGETS_NO_UPDATE : constant := 16#40000000#;
   PAGE_TARGETS_INVALID : constant := 16#40000000#;
   PAGE_ENCLAVE_UNVALIDATED : constant := 16#20000000#;
   PAGE_ENCLAVE_MASK : constant := 16#10000000#;
   PAGE_ENCLAVE_DECOMMIT : constant := ( Interfaces.C.Unsigned( PAGE_ENCLAVE_MASK ) or 0 );
   PAGE_ENCLAVE_SS_FIRST : constant := ( Interfaces.C.Unsigned( PAGE_ENCLAVE_MASK ) or 1 );
   PAGE_ENCLAVE_SS_REST : constant := ( Interfaces.C.Unsigned( PAGE_ENCLAVE_MASK ) or 2 );
   MEM_COMMIT : constant := 16#00001000#;
   MEM_RESERVE : constant := 16#00002000#;
   MEM_REPLACE_PLACEHOLDER : constant := 16#00004000#;
   MEM_RESERVE_PLACEHOLDER : constant := 16#00040000#;
   MEM_RESET : constant := 16#00080000#;
   MEM_TOP_DOWN : constant := 16#00100000#;
   MEM_WRITE_WATCH : constant := 16#00200000#;
   MEM_PHYSICAL : constant := 16#00400000#;
   MEM_ROTATE : constant := 16#00800000#;
   MEM_DIFFERENT_IMAGE_BASE_OK : constant := 16#00800000#;
   MEM_RESET_UNDO : constant := 16#01000000#;
   MEM_LARGE_PAGES : constant := 16#20000000#;
   MEM_4MB_PAGES : constant := 16#80000000#;
   MEM_64K_PAGES : constant := ( Interfaces.C.Unsigned( MEM_LARGE_PAGES )
       or Interfaces.C.Unsigned( MEM_PHYSICAL ) );
   MEM_UNMAP_WITH_TRANSIENT_BOOST : constant := 16#00000001#;
   MEM_COALESCE_PLACEHOLDERS : constant := 16#00000001#;
   MEM_PRESERVE_PLACEHOLDER : constant := 16#00000002#;
   MEM_DECOMMIT : constant := 16#00004000#;
   MEM_RELEASE : constant := 16#00008000#;
   MEM_FREE : constant := 16#00010000#;
   MEM_EXTENDED_PARAMETER_GRAPHICS : constant := 16#00000001#;
   MEM_EXTENDED_PARAMETER_NONPAGED : constant := 16#00000002#;
   MEM_EXTENDED_PARAMETER_ZERO_PAGES_OPTIONAL : constant := 16#00000004#;
   MEM_EXTENDED_PARAMETER_NONPAGED_LARGE : constant := 16#00000008#;
   MEM_EXTENDED_PARAMETER_NONPAGED_HUGE : constant := 16#00000010#;
   MEM_EXTENDED_PARAMETER_SOFT_FAULT_PAGES : constant := 16#00000020#;
   MEM_EXTENDED_PARAMETER_TYPE_BITS : constant := 8;
   SEC_PARTITION_OWNER_HANDLE : constant := 16#00040000#;
   SEC_64K_PAGES : constant := 16#00080000#;
   SEC_FILE : constant := 16#00800000#;
   SEC_IMAGE : constant := 16#01000000#;
   SEC_PROTECTED_IMAGE : constant := 16#02000000#;
   SEC_RESERVE : constant := 16#04000000#;
   SEC_COMMIT : constant := 16#08000000#;
   SEC_NOCACHE : constant := 16#10000000#;
   SEC_WRITECOMBINE : constant := 16#40000000#;
   SEC_LARGE_PAGES : constant := 16#80000000#;
   SEC_IMAGE_NO_EXECUTE : constant := ( Interfaces.C.Unsigned( SEC_IMAGE )
       or Interfaces.C.Unsigned( SEC_NOCACHE ) );
   MEM_PRIVATE : constant := 16#00020000#;
   MEM_MAPPED : constant := 16#00040000#;
   MEM_IMAGE : constant := 16#01000000#;
   WRITE_WATCH_FLAG_RESET : constant := 16#01#;
   ENCLAVE_TYPE_SGX : constant := 16#00000001#;
   ENCLAVE_TYPE_SGX2 : constant := 16#00000002#;
   ENCLAVE_TYPE_VBS : constant := 16#00000010#;
   ENCLAVE_VBS_FLAG_DEBUG : constant := 16#00000001#;
   ENCLAVE_TYPE_VBS_BASIC : constant := 16#00000011#;
   VBS_BASIC_PAGE_MEASURED_DATA : constant := 16#00000001#;
   VBS_BASIC_PAGE_UNMEASURED_DATA : constant := 16#00000002#;
   VBS_BASIC_PAGE_ZERO_FILL : constant := 16#00000003#;
   VBS_BASIC_PAGE_THREAD_DESCRIPTOR : constant := 16#00000004#;
   VBS_BASIC_PAGE_SYSTEM_CALL : constant := 16#00000005#;
   FILE_READ_DATA : constant := 16#0001#;
   FILE_LIST_DIRECTORY : constant := 16#0001#;
   FILE_WRITE_DATA : constant := 16#0002#;
   FILE_ADD_FILE : constant := 16#0002#;
   FILE_APPEND_DATA : constant := 16#0004#;
   FILE_ADD_SUBDIRECTORY : constant := 16#0004#;
   FILE_CREATE_PIPE_INSTANCE : constant := 16#0004#;
   FILE_READ_EA : constant := 16#0008#;
   FILE_WRITE_EA : constant := 16#0010#;
   FILE_EXECUTE : constant := 16#0020#;
   FILE_TRAVERSE : constant := 16#0020#;
   FILE_DELETE_CHILD : constant := 16#0040#;
   FILE_READ_ATTRIBUTES : constant := 16#0080#;
   FILE_WRITE_ATTRIBUTES : constant := 16#0100#;
   FILE_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SYNCHRONIZE )
       or 16#1FF# );
   FILE_GENERIC_READ : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_READ )
       or Interfaces.C.Unsigned( FILE_READ_DATA )
       or Interfaces.C.Unsigned( FILE_READ_ATTRIBUTES )
       or Interfaces.C.Unsigned( FILE_READ_EA )
       or Interfaces.C.Unsigned( SYNCHRONIZE ) );
   FILE_GENERIC_WRITE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_WRITE )
       or Interfaces.C.Unsigned( FILE_WRITE_DATA )
       or Interfaces.C.Unsigned( FILE_WRITE_ATTRIBUTES )
       or Interfaces.C.Unsigned( FILE_WRITE_EA )
       or Interfaces.C.Unsigned( FILE_APPEND_DATA )
       or Interfaces.C.Unsigned( SYNCHRONIZE ) );
   FILE_GENERIC_EXECUTE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_EXECUTE )
       or Interfaces.C.Unsigned( FILE_READ_ATTRIBUTES )
       or Interfaces.C.Unsigned( FILE_EXECUTE )
       or Interfaces.C.Unsigned( SYNCHRONIZE ) );
   FILE_SHARE_READ : constant := 16#00000001#;
   FILE_SHARE_WRITE : constant := 16#00000002#;
   FILE_SHARE_DELETE : constant := 16#00000004#;
   FILE_ATTRIBUTE_READONLY : constant := 16#00000001#;
   FILE_ATTRIBUTE_HIDDEN : constant := 16#00000002#;
   FILE_ATTRIBUTE_SYSTEM : constant := 16#00000004#;
   FILE_ATTRIBUTE_DIRECTORY : constant := 16#00000010#;
   FILE_ATTRIBUTE_ARCHIVE : constant := 16#00000020#;
   FILE_ATTRIBUTE_DEVICE : constant := 16#00000040#;
   FILE_ATTRIBUTE_NORMAL : constant := 16#00000080#;
   FILE_ATTRIBUTE_TEMPORARY : constant := 16#00000100#;
   FILE_ATTRIBUTE_SPARSE_FILE : constant := 16#00000200#;
   FILE_ATTRIBUTE_REPARSE_POINT : constant := 16#00000400#;
   FILE_ATTRIBUTE_COMPRESSED : constant := 16#00000800#;
   FILE_ATTRIBUTE_OFFLINE : constant := 16#00001000#;
   FILE_ATTRIBUTE_NOT_CONTENT_INDEXED : constant := 16#00002000#;
   FILE_ATTRIBUTE_ENCRYPTED : constant := 16#00004000#;
   FILE_ATTRIBUTE_INTEGRITY_STREAM : constant := 16#00008000#;
   FILE_ATTRIBUTE_VIRTUAL : constant := 16#00010000#;
   FILE_ATTRIBUTE_NO_SCRUB_DATA : constant := 16#00020000#;
   FILE_ATTRIBUTE_EA : constant := 16#00040000#;
   FILE_ATTRIBUTE_PINNED : constant := 16#00080000#;
   FILE_ATTRIBUTE_UNPINNED : constant := 16#00100000#;
   FILE_ATTRIBUTE_RECALL_ON_OPEN : constant := 16#00040000#;
   FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS : constant := 16#00400000#;
   TREE_CONNECT_ATTRIBUTE_PRIVACY : constant := 16#00004000#;
   TREE_CONNECT_ATTRIBUTE_INTEGRITY : constant := 16#00008000#;
   TREE_CONNECT_ATTRIBUTE_GLOBAL : constant := 16#00000004#;
   TREE_CONNECT_ATTRIBUTE_PINNED : constant := 16#00000002#;
   FILE_ATTRIBUTE_STRICTLY_SEQUENTIAL : constant := 16#20000000#;
   FILE_NOTIFY_CHANGE_FILE_NAME : constant := 16#00000001#;
   FILE_NOTIFY_CHANGE_DIR_NAME : constant := 16#00000002#;
   FILE_NOTIFY_CHANGE_ATTRIBUTES : constant := 16#00000004#;
   FILE_NOTIFY_CHANGE_SIZE : constant := 16#00000008#;
   FILE_NOTIFY_CHANGE_LAST_WRITE : constant := 16#00000010#;
   FILE_NOTIFY_CHANGE_LAST_ACCESS : constant := 16#00000020#;
   FILE_NOTIFY_CHANGE_CREATION : constant := 16#00000040#;
   FILE_NOTIFY_CHANGE_SECURITY : constant := 16#00000100#;
   FILE_ACTION_ADDED : constant := 16#00000001#;
   FILE_ACTION_REMOVED : constant := 16#00000002#;
   FILE_ACTION_MODIFIED : constant := 16#00000003#;
   FILE_ACTION_RENAMED_OLD_NAME : constant := 16#00000004#;
   FILE_ACTION_RENAMED_NEW_NAME : constant := 16#00000005#;
   MAILSLOT_NO_MESSAGE : constant := Interfaces.C.unsigned_long'mod(-1);
   MAILSLOT_WAIT_FOREVER : constant := Interfaces.C.unsigned_long'mod(-1);
   FILE_CASE_SENSITIVE_SEARCH : constant := 16#00000001#;
   FILE_CASE_PRESERVED_NAMES : constant := 16#00000002#;
   FILE_UNICODE_ON_DISK : constant := 16#00000004#;
   FILE_PERSISTENT_ACLS : constant := 16#00000008#;
   FILE_FILE_COMPRESSION : constant := 16#00000010#;
   FILE_VOLUME_QUOTAS : constant := 16#00000020#;
   FILE_SUPPORTS_SPARSE_FILES : constant := 16#00000040#;
   FILE_SUPPORTS_REPARSE_POINTS : constant := 16#00000080#;
   FILE_SUPPORTS_REMOTE_STORAGE : constant := 16#00000100#;
   FILE_RETURNS_CLEANUP_RESULT_INFO : constant := 16#00000200#;
   FILE_SUPPORTS_POSIX_UNLINK_RENAME : constant := 16#00000400#;
   FILE_VOLUME_IS_COMPRESSED : constant := 16#00008000#;
   FILE_SUPPORTS_OBJECT_IDS : constant := 16#00010000#;
   FILE_SUPPORTS_ENCRYPTION : constant := 16#00020000#;
   FILE_NAMED_STREAMS : constant := 16#00040000#;
   FILE_READ_ONLY_VOLUME : constant := 16#00080000#;
   FILE_SEQUENTIAL_WRITE_ONCE : constant := 16#00100000#;
   FILE_SUPPORTS_TRANSACTIONS : constant := 16#00200000#;
   FILE_SUPPORTS_HARD_LINKS : constant := 16#00400000#;
   FILE_SUPPORTS_EXTENDED_ATTRIBUTES : constant := 16#00800000#;
   FILE_SUPPORTS_OPEN_BY_FILE_ID : constant := 16#01000000#;
   FILE_SUPPORTS_USN_JOURNAL : constant := 16#02000000#;
   FILE_SUPPORTS_INTEGRITY_STREAMS : constant := 16#04000000#;
   FILE_SUPPORTS_BLOCK_REFCOUNTING : constant := 16#08000000#;
   FILE_SUPPORTS_SPARSE_VDL : constant := 16#10000000#;
   FILE_DAX_VOLUME : constant := 16#20000000#;
   FILE_SUPPORTS_GHOSTING : constant := 16#40000000#;
   FILE_CS_FLAG_CASE_SENSITIVE_DIR : constant := 16#00000001#;
   FLUSH_FLAGS_FILE_DATA_ONLY : constant := 16#00000001#;
   FLUSH_FLAGS_NO_SYNC : constant := 16#00000002#;
   FLUSH_FLAGS_FILE_DATA_SYNC_ONLY : constant := 16#00000004#;
   IO_REPARSE_TAG_RESERVED_ZERO : constant := 0;
   IO_REPARSE_TAG_RESERVED_ONE : constant := 1;
   IO_REPARSE_TAG_RESERVED_TWO : constant := 2;
   IO_REPARSE_TAG_MOUNT_POINT : constant := 16#A0000003#;
   IO_REPARSE_TAG_HSM : constant := 16#C0000004#;
   IO_REPARSE_TAG_HSM2 : constant := 16#80000006#;
   IO_REPARSE_TAG_SIS : constant := 16#80000007#;
   IO_REPARSE_TAG_WIM : constant := 16#80000008#;
   IO_REPARSE_TAG_CSV : constant := 16#80000009#;
   IO_REPARSE_TAG_DFS : constant := 16#8000000A#;
   IO_REPARSE_TAG_SYMLINK : constant := 16#A000000C#;
   IO_REPARSE_TAG_DFSR : constant := 16#80000012#;
   IO_REPARSE_TAG_DEDUP : constant := 16#80000013#;
   IO_REPARSE_TAG_NFS : constant := 16#80000014#;
   IO_REPARSE_TAG_FILE_PLACEHOLDER : constant := 16#80000015#;
   IO_REPARSE_TAG_WOF : constant := 16#80000017#;
   IO_REPARSE_TAG_WCI : constant := 16#80000018#;
   IO_REPARSE_TAG_WCI_1 : constant := 16#90001018#;
   IO_REPARSE_TAG_GLOBAL_REPARSE : constant := 16#A0000019#;
   IO_REPARSE_TAG_CLOUD : constant := 16#9000001A#;
   IO_REPARSE_TAG_CLOUD_1 : constant := 16#9000101A#;
   IO_REPARSE_TAG_CLOUD_2 : constant := 16#9000201A#;
   IO_REPARSE_TAG_CLOUD_3 : constant := 16#9000301A#;
   IO_REPARSE_TAG_CLOUD_4 : constant := 16#9000401A#;
   IO_REPARSE_TAG_CLOUD_5 : constant := 16#9000501A#;
   IO_REPARSE_TAG_CLOUD_6 : constant := 16#9000601A#;
   IO_REPARSE_TAG_CLOUD_7 : constant := 16#9000701A#;
   IO_REPARSE_TAG_CLOUD_8 : constant := 16#9000801A#;
   IO_REPARSE_TAG_CLOUD_9 : constant := 16#9000901A#;
   IO_REPARSE_TAG_CLOUD_A : constant := 16#9000A01A#;
   IO_REPARSE_TAG_CLOUD_B : constant := 16#9000B01A#;
   IO_REPARSE_TAG_CLOUD_C : constant := 16#9000C01A#;
   IO_REPARSE_TAG_CLOUD_D : constant := 16#9000D01A#;
   IO_REPARSE_TAG_CLOUD_E : constant := 16#9000E01A#;
   IO_REPARSE_TAG_CLOUD_F : constant := 16#9000F01A#;
   IO_REPARSE_TAG_CLOUD_MASK : constant := 16#0000F000#;
   IO_REPARSE_TAG_APPEXECLINK : constant := 16#8000001B#;
   IO_REPARSE_TAG_PROJFS : constant := 16#9000001C#;
   IO_REPARSE_TAG_STORAGE_SYNC : constant := 16#8000001E#;
   IO_REPARSE_TAG_WCI_TOMBSTONE : constant := 16#A000001F#;
   IO_REPARSE_TAG_UNHANDLED : constant := 16#80000020#;
   IO_REPARSE_TAG_ONEDRIVE : constant := 16#80000021#;
   IO_REPARSE_TAG_PROJFS_TOMBSTONE : constant := 16#A0000022#;
   IO_REPARSE_TAG_AF_UNIX : constant := 16#80000023#;
   IO_REPARSE_TAG_WCI_LINK : constant := 16#A0000027#;
   IO_REPARSE_TAG_WCI_LINK_1 : constant := 16#A0001027#;
   SCRUB_DATA_INPUT_FLAG_RESUME : constant := 16#00000001#;
   SCRUB_DATA_INPUT_FLAG_SKIP_IN_SYNC : constant := 16#00000002#;
   SCRUB_DATA_INPUT_FLAG_SKIP_NON_INTEGRITY_DATA : constant := 16#00000004#;
   SCRUB_DATA_INPUT_FLAG_IGNORE_REDUNDANCY : constant := 16#00000008#;
   SCRUB_DATA_INPUT_FLAG_SKIP_DATA : constant := 16#00000010#;
   SCRUB_DATA_INPUT_FLAG_SCRUB_BY_OBJECT_ID : constant := 16#00000020#;
   SCRUB_DATA_INPUT_FLAG_OPLOCK_NOT_ACQUIRED : constant := 16#00000040#;
   SCRUB_DATA_OUTPUT_FLAG_INCOMPLETE : constant := 16#00000001#;
   SCRUB_DATA_OUTPUT_FLAG_NON_USER_DATA_RANGE : constant := 16#00010000#;
   SCRUB_DATA_OUTPUT_FLAG_PARITY_EXTENT_DATA_RETURNED : constant := 16#00020000#;
   SCRUB_DATA_OUTPUT_FLAG_RESUME_CONTEXT_LENGTH_SPECIFIED : constant := 16#00040000#;
   SHUFFLE_FILE_FLAG_SKIP_INITIALIZING_NEW_CLUSTERS : constant := 16#00000001#;
   IO_COMPLETION_MODIFY_STATE : constant := 16#0002#;
   IO_COMPLETION_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SYNCHRONIZE )
       or 16#3# );
   NETWORK_APP_INSTANCE_CSV_FLAGS_VALID_ONLY_IF_CSV_COORDINATOR : constant := 16#00000001#;
   DUPLICATE_CLOSE_SOURCE : constant := 16#00000001#;
   DUPLICATE_SAME_ACCESS : constant := 16#00000002#;
   POWERBUTTON_ACTION_INDEX_NOTHING : constant := 0;
   POWERBUTTON_ACTION_INDEX_SLEEP : constant := 1;
   POWERBUTTON_ACTION_INDEX_HIBERNATE : constant := 2;
   POWERBUTTON_ACTION_INDEX_SHUTDOWN : constant := 3;
   POWERBUTTON_ACTION_INDEX_TURN_OFF_THE_DISPLAY : constant := 4;
   POWERBUTTON_ACTION_VALUE_NOTHING : constant := 0;
   POWERBUTTON_ACTION_VALUE_SLEEP : constant := 2;
   POWERBUTTON_ACTION_VALUE_HIBERNATE : constant := 3;
   POWERBUTTON_ACTION_VALUE_SHUTDOWN : constant := 6;
   POWERBUTTON_ACTION_VALUE_TURN_OFF_THE_DISPLAY : constant := 8;
   PERFSTATE_POLICY_CHANGE_IDEAL : constant := 0;
   PERFSTATE_POLICY_CHANGE_SINGLE : constant := 1;
   PERFSTATE_POLICY_CHANGE_ROCKET : constant := 2;
   PERFSTATE_POLICY_CHANGE_IDEAL_AGGRESSIVE : constant := 3;
   PROCESSOR_THROTTLE_DISABLED : constant := 0;
   PROCESSOR_THROTTLE_ENABLED : constant := 1;
   PROCESSOR_THROTTLE_AUTOMATIC : constant := 2;
   PROCESSOR_PERF_BOOST_POLICY_DISABLED : constant := 0;
   PROCESSOR_PERF_BOOST_POLICY_MAX : constant := 100;
   PROCESSOR_PERF_BOOST_MODE_DISABLED : constant := 0;
   PROCESSOR_PERF_BOOST_MODE_ENABLED : constant := 1;
   PROCESSOR_PERF_BOOST_MODE_AGGRESSIVE : constant := 2;
   PROCESSOR_PERF_BOOST_MODE_EFFICIENT_ENABLED : constant := 3;
   PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE : constant := 4;
   PROCESSOR_PERF_BOOST_MODE_AGGRESSIVE_AT_GUARANTEED : constant := 5;
   PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE_AT_GUARANTEED : constant := 6;
   PROCESSOR_PERF_AUTONOMOUS_MODE_DISABLED : constant := 0;
   PROCESSOR_PERF_AUTONOMOUS_MODE_ENABLED : constant := 1;
   PROCESSOR_PERF_PERFORMANCE_PREFERENCE : constant := 16#ff#;
   PROCESSOR_PERF_ENERGY_PREFERENCE : constant := 0;
   PROCESSOR_PERF_MINIMUM_ACTIVITY_WINDOW : constant := 0;
   PROCESSOR_PERF_MAXIMUM_ACTIVITY_WINDOW : constant := 1270000000;
   PROCESSOR_DUTY_CYCLING_DISABLED : constant := 0;
   PROCESSOR_DUTY_CYCLING_ENABLED : constant := 1;
   CORE_PARKING_POLICY_CHANGE_IDEAL : constant := 0;
   CORE_PARKING_POLICY_CHANGE_SINGLE : constant := 1;
   CORE_PARKING_POLICY_CHANGE_ROCKET : constant := 2;
   CORE_PARKING_POLICY_CHANGE_MULTISTEP : constant := 3;
   POWER_DEVICE_IDLE_POLICY_PERFORMANCE : constant := 0;
   POWER_DEVICE_IDLE_POLICY_CONSERVATIVE : constant := 1;
   POWER_CONNECTIVITY_IN_STANDBY_DISABLED : constant := 0;
   POWER_CONNECTIVITY_IN_STANDBY_ENABLED : constant := 1;
   POWER_CONNECTIVITY_IN_STANDBY_SYSTEM_MANAGED : constant := 2;
   POWER_DISCONNECTED_STANDBY_MODE_NORMAL : constant := 0;
   POWER_DISCONNECTED_STANDBY_MODE_AGGRESSIVE : constant := 1;
   POWER_SYSTEM_MAXIMUM : constant := 7;
   ES_SYSTEM_REQUIRED : constant := 16#00000001#;
   ES_DISPLAY_REQUIRED : constant := 16#00000002#;
   ES_USER_PRESENT : constant := 16#00000004#;
   ES_AWAYMODE_REQUIRED : constant := 16#00000040#;
   ES_CONTINUOUS : constant := 16#80000000#;
   DIAGNOSTIC_REASON_VERSION : constant := 0;
   DIAGNOSTIC_REASON_SIMPLE_STRING : constant := 16#00000001#;
   DIAGNOSTIC_REASON_DETAILED_STRING : constant := 16#00000002#;
   DIAGNOSTIC_REASON_NOT_SPECIFIED : constant := 16#80000000#;
   PDCAP_D0_SUPPORTED : constant := 16#00000001#;
   PDCAP_D1_SUPPORTED : constant := 16#00000002#;
   PDCAP_D2_SUPPORTED : constant := 16#00000004#;
   PDCAP_D3_SUPPORTED : constant := 16#00000008#;
   PDCAP_WAKE_FROM_D0_SUPPORTED : constant := 16#00000010#;
   PDCAP_WAKE_FROM_D1_SUPPORTED : constant := 16#00000020#;
   PDCAP_WAKE_FROM_D2_SUPPORTED : constant := 16#00000040#;
   PDCAP_WAKE_FROM_D3_SUPPORTED : constant := 16#00000080#;
   PDCAP_WARM_EJECT_SUPPORTED : constant := 16#00000100#;
   POWER_SETTING_VALUE_VERSION : constant := 16#1#;
   POWER_PLATFORM_ROLE_V1 : constant := 16#00000001#;
   POWER_PLATFORM_ROLE_V2 : constant := 16#00000002#;
   PROC_IDLE_BUCKET_COUNT : constant := 6;
   PROC_IDLE_BUCKET_COUNT_EX : constant := 16;
   ACPI_PPM_SOFTWARE_ALL : constant := 16#FC#;
   ACPI_PPM_SOFTWARE_ANY : constant := 16#FD#;
   ACPI_PPM_HARDWARE_ALL : constant := 16#FE#;
   MS_PPM_SOFTWARE_ALL : constant := 16#1#;
   PPM_FIRMWARE_ACPI1C2 : constant := 16#00000001#;
   PPM_FIRMWARE_ACPI1C3 : constant := 16#00000002#;
   PPM_FIRMWARE_ACPI1TSTATES : constant := 16#00000004#;
   PPM_FIRMWARE_CST : constant := 16#00000008#;
   PPM_FIRMWARE_CSD : constant := 16#00000010#;
   PPM_FIRMWARE_PCT : constant := 16#00000020#;
   PPM_FIRMWARE_PSS : constant := 16#00000040#;
   PPM_FIRMWARE_XPSS : constant := 16#00000080#;
   PPM_FIRMWARE_PPC : constant := 16#00000100#;
   PPM_FIRMWARE_PSD : constant := 16#00000200#;
   PPM_FIRMWARE_PTC : constant := 16#00000400#;
   PPM_FIRMWARE_TSS : constant := 16#00000800#;
   PPM_FIRMWARE_TPC : constant := 16#00001000#;
   PPM_FIRMWARE_TSD : constant := 16#00002000#;
   PPM_FIRMWARE_PCCH : constant := 16#00004000#;
   PPM_FIRMWARE_PCCP : constant := 16#00008000#;
   PPM_FIRMWARE_OSC : constant := 16#00010000#;
   PPM_FIRMWARE_PDC : constant := 16#00020000#;
   PPM_FIRMWARE_CPC : constant := 16#00040000#;
   PPM_FIRMWARE_LPI : constant := 16#00080000#;
   PPM_PERFORMANCE_IMPLEMENTATION_NONE : constant := 16#00000000#;
   PPM_PERFORMANCE_IMPLEMENTATION_PSTATES : constant := 16#00000001#;
   PPM_PERFORMANCE_IMPLEMENTATION_PCCV1 : constant := 16#00000002#;
   PPM_PERFORMANCE_IMPLEMENTATION_CPPC : constant := 16#00000003#;
   PPM_PERFORMANCE_IMPLEMENTATION_PEP : constant := 16#00000004#;
   PPM_IDLE_IMPLEMENTATION_NONE : constant := 16#00000000#;
   PPM_IDLE_IMPLEMENTATION_CSTATES : constant := 16#00000001#;
   PPM_IDLE_IMPLEMENTATION_PEP : constant := 16#00000002#;
   PPM_IDLE_IMPLEMENTATION_MICROPEP : constant := 16#00000003#;
   PPM_IDLE_IMPLEMENTATION_LPISTATES : constant := 16#00000004#;
   POWER_ACTION_QUERY_ALLOWED : constant := 16#00000001#;
   POWER_ACTION_UI_ALLOWED : constant := 16#00000002#;
   POWER_ACTION_OVERRIDE_APPS : constant := 16#00000004#;
   POWER_ACTION_HIBERBOOT : constant := 16#00000008#;
   POWER_ACTION_USER_NOTIFY : constant := 16#00000010#;
   POWER_ACTION_DOZE_TO_HIBERNATE : constant := 16#00000020#;
   POWER_ACTION_ACPI_CRITICAL : constant := 16#01000000#;
   POWER_ACTION_ACPI_USER_NOTIFY : constant := 16#02000000#;
   POWER_ACTION_DIRECTED_DRIPS : constant := 16#04000000#;
   POWER_ACTION_PSEUDO_TRANSITION : constant := 16#08000000#;
   POWER_ACTION_LIGHTEST_FIRST : constant := 16#10000000#;
   POWER_ACTION_LOCK_CONSOLE : constant := 16#20000000#;
   POWER_ACTION_DISABLE_WAKES : constant := 16#40000000#;
   POWER_ACTION_CRITICAL : constant := 16#80000000#;
   POWER_LEVEL_USER_NOTIFY_TEXT : constant := 16#00000001#;
   POWER_LEVEL_USER_NOTIFY_SOUND : constant := 16#00000002#;
   POWER_LEVEL_USER_NOTIFY_EXEC : constant := 16#00000004#;
   POWER_USER_NOTIFY_BUTTON : constant := 16#00000008#;
   POWER_USER_NOTIFY_SHUTDOWN : constant := 16#00000010#;
   POWER_USER_NOTIFY_FORCED_SHUTDOWN : constant := 16#00000020#;
   POWER_FORCE_TRIGGER_RESET : constant := 16#80000000#;
   BATTERY_DISCHARGE_FLAGS_EVENTCODE_MASK : constant := 16#00000007#;
   BATTERY_DISCHARGE_FLAGS_ENABLE : constant := 16#80000000#;
   NUM_DISCHARGE_POLICIES : constant := 4;
   DISCHARGE_POLICY_CRITICAL : constant := 0;
   DISCHARGE_POLICY_LOW : constant := 1;
   PROCESSOR_IDLESTATE_POLICY_COUNT : constant := 16#3#;
   PO_THROTTLE_NONE : constant := 0;
   PO_THROTTLE_CONSTANT : constant := 1;
   PO_THROTTLE_DEGRADE : constant := 2;
   PO_THROTTLE_ADAPTIVE : constant := 3;
   PO_THROTTLE_MAXIMUM : constant := 4;
   HIBERFILE_TYPE_NONE : constant := 16#00#;
   HIBERFILE_TYPE_REDUCED : constant := 16#01#;
   HIBERFILE_TYPE_FULL : constant := 16#02#;
   HIBERFILE_TYPE_MAX : constant := 16#03#;
   -- #include <pshpack4.h>
   -- #include <winnt.h>
   IMAGE_DOS_SIGNATURE : constant := 16#5A4D#;
   IMAGE_OS2_SIGNATURE : constant := 16#454E#;
   IMAGE_OS2_SIGNATURE_LE : constant := 16#454C#;
   IMAGE_VXD_SIGNATURE : constant := 16#454C#;
   IMAGE_NT_SIGNATURE : constant := 16#00004550#;
   -- #include <pshpack2.h>
   -- #include <winnt.h>
   -- #include <poppack.h>
   -- #include <winnt.h>
   IMAGE_SIZEOF_FILE_HEADER : constant := 20;
   IMAGE_FILE_RELOCS_STRIPPED : constant := 16#0001#;
   IMAGE_FILE_EXECUTABLE_IMAGE : constant := 16#0002#;
   IMAGE_FILE_LINE_NUMS_STRIPPED : constant := 16#0004#;
   IMAGE_FILE_LOCAL_SYMS_STRIPPED : constant := 16#0008#;
   IMAGE_FILE_AGGRESIVE_WS_TRIM : constant := 16#0010#;
   IMAGE_FILE_LARGE_ADDRESS_AWARE : constant := 16#0020#;
   IMAGE_FILE_BYTES_REVERSED_LO : constant := 16#0080#;
   IMAGE_FILE_32BIT_MACHINE : constant := 16#0100#;
   IMAGE_FILE_DEBUG_STRIPPED : constant := 16#0200#;
   IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP : constant := 16#0400#;
   IMAGE_FILE_NET_RUN_FROM_SWAP : constant := 16#0800#;
   IMAGE_FILE_SYSTEM : constant := 16#1000#;
   IMAGE_FILE_DLL : constant := 16#2000#;
   IMAGE_FILE_UP_SYSTEM_ONLY : constant := 16#4000#;
   IMAGE_FILE_BYTES_REVERSED_HI : constant := 16#8000#;
   IMAGE_FILE_MACHINE_UNKNOWN : constant := 0;
   IMAGE_FILE_MACHINE_TARGET_HOST : constant := 16#0001#;
   IMAGE_FILE_MACHINE_I386 : constant := 16#014c#;
   IMAGE_FILE_MACHINE_R3000 : constant := 16#0162#;
   IMAGE_FILE_MACHINE_R4000 : constant := 16#0166#;
   IMAGE_FILE_MACHINE_R10000 : constant := 16#0168#;
   IMAGE_FILE_MACHINE_WCEMIPSV2 : constant := 16#0169#;
   IMAGE_FILE_MACHINE_ALPHA : constant := 16#0184#;
   IMAGE_FILE_MACHINE_SH3 : constant := 16#01a2#;
   IMAGE_FILE_MACHINE_SH3DSP : constant := 16#01a3#;
   IMAGE_FILE_MACHINE_SH3E : constant := 16#01a4#;
   IMAGE_FILE_MACHINE_SH4 : constant := 16#01a6#;
   IMAGE_FILE_MACHINE_SH5 : constant := 16#01a8#;
   IMAGE_FILE_MACHINE_ARM : constant := 16#01c0#;
   IMAGE_FILE_MACHINE_THUMB : constant := 16#01c2#;
   IMAGE_FILE_MACHINE_ARMNT : constant := 16#01c4#;
   IMAGE_FILE_MACHINE_AM33 : constant := 16#01d3#;
   IMAGE_FILE_MACHINE_POWERPC : constant := 16#01F0#;
   IMAGE_FILE_MACHINE_POWERPCFP : constant := 16#01f1#;
   IMAGE_FILE_MACHINE_IA64 : constant := 16#0200#;
   IMAGE_FILE_MACHINE_MIPS16 : constant := 16#0266#;
   IMAGE_FILE_MACHINE_ALPHA64 : constant := 16#0284#;
   IMAGE_FILE_MACHINE_MIPSFPU : constant := 16#0366#;
   IMAGE_FILE_MACHINE_MIPSFPU16 : constant := 16#0466#;
   IMAGE_FILE_MACHINE_TRICORE : constant := 16#0520#;
   IMAGE_FILE_MACHINE_CEF : constant := 16#0CEF#;
   IMAGE_FILE_MACHINE_EBC : constant := 16#0EBC#;
   IMAGE_FILE_MACHINE_AMD64 : constant := 16#8664#;
   IMAGE_FILE_MACHINE_M32R : constant := 16#9041#;
   IMAGE_FILE_MACHINE_ARM64 : constant := 16#AA64#;
   IMAGE_FILE_MACHINE_CEE : constant := 16#C0EE#;
   IMAGE_NUMBEROF_DIRECTORY_ENTRIES : constant := 16;
   IMAGE_NT_OPTIONAL_HDR32_MAGIC : constant := 16#10b#;
   IMAGE_NT_OPTIONAL_HDR64_MAGIC : constant := 16#20b#;
   IMAGE_ROM_OPTIONAL_HDR_MAGIC : constant := 16#107#;
   IMAGE_SUBSYSTEM_UNKNOWN : constant := 0;
   IMAGE_SUBSYSTEM_NATIVE : constant := 1;
   IMAGE_SUBSYSTEM_WINDOWS_GUI : constant := 2;
   IMAGE_SUBSYSTEM_WINDOWS_CUI : constant := 3;
   IMAGE_SUBSYSTEM_OS2_CUI : constant := 5;
   IMAGE_SUBSYSTEM_POSIX_CUI : constant := 7;
   IMAGE_SUBSYSTEM_NATIVE_WINDOWS : constant := 8;
   IMAGE_SUBSYSTEM_WINDOWS_CE_GUI : constant := 9;
   IMAGE_SUBSYSTEM_EFI_APPLICATION : constant := 10;
   IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER : constant := 11;
   IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER : constant := 12;
   IMAGE_SUBSYSTEM_EFI_ROM : constant := 13;
   IMAGE_SUBSYSTEM_XBOX : constant := 14;
   IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION : constant := 16;
   IMAGE_SUBSYSTEM_XBOX_CODE_CATALOG : constant := 17;
   IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA : constant := 16#0020#;
   IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE : constant := 16#0040#;
   IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY : constant := 16#0080#;
   IMAGE_DLLCHARACTERISTICS_NX_COMPAT : constant := 16#0100#;
   IMAGE_DLLCHARACTERISTICS_NO_ISOLATION : constant := 16#0200#;
   IMAGE_DLLCHARACTERISTICS_NO_SEH : constant := 16#0400#;
   IMAGE_DLLCHARACTERISTICS_NO_BIND : constant := 16#0800#;
   IMAGE_DLLCHARACTERISTICS_APPCONTAINER : constant := 16#1000#;
   IMAGE_DLLCHARACTERISTICS_WDM_DRIVER : constant := 16#2000#;
   IMAGE_DLLCHARACTERISTICS_GUARD_CF : constant := 16#4000#;
   IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE : constant := 16#8000#;
   IMAGE_DIRECTORY_ENTRY_EXPORT : constant := 0;
   IMAGE_DIRECTORY_ENTRY_IMPORT : constant := 1;
   IMAGE_DIRECTORY_ENTRY_RESOURCE : constant := 2;
   IMAGE_DIRECTORY_ENTRY_EXCEPTION : constant := 3;
   IMAGE_DIRECTORY_ENTRY_SECURITY : constant := 4;
   IMAGE_DIRECTORY_ENTRY_BASERELOC : constant := 5;
   IMAGE_DIRECTORY_ENTRY_DEBUG : constant := 6;
   IMAGE_DIRECTORY_ENTRY_ARCHITECTURE : constant := 7;
   IMAGE_DIRECTORY_ENTRY_GLOBALPTR : constant := 8;
   IMAGE_DIRECTORY_ENTRY_TLS : constant := 9;
   IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG : constant := 10;
   IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT : constant := 11;
   IMAGE_DIRECTORY_ENTRY_IAT : constant := 12;
   IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT : constant := 13;
   IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR : constant := 14;
   IMAGE_SIZEOF_SHORT_NAME : constant := 8;
   IMAGE_SIZEOF_SECTION_HEADER : constant := 40;
   IMAGE_SCN_TYPE_NO_PAD : constant := 16#00000008#;
   IMAGE_SCN_CNT_CODE : constant := 16#00000020#;
   IMAGE_SCN_CNT_INITIALIZED_DATA : constant := 16#00000040#;
   IMAGE_SCN_CNT_UNINITIALIZED_DATA : constant := 16#00000080#;
   IMAGE_SCN_LNK_OTHER : constant := 16#00000100#;
   IMAGE_SCN_LNK_INFO : constant := 16#00000200#;
   IMAGE_SCN_LNK_REMOVE : constant := 16#00000800#;
   IMAGE_SCN_LNK_COMDAT : constant := 16#00001000#;
   IMAGE_SCN_NO_DEFER_SPEC_EXC : constant := 16#00004000#;
   IMAGE_SCN_GPREL : constant := 16#00008000#;
   IMAGE_SCN_MEM_FARDATA : constant := 16#00008000#;
   IMAGE_SCN_MEM_PURGEABLE : constant := 16#00020000#;
   IMAGE_SCN_MEM_16BIT : constant := 16#00020000#;
   IMAGE_SCN_MEM_LOCKED : constant := 16#00040000#;
   IMAGE_SCN_MEM_PRELOAD : constant := 16#00080000#;
   IMAGE_SCN_ALIGN_1BYTES : constant := 16#00100000#;
   IMAGE_SCN_ALIGN_2BYTES : constant := 16#00200000#;
   IMAGE_SCN_ALIGN_4BYTES : constant := 16#00300000#;
   IMAGE_SCN_ALIGN_8BYTES : constant := 16#00400000#;
   IMAGE_SCN_ALIGN_16BYTES : constant := 16#00500000#;
   IMAGE_SCN_ALIGN_32BYTES : constant := 16#00600000#;
   IMAGE_SCN_ALIGN_64BYTES : constant := 16#00700000#;
   IMAGE_SCN_ALIGN_128BYTES : constant := 16#00800000#;
   IMAGE_SCN_ALIGN_256BYTES : constant := 16#00900000#;
   IMAGE_SCN_ALIGN_512BYTES : constant := 16#00A00000#;
   IMAGE_SCN_ALIGN_1024BYTES : constant := 16#00B00000#;
   IMAGE_SCN_ALIGN_2048BYTES : constant := 16#00C00000#;
   IMAGE_SCN_ALIGN_4096BYTES : constant := 16#00D00000#;
   IMAGE_SCN_ALIGN_8192BYTES : constant := 16#00E00000#;
   IMAGE_SCN_ALIGN_MASK : constant := 16#00F00000#;
   IMAGE_SCN_LNK_NRELOC_OVFL : constant := 16#01000000#;
   IMAGE_SCN_MEM_DISCARDABLE : constant := 16#02000000#;
   IMAGE_SCN_MEM_NOT_CACHED : constant := 16#04000000#;
   IMAGE_SCN_MEM_NOT_PAGED : constant := 16#08000000#;
   IMAGE_SCN_MEM_SHARED : constant := 16#10000000#;
   IMAGE_SCN_MEM_EXECUTE : constant := 16#20000000#;
   IMAGE_SCN_MEM_READ : constant := 16#40000000#;
   IMAGE_SCN_MEM_WRITE : constant := 16#80000000#;
   IMAGE_SCN_SCALE_INDEX : constant := 16#00000001#;
   -- #include <pshpack2.h>
   -- #include <winnt.h>
   IMAGE_SIZEOF_SYMBOL : constant := 18;
   IMAGE_SYM_UNDEFINED : constant := 0;
   IMAGE_SYM_ABSOLUTE : constant := 1;
   IMAGE_SYM_DEBUG : constant := 2;
   IMAGE_SYM_SECTION_MAX : constant := 16#FEFF#;
   IMAGE_SYM_TYPE_NULL : constant := 16#0000#;
   IMAGE_SYM_TYPE_VOID : constant := 16#0001#;
   IMAGE_SYM_TYPE_CHAR : constant := 16#0002#;
   IMAGE_SYM_TYPE_SHORT : constant := 16#0003#;
   IMAGE_SYM_TYPE_INT : constant := 16#0004#;
   IMAGE_SYM_TYPE_LONG : constant := 16#0005#;
   IMAGE_SYM_TYPE_FLOAT : constant := 16#0006#;
   IMAGE_SYM_TYPE_DOUBLE : constant := 16#0007#;
   IMAGE_SYM_TYPE_STRUCT : constant := 16#0008#;
   IMAGE_SYM_TYPE_UNION : constant := 16#0009#;
   IMAGE_SYM_TYPE_ENUM : constant := 16#000A#;
   IMAGE_SYM_TYPE_MOE : constant := 16#000B#;
   IMAGE_SYM_TYPE_BYTE : constant := 16#000C#;
   IMAGE_SYM_TYPE_WORD : constant := 16#000D#;
   IMAGE_SYM_TYPE_UINT : constant := 16#000E#;
   IMAGE_SYM_TYPE_DWORD : constant := 16#000F#;
   IMAGE_SYM_TYPE_PCODE : constant := 16#8000#;
   IMAGE_SYM_DTYPE_NULL : constant := 0;
   IMAGE_SYM_DTYPE_POINTER : constant := 1;
   IMAGE_SYM_DTYPE_FUNCTION : constant := 2;
   IMAGE_SYM_DTYPE_ARRAY : constant := 3;
   IMAGE_SYM_CLASS_NULL : constant := 16#0000#;
   IMAGE_SYM_CLASS_AUTOMATIC : constant := 16#0001#;
   IMAGE_SYM_CLASS_EXTERNAL : constant := 16#0002#;
   IMAGE_SYM_CLASS_STATIC : constant := 16#0003#;
   IMAGE_SYM_CLASS_REGISTER : constant := 16#0004#;
   IMAGE_SYM_CLASS_EXTERNAL_DEF : constant := 16#0005#;
   IMAGE_SYM_CLASS_LABEL : constant := 16#0006#;
   IMAGE_SYM_CLASS_UNDEFINED_LABEL : constant := 16#0007#;
   IMAGE_SYM_CLASS_MEMBER_OF_STRUCT : constant := 16#0008#;
   IMAGE_SYM_CLASS_ARGUMENT : constant := 16#0009#;
   IMAGE_SYM_CLASS_STRUCT_TAG : constant := 16#000A#;
   IMAGE_SYM_CLASS_MEMBER_OF_UNION : constant := 16#000B#;
   IMAGE_SYM_CLASS_UNION_TAG : constant := 16#000C#;
   IMAGE_SYM_CLASS_TYPE_DEFINITION : constant := 16#000D#;
   IMAGE_SYM_CLASS_UNDEFINED_STATIC : constant := 16#000E#;
   IMAGE_SYM_CLASS_ENUM_TAG : constant := 16#000F#;
   IMAGE_SYM_CLASS_MEMBER_OF_ENUM : constant := 16#0010#;
   IMAGE_SYM_CLASS_REGISTER_PARAM : constant := 16#0011#;
   IMAGE_SYM_CLASS_BIT_FIELD : constant := 16#0012#;
   IMAGE_SYM_CLASS_FAR_EXTERNAL : constant := 16#0044#;
   IMAGE_SYM_CLASS_BLOCK : constant := 16#0064#;
   IMAGE_SYM_CLASS_FUNCTION : constant := 16#0065#;
   IMAGE_SYM_CLASS_END_OF_STRUCT : constant := 16#0066#;
   IMAGE_SYM_CLASS_FILE : constant := 16#0067#;
   IMAGE_SYM_CLASS_SECTION : constant := 16#0068#;
   IMAGE_SYM_CLASS_WEAK_EXTERNAL : constant := 16#0069#;
   IMAGE_SYM_CLASS_CLR_TOKEN : constant := 16#006B#;
   N_BTMASK : constant := 16#000F#;
   N_TMASK : constant := 16#0030#;
   N_TMASK1 : constant := 16#00C0#;
   N_TMASK2 : constant := 16#00F0#;
   N_BTSHFT : constant := 4;
   N_TSHIFT : constant := 2;
   -- #include <pshpack2.h>
   -- #include <winnt.h>
   -- #include <poppack.h>
   -- #include <winnt.h>
   IMAGE_COMDAT_SELECT_NODUPLICATES : constant := 1;
   IMAGE_COMDAT_SELECT_ANY : constant := 2;
   IMAGE_COMDAT_SELECT_SAME_SIZE : constant := 3;
   IMAGE_COMDAT_SELECT_EXACT_MATCH : constant := 4;
   IMAGE_COMDAT_SELECT_ASSOCIATIVE : constant := 5;
   IMAGE_COMDAT_SELECT_LARGEST : constant := 6;
   IMAGE_COMDAT_SELECT_NEWEST : constant := 7;
   IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY : constant := 1;
   IMAGE_WEAK_EXTERN_SEARCH_LIBRARY : constant := 2;
   IMAGE_WEAK_EXTERN_SEARCH_ALIAS : constant := 3;
   IMAGE_WEAK_EXTERN_ANTI_DEPENDENCY : constant := 4;
   IMAGE_REL_I386_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_I386_DIR16 : constant := 16#0001#;
   IMAGE_REL_I386_REL16 : constant := 16#0002#;
   IMAGE_REL_I386_DIR32 : constant := 16#0006#;
   IMAGE_REL_I386_DIR32NB : constant := 16#0007#;
   IMAGE_REL_I386_SEG12 : constant := 16#0009#;
   IMAGE_REL_I386_SECTION : constant := 16#000A#;
   IMAGE_REL_I386_SECREL : constant := 16#000B#;
   IMAGE_REL_I386_TOKEN : constant := 16#000C#;
   IMAGE_REL_I386_SECREL7 : constant := 16#000D#;
   IMAGE_REL_I386_REL32 : constant := 16#0014#;
   IMAGE_REL_MIPS_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_MIPS_REFHALF : constant := 16#0001#;
   IMAGE_REL_MIPS_REFWORD : constant := 16#0002#;
   IMAGE_REL_MIPS_JMPADDR : constant := 16#0003#;
   IMAGE_REL_MIPS_REFHI : constant := 16#0004#;
   IMAGE_REL_MIPS_REFLO : constant := 16#0005#;
   IMAGE_REL_MIPS_GPREL : constant := 16#0006#;
   IMAGE_REL_MIPS_LITERAL : constant := 16#0007#;
   IMAGE_REL_MIPS_SECTION : constant := 16#000A#;
   IMAGE_REL_MIPS_SECREL : constant := 16#000B#;
   IMAGE_REL_MIPS_SECRELLO : constant := 16#000C#;
   IMAGE_REL_MIPS_SECRELHI : constant := 16#000D#;
   IMAGE_REL_MIPS_TOKEN : constant := 16#000E#;
   IMAGE_REL_MIPS_JMPADDR16 : constant := 16#0010#;
   IMAGE_REL_MIPS_REFWORDNB : constant := 16#0022#;
   IMAGE_REL_MIPS_PAIR : constant := 16#0025#;
   IMAGE_REL_ALPHA_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_ALPHA_REFLONG : constant := 16#0001#;
   IMAGE_REL_ALPHA_REFQUAD : constant := 16#0002#;
   IMAGE_REL_ALPHA_GPREL32 : constant := 16#0003#;
   IMAGE_REL_ALPHA_LITERAL : constant := 16#0004#;
   IMAGE_REL_ALPHA_LITUSE : constant := 16#0005#;
   IMAGE_REL_ALPHA_GPDISP : constant := 16#0006#;
   IMAGE_REL_ALPHA_BRADDR : constant := 16#0007#;
   IMAGE_REL_ALPHA_HINT : constant := 16#0008#;
   IMAGE_REL_ALPHA_INLINE_REFLONG : constant := 16#0009#;
   IMAGE_REL_ALPHA_REFHI : constant := 16#000A#;
   IMAGE_REL_ALPHA_REFLO : constant := 16#000B#;
   IMAGE_REL_ALPHA_PAIR : constant := 16#000C#;
   IMAGE_REL_ALPHA_MATCH : constant := 16#000D#;
   IMAGE_REL_ALPHA_SECTION : constant := 16#000E#;
   IMAGE_REL_ALPHA_SECREL : constant := 16#000F#;
   IMAGE_REL_ALPHA_REFLONGNB : constant := 16#0010#;
   IMAGE_REL_ALPHA_SECRELLO : constant := 16#0011#;
   IMAGE_REL_ALPHA_SECRELHI : constant := 16#0012#;
   IMAGE_REL_ALPHA_REFQ3 : constant := 16#0013#;
   IMAGE_REL_ALPHA_REFQ2 : constant := 16#0014#;
   IMAGE_REL_ALPHA_REFQ1 : constant := 16#0015#;
   IMAGE_REL_ALPHA_GPRELLO : constant := 16#0016#;
   IMAGE_REL_ALPHA_GPRELHI : constant := 16#0017#;
   IMAGE_REL_PPC_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_PPC_ADDR64 : constant := 16#0001#;
   IMAGE_REL_PPC_ADDR32 : constant := 16#0002#;
   IMAGE_REL_PPC_ADDR24 : constant := 16#0003#;
   IMAGE_REL_PPC_ADDR16 : constant := 16#0004#;
   IMAGE_REL_PPC_ADDR14 : constant := 16#0005#;
   IMAGE_REL_PPC_REL24 : constant := 16#0006#;
   IMAGE_REL_PPC_REL14 : constant := 16#0007#;
   IMAGE_REL_PPC_TOCREL16 : constant := 16#0008#;
   IMAGE_REL_PPC_TOCREL14 : constant := 16#0009#;
   IMAGE_REL_PPC_ADDR32NB : constant := 16#000A#;
   IMAGE_REL_PPC_SECREL : constant := 16#000B#;
   IMAGE_REL_PPC_SECTION : constant := 16#000C#;
   IMAGE_REL_PPC_IFGLUE : constant := 16#000D#;
   IMAGE_REL_PPC_IMGLUE : constant := 16#000E#;
   IMAGE_REL_PPC_SECREL16 : constant := 16#000F#;
   IMAGE_REL_PPC_REFHI : constant := 16#0010#;
   IMAGE_REL_PPC_REFLO : constant := 16#0011#;
   IMAGE_REL_PPC_PAIR : constant := 16#0012#;
   IMAGE_REL_PPC_SECRELLO : constant := 16#0013#;
   IMAGE_REL_PPC_SECRELHI : constant := 16#0014#;
   IMAGE_REL_PPC_GPREL : constant := 16#0015#;
   IMAGE_REL_PPC_TOKEN : constant := 16#0016#;
   IMAGE_REL_PPC_TYPEMASK : constant := 16#00FF#;
   IMAGE_REL_PPC_NEG : constant := 16#0100#;
   IMAGE_REL_PPC_BRTAKEN : constant := 16#0200#;
   IMAGE_REL_PPC_BRNTAKEN : constant := 16#0400#;
   IMAGE_REL_PPC_TOCDEFN : constant := 16#0800#;
   IMAGE_REL_SH3_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_SH3_DIRECT16 : constant := 16#0001#;
   IMAGE_REL_SH3_DIRECT32 : constant := 16#0002#;
   IMAGE_REL_SH3_DIRECT8 : constant := 16#0003#;
   IMAGE_REL_SH3_DIRECT8_WORD : constant := 16#0004#;
   IMAGE_REL_SH3_DIRECT8_LONG : constant := 16#0005#;
   IMAGE_REL_SH3_DIRECT4 : constant := 16#0006#;
   IMAGE_REL_SH3_DIRECT4_WORD : constant := 16#0007#;
   IMAGE_REL_SH3_DIRECT4_LONG : constant := 16#0008#;
   IMAGE_REL_SH3_PCREL8_WORD : constant := 16#0009#;
   IMAGE_REL_SH3_PCREL8_LONG : constant := 16#000A#;
   IMAGE_REL_SH3_PCREL12_WORD : constant := 16#000B#;
   IMAGE_REL_SH3_STARTOF_SECTION : constant := 16#000C#;
   IMAGE_REL_SH3_SIZEOF_SECTION : constant := 16#000D#;
   IMAGE_REL_SH3_SECTION : constant := 16#000E#;
   IMAGE_REL_SH3_SECREL : constant := 16#000F#;
   IMAGE_REL_SH3_DIRECT32_NB : constant := 16#0010#;
   IMAGE_REL_SH3_GPREL4_LONG : constant := 16#0011#;
   IMAGE_REL_SH3_TOKEN : constant := 16#0012#;
   IMAGE_REL_SHM_PCRELPT : constant := 16#0013#;
   IMAGE_REL_SHM_REFLO : constant := 16#0014#;
   IMAGE_REL_SHM_REFHALF : constant := 16#0015#;
   IMAGE_REL_SHM_RELLO : constant := 16#0016#;
   IMAGE_REL_SHM_RELHALF : constant := 16#0017#;
   IMAGE_REL_SHM_PAIR : constant := 16#0018#;
   IMAGE_REL_SH_NOMODE : constant := 16#8000#;
   IMAGE_REL_ARM_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_ARM_ADDR32 : constant := 16#0001#;
   IMAGE_REL_ARM_ADDR32NB : constant := 16#0002#;
   IMAGE_REL_ARM_BRANCH24 : constant := 16#0003#;
   IMAGE_REL_ARM_BRANCH11 : constant := 16#0004#;
   IMAGE_REL_ARM_TOKEN : constant := 16#0005#;
   IMAGE_REL_ARM_GPREL12 : constant := 16#0006#;
   IMAGE_REL_ARM_GPREL7 : constant := 16#0007#;
   IMAGE_REL_ARM_BLX24 : constant := 16#0008#;
   IMAGE_REL_ARM_BLX11 : constant := 16#0009#;
   IMAGE_REL_ARM_SECTION : constant := 16#000E#;
   IMAGE_REL_ARM_SECREL : constant := 16#000F#;
   IMAGE_REL_ARM_MOV32A : constant := 16#0010#;
   IMAGE_REL_ARM_MOV32 : constant := 16#0010#;
   IMAGE_REL_ARM_MOV32T : constant := 16#0011#;
   IMAGE_REL_THUMB_MOV32 : constant := 16#0011#;
   IMAGE_REL_ARM_BRANCH20T : constant := 16#0012#;
   IMAGE_REL_THUMB_BRANCH20 : constant := 16#0012#;
   IMAGE_REL_ARM_BRANCH24T : constant := 16#0014#;
   IMAGE_REL_THUMB_BRANCH24 : constant := 16#0014#;
   IMAGE_REL_ARM_BLX23T : constant := 16#0015#;
   IMAGE_REL_THUMB_BLX23 : constant := 16#0015#;
   IMAGE_REL_AM_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_AM_ADDR32 : constant := 16#0001#;
   IMAGE_REL_AM_ADDR32NB : constant := 16#0002#;
   IMAGE_REL_AM_CALL32 : constant := 16#0003#;
   IMAGE_REL_AM_FUNCINFO : constant := 16#0004#;
   IMAGE_REL_AM_REL32_1 : constant := 16#0005#;
   IMAGE_REL_AM_REL32_2 : constant := 16#0006#;
   IMAGE_REL_AM_SECREL : constant := 16#0007#;
   IMAGE_REL_AM_SECTION : constant := 16#0008#;
   IMAGE_REL_AM_TOKEN : constant := 16#0009#;
   IMAGE_REL_ARM64_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_ARM64_ADDR32 : constant := 16#0001#;
   IMAGE_REL_ARM64_ADDR32NB : constant := 16#0002#;
   IMAGE_REL_ARM64_BRANCH26 : constant := 16#0003#;
   IMAGE_REL_ARM64_PAGEBASE_REL21 : constant := 16#0004#;
   IMAGE_REL_ARM64_REL21 : constant := 16#0005#;
   IMAGE_REL_ARM64_PAGEOFFSET_12A : constant := 16#0006#;
   IMAGE_REL_ARM64_PAGEOFFSET_12L : constant := 16#0007#;
   IMAGE_REL_ARM64_SECREL : constant := 16#0008#;
   IMAGE_REL_ARM64_SECREL_LOW12A : constant := 16#0009#;
   IMAGE_REL_ARM64_SECREL_HIGH12A : constant := 16#000A#;
   IMAGE_REL_ARM64_SECREL_LOW12L : constant := 16#000B#;
   IMAGE_REL_ARM64_TOKEN : constant := 16#000C#;
   IMAGE_REL_ARM64_SECTION : constant := 16#000D#;
   IMAGE_REL_ARM64_ADDR64 : constant := 16#000E#;
   IMAGE_REL_ARM64_BRANCH19 : constant := 16#000F#;
   IMAGE_REL_AMD64_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_AMD64_ADDR64 : constant := 16#0001#;
   IMAGE_REL_AMD64_ADDR32 : constant := 16#0002#;
   IMAGE_REL_AMD64_ADDR32NB : constant := 16#0003#;
   IMAGE_REL_AMD64_REL32 : constant := 16#0004#;
   IMAGE_REL_AMD64_REL32_1 : constant := 16#0005#;
   IMAGE_REL_AMD64_REL32_2 : constant := 16#0006#;
   IMAGE_REL_AMD64_REL32_3 : constant := 16#0007#;
   IMAGE_REL_AMD64_REL32_4 : constant := 16#0008#;
   IMAGE_REL_AMD64_REL32_5 : constant := 16#0009#;
   IMAGE_REL_AMD64_SECTION : constant := 16#000A#;
   IMAGE_REL_AMD64_SECREL : constant := 16#000B#;
   IMAGE_REL_AMD64_SECREL7 : constant := 16#000C#;
   IMAGE_REL_AMD64_TOKEN : constant := 16#000D#;
   IMAGE_REL_AMD64_SREL32 : constant := 16#000E#;
   IMAGE_REL_AMD64_PAIR : constant := 16#000F#;
   IMAGE_REL_AMD64_SSPAN32 : constant := 16#0010#;
   IMAGE_REL_AMD64_EHANDLER : constant := 16#0011#;
   IMAGE_REL_AMD64_IMPORT_BR : constant := 16#0012#;
   IMAGE_REL_AMD64_IMPORT_CALL : constant := 16#0013#;
   IMAGE_REL_AMD64_CFG_BR : constant := 16#0014#;
   IMAGE_REL_AMD64_CFG_BR_REX : constant := 16#0015#;
   IMAGE_REL_AMD64_CFG_CALL : constant := 16#0016#;
   IMAGE_REL_AMD64_INDIR_BR : constant := 16#0017#;
   IMAGE_REL_AMD64_INDIR_BR_REX : constant := 16#0018#;
   IMAGE_REL_AMD64_INDIR_CALL : constant := 16#0019#;
   IMAGE_REL_AMD64_INDIR_BR_SWITCHTABLE_FIRST : constant := 16#0020#;
   IMAGE_REL_AMD64_INDIR_BR_SWITCHTABLE_LAST : constant := 16#002F#;
   IMAGE_REL_IA64_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_IA64_IMM14 : constant := 16#0001#;
   IMAGE_REL_IA64_IMM22 : constant := 16#0002#;
   IMAGE_REL_IA64_IMM64 : constant := 16#0003#;
   IMAGE_REL_IA64_DIR32 : constant := 16#0004#;
   IMAGE_REL_IA64_DIR64 : constant := 16#0005#;
   IMAGE_REL_IA64_PCREL21B : constant := 16#0006#;
   IMAGE_REL_IA64_PCREL21M : constant := 16#0007#;
   IMAGE_REL_IA64_PCREL21F : constant := 16#0008#;
   IMAGE_REL_IA64_GPREL22 : constant := 16#0009#;
   IMAGE_REL_IA64_LTOFF22 : constant := 16#000A#;
   IMAGE_REL_IA64_SECTION : constant := 16#000B#;
   IMAGE_REL_IA64_SECREL22 : constant := 16#000C#;
   IMAGE_REL_IA64_SECREL64I : constant := 16#000D#;
   IMAGE_REL_IA64_SECREL32 : constant := 16#000E#;
   IMAGE_REL_IA64_DIR32NB : constant := 16#0010#;
   IMAGE_REL_IA64_SREL14 : constant := 16#0011#;
   IMAGE_REL_IA64_SREL22 : constant := 16#0012#;
   IMAGE_REL_IA64_SREL32 : constant := 16#0013#;
   IMAGE_REL_IA64_UREL32 : constant := 16#0014#;
   IMAGE_REL_IA64_PCREL60X : constant := 16#0015#;
   IMAGE_REL_IA64_PCREL60B : constant := 16#0016#;
   IMAGE_REL_IA64_PCREL60F : constant := 16#0017#;
   IMAGE_REL_IA64_PCREL60I : constant := 16#0018#;
   IMAGE_REL_IA64_PCREL60M : constant := 16#0019#;
   IMAGE_REL_IA64_IMMGPREL64 : constant := 16#001A#;
   IMAGE_REL_IA64_TOKEN : constant := 16#001B#;
   IMAGE_REL_IA64_GPREL32 : constant := 16#001C#;
   IMAGE_REL_IA64_ADDEND : constant := 16#001F#;
   IMAGE_REL_CEF_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_CEF_ADDR32 : constant := 16#0001#;
   IMAGE_REL_CEF_ADDR64 : constant := 16#0002#;
   IMAGE_REL_CEF_ADDR32NB : constant := 16#0003#;
   IMAGE_REL_CEF_SECTION : constant := 16#0004#;
   IMAGE_REL_CEF_SECREL : constant := 16#0005#;
   IMAGE_REL_CEF_TOKEN : constant := 16#0006#;
   IMAGE_REL_CEE_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_CEE_ADDR32 : constant := 16#0001#;
   IMAGE_REL_CEE_ADDR64 : constant := 16#0002#;
   IMAGE_REL_CEE_ADDR32NB : constant := 16#0003#;
   IMAGE_REL_CEE_SECTION : constant := 16#0004#;
   IMAGE_REL_CEE_SECREL : constant := 16#0005#;
   IMAGE_REL_CEE_TOKEN : constant := 16#0006#;
   IMAGE_REL_M32R_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_M32R_ADDR32 : constant := 16#0001#;
   IMAGE_REL_M32R_ADDR32NB : constant := 16#0002#;
   IMAGE_REL_M32R_ADDR24 : constant := 16#0003#;
   IMAGE_REL_M32R_GPREL16 : constant := 16#0004#;
   IMAGE_REL_M32R_PCREL24 : constant := 16#0005#;
   IMAGE_REL_M32R_PCREL16 : constant := 16#0006#;
   IMAGE_REL_M32R_PCREL8 : constant := 16#0007#;
   IMAGE_REL_M32R_REFHALF : constant := 16#0008#;
   IMAGE_REL_M32R_REFHI : constant := 16#0009#;
   IMAGE_REL_M32R_REFLO : constant := 16#000A#;
   IMAGE_REL_M32R_PAIR : constant := 16#000B#;
   IMAGE_REL_M32R_SECTION : constant := 16#000C#;
   IMAGE_REL_M32R_SECREL32 : constant := 16#000D#;
   IMAGE_REL_M32R_TOKEN : constant := 16#000E#;
   IMAGE_REL_EBC_ABSOLUTE : constant := 16#0000#;
   IMAGE_REL_EBC_ADDR32NB : constant := 16#0001#;
   IMAGE_REL_EBC_REL32 : constant := 16#0002#;
   IMAGE_REL_EBC_SECTION : constant := 16#0003#;
   IMAGE_REL_EBC_SECREL : constant := 16#0004#;
   EMARCH_ENC_I17_IMM7B_INST_WORD_X : constant := 3;
   EMARCH_ENC_I17_IMM7B_SIZE_X : constant := 7;
   EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X : constant := 4;
   EMARCH_ENC_I17_IMM7B_VAL_POS_X : constant := 0;
   EMARCH_ENC_I17_IMM9D_INST_WORD_X : constant := 3;
   EMARCH_ENC_I17_IMM9D_SIZE_X : constant := 9;
   EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X : constant := 18;
   EMARCH_ENC_I17_IMM9D_VAL_POS_X : constant := 7;
   EMARCH_ENC_I17_IMM5C_INST_WORD_X : constant := 3;
   EMARCH_ENC_I17_IMM5C_SIZE_X : constant := 5;
   EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X : constant := 13;
   EMARCH_ENC_I17_IMM5C_VAL_POS_X : constant := 16;
   EMARCH_ENC_I17_IC_INST_WORD_X : constant := 3;
   EMARCH_ENC_I17_IC_SIZE_X : constant := 1;
   EMARCH_ENC_I17_IC_INST_WORD_POS_X : constant := 12;
   EMARCH_ENC_I17_IC_VAL_POS_X : constant := 21;
   EMARCH_ENC_I17_IMM41a_INST_WORD_X : constant := 1;
   EMARCH_ENC_I17_IMM41a_SIZE_X : constant := 10;
   EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X : constant := 14;
   EMARCH_ENC_I17_IMM41a_VAL_POS_X : constant := 22;
   EMARCH_ENC_I17_IMM41b_INST_WORD_X : constant := 1;
   EMARCH_ENC_I17_IMM41b_SIZE_X : constant := 8;
   EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X : constant := 24;
   EMARCH_ENC_I17_IMM41b_VAL_POS_X : constant := 32;
   EMARCH_ENC_I17_IMM41c_INST_WORD_X : constant := 2;
   EMARCH_ENC_I17_IMM41c_SIZE_X : constant := 23;
   EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X : constant := 0;
   EMARCH_ENC_I17_IMM41c_VAL_POS_X : constant := 40;
   EMARCH_ENC_I17_SIGN_INST_WORD_X : constant := 3;
   EMARCH_ENC_I17_SIGN_SIZE_X : constant := 1;
   EMARCH_ENC_I17_SIGN_INST_WORD_POS_X : constant := 27;
   EMARCH_ENC_I17_SIGN_VAL_POS_X : constant := 63;
   X3_OPCODE_INST_WORD_X : constant := 3;
   X3_OPCODE_SIZE_X : constant := 4;
   X3_OPCODE_INST_WORD_POS_X : constant := 28;
   X3_OPCODE_SIGN_VAL_POS_X : constant := 0;
   X3_I_INST_WORD_X : constant := 3;
   X3_I_SIZE_X : constant := 1;
   X3_I_INST_WORD_POS_X : constant := 27;
   X3_I_SIGN_VAL_POS_X : constant := 59;
   X3_D_WH_INST_WORD_X : constant := 3;
   X3_D_WH_SIZE_X : constant := 3;
   X3_D_WH_INST_WORD_POS_X : constant := 24;
   X3_D_WH_SIGN_VAL_POS_X : constant := 0;
   X3_IMM20_INST_WORD_X : constant := 3;
   X3_IMM20_SIZE_X : constant := 20;
   X3_IMM20_INST_WORD_POS_X : constant := 4;
   X3_IMM20_SIGN_VAL_POS_X : constant := 0;
   X3_IMM39_1_INST_WORD_X : constant := 2;
   X3_IMM39_1_SIZE_X : constant := 23;
   X3_IMM39_1_INST_WORD_POS_X : constant := 0;
   X3_IMM39_1_SIGN_VAL_POS_X : constant := 36;
   X3_IMM39_2_INST_WORD_X : constant := 1;
   X3_IMM39_2_SIZE_X : constant := 16;
   X3_IMM39_2_INST_WORD_POS_X : constant := 16;
   X3_IMM39_2_SIGN_VAL_POS_X : constant := 20;
   X3_P_INST_WORD_X : constant := 3;
   X3_P_SIZE_X : constant := 4;
   X3_P_INST_WORD_POS_X : constant := 0;
   X3_P_SIGN_VAL_POS_X : constant := 0;
   X3_TMPLT_INST_WORD_X : constant := 0;
   X3_TMPLT_SIZE_X : constant := 4;
   X3_TMPLT_INST_WORD_POS_X : constant := 0;
   X3_TMPLT_SIGN_VAL_POS_X : constant := 0;
   X3_BTYPE_QP_INST_WORD_X : constant := 2;
   X3_BTYPE_QP_SIZE_X : constant := 9;
   X3_BTYPE_QP_INST_WORD_POS_X : constant := 23;
   X3_BTYPE_QP_INST_VAL_POS_X : constant := 0;
   X3_EMPTY_INST_WORD_X : constant := 1;
   X3_EMPTY_SIZE_X : constant := 2;
   X3_EMPTY_INST_WORD_POS_X : constant := 14;
   X3_EMPTY_INST_VAL_POS_X : constant := 0;
   -- #include <poppack.h>
   -- #include <winnt.h>
   IMAGE_REL_BASED_ABSOLUTE : constant := 0;
   IMAGE_REL_BASED_HIGH : constant := 1;
   IMAGE_REL_BASED_LOW : constant := 2;
   IMAGE_REL_BASED_HIGHLOW : constant := 3;
   IMAGE_REL_BASED_HIGHADJ : constant := 4;
   IMAGE_REL_BASED_MACHINE_SPECIFIC_5 : constant := 5;
   IMAGE_REL_BASED_RESERVED : constant := 6;
   IMAGE_REL_BASED_MACHINE_SPECIFIC_7 : constant := 7;
   IMAGE_REL_BASED_MACHINE_SPECIFIC_8 : constant := 8;
   IMAGE_REL_BASED_MACHINE_SPECIFIC_9 : constant := 9;
   IMAGE_REL_BASED_DIR64 : constant := 10;
   IMAGE_REL_BASED_IA64_IMM64 : constant := 9;
   IMAGE_REL_BASED_MIPS_JMPADDR : constant := 5;
   IMAGE_REL_BASED_MIPS_JMPADDR16 : constant := 9;
   IMAGE_REL_BASED_ARM_MOV32 : constant := 5;
   IMAGE_REL_BASED_THUMB_MOV32 : constant := 7;
   IMAGE_ARCHIVE_START_SIZE : constant := 8;
   IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR : constant := 60;
   -- #include <pshpack8.h>
   -- #include <winnt.h>
   -- #include <poppack.h>
   -- #include <winnt.h>
   IMAGE_ORDINAL_FLAG64 : constant := 16#8000000000000000#;
   IMAGE_ORDINAL_FLAG32 : constant := 16#80000000#;
   IMAGE_RESOURCE_NAME_IS_STRING : constant := 16#80000000#;
   IMAGE_RESOURCE_DATA_IS_DIRECTORY : constant := 16#80000000#;
   -- #include <pshpack1.h>
   -- #include <winnt.h>
   -- #include <poppack.h>
   -- #include <winnt.h>
   IMAGE_DYNAMIC_RELOCATION_GUARD_RF_PROLOGUE : constant := 16#00000001#;
   IMAGE_DYNAMIC_RELOCATION_GUARD_RF_EPILOGUE : constant := 16#00000002#;
   IMAGE_DYNAMIC_RELOCATION_GUARD_IMPORT_CONTROL_TRANSFER : constant := 16#00000003#;
   IMAGE_DYNAMIC_RELOCATION_GUARD_INDIR_CONTROL_TRANSFER : constant := 16#00000004#;
   IMAGE_DYNAMIC_RELOCATION_GUARD_SWITCHTABLE_BRANCH : constant := 16#00000005#;
   -- #include <pshpack1.h>
   -- #include <winnt.h>
   -- #include <poppack.h>
   -- #include <winnt.h>
   IMAGE_HOT_PATCH_BASE_OBLIGATORY : constant := 16#00000001#;
   IMAGE_HOT_PATCH_BASE_CAN_ROLL_BACK : constant := 16#00000002#;
   IMAGE_HOT_PATCH_CHUNK_INVERSE : constant := 16#80000000#;
   IMAGE_HOT_PATCH_CHUNK_OBLIGATORY : constant := 16#40000000#;
   IMAGE_HOT_PATCH_CHUNK_RESERVED : constant := 16#3FF03000#;
   IMAGE_HOT_PATCH_CHUNK_TYPE : constant := 16#000FC000#;
   IMAGE_HOT_PATCH_CHUNK_SOURCE_RVA : constant := 16#00008000#;
   IMAGE_HOT_PATCH_CHUNK_TARGET_RVA : constant := 16#00004000#;
   IMAGE_HOT_PATCH_CHUNK_SIZE : constant := 16#00000FFF#;
   IMAGE_HOT_PATCH_NONE : constant := 16#00000000#;
   IMAGE_HOT_PATCH_FUNCTION : constant := 16#0001C000#;
   IMAGE_HOT_PATCH_ABSOLUTE : constant := 16#0002C000#;
   IMAGE_HOT_PATCH_REL32 : constant := 16#0003C000#;
   IMAGE_HOT_PATCH_CALL_TARGET : constant := 16#00044000#;
   IMAGE_HOT_PATCH_INDIRECT : constant := 16#0005C000#;
   IMAGE_HOT_PATCH_NO_CALL_TARGET : constant := 16#00064000#;
   IMAGE_HOT_PATCH_DYNAMIC_VALUE : constant := 16#00078000#;
   IMAGE_GUARD_CF_INSTRUMENTED : constant := 16#00000100#;
   IMAGE_GUARD_CFW_INSTRUMENTED : constant := 16#00000200#;
   IMAGE_GUARD_CF_FUNCTION_TABLE_PRESENT : constant := 16#00000400#;
   IMAGE_GUARD_SECURITY_COOKIE_UNUSED : constant := 16#00000800#;
   IMAGE_GUARD_PROTECT_DELAYLOAD_IAT : constant := 16#00001000#;
   IMAGE_GUARD_DELAYLOAD_IAT_IN_ITS_OWN_SECTION : constant := 16#00002000#;
   IMAGE_GUARD_CF_EXPORT_SUPPRESSION_INFO_PRESENT : constant := 16#00004000#;
   IMAGE_GUARD_CF_ENABLE_EXPORT_SUPPRESSION : constant := 16#00008000#;
   IMAGE_GUARD_CF_LONGJUMP_TABLE_PRESENT : constant := 16#00010000#;
   IMAGE_GUARD_RF_INSTRUMENTED : constant := 16#00020000#;
   IMAGE_GUARD_RF_ENABLE : constant := 16#00040000#;
   IMAGE_GUARD_RF_STRICT : constant := 16#00080000#;
   IMAGE_GUARD_RETPOLINE_PRESENT : constant := 16#00100000#;
   IMAGE_GUARD_EH_CONTINUATION_TABLE_PRESENT : constant := 16#00200000#;
   IMAGE_GUARD_CF_FUNCTION_TABLE_SIZE_MASK : constant := 16#F0000000#;
   IMAGE_GUARD_CF_FUNCTION_TABLE_SIZE_SHIFT : constant := 28;
   IMAGE_GUARD_FLAG_FID_SUPPRESSED : constant := 16#01#;
   IMAGE_GUARD_FLAG_EXPORT_SUPPRESSED : constant := 16#02#;
   IMAGE_ENCLAVE_POLICY_DEBUGGABLE : constant := 16#00000001#;
   IMAGE_ENCLAVE_FLAG_PRIMARY_IMAGE : constant := 16#00000001#;
   IMAGE_ENCLAVE_IMPORT_MATCH_NONE : constant := 16#00000000#;
   IMAGE_ENCLAVE_IMPORT_MATCH_UNIQUE_ID : constant := 16#00000001#;
   IMAGE_ENCLAVE_IMPORT_MATCH_AUTHOR_ID : constant := 16#00000002#;
   IMAGE_ENCLAVE_IMPORT_MATCH_FAMILY_ID : constant := 16#00000003#;
   IMAGE_ENCLAVE_IMPORT_MATCH_IMAGE_ID : constant := 16#00000004#;
   IMAGE_DEBUG_TYPE_UNKNOWN : constant := 0;
   IMAGE_DEBUG_TYPE_COFF : constant := 1;
   IMAGE_DEBUG_TYPE_CODEVIEW : constant := 2;
   IMAGE_DEBUG_TYPE_FPO : constant := 3;
   IMAGE_DEBUG_TYPE_MISC : constant := 4;
   IMAGE_DEBUG_TYPE_EXCEPTION : constant := 5;
   IMAGE_DEBUG_TYPE_FIXUP : constant := 6;
   IMAGE_DEBUG_TYPE_OMAP_TO_SRC : constant := 7;
   IMAGE_DEBUG_TYPE_OMAP_FROM_SRC : constant := 8;
   IMAGE_DEBUG_TYPE_BORLAND : constant := 9;
   IMAGE_DEBUG_TYPE_RESERVED10 : constant := 10;
   IMAGE_DEBUG_TYPE_CLSID : constant := 11;
   IMAGE_DEBUG_TYPE_VC_FEATURE : constant := 12;
   IMAGE_DEBUG_TYPE_POGO : constant := 13;
   IMAGE_DEBUG_TYPE_ILTCG : constant := 14;
   IMAGE_DEBUG_TYPE_MPX : constant := 15;
   IMAGE_DEBUG_TYPE_REPRO : constant := 16;
   IMAGE_DEBUG_TYPE_EX_DLLCHARACTERISTICS : constant := 20;
   IMAGE_DLLCHARACTERISTICS_EX_CET_COMPAT : constant := 16#1#;
   FRAME_FPO : constant := 0;
   FRAME_TRAP : constant := 1;
   FRAME_TSS : constant := 2;
   FRAME_NONFPO : constant := 3;
   SIZEOF_RFPO_DATA : constant := 16;
   IMAGE_DEBUG_MISC_EXENAME : constant := 1;
   IMAGE_SEPARATE_DEBUG_SIGNATURE : constant := 16#4944#;
   NON_PAGED_DEBUG_SIGNATURE : constant := 16#494E#;
   IMAGE_SEPARATE_DEBUG_FLAGS_MASK : constant := 16#8000#;
   IMAGE_SEPARATE_DEBUG_MISMATCH : constant := 16#8000#;
   -- #include <poppack.h>
   -- #include <winnt.h>
   IMPORT_OBJECT_HDR_SIG2 : constant := 16#ffff#;
   -- #include <apiset.h>
   -- [Todo] API_SET_OVERRIDE ( X ) X ## Implementation;
   -- [Todo] API_SET ( X ) X;
   -- #include <winnt.h>
   RTL_RUN_ONCE_INIT : constant := 0;
   RTL_RUN_ONCE_CHECK_ONLY : constant := 16#00000001#;
   RTL_RUN_ONCE_ASYNC : constant := 16#00000002#;
   RTL_RUN_ONCE_INIT_FAILED : constant := 16#00000004#;
   RTL_RUN_ONCE_CTX_RESERVED_BITS : constant := 2;
   FAST_FAIL_LEGACY_GS_VIOLATION : constant := 0;
   FAST_FAIL_VTGUARD_CHECK_FAILURE : constant := 1;
   FAST_FAIL_STACK_COOKIE_CHECK_FAILURE : constant := 2;
   FAST_FAIL_CORRUPT_LIST_ENTRY : constant := 3;
   FAST_FAIL_INCORRECT_STACK : constant := 4;
   FAST_FAIL_INVALID_ARG : constant := 5;
   FAST_FAIL_GS_COOKIE_INIT : constant := 6;
   FAST_FAIL_FATAL_APP_EXIT : constant := 7;
   FAST_FAIL_RANGE_CHECK_FAILURE : constant := 8;
   FAST_FAIL_UNSAFE_REGISTRY_ACCESS : constant := 9;
   FAST_FAIL_GUARD_ICALL_CHECK_FAILURE : constant := 10;
   FAST_FAIL_GUARD_WRITE_CHECK_FAILURE : constant := 11;
   FAST_FAIL_INVALID_FIBER_SWITCH : constant := 12;
   FAST_FAIL_INVALID_SET_OF_CONTEXT : constant := 13;
   FAST_FAIL_INVALID_REFERENCE_COUNT : constant := 14;
   FAST_FAIL_INVALID_JUMP_BUFFER : constant := 18;
   FAST_FAIL_MRDATA_MODIFIED : constant := 19;
   FAST_FAIL_CERTIFICATION_FAILURE : constant := 20;
   FAST_FAIL_INVALID_EXCEPTION_CHAIN : constant := 21;
   FAST_FAIL_CRYPTO_LIBRARY : constant := 22;
   FAST_FAIL_INVALID_CALL_IN_DLL_CALLOUT : constant := 23;
   FAST_FAIL_INVALID_IMAGE_BASE : constant := 24;
   FAST_FAIL_DLOAD_PROTECTION_FAILURE : constant := 25;
   FAST_FAIL_UNSAFE_EXTENSION_CALL : constant := 26;
   FAST_FAIL_DEPRECATED_SERVICE_INVOKED : constant := 27;
   FAST_FAIL_INVALID_BUFFER_ACCESS : constant := 28;
   FAST_FAIL_INVALID_BALANCED_TREE : constant := 29;
   FAST_FAIL_INVALID_NEXT_THREAD : constant := 30;
   FAST_FAIL_GUARD_ICALL_CHECK_SUPPRESSED : constant := 31;
   FAST_FAIL_APCS_DISABLED : constant := 32;
   FAST_FAIL_INVALID_IDLE_STATE : constant := 33;
   FAST_FAIL_MRDATA_PROTECTION_FAILURE : constant := 34;
   FAST_FAIL_UNEXPECTED_HEAP_EXCEPTION : constant := 35;
   FAST_FAIL_INVALID_LOCK_STATE : constant := 36;
   FAST_FAIL_GUARD_JUMPTABLE : constant := 37;
   FAST_FAIL_INVALID_LONGJUMP_TARGET : constant := 38;
   FAST_FAIL_INVALID_DISPATCH_CONTEXT : constant := 39;
   FAST_FAIL_INVALID_THREAD : constant := 40;
   FAST_FAIL_INVALID_SYSCALL_NUMBER : constant := 41;
   FAST_FAIL_INVALID_FILE_OPERATION : constant := 42;
   FAST_FAIL_LPAC_ACCESS_DENIED : constant := 43;
   FAST_FAIL_GUARD_SS_FAILURE : constant := 44;
   FAST_FAIL_LOADER_CONTINUITY_FAILURE : constant := 45;
   FAST_FAIL_GUARD_EXPORT_SUPPRESSION_FAILURE : constant := 46;
   FAST_FAIL_INVALID_CONTROL_STACK : constant := 47;
   FAST_FAIL_SET_CONTEXT_DENIED : constant := 48;
   FAST_FAIL_INVALID_IAT : constant := 49;
   FAST_FAIL_HEAP_METADATA_CORRUPTION : constant := 50;
   FAST_FAIL_PAYLOAD_RESTRICTION_VIOLATION : constant := 51;
   FAST_FAIL_LOW_LABEL_ACCESS_DENIED : constant := 52;
   FAST_FAIL_ENCLAVE_CALL_FAILURE : constant := 53;
   FAST_FAIL_UNHANDLED_LSS_EXCEPTON : constant := 54;
   FAST_FAIL_ADMINLESS_ACCESS_DENIED : constant := 55;
   FAST_FAIL_UNEXPECTED_CALL : constant := 56;
   FAST_FAIL_CONTROL_INVALID_RETURN_ADDRESS : constant := 57;
   FAST_FAIL_UNEXPECTED_HOST_BEHAVIOR : constant := 58;
   FAST_FAIL_FLAGS_CORRUPTION : constant := 59;
   FAST_FAIL_VEH_CORRUPTION : constant := 60;
   FAST_FAIL_ETW_CORRUPTION : constant := 61;
   FAST_FAIL_RIO_ABORT : constant := 62;
   FAST_FAIL_INVALID_PFN : constant := 63;
   FAST_FAIL_INVALID_FAST_FAIL_CODE : constant := 16#FFFFFFFF#;
   HEAP_NO_SERIALIZE : constant := 16#00000001#;
   HEAP_GROWABLE : constant := 16#00000002#;
   HEAP_GENERATE_EXCEPTIONS : constant := 16#00000004#;
   HEAP_ZERO_MEMORY : constant := 16#00000008#;
   HEAP_REALLOC_IN_PLACE_ONLY : constant := 16#00000010#;
   HEAP_TAIL_CHECKING_ENABLED : constant := 16#00000020#;
   HEAP_FREE_CHECKING_ENABLED : constant := 16#00000040#;
   HEAP_DISABLE_COALESCE_ON_FREE : constant := 16#00000080#;
   HEAP_CREATE_ALIGN_16 : constant := 16#00010000#;
   HEAP_CREATE_ENABLE_TRACING : constant := 16#00020000#;
   HEAP_CREATE_ENABLE_EXECUTE : constant := 16#00040000#;
   HEAP_MAXIMUM_TAG : constant := 16#0FFF#;
   HEAP_PSEUDO_TAG_FLAG : constant := 16#8000#;
   HEAP_TAG_SHIFT : constant := 18;
   HEAP_CREATE_SEGMENT_HEAP : constant := 16#00000100#;
   HEAP_CREATE_HARDENED : constant := 16#00000200#;
   IS_TEXT_UNICODE_ASCII16 : constant := 16#0001#;
   IS_TEXT_UNICODE_REVERSE_ASCII16 : constant := 16#0010#;
   IS_TEXT_UNICODE_STATISTICS : constant := 16#0002#;
   IS_TEXT_UNICODE_REVERSE_STATISTICS : constant := 16#0020#;
   IS_TEXT_UNICODE_CONTROLS : constant := 16#0004#;
   IS_TEXT_UNICODE_REVERSE_CONTROLS : constant := 16#0040#;
   IS_TEXT_UNICODE_SIGNATURE : constant := 16#0008#;
   IS_TEXT_UNICODE_REVERSE_SIGNATURE : constant := 16#0080#;
   IS_TEXT_UNICODE_ILLEGAL_CHARS : constant := 16#0100#;
   IS_TEXT_UNICODE_ODD_LENGTH : constant := 16#0200#;
   IS_TEXT_UNICODE_DBCS_LEADBYTE : constant := 16#0400#;
   IS_TEXT_UNICODE_NULL_BYTES : constant := 16#1000#;
   IS_TEXT_UNICODE_UNICODE_MASK : constant := 16#000F#;
   IS_TEXT_UNICODE_REVERSE_MASK : constant := 16#00F0#;
   IS_TEXT_UNICODE_NOT_UNICODE_MASK : constant := 16#0F00#;
   IS_TEXT_UNICODE_NOT_ASCII_MASK : constant := 16#F000#;
   COMPRESSION_FORMAT_NONE : constant := 16#0000#;
   COMPRESSION_FORMAT_DEFAULT : constant := 16#0001#;
   COMPRESSION_FORMAT_LZNT1 : constant := 16#0002#;
   COMPRESSION_FORMAT_XPRESS : constant := 16#0003#;
   COMPRESSION_FORMAT_XPRESS_HUFF : constant := 16#0004#;
   COMPRESSION_ENGINE_STANDARD : constant := 16#0000#;
   COMPRESSION_ENGINE_MAXIMUM : constant := 16#0100#;
   COMPRESSION_ENGINE_HIBER : constant := 16#0200#;
   SEF_DACL_AUTO_INHERIT : constant := 16#01#;
   SEF_SACL_AUTO_INHERIT : constant := 16#02#;
   SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT : constant := 16#04#;
   SEF_AVOID_PRIVILEGE_CHECK : constant := 16#08#;
   SEF_AVOID_OWNER_CHECK : constant := 16#10#;
   SEF_DEFAULT_OWNER_FROM_PARENT : constant := 16#20#;
   SEF_DEFAULT_GROUP_FROM_PARENT : constant := 16#40#;
   SEF_MACL_NO_WRITE_UP : constant := 16#100#;
   SEF_MACL_NO_READ_UP : constant := 16#200#;
   SEF_MACL_NO_EXECUTE_UP : constant := 16#400#;
   SEF_AI_USE_EXTRA_PARAMS : constant := 16#800#;
   SEF_AVOID_OWNER_RESTRICTION : constant := 16#1000#;
   SEF_FORCE_USER_MODE : constant := 16#2000#;
   SEF_MACL_VALID_FLAGS : constant := ( Interfaces.C.Unsigned( SEF_MACL_NO_WRITE_UP )
       or Interfaces.C.Unsigned( SEF_MACL_NO_READ_UP )
       or Interfaces.C.Unsigned( SEF_MACL_NO_EXECUTE_UP ) );
   MESSAGE_RESOURCE_UNICODE : constant := 16#0001#;
   MESSAGE_RESOURCE_UTF8 : constant := 16#0002#;
   VER_EQUAL : constant := 1;
   VER_GREATER : constant := 2;
   VER_GREATER_EQUAL : constant := 3;
   VER_LESS : constant := 4;
   VER_LESS_EQUAL : constant := 5;
   VER_AND : constant := 6;
   VER_OR : constant := 7;
   VER_CONDITION_MASK : constant := 7;
   VER_NUM_BITS_PER_CONDITION_MASK : constant := 3;
   VER_MINORVERSION : constant := 16#0000001#;
   VER_MAJORVERSION : constant := 16#0000002#;
   VER_BUILDNUMBER : constant := 16#0000004#;
   VER_PLATFORMID : constant := 16#0000008#;
   VER_SERVICEPACKMINOR : constant := 16#0000010#;
   VER_SERVICEPACKMAJOR : constant := 16#0000020#;
   VER_SUITENAME : constant := 16#0000040#;
   VER_PRODUCT_TYPE : constant := 16#0000080#;
   VER_NT_WORKSTATION : constant := 16#0000001#;
   VER_NT_DOMAIN_CONTROLLER : constant := 16#0000002#;
   VER_NT_SERVER : constant := 16#0000003#;
   VER_PLATFORM_WIN32s : constant := 0;
   VER_PLATFORM_WIN32_WINDOWS : constant := 1;
   VER_PLATFORM_WIN32_NT : constant := 2;
   RTL_UMS_VERSION : constant := 16#0100#;
   -- [Todo] VRL_PREDEFINED_CLASS_BEGIN ( 1 << 0 );
   -- [Todo] VRL_CUSTOM_CLASS_BEGIN ( 1 << 8 );
   -- [Todo] VRL_CLASS_CONSISTENCY ( VRL_PREDEFINED_CLASS_BEGIN << 0 );
   -- [Todo] VRL_ENABLE_KERNEL_BREAKS ( 1 << 31 );
   CTMF_INCLUDE_APPCONTAINER : constant := 16#00000001#;
   CTMF_INCLUDE_LPAC : constant := 16#00000002#;
   CTMF_VALID_FLAGS : constant := ( Interfaces.C.Unsigned( CTMF_INCLUDE_APPCONTAINER )
       or Interfaces.C.Unsigned( CTMF_INCLUDE_LPAC ) );
   FLUSH_NV_MEMORY_IN_FLAG_NO_DRAIN : constant := 16#00000001#;
   WRITE_NV_MEMORY_FLAG_FLUSH : constant := 16#00000001#;
   WRITE_NV_MEMORY_FLAG_NON_TEMPORAL : constant := 16#00000002#;
   WRITE_NV_MEMORY_FLAG_PERSIST : constant := ( Interfaces.C.Unsigned( WRITE_NV_MEMORY_FLAG_FLUSH )
       or Interfaces.C.Unsigned( WRITE_NV_MEMORY_FLAG_NON_TEMPORAL ) );
   WRITE_NV_MEMORY_FLAG_NO_DRAIN : constant := 16#00000100#;
   FILL_NV_MEMORY_FLAG_FLUSH : constant := 16#00000001#;
   FILL_NV_MEMORY_FLAG_NON_TEMPORAL : constant := 16#00000002#;
   FILL_NV_MEMORY_FLAG_PERSIST : constant := ( Interfaces.C.Unsigned( FILL_NV_MEMORY_FLAG_FLUSH )
       or Interfaces.C.Unsigned( FILL_NV_MEMORY_FLAG_NON_TEMPORAL ) );
   FILL_NV_MEMORY_FLAG_NO_DRAIN : constant := 16#00000100#;
   RTL_CORRELATION_VECTOR_STRING_LENGTH : constant := 129;
   RTL_CORRELATION_VECTOR_VERSION_1 : constant := 1;
   RTL_CORRELATION_VECTOR_VERSION_2 : constant := 2;
   RTL_CORRELATION_VECTOR_V1_PREFIX_LENGTH : constant := 16;
   RTL_CORRELATION_VECTOR_V1_LENGTH : constant := 64;
   RTL_CORRELATION_VECTOR_V2_PREFIX_LENGTH : constant := 22;
   RTL_CORRELATION_VECTOR_V2_LENGTH : constant := 128;
   IMAGE_POLICY_METADATA_VERSION : constant := 1;
   RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO : constant := 16#01000000#;
   RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN : constant := 16#02000000#;
   RTL_CRITICAL_SECTION_FLAG_STATIC_INIT : constant := 16#04000000#;
   RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE : constant := 16#08000000#;
   RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO : constant := 16#10000000#;
   RTL_CRITICAL_SECTION_ALL_FLAG_BITS : constant := 16#FF000000#;
   RTL_CRITICAL_SECTION_DEBUG_FLAG_STATIC_INIT : constant := 16#00000001#;
   RTL_SRWLOCK_INIT : constant := 0;
   RTL_CONDITION_VARIABLE_INIT : constant := 0;
   RTL_CONDITION_VARIABLE_LOCKMODE_SHARED : constant := 16#1#;
   HEAP_OPTIMIZE_RESOURCES_CURRENT_VERSION : constant := 1;
   WT_EXECUTEDEFAULT : constant := 16#00000000#;
   WT_EXECUTEINIOTHREAD : constant := 16#00000001#;
   WT_EXECUTEINUITHREAD : constant := 16#00000002#;
   WT_EXECUTEINWAITTHREAD : constant := 16#00000004#;
   WT_EXECUTEONLYONCE : constant := 16#00000008#;
   WT_EXECUTEINTIMERTHREAD : constant := 16#00000020#;
   WT_EXECUTELONGFUNCTION : constant := 16#00000010#;
   WT_EXECUTEINPERSISTENTIOTHREAD : constant := 16#00000040#;
   WT_EXECUTEINPERSISTENTTHREAD : constant := 16#00000080#;
   WT_TRANSFER_IMPERSONATION : constant := 16#00000100#;
   WT_EXECUTEINLONGTHREAD : constant := 16#00000010#;
   WT_EXECUTEDELETEWAIT : constant := 16#00000008#;
   ACTIVATION_CONTEXT_PATH_TYPE_NONE : constant := 1;
   ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE : constant := 2;
   ACTIVATION_CONTEXT_PATH_TYPE_URL : constant := 3;
   ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF : constant := 4;
   CREATE_BOUNDARY_DESCRIPTOR_ADD_APPCONTAINER_SID : constant := 16#1#;
   PERFORMANCE_DATA_VERSION : constant := 1;
   READ_THREAD_PROFILING_FLAG_DISPATCHING : constant := 16#00000001#;
   READ_THREAD_PROFILING_FLAG_HARDWARE_COUNTERS : constant := 16#00000002#;
   UNIFIEDBUILDREVISION_MIN : constant := 16#00000000#;
   DEVICEFAMILYINFOENUM_UAP : constant := 16#00000000#;
   DEVICEFAMILYINFOENUM_WINDOWS_8X : constant := 16#00000001#;
   DEVICEFAMILYINFOENUM_WINDOWS_PHONE_8X : constant := 16#00000002#;
   DEVICEFAMILYINFOENUM_DESKTOP : constant := 16#00000003#;
   DEVICEFAMILYINFOENUM_MOBILE : constant := 16#00000004#;
   DEVICEFAMILYINFOENUM_XBOX : constant := 16#00000005#;
   DEVICEFAMILYINFOENUM_TEAM : constant := 16#00000006#;
   DEVICEFAMILYINFOENUM_IOT : constant := 16#00000007#;
   DEVICEFAMILYINFOENUM_IOT_HEADLESS : constant := 16#00000008#;
   DEVICEFAMILYINFOENUM_SERVER : constant := 16#00000009#;
   DEVICEFAMILYINFOENUM_HOLOGRAPHIC : constant := 16#0000000A#;
   DEVICEFAMILYINFOENUM_XBOXSRA : constant := 16#0000000B#;
   DEVICEFAMILYINFOENUM_XBOXERA : constant := 16#0000000C#;
   DEVICEFAMILYINFOENUM_SERVER_NANO : constant := 16#0000000D#;
   DEVICEFAMILYINFOENUM_8828080 : constant := 16#0000000E#;
   DEVICEFAMILYINFOENUM_7067329 : constant := 16#0000000F#;
   DEVICEFAMILYINFOENUM_WINDOWS_CORE : constant := 16#00000010#;
   DEVICEFAMILYINFOENUM_WINDOWS_CORE_HEADLESS : constant := 16#00000011#;
   DEVICEFAMILYINFOENUM_MAX : constant := 16#00000011#;
   DEVICEFAMILYDEVICEFORM_UNKNOWN : constant := 16#00000000#;
   DEVICEFAMILYDEVICEFORM_PHONE : constant := 16#00000001#;
   DEVICEFAMILYDEVICEFORM_TABLET : constant := 16#00000002#;
   DEVICEFAMILYDEVICEFORM_DESKTOP : constant := 16#00000003#;
   DEVICEFAMILYDEVICEFORM_NOTEBOOK : constant := 16#00000004#;
   DEVICEFAMILYDEVICEFORM_CONVERTIBLE : constant := 16#00000005#;
   DEVICEFAMILYDEVICEFORM_DETACHABLE : constant := 16#00000006#;
   DEVICEFAMILYDEVICEFORM_ALLINONE : constant := 16#00000007#;
   DEVICEFAMILYDEVICEFORM_STICKPC : constant := 16#00000008#;
   DEVICEFAMILYDEVICEFORM_PUCK : constant := 16#00000009#;
   DEVICEFAMILYDEVICEFORM_LARGESCREEN : constant := 16#0000000A#;
   DEVICEFAMILYDEVICEFORM_HMD : constant := 16#0000000B#;
   DEVICEFAMILYDEVICEFORM_INDUSTRY_HANDHELD : constant := 16#0000000C#;
   DEVICEFAMILYDEVICEFORM_INDUSTRY_TABLET : constant := 16#0000000D#;
   DEVICEFAMILYDEVICEFORM_BANKING : constant := 16#0000000E#;
   DEVICEFAMILYDEVICEFORM_BUILDING_AUTOMATION : constant := 16#0000000F#;
   DEVICEFAMILYDEVICEFORM_DIGITAL_SIGNAGE : constant := 16#00000010#;
   DEVICEFAMILYDEVICEFORM_GAMING : constant := 16#00000011#;
   DEVICEFAMILYDEVICEFORM_HOME_AUTOMATION : constant := 16#00000012#;
   DEVICEFAMILYDEVICEFORM_INDUSTRIAL_AUTOMATION : constant := 16#00000013#;
   DEVICEFAMILYDEVICEFORM_KIOSK : constant := 16#00000014#;
   DEVICEFAMILYDEVICEFORM_MAKER_BOARD : constant := 16#00000015#;
   DEVICEFAMILYDEVICEFORM_MEDICAL : constant := 16#00000016#;
   DEVICEFAMILYDEVICEFORM_NETWORKING : constant := 16#00000017#;
   DEVICEFAMILYDEVICEFORM_POINT_OF_SERVICE : constant := 16#00000018#;
   DEVICEFAMILYDEVICEFORM_PRINTING : constant := 16#00000019#;
   DEVICEFAMILYDEVICEFORM_THIN_CLIENT : constant := 16#0000001A#;
   DEVICEFAMILYDEVICEFORM_TOY : constant := 16#0000001B#;
   DEVICEFAMILYDEVICEFORM_VENDING : constant := 16#0000001C#;
   DEVICEFAMILYDEVICEFORM_INDUSTRY_OTHER : constant := 16#0000001D#;
   DEVICEFAMILYDEVICEFORM_XBOX_ONE : constant := 16#0000001E#;
   DEVICEFAMILYDEVICEFORM_XBOX_ONE_S : constant := 16#0000001F#;
   DEVICEFAMILYDEVICEFORM_XBOX_ONE_X : constant := 16#00000020#;
   DEVICEFAMILYDEVICEFORM_XBOX_ONE_X_DEVKIT : constant := 16#00000021#;
   DEVICEFAMILYDEVICEFORM_MAX : constant := 16#00000021#;
   DLL_PROCESS_ATTACH : constant := 1;
   DLL_THREAD_ATTACH : constant := 2;
   DLL_THREAD_DETACH : constant := 3;
   DLL_PROCESS_DETACH : constant := 0;
   EVENTLOG_SEQUENTIAL_READ : constant := 16#0001#;
   EVENTLOG_SEEK_READ : constant := 16#0002#;
   EVENTLOG_FORWARDS_READ : constant := 16#0004#;
   EVENTLOG_BACKWARDS_READ : constant := 16#0008#;
   EVENTLOG_SUCCESS : constant := 16#0000#;
   EVENTLOG_ERROR_TYPE : constant := 16#0001#;
   EVENTLOG_WARNING_TYPE : constant := 16#0002#;
   EVENTLOG_INFORMATION_TYPE : constant := 16#0004#;
   EVENTLOG_AUDIT_SUCCESS : constant := 16#0008#;
   EVENTLOG_AUDIT_FAILURE : constant := 16#0010#;
   EVENTLOG_START_PAIRED_EVENT : constant := 16#0001#;
   EVENTLOG_END_PAIRED_EVENT : constant := 16#0002#;
   EVENTLOG_END_ALL_PAIRED_EVENTS : constant := 16#0004#;
   EVENTLOG_PAIRED_EVENT_ACTIVE : constant := 16#0008#;
   EVENTLOG_PAIRED_EVENT_INACTIVE : constant := 16#0010#;
   MAXLOGICALLOGNAMESIZE : constant := 256;
   KEY_QUERY_VALUE : constant := 16#0001#;
   KEY_SET_VALUE : constant := 16#0002#;
   KEY_CREATE_SUB_KEY : constant := 16#0004#;
   KEY_ENUMERATE_SUB_KEYS : constant := 16#0008#;
   KEY_NOTIFY : constant := 16#0010#;
   KEY_CREATE_LINK : constant := 16#0020#;
   KEY_WOW64_32KEY : constant := 16#0200#;
   KEY_WOW64_64KEY : constant := 16#0100#;
   KEY_WOW64_RES : constant := 16#0300#;
   REG_OPTION_RESERVED : constant := 16#00000000#;
   REG_OPTION_NON_VOLATILE : constant := 16#00000000#;
   REG_OPTION_VOLATILE : constant := 16#00000001#;
   REG_OPTION_CREATE_LINK : constant := 16#00000002#;
   REG_OPTION_BACKUP_RESTORE : constant := 16#00000004#;
   REG_OPTION_OPEN_LINK : constant := 16#00000008#;
   REG_OPTION_DONT_VIRTUALIZE : constant := 16#00000010#;
   REG_LEGAL_OPTION : constant := ( Interfaces.C.Unsigned( REG_OPTION_RESERVED )
       or Interfaces.C.Unsigned( REG_OPTION_NON_VOLATILE )
       or Interfaces.C.Unsigned( REG_OPTION_VOLATILE )
       or Interfaces.C.Unsigned( REG_OPTION_CREATE_LINK )
       or Interfaces.C.Unsigned( REG_OPTION_BACKUP_RESTORE )
       or Interfaces.C.Unsigned( REG_OPTION_OPEN_LINK )
       or Interfaces.C.Unsigned( REG_OPTION_DONT_VIRTUALIZE ) );
   REG_OPEN_LEGAL_OPTION : constant := ( Interfaces.C.Unsigned( REG_OPTION_RESERVED )
       or Interfaces.C.Unsigned( REG_OPTION_BACKUP_RESTORE )
       or Interfaces.C.Unsigned( REG_OPTION_OPEN_LINK )
       or Interfaces.C.Unsigned( REG_OPTION_DONT_VIRTUALIZE ) );
   REG_CREATED_NEW_KEY : constant := 16#00000001#;
   REG_OPENED_EXISTING_KEY : constant := 16#00000002#;
   REG_STANDARD_FORMAT : constant := 1;
   REG_LATEST_FORMAT : constant := 2;
   REG_NO_COMPRESSION : constant := 4;
   REG_WHOLE_HIVE_VOLATILE : constant := 16#00000001#;
   REG_REFRESH_HIVE : constant := 16#00000002#;
   REG_NO_LAZY_FLUSH : constant := 16#00000004#;
   REG_FORCE_RESTORE : constant := 16#00000008#;
   REG_APP_HIVE : constant := 16#00000010#;
   REG_PROCESS_PRIVATE : constant := 16#00000020#;
   REG_START_JOURNAL : constant := 16#00000040#;
   REG_HIVE_EXACT_FILE_GROWTH : constant := 16#00000080#;
   REG_HIVE_NO_RM : constant := 16#00000100#;
   REG_HIVE_SINGLE_LOG : constant := 16#00000200#;
   REG_BOOT_HIVE : constant := 16#00000400#;
   REG_LOAD_HIVE_OPEN_HANDLE : constant := 16#00000800#;
   REG_FLUSH_HIVE_FILE_GROWTH : constant := 16#00001000#;
   REG_OPEN_READ_ONLY : constant := 16#00002000#;
   REG_IMMUTABLE : constant := 16#00004000#;
   REG_NO_IMPERSONATION_FALLBACK : constant := 16#00008000#;
   REG_APP_HIVE_OPEN_READ_ONLY : constant := REG_OPEN_READ_ONLY;
   REG_FORCE_UNLOAD : constant := 1;
   REG_UNLOAD_LEGAL_FLAGS : constant := REG_FORCE_UNLOAD;
   REG_NOTIFY_CHANGE_NAME : constant := 16#00000001#;
   REG_NOTIFY_CHANGE_ATTRIBUTES : constant := 16#00000002#;
   REG_NOTIFY_CHANGE_LAST_SET : constant := 16#00000004#;
   REG_NOTIFY_CHANGE_SECURITY : constant := 16#00000008#;
   REG_NOTIFY_THREAD_AGNOSTIC : constant := 16#10000000#;
   REG_LEGAL_CHANGE_FILTER : constant := ( Interfaces.C.Unsigned( REG_NOTIFY_CHANGE_NAME )
       or Interfaces.C.Unsigned( REG_NOTIFY_CHANGE_ATTRIBUTES )
       or Interfaces.C.Unsigned( REG_NOTIFY_CHANGE_LAST_SET )
       or Interfaces.C.Unsigned( REG_NOTIFY_CHANGE_SECURITY )
       or Interfaces.C.Unsigned( REG_NOTIFY_THREAD_AGNOSTIC ) );
   REG_NONE : constant := 0;
   REG_SZ : constant := 1;
   REG_EXPAND_SZ : constant := 2;
   REG_BINARY : constant := 3;
   REG_DWORD : constant := 4;
   REG_DWORD_LITTLE_ENDIAN : constant := 4;
   REG_DWORD_BIG_ENDIAN : constant := 5;
   REG_LINK : constant := 6;
   REG_MULTI_SZ : constant := 7;
   REG_RESOURCE_LIST : constant := 8;
   REG_FULL_RESOURCE_DESCRIPTOR : constant := 9;
   REG_RESOURCE_REQUIREMENTS_LIST : constant := 10;
   REG_QWORD : constant := 11;
   REG_QWORD_LITTLE_ENDIAN : constant := 11;
   SERVICE_KERNEL_DRIVER : constant := 16#00000001#;
   SERVICE_FILE_SYSTEM_DRIVER : constant := 16#00000002#;
   SERVICE_ADAPTER : constant := 16#00000004#;
   SERVICE_RECOGNIZER_DRIVER : constant := 16#00000008#;
   SERVICE_DRIVER : constant := ( Interfaces.C.Unsigned( SERVICE_KERNEL_DRIVER )
       or Interfaces.C.Unsigned( SERVICE_FILE_SYSTEM_DRIVER )
       or Interfaces.C.Unsigned( SERVICE_RECOGNIZER_DRIVER ) );
   SERVICE_WIN32_OWN_PROCESS : constant := 16#00000010#;
   SERVICE_WIN32_SHARE_PROCESS : constant := 16#00000020#;
   SERVICE_WIN32 : constant := ( Interfaces.C.Unsigned( SERVICE_WIN32_OWN_PROCESS )
       or Interfaces.C.Unsigned( SERVICE_WIN32_SHARE_PROCESS ) );
   SERVICE_USER_SERVICE : constant := 16#00000040#;
   SERVICE_USERSERVICE_INSTANCE : constant := 16#00000080#;
   SERVICE_USER_SHARE_PROCESS : constant := ( Interfaces.C.Unsigned( SERVICE_USER_SERVICE )
       or Interfaces.C.Unsigned( SERVICE_WIN32_SHARE_PROCESS ) );
   SERVICE_USER_OWN_PROCESS : constant := ( Interfaces.C.Unsigned( SERVICE_USER_SERVICE )
       or Interfaces.C.Unsigned( SERVICE_WIN32_OWN_PROCESS ) );
   SERVICE_INTERACTIVE_PROCESS : constant := 16#00000100#;
   SERVICE_PKG_SERVICE : constant := 16#00000200#;
   SERVICE_TYPE_ALL : constant := ( Interfaces.C.Unsigned( SERVICE_WIN32 )
       or Interfaces.C.Unsigned( SERVICE_ADAPTER )
       or Interfaces.C.Unsigned( SERVICE_DRIVER )
       or Interfaces.C.Unsigned( SERVICE_INTERACTIVE_PROCESS )
       or Interfaces.C.Unsigned( SERVICE_USER_SERVICE )
       or Interfaces.C.Unsigned( SERVICE_USERSERVICE_INSTANCE )
       or Interfaces.C.Unsigned( SERVICE_PKG_SERVICE ) );
   SERVICE_BOOT_START : constant := 16#00000000#;
   SERVICE_SYSTEM_START : constant := 16#00000001#;
   SERVICE_AUTO_START : constant := 16#00000002#;
   SERVICE_DEMAND_START : constant := 16#00000003#;
   SERVICE_DISABLED : constant := 16#00000004#;
   SERVICE_ERROR_IGNORE : constant := 16#00000000#;
   SERVICE_ERROR_NORMAL : constant := 16#00000001#;
   SERVICE_ERROR_SEVERE : constant := 16#00000002#;
   SERVICE_ERROR_CRITICAL : constant := 16#00000003#;
   CM_SERVICE_NETWORK_BOOT_LOAD : constant := 16#00000001#;
   CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD : constant := 16#00000002#;
   CM_SERVICE_USB_DISK_BOOT_LOAD : constant := 16#00000004#;
   CM_SERVICE_SD_DISK_BOOT_LOAD : constant := 16#00000008#;
   CM_SERVICE_USB3_DISK_BOOT_LOAD : constant := 16#00000010#;
   CM_SERVICE_MEASURED_BOOT_LOAD : constant := 16#00000020#;
   CM_SERVICE_VERIFIER_BOOT_LOAD : constant := 16#00000040#;
   CM_SERVICE_WINPE_BOOT_LOAD : constant := 16#00000080#;
   CM_SERVICE_RAM_DISK_BOOT_LOAD : constant := 16#00000100#;
   CM_SERVICE_VALID_PROMOTION_MASK : constant := ( Interfaces.C.Unsigned( CM_SERVICE_NETWORK_BOOT_LOAD )
       or Interfaces.C.Unsigned( CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD )
       or Interfaces.C.Unsigned( CM_SERVICE_USB_DISK_BOOT_LOAD )
       or Interfaces.C.Unsigned( CM_SERVICE_SD_DISK_BOOT_LOAD )
       or Interfaces.C.Unsigned( CM_SERVICE_USB3_DISK_BOOT_LOAD )
       or Interfaces.C.Unsigned( CM_SERVICE_MEASURED_BOOT_LOAD )
       or Interfaces.C.Unsigned( CM_SERVICE_VERIFIER_BOOT_LOAD )
       or Interfaces.C.Unsigned( CM_SERVICE_WINPE_BOOT_LOAD )
       or Interfaces.C.Unsigned( CM_SERVICE_RAM_DISK_BOOT_LOAD ) );
   TAPE_ERASE_SHORT : constant := 0;
   TAPE_ERASE_LONG : constant := 1;
   TAPE_LOAD : constant := 0;
   TAPE_UNLOAD : constant := 1;
   TAPE_TENSION : constant := 2;
   TAPE_LOCK : constant := 3;
   TAPE_UNLOCK : constant := 4;
   TAPE_FORMAT : constant := 5;
   TAPE_SETMARKS : constant := 0;
   TAPE_FILEMARKS : constant := 1;
   TAPE_SHORT_FILEMARKS : constant := 2;
   TAPE_LONG_FILEMARKS : constant := 3;
   TAPE_ABSOLUTE_POSITION : constant := 0;
   TAPE_LOGICAL_POSITION : constant := 1;
   TAPE_PSEUDO_LOGICAL_POSITION : constant := 2;
   TAPE_REWIND : constant := 0;
   TAPE_ABSOLUTE_BLOCK : constant := 1;
   TAPE_LOGICAL_BLOCK : constant := 2;
   TAPE_PSEUDO_LOGICAL_BLOCK : constant := 3;
   TAPE_SPACE_END_OF_DATA : constant := 4;
   TAPE_SPACE_RELATIVE_BLOCKS : constant := 5;
   TAPE_SPACE_FILEMARKS : constant := 6;
   TAPE_SPACE_SEQUENTIAL_FMKS : constant := 7;
   TAPE_SPACE_SETMARKS : constant := 8;
   TAPE_SPACE_SEQUENTIAL_SMKS : constant := 9;
   TAPE_DRIVE_FIXED : constant := 16#00000001#;
   TAPE_DRIVE_SELECT : constant := 16#00000002#;
   TAPE_DRIVE_INITIATOR : constant := 16#00000004#;
   TAPE_DRIVE_ERASE_SHORT : constant := 16#00000010#;
   TAPE_DRIVE_ERASE_LONG : constant := 16#00000020#;
   TAPE_DRIVE_ERASE_BOP_ONLY : constant := 16#00000040#;
   TAPE_DRIVE_ERASE_IMMEDIATE : constant := 16#00000080#;
   TAPE_DRIVE_TAPE_CAPACITY : constant := 16#00000100#;
   TAPE_DRIVE_TAPE_REMAINING : constant := 16#00000200#;
   TAPE_DRIVE_FIXED_BLOCK : constant := 16#00000400#;
   TAPE_DRIVE_VARIABLE_BLOCK : constant := 16#00000800#;
   TAPE_DRIVE_WRITE_PROTECT : constant := 16#00001000#;
   TAPE_DRIVE_EOT_WZ_SIZE : constant := 16#00002000#;
   TAPE_DRIVE_ECC : constant := 16#00010000#;
   TAPE_DRIVE_COMPRESSION : constant := 16#00020000#;
   TAPE_DRIVE_PADDING : constant := 16#00040000#;
   TAPE_DRIVE_REPORT_SMKS : constant := 16#00080000#;
   TAPE_DRIVE_GET_ABSOLUTE_BLK : constant := 16#00100000#;
   TAPE_DRIVE_GET_LOGICAL_BLK : constant := 16#00200000#;
   TAPE_DRIVE_SET_EOT_WZ_SIZE : constant := 16#00400000#;
   TAPE_DRIVE_EJECT_MEDIA : constant := 16#01000000#;
   TAPE_DRIVE_CLEAN_REQUESTS : constant := 16#02000000#;
   TAPE_DRIVE_SET_CMP_BOP_ONLY : constant := 16#04000000#;
   TAPE_DRIVE_RESERVED_BIT : constant := 16#80000000#;
   TAPE_DRIVE_LOAD_UNLOAD : constant := 16#80000001#;
   TAPE_DRIVE_TENSION : constant := 16#80000002#;
   TAPE_DRIVE_LOCK_UNLOCK : constant := 16#80000004#;
   TAPE_DRIVE_REWIND_IMMEDIATE : constant := 16#80000008#;
   TAPE_DRIVE_SET_BLOCK_SIZE : constant := 16#80000010#;
   TAPE_DRIVE_LOAD_UNLD_IMMED : constant := 16#80000020#;
   TAPE_DRIVE_TENSION_IMMED : constant := 16#80000040#;
   TAPE_DRIVE_LOCK_UNLK_IMMED : constant := 16#80000080#;
   TAPE_DRIVE_SET_ECC : constant := 16#80000100#;
   TAPE_DRIVE_SET_COMPRESSION : constant := 16#80000200#;
   TAPE_DRIVE_SET_PADDING : constant := 16#80000400#;
   TAPE_DRIVE_SET_REPORT_SMKS : constant := 16#80000800#;
   TAPE_DRIVE_ABSOLUTE_BLK : constant := 16#80001000#;
   TAPE_DRIVE_ABS_BLK_IMMED : constant := 16#80002000#;
   TAPE_DRIVE_LOGICAL_BLK : constant := 16#80004000#;
   TAPE_DRIVE_LOG_BLK_IMMED : constant := 16#80008000#;
   TAPE_DRIVE_END_OF_DATA : constant := 16#80010000#;
   TAPE_DRIVE_RELATIVE_BLKS : constant := 16#80020000#;
   TAPE_DRIVE_FILEMARKS : constant := 16#80040000#;
   TAPE_DRIVE_SEQUENTIAL_FMKS : constant := 16#80080000#;
   TAPE_DRIVE_SETMARKS : constant := 16#80100000#;
   TAPE_DRIVE_SEQUENTIAL_SMKS : constant := 16#80200000#;
   TAPE_DRIVE_REVERSE_POSITION : constant := 16#80400000#;
   TAPE_DRIVE_SPACE_IMMEDIATE : constant := 16#80800000#;
   TAPE_DRIVE_WRITE_SETMARKS : constant := 16#81000000#;
   TAPE_DRIVE_WRITE_FILEMARKS : constant := 16#82000000#;
   TAPE_DRIVE_WRITE_SHORT_FMKS : constant := 16#84000000#;
   TAPE_DRIVE_WRITE_LONG_FMKS : constant := 16#88000000#;
   TAPE_DRIVE_WRITE_MARK_IMMED : constant := 16#90000000#;
   TAPE_DRIVE_FORMAT : constant := 16#A0000000#;
   TAPE_DRIVE_FORMAT_IMMEDIATE : constant := 16#C0000000#;
   TAPE_DRIVE_HIGH_FEATURES : constant := 16#80000000#;
   TAPE_FIXED_PARTITIONS : constant := 0;
   TAPE_SELECT_PARTITIONS : constant := 1;
   TAPE_INITIATOR_PARTITIONS : constant := 2;
   TAPE_QUERY_DRIVE_PARAMETERS : constant := 0;
   TAPE_QUERY_MEDIA_CAPACITY : constant := 1;
   TAPE_CHECK_FOR_DRIVE_PROBLEM : constant := 2;
   TAPE_QUERY_IO_ERROR_DATA : constant := 3;
   TAPE_QUERY_DEVICE_ERROR_DATA : constant := 4;
   -- #include <ktmtypes.h>
   TRANSACTION_MANAGER_VOLATILE : constant := 16#00000001#;
   TRANSACTION_MANAGER_COMMIT_DEFAULT : constant := 16#00000000#;
   TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME : constant := 16#00000002#;
   TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES : constant := 16#00000004#;
   TRANSACTION_MANAGER_COMMIT_LOWEST : constant := 16#00000008#;
   TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY : constant := 16#00000010#;
   TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS : constant := 16#00000020#;
   TRANSACTION_MANAGER_MAXIMUM_OPTION : constant := 16#0000003F#;
   TRANSACTION_DO_NOT_PROMOTE : constant := 16#00000001#;
   TRANSACTION_MAXIMUM_OPTION : constant := 16#00000001#;
   RESOURCE_MANAGER_VOLATILE : constant := 16#00000001#;
   RESOURCE_MANAGER_COMMUNICATION : constant := 16#00000002#;
   RESOURCE_MANAGER_MAXIMUM_OPTION : constant := 16#00000003#;
   CRM_PROTOCOL_EXPLICIT_MARSHAL_ONLY : constant := 16#00000001#;
   CRM_PROTOCOL_DYNAMIC_MARSHAL_INFO : constant := 16#00000002#;
   CRM_PROTOCOL_MAXIMUM_OPTION : constant := 16#00000003#;
   ENLISTMENT_SUPERIOR : constant := 16#00000001#;
   ENLISTMENT_MAXIMUM_OPTION : constant := 16#00000001#;
   TRANSACTION_NOTIFY_MASK : constant := 16#3FFFFFFF#;
   TRANSACTION_NOTIFY_PREPREPARE : constant := 16#00000001#;
   TRANSACTION_NOTIFY_PREPARE : constant := 16#00000002#;
   TRANSACTION_NOTIFY_COMMIT : constant := 16#00000004#;
   TRANSACTION_NOTIFY_ROLLBACK : constant := 16#00000008#;
   TRANSACTION_NOTIFY_PREPREPARE_COMPLETE : constant := 16#00000010#;
   TRANSACTION_NOTIFY_PREPARE_COMPLETE : constant := 16#00000020#;
   TRANSACTION_NOTIFY_COMMIT_COMPLETE : constant := 16#00000040#;
   TRANSACTION_NOTIFY_ROLLBACK_COMPLETE : constant := 16#00000080#;
   TRANSACTION_NOTIFY_RECOVER : constant := 16#00000100#;
   TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT : constant := 16#00000200#;
   TRANSACTION_NOTIFY_DELEGATE_COMMIT : constant := 16#00000400#;
   TRANSACTION_NOTIFY_RECOVER_QUERY : constant := 16#00000800#;
   TRANSACTION_NOTIFY_ENLIST_PREPREPARE : constant := 16#00001000#;
   TRANSACTION_NOTIFY_LAST_RECOVER : constant := 16#00002000#;
   TRANSACTION_NOTIFY_INDOUBT : constant := 16#00004000#;
   TRANSACTION_NOTIFY_PROPAGATE_PULL : constant := 16#00008000#;
   TRANSACTION_NOTIFY_PROPAGATE_PUSH : constant := 16#00010000#;
   TRANSACTION_NOTIFY_MARSHAL : constant := 16#00020000#;
   TRANSACTION_NOTIFY_ENLIST_MASK : constant := 16#00040000#;
   TRANSACTION_NOTIFY_RM_DISCONNECTED : constant := 16#01000000#;
   TRANSACTION_NOTIFY_TM_ONLINE : constant := 16#02000000#;
   TRANSACTION_NOTIFY_COMMIT_REQUEST : constant := 16#04000000#;
   TRANSACTION_NOTIFY_PROMOTE : constant := 16#08000000#;
   TRANSACTION_NOTIFY_PROMOTE_NEW : constant := 16#10000000#;
   TRANSACTION_NOTIFY_REQUEST_OUTCOME : constant := 16#20000000#;
   TRANSACTION_NOTIFY_COMMIT_FINALIZE : constant := 16#40000000#;
   TRANSACTION_NOTIFICATION_TM_ONLINE_FLAG_IS_CLUSTERED : constant := 16#1#;
   KTM_MARSHAL_BLOB_VERSION_MAJOR : constant := 1;
   KTM_MARSHAL_BLOB_VERSION_MINOR : constant := 1;
   MAX_TRANSACTION_DESCRIPTION_LENGTH : constant := 64;
   MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH : constant := 64;
   -- #include <winnt.h>
   TRANSACTIONMANAGER_QUERY_INFORMATION : constant := 16#0001#;
   TRANSACTIONMANAGER_SET_INFORMATION : constant := 16#0002#;
   TRANSACTIONMANAGER_RECOVER : constant := 16#0004#;
   TRANSACTIONMANAGER_RENAME : constant := 16#0008#;
   TRANSACTIONMANAGER_CREATE_RM : constant := 16#0010#;
   TRANSACTIONMANAGER_BIND_TRANSACTION : constant := 16#0020#;
   TRANSACTIONMANAGER_GENERIC_READ : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_READ )
       or Interfaces.C.Unsigned( TRANSACTIONMANAGER_QUERY_INFORMATION ) );
   TRANSACTIONMANAGER_GENERIC_WRITE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_WRITE )
       or Interfaces.C.Unsigned( TRANSACTIONMANAGER_SET_INFORMATION )
       or Interfaces.C.Unsigned( TRANSACTIONMANAGER_RECOVER )
       or Interfaces.C.Unsigned( TRANSACTIONMANAGER_RENAME )
       or Interfaces.C.Unsigned( TRANSACTIONMANAGER_CREATE_RM ) );
   TRANSACTIONMANAGER_GENERIC_EXECUTE : constant := STANDARD_RIGHTS_EXECUTE;
   TRANSACTIONMANAGER_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( TRANSACTIONMANAGER_GENERIC_READ )
       or Interfaces.C.Unsigned( TRANSACTIONMANAGER_GENERIC_WRITE )
       or Interfaces.C.Unsigned( TRANSACTIONMANAGER_GENERIC_EXECUTE )
       or Interfaces.C.Unsigned( TRANSACTIONMANAGER_BIND_TRANSACTION ) );
   TRANSACTION_QUERY_INFORMATION : constant := 16#0001#;
   TRANSACTION_SET_INFORMATION : constant := 16#0002#;
   TRANSACTION_ENLIST : constant := 16#0004#;
   TRANSACTION_COMMIT : constant := 16#0008#;
   TRANSACTION_ROLLBACK : constant := 16#0010#;
   TRANSACTION_PROPAGATE : constant := 16#0020#;
   TRANSACTION_RIGHT_RESERVED1 : constant := 16#0040#;
   TRANSACTION_GENERIC_READ : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_READ )
       or Interfaces.C.Unsigned( TRANSACTION_QUERY_INFORMATION )
       or Interfaces.C.Unsigned( SYNCHRONIZE ) );
   TRANSACTION_GENERIC_WRITE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_WRITE )
       or Interfaces.C.Unsigned( TRANSACTION_SET_INFORMATION )
       or Interfaces.C.Unsigned( TRANSACTION_COMMIT )
       or Interfaces.C.Unsigned( TRANSACTION_ENLIST )
       or Interfaces.C.Unsigned( TRANSACTION_ROLLBACK )
       or Interfaces.C.Unsigned( TRANSACTION_PROPAGATE )
       or Interfaces.C.Unsigned( SYNCHRONIZE ) );
   TRANSACTION_GENERIC_EXECUTE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_EXECUTE )
       or Interfaces.C.Unsigned( TRANSACTION_COMMIT )
       or Interfaces.C.Unsigned( TRANSACTION_ROLLBACK )
       or Interfaces.C.Unsigned( SYNCHRONIZE ) );
   TRANSACTION_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( TRANSACTION_GENERIC_READ )
       or Interfaces.C.Unsigned( TRANSACTION_GENERIC_WRITE )
       or Interfaces.C.Unsigned( TRANSACTION_GENERIC_EXECUTE ) );
   TRANSACTION_RESOURCE_MANAGER_RIGHTS : constant := ( Interfaces.C.Unsigned( TRANSACTION_GENERIC_READ )
       or Interfaces.C.Unsigned( STANDARD_RIGHTS_WRITE )
       or Interfaces.C.Unsigned( TRANSACTION_SET_INFORMATION )
       or Interfaces.C.Unsigned( TRANSACTION_ENLIST )
       or Interfaces.C.Unsigned( TRANSACTION_ROLLBACK )
       or Interfaces.C.Unsigned( TRANSACTION_PROPAGATE )
       or Interfaces.C.Unsigned( SYNCHRONIZE ) );
   RESOURCEMANAGER_QUERY_INFORMATION : constant := 16#0001#;
   RESOURCEMANAGER_SET_INFORMATION : constant := 16#0002#;
   RESOURCEMANAGER_RECOVER : constant := 16#0004#;
   RESOURCEMANAGER_ENLIST : constant := 16#0008#;
   RESOURCEMANAGER_GET_NOTIFICATION : constant := 16#0010#;
   RESOURCEMANAGER_REGISTER_PROTOCOL : constant := 16#0020#;
   RESOURCEMANAGER_COMPLETE_PROPAGATION : constant := 16#0040#;
   RESOURCEMANAGER_GENERIC_READ : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_READ )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_QUERY_INFORMATION )
       or Interfaces.C.Unsigned( SYNCHRONIZE ) );
   RESOURCEMANAGER_GENERIC_WRITE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_WRITE )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_SET_INFORMATION )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_RECOVER )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_ENLIST )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_GET_NOTIFICATION )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_REGISTER_PROTOCOL )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_COMPLETE_PROPAGATION )
       or Interfaces.C.Unsigned( SYNCHRONIZE ) );
   RESOURCEMANAGER_GENERIC_EXECUTE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_EXECUTE )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_RECOVER )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_ENLIST )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_GET_NOTIFICATION )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_COMPLETE_PROPAGATION )
       or Interfaces.C.Unsigned( SYNCHRONIZE ) );
   RESOURCEMANAGER_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_GENERIC_READ )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_GENERIC_WRITE )
       or Interfaces.C.Unsigned( RESOURCEMANAGER_GENERIC_EXECUTE ) );
   ENLISTMENT_QUERY_INFORMATION : constant := 16#0001#;
   ENLISTMENT_SET_INFORMATION : constant := 16#0002#;
   ENLISTMENT_RECOVER : constant := 16#0004#;
   ENLISTMENT_SUBORDINATE_RIGHTS : constant := 16#0008#;
   ENLISTMENT_SUPERIOR_RIGHTS : constant := 16#0010#;
   ENLISTMENT_GENERIC_READ : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_READ )
       or Interfaces.C.Unsigned( ENLISTMENT_QUERY_INFORMATION ) );
   ENLISTMENT_GENERIC_WRITE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_WRITE )
       or Interfaces.C.Unsigned( ENLISTMENT_SET_INFORMATION )
       or Interfaces.C.Unsigned( ENLISTMENT_RECOVER )
       or Interfaces.C.Unsigned( ENLISTMENT_SUBORDINATE_RIGHTS )
       or Interfaces.C.Unsigned( ENLISTMENT_SUPERIOR_RIGHTS ) );
   ENLISTMENT_GENERIC_EXECUTE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_EXECUTE )
       or Interfaces.C.Unsigned( ENLISTMENT_RECOVER )
       or Interfaces.C.Unsigned( ENLISTMENT_SUBORDINATE_RIGHTS )
       or Interfaces.C.Unsigned( ENLISTMENT_SUPERIOR_RIGHTS ) );
   ENLISTMENT_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( ENLISTMENT_GENERIC_READ )
       or Interfaces.C.Unsigned( ENLISTMENT_GENERIC_WRITE )
       or Interfaces.C.Unsigned( ENLISTMENT_GENERIC_EXECUTE ) );
   ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION : constant := 1;
   ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION : constant := 2;
   ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION : constant := 3;
   ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION : constant := 4;
   ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION : constant := 5;
   ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION : constant := 6;
   ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION : constant := 7;
   ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE : constant := 8;
   ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES : constant := 9;
   ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS : constant := 10;
   ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO : constant := 11;
   ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES : constant := 12;
   -- #include <minwindef.h>
   -- #include <windef.h>
   HFILE_ERROR : constant := 1;
   APP_LOCAL_DEVICE_ID_SIZE : constant := 32;
   DM_UPDATE : constant := 1;
   DM_COPY : constant := 2;
   DM_PROMPT : constant := 4;
   DM_MODIFY : constant := 8;
   DC_FIELDS : constant := 1;
   DC_PAPERS : constant := 2;
   DC_PAPERSIZE : constant := 3;
   DC_MINEXTENT : constant := 4;
   DC_MAXEXTENT : constant := 5;
   DC_BINS : constant := 6;
   DC_DUPLEX : constant := 7;
   DC_SIZE : constant := 8;
   DC_EXTRA : constant := 9;
   DC_VERSION : constant := 10;
   DC_DRIVER : constant := 11;
   DC_BINNAMES : constant := 12;
   DC_ENUMRESOLUTIONS : constant := 13;
   DC_FILEDEPENDENCIES : constant := 14;
   DC_TRUETYPE : constant := 15;
   DC_PAPERNAMES : constant := 16;
   DC_ORIENTATION : constant := 17;
   DC_COPIES : constant := 18;
   DPI_AWARENESS_CONTEXT_UNAWARE : constant := 1;
   DPI_AWARENESS_CONTEXT_SYSTEM_AWARE : constant := 2;
   DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE : constant := 3;
   DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 : constant := 4;
   DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED : constant := 5;
   -- #include <windows.h>
   -- #include <winbase.h>
   -- #include <apisetcconv.h>
   -- #include <winbase.h>
   -- #include <minwinbase.h>
   FIND_FIRST_EX_CASE_SENSITIVE : constant := 16#00000001#;
   FIND_FIRST_EX_LARGE_FETCH : constant := 16#00000002#;
   FIND_FIRST_EX_ON_DISK_ENTRIES_ONLY : constant := 16#00000004#;
   LOCKFILE_FAIL_IMMEDIATELY : constant := 16#00000001#;
   LOCKFILE_EXCLUSIVE_LOCK : constant := 16#00000002#;
   PROCESS_HEAP_REGION : constant := 16#0001#;
   PROCESS_HEAP_UNCOMMITTED_RANGE : constant := 16#0002#;
   PROCESS_HEAP_ENTRY_BUSY : constant := 16#0004#;
   PROCESS_HEAP_SEG_ALLOC : constant := 16#0008#;
   PROCESS_HEAP_ENTRY_MOVEABLE : constant := 16#0010#;
   PROCESS_HEAP_ENTRY_DDESHARE : constant := 16#0020#;
   EXCEPTION_DEBUG_EVENT : constant := 1;
   CREATE_THREAD_DEBUG_EVENT : constant := 2;
   CREATE_PROCESS_DEBUG_EVENT : constant := 3;
   EXIT_THREAD_DEBUG_EVENT : constant := 4;
   EXIT_PROCESS_DEBUG_EVENT : constant := 5;
   LOAD_DLL_DEBUG_EVENT : constant := 6;
   UNLOAD_DLL_DEBUG_EVENT : constant := 7;
   OUTPUT_DEBUG_STRING_EVENT : constant := 8;
   RIP_EVENT : constant := 9;
   LMEM_FIXED : constant := 16#0000#;
   LMEM_MOVEABLE : constant := 16#0002#;
   LMEM_NOCOMPACT : constant := 16#0010#;
   LMEM_NODISCARD : constant := 16#0020#;
   LMEM_ZEROINIT : constant := 16#0040#;
   LMEM_MODIFY : constant := 16#0080#;
   LMEM_DISCARDABLE : constant := 16#0F00#;
   LMEM_VALID_FLAGS : constant := 16#0F72#;
   LMEM_INVALID_HANDLE : constant := 16#8000#;
   LHND : constant := ( Interfaces.C.Unsigned( LMEM_MOVEABLE )
       or Interfaces.C.Unsigned( LMEM_ZEROINIT ) );
   LPTR : constant := ( Interfaces.C.Unsigned( LMEM_FIXED )
       or Interfaces.C.Unsigned( LMEM_ZEROINIT ) );
   NONZEROLHND : constant := LMEM_MOVEABLE;
   NONZEROLPTR : constant := LMEM_FIXED;
   LMEM_DISCARDED : constant := 16#4000#;
   LMEM_LOCKCOUNT : constant := 16#00FF#;
   NUMA_NO_PREFERRED_NODE : constant := Interfaces.C.unsigned_long'mod(-1);
   -- #include <winbase.h>
   -- #include <apiquery2.h>
   -- #include <winbase.h>
   -- #include <processenv.h>
   -- #include <winbase.h>
   -- #include <fileapifromapp.h>
   -- #include <fileapi.h>
   CREATE_NEW : constant := 1;
   CREATE_ALWAYS : constant := 2;
   OPEN_EXISTING : constant := 3;
   OPEN_ALWAYS : constant := 4;
   TRUNCATE_EXISTING : constant := 5;
   INVALID_FILE_SIZE : constant := 16#FFFFFFFF#;
   INVALID_SET_FILE_POINTER : constant := Interfaces.C.unsigned_long'mod(-1);
   INVALID_FILE_ATTRIBUTES : constant := Interfaces.C.unsigned_long'mod(-1);
   -- #include <fileapifromapp.h>
   -- #include <winbase.h>
   -- #include <debugapi.h>
   -- #include <winbase.h>
   -- #include <utilapiset.h>
   -- #include <winbase.h>
   -- #include <handleapi.h>
   -- #include <winbase.h>
   -- #include <errhandlingapi.h>
   -- #include <winbase.h>
   -- #include <fibersapi.h>
   FLS_OUT_OF_INDEXES : constant := 16#FFFFFFFF#;
   -- #include <winbase.h>
   -- #include <namedpipeapi.h>
   -- #include <winbase.h>
   -- #include <profileapi.h>
   -- #include <winbase.h>
   -- #include <heapapi.h>
   -- #include <winbase.h>
   -- #include <ioapiset.h>
   -- #include <winbase.h>
   -- #include <synchapi.h>
   CREATE_MUTEX_INITIAL_OWNER : constant := 16#00000001#;
   CREATE_EVENT_MANUAL_RESET : constant := 16#00000001#;
   CREATE_EVENT_INITIAL_SET : constant := 16#00000002#;
   CREATE_WAITABLE_TIMER_MANUAL_RESET : constant := 16#00000001#;
   CREATE_WAITABLE_TIMER_HIGH_RESOLUTION : constant := 16#00000002#;
   SYNCHRONIZATION_BARRIER_FLAGS_SPIN_ONLY : constant := 16#01#;
   SYNCHRONIZATION_BARRIER_FLAGS_BLOCK_ONLY : constant := 16#02#;
   SYNCHRONIZATION_BARRIER_FLAGS_NO_DELETE : constant := 16#04#;
   -- #include <winbase.h>
   -- #include <interlockedapi.h>
   -- #include <winbase.h>
   -- #include <processthreadsapi.h>
   TLS_OUT_OF_INDEXES : constant := 16#FFFFFFFF#;
   PROC_THREAD_ATTRIBUTE_REPLACE_VALUE : constant := 16#00000001#;
   PROCESS_AFFINITY_ENABLE_AUTO_UPDATE : constant := 16#00000001#;
   THREAD_POWER_THROTTLING_CURRENT_VERSION : constant := 1;
   THREAD_POWER_THROTTLING_EXECUTION_SPEED : constant := 16#1#;
   THREAD_POWER_THROTTLING_VALID_FLAGS : constant := THREAD_POWER_THROTTLING_EXECUTION_SPEED;
   PME_CURRENT_VERSION : constant := 1;
   PME_FAILFAST_ON_COMMIT_FAIL_DISABLE : constant := 16#0#;
   PME_FAILFAST_ON_COMMIT_FAIL_ENABLE : constant := 16#1#;
   PROCESS_POWER_THROTTLING_CURRENT_VERSION : constant := 1;
   PROCESS_POWER_THROTTLING_EXECUTION_SPEED : constant := 16#1#;
   PROCESS_POWER_THROTTLING_VALID_FLAGS : constant := PROCESS_POWER_THROTTLING_EXECUTION_SPEED;
   PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND : constant := 16#1#;
   PROCESS_LEAP_SECOND_INFO_VALID_FLAGS : constant := PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND;
   -- #include <winbase.h>
   -- #include <sysinfoapi.h>
   USER_CET_ENVIRONMENT_WIN32_PROCESS : constant := 16#00000000#;
   USER_CET_ENVIRONMENT_SGX2_ENCLAVE : constant := 16#00000002#;
   USER_CET_ENVIRONMENT_VBS_BASIC_ENCLAVE : constant := 16#00000011#;
   SCEX2_ALT_NETBIOS_NAME : constant := 16#00000001#;
   -- #include <winbase.h>
   -- #include <memoryapi.h>
   FILE_MAP_COPY : constant := 16#00000001#;
   FILE_MAP_RESERVE : constant := 16#80000000#;
   FILE_MAP_TARGETS_INVALID : constant := 16#40000000#;
   FILE_MAP_LARGE_PAGES : constant := 16#20000000#;
   FILE_CACHE_MAX_HARD_ENABLE : constant := 16#00000001#;
   FILE_CACHE_MAX_HARD_DISABLE : constant := 16#00000002#;
   FILE_CACHE_MIN_HARD_ENABLE : constant := 16#00000004#;
   FILE_CACHE_MIN_HARD_DISABLE : constant := 16#00000008#;
   MEHC_PATROL_SCRUBBER_PRESENT : constant := 16#1#;
   -- #include <winbase.h>
   -- #include <enclaveapi.h>
   -- #include <winbase.h>
   -- #include <threadpoollegacyapiset.h>
   -- #include <winbase.h>
   -- #include <threadpoolapiset.h>
   -- #include <winbase.h>
   -- #include <jobapi.h>
   -- #include <winbase.h>
   -- #include <jobapi2.h>
   -- #include <winbase.h>
   -- #include <wow64apiset.h>
   -- #include <winbase.h>
   -- #include <libloaderapi.h>
   FIND_RESOURCE_DIRECTORY_TYPES : constant := 16#0100#;
   FIND_RESOURCE_DIRECTORY_NAMES : constant := 16#0200#;
   FIND_RESOURCE_DIRECTORY_LANGUAGES : constant := 16#0400#;
   RESOURCE_ENUM_LN : constant := 16#0001#;
   RESOURCE_ENUM_MUI : constant := 16#0002#;
   RESOURCE_ENUM_MUI_SYSTEM : constant := 16#0004#;
   RESOURCE_ENUM_VALIDATE : constant := 16#0008#;
   RESOURCE_ENUM_MODULE_EXACT : constant := 16#0010#;
   SUPPORT_LANG_NUMBER : constant := 32;
   GET_MODULE_HANDLE_EX_FLAG_PIN : constant := 16#00000001#;
   GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT : constant := 16#00000002#;
   GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS : constant := 16#00000004#;
   CURRENT_IMPORT_REDIRECTION_VERSION : constant := 1;
   DONT_RESOLVE_DLL_REFERENCES : constant := 16#00000001#;
   LOAD_LIBRARY_AS_DATAFILE : constant := 16#00000002#;
   LOAD_WITH_ALTERED_SEARCH_PATH : constant := 16#00000008#;
   LOAD_IGNORE_CODE_AUTHZ_LEVEL : constant := 16#00000010#;
   LOAD_LIBRARY_AS_IMAGE_RESOURCE : constant := 16#00000020#;
   LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE : constant := 16#00000040#;
   LOAD_LIBRARY_REQUIRE_SIGNED_TARGET : constant := 16#00000080#;
   LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR : constant := 16#00000100#;
   LOAD_LIBRARY_SEARCH_APPLICATION_DIR : constant := 16#00000200#;
   LOAD_LIBRARY_SEARCH_USER_DIRS : constant := 16#00000400#;
   LOAD_LIBRARY_SEARCH_SYSTEM32 : constant := 16#00000800#;
   LOAD_LIBRARY_SEARCH_DEFAULT_DIRS : constant := 16#00001000#;
   LOAD_LIBRARY_SAFE_CURRENT_DIRS : constant := 16#00002000#;
   LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER : constant := 16#00004000#;
   LOAD_LIBRARY_OS_INTEGRITY_CONTINUITY : constant := 16#00008000#;
   -- #include <winbase.h>
   -- #include <securitybaseapi.h>
   -- #include <winbase.h>
   -- #include <namespaceapi.h>
   PRIVATE_NAMESPACE_FLAG_DESTROY : constant := 16#00000001#;
   -- #include <winbase.h>
   -- #include <systemtopologyapi.h>
   -- #include <winbase.h>
   -- #include <processtopologyapi.h>
   -- #include <winbase.h>
   -- #include <securityappcontainer.h>
   -- #include <winbase.h>
   -- #include <realtimeapiset.h>
   -- #include <winbase.h>
   FILE_BEGIN : constant := 0;
   FILE_CURRENT : constant := 1;
   FILE_END : constant := 2;
   WAIT_FAILED : constant := 16#FFFFFFFF#;
   WAIT_OBJECT_0 : constant := 0;
   WAIT_ABANDONED : constant := 0;
   WAIT_ABANDONED_0 : constant := 0;
   FILE_FLAG_WRITE_THROUGH : constant := 16#80000000#;
   FILE_FLAG_OVERLAPPED : constant := 16#40000000#;
   FILE_FLAG_NO_BUFFERING : constant := 16#20000000#;
   FILE_FLAG_RANDOM_ACCESS : constant := 16#10000000#;
   FILE_FLAG_SEQUENTIAL_SCAN : constant := 16#08000000#;
   FILE_FLAG_DELETE_ON_CLOSE : constant := 16#04000000#;
   FILE_FLAG_BACKUP_SEMANTICS : constant := 16#02000000#;
   FILE_FLAG_POSIX_SEMANTICS : constant := 16#01000000#;
   FILE_FLAG_SESSION_AWARE : constant := 16#00800000#;
   FILE_FLAG_OPEN_REPARSE_POINT : constant := 16#00200000#;
   FILE_FLAG_OPEN_NO_RECALL : constant := 16#00100000#;
   FILE_FLAG_FIRST_PIPE_INSTANCE : constant := 16#00080000#;
   FILE_FLAG_OPEN_REQUIRING_OPLOCK : constant := 16#00040000#;
   PROGRESS_CONTINUE : constant := 0;
   PROGRESS_CANCEL : constant := 1;
   PROGRESS_STOP : constant := 2;
   PROGRESS_QUIET : constant := 3;
   CALLBACK_CHUNK_FINISHED : constant := 16#00000000#;
   CALLBACK_STREAM_SWITCH : constant := 16#00000001#;
   COPY_FILE_FAIL_IF_EXISTS : constant := 16#00000001#;
   COPY_FILE_RESTARTABLE : constant := 16#00000002#;
   COPY_FILE_OPEN_SOURCE_FOR_WRITE : constant := 16#00000004#;
   COPY_FILE_ALLOW_DECRYPTED_DESTINATION : constant := 16#00000008#;
   COPY_FILE_COPY_SYMLINK : constant := 16#00000800#;
   COPY_FILE_NO_BUFFERING : constant := 16#00001000#;
   COPY_FILE_REQUEST_SECURITY_PRIVILEGES : constant := 16#00002000#;
   COPY_FILE_RESUME_FROM_PAUSE : constant := 16#00004000#;
   COPY_FILE_NO_OFFLOAD : constant := 16#00040000#;
   COPY_FILE_IGNORE_EDP_BLOCK : constant := 16#00400000#;
   COPY_FILE_IGNORE_SOURCE_ENCRYPTION : constant := 16#00800000#;
   COPY_FILE_DONT_REQUEST_DEST_WRITE_DAC : constant := 16#02000000#;
   COPY_FILE_REQUEST_COMPRESSED_TRAFFIC : constant := 16#10000000#;
   COPY_FILE_OPEN_AND_COPY_REPARSE_POINT : constant := 16#00200000#;
   COPY_FILE_DIRECTORY : constant := 16#00000080#;
   COPY_FILE_SKIP_ALTERNATE_STREAMS : constant := 16#00008000#;
   COPY_FILE_DISABLE_PRE_ALLOCATION : constant := 16#04000000#;
   COPY_FILE_ENABLE_LOW_FREE_SPACE_MODE : constant := 16#08000000#;
   REPLACEFILE_WRITE_THROUGH : constant := 16#00000001#;
   REPLACEFILE_IGNORE_MERGE_ERRORS : constant := 16#00000002#;
   REPLACEFILE_IGNORE_ACL_ERRORS : constant := 16#00000004#;
   PIPE_ACCESS_INBOUND : constant := 16#00000001#;
   PIPE_ACCESS_OUTBOUND : constant := 16#00000002#;
   PIPE_ACCESS_DUPLEX : constant := 16#00000003#;
   PIPE_CLIENT_END : constant := 16#00000000#;
   PIPE_SERVER_END : constant := 16#00000001#;
   PIPE_WAIT : constant := 16#00000000#;
   PIPE_NOWAIT : constant := 16#00000001#;
   PIPE_READMODE_BYTE : constant := 16#00000000#;
   PIPE_READMODE_MESSAGE : constant := 16#00000002#;
   PIPE_TYPE_BYTE : constant := 16#00000000#;
   PIPE_TYPE_MESSAGE : constant := 16#00000004#;
   PIPE_ACCEPT_REMOTE_CLIENTS : constant := 16#00000000#;
   PIPE_REJECT_REMOTE_CLIENTS : constant := 16#00000008#;
   PIPE_UNLIMITED_INSTANCES : constant := 255;
   -- [Todo] SECURITY_ANONYMOUS ( SecurityAnonymous << 16 );
   -- [Todo] SECURITY_IDENTIFICATION ( SecurityIdentification << 16 );
   -- [Todo] SECURITY_IMPERSONATION ( SecurityImpersonation << 16 );
   -- [Todo] SECURITY_DELEGATION ( SecurityDelegation << 16 );
   SECURITY_CONTEXT_TRACKING : constant := 16#00040000#;
   SECURITY_EFFECTIVE_ONLY : constant := 16#00080000#;
   SECURITY_SQOS_PRESENT : constant := 16#00100000#;
   SECURITY_VALID_SQOS_FLAGS : constant := 16#001F0000#;
   FAIL_FAST_GENERATE_EXCEPTION_ADDRESS : constant := 16#1#;
   FAIL_FAST_NO_HARD_ERROR_DLG : constant := 16#2#;
   SP_SERIALCOMM : constant := 16#00000001#;
   PST_UNSPECIFIED : constant := 16#00000000#;
   PST_RS232 : constant := 16#00000001#;
   PST_PARALLELPORT : constant := 16#00000002#;
   PST_RS422 : constant := 16#00000003#;
   PST_RS423 : constant := 16#00000004#;
   PST_RS449 : constant := 16#00000005#;
   PST_MODEM : constant := 16#00000006#;
   PST_FAX : constant := 16#00000021#;
   PST_SCANNER : constant := 16#00000022#;
   PST_NETWORK_BRIDGE : constant := 16#00000100#;
   PST_LAT : constant := 16#00000101#;
   PST_TCPIP_TELNET : constant := 16#00000102#;
   PST_X25 : constant := 16#00000103#;
   PCF_DTRDSR : constant := 16#0001#;
   PCF_RTSCTS : constant := 16#0002#;
   PCF_RLSD : constant := 16#0004#;
   PCF_PARITY_CHECK : constant := 16#0008#;
   PCF_XONXOFF : constant := 16#0010#;
   PCF_SETXCHAR : constant := 16#0020#;
   PCF_TOTALTIMEOUTS : constant := 16#0040#;
   PCF_INTTIMEOUTS : constant := 16#0080#;
   PCF_SPECIALCHARS : constant := 16#0100#;
   PCF_16BITMODE : constant := 16#0200#;
   SP_PARITY : constant := 16#0001#;
   SP_BAUD : constant := 16#0002#;
   SP_DATABITS : constant := 16#0004#;
   SP_STOPBITS : constant := 16#0008#;
   SP_HANDSHAKING : constant := 16#0010#;
   SP_PARITY_CHECK : constant := 16#0020#;
   SP_RLSD : constant := 16#0040#;
   BAUD_075 : constant := 16#00000001#;
   BAUD_110 : constant := 16#00000002#;
   BAUD_134_5 : constant := 16#00000004#;
   BAUD_150 : constant := 16#00000008#;
   BAUD_300 : constant := 16#00000010#;
   BAUD_600 : constant := 16#00000020#;
   BAUD_1200 : constant := 16#00000040#;
   BAUD_1800 : constant := 16#00000080#;
   BAUD_2400 : constant := 16#00000100#;
   BAUD_4800 : constant := 16#00000200#;
   BAUD_7200 : constant := 16#00000400#;
   BAUD_9600 : constant := 16#00000800#;
   BAUD_14400 : constant := 16#00001000#;
   BAUD_19200 : constant := 16#00002000#;
   BAUD_38400 : constant := 16#00004000#;
   BAUD_56K : constant := 16#00008000#;
   BAUD_128K : constant := 16#00010000#;
   BAUD_115200 : constant := 16#00020000#;
   BAUD_57600 : constant := 16#00040000#;
   BAUD_USER : constant := 16#10000000#;
   DATABITS_5 : constant := 16#0001#;
   DATABITS_6 : constant := 16#0002#;
   DATABITS_7 : constant := 16#0004#;
   DATABITS_8 : constant := 16#0008#;
   DATABITS_16 : constant := 16#0010#;
   DATABITS_16X : constant := 16#0020#;
   STOPBITS_10 : constant := 16#0001#;
   STOPBITS_15 : constant := 16#0002#;
   STOPBITS_20 : constant := 16#0004#;
   PARITY_NONE : constant := 16#0100#;
   PARITY_ODD : constant := 16#0200#;
   PARITY_EVEN : constant := 16#0400#;
   PARITY_MARK : constant := 16#0800#;
   PARITY_SPACE : constant := 16#1000#;
   COMMPROP_INITIALIZED : constant := 16#E73CF52E#;
   DTR_CONTROL_DISABLE : constant := 16#00#;
   DTR_CONTROL_ENABLE : constant := 16#01#;
   DTR_CONTROL_HANDSHAKE : constant := 16#02#;
   RTS_CONTROL_DISABLE : constant := 16#00#;
   RTS_CONTROL_ENABLE : constant := 16#01#;
   RTS_CONTROL_HANDSHAKE : constant := 16#02#;
   RTS_CONTROL_TOGGLE : constant := 16#03#;
   GMEM_FIXED : constant := 16#0000#;
   GMEM_MOVEABLE : constant := 16#0002#;
   GMEM_NOCOMPACT : constant := 16#0010#;
   GMEM_NODISCARD : constant := 16#0020#;
   GMEM_ZEROINIT : constant := 16#0040#;
   GMEM_MODIFY : constant := 16#0080#;
   GMEM_DISCARDABLE : constant := 16#0100#;
   GMEM_NOT_BANKED : constant := 16#1000#;
   GMEM_SHARE : constant := 16#2000#;
   GMEM_DDESHARE : constant := 16#2000#;
   GMEM_NOTIFY : constant := 16#4000#;
   GMEM_VALID_FLAGS : constant := 16#7F72#;
   GMEM_INVALID_HANDLE : constant := 16#8000#;
   GHND : constant := ( Interfaces.C.Unsigned( GMEM_MOVEABLE )
       or Interfaces.C.Unsigned( GMEM_ZEROINIT ) );
   GPTR : constant := ( Interfaces.C.Unsigned( GMEM_FIXED )
       or Interfaces.C.Unsigned( GMEM_ZEROINIT ) );
   GMEM_DISCARDED : constant := 16#4000#;
   GMEM_LOCKCOUNT : constant := 16#00FF#;
   DEBUG_PROCESS : constant := 16#00000001#;
   DEBUG_ONLY_THIS_PROCESS : constant := 16#00000002#;
   CREATE_SUSPENDED : constant := 16#00000004#;
   DETACHED_PROCESS : constant := 16#00000008#;
   CREATE_NEW_CONSOLE : constant := 16#00000010#;
   NORMAL_PRIORITY_CLASS : constant := 16#00000020#;
   IDLE_PRIORITY_CLASS : constant := 16#00000040#;
   HIGH_PRIORITY_CLASS : constant := 16#00000080#;
   REALTIME_PRIORITY_CLASS : constant := 16#00000100#;
   CREATE_NEW_PROCESS_GROUP : constant := 16#00000200#;
   CREATE_UNICODE_ENVIRONMENT : constant := 16#00000400#;
   CREATE_SEPARATE_WOW_VDM : constant := 16#00000800#;
   CREATE_SHARED_WOW_VDM : constant := 16#00001000#;
   CREATE_FORCEDOS : constant := 16#00002000#;
   BELOW_NORMAL_PRIORITY_CLASS : constant := 16#00004000#;
   ABOVE_NORMAL_PRIORITY_CLASS : constant := 16#00008000#;
   INHERIT_PARENT_AFFINITY : constant := 16#00010000#;
   INHERIT_CALLER_PRIORITY : constant := 16#00020000#;
   CREATE_PROTECTED_PROCESS : constant := 16#00040000#;
   EXTENDED_STARTUPINFO_PRESENT : constant := 16#00080000#;
   PROCESS_MODE_BACKGROUND_BEGIN : constant := 16#00100000#;
   PROCESS_MODE_BACKGROUND_END : constant := 16#00200000#;
   CREATE_SECURE_PROCESS : constant := 16#00400000#;
   CREATE_BREAKAWAY_FROM_JOB : constant := 16#01000000#;
   CREATE_PRESERVE_CODE_AUTHZ_LEVEL : constant := 16#02000000#;
   CREATE_DEFAULT_ERROR_MODE : constant := 16#04000000#;
   CREATE_NO_WINDOW : constant := 16#08000000#;
   PROFILE_USER : constant := 16#10000000#;
   PROFILE_KERNEL : constant := 16#20000000#;
   PROFILE_SERVER : constant := 16#40000000#;
   CREATE_IGNORE_SYSTEM_DEFAULT : constant := 16#80000000#;
   STACK_SIZE_PARAM_IS_A_RESERVATION : constant := 16#00010000#;
   THREAD_PRIORITY_NORMAL : constant := 0;
   THREAD_PRIORITY_ERROR_RETURN : constant := MAXLONG;
   THREAD_MODE_BACKGROUND_BEGIN : constant := 16#00010000#;
   THREAD_MODE_BACKGROUND_END : constant := 16#00020000#;
   VOLUME_NAME_DOS : constant := 16#0#;
   VOLUME_NAME_GUID : constant := 16#1#;
   VOLUME_NAME_NT : constant := 16#2#;
   VOLUME_NAME_NONE : constant := 16#4#;
   FILE_NAME_NORMALIZED : constant := 16#0#;
   FILE_NAME_OPENED : constant := 16#8#;
   DRIVE_UNKNOWN : constant := 0;
   DRIVE_NO_ROOT_DIR : constant := 1;
   DRIVE_REMOVABLE : constant := 2;
   DRIVE_FIXED : constant := 3;
   DRIVE_REMOTE : constant := 4;
   DRIVE_CDROM : constant := 5;
   DRIVE_RAMDISK : constant := 6;
   FILE_TYPE_UNKNOWN : constant := 16#0000#;
   FILE_TYPE_DISK : constant := 16#0001#;
   FILE_TYPE_CHAR : constant := 16#0002#;
   FILE_TYPE_PIPE : constant := 16#0003#;
   FILE_TYPE_REMOTE : constant := 16#8000#;
   STD_INPUT_HANDLE : constant := Interfaces.C.unsigned_long'mod(-10);
   STD_OUTPUT_HANDLE : constant := Interfaces.C.unsigned_long'mod(-11);
   STD_ERROR_HANDLE : constant := Interfaces.C.unsigned_long'mod(-12);
   NOPARITY : constant := 0;
   ODDPARITY : constant := 1;
   EVENPARITY : constant := 2;
   MARKPARITY : constant := 3;
   SPACEPARITY : constant := 4;
   ONESTOPBIT : constant := 0;
   ONE5STOPBITS : constant := 1;
   TWOSTOPBITS : constant := 2;
   IGNORE : constant := 0;
   INFINITE : constant := 16#FFFFFFFF#;
   CBR_110 : constant := 110;
   CBR_300 : constant := 300;
   CBR_600 : constant := 600;
   CBR_1200 : constant := 1200;
   CBR_2400 : constant := 2400;
   CBR_4800 : constant := 4800;
   CBR_9600 : constant := 9600;
   CBR_14400 : constant := 14400;
   CBR_19200 : constant := 19200;
   CBR_38400 : constant := 38400;
   CBR_56000 : constant := 56000;
   CBR_57600 : constant := 57600;
   CBR_115200 : constant := 115200;
   CBR_128000 : constant := 128000;
   CBR_256000 : constant := 256000;
   CE_RXOVER : constant := 16#0001#;
   CE_OVERRUN : constant := 16#0002#;
   CE_RXPARITY : constant := 16#0004#;
   CE_FRAME : constant := 16#0008#;
   CE_BREAK : constant := 16#0010#;
   CE_TXFULL : constant := 16#0100#;
   CE_PTO : constant := 16#0200#;
   CE_IOE : constant := 16#0400#;
   CE_DNS : constant := 16#0800#;
   CE_OOP : constant := 16#1000#;
   CE_MODE : constant := 16#8000#;
   IE_BADID : constant := -1;
   IE_OPEN : constant := -2;
   IE_NOPEN : constant := -3;
   IE_MEMORY : constant := -4;
   IE_DEFAULT : constant := -5;
   IE_HARDWARE : constant := -10;
   IE_BYTESIZE : constant := -11;
   IE_BAUDRATE : constant := -12;
   EV_RXCHAR : constant := 16#0001#;
   EV_RXFLAG : constant := 16#0002#;
   EV_TXEMPTY : constant := 16#0004#;
   EV_CTS : constant := 16#0008#;
   EV_DSR : constant := 16#0010#;
   EV_RLSD : constant := 16#0020#;
   EV_BREAK : constant := 16#0040#;
   EV_ERR : constant := 16#0080#;
   EV_RING : constant := 16#0100#;
   EV_PERR : constant := 16#0200#;
   EV_RX80FULL : constant := 16#0400#;
   EV_EVENT1 : constant := 16#0800#;
   EV_EVENT2 : constant := 16#1000#;
   SETXOFF : constant := 1;
   SETXON : constant := 2;
   SETRTS : constant := 3;
   CLRRTS : constant := 4;
   SETDTR : constant := 5;
   CLRDTR : constant := 6;
   RESETDEV : constant := 7;
   SETBREAK : constant := 8;
   CLRBREAK : constant := 9;
   PURGE_TXABORT : constant := 16#0001#;
   PURGE_RXABORT : constant := 16#0002#;
   PURGE_TXCLEAR : constant := 16#0004#;
   PURGE_RXCLEAR : constant := 16#0008#;
   LPTx : constant := 16#80#;
   MS_CTS_ON : constant := 16#0010#;
   MS_DSR_ON : constant := 16#0020#;
   MS_RING_ON : constant := 16#0040#;
   MS_RLSD_ON : constant := 16#0080#;
   S_QUEUEEMPTY : constant := 0;
   S_THRESHOLD : constant := 1;
   S_ALLTHRESHOLD : constant := 2;
   S_NORMAL : constant := 0;
   S_LEGATO : constant := 1;
   S_STACCATO : constant := 2;
   S_PERIOD512 : constant := 0;
   S_PERIOD1024 : constant := 1;
   S_PERIOD2048 : constant := 2;
   S_PERIODVOICE : constant := 3;
   S_WHITE512 : constant := 4;
   S_WHITE1024 : constant := 5;
   S_WHITE2048 : constant := 6;
   S_WHITEVOICE : constant := 7;
   S_SERDVNA : constant := -1;
   S_SEROFM : constant := -2;
   S_SERMACT : constant := -3;
   S_SERQFUL : constant := -4;
   S_SERBDNT : constant := -5;
   S_SERDLN : constant := -6;
   S_SERDCC : constant := -7;
   S_SERDTP : constant := -8;
   S_SERDVL : constant := -9;
   S_SERDMD : constant := -10;
   S_SERDSH : constant := -11;
   S_SERDPT : constant := -12;
   S_SERDFQ : constant := -13;
   S_SERDDR : constant := -14;
   S_SERDSR : constant := -15;
   S_SERDST : constant := -16;
   NMPWAIT_WAIT_FOREVER : constant := 16#ffffffff#;
   NMPWAIT_NOWAIT : constant := 16#00000001#;
   NMPWAIT_USE_DEFAULT_WAIT : constant := 16#00000000#;
   OF_READ : constant := 16#00000000#;
   OF_WRITE : constant := 16#00000001#;
   OF_READWRITE : constant := 16#00000002#;
   OF_SHARE_COMPAT : constant := 16#00000000#;
   OF_SHARE_EXCLUSIVE : constant := 16#00000010#;
   OF_SHARE_DENY_WRITE : constant := 16#00000020#;
   OF_SHARE_DENY_READ : constant := 16#00000030#;
   OF_SHARE_DENY_NONE : constant := 16#00000040#;
   OF_PARSE : constant := 16#00000100#;
   OF_DELETE : constant := 16#00000200#;
   OF_VERIFY : constant := 16#00000400#;
   OF_CANCEL : constant := 16#00000800#;
   OF_CREATE : constant := 16#00001000#;
   OF_PROMPT : constant := 16#00002000#;
   OF_EXIST : constant := 16#00004000#;
   OF_REOPEN : constant := 16#00008000#;
   OFS_MAXPATHNAME : constant := 128;
   MAXINTATOM : constant := 16#C000#;
   INVALID_ATOM : constant := 0;
   SCS_32BIT_BINARY : constant := 0;
   SCS_DOS_BINARY : constant := 1;
   SCS_WOW_BINARY : constant := 2;
   SCS_PIF_BINARY : constant := 3;
   SCS_POSIX_BINARY : constant := 4;
   SCS_OS216_BINARY : constant := 5;
   SCS_64BIT_BINARY : constant := 6;
   FIBER_FLAG_FLOAT_SWITCH : constant := 16#1#;
   PROCESS_DEP_ENABLE : constant := 16#00000001#;
   PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION : constant := 16#00000002#;
   FILE_SKIP_COMPLETION_PORT_ON_SUCCESS : constant := 16#1#;
   FILE_SKIP_SET_EVENT_ON_HANDLE : constant := 16#2#;
   SEM_FAILCRITICALERRORS : constant := 16#0001#;
   SEM_NOGPFAULTERRORBOX : constant := 16#0002#;
   SEM_NOALIGNMENTFAULTEXCEPT : constant := 16#0004#;
   SEM_NOOPENFILEERRORBOX : constant := 16#8000#;
   HANDLE_FLAG_INHERIT : constant := 16#00000001#;
   HANDLE_FLAG_PROTECT_FROM_CLOSE : constant := 16#00000002#;
   HINSTANCE_ERROR : constant := 32;
   GET_TAPE_MEDIA_INFORMATION : constant := 0;
   GET_TAPE_DRIVE_INFORMATION : constant := 1;
   SET_TAPE_MEDIA_INFORMATION : constant := 0;
   SET_TAPE_DRIVE_INFORMATION : constant := 1;
   FORMAT_MESSAGE_ALLOCATE_BUFFER : constant := 16#00000100#;
   FORMAT_MESSAGE_IGNORE_INSERTS : constant := 16#00000200#;
   FORMAT_MESSAGE_FROM_STRING : constant := 16#00000400#;
   FORMAT_MESSAGE_FROM_HMODULE : constant := 16#00000800#;
   FORMAT_MESSAGE_FROM_SYSTEM : constant := 16#00001000#;
   FORMAT_MESSAGE_ARGUMENT_ARRAY : constant := 16#00002000#;
   FORMAT_MESSAGE_MAX_WIDTH_MASK : constant := 16#000000FF#;
   FILE_ENCRYPTABLE : constant := 0;
   FILE_IS_ENCRYPTED : constant := 1;
   FILE_SYSTEM_ATTR : constant := 2;
   FILE_ROOT_DIR : constant := 3;
   FILE_SYSTEM_DIR : constant := 4;
   FILE_UNKNOWN : constant := 5;
   FILE_SYSTEM_NOT_SUPPORT : constant := 6;
   FILE_USER_DISALLOWED : constant := 7;
   FILE_READ_ONLY : constant := 8;
   FILE_DIR_DISALLOWED : constant := 9;
   EFS_USE_RECOVERY_KEYS : constant := 16#1#;
   CREATE_FOR_IMPORT : constant := 1;
   CREATE_FOR_DIR : constant := 2;
   OVERWRITE_HIDDEN : constant := 4;
   EFSRPC_SECURE_ONLY : constant := 8;
   EFS_DROP_ALTERNATE_STREAMS : constant := 16#10#;
   BACKUP_INVALID : constant := 16#00000000#;
   BACKUP_DATA : constant := 16#00000001#;
   BACKUP_EA_DATA : constant := 16#00000002#;
   BACKUP_SECURITY_DATA : constant := 16#00000003#;
   BACKUP_ALTERNATE_DATA : constant := 16#00000004#;
   BACKUP_LINK : constant := 16#00000005#;
   BACKUP_PROPERTY_DATA : constant := 16#00000006#;
   BACKUP_OBJECT_ID : constant := 16#00000007#;
   BACKUP_REPARSE_DATA : constant := 16#00000008#;
   BACKUP_SPARSE_BLOCK : constant := 16#00000009#;
   BACKUP_TXFS_DATA : constant := 16#0000000a#;
   BACKUP_GHOSTED_FILE_EXTENTS : constant := 16#0000000b#;
   STREAM_NORMAL_ATTRIBUTE : constant := 16#00000000#;
   STREAM_MODIFIED_WHEN_READ : constant := 16#00000001#;
   STREAM_CONTAINS_SECURITY : constant := 16#00000002#;
   STREAM_CONTAINS_PROPERTIES : constant := 16#00000004#;
   STREAM_SPARSE_ATTRIBUTE : constant := 16#00000008#;
   STREAM_CONTAINS_GHOSTED_FILE_EXTENTS : constant := 16#00000010#;
   STARTF_USESHOWWINDOW : constant := 16#00000001#;
   STARTF_USESIZE : constant := 16#00000002#;
   STARTF_USEPOSITION : constant := 16#00000004#;
   STARTF_USECOUNTCHARS : constant := 16#00000008#;
   STARTF_USEFILLATTRIBUTE : constant := 16#00000010#;
   STARTF_RUNFULLSCREEN : constant := 16#00000020#;
   STARTF_FORCEONFEEDBACK : constant := 16#00000040#;
   STARTF_FORCEOFFFEEDBACK : constant := 16#00000080#;
   STARTF_USESTDHANDLES : constant := 16#00000100#;
   STARTF_USEHOTKEY : constant := 16#00000200#;
   STARTF_TITLEISLINKNAME : constant := 16#00000800#;
   STARTF_TITLEISAPPID : constant := 16#00001000#;
   STARTF_PREVENTPINNING : constant := 16#00002000#;
   STARTF_UNTRUSTEDSOURCE : constant := 16#00008000#;
   SHUTDOWN_NORETRY : constant := 16#00000001#;
   PROTECTION_LEVEL_WINTCB_LIGHT : constant := 16#00000000#;
   PROTECTION_LEVEL_WINDOWS : constant := 16#00000001#;
   PROTECTION_LEVEL_WINDOWS_LIGHT : constant := 16#00000002#;
   PROTECTION_LEVEL_ANTIMALWARE_LIGHT : constant := 16#00000003#;
   PROTECTION_LEVEL_LSA_LIGHT : constant := 16#00000004#;
   PROTECTION_LEVEL_WINTCB : constant := 16#00000005#;
   PROTECTION_LEVEL_CODEGEN_LIGHT : constant := 16#00000006#;
   PROTECTION_LEVEL_AUTHENTICODE : constant := 16#00000007#;
   PROTECTION_LEVEL_PPL_APP : constant := 16#00000008#;
   PROTECTION_LEVEL_SAME : constant := 16#FFFFFFFF#;
   PROTECTION_LEVEL_NONE : constant := 16#FFFFFFFE#;
   PROCESS_NAME_NATIVE : constant := 16#00000001#;
   PROC_THREAD_ATTRIBUTE_NUMBER : constant := 16#0000FFFF#;
   PROC_THREAD_ATTRIBUTE_THREAD : constant := 16#00010000#;
   PROC_THREAD_ATTRIBUTE_INPUT : constant := 16#00020000#;
   PROC_THREAD_ATTRIBUTE_ADDITIVE : constant := 16#00040000#;
   PROCESS_CREATION_MITIGATION_POLICY_DEP_ENABLE : constant := 16#01#;
   PROCESS_CREATION_MITIGATION_POLICY_DEP_ATL_THUNK_ENABLE : constant := 16#02#;
   PROCESS_CREATION_MITIGATION_POLICY_SEHOP_ENABLE : constant := 16#04#;
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_MASK ( 0x00000003 << 8 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_DEFER ( 0x00000000 << 8 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON ( 0x00000001 << 8 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_OFF ( 0x00000002 << 8 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_FORCE_RELOCATE_IMAGES_ALWAYS_ON_REQ_RELOCS ( 0x00000003 << 8 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_MASK ( 0x00000003 << 12 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_DEFER ( 0x00000000 << 12 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_ON ( 0x00000001 << 12 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_ALWAYS_OFF ( 0x00000002 << 12 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_HEAP_TERMINATE_RESERVED ( 0x00000003 << 12 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_MASK ( 0x00000003 << 16 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_DEFER ( 0x00000000 << 16 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_ON ( 0x00000001 << 16 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_ALWAYS_OFF ( 0x00000002 << 16 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_BOTTOM_UP_ASLR_RESERVED ( 0x00000003 << 16 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_MASK ( 0x00000003 << 20 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_DEFER ( 0x00000000 << 20 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_ON ( 0x00000001 << 20 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_ALWAYS_OFF ( 0x00000002 << 20 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_HIGH_ENTROPY_ASLR_RESERVED ( 0x00000003 << 20 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_MASK ( 0x00000003 << 24 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_DEFER ( 0x00000000 << 24 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_ON ( 0x00000001 << 24 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_ALWAYS_OFF ( 0x00000002 << 24 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_STRICT_HANDLE_CHECKS_RESERVED ( 0x00000003 << 24 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_MASK ( 0x00000003 << 28 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_DEFER ( 0x00000000 << 28 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_ON ( 0x00000001 << 28 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_ALWAYS_OFF ( 0x00000002 << 28 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_WIN32K_SYSTEM_CALL_DISABLE_RESERVED ( 0x00000003 << 28 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_MASK ( 0x00000003ui64 << 32 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_DEFER ( 0x00000000ui64 << 32 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_ON ( 0x00000001ui64 << 32 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_ALWAYS_OFF ( 0x00000002ui64 << 32 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_EXTENSION_POINT_DISABLE_RESERVED ( 0x00000003ui64 << 32 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_MASK ( 0x00000003ui64 << 36 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_DEFER ( 0x00000000ui64 << 36 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON ( 0x00000001ui64 << 36 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_OFF ( 0x00000002ui64 << 36 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_PROHIBIT_DYNAMIC_CODE_ALWAYS_ON_ALLOW_OPT_OUT ( 0x00000003ui64 << 36 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_MASK ( 0x00000003ui64 << 40 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_DEFER ( 0x00000000ui64 << 40 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_ON ( 0x00000001ui64 << 40 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_ALWAYS_OFF ( 0x00000002ui64 << 40 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_CONTROL_FLOW_GUARD_EXPORT_SUPPRESSION ( 0x00000003ui64 << 40 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_MASK ( 0x00000003ui64 << 44 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_DEFER ( 0x00000000ui64 << 44 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON ( 0x00000001ui64 << 44 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_OFF ( 0x00000002ui64 << 44 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALLOW_STORE ( 0x00000003ui64 << 44 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_MASK ( 0x00000003ui64 << 48 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_DEFER ( 0x00000000ui64 << 48 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_ON ( 0x00000001ui64 << 48 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_FONT_DISABLE_ALWAYS_OFF ( 0x00000002ui64 << 48 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_AUDIT_NONSYSTEM_FONTS ( 0x00000003ui64 << 48 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_MASK ( 0x00000003ui64 << 52 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_DEFER ( 0x00000000ui64 << 52 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_ON ( 0x00000001ui64 << 52 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_ALWAYS_OFF ( 0x00000002ui64 << 52 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_REMOTE_RESERVED ( 0x00000003ui64 << 52 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_MASK ( 0x00000003ui64 << 56 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_DEFER ( 0x00000000ui64 << 56 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_ALWAYS_ON ( 0x00000001ui64 << 56 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_ALWAYS_OFF ( 0x00000002ui64 << 56 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_NO_LOW_LABEL_RESERVED ( 0x00000003ui64 << 56 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_MASK ( 0x00000003ui64 << 60 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_DEFER ( 0x00000000ui64 << 60 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_ON ( 0x00000001ui64 << 60 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_ALWAYS_OFF ( 0x00000002ui64 << 60 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY_IMAGE_LOAD_PREFER_SYSTEM32_RESERVED ( 0x00000003ui64 << 60 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_LOADER_INTEGRITY_CONTINUITY_MASK ( 0x00000003ui64 << 4 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_LOADER_INTEGRITY_CONTINUITY_DEFER ( 0x00000000ui64 << 4 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_LOADER_INTEGRITY_CONTINUITY_ALWAYS_ON ( 0x00000001ui64 << 4 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_LOADER_INTEGRITY_CONTINUITY_ALWAYS_OFF ( 0x00000002ui64 << 4 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_LOADER_INTEGRITY_CONTINUITY_AUDIT ( 0x00000003ui64 << 4 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_MASK ( 0x00000003ui64 << 8 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_DEFER ( 0x00000000ui64 << 8 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_ALWAYS_ON ( 0x00000001ui64 << 8 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_ALWAYS_OFF ( 0x00000002ui64 << 8 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_STRICT_CONTROL_FLOW_GUARD_RESERVED ( 0x00000003ui64 << 8 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_MODULE_TAMPERING_PROTECTION_MASK ( 0x00000003ui64 << 12 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_MODULE_TAMPERING_PROTECTION_DEFER ( 0x00000000ui64 << 12 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_MODULE_TAMPERING_PROTECTION_ALWAYS_ON ( 0x00000001ui64 << 12 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_MODULE_TAMPERING_PROTECTION_ALWAYS_OFF ( 0x00000002ui64 << 12 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_MODULE_TAMPERING_PROTECTION_NOINHERIT ( 0x00000003ui64 << 12 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_MASK ( 0x00000003ui64 << 16 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_DEFER ( 0x00000000ui64 << 16 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_ALWAYS_ON ( 0x00000001ui64 << 16 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_ALWAYS_OFF ( 0x00000002ui64 << 16 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_RESTRICT_INDIRECT_BRANCH_PREDICTION_RESERVED ( 0x00000003ui64 << 16 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_ALLOW_DOWNGRADE_DYNAMIC_CODE_POLICY_MASK ( 0x00000003ui64 << 20 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_ALLOW_DOWNGRADE_DYNAMIC_CODE_POLICY_DEFER ( 0x00000000ui64 << 20 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_ALLOW_DOWNGRADE_DYNAMIC_CODE_POLICY_ALWAYS_ON ( 0x00000001ui64 << 20 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_ALLOW_DOWNGRADE_DYNAMIC_CODE_POLICY_ALWAYS_OFF ( 0x00000002ui64 << 20 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_ALLOW_DOWNGRADE_DYNAMIC_CODE_POLICY_RESERVED ( 0x00000003ui64 << 20 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_MASK ( 0x00000003ui64 << 24 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_DEFER ( 0x00000000ui64 << 24 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_ALWAYS_ON ( 0x00000001ui64 << 24 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_ALWAYS_OFF ( 0x00000002ui64 << 24 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_SPECULATIVE_STORE_BYPASS_DISABLE_RESERVED ( 0x00000003ui64 << 24 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_MASK ( 0x00000003ui64 << 28 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_DEFER ( 0x00000000ui64 << 28 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_ALWAYS_ON ( 0x00000001ui64 << 28 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_ALWAYS_OFF ( 0x00000002ui64 << 28 );
   -- [Todo] PROCESS_CREATION_MITIGATION_POLICY2_CET_USER_SHADOW_STACKS_RESERVED ( 0x00000003ui64 << 28 );
   PROCESS_CREATION_CHILD_PROCESS_RESTRICTED : constant := 16#01#;
   PROCESS_CREATION_CHILD_PROCESS_OVERRIDE : constant := 16#02#;
   PROCESS_CREATION_CHILD_PROCESS_RESTRICTED_UNLESS_SECURE : constant := 16#04#;
   PROCESS_CREATION_ALL_APPLICATION_PACKAGES_OPT_OUT : constant := 16#01#;
   PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_ENABLE_PROCESS_TREE : constant := 16#01#;
   PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_DISABLE_PROCESS_TREE : constant := 16#02#;
   PROCESS_CREATION_DESKTOP_APP_BREAKAWAY_OVERRIDE : constant := 16#04#;
   ATOM_FLAG_GLOBAL : constant := 16#2#;
   BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE : constant := 16#1#;
   BASE_SEARCH_PATH_DISABLE_SAFE_SEARCHMODE : constant := 16#10000#;
   BASE_SEARCH_PATH_PERMANENT : constant := 16#8000#;
   BASE_SEARCH_PATH_INVALID_FLAGS : constant := 16#18001#;
   DDD_RAW_TARGET_PATH : constant := 16#00000001#;
   DDD_REMOVE_DEFINITION : constant := 16#00000002#;
   DDD_EXACT_MATCH_ON_REMOVE : constant := 16#00000004#;
   DDD_NO_BROADCAST_SYSTEM : constant := 16#00000008#;
   DDD_LUID_BROADCAST_DRIVE : constant := 16#00000010#;
   COPYFILE2_MESSAGE_COPY_OFFLOAD : constant := 16#00000001#;
   MOVEFILE_REPLACE_EXISTING : constant := 16#00000001#;
   MOVEFILE_COPY_ALLOWED : constant := 16#00000002#;
   MOVEFILE_DELAY_UNTIL_REBOOT : constant := 16#00000004#;
   MOVEFILE_WRITE_THROUGH : constant := 16#00000008#;
   MOVEFILE_CREATE_HARDLINK : constant := 16#00000010#;
   MOVEFILE_FAIL_IF_NOT_TRACKABLE : constant := 16#00000020#;
   EVENTLOG_FULL_INFO : constant := 0;
   OPERATION_API_VERSION : constant := 1;
   OPERATION_START_TRACE_CURRENT_THREAD : constant := 16#1#;
   OPERATION_END_DISCARD : constant := 16#1#;
   MAX_COMPUTERNAME_LENGTH : constant := 15;
   LOGON32_LOGON_INTERACTIVE : constant := 2;
   LOGON32_LOGON_NETWORK : constant := 3;
   LOGON32_LOGON_BATCH : constant := 4;
   LOGON32_LOGON_SERVICE : constant := 5;
   LOGON32_LOGON_UNLOCK : constant := 7;
   LOGON32_LOGON_NETWORK_CLEARTEXT : constant := 8;
   LOGON32_LOGON_NEW_CREDENTIALS : constant := 9;
   LOGON32_PROVIDER_DEFAULT : constant := 0;
   LOGON32_PROVIDER_WINNT35 : constant := 1;
   LOGON32_PROVIDER_WINNT40 : constant := 2;
   LOGON32_PROVIDER_WINNT50 : constant := 3;
   LOGON32_PROVIDER_VIRTUAL : constant := 4;
   LOGON_WITH_PROFILE : constant := 16#00000001#;
   LOGON_NETCREDENTIALS_ONLY : constant := 16#00000002#;
   LOGON_ZERO_PASSWORD_BUFFER : constant := 16#80000000#;
   HW_PROFILE_GUIDLEN : constant := 39;
   MAX_PROFILE_LEN : constant := 80;
   DOCKINFO_UNDOCKED : constant := 16#1#;
   DOCKINFO_DOCKED : constant := 16#2#;
   DOCKINFO_USER_SUPPLIED : constant := 16#4#;
   DOCKINFO_USER_UNDOCKED : constant := ( Interfaces.C.Unsigned( DOCKINFO_USER_SUPPLIED )
       or Interfaces.C.Unsigned( DOCKINFO_UNDOCKED ) );
   DOCKINFO_USER_DOCKED : constant := ( Interfaces.C.Unsigned( DOCKINFO_USER_SUPPLIED )
       or Interfaces.C.Unsigned( DOCKINFO_DOCKED ) );
   -- #include <winerror.h>
   FACILITY_NULL : constant := 0;
   FACILITY_RPC : constant := 1;
   FACILITY_DISPATCH : constant := 2;
   FACILITY_STORAGE : constant := 3;
   FACILITY_ITF : constant := 4;
   FACILITY_WIN32 : constant := 7;
   FACILITY_WINDOWS : constant := 8;
   FACILITY_SSPI : constant := 9;
   FACILITY_SECURITY : constant := 9;
   FACILITY_CONTROL : constant := 10;
   FACILITY_CERT : constant := 11;
   FACILITY_INTERNET : constant := 12;
   FACILITY_MEDIASERVER : constant := 13;
   FACILITY_MSMQ : constant := 14;
   FACILITY_SETUPAPI : constant := 15;
   FACILITY_SCARD : constant := 16;
   FACILITY_COMPLUS : constant := 17;
   FACILITY_AAF : constant := 18;
   FACILITY_URT : constant := 19;
   FACILITY_ACS : constant := 20;
   FACILITY_DPLAY : constant := 21;
   FACILITY_UMI : constant := 22;
   FACILITY_SXS : constant := 23;
   FACILITY_WINDOWS_CE : constant := 24;
   FACILITY_HTTP : constant := 25;
   FACILITY_USERMODE_COMMONLOG : constant := 26;
   FACILITY_WER : constant := 27;
   FACILITY_USERMODE_FILTER_MANAGER : constant := 31;
   FACILITY_BACKGROUNDCOPY : constant := 32;
   FACILITY_CONFIGURATION : constant := 33;
   FACILITY_WIA : constant := 33;
   FACILITY_STATE_MANAGEMENT : constant := 34;
   FACILITY_METADIRECTORY : constant := 35;
   FACILITY_WINDOWSUPDATE : constant := 36;
   FACILITY_DIRECTORYSERVICE : constant := 37;
   FACILITY_GRAPHICS : constant := 38;
   FACILITY_SHELL : constant := 39;
   FACILITY_NAP : constant := 39;
   FACILITY_TPM_SERVICES : constant := 40;
   FACILITY_TPM_SOFTWARE : constant := 41;
   FACILITY_UI : constant := 42;
   FACILITY_XAML : constant := 43;
   FACILITY_ACTION_QUEUE : constant := 44;
   FACILITY_PLA : constant := 48;
   FACILITY_WINDOWS_SETUP : constant := 48;
   FACILITY_FVE : constant := 49;
   FACILITY_FWP : constant := 50;
   FACILITY_WINRM : constant := 51;
   FACILITY_NDIS : constant := 52;
   FACILITY_USERMODE_HYPERVISOR : constant := 53;
   FACILITY_CMI : constant := 54;
   FACILITY_USERMODE_VIRTUALIZATION : constant := 55;
   FACILITY_USERMODE_VOLMGR : constant := 56;
   FACILITY_BCD : constant := 57;
   FACILITY_USERMODE_VHD : constant := 58;
   FACILITY_USERMODE_HNS : constant := 59;
   FACILITY_SDIAG : constant := 60;
   FACILITY_WEBSERVICES : constant := 61;
   FACILITY_WINPE : constant := 61;
   FACILITY_WPN : constant := 62;
   FACILITY_WINDOWS_STORE : constant := 63;
   FACILITY_INPUT : constant := 64;
   FACILITY_QUIC : constant := 65;
   FACILITY_EAP : constant := 66;
   FACILITY_WINDOWS_DEFENDER : constant := 80;
   FACILITY_OPC : constant := 81;
   FACILITY_XPS : constant := 82;
   FACILITY_MBN : constant := 84;
   FACILITY_POWERSHELL : constant := 84;
   FACILITY_RAS : constant := 83;
   FACILITY_P2P_INT : constant := 98;
   FACILITY_P2P : constant := 99;
   FACILITY_DAF : constant := 100;
   FACILITY_BLUETOOTH_ATT : constant := 101;
   FACILITY_AUDIO : constant := 102;
   FACILITY_STATEREPOSITORY : constant := 103;
   FACILITY_VISUALCPP : constant := 109;
   FACILITY_SCRIPT : constant := 112;
   FACILITY_PARSE : constant := 113;
   FACILITY_BLB : constant := 120;
   FACILITY_BLB_CLI : constant := 121;
   FACILITY_WSBAPP : constant := 122;
   FACILITY_BLBUI : constant := 128;
   FACILITY_USN : constant := 129;
   FACILITY_USERMODE_VOLSNAP : constant := 130;
   FACILITY_TIERING : constant := 131;
   FACILITY_WSB_ONLINE : constant := 133;
   FACILITY_ONLINE_ID : constant := 134;
   FACILITY_DEVICE_UPDATE_AGENT : constant := 135;
   FACILITY_DRVSERVICING : constant := 136;
   FACILITY_DLS : constant := 153;
   FACILITY_DELIVERY_OPTIMIZATION : constant := 208;
   FACILITY_USERMODE_SPACES : constant := 231;
   FACILITY_USER_MODE_SECURITY_CORE : constant := 232;
   FACILITY_USERMODE_LICENSING : constant := 234;
   FACILITY_SOS : constant := 160;
   FACILITY_DEBUGGERS : constant := 176;
   FACILITY_SPP : constant := 256;
   FACILITY_RESTORE : constant := 256;
   FACILITY_DMSERVER : constant := 256;
   FACILITY_DEPLOYMENT_SERVICES_SERVER : constant := 257;
   FACILITY_DEPLOYMENT_SERVICES_IMAGING : constant := 258;
   FACILITY_DEPLOYMENT_SERVICES_MANAGEMENT : constant := 259;
   FACILITY_DEPLOYMENT_SERVICES_UTIL : constant := 260;
   FACILITY_DEPLOYMENT_SERVICES_BINLSVC : constant := 261;
   FACILITY_DEPLOYMENT_SERVICES_PXE : constant := 263;
   FACILITY_DEPLOYMENT_SERVICES_TFTP : constant := 264;
   FACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT : constant := 272;
   FACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING : constant := 278;
   FACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER : constant := 289;
   FACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT : constant := 290;
   FACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER : constant := 293;
   FACILITY_LINGUISTIC_SERVICES : constant := 305;
   FACILITY_AUDIOSTREAMING : constant := 1094;
   FACILITY_TTD : constant := 1490;
   FACILITY_ACCELERATOR : constant := 1536;
   FACILITY_WMAAECMA : constant := 1996;
   FACILITY_DIRECTMUSIC : constant := 2168;
   FACILITY_DIRECT3D10 : constant := 2169;
   FACILITY_DXGI : constant := 2170;
   FACILITY_DXGI_DDI : constant := 2171;
   FACILITY_DIRECT3D11 : constant := 2172;
   FACILITY_DIRECT3D11_DEBUG : constant := 2173;
   FACILITY_DIRECT3D12 : constant := 2174;
   FACILITY_DIRECT3D12_DEBUG : constant := 2175;
   FACILITY_DXCORE : constant := 2176;
   FACILITY_LEAP : constant := 2184;
   FACILITY_AUDCLNT : constant := 2185;
   FACILITY_WINCODEC_DWRITE_DWM : constant := 2200;
   FACILITY_WINML : constant := 2192;
   FACILITY_DIRECT2D : constant := 2201;
   FACILITY_DEFRAG : constant := 2304;
   FACILITY_USERMODE_SDBUS : constant := 2305;
   FACILITY_JSCRIPT : constant := 2306;
   FACILITY_PIDGENX : constant := 2561;
   FACILITY_EAS : constant := 85;
   FACILITY_WEB : constant := 885;
   FACILITY_WEB_SOCKET : constant := 886;
   FACILITY_MOBILE : constant := 1793;
   FACILITY_SQLITE : constant := 1967;
   FACILITY_UTC : constant := 1989;
   FACILITY_WEP : constant := 2049;
   FACILITY_SYNCENGINE : constant := 2050;
   FACILITY_XBOX : constant := 2339;
   FACILITY_GAME : constant := 2340;
   FACILITY_PIX : constant := 2748;
   ERROR_SUCCESS : constant := 0;
   NO_ERROR : constant := 0;
   SEC_E_OK : constant := 16#00000000#;
   ERROR_INVALID_FUNCTION : constant := 1;
   ERROR_FILE_NOT_FOUND : constant := 2;
   ERROR_PATH_NOT_FOUND : constant := 3;
   ERROR_TOO_MANY_OPEN_FILES : constant := 4;
   ERROR_ACCESS_DENIED : constant := 5;
   ERROR_INVALID_HANDLE : constant := 6;
   ERROR_ARENA_TRASHED : constant := 7;
   ERROR_NOT_ENOUGH_MEMORY : constant := 8;
   ERROR_INVALID_BLOCK : constant := 9;
   ERROR_BAD_ENVIRONMENT : constant := 10;
   ERROR_BAD_FORMAT : constant := 11;
   ERROR_INVALID_ACCESS : constant := 12;
   ERROR_INVALID_DATA : constant := 13;
   ERROR_OUTOFMEMORY : constant := 14;
   ERROR_INVALID_DRIVE : constant := 15;
   ERROR_CURRENT_DIRECTORY : constant := 16;
   ERROR_NOT_SAME_DEVICE : constant := 17;
   ERROR_NO_MORE_FILES : constant := 18;
   ERROR_WRITE_PROTECT : constant := 19;
   ERROR_BAD_UNIT : constant := 20;
   ERROR_NOT_READY : constant := 21;
   ERROR_BAD_COMMAND : constant := 22;
   ERROR_CRC : constant := 23;
   ERROR_BAD_LENGTH : constant := 24;
   ERROR_SEEK : constant := 25;
   ERROR_NOT_DOS_DISK : constant := 26;
   ERROR_SECTOR_NOT_FOUND : constant := 27;
   ERROR_OUT_OF_PAPER : constant := 28;
   ERROR_WRITE_FAULT : constant := 29;
   ERROR_READ_FAULT : constant := 30;
   ERROR_GEN_FAILURE : constant := 31;
   ERROR_SHARING_VIOLATION : constant := 32;
   ERROR_LOCK_VIOLATION : constant := 33;
   ERROR_WRONG_DISK : constant := 34;
   ERROR_SHARING_BUFFER_EXCEEDED : constant := 36;
   ERROR_HANDLE_EOF : constant := 38;
   ERROR_HANDLE_DISK_FULL : constant := 39;
   ERROR_NOT_SUPPORTED : constant := 50;
   ERROR_REM_NOT_LIST : constant := 51;
   ERROR_DUP_NAME : constant := 52;
   ERROR_BAD_NETPATH : constant := 53;
   ERROR_NETWORK_BUSY : constant := 54;
   ERROR_DEV_NOT_EXIST : constant := 55;
   ERROR_TOO_MANY_CMDS : constant := 56;
   ERROR_ADAP_HDW_ERR : constant := 57;
   ERROR_BAD_NET_RESP : constant := 58;
   ERROR_UNEXP_NET_ERR : constant := 59;
   ERROR_BAD_REM_ADAP : constant := 60;
   ERROR_PRINTQ_FULL : constant := 61;
   ERROR_NO_SPOOL_SPACE : constant := 62;
   ERROR_PRINT_CANCELLED : constant := 63;
   ERROR_NETNAME_DELETED : constant := 64;
   ERROR_NETWORK_ACCESS_DENIED : constant := 65;
   ERROR_BAD_DEV_TYPE : constant := 66;
   ERROR_BAD_NET_NAME : constant := 67;
   ERROR_TOO_MANY_NAMES : constant := 68;
   ERROR_TOO_MANY_SESS : constant := 69;
   ERROR_SHARING_PAUSED : constant := 70;
   ERROR_REQ_NOT_ACCEP : constant := 71;
   ERROR_REDIR_PAUSED : constant := 72;
   ERROR_FILE_EXISTS : constant := 80;
   ERROR_CANNOT_MAKE : constant := 82;
   ERROR_FAIL_I24 : constant := 83;
   ERROR_OUT_OF_STRUCTURES : constant := 84;
   ERROR_ALREADY_ASSIGNED : constant := 85;
   ERROR_INVALID_PASSWORD : constant := 86;
   ERROR_INVALID_PARAMETER : constant := 87;
   ERROR_NET_WRITE_FAULT : constant := 88;
   ERROR_NO_PROC_SLOTS : constant := 89;
   ERROR_TOO_MANY_SEMAPHORES : constant := 100;
   ERROR_EXCL_SEM_ALREADY_OWNED : constant := 101;
   ERROR_SEM_IS_SET : constant := 102;
   ERROR_TOO_MANY_SEM_REQUESTS : constant := 103;
   ERROR_INVALID_AT_INTERRUPT_TIME : constant := 104;
   ERROR_SEM_OWNER_DIED : constant := 105;
   ERROR_SEM_USER_LIMIT : constant := 106;
   ERROR_DISK_CHANGE : constant := 107;
   ERROR_DRIVE_LOCKED : constant := 108;
   ERROR_BROKEN_PIPE : constant := 109;
   ERROR_OPEN_FAILED : constant := 110;
   ERROR_BUFFER_OVERFLOW : constant := 111;
   ERROR_DISK_FULL : constant := 112;
   ERROR_NO_MORE_SEARCH_HANDLES : constant := 113;
   ERROR_INVALID_TARGET_HANDLE : constant := 114;
   ERROR_INVALID_CATEGORY : constant := 117;
   ERROR_INVALID_VERIFY_SWITCH : constant := 118;
   ERROR_BAD_DRIVER_LEVEL : constant := 119;
   ERROR_CALL_NOT_IMPLEMENTED : constant := 120;
   ERROR_SEM_TIMEOUT : constant := 121;
   ERROR_INSUFFICIENT_BUFFER : constant := 122;
   ERROR_INVALID_NAME : constant := 123;
   ERROR_INVALID_LEVEL : constant := 124;
   ERROR_NO_VOLUME_LABEL : constant := 125;
   ERROR_MOD_NOT_FOUND : constant := 126;
   ERROR_PROC_NOT_FOUND : constant := 127;
   ERROR_WAIT_NO_CHILDREN : constant := 128;
   ERROR_CHILD_NOT_COMPLETE : constant := 129;
   ERROR_DIRECT_ACCESS_HANDLE : constant := 130;
   ERROR_NEGATIVE_SEEK : constant := 131;
   ERROR_SEEK_ON_DEVICE : constant := 132;
   ERROR_IS_JOIN_TARGET : constant := 133;
   ERROR_IS_JOINED : constant := 134;
   ERROR_IS_SUBSTED : constant := 135;
   ERROR_NOT_JOINED : constant := 136;
   ERROR_NOT_SUBSTED : constant := 137;
   ERROR_JOIN_TO_JOIN : constant := 138;
   ERROR_SUBST_TO_SUBST : constant := 139;
   ERROR_JOIN_TO_SUBST : constant := 140;
   ERROR_SUBST_TO_JOIN : constant := 141;
   ERROR_BUSY_DRIVE : constant := 142;
   ERROR_SAME_DRIVE : constant := 143;
   ERROR_DIR_NOT_ROOT : constant := 144;
   ERROR_DIR_NOT_EMPTY : constant := 145;
   ERROR_IS_SUBST_PATH : constant := 146;
   ERROR_IS_JOIN_PATH : constant := 147;
   ERROR_PATH_BUSY : constant := 148;
   ERROR_IS_SUBST_TARGET : constant := 149;
   ERROR_SYSTEM_TRACE : constant := 150;
   ERROR_INVALID_EVENT_COUNT : constant := 151;
   ERROR_TOO_MANY_MUXWAITERS : constant := 152;
   ERROR_INVALID_LIST_FORMAT : constant := 153;
   ERROR_LABEL_TOO_LONG : constant := 154;
   ERROR_TOO_MANY_TCBS : constant := 155;
   ERROR_SIGNAL_REFUSED : constant := 156;
   ERROR_DISCARDED : constant := 157;
   ERROR_NOT_LOCKED : constant := 158;
   ERROR_BAD_THREADID_ADDR : constant := 159;
   ERROR_BAD_ARGUMENTS : constant := 160;
   ERROR_BAD_PATHNAME : constant := 161;
   ERROR_SIGNAL_PENDING : constant := 162;
   ERROR_MAX_THRDS_REACHED : constant := 164;
   ERROR_LOCK_FAILED : constant := 167;
   ERROR_BUSY : constant := 170;
   ERROR_DEVICE_SUPPORT_IN_PROGRESS : constant := 171;
   ERROR_CANCEL_VIOLATION : constant := 173;
   ERROR_ATOMIC_LOCKS_NOT_SUPPORTED : constant := 174;
   ERROR_INVALID_SEGMENT_NUMBER : constant := 180;
   ERROR_INVALID_ORDINAL : constant := 182;
   ERROR_ALREADY_EXISTS : constant := 183;
   ERROR_INVALID_FLAG_NUMBER : constant := 186;
   ERROR_SEM_NOT_FOUND : constant := 187;
   ERROR_INVALID_STARTING_CODESEG : constant := 188;
   ERROR_INVALID_STACKSEG : constant := 189;
   ERROR_INVALID_MODULETYPE : constant := 190;
   ERROR_INVALID_EXE_SIGNATURE : constant := 191;
   ERROR_EXE_MARKED_INVALID : constant := 192;
   ERROR_BAD_EXE_FORMAT : constant := 193;
   ERROR_ITERATED_DATA_EXCEEDS_64k : constant := 194;
   ERROR_INVALID_MINALLOCSIZE : constant := 195;
   ERROR_DYNLINK_FROM_INVALID_RING : constant := 196;
   ERROR_IOPL_NOT_ENABLED : constant := 197;
   ERROR_INVALID_SEGDPL : constant := 198;
   ERROR_AUTODATASEG_EXCEEDS_64k : constant := 199;
   ERROR_RING2SEG_MUST_BE_MOVABLE : constant := 200;
   ERROR_RELOC_CHAIN_XEEDS_SEGLIM : constant := 201;
   ERROR_INFLOOP_IN_RELOC_CHAIN : constant := 202;
   ERROR_ENVVAR_NOT_FOUND : constant := 203;
   ERROR_NO_SIGNAL_SENT : constant := 205;
   ERROR_FILENAME_EXCED_RANGE : constant := 206;
   ERROR_RING2_STACK_IN_USE : constant := 207;
   ERROR_META_EXPANSION_TOO_LONG : constant := 208;
   ERROR_INVALID_SIGNAL_NUMBER : constant := 209;
   ERROR_THREAD_1_INACTIVE : constant := 210;
   ERROR_LOCKED : constant := 212;
   ERROR_TOO_MANY_MODULES : constant := 214;
   ERROR_NESTING_NOT_ALLOWED : constant := 215;
   ERROR_EXE_MACHINE_TYPE_MISMATCH : constant := 216;
   ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY : constant := 217;
   ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY : constant := 218;
   ERROR_FILE_CHECKED_OUT : constant := 220;
   ERROR_CHECKOUT_REQUIRED : constant := 221;
   ERROR_BAD_FILE_TYPE : constant := 222;
   ERROR_FILE_TOO_LARGE : constant := 223;
   ERROR_FORMS_AUTH_REQUIRED : constant := 224;
   ERROR_VIRUS_INFECTED : constant := 225;
   ERROR_VIRUS_DELETED : constant := 226;
   ERROR_PIPE_LOCAL : constant := 229;
   ERROR_BAD_PIPE : constant := 230;
   ERROR_PIPE_BUSY : constant := 231;
   ERROR_NO_DATA : constant := 232;
   ERROR_PIPE_NOT_CONNECTED : constant := 233;
   ERROR_MORE_DATA : constant := 234;
   ERROR_NO_WORK_DONE : constant := 235;
   ERROR_VC_DISCONNECTED : constant := 240;
   ERROR_INVALID_EA_NAME : constant := 254;
   ERROR_EA_LIST_INCONSISTENT : constant := 255;
   WAIT_TIMEOUT : constant := 258;
   ERROR_NO_MORE_ITEMS : constant := 259;
   ERROR_CANNOT_COPY : constant := 266;
   ERROR_DIRECTORY : constant := 267;
   ERROR_EAS_DIDNT_FIT : constant := 275;
   ERROR_EA_FILE_CORRUPT : constant := 276;
   ERROR_EA_TABLE_FULL : constant := 277;
   ERROR_INVALID_EA_HANDLE : constant := 278;
   ERROR_EAS_NOT_SUPPORTED : constant := 282;
   ERROR_NOT_OWNER : constant := 288;
   ERROR_TOO_MANY_POSTS : constant := 298;
   ERROR_PARTIAL_COPY : constant := 299;
   ERROR_OPLOCK_NOT_GRANTED : constant := 300;
   ERROR_INVALID_OPLOCK_PROTOCOL : constant := 301;
   ERROR_DISK_TOO_FRAGMENTED : constant := 302;
   ERROR_DELETE_PENDING : constant := 303;
   ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING : constant := 304;
   ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME : constant := 305;
   ERROR_SECURITY_STREAM_IS_INCONSISTENT : constant := 306;
   ERROR_INVALID_LOCK_RANGE : constant := 307;
   ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT : constant := 308;
   ERROR_NOTIFICATION_GUID_ALREADY_DEFINED : constant := 309;
   ERROR_INVALID_EXCEPTION_HANDLER : constant := 310;
   ERROR_DUPLICATE_PRIVILEGES : constant := 311;
   ERROR_NO_RANGES_PROCESSED : constant := 312;
   ERROR_NOT_ALLOWED_ON_SYSTEM_FILE : constant := 313;
   ERROR_DISK_RESOURCES_EXHAUSTED : constant := 314;
   ERROR_INVALID_TOKEN : constant := 315;
   ERROR_DEVICE_FEATURE_NOT_SUPPORTED : constant := 316;
   ERROR_MR_MID_NOT_FOUND : constant := 317;
   ERROR_SCOPE_NOT_FOUND : constant := 318;
   ERROR_UNDEFINED_SCOPE : constant := 319;
   ERROR_INVALID_CAP : constant := 320;
   ERROR_DEVICE_UNREACHABLE : constant := 321;
   ERROR_DEVICE_NO_RESOURCES : constant := 322;
   ERROR_DATA_CHECKSUM_ERROR : constant := 323;
   ERROR_INTERMIXED_KERNEL_EA_OPERATION : constant := 324;
   ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED : constant := 326;
   ERROR_OFFSET_ALIGNMENT_VIOLATION : constant := 327;
   ERROR_INVALID_FIELD_IN_PARAMETER_LIST : constant := 328;
   ERROR_OPERATION_IN_PROGRESS : constant := 329;
   ERROR_BAD_DEVICE_PATH : constant := 330;
   ERROR_TOO_MANY_DESCRIPTORS : constant := 331;
   ERROR_SCRUB_DATA_DISABLED : constant := 332;
   ERROR_NOT_REDUNDANT_STORAGE : constant := 333;
   ERROR_RESIDENT_FILE_NOT_SUPPORTED : constant := 334;
   ERROR_COMPRESSED_FILE_NOT_SUPPORTED : constant := 335;
   ERROR_DIRECTORY_NOT_SUPPORTED : constant := 336;
   ERROR_NOT_READ_FROM_COPY : constant := 337;
   ERROR_FT_WRITE_FAILURE : constant := 338;
   ERROR_FT_DI_SCAN_REQUIRED : constant := 339;
   ERROR_INVALID_KERNEL_INFO_VERSION : constant := 340;
   ERROR_INVALID_PEP_INFO_VERSION : constant := 341;
   ERROR_OBJECT_NOT_EXTERNALLY_BACKED : constant := 342;
   ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN : constant := 343;
   ERROR_COMPRESSION_NOT_BENEFICIAL : constant := 344;
   ERROR_STORAGE_TOPOLOGY_ID_MISMATCH : constant := 345;
   ERROR_BLOCKED_BY_PARENTAL_CONTROLS : constant := 346;
   ERROR_BLOCK_TOO_MANY_REFERENCES : constant := 347;
   ERROR_MARKED_TO_DISALLOW_WRITES : constant := 348;
   ERROR_ENCLAVE_FAILURE : constant := 349;
   ERROR_FAIL_NOACTION_REBOOT : constant := 350;
   ERROR_FAIL_SHUTDOWN : constant := 351;
   ERROR_FAIL_RESTART : constant := 352;
   ERROR_MAX_SESSIONS_REACHED : constant := 353;
   ERROR_NETWORK_ACCESS_DENIED_EDP : constant := 354;
   ERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL : constant := 355;
   ERROR_EDP_POLICY_DENIES_OPERATION : constant := 356;
   ERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED : constant := 357;
   ERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT : constant := 358;
   ERROR_DEVICE_IN_MAINTENANCE : constant := 359;
   ERROR_NOT_SUPPORTED_ON_DAX : constant := 360;
   ERROR_DAX_MAPPING_EXISTS : constant := 361;
   ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING : constant := 362;
   ERROR_CLOUD_FILE_METADATA_CORRUPT : constant := 363;
   ERROR_CLOUD_FILE_METADATA_TOO_LARGE : constant := 364;
   ERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE : constant := 365;
   ERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH : constant := 366;
   ERROR_CHILD_PROCESS_BLOCKED : constant := 367;
   ERROR_STORAGE_LOST_DATA_PERSISTENCE : constant := 368;
   ERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE : constant := 369;
   ERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT : constant := 370;
   ERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY : constant := 371;
   ERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN : constant := 372;
   ERROR_GDI_HANDLE_LEAK : constant := 373;
   ERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS : constant := 374;
   ERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED : constant := 375;
   ERROR_NOT_A_CLOUD_FILE : constant := 376;
   ERROR_CLOUD_FILE_NOT_IN_SYNC : constant := 377;
   ERROR_CLOUD_FILE_ALREADY_CONNECTED : constant := 378;
   ERROR_CLOUD_FILE_NOT_SUPPORTED : constant := 379;
   ERROR_CLOUD_FILE_INVALID_REQUEST : constant := 380;
   ERROR_CLOUD_FILE_READ_ONLY_VOLUME : constant := 381;
   ERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY : constant := 382;
   ERROR_CLOUD_FILE_VALIDATION_FAILED : constant := 383;
   ERROR_SMB1_NOT_AVAILABLE : constant := 384;
   ERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION : constant := 385;
   ERROR_CLOUD_FILE_AUTHENTICATION_FAILED : constant := 386;
   ERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES : constant := 387;
   ERROR_CLOUD_FILE_NETWORK_UNAVAILABLE : constant := 388;
   ERROR_CLOUD_FILE_UNSUCCESSFUL : constant := 389;
   ERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT : constant := 390;
   ERROR_CLOUD_FILE_IN_USE : constant := 391;
   ERROR_CLOUD_FILE_PINNED : constant := 392;
   ERROR_CLOUD_FILE_REQUEST_ABORTED : constant := 393;
   ERROR_CLOUD_FILE_PROPERTY_CORRUPT : constant := 394;
   ERROR_CLOUD_FILE_ACCESS_DENIED : constant := 395;
   ERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS : constant := 396;
   ERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT : constant := 397;
   ERROR_CLOUD_FILE_REQUEST_CANCELED : constant := 398;
   ERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED : constant := 399;
   ERROR_THREAD_MODE_ALREADY_BACKGROUND : constant := 400;
   ERROR_THREAD_MODE_NOT_BACKGROUND : constant := 401;
   ERROR_PROCESS_MODE_ALREADY_BACKGROUND : constant := 402;
   ERROR_PROCESS_MODE_NOT_BACKGROUND : constant := 403;
   ERROR_CLOUD_FILE_PROVIDER_TERMINATED : constant := 404;
   ERROR_NOT_A_CLOUD_SYNC_ROOT : constant := 405;
   ERROR_FILE_PROTECTED_UNDER_DPL : constant := 406;
   ERROR_VOLUME_NOT_CLUSTER_ALIGNED : constant := 407;
   ERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND : constant := 408;
   ERROR_APPX_FILE_NOT_ENCRYPTED : constant := 409;
   ERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED : constant := 410;
   ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET : constant := 411;
   ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE : constant := 412;
   ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER : constant := 413;
   ERROR_LINUX_SUBSYSTEM_NOT_PRESENT : constant := 414;
   ERROR_FT_READ_FAILURE : constant := 415;
   ERROR_STORAGE_RESERVE_ID_INVALID : constant := 416;
   ERROR_STORAGE_RESERVE_DOES_NOT_EXIST : constant := 417;
   ERROR_STORAGE_RESERVE_ALREADY_EXISTS : constant := 418;
   ERROR_STORAGE_RESERVE_NOT_EMPTY : constant := 419;
   ERROR_NOT_A_DAX_VOLUME : constant := 420;
   ERROR_NOT_DAX_MAPPABLE : constant := 421;
   ERROR_TIME_SENSITIVE_THREAD : constant := 422;
   ERROR_DPL_NOT_SUPPORTED_FOR_USER : constant := 423;
   ERROR_CASE_DIFFERING_NAMES_IN_DIR : constant := 424;
   ERROR_FILE_NOT_SUPPORTED : constant := 425;
   ERROR_CLOUD_FILE_REQUEST_TIMEOUT : constant := 426;
   ERROR_NO_TASK_QUEUE : constant := 427;
   ERROR_SRC_SRV_DLL_LOAD_FAILED : constant := 428;
   ERROR_NOT_SUPPORTED_WITH_BTT : constant := 429;
   ERROR_ENCRYPTION_DISABLED : constant := 430;
   ERROR_ENCRYPTING_METADATA_DISALLOWED : constant := 431;
   ERROR_CANT_CLEAR_ENCRYPTION_FLAG : constant := 432;
   ERROR_NO_SUCH_DEVICE : constant := 433;
   ERROR_CLOUD_FILE_DEHYDRATION_DISALLOWED : constant := 434;
   ERROR_FILE_SNAP_IN_PROGRESS : constant := 435;
   ERROR_FILE_SNAP_USER_SECTION_NOT_SUPPORTED : constant := 436;
   ERROR_FILE_SNAP_MODIFY_NOT_SUPPORTED : constant := 437;
   ERROR_FILE_SNAP_IO_NOT_COORDINATED : constant := 438;
   ERROR_FILE_SNAP_UNEXPECTED_ERROR : constant := 439;
   ERROR_FILE_SNAP_INVALID_PARAMETER : constant := 440;
   ERROR_UNSATISFIED_DEPENDENCIES : constant := 441;
   ERROR_CASE_SENSITIVE_PATH : constant := 442;
   ERROR_UNEXPECTED_NTCACHEMANAGER_ERROR : constant := 443;
   ERROR_CAPAUTHZ_NOT_DEVUNLOCKED : constant := 450;
   ERROR_CAPAUTHZ_CHANGE_TYPE : constant := 451;
   ERROR_CAPAUTHZ_NOT_PROVISIONED : constant := 452;
   ERROR_CAPAUTHZ_NOT_AUTHORIZED : constant := 453;
   ERROR_CAPAUTHZ_NO_POLICY : constant := 454;
   ERROR_CAPAUTHZ_DB_CORRUPTED : constant := 455;
   ERROR_CAPAUTHZ_SCCD_INVALID_CATALOG : constant := 456;
   ERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY : constant := 457;
   ERROR_CAPAUTHZ_SCCD_PARSE_ERROR : constant := 458;
   ERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED : constant := 459;
   ERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH : constant := 460;
   ERROR_CIMFS_IMAGE_CORRUPT : constant := 470;
   ERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT : constant := 480;
   ERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT : constant := 481;
   ERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT : constant := 482;
   ERROR_DEVICE_HARDWARE_ERROR : constant := 483;
   ERROR_INVALID_ADDRESS : constant := 487;
   ERROR_VRF_CFG_AND_IO_ENABLED : constant := 1183;
   ERROR_PARTITION_TERMINATING : constant := 1184;
   ERROR_USER_PROFILE_LOAD : constant := 500;
   ERROR_ARITHMETIC_OVERFLOW : constant := 534;
   ERROR_PIPE_CONNECTED : constant := 535;
   ERROR_PIPE_LISTENING : constant := 536;
   ERROR_VERIFIER_STOP : constant := 537;
   ERROR_ABIOS_ERROR : constant := 538;
   ERROR_WX86_WARNING : constant := 539;
   ERROR_WX86_ERROR : constant := 540;
   ERROR_TIMER_NOT_CANCELED : constant := 541;
   ERROR_UNWIND : constant := 542;
   ERROR_BAD_STACK : constant := 543;
   ERROR_INVALID_UNWIND_TARGET : constant := 544;
   ERROR_INVALID_PORT_ATTRIBUTES : constant := 545;
   ERROR_PORT_MESSAGE_TOO_LONG : constant := 546;
   ERROR_INVALID_QUOTA_LOWER : constant := 547;
   ERROR_DEVICE_ALREADY_ATTACHED : constant := 548;
   ERROR_INSTRUCTION_MISALIGNMENT : constant := 549;
   ERROR_PROFILING_NOT_STARTED : constant := 550;
   ERROR_PROFILING_NOT_STOPPED : constant := 551;
   ERROR_COULD_NOT_INTERPRET : constant := 552;
   ERROR_PROFILING_AT_LIMIT : constant := 553;
   ERROR_CANT_WAIT : constant := 554;
   ERROR_CANT_TERMINATE_SELF : constant := 555;
   ERROR_UNEXPECTED_MM_CREATE_ERR : constant := 556;
   ERROR_UNEXPECTED_MM_MAP_ERROR : constant := 557;
   ERROR_UNEXPECTED_MM_EXTEND_ERR : constant := 558;
   ERROR_BAD_FUNCTION_TABLE : constant := 559;
   ERROR_NO_GUID_TRANSLATION : constant := 560;
   ERROR_INVALID_LDT_SIZE : constant := 561;
   ERROR_INVALID_LDT_OFFSET : constant := 563;
   ERROR_INVALID_LDT_DESCRIPTOR : constant := 564;
   ERROR_TOO_MANY_THREADS : constant := 565;
   ERROR_THREAD_NOT_IN_PROCESS : constant := 566;
   ERROR_PAGEFILE_QUOTA_EXCEEDED : constant := 567;
   ERROR_LOGON_SERVER_CONFLICT : constant := 568;
   ERROR_SYNCHRONIZATION_REQUIRED : constant := 569;
   ERROR_NET_OPEN_FAILED : constant := 570;
   ERROR_IO_PRIVILEGE_FAILED : constant := 571;
   ERROR_CONTROL_C_EXIT : constant := 572;
   ERROR_MISSING_SYSTEMFILE : constant := 573;
   ERROR_UNHANDLED_EXCEPTION : constant := 574;
   ERROR_APP_INIT_FAILURE : constant := 575;
   ERROR_PAGEFILE_CREATE_FAILED : constant := 576;
   ERROR_INVALID_IMAGE_HASH : constant := 577;
   ERROR_NO_PAGEFILE : constant := 578;
   ERROR_ILLEGAL_FLOAT_CONTEXT : constant := 579;
   ERROR_NO_EVENT_PAIR : constant := 580;
   ERROR_DOMAIN_CTRLR_CONFIG_ERROR : constant := 581;
   ERROR_ILLEGAL_CHARACTER : constant := 582;
   ERROR_UNDEFINED_CHARACTER : constant := 583;
   ERROR_FLOPPY_VOLUME : constant := 584;
   ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT : constant := 585;
   ERROR_BACKUP_CONTROLLER : constant := 586;
   ERROR_MUTANT_LIMIT_EXCEEDED : constant := 587;
   ERROR_FS_DRIVER_REQUIRED : constant := 588;
   ERROR_CANNOT_LOAD_REGISTRY_FILE : constant := 589;
   ERROR_DEBUG_ATTACH_FAILED : constant := 590;
   ERROR_SYSTEM_PROCESS_TERMINATED : constant := 591;
   ERROR_DATA_NOT_ACCEPTED : constant := 592;
   ERROR_VDM_HARD_ERROR : constant := 593;
   ERROR_DRIVER_CANCEL_TIMEOUT : constant := 594;
   ERROR_REPLY_MESSAGE_MISMATCH : constant := 595;
   ERROR_LOST_WRITEBEHIND_DATA : constant := 596;
   ERROR_CLIENT_SERVER_PARAMETERS_INVALID : constant := 597;
   ERROR_NOT_TINY_STREAM : constant := 598;
   ERROR_STACK_OVERFLOW_READ : constant := 599;
   ERROR_CONVERT_TO_LARGE : constant := 600;
   ERROR_FOUND_OUT_OF_SCOPE : constant := 601;
   ERROR_ALLOCATE_BUCKET : constant := 602;
   ERROR_MARSHALL_OVERFLOW : constant := 603;
   ERROR_INVALID_VARIANT : constant := 604;
   ERROR_BAD_COMPRESSION_BUFFER : constant := 605;
   ERROR_AUDIT_FAILED : constant := 606;
   ERROR_TIMER_RESOLUTION_NOT_SET : constant := 607;
   ERROR_INSUFFICIENT_LOGON_INFO : constant := 608;
   ERROR_BAD_DLL_ENTRYPOINT : constant := 609;
   ERROR_BAD_SERVICE_ENTRYPOINT : constant := 610;
   ERROR_IP_ADDRESS_CONFLICT1 : constant := 611;
   ERROR_IP_ADDRESS_CONFLICT2 : constant := 612;
   ERROR_REGISTRY_QUOTA_LIMIT : constant := 613;
   ERROR_NO_CALLBACK_ACTIVE : constant := 614;
   ERROR_PWD_TOO_SHORT : constant := 615;
   ERROR_PWD_TOO_RECENT : constant := 616;
   ERROR_PWD_HISTORY_CONFLICT : constant := 617;
   ERROR_UNSUPPORTED_COMPRESSION : constant := 618;
   ERROR_INVALID_HW_PROFILE : constant := 619;
   ERROR_INVALID_PLUGPLAY_DEVICE_PATH : constant := 620;
   ERROR_QUOTA_LIST_INCONSISTENT : constant := 621;
   ERROR_EVALUATION_EXPIRATION : constant := 622;
   ERROR_ILLEGAL_DLL_RELOCATION : constant := 623;
   ERROR_DLL_INIT_FAILED_LOGOFF : constant := 624;
   ERROR_VALIDATE_CONTINUE : constant := 625;
   ERROR_NO_MORE_MATCHES : constant := 626;
   ERROR_RANGE_LIST_CONFLICT : constant := 627;
   ERROR_SERVER_SID_MISMATCH : constant := 628;
   ERROR_CANT_ENABLE_DENY_ONLY : constant := 629;
   ERROR_FLOAT_MULTIPLE_FAULTS : constant := 630;
   ERROR_FLOAT_MULTIPLE_TRAPS : constant := 631;
   ERROR_NOINTERFACE : constant := 632;
   ERROR_DRIVER_FAILED_SLEEP : constant := 633;
   ERROR_CORRUPT_SYSTEM_FILE : constant := 634;
   ERROR_COMMITMENT_MINIMUM : constant := 635;
   ERROR_PNP_RESTART_ENUMERATION : constant := 636;
   ERROR_SYSTEM_IMAGE_BAD_SIGNATURE : constant := 637;
   ERROR_PNP_REBOOT_REQUIRED : constant := 638;
   ERROR_INSUFFICIENT_POWER : constant := 639;
   ERROR_MULTIPLE_FAULT_VIOLATION : constant := 640;
   ERROR_SYSTEM_SHUTDOWN : constant := 641;
   ERROR_PORT_NOT_SET : constant := 642;
   ERROR_DS_VERSION_CHECK_FAILURE : constant := 643;
   ERROR_RANGE_NOT_FOUND : constant := 644;
   ERROR_NOT_SAFE_MODE_DRIVER : constant := 646;
   ERROR_FAILED_DRIVER_ENTRY : constant := 647;
   ERROR_DEVICE_ENUMERATION_ERROR : constant := 648;
   ERROR_MOUNT_POINT_NOT_RESOLVED : constant := 649;
   ERROR_INVALID_DEVICE_OBJECT_PARAMETER : constant := 650;
   ERROR_MCA_OCCURED : constant := 651;
   ERROR_DRIVER_DATABASE_ERROR : constant := 652;
   ERROR_SYSTEM_HIVE_TOO_LARGE : constant := 653;
   ERROR_DRIVER_FAILED_PRIOR_UNLOAD : constant := 654;
   ERROR_VOLSNAP_PREPARE_HIBERNATE : constant := 655;
   ERROR_HIBERNATION_FAILURE : constant := 656;
   ERROR_PWD_TOO_LONG : constant := 657;
   ERROR_FILE_SYSTEM_LIMITATION : constant := 665;
   ERROR_ASSERTION_FAILURE : constant := 668;
   ERROR_ACPI_ERROR : constant := 669;
   ERROR_WOW_ASSERTION : constant := 670;
   ERROR_PNP_BAD_MPS_TABLE : constant := 671;
   ERROR_PNP_TRANSLATION_FAILED : constant := 672;
   ERROR_PNP_IRQ_TRANSLATION_FAILED : constant := 673;
   ERROR_PNP_INVALID_ID : constant := 674;
   ERROR_WAKE_SYSTEM_DEBUGGER : constant := 675;
   ERROR_HANDLES_CLOSED : constant := 676;
   ERROR_EXTRANEOUS_INFORMATION : constant := 677;
   ERROR_RXACT_COMMIT_NECESSARY : constant := 678;
   ERROR_MEDIA_CHECK : constant := 679;
   ERROR_GUID_SUBSTITUTION_MADE : constant := 680;
   ERROR_STOPPED_ON_SYMLINK : constant := 681;
   ERROR_LONGJUMP : constant := 682;
   ERROR_PLUGPLAY_QUERY_VETOED : constant := 683;
   ERROR_UNWIND_CONSOLIDATE : constant := 684;
   ERROR_REGISTRY_HIVE_RECOVERED : constant := 685;
   ERROR_DLL_MIGHT_BE_INSECURE : constant := 686;
   ERROR_DLL_MIGHT_BE_INCOMPATIBLE : constant := 687;
   ERROR_DBG_EXCEPTION_NOT_HANDLED : constant := 688;
   ERROR_DBG_REPLY_LATER : constant := 689;
   ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE : constant := 690;
   ERROR_DBG_TERMINATE_THREAD : constant := 691;
   ERROR_DBG_TERMINATE_PROCESS : constant := 692;
   ERROR_DBG_CONTROL_C : constant := 693;
   ERROR_DBG_PRINTEXCEPTION_C : constant := 694;
   ERROR_DBG_RIPEXCEPTION : constant := 695;
   ERROR_DBG_CONTROL_BREAK : constant := 696;
   ERROR_DBG_COMMAND_EXCEPTION : constant := 697;
   ERROR_OBJECT_NAME_EXISTS : constant := 698;
   ERROR_THREAD_WAS_SUSPENDED : constant := 699;
   ERROR_IMAGE_NOT_AT_BASE : constant := 700;
   ERROR_RXACT_STATE_CREATED : constant := 701;
   ERROR_SEGMENT_NOTIFICATION : constant := 702;
   ERROR_BAD_CURRENT_DIRECTORY : constant := 703;
   ERROR_FT_READ_RECOVERY_FROM_BACKUP : constant := 704;
   ERROR_FT_WRITE_RECOVERY : constant := 705;
   ERROR_IMAGE_MACHINE_TYPE_MISMATCH : constant := 706;
   ERROR_RECEIVE_PARTIAL : constant := 707;
   ERROR_RECEIVE_EXPEDITED : constant := 708;
   ERROR_RECEIVE_PARTIAL_EXPEDITED : constant := 709;
   ERROR_EVENT_DONE : constant := 710;
   ERROR_EVENT_PENDING : constant := 711;
   ERROR_CHECKING_FILE_SYSTEM : constant := 712;
   ERROR_FATAL_APP_EXIT : constant := 713;
   ERROR_PREDEFINED_HANDLE : constant := 714;
   ERROR_WAS_UNLOCKED : constant := 715;
   ERROR_SERVICE_NOTIFICATION : constant := 716;
   ERROR_WAS_LOCKED : constant := 717;
   ERROR_LOG_HARD_ERROR : constant := 718;
   ERROR_ALREADY_WIN32 : constant := 719;
   ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE : constant := 720;
   ERROR_NO_YIELD_PERFORMED : constant := 721;
   ERROR_TIMER_RESUME_IGNORED : constant := 722;
   ERROR_ARBITRATION_UNHANDLED : constant := 723;
   ERROR_CARDBUS_NOT_SUPPORTED : constant := 724;
   ERROR_MP_PROCESSOR_MISMATCH : constant := 725;
   ERROR_HIBERNATED : constant := 726;
   ERROR_RESUME_HIBERNATION : constant := 727;
   ERROR_FIRMWARE_UPDATED : constant := 728;
   ERROR_DRIVERS_LEAKING_LOCKED_PAGES : constant := 729;
   ERROR_WAKE_SYSTEM : constant := 730;
   ERROR_WAIT_1 : constant := 731;
   ERROR_WAIT_2 : constant := 732;
   ERROR_WAIT_3 : constant := 733;
   ERROR_WAIT_63 : constant := 734;
   ERROR_ABANDONED_WAIT_0 : constant := 735;
   ERROR_ABANDONED_WAIT_63 : constant := 736;
   ERROR_USER_APC : constant := 737;
   ERROR_KERNEL_APC : constant := 738;
   ERROR_ALERTED : constant := 739;
   ERROR_ELEVATION_REQUIRED : constant := 740;
   ERROR_REPARSE : constant := 741;
   ERROR_OPLOCK_BREAK_IN_PROGRESS : constant := 742;
   ERROR_VOLUME_MOUNTED : constant := 743;
   ERROR_RXACT_COMMITTED : constant := 744;
   ERROR_NOTIFY_CLEANUP : constant := 745;
   ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED : constant := 746;
   ERROR_PAGE_FAULT_TRANSITION : constant := 747;
   ERROR_PAGE_FAULT_DEMAND_ZERO : constant := 748;
   ERROR_PAGE_FAULT_COPY_ON_WRITE : constant := 749;
   ERROR_PAGE_FAULT_GUARD_PAGE : constant := 750;
   ERROR_PAGE_FAULT_PAGING_FILE : constant := 751;
   ERROR_CACHE_PAGE_LOCKED : constant := 752;
   ERROR_CRASH_DUMP : constant := 753;
   ERROR_BUFFER_ALL_ZEROS : constant := 754;
   ERROR_REPARSE_OBJECT : constant := 755;
   ERROR_RESOURCE_REQUIREMENTS_CHANGED : constant := 756;
   ERROR_TRANSLATION_COMPLETE : constant := 757;
   ERROR_NOTHING_TO_TERMINATE : constant := 758;
   ERROR_PROCESS_NOT_IN_JOB : constant := 759;
   ERROR_PROCESS_IN_JOB : constant := 760;
   ERROR_VOLSNAP_HIBERNATE_READY : constant := 761;
   ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY : constant := 762;
   ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED : constant := 763;
   ERROR_INTERRUPT_STILL_CONNECTED : constant := 764;
   ERROR_WAIT_FOR_OPLOCK : constant := 765;
   ERROR_DBG_EXCEPTION_HANDLED : constant := 766;
   ERROR_DBG_CONTINUE : constant := 767;
   ERROR_CALLBACK_POP_STACK : constant := 768;
   ERROR_COMPRESSION_DISABLED : constant := 769;
   ERROR_CANTFETCHBACKWARDS : constant := 770;
   ERROR_CANTSCROLLBACKWARDS : constant := 771;
   ERROR_ROWSNOTRELEASED : constant := 772;
   ERROR_BAD_ACCESSOR_FLAGS : constant := 773;
   ERROR_ERRORS_ENCOUNTERED : constant := 774;
   ERROR_NOT_CAPABLE : constant := 775;
   ERROR_REQUEST_OUT_OF_SEQUENCE : constant := 776;
   ERROR_VERSION_PARSE_ERROR : constant := 777;
   ERROR_BADSTARTPOSITION : constant := 778;
   ERROR_MEMORY_HARDWARE : constant := 779;
   ERROR_DISK_REPAIR_DISABLED : constant := 780;
   ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE : constant := 781;
   ERROR_SYSTEM_POWERSTATE_TRANSITION : constant := 782;
   ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION : constant := 783;
   ERROR_MCA_EXCEPTION : constant := 784;
   ERROR_ACCESS_AUDIT_BY_POLICY : constant := 785;
   ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY : constant := 786;
   ERROR_ABANDON_HIBERFILE : constant := 787;
   ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED : constant := 788;
   ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR : constant := 789;
   ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR : constant := 790;
   ERROR_BAD_MCFG_TABLE : constant := 791;
   ERROR_DISK_REPAIR_REDIRECTED : constant := 792;
   ERROR_DISK_REPAIR_UNSUCCESSFUL : constant := 793;
   ERROR_CORRUPT_LOG_OVERFULL : constant := 794;
   ERROR_CORRUPT_LOG_CORRUPTED : constant := 795;
   ERROR_CORRUPT_LOG_UNAVAILABLE : constant := 796;
   ERROR_CORRUPT_LOG_DELETED_FULL : constant := 797;
   ERROR_CORRUPT_LOG_CLEARED : constant := 798;
   ERROR_ORPHAN_NAME_EXHAUSTED : constant := 799;
   ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE : constant := 800;
   ERROR_CANNOT_GRANT_REQUESTED_OPLOCK : constant := 801;
   ERROR_CANNOT_BREAK_OPLOCK : constant := 802;
   ERROR_OPLOCK_HANDLE_CLOSED : constant := 803;
   ERROR_NO_ACE_CONDITION : constant := 804;
   ERROR_INVALID_ACE_CONDITION : constant := 805;
   ERROR_FILE_HANDLE_REVOKED : constant := 806;
   ERROR_IMAGE_AT_DIFFERENT_BASE : constant := 807;
   ERROR_ENCRYPTED_IO_NOT_POSSIBLE : constant := 808;
   ERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS : constant := 809;
   ERROR_QUOTA_ACTIVITY : constant := 810;
   ERROR_HANDLE_REVOKED : constant := 811;
   ERROR_CALLBACK_INVOKE_INLINE : constant := 812;
   ERROR_CPU_SET_INVALID : constant := 813;
   ERROR_ENCLAVE_NOT_TERMINATED : constant := 814;
   ERROR_ENCLAVE_VIOLATION : constant := 815;
   ERROR_EA_ACCESS_DENIED : constant := 994;
   ERROR_OPERATION_ABORTED : constant := 995;
   ERROR_IO_INCOMPLETE : constant := 996;
   ERROR_IO_PENDING : constant := 997;
   ERROR_NOACCESS : constant := 998;
   ERROR_SWAPERROR : constant := 999;
   ERROR_STACK_OVERFLOW : constant := 1001;
   ERROR_INVALID_MESSAGE : constant := 1002;
   ERROR_CAN_NOT_COMPLETE : constant := 1003;
   ERROR_INVALID_FLAGS : constant := 1004;
   ERROR_UNRECOGNIZED_VOLUME : constant := 1005;
   ERROR_FILE_INVALID : constant := 1006;
   ERROR_FULLSCREEN_MODE : constant := 1007;
   ERROR_NO_TOKEN : constant := 1008;
   ERROR_BADDB : constant := 1009;
   ERROR_BADKEY : constant := 1010;
   ERROR_CANTOPEN : constant := 1011;
   ERROR_CANTREAD : constant := 1012;
   ERROR_CANTWRITE : constant := 1013;
   ERROR_REGISTRY_RECOVERED : constant := 1014;
   ERROR_REGISTRY_CORRUPT : constant := 1015;
   ERROR_REGISTRY_IO_FAILED : constant := 1016;
   ERROR_NOT_REGISTRY_FILE : constant := 1017;
   ERROR_KEY_DELETED : constant := 1018;
   ERROR_NO_LOG_SPACE : constant := 1019;
   ERROR_KEY_HAS_CHILDREN : constant := 1020;
   ERROR_CHILD_MUST_BE_VOLATILE : constant := 1021;
   ERROR_NOTIFY_ENUM_DIR : constant := 1022;
   ERROR_DEPENDENT_SERVICES_RUNNING : constant := 1051;
   ERROR_INVALID_SERVICE_CONTROL : constant := 1052;
   ERROR_SERVICE_REQUEST_TIMEOUT : constant := 1053;
   ERROR_SERVICE_NO_THREAD : constant := 1054;
   ERROR_SERVICE_DATABASE_LOCKED : constant := 1055;
   ERROR_SERVICE_ALREADY_RUNNING : constant := 1056;
   ERROR_INVALID_SERVICE_ACCOUNT : constant := 1057;
   ERROR_SERVICE_DISABLED : constant := 1058;
   ERROR_CIRCULAR_DEPENDENCY : constant := 1059;
   ERROR_SERVICE_DOES_NOT_EXIST : constant := 1060;
   ERROR_SERVICE_CANNOT_ACCEPT_CTRL : constant := 1061;
   ERROR_SERVICE_NOT_ACTIVE : constant := 1062;
   ERROR_FAILED_SERVICE_CONTROLLER_CONNECT : constant := 1063;
   ERROR_EXCEPTION_IN_SERVICE : constant := 1064;
   ERROR_DATABASE_DOES_NOT_EXIST : constant := 1065;
   ERROR_SERVICE_SPECIFIC_ERROR : constant := 1066;
   ERROR_PROCESS_ABORTED : constant := 1067;
   ERROR_SERVICE_DEPENDENCY_FAIL : constant := 1068;
   ERROR_SERVICE_LOGON_FAILED : constant := 1069;
   ERROR_SERVICE_START_HANG : constant := 1070;
   ERROR_INVALID_SERVICE_LOCK : constant := 1071;
   ERROR_SERVICE_MARKED_FOR_DELETE : constant := 1072;
   ERROR_SERVICE_EXISTS : constant := 1073;
   ERROR_ALREADY_RUNNING_LKG : constant := 1074;
   ERROR_SERVICE_DEPENDENCY_DELETED : constant := 1075;
   ERROR_BOOT_ALREADY_ACCEPTED : constant := 1076;
   ERROR_SERVICE_NEVER_STARTED : constant := 1077;
   ERROR_DUPLICATE_SERVICE_NAME : constant := 1078;
   ERROR_DIFFERENT_SERVICE_ACCOUNT : constant := 1079;
   ERROR_CANNOT_DETECT_DRIVER_FAILURE : constant := 1080;
   ERROR_CANNOT_DETECT_PROCESS_ABORT : constant := 1081;
   ERROR_NO_RECOVERY_PROGRAM : constant := 1082;
   ERROR_SERVICE_NOT_IN_EXE : constant := 1083;
   ERROR_NOT_SAFEBOOT_SERVICE : constant := 1084;
   ERROR_END_OF_MEDIA : constant := 1100;
   ERROR_FILEMARK_DETECTED : constant := 1101;
   ERROR_BEGINNING_OF_MEDIA : constant := 1102;
   ERROR_SETMARK_DETECTED : constant := 1103;
   ERROR_NO_DATA_DETECTED : constant := 1104;
   ERROR_PARTITION_FAILURE : constant := 1105;
   ERROR_INVALID_BLOCK_LENGTH : constant := 1106;
   ERROR_DEVICE_NOT_PARTITIONED : constant := 1107;
   ERROR_UNABLE_TO_LOCK_MEDIA : constant := 1108;
   ERROR_UNABLE_TO_UNLOAD_MEDIA : constant := 1109;
   ERROR_MEDIA_CHANGED : constant := 1110;
   ERROR_BUS_RESET : constant := 1111;
   ERROR_NO_MEDIA_IN_DRIVE : constant := 1112;
   ERROR_NO_UNICODE_TRANSLATION : constant := 1113;
   ERROR_DLL_INIT_FAILED : constant := 1114;
   ERROR_SHUTDOWN_IN_PROGRESS : constant := 1115;
   ERROR_NO_SHUTDOWN_IN_PROGRESS : constant := 1116;
   ERROR_IO_DEVICE : constant := 1117;
   ERROR_SERIAL_NO_DEVICE : constant := 1118;
   ERROR_IRQ_BUSY : constant := 1119;
   ERROR_MORE_WRITES : constant := 1120;
   ERROR_COUNTER_TIMEOUT : constant := 1121;
   ERROR_FLOPPY_ID_MARK_NOT_FOUND : constant := 1122;
   ERROR_FLOPPY_WRONG_CYLINDER : constant := 1123;
   ERROR_FLOPPY_UNKNOWN_ERROR : constant := 1124;
   ERROR_FLOPPY_BAD_REGISTERS : constant := 1125;
   ERROR_DISK_RECALIBRATE_FAILED : constant := 1126;
   ERROR_DISK_OPERATION_FAILED : constant := 1127;
   ERROR_DISK_RESET_FAILED : constant := 1128;
   ERROR_EOM_OVERFLOW : constant := 1129;
   ERROR_NOT_ENOUGH_SERVER_MEMORY : constant := 1130;
   ERROR_POSSIBLE_DEADLOCK : constant := 1131;
   ERROR_MAPPED_ALIGNMENT : constant := 1132;
   ERROR_SET_POWER_STATE_VETOED : constant := 1140;
   ERROR_SET_POWER_STATE_FAILED : constant := 1141;
   ERROR_TOO_MANY_LINKS : constant := 1142;
   ERROR_OLD_WIN_VERSION : constant := 1150;
   ERROR_APP_WRONG_OS : constant := 1151;
   ERROR_SINGLE_INSTANCE_APP : constant := 1152;
   ERROR_RMODE_APP : constant := 1153;
   ERROR_INVALID_DLL : constant := 1154;
   ERROR_NO_ASSOCIATION : constant := 1155;
   ERROR_DDE_FAIL : constant := 1156;
   ERROR_DLL_NOT_FOUND : constant := 1157;
   ERROR_NO_MORE_USER_HANDLES : constant := 1158;
   ERROR_MESSAGE_SYNC_ONLY : constant := 1159;
   ERROR_SOURCE_ELEMENT_EMPTY : constant := 1160;
   ERROR_DESTINATION_ELEMENT_FULL : constant := 1161;
   ERROR_ILLEGAL_ELEMENT_ADDRESS : constant := 1162;
   ERROR_MAGAZINE_NOT_PRESENT : constant := 1163;
   ERROR_DEVICE_REINITIALIZATION_NEEDED : constant := 1164;
   ERROR_DEVICE_REQUIRES_CLEANING : constant := 1165;
   ERROR_DEVICE_DOOR_OPEN : constant := 1166;
   ERROR_DEVICE_NOT_CONNECTED : constant := 1167;
   ERROR_NOT_FOUND : constant := 1168;
   ERROR_NO_MATCH : constant := 1169;
   ERROR_SET_NOT_FOUND : constant := 1170;
   ERROR_POINT_NOT_FOUND : constant := 1171;
   ERROR_NO_TRACKING_SERVICE : constant := 1172;
   ERROR_NO_VOLUME_ID : constant := 1173;
   ERROR_UNABLE_TO_REMOVE_REPLACED : constant := 1175;
   ERROR_UNABLE_TO_MOVE_REPLACEMENT : constant := 1176;
   ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 : constant := 1177;
   ERROR_JOURNAL_DELETE_IN_PROGRESS : constant := 1178;
   ERROR_JOURNAL_NOT_ACTIVE : constant := 1179;
   ERROR_POTENTIAL_FILE_FOUND : constant := 1180;
   ERROR_JOURNAL_ENTRY_DELETED : constant := 1181;
   ERROR_SHUTDOWN_IS_SCHEDULED : constant := 1190;
   ERROR_SHUTDOWN_USERS_LOGGED_ON : constant := 1191;
   ERROR_BAD_DEVICE : constant := 1200;
   ERROR_CONNECTION_UNAVAIL : constant := 1201;
   ERROR_DEVICE_ALREADY_REMEMBERED : constant := 1202;
   ERROR_NO_NET_OR_BAD_PATH : constant := 1203;
   ERROR_BAD_PROVIDER : constant := 1204;
   ERROR_CANNOT_OPEN_PROFILE : constant := 1205;
   ERROR_BAD_PROFILE : constant := 1206;
   ERROR_NOT_CONTAINER : constant := 1207;
   ERROR_EXTENDED_ERROR : constant := 1208;
   ERROR_INVALID_GROUPNAME : constant := 1209;
   ERROR_INVALID_COMPUTERNAME : constant := 1210;
   ERROR_INVALID_EVENTNAME : constant := 1211;
   ERROR_INVALID_DOMAINNAME : constant := 1212;
   ERROR_INVALID_SERVICENAME : constant := 1213;
   ERROR_INVALID_NETNAME : constant := 1214;
   ERROR_INVALID_SHARENAME : constant := 1215;
   ERROR_INVALID_PASSWORDNAME : constant := 1216;
   ERROR_INVALID_MESSAGENAME : constant := 1217;
   ERROR_INVALID_MESSAGEDEST : constant := 1218;
   ERROR_SESSION_CREDENTIAL_CONFLICT : constant := 1219;
   ERROR_REMOTE_SESSION_LIMIT_EXCEEDED : constant := 1220;
   ERROR_DUP_DOMAINNAME : constant := 1221;
   ERROR_NO_NETWORK : constant := 1222;
   ERROR_CANCELLED : constant := 1223;
   ERROR_USER_MAPPED_FILE : constant := 1224;
   ERROR_CONNECTION_REFUSED : constant := 1225;
   ERROR_GRACEFUL_DISCONNECT : constant := 1226;
   ERROR_ADDRESS_ALREADY_ASSOCIATED : constant := 1227;
   ERROR_ADDRESS_NOT_ASSOCIATED : constant := 1228;
   ERROR_CONNECTION_INVALID : constant := 1229;
   ERROR_CONNECTION_ACTIVE : constant := 1230;
   ERROR_NETWORK_UNREACHABLE : constant := 1231;
   ERROR_HOST_UNREACHABLE : constant := 1232;
   ERROR_PROTOCOL_UNREACHABLE : constant := 1233;
   ERROR_PORT_UNREACHABLE : constant := 1234;
   ERROR_REQUEST_ABORTED : constant := 1235;
   ERROR_CONNECTION_ABORTED : constant := 1236;
   ERROR_RETRY : constant := 1237;
   ERROR_CONNECTION_COUNT_LIMIT : constant := 1238;
   ERROR_LOGIN_TIME_RESTRICTION : constant := 1239;
   ERROR_LOGIN_WKSTA_RESTRICTION : constant := 1240;
   ERROR_INCORRECT_ADDRESS : constant := 1241;
   ERROR_ALREADY_REGISTERED : constant := 1242;
   ERROR_SERVICE_NOT_FOUND : constant := 1243;
   ERROR_NOT_AUTHENTICATED : constant := 1244;
   ERROR_NOT_LOGGED_ON : constant := 1245;
   ERROR_CONTINUE : constant := 1246;
   ERROR_ALREADY_INITIALIZED : constant := 1247;
   ERROR_NO_MORE_DEVICES : constant := 1248;
   ERROR_NO_SUCH_SITE : constant := 1249;
   ERROR_DOMAIN_CONTROLLER_EXISTS : constant := 1250;
   ERROR_ONLY_IF_CONNECTED : constant := 1251;
   ERROR_OVERRIDE_NOCHANGES : constant := 1252;
   ERROR_BAD_USER_PROFILE : constant := 1253;
   ERROR_NOT_SUPPORTED_ON_SBS : constant := 1254;
   ERROR_SERVER_SHUTDOWN_IN_PROGRESS : constant := 1255;
   ERROR_HOST_DOWN : constant := 1256;
   ERROR_NON_ACCOUNT_SID : constant := 1257;
   ERROR_NON_DOMAIN_SID : constant := 1258;
   ERROR_APPHELP_BLOCK : constant := 1259;
   ERROR_ACCESS_DISABLED_BY_POLICY : constant := 1260;
   ERROR_REG_NAT_CONSUMPTION : constant := 1261;
   ERROR_CSCSHARE_OFFLINE : constant := 1262;
   ERROR_PKINIT_FAILURE : constant := 1263;
   ERROR_SMARTCARD_SUBSYSTEM_FAILURE : constant := 1264;
   ERROR_DOWNGRADE_DETECTED : constant := 1265;
   ERROR_MACHINE_LOCKED : constant := 1271;
   ERROR_SMB_GUEST_LOGON_BLOCKED : constant := 1272;
   ERROR_CALLBACK_SUPPLIED_INVALID_DATA : constant := 1273;
   ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED : constant := 1274;
   ERROR_DRIVER_BLOCKED : constant := 1275;
   ERROR_INVALID_IMPORT_OF_NON_DLL : constant := 1276;
   ERROR_ACCESS_DISABLED_WEBBLADE : constant := 1277;
   ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER : constant := 1278;
   ERROR_RECOVERY_FAILURE : constant := 1279;
   ERROR_ALREADY_FIBER : constant := 1280;
   ERROR_ALREADY_THREAD : constant := 1281;
   ERROR_STACK_BUFFER_OVERRUN : constant := 1282;
   ERROR_PARAMETER_QUOTA_EXCEEDED : constant := 1283;
   ERROR_DEBUGGER_INACTIVE : constant := 1284;
   ERROR_DELAY_LOAD_FAILED : constant := 1285;
   ERROR_VDM_DISALLOWED : constant := 1286;
   ERROR_UNIDENTIFIED_ERROR : constant := 1287;
   ERROR_INVALID_CRUNTIME_PARAMETER : constant := 1288;
   ERROR_BEYOND_VDL : constant := 1289;
   ERROR_INCOMPATIBLE_SERVICE_SID_TYPE : constant := 1290;
   ERROR_DRIVER_PROCESS_TERMINATED : constant := 1291;
   ERROR_IMPLEMENTATION_LIMIT : constant := 1292;
   ERROR_PROCESS_IS_PROTECTED : constant := 1293;
   ERROR_SERVICE_NOTIFY_CLIENT_LAGGING : constant := 1294;
   ERROR_DISK_QUOTA_EXCEEDED : constant := 1295;
   ERROR_CONTENT_BLOCKED : constant := 1296;
   ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE : constant := 1297;
   ERROR_APP_HANG : constant := 1298;
   ERROR_INVALID_LABEL : constant := 1299;
   ERROR_NOT_ALL_ASSIGNED : constant := 1300;
   ERROR_SOME_NOT_MAPPED : constant := 1301;
   ERROR_NO_QUOTAS_FOR_ACCOUNT : constant := 1302;
   ERROR_LOCAL_USER_SESSION_KEY : constant := 1303;
   ERROR_NULL_LM_PASSWORD : constant := 1304;
   ERROR_UNKNOWN_REVISION : constant := 1305;
   ERROR_REVISION_MISMATCH : constant := 1306;
   ERROR_INVALID_OWNER : constant := 1307;
   ERROR_INVALID_PRIMARY_GROUP : constant := 1308;
   ERROR_NO_IMPERSONATION_TOKEN : constant := 1309;
   ERROR_CANT_DISABLE_MANDATORY : constant := 1310;
   ERROR_NO_LOGON_SERVERS : constant := 1311;
   ERROR_NO_SUCH_LOGON_SESSION : constant := 1312;
   ERROR_NO_SUCH_PRIVILEGE : constant := 1313;
   ERROR_PRIVILEGE_NOT_HELD : constant := 1314;
   ERROR_INVALID_ACCOUNT_NAME : constant := 1315;
   ERROR_USER_EXISTS : constant := 1316;
   ERROR_NO_SUCH_USER : constant := 1317;
   ERROR_GROUP_EXISTS : constant := 1318;
   ERROR_NO_SUCH_GROUP : constant := 1319;
   ERROR_MEMBER_IN_GROUP : constant := 1320;
   ERROR_MEMBER_NOT_IN_GROUP : constant := 1321;
   ERROR_LAST_ADMIN : constant := 1322;
   ERROR_WRONG_PASSWORD : constant := 1323;
   ERROR_ILL_FORMED_PASSWORD : constant := 1324;
   ERROR_PASSWORD_RESTRICTION : constant := 1325;
   ERROR_LOGON_FAILURE : constant := 1326;
   ERROR_ACCOUNT_RESTRICTION : constant := 1327;
   ERROR_INVALID_LOGON_HOURS : constant := 1328;
   ERROR_INVALID_WORKSTATION : constant := 1329;
   ERROR_PASSWORD_EXPIRED : constant := 1330;
   ERROR_ACCOUNT_DISABLED : constant := 1331;
   ERROR_NONE_MAPPED : constant := 1332;
   ERROR_TOO_MANY_LUIDS_REQUESTED : constant := 1333;
   ERROR_LUIDS_EXHAUSTED : constant := 1334;
   ERROR_INVALID_SUB_AUTHORITY : constant := 1335;
   ERROR_INVALID_ACL : constant := 1336;
   ERROR_INVALID_SID : constant := 1337;
   ERROR_INVALID_SECURITY_DESCR : constant := 1338;
   ERROR_BAD_INHERITANCE_ACL : constant := 1340;
   ERROR_SERVER_DISABLED : constant := 1341;
   ERROR_SERVER_NOT_DISABLED : constant := 1342;
   ERROR_INVALID_ID_AUTHORITY : constant := 1343;
   ERROR_ALLOTTED_SPACE_EXCEEDED : constant := 1344;
   ERROR_INVALID_GROUP_ATTRIBUTES : constant := 1345;
   ERROR_BAD_IMPERSONATION_LEVEL : constant := 1346;
   ERROR_CANT_OPEN_ANONYMOUS : constant := 1347;
   ERROR_BAD_VALIDATION_CLASS : constant := 1348;
   ERROR_BAD_TOKEN_TYPE : constant := 1349;
   ERROR_NO_SECURITY_ON_OBJECT : constant := 1350;
   ERROR_CANT_ACCESS_DOMAIN_INFO : constant := 1351;
   ERROR_INVALID_SERVER_STATE : constant := 1352;
   ERROR_INVALID_DOMAIN_STATE : constant := 1353;
   ERROR_INVALID_DOMAIN_ROLE : constant := 1354;
   ERROR_NO_SUCH_DOMAIN : constant := 1355;
   ERROR_DOMAIN_EXISTS : constant := 1356;
   ERROR_DOMAIN_LIMIT_EXCEEDED : constant := 1357;
   ERROR_INTERNAL_DB_CORRUPTION : constant := 1358;
   ERROR_INTERNAL_ERROR : constant := 1359;
   ERROR_GENERIC_NOT_MAPPED : constant := 1360;
   ERROR_BAD_DESCRIPTOR_FORMAT : constant := 1361;
   ERROR_NOT_LOGON_PROCESS : constant := 1362;
   ERROR_LOGON_SESSION_EXISTS : constant := 1363;
   ERROR_NO_SUCH_PACKAGE : constant := 1364;
   ERROR_BAD_LOGON_SESSION_STATE : constant := 1365;
   ERROR_LOGON_SESSION_COLLISION : constant := 1366;
   ERROR_INVALID_LOGON_TYPE : constant := 1367;
   ERROR_CANNOT_IMPERSONATE : constant := 1368;
   ERROR_RXACT_INVALID_STATE : constant := 1369;
   ERROR_RXACT_COMMIT_FAILURE : constant := 1370;
   ERROR_SPECIAL_ACCOUNT : constant := 1371;
   ERROR_SPECIAL_GROUP : constant := 1372;
   ERROR_SPECIAL_USER : constant := 1373;
   ERROR_MEMBERS_PRIMARY_GROUP : constant := 1374;
   ERROR_TOKEN_ALREADY_IN_USE : constant := 1375;
   ERROR_NO_SUCH_ALIAS : constant := 1376;
   ERROR_MEMBER_NOT_IN_ALIAS : constant := 1377;
   ERROR_MEMBER_IN_ALIAS : constant := 1378;
   ERROR_ALIAS_EXISTS : constant := 1379;
   ERROR_LOGON_NOT_GRANTED : constant := 1380;
   ERROR_TOO_MANY_SECRETS : constant := 1381;
   ERROR_SECRET_TOO_LONG : constant := 1382;
   ERROR_INTERNAL_DB_ERROR : constant := 1383;
   ERROR_TOO_MANY_CONTEXT_IDS : constant := 1384;
   ERROR_LOGON_TYPE_NOT_GRANTED : constant := 1385;
   ERROR_NT_CROSS_ENCRYPTION_REQUIRED : constant := 1386;
   ERROR_NO_SUCH_MEMBER : constant := 1387;
   ERROR_INVALID_MEMBER : constant := 1388;
   ERROR_TOO_MANY_SIDS : constant := 1389;
   ERROR_LM_CROSS_ENCRYPTION_REQUIRED : constant := 1390;
   ERROR_NO_INHERITANCE : constant := 1391;
   ERROR_FILE_CORRUPT : constant := 1392;
   ERROR_DISK_CORRUPT : constant := 1393;
   ERROR_NO_USER_SESSION_KEY : constant := 1394;
   ERROR_LICENSE_QUOTA_EXCEEDED : constant := 1395;
   ERROR_WRONG_TARGET_NAME : constant := 1396;
   ERROR_MUTUAL_AUTH_FAILED : constant := 1397;
   ERROR_TIME_SKEW : constant := 1398;
   ERROR_CURRENT_DOMAIN_NOT_ALLOWED : constant := 1399;
   ERROR_INVALID_WINDOW_HANDLE : constant := 1400;
   ERROR_INVALID_MENU_HANDLE : constant := 1401;
   ERROR_INVALID_CURSOR_HANDLE : constant := 1402;
   ERROR_INVALID_ACCEL_HANDLE : constant := 1403;
   ERROR_INVALID_HOOK_HANDLE : constant := 1404;
   ERROR_INVALID_DWP_HANDLE : constant := 1405;
   ERROR_TLW_WITH_WSCHILD : constant := 1406;
   ERROR_CANNOT_FIND_WND_CLASS : constant := 1407;
   ERROR_WINDOW_OF_OTHER_THREAD : constant := 1408;
   ERROR_HOTKEY_ALREADY_REGISTERED : constant := 1409;
   ERROR_CLASS_ALREADY_EXISTS : constant := 1410;
   ERROR_CLASS_DOES_NOT_EXIST : constant := 1411;
   ERROR_CLASS_HAS_WINDOWS : constant := 1412;
   ERROR_INVALID_INDEX : constant := 1413;
   ERROR_INVALID_ICON_HANDLE : constant := 1414;
   ERROR_PRIVATE_DIALOG_INDEX : constant := 1415;
   ERROR_LISTBOX_ID_NOT_FOUND : constant := 1416;
   ERROR_NO_WILDCARD_CHARACTERS : constant := 1417;
   ERROR_CLIPBOARD_NOT_OPEN : constant := 1418;
   ERROR_HOTKEY_NOT_REGISTERED : constant := 1419;
   ERROR_WINDOW_NOT_DIALOG : constant := 1420;
   ERROR_CONTROL_ID_NOT_FOUND : constant := 1421;
   ERROR_INVALID_COMBOBOX_MESSAGE : constant := 1422;
   ERROR_WINDOW_NOT_COMBOBOX : constant := 1423;
   ERROR_INVALID_EDIT_HEIGHT : constant := 1424;
   ERROR_DC_NOT_FOUND : constant := 1425;
   ERROR_INVALID_HOOK_FILTER : constant := 1426;
   ERROR_INVALID_FILTER_PROC : constant := 1427;
   ERROR_HOOK_NEEDS_HMOD : constant := 1428;
   ERROR_GLOBAL_ONLY_HOOK : constant := 1429;
   ERROR_JOURNAL_HOOK_SET : constant := 1430;
   ERROR_HOOK_NOT_INSTALLED : constant := 1431;
   ERROR_INVALID_LB_MESSAGE : constant := 1432;
   ERROR_SETCOUNT_ON_BAD_LB : constant := 1433;
   ERROR_LB_WITHOUT_TABSTOPS : constant := 1434;
   ERROR_DESTROY_OBJECT_OF_OTHER_THREAD : constant := 1435;
   ERROR_CHILD_WINDOW_MENU : constant := 1436;
   ERROR_NO_SYSTEM_MENU : constant := 1437;
   ERROR_INVALID_MSGBOX_STYLE : constant := 1438;
   ERROR_INVALID_SPI_VALUE : constant := 1439;
   ERROR_SCREEN_ALREADY_LOCKED : constant := 1440;
   ERROR_HWNDS_HAVE_DIFF_PARENT : constant := 1441;
   ERROR_NOT_CHILD_WINDOW : constant := 1442;
   ERROR_INVALID_GW_COMMAND : constant := 1443;
   ERROR_INVALID_THREAD_ID : constant := 1444;
   ERROR_NON_MDICHILD_WINDOW : constant := 1445;
   ERROR_POPUP_ALREADY_ACTIVE : constant := 1446;
   ERROR_NO_SCROLLBARS : constant := 1447;
   ERROR_INVALID_SCROLLBAR_RANGE : constant := 1448;
   ERROR_INVALID_SHOWWIN_COMMAND : constant := 1449;
   ERROR_NO_SYSTEM_RESOURCES : constant := 1450;
   ERROR_NONPAGED_SYSTEM_RESOURCES : constant := 1451;
   ERROR_PAGED_SYSTEM_RESOURCES : constant := 1452;
   ERROR_WORKING_SET_QUOTA : constant := 1453;
   ERROR_PAGEFILE_QUOTA : constant := 1454;
   ERROR_COMMITMENT_LIMIT : constant := 1455;
   ERROR_MENU_ITEM_NOT_FOUND : constant := 1456;
   ERROR_INVALID_KEYBOARD_HANDLE : constant := 1457;
   ERROR_HOOK_TYPE_NOT_ALLOWED : constant := 1458;
   ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION : constant := 1459;
   ERROR_TIMEOUT : constant := 1460;
   ERROR_INVALID_MONITOR_HANDLE : constant := 1461;
   ERROR_INCORRECT_SIZE : constant := 1462;
   ERROR_SYMLINK_CLASS_DISABLED : constant := 1463;
   ERROR_SYMLINK_NOT_SUPPORTED : constant := 1464;
   ERROR_XML_PARSE_ERROR : constant := 1465;
   ERROR_XMLDSIG_ERROR : constant := 1466;
   ERROR_RESTART_APPLICATION : constant := 1467;
   ERROR_WRONG_COMPARTMENT : constant := 1468;
   ERROR_AUTHIP_FAILURE : constant := 1469;
   ERROR_NO_NVRAM_RESOURCES : constant := 1470;
   ERROR_NOT_GUI_PROCESS : constant := 1471;
   ERROR_EVENTLOG_FILE_CORRUPT : constant := 1500;
   ERROR_EVENTLOG_CANT_START : constant := 1501;
   ERROR_LOG_FILE_FULL : constant := 1502;
   ERROR_EVENTLOG_FILE_CHANGED : constant := 1503;
   ERROR_CONTAINER_ASSIGNED : constant := 1504;
   ERROR_JOB_NO_CONTAINER : constant := 1505;
   ERROR_INVALID_TASK_NAME : constant := 1550;
   ERROR_INVALID_TASK_INDEX : constant := 1551;
   ERROR_THREAD_ALREADY_IN_TASK : constant := 1552;
   ERROR_INSTALL_SERVICE_FAILURE : constant := 1601;
   ERROR_INSTALL_USEREXIT : constant := 1602;
   ERROR_INSTALL_FAILURE : constant := 1603;
   ERROR_INSTALL_SUSPEND : constant := 1604;
   ERROR_UNKNOWN_PRODUCT : constant := 1605;
   ERROR_UNKNOWN_FEATURE : constant := 1606;
   ERROR_UNKNOWN_COMPONENT : constant := 1607;
   ERROR_UNKNOWN_PROPERTY : constant := 1608;
   ERROR_INVALID_HANDLE_STATE : constant := 1609;
   ERROR_BAD_CONFIGURATION : constant := 1610;
   ERROR_INDEX_ABSENT : constant := 1611;
   ERROR_INSTALL_SOURCE_ABSENT : constant := 1612;
   ERROR_INSTALL_PACKAGE_VERSION : constant := 1613;
   ERROR_PRODUCT_UNINSTALLED : constant := 1614;
   ERROR_BAD_QUERY_SYNTAX : constant := 1615;
   ERROR_INVALID_FIELD : constant := 1616;
   ERROR_DEVICE_REMOVED : constant := 1617;
   ERROR_INSTALL_ALREADY_RUNNING : constant := 1618;
   ERROR_INSTALL_PACKAGE_OPEN_FAILED : constant := 1619;
   ERROR_INSTALL_PACKAGE_INVALID : constant := 1620;
   ERROR_INSTALL_UI_FAILURE : constant := 1621;
   ERROR_INSTALL_LOG_FAILURE : constant := 1622;
   ERROR_INSTALL_LANGUAGE_UNSUPPORTED : constant := 1623;
   ERROR_INSTALL_TRANSFORM_FAILURE : constant := 1624;
   ERROR_INSTALL_PACKAGE_REJECTED : constant := 1625;
   ERROR_FUNCTION_NOT_CALLED : constant := 1626;
   ERROR_FUNCTION_FAILED : constant := 1627;
   ERROR_INVALID_TABLE : constant := 1628;
   ERROR_DATATYPE_MISMATCH : constant := 1629;
   ERROR_UNSUPPORTED_TYPE : constant := 1630;
   ERROR_CREATE_FAILED : constant := 1631;
   ERROR_INSTALL_TEMP_UNWRITABLE : constant := 1632;
   ERROR_INSTALL_PLATFORM_UNSUPPORTED : constant := 1633;
   ERROR_INSTALL_NOTUSED : constant := 1634;
   ERROR_PATCH_PACKAGE_OPEN_FAILED : constant := 1635;
   ERROR_PATCH_PACKAGE_INVALID : constant := 1636;
   ERROR_PATCH_PACKAGE_UNSUPPORTED : constant := 1637;
   ERROR_PRODUCT_VERSION : constant := 1638;
   ERROR_INVALID_COMMAND_LINE : constant := 1639;
   ERROR_INSTALL_REMOTE_DISALLOWED : constant := 1640;
   ERROR_SUCCESS_REBOOT_INITIATED : constant := 1641;
   ERROR_PATCH_TARGET_NOT_FOUND : constant := 1642;
   ERROR_PATCH_PACKAGE_REJECTED : constant := 1643;
   ERROR_INSTALL_TRANSFORM_REJECTED : constant := 1644;
   ERROR_INSTALL_REMOTE_PROHIBITED : constant := 1645;
   ERROR_PATCH_REMOVAL_UNSUPPORTED : constant := 1646;
   ERROR_UNKNOWN_PATCH : constant := 1647;
   ERROR_PATCH_NO_SEQUENCE : constant := 1648;
   ERROR_PATCH_REMOVAL_DISALLOWED : constant := 1649;
   ERROR_INVALID_PATCH_XML : constant := 1650;
   ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT : constant := 1651;
   ERROR_INSTALL_SERVICE_SAFEBOOT : constant := 1652;
   ERROR_FAIL_FAST_EXCEPTION : constant := 1653;
   ERROR_INSTALL_REJECTED : constant := 1654;
   ERROR_DYNAMIC_CODE_BLOCKED : constant := 1655;
   ERROR_NOT_SAME_OBJECT : constant := 1656;
   ERROR_STRICT_CFG_VIOLATION : constant := 1657;
   ERROR_SET_CONTEXT_DENIED : constant := 1660;
   ERROR_CROSS_PARTITION_VIOLATION : constant := 1661;
   ERROR_RETURN_ADDRESS_HIJACK_ATTEMPT : constant := 1662;
   RPC_S_INVALID_STRING_BINDING : constant := 1700;
   RPC_S_WRONG_KIND_OF_BINDING : constant := 1701;
   RPC_S_INVALID_BINDING : constant := 1702;
   RPC_S_PROTSEQ_NOT_SUPPORTED : constant := 1703;
   RPC_S_INVALID_RPC_PROTSEQ : constant := 1704;
   RPC_S_INVALID_STRING_UUID : constant := 1705;
   RPC_S_INVALID_ENDPOINT_FORMAT : constant := 1706;
   RPC_S_INVALID_NET_ADDR : constant := 1707;
   RPC_S_NO_ENDPOINT_FOUND : constant := 1708;
   RPC_S_INVALID_TIMEOUT : constant := 1709;
   RPC_S_OBJECT_NOT_FOUND : constant := 1710;
   RPC_S_ALREADY_REGISTERED : constant := 1711;
   RPC_S_TYPE_ALREADY_REGISTERED : constant := 1712;
   RPC_S_ALREADY_LISTENING : constant := 1713;
   RPC_S_NO_PROTSEQS_REGISTERED : constant := 1714;
   RPC_S_NOT_LISTENING : constant := 1715;
   RPC_S_UNKNOWN_MGR_TYPE : constant := 1716;
   RPC_S_UNKNOWN_IF : constant := 1717;
   RPC_S_NO_BINDINGS : constant := 1718;
   RPC_S_NO_PROTSEQS : constant := 1719;
   RPC_S_CANT_CREATE_ENDPOINT : constant := 1720;
   RPC_S_OUT_OF_RESOURCES : constant := 1721;
   RPC_S_SERVER_UNAVAILABLE : constant := 1722;
   RPC_S_SERVER_TOO_BUSY : constant := 1723;
   RPC_S_INVALID_NETWORK_OPTIONS : constant := 1724;
   RPC_S_NO_CALL_ACTIVE : constant := 1725;
   RPC_S_CALL_FAILED : constant := 1726;
   RPC_S_CALL_FAILED_DNE : constant := 1727;
   RPC_S_PROTOCOL_ERROR : constant := 1728;
   RPC_S_PROXY_ACCESS_DENIED : constant := 1729;
   RPC_S_UNSUPPORTED_TRANS_SYN : constant := 1730;
   RPC_S_UNSUPPORTED_TYPE : constant := 1732;
   RPC_S_INVALID_TAG : constant := 1733;
   RPC_S_INVALID_BOUND : constant := 1734;
   RPC_S_NO_ENTRY_NAME : constant := 1735;
   RPC_S_INVALID_NAME_SYNTAX : constant := 1736;
   RPC_S_UNSUPPORTED_NAME_SYNTAX : constant := 1737;
   RPC_S_UUID_NO_ADDRESS : constant := 1739;
   RPC_S_DUPLICATE_ENDPOINT : constant := 1740;
   RPC_S_UNKNOWN_AUTHN_TYPE : constant := 1741;
   RPC_S_MAX_CALLS_TOO_SMALL : constant := 1742;
   RPC_S_STRING_TOO_LONG : constant := 1743;
   RPC_S_PROTSEQ_NOT_FOUND : constant := 1744;
   RPC_S_PROCNUM_OUT_OF_RANGE : constant := 1745;
   RPC_S_BINDING_HAS_NO_AUTH : constant := 1746;
   RPC_S_UNKNOWN_AUTHN_SERVICE : constant := 1747;
   RPC_S_UNKNOWN_AUTHN_LEVEL : constant := 1748;
   RPC_S_INVALID_AUTH_IDENTITY : constant := 1749;
   RPC_S_UNKNOWN_AUTHZ_SERVICE : constant := 1750;
   EPT_S_INVALID_ENTRY : constant := 1751;
   EPT_S_CANT_PERFORM_OP : constant := 1752;
   EPT_S_NOT_REGISTERED : constant := 1753;
   RPC_S_NOTHING_TO_EXPORT : constant := 1754;
   RPC_S_INCOMPLETE_NAME : constant := 1755;
   RPC_S_INVALID_VERS_OPTION : constant := 1756;
   RPC_S_NO_MORE_MEMBERS : constant := 1757;
   RPC_S_NOT_ALL_OBJS_UNEXPORTED : constant := 1758;
   RPC_S_INTERFACE_NOT_FOUND : constant := 1759;
   RPC_S_ENTRY_ALREADY_EXISTS : constant := 1760;
   RPC_S_ENTRY_NOT_FOUND : constant := 1761;
   RPC_S_NAME_SERVICE_UNAVAILABLE : constant := 1762;
   RPC_S_INVALID_NAF_ID : constant := 1763;
   RPC_S_CANNOT_SUPPORT : constant := 1764;
   RPC_S_NO_CONTEXT_AVAILABLE : constant := 1765;
   RPC_S_INTERNAL_ERROR : constant := 1766;
   RPC_S_ZERO_DIVIDE : constant := 1767;
   RPC_S_ADDRESS_ERROR : constant := 1768;
   RPC_S_FP_DIV_ZERO : constant := 1769;
   RPC_S_FP_UNDERFLOW : constant := 1770;
   RPC_S_FP_OVERFLOW : constant := 1771;
   RPC_X_NO_MORE_ENTRIES : constant := 1772;
   RPC_X_SS_CHAR_TRANS_OPEN_FAIL : constant := 1773;
   RPC_X_SS_CHAR_TRANS_SHORT_FILE : constant := 1774;
   RPC_X_SS_IN_NULL_CONTEXT : constant := 1775;
   RPC_X_SS_CONTEXT_DAMAGED : constant := 1777;
   RPC_X_SS_HANDLES_MISMATCH : constant := 1778;
   RPC_X_SS_CANNOT_GET_CALL_HANDLE : constant := 1779;
   RPC_X_NULL_REF_POINTER : constant := 1780;
   RPC_X_ENUM_VALUE_OUT_OF_RANGE : constant := 1781;
   RPC_X_BYTE_COUNT_TOO_SMALL : constant := 1782;
   RPC_X_BAD_STUB_DATA : constant := 1783;
   ERROR_INVALID_USER_BUFFER : constant := 1784;
   ERROR_UNRECOGNIZED_MEDIA : constant := 1785;
   ERROR_NO_TRUST_LSA_SECRET : constant := 1786;
   ERROR_NO_TRUST_SAM_ACCOUNT : constant := 1787;
   ERROR_TRUSTED_DOMAIN_FAILURE : constant := 1788;
   ERROR_TRUSTED_RELATIONSHIP_FAILURE : constant := 1789;
   ERROR_TRUST_FAILURE : constant := 1790;
   RPC_S_CALL_IN_PROGRESS : constant := 1791;
   ERROR_NETLOGON_NOT_STARTED : constant := 1792;
   ERROR_ACCOUNT_EXPIRED : constant := 1793;
   ERROR_REDIRECTOR_HAS_OPEN_HANDLES : constant := 1794;
   ERROR_PRINTER_DRIVER_ALREADY_INSTALLED : constant := 1795;
   ERROR_UNKNOWN_PORT : constant := 1796;
   ERROR_UNKNOWN_PRINTER_DRIVER : constant := 1797;
   ERROR_UNKNOWN_PRINTPROCESSOR : constant := 1798;
   ERROR_INVALID_SEPARATOR_FILE : constant := 1799;
   ERROR_INVALID_PRIORITY : constant := 1800;
   ERROR_INVALID_PRINTER_NAME : constant := 1801;
   ERROR_PRINTER_ALREADY_EXISTS : constant := 1802;
   ERROR_INVALID_PRINTER_COMMAND : constant := 1803;
   ERROR_INVALID_DATATYPE : constant := 1804;
   ERROR_INVALID_ENVIRONMENT : constant := 1805;
   RPC_S_NO_MORE_BINDINGS : constant := 1806;
   ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT : constant := 1807;
   ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT : constant := 1808;
   ERROR_NOLOGON_SERVER_TRUST_ACCOUNT : constant := 1809;
   ERROR_DOMAIN_TRUST_INCONSISTENT : constant := 1810;
   ERROR_SERVER_HAS_OPEN_HANDLES : constant := 1811;
   ERROR_RESOURCE_DATA_NOT_FOUND : constant := 1812;
   ERROR_RESOURCE_TYPE_NOT_FOUND : constant := 1813;
   ERROR_RESOURCE_NAME_NOT_FOUND : constant := 1814;
   ERROR_RESOURCE_LANG_NOT_FOUND : constant := 1815;
   ERROR_NOT_ENOUGH_QUOTA : constant := 1816;
   RPC_S_NO_INTERFACES : constant := 1817;
   RPC_S_CALL_CANCELLED : constant := 1818;
   RPC_S_BINDING_INCOMPLETE : constant := 1819;
   RPC_S_COMM_FAILURE : constant := 1820;
   RPC_S_UNSUPPORTED_AUTHN_LEVEL : constant := 1821;
   RPC_S_NO_PRINC_NAME : constant := 1822;
   RPC_S_NOT_RPC_ERROR : constant := 1823;
   RPC_S_UUID_LOCAL_ONLY : constant := 1824;
   RPC_S_SEC_PKG_ERROR : constant := 1825;
   RPC_S_NOT_CANCELLED : constant := 1826;
   RPC_X_INVALID_ES_ACTION : constant := 1827;
   RPC_X_WRONG_ES_VERSION : constant := 1828;
   RPC_X_WRONG_STUB_VERSION : constant := 1829;
   RPC_X_INVALID_PIPE_OBJECT : constant := 1830;
   RPC_X_WRONG_PIPE_ORDER : constant := 1831;
   RPC_X_WRONG_PIPE_VERSION : constant := 1832;
   RPC_S_COOKIE_AUTH_FAILED : constant := 1833;
   RPC_S_DO_NOT_DISTURB : constant := 1834;
   RPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED : constant := 1835;
   RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH : constant := 1836;
   RPC_S_GROUP_MEMBER_NOT_FOUND : constant := 1898;
   EPT_S_CANT_CREATE : constant := 1899;
   RPC_S_INVALID_OBJECT : constant := 1900;
   ERROR_INVALID_TIME : constant := 1901;
   ERROR_INVALID_FORM_NAME : constant := 1902;
   ERROR_INVALID_FORM_SIZE : constant := 1903;
   ERROR_ALREADY_WAITING : constant := 1904;
   ERROR_PRINTER_DELETED : constant := 1905;
   ERROR_INVALID_PRINTER_STATE : constant := 1906;
   ERROR_PASSWORD_MUST_CHANGE : constant := 1907;
   ERROR_DOMAIN_CONTROLLER_NOT_FOUND : constant := 1908;
   ERROR_ACCOUNT_LOCKED_OUT : constant := 1909;
   OR_INVALID_OXID : constant := 1910;
   OR_INVALID_OID : constant := 1911;
   OR_INVALID_SET : constant := 1912;
   RPC_S_SEND_INCOMPLETE : constant := 1913;
   RPC_S_INVALID_ASYNC_HANDLE : constant := 1914;
   RPC_S_INVALID_ASYNC_CALL : constant := 1915;
   RPC_X_PIPE_CLOSED : constant := 1916;
   RPC_X_PIPE_DISCIPLINE_ERROR : constant := 1917;
   RPC_X_PIPE_EMPTY : constant := 1918;
   ERROR_NO_SITENAME : constant := 1919;
   ERROR_CANT_ACCESS_FILE : constant := 1920;
   ERROR_CANT_RESOLVE_FILENAME : constant := 1921;
   RPC_S_ENTRY_TYPE_MISMATCH : constant := 1922;
   RPC_S_NOT_ALL_OBJS_EXPORTED : constant := 1923;
   RPC_S_INTERFACE_NOT_EXPORTED : constant := 1924;
   RPC_S_PROFILE_NOT_ADDED : constant := 1925;
   RPC_S_PRF_ELT_NOT_ADDED : constant := 1926;
   RPC_S_PRF_ELT_NOT_REMOVED : constant := 1927;
   RPC_S_GRP_ELT_NOT_ADDED : constant := 1928;
   RPC_S_GRP_ELT_NOT_REMOVED : constant := 1929;
   ERROR_KM_DRIVER_BLOCKED : constant := 1930;
   ERROR_CONTEXT_EXPIRED : constant := 1931;
   ERROR_PER_USER_TRUST_QUOTA_EXCEEDED : constant := 1932;
   ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED : constant := 1933;
   ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED : constant := 1934;
   ERROR_AUTHENTICATION_FIREWALL_FAILED : constant := 1935;
   ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED : constant := 1936;
   ERROR_NTLM_BLOCKED : constant := 1937;
   ERROR_PASSWORD_CHANGE_REQUIRED : constant := 1938;
   ERROR_LOST_MODE_LOGON_RESTRICTION : constant := 1939;
   ERROR_INVALID_PIXEL_FORMAT : constant := 2000;
   ERROR_BAD_DRIVER : constant := 2001;
   ERROR_INVALID_WINDOW_STYLE : constant := 2002;
   ERROR_METAFILE_NOT_SUPPORTED : constant := 2003;
   ERROR_TRANSFORM_NOT_SUPPORTED : constant := 2004;
   ERROR_CLIPPING_NOT_SUPPORTED : constant := 2005;
   ERROR_INVALID_CMM : constant := 2010;
   ERROR_INVALID_PROFILE : constant := 2011;
   ERROR_TAG_NOT_FOUND : constant := 2012;
   ERROR_TAG_NOT_PRESENT : constant := 2013;
   ERROR_DUPLICATE_TAG : constant := 2014;
   ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE : constant := 2015;
   ERROR_PROFILE_NOT_FOUND : constant := 2016;
   ERROR_INVALID_COLORSPACE : constant := 2017;
   ERROR_ICM_NOT_ENABLED : constant := 2018;
   ERROR_DELETING_ICM_XFORM : constant := 2019;
   ERROR_INVALID_TRANSFORM : constant := 2020;
   ERROR_COLORSPACE_MISMATCH : constant := 2021;
   ERROR_INVALID_COLORINDEX : constant := 2022;
   ERROR_PROFILE_DOES_NOT_MATCH_DEVICE : constant := 2023;
   ERROR_CONNECTED_OTHER_PASSWORD : constant := 2108;
   ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT : constant := 2109;
   ERROR_BAD_USERNAME : constant := 2202;
   ERROR_NOT_CONNECTED : constant := 2250;
   ERROR_OPEN_FILES : constant := 2401;
   ERROR_ACTIVE_CONNECTIONS : constant := 2402;
   ERROR_DEVICE_IN_USE : constant := 2404;
   ERROR_UNKNOWN_PRINT_MONITOR : constant := 3000;
   ERROR_PRINTER_DRIVER_IN_USE : constant := 3001;
   ERROR_SPOOL_FILE_NOT_FOUND : constant := 3002;
   ERROR_SPL_NO_STARTDOC : constant := 3003;
   ERROR_SPL_NO_ADDJOB : constant := 3004;
   ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED : constant := 3005;
   ERROR_PRINT_MONITOR_ALREADY_INSTALLED : constant := 3006;
   ERROR_INVALID_PRINT_MONITOR : constant := 3007;
   ERROR_PRINT_MONITOR_IN_USE : constant := 3008;
   ERROR_PRINTER_HAS_JOBS_QUEUED : constant := 3009;
   ERROR_SUCCESS_REBOOT_REQUIRED : constant := 3010;
   ERROR_SUCCESS_RESTART_REQUIRED : constant := 3011;
   ERROR_PRINTER_NOT_FOUND : constant := 3012;
   ERROR_PRINTER_DRIVER_WARNED : constant := 3013;
   ERROR_PRINTER_DRIVER_BLOCKED : constant := 3014;
   ERROR_PRINTER_DRIVER_PACKAGE_IN_USE : constant := 3015;
   ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND : constant := 3016;
   ERROR_FAIL_REBOOT_REQUIRED : constant := 3017;
   ERROR_FAIL_REBOOT_INITIATED : constant := 3018;
   ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED : constant := 3019;
   ERROR_PRINT_JOB_RESTART_REQUIRED : constant := 3020;
   ERROR_INVALID_PRINTER_DRIVER_MANIFEST : constant := 3021;
   ERROR_PRINTER_NOT_SHAREABLE : constant := 3022;
   ERROR_REQUEST_PAUSED : constant := 3050;
   ERROR_APPEXEC_CONDITION_NOT_SATISFIED : constant := 3060;
   ERROR_APPEXEC_HANDLE_INVALIDATED : constant := 3061;
   ERROR_APPEXEC_INVALID_HOST_GENERATION : constant := 3062;
   ERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION : constant := 3063;
   ERROR_APPEXEC_INVALID_HOST_STATE : constant := 3064;
   ERROR_APPEXEC_NO_DONOR : constant := 3065;
   ERROR_APPEXEC_HOST_ID_MISMATCH : constant := 3066;
   ERROR_APPEXEC_UNKNOWN_USER : constant := 3067;
   ERROR_IO_REISSUE_AS_CACHED : constant := 3950;
   ERROR_WINS_INTERNAL : constant := 4000;
   ERROR_CAN_NOT_DEL_LOCAL_WINS : constant := 4001;
   ERROR_STATIC_INIT : constant := 4002;
   ERROR_INC_BACKUP : constant := 4003;
   ERROR_FULL_BACKUP : constant := 4004;
   ERROR_REC_NON_EXISTENT : constant := 4005;
   ERROR_RPL_NOT_ALLOWED : constant := 4006;
   PEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED : constant := 4050;
   PEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO : constant := 4051;
   PEERDIST_ERROR_MISSING_DATA : constant := 4052;
   PEERDIST_ERROR_NO_MORE : constant := 4053;
   PEERDIST_ERROR_NOT_INITIALIZED : constant := 4054;
   PEERDIST_ERROR_ALREADY_INITIALIZED : constant := 4055;
   PEERDIST_ERROR_SHUTDOWN_IN_PROGRESS : constant := 4056;
   PEERDIST_ERROR_INVALIDATED : constant := 4057;
   PEERDIST_ERROR_ALREADY_EXISTS : constant := 4058;
   PEERDIST_ERROR_OPERATION_NOTFOUND : constant := 4059;
   PEERDIST_ERROR_ALREADY_COMPLETED : constant := 4060;
   PEERDIST_ERROR_OUT_OF_BOUNDS : constant := 4061;
   PEERDIST_ERROR_VERSION_UNSUPPORTED : constant := 4062;
   PEERDIST_ERROR_INVALID_CONFIGURATION : constant := 4063;
   PEERDIST_ERROR_NOT_LICENSED : constant := 4064;
   PEERDIST_ERROR_SERVICE_UNAVAILABLE : constant := 4065;
   PEERDIST_ERROR_TRUST_FAILURE : constant := 4066;
   ERROR_DHCP_ADDRESS_CONFLICT : constant := 4100;
   ERROR_WMI_GUID_NOT_FOUND : constant := 4200;
   ERROR_WMI_INSTANCE_NOT_FOUND : constant := 4201;
   ERROR_WMI_ITEMID_NOT_FOUND : constant := 4202;
   ERROR_WMI_TRY_AGAIN : constant := 4203;
   ERROR_WMI_DP_NOT_FOUND : constant := 4204;
   ERROR_WMI_UNRESOLVED_INSTANCE_REF : constant := 4205;
   ERROR_WMI_ALREADY_ENABLED : constant := 4206;
   ERROR_WMI_GUID_DISCONNECTED : constant := 4207;
   ERROR_WMI_SERVER_UNAVAILABLE : constant := 4208;
   ERROR_WMI_DP_FAILED : constant := 4209;
   ERROR_WMI_INVALID_MOF : constant := 4210;
   ERROR_WMI_INVALID_REGINFO : constant := 4211;
   ERROR_WMI_ALREADY_DISABLED : constant := 4212;
   ERROR_WMI_READ_ONLY : constant := 4213;
   ERROR_WMI_SET_FAILURE : constant := 4214;
   ERROR_NOT_APPCONTAINER : constant := 4250;
   ERROR_APPCONTAINER_REQUIRED : constant := 4251;
   ERROR_NOT_SUPPORTED_IN_APPCONTAINER : constant := 4252;
   ERROR_INVALID_PACKAGE_SID_LENGTH : constant := 4253;
   ERROR_INVALID_MEDIA : constant := 4300;
   ERROR_INVALID_LIBRARY : constant := 4301;
   ERROR_INVALID_MEDIA_POOL : constant := 4302;
   ERROR_DRIVE_MEDIA_MISMATCH : constant := 4303;
   ERROR_MEDIA_OFFLINE : constant := 4304;
   ERROR_LIBRARY_OFFLINE : constant := 4305;
   ERROR_EMPTY : constant := 4306;
   ERROR_NOT_EMPTY : constant := 4307;
   ERROR_MEDIA_UNAVAILABLE : constant := 4308;
   ERROR_RESOURCE_DISABLED : constant := 4309;
   ERROR_INVALID_CLEANER : constant := 4310;
   ERROR_UNABLE_TO_CLEAN : constant := 4311;
   ERROR_OBJECT_NOT_FOUND : constant := 4312;
   ERROR_DATABASE_FAILURE : constant := 4313;
   ERROR_DATABASE_FULL : constant := 4314;
   ERROR_MEDIA_INCOMPATIBLE : constant := 4315;
   ERROR_RESOURCE_NOT_PRESENT : constant := 4316;
   ERROR_INVALID_OPERATION : constant := 4317;
   ERROR_MEDIA_NOT_AVAILABLE : constant := 4318;
   ERROR_DEVICE_NOT_AVAILABLE : constant := 4319;
   ERROR_REQUEST_REFUSED : constant := 4320;
   ERROR_INVALID_DRIVE_OBJECT : constant := 4321;
   ERROR_LIBRARY_FULL : constant := 4322;
   ERROR_MEDIUM_NOT_ACCESSIBLE : constant := 4323;
   ERROR_UNABLE_TO_LOAD_MEDIUM : constant := 4324;
   ERROR_UNABLE_TO_INVENTORY_DRIVE : constant := 4325;
   ERROR_UNABLE_TO_INVENTORY_SLOT : constant := 4326;
   ERROR_UNABLE_TO_INVENTORY_TRANSPORT : constant := 4327;
   ERROR_TRANSPORT_FULL : constant := 4328;
   ERROR_CONTROLLING_IEPORT : constant := 4329;
   ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA : constant := 4330;
   ERROR_CLEANER_SLOT_SET : constant := 4331;
   ERROR_CLEANER_SLOT_NOT_SET : constant := 4332;
   ERROR_CLEANER_CARTRIDGE_SPENT : constant := 4333;
   ERROR_UNEXPECTED_OMID : constant := 4334;
   ERROR_CANT_DELETE_LAST_ITEM : constant := 4335;
   ERROR_MESSAGE_EXCEEDS_MAX_SIZE : constant := 4336;
   ERROR_VOLUME_CONTAINS_SYS_FILES : constant := 4337;
   ERROR_INDIGENOUS_TYPE : constant := 4338;
   ERROR_NO_SUPPORTING_DRIVES : constant := 4339;
   ERROR_CLEANER_CARTRIDGE_INSTALLED : constant := 4340;
   ERROR_IEPORT_FULL : constant := 4341;
   ERROR_FILE_OFFLINE : constant := 4350;
   ERROR_REMOTE_STORAGE_NOT_ACTIVE : constant := 4351;
   ERROR_REMOTE_STORAGE_MEDIA_ERROR : constant := 4352;
   ERROR_NOT_A_REPARSE_POINT : constant := 4390;
   ERROR_REPARSE_ATTRIBUTE_CONFLICT : constant := 4391;
   ERROR_INVALID_REPARSE_DATA : constant := 4392;
   ERROR_REPARSE_TAG_INVALID : constant := 4393;
   ERROR_REPARSE_TAG_MISMATCH : constant := 4394;
   ERROR_REPARSE_POINT_ENCOUNTERED : constant := 4395;
   ERROR_APP_DATA_NOT_FOUND : constant := 4400;
   ERROR_APP_DATA_EXPIRED : constant := 4401;
   ERROR_APP_DATA_CORRUPT : constant := 4402;
   ERROR_APP_DATA_LIMIT_EXCEEDED : constant := 4403;
   ERROR_APP_DATA_REBOOT_REQUIRED : constant := 4404;
   ERROR_SECUREBOOT_ROLLBACK_DETECTED : constant := 4420;
   ERROR_SECUREBOOT_POLICY_VIOLATION : constant := 4421;
   ERROR_SECUREBOOT_INVALID_POLICY : constant := 4422;
   ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND : constant := 4423;
   ERROR_SECUREBOOT_POLICY_NOT_SIGNED : constant := 4424;
   ERROR_SECUREBOOT_NOT_ENABLED : constant := 4425;
   ERROR_SECUREBOOT_FILE_REPLACED : constant := 4426;
   ERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED : constant := 4427;
   ERROR_SECUREBOOT_POLICY_UNKNOWN : constant := 4428;
   ERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION : constant := 4429;
   ERROR_SECUREBOOT_PLATFORM_ID_MISMATCH : constant := 4430;
   ERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED : constant := 4431;
   ERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH : constant := 4432;
   ERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING : constant := 4433;
   ERROR_SECUREBOOT_NOT_BASE_POLICY : constant := 4434;
   ERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY : constant := 4435;
   ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED : constant := 4440;
   ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED : constant := 4441;
   ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED : constant := 4442;
   ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED : constant := 4443;
   ERROR_ALREADY_HAS_STREAM_ID : constant := 4444;
   ERROR_SMR_GARBAGE_COLLECTION_REQUIRED : constant := 4445;
   ERROR_WOF_WIM_HEADER_CORRUPT : constant := 4446;
   ERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT : constant := 4447;
   ERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT : constant := 4448;
   ERROR_VOLUME_NOT_SIS_ENABLED : constant := 4500;
   ERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED : constant := 4550;
   ERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION : constant := 4551;
   ERROR_SYSTEM_INTEGRITY_INVALID_POLICY : constant := 4552;
   ERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED : constant := 4553;
   ERROR_SYSTEM_INTEGRITY_TOO_MANY_POLICIES : constant := 4554;
   ERROR_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED : constant := 4555;
   ERROR_VSM_NOT_INITIALIZED : constant := 4560;
   ERROR_VSM_DMA_PROTECTION_NOT_IN_USE : constant := 4561;
   ERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED : constant := 4570;
   ERROR_PLATFORM_MANIFEST_INVALID : constant := 4571;
   ERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED : constant := 4572;
   ERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED : constant := 4573;
   ERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND : constant := 4574;
   ERROR_PLATFORM_MANIFEST_NOT_ACTIVE : constant := 4575;
   ERROR_PLATFORM_MANIFEST_NOT_SIGNED : constant := 4576;
   ERROR_DEPENDENT_RESOURCE_EXISTS : constant := 5001;
   ERROR_DEPENDENCY_NOT_FOUND : constant := 5002;
   ERROR_DEPENDENCY_ALREADY_EXISTS : constant := 5003;
   ERROR_RESOURCE_NOT_ONLINE : constant := 5004;
   ERROR_HOST_NODE_NOT_AVAILABLE : constant := 5005;
   ERROR_RESOURCE_NOT_AVAILABLE : constant := 5006;
   ERROR_RESOURCE_NOT_FOUND : constant := 5007;
   ERROR_SHUTDOWN_CLUSTER : constant := 5008;
   ERROR_CANT_EVICT_ACTIVE_NODE : constant := 5009;
   ERROR_OBJECT_ALREADY_EXISTS : constant := 5010;
   ERROR_OBJECT_IN_LIST : constant := 5011;
   ERROR_GROUP_NOT_AVAILABLE : constant := 5012;
   ERROR_GROUP_NOT_FOUND : constant := 5013;
   ERROR_GROUP_NOT_ONLINE : constant := 5014;
   ERROR_HOST_NODE_NOT_RESOURCE_OWNER : constant := 5015;
   ERROR_HOST_NODE_NOT_GROUP_OWNER : constant := 5016;
   ERROR_RESMON_CREATE_FAILED : constant := 5017;
   ERROR_RESMON_ONLINE_FAILED : constant := 5018;
   ERROR_RESOURCE_ONLINE : constant := 5019;
   ERROR_QUORUM_RESOURCE : constant := 5020;
   ERROR_NOT_QUORUM_CAPABLE : constant := 5021;
   ERROR_CLUSTER_SHUTTING_DOWN : constant := 5022;
   ERROR_INVALID_STATE : constant := 5023;
   ERROR_RESOURCE_PROPERTIES_STORED : constant := 5024;
   ERROR_NOT_QUORUM_CLASS : constant := 5025;
   ERROR_CORE_RESOURCE : constant := 5026;
   ERROR_QUORUM_RESOURCE_ONLINE_FAILED : constant := 5027;
   ERROR_QUORUMLOG_OPEN_FAILED : constant := 5028;
   ERROR_CLUSTERLOG_CORRUPT : constant := 5029;
   ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE : constant := 5030;
   ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE : constant := 5031;
   ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND : constant := 5032;
   ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE : constant := 5033;
   ERROR_QUORUM_OWNER_ALIVE : constant := 5034;
   ERROR_NETWORK_NOT_AVAILABLE : constant := 5035;
   ERROR_NODE_NOT_AVAILABLE : constant := 5036;
   ERROR_ALL_NODES_NOT_AVAILABLE : constant := 5037;
   ERROR_RESOURCE_FAILED : constant := 5038;
   ERROR_CLUSTER_INVALID_NODE : constant := 5039;
   ERROR_CLUSTER_NODE_EXISTS : constant := 5040;
   ERROR_CLUSTER_JOIN_IN_PROGRESS : constant := 5041;
   ERROR_CLUSTER_NODE_NOT_FOUND : constant := 5042;
   ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND : constant := 5043;
   ERROR_CLUSTER_NETWORK_EXISTS : constant := 5044;
   ERROR_CLUSTER_NETWORK_NOT_FOUND : constant := 5045;
   ERROR_CLUSTER_NETINTERFACE_EXISTS : constant := 5046;
   ERROR_CLUSTER_NETINTERFACE_NOT_FOUND : constant := 5047;
   ERROR_CLUSTER_INVALID_REQUEST : constant := 5048;
   ERROR_CLUSTER_INVALID_NETWORK_PROVIDER : constant := 5049;
   ERROR_CLUSTER_NODE_DOWN : constant := 5050;
   ERROR_CLUSTER_NODE_UNREACHABLE : constant := 5051;
   ERROR_CLUSTER_NODE_NOT_MEMBER : constant := 5052;
   ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS : constant := 5053;
   ERROR_CLUSTER_INVALID_NETWORK : constant := 5054;
   ERROR_CLUSTER_NODE_UP : constant := 5056;
   ERROR_CLUSTER_IPADDR_IN_USE : constant := 5057;
   ERROR_CLUSTER_NODE_NOT_PAUSED : constant := 5058;
   ERROR_CLUSTER_NO_SECURITY_CONTEXT : constant := 5059;
   ERROR_CLUSTER_NETWORK_NOT_INTERNAL : constant := 5060;
   ERROR_CLUSTER_NODE_ALREADY_UP : constant := 5061;
   ERROR_CLUSTER_NODE_ALREADY_DOWN : constant := 5062;
   ERROR_CLUSTER_NETWORK_ALREADY_ONLINE : constant := 5063;
   ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE : constant := 5064;
   ERROR_CLUSTER_NODE_ALREADY_MEMBER : constant := 5065;
   ERROR_CLUSTER_LAST_INTERNAL_NETWORK : constant := 5066;
   ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS : constant := 5067;
   ERROR_INVALID_OPERATION_ON_QUORUM : constant := 5068;
   ERROR_DEPENDENCY_NOT_ALLOWED : constant := 5069;
   ERROR_CLUSTER_NODE_PAUSED : constant := 5070;
   ERROR_NODE_CANT_HOST_RESOURCE : constant := 5071;
   ERROR_CLUSTER_NODE_NOT_READY : constant := 5072;
   ERROR_CLUSTER_NODE_SHUTTING_DOWN : constant := 5073;
   ERROR_CLUSTER_JOIN_ABORTED : constant := 5074;
   ERROR_CLUSTER_INCOMPATIBLE_VERSIONS : constant := 5075;
   ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED : constant := 5076;
   ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED : constant := 5077;
   ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND : constant := 5078;
   ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED : constant := 5079;
   ERROR_CLUSTER_RESNAME_NOT_FOUND : constant := 5080;
   ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED : constant := 5081;
   ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST : constant := 5082;
   ERROR_CLUSTER_DATABASE_SEQMISMATCH : constant := 5083;
   ERROR_RESMON_INVALID_STATE : constant := 5084;
   ERROR_CLUSTER_GUM_NOT_LOCKER : constant := 5085;
   ERROR_QUORUM_DISK_NOT_FOUND : constant := 5086;
   ERROR_DATABASE_BACKUP_CORRUPT : constant := 5087;
   ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT : constant := 5088;
   ERROR_RESOURCE_PROPERTY_UNCHANGEABLE : constant := 5089;
   ERROR_NO_ADMIN_ACCESS_POINT : constant := 5090;
   ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE : constant := 5890;
   ERROR_CLUSTER_QUORUMLOG_NOT_FOUND : constant := 5891;
   ERROR_CLUSTER_MEMBERSHIP_HALT : constant := 5892;
   ERROR_CLUSTER_INSTANCE_ID_MISMATCH : constant := 5893;
   ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP : constant := 5894;
   ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH : constant := 5895;
   ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP : constant := 5896;
   ERROR_CLUSTER_PARAMETER_MISMATCH : constant := 5897;
   ERROR_NODE_CANNOT_BE_CLUSTERED : constant := 5898;
   ERROR_CLUSTER_WRONG_OS_VERSION : constant := 5899;
   ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME : constant := 5900;
   ERROR_CLUSCFG_ALREADY_COMMITTED : constant := 5901;
   ERROR_CLUSCFG_ROLLBACK_FAILED : constant := 5902;
   ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT : constant := 5903;
   ERROR_CLUSTER_OLD_VERSION : constant := 5904;
   ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME : constant := 5905;
   ERROR_CLUSTER_NO_NET_ADAPTERS : constant := 5906;
   ERROR_CLUSTER_POISONED : constant := 5907;
   ERROR_CLUSTER_GROUP_MOVING : constant := 5908;
   ERROR_CLUSTER_RESOURCE_TYPE_BUSY : constant := 5909;
   ERROR_RESOURCE_CALL_TIMED_OUT : constant := 5910;
   ERROR_INVALID_CLUSTER_IPV6_ADDRESS : constant := 5911;
   ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION : constant := 5912;
   ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS : constant := 5913;
   ERROR_CLUSTER_PARTIAL_SEND : constant := 5914;
   ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION : constant := 5915;
   ERROR_CLUSTER_INVALID_STRING_TERMINATION : constant := 5916;
   ERROR_CLUSTER_INVALID_STRING_FORMAT : constant := 5917;
   ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS : constant := 5918;
   ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS : constant := 5919;
   ERROR_CLUSTER_NULL_DATA : constant := 5920;
   ERROR_CLUSTER_PARTIAL_READ : constant := 5921;
   ERROR_CLUSTER_PARTIAL_WRITE : constant := 5922;
   ERROR_CLUSTER_CANT_DESERIALIZE_DATA : constant := 5923;
   ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT : constant := 5924;
   ERROR_CLUSTER_NO_QUORUM : constant := 5925;
   ERROR_CLUSTER_INVALID_IPV6_NETWORK : constant := 5926;
   ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK : constant := 5927;
   ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP : constant := 5928;
   ERROR_DEPENDENCY_TREE_TOO_COMPLEX : constant := 5929;
   ERROR_EXCEPTION_IN_RESOURCE_CALL : constant := 5930;
   ERROR_CLUSTER_RHS_FAILED_INITIALIZATION : constant := 5931;
   ERROR_CLUSTER_NOT_INSTALLED : constant := 5932;
   ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE : constant := 5933;
   ERROR_CLUSTER_MAX_NODES_IN_CLUSTER : constant := 5934;
   ERROR_CLUSTER_TOO_MANY_NODES : constant := 5935;
   ERROR_CLUSTER_OBJECT_ALREADY_USED : constant := 5936;
   ERROR_NONCORE_GROUPS_FOUND : constant := 5937;
   ERROR_FILE_SHARE_RESOURCE_CONFLICT : constant := 5938;
   ERROR_CLUSTER_EVICT_INVALID_REQUEST : constant := 5939;
   ERROR_CLUSTER_SINGLETON_RESOURCE : constant := 5940;
   ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE : constant := 5941;
   ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED : constant := 5942;
   ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR : constant := 5943;
   ERROR_CLUSTER_GROUP_BUSY : constant := 5944;
   ERROR_CLUSTER_NOT_SHARED_VOLUME : constant := 5945;
   ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR : constant := 5946;
   ERROR_CLUSTER_SHARED_VOLUMES_IN_USE : constant := 5947;
   ERROR_CLUSTER_USE_SHARED_VOLUMES_API : constant := 5948;
   ERROR_CLUSTER_BACKUP_IN_PROGRESS : constant := 5949;
   ERROR_NON_CSV_PATH : constant := 5950;
   ERROR_CSV_VOLUME_NOT_LOCAL : constant := 5951;
   ERROR_CLUSTER_WATCHDOG_TERMINATING : constant := 5952;
   ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES : constant := 5953;
   ERROR_CLUSTER_INVALID_NODE_WEIGHT : constant := 5954;
   ERROR_CLUSTER_RESOURCE_VETOED_CALL : constant := 5955;
   ERROR_RESMON_SYSTEM_RESOURCES_LACKING : constant := 5956;
   ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION : constant := 5957;
   ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE : constant := 5958;
   ERROR_CLUSTER_GROUP_QUEUED : constant := 5959;
   ERROR_CLUSTER_RESOURCE_LOCKED_STATUS : constant := 5960;
   ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED : constant := 5961;
   ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS : constant := 5962;
   ERROR_CLUSTER_DISK_NOT_CONNECTED : constant := 5963;
   ERROR_DISK_NOT_CSV_CAPABLE : constant := 5964;
   ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE : constant := 5965;
   ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED : constant := 5966;
   ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED : constant := 5967;
   ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES : constant := 5968;
   ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES : constant := 5969;
   ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE : constant := 5970;
   ERROR_CLUSTER_AFFINITY_CONFLICT : constant := 5971;
   ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE : constant := 5972;
   ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS : constant := 5973;
   ERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED : constant := 5974;
   ERROR_CLUSTER_UPGRADE_RESTART_REQUIRED : constant := 5975;
   ERROR_CLUSTER_UPGRADE_IN_PROGRESS : constant := 5976;
   ERROR_CLUSTER_UPGRADE_INCOMPLETE : constant := 5977;
   ERROR_CLUSTER_NODE_IN_GRACE_PERIOD : constant := 5978;
   ERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT : constant := 5979;
   ERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER : constant := 5980;
   ERROR_CLUSTER_RESOURCE_NOT_MONITORED : constant := 5981;
   ERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED : constant := 5982;
   ERROR_CLUSTER_RESOURCE_IS_REPLICATED : constant := 5983;
   ERROR_CLUSTER_NODE_ISOLATED : constant := 5984;
   ERROR_CLUSTER_NODE_QUARANTINED : constant := 5985;
   ERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED : constant := 5986;
   ERROR_CLUSTER_SPACE_DEGRADED : constant := 5987;
   ERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED : constant := 5988;
   ERROR_CLUSTER_CSV_INVALID_HANDLE : constant := 5989;
   ERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR : constant := 5990;
   ERROR_GROUPSET_NOT_AVAILABLE : constant := 5991;
   ERROR_GROUPSET_NOT_FOUND : constant := 5992;
   ERROR_GROUPSET_CANT_PROVIDE : constant := 5993;
   ERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND : constant := 5994;
   ERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY : constant := 5995;
   ERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION : constant := 5996;
   ERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS : constant := 5997;
   ERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME : constant := 5998;
   ERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE : constant := 5999;
   ERROR_ENCRYPTION_FAILED : constant := 6000;
   ERROR_DECRYPTION_FAILED : constant := 6001;
   ERROR_FILE_ENCRYPTED : constant := 6002;
   ERROR_NO_RECOVERY_POLICY : constant := 6003;
   ERROR_NO_EFS : constant := 6004;
   ERROR_WRONG_EFS : constant := 6005;
   ERROR_NO_USER_KEYS : constant := 6006;
   ERROR_FILE_NOT_ENCRYPTED : constant := 6007;
   ERROR_NOT_EXPORT_FORMAT : constant := 6008;
   ERROR_FILE_READ_ONLY : constant := 6009;
   ERROR_DIR_EFS_DISALLOWED : constant := 6010;
   ERROR_EFS_SERVER_NOT_TRUSTED : constant := 6011;
   ERROR_BAD_RECOVERY_POLICY : constant := 6012;
   ERROR_EFS_ALG_BLOB_TOO_BIG : constant := 6013;
   ERROR_VOLUME_NOT_SUPPORT_EFS : constant := 6014;
   ERROR_EFS_DISABLED : constant := 6015;
   ERROR_EFS_VERSION_NOT_SUPPORT : constant := 6016;
   ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE : constant := 6017;
   ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER : constant := 6018;
   ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE : constant := 6019;
   ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE : constant := 6020;
   ERROR_CS_ENCRYPTION_FILE_NOT_CSE : constant := 6021;
   ERROR_ENCRYPTION_POLICY_DENIES_OPERATION : constant := 6022;
   ERROR_WIP_ENCRYPTION_FAILED : constant := 6023;
   ERROR_NO_BROWSER_SERVERS_FOUND : constant := 6118;
   SCHED_E_SERVICE_NOT_LOCALSYSTEM : constant := 6200;
   ERROR_CLUSTER_OBJECT_IS_CLUSTER_SET_VM : constant := 6250;
   ERROR_LOG_SECTOR_INVALID : constant := 6600;
   ERROR_LOG_SECTOR_PARITY_INVALID : constant := 6601;
   ERROR_LOG_SECTOR_REMAPPED : constant := 6602;
   ERROR_LOG_BLOCK_INCOMPLETE : constant := 6603;
   ERROR_LOG_INVALID_RANGE : constant := 6604;
   ERROR_LOG_BLOCKS_EXHAUSTED : constant := 6605;
   ERROR_LOG_READ_CONTEXT_INVALID : constant := 6606;
   ERROR_LOG_RESTART_INVALID : constant := 6607;
   ERROR_LOG_BLOCK_VERSION : constant := 6608;
   ERROR_LOG_BLOCK_INVALID : constant := 6609;
   ERROR_LOG_READ_MODE_INVALID : constant := 6610;
   ERROR_LOG_NO_RESTART : constant := 6611;
   ERROR_LOG_METADATA_CORRUPT : constant := 6612;
   ERROR_LOG_METADATA_INVALID : constant := 6613;
   ERROR_LOG_METADATA_INCONSISTENT : constant := 6614;
   ERROR_LOG_RESERVATION_INVALID : constant := 6615;
   ERROR_LOG_CANT_DELETE : constant := 6616;
   ERROR_LOG_CONTAINER_LIMIT_EXCEEDED : constant := 6617;
   ERROR_LOG_START_OF_LOG : constant := 6618;
   ERROR_LOG_POLICY_ALREADY_INSTALLED : constant := 6619;
   ERROR_LOG_POLICY_NOT_INSTALLED : constant := 6620;
   ERROR_LOG_POLICY_INVALID : constant := 6621;
   ERROR_LOG_POLICY_CONFLICT : constant := 6622;
   ERROR_LOG_PINNED_ARCHIVE_TAIL : constant := 6623;
   ERROR_LOG_RECORD_NONEXISTENT : constant := 6624;
   ERROR_LOG_RECORDS_RESERVED_INVALID : constant := 6625;
   ERROR_LOG_SPACE_RESERVED_INVALID : constant := 6626;
   ERROR_LOG_TAIL_INVALID : constant := 6627;
   ERROR_LOG_FULL : constant := 6628;
   ERROR_COULD_NOT_RESIZE_LOG : constant := 6629;
   ERROR_LOG_MULTIPLEXED : constant := 6630;
   ERROR_LOG_DEDICATED : constant := 6631;
   ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS : constant := 6632;
   ERROR_LOG_ARCHIVE_IN_PROGRESS : constant := 6633;
   ERROR_LOG_EPHEMERAL : constant := 6634;
   ERROR_LOG_NOT_ENOUGH_CONTAINERS : constant := 6635;
   ERROR_LOG_CLIENT_ALREADY_REGISTERED : constant := 6636;
   ERROR_LOG_CLIENT_NOT_REGISTERED : constant := 6637;
   ERROR_LOG_FULL_HANDLER_IN_PROGRESS : constant := 6638;
   ERROR_LOG_CONTAINER_READ_FAILED : constant := 6639;
   ERROR_LOG_CONTAINER_WRITE_FAILED : constant := 6640;
   ERROR_LOG_CONTAINER_OPEN_FAILED : constant := 6641;
   ERROR_LOG_CONTAINER_STATE_INVALID : constant := 6642;
   ERROR_LOG_STATE_INVALID : constant := 6643;
   ERROR_LOG_PINNED : constant := 6644;
   ERROR_LOG_METADATA_FLUSH_FAILED : constant := 6645;
   ERROR_LOG_INCONSISTENT_SECURITY : constant := 6646;
   ERROR_LOG_APPENDED_FLUSH_FAILED : constant := 6647;
   ERROR_LOG_PINNED_RESERVATION : constant := 6648;
   ERROR_INVALID_TRANSACTION : constant := 6700;
   ERROR_TRANSACTION_NOT_ACTIVE : constant := 6701;
   ERROR_TRANSACTION_REQUEST_NOT_VALID : constant := 6702;
   ERROR_TRANSACTION_NOT_REQUESTED : constant := 6703;
   ERROR_TRANSACTION_ALREADY_ABORTED : constant := 6704;
   ERROR_TRANSACTION_ALREADY_COMMITTED : constant := 6705;
   ERROR_TM_INITIALIZATION_FAILED : constant := 6706;
   ERROR_RESOURCEMANAGER_READ_ONLY : constant := 6707;
   ERROR_TRANSACTION_NOT_JOINED : constant := 6708;
   ERROR_TRANSACTION_SUPERIOR_EXISTS : constant := 6709;
   ERROR_CRM_PROTOCOL_ALREADY_EXISTS : constant := 6710;
   ERROR_TRANSACTION_PROPAGATION_FAILED : constant := 6711;
   ERROR_CRM_PROTOCOL_NOT_FOUND : constant := 6712;
   ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER : constant := 6713;
   ERROR_CURRENT_TRANSACTION_NOT_VALID : constant := 6714;
   ERROR_TRANSACTION_NOT_FOUND : constant := 6715;
   ERROR_RESOURCEMANAGER_NOT_FOUND : constant := 6716;
   ERROR_ENLISTMENT_NOT_FOUND : constant := 6717;
   ERROR_TRANSACTIONMANAGER_NOT_FOUND : constant := 6718;
   ERROR_TRANSACTIONMANAGER_NOT_ONLINE : constant := 6719;
   ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION : constant := 6720;
   ERROR_TRANSACTION_NOT_ROOT : constant := 6721;
   ERROR_TRANSACTION_OBJECT_EXPIRED : constant := 6722;
   ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED : constant := 6723;
   ERROR_TRANSACTION_RECORD_TOO_LONG : constant := 6724;
   ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED : constant := 6725;
   ERROR_TRANSACTION_INTEGRITY_VIOLATED : constant := 6726;
   ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH : constant := 6727;
   ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT : constant := 6728;
   ERROR_TRANSACTION_MUST_WRITETHROUGH : constant := 6729;
   ERROR_TRANSACTION_NO_SUPERIOR : constant := 6730;
   ERROR_HEURISTIC_DAMAGE_POSSIBLE : constant := 6731;
   ERROR_TRANSACTIONAL_CONFLICT : constant := 6800;
   ERROR_RM_NOT_ACTIVE : constant := 6801;
   ERROR_RM_METADATA_CORRUPT : constant := 6802;
   ERROR_DIRECTORY_NOT_RM : constant := 6803;
   ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE : constant := 6805;
   ERROR_LOG_RESIZE_INVALID_SIZE : constant := 6806;
   ERROR_OBJECT_NO_LONGER_EXISTS : constant := 6807;
   ERROR_STREAM_MINIVERSION_NOT_FOUND : constant := 6808;
   ERROR_STREAM_MINIVERSION_NOT_VALID : constant := 6809;
   ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION : constant := 6810;
   ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT : constant := 6811;
   ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS : constant := 6812;
   ERROR_REMOTE_FILE_VERSION_MISMATCH : constant := 6814;
   ERROR_HANDLE_NO_LONGER_VALID : constant := 6815;
   ERROR_NO_TXF_METADATA : constant := 6816;
   ERROR_LOG_CORRUPTION_DETECTED : constant := 6817;
   ERROR_CANT_RECOVER_WITH_HANDLE_OPEN : constant := 6818;
   ERROR_RM_DISCONNECTED : constant := 6819;
   ERROR_ENLISTMENT_NOT_SUPERIOR : constant := 6820;
   ERROR_RECOVERY_NOT_NEEDED : constant := 6821;
   ERROR_RM_ALREADY_STARTED : constant := 6822;
   ERROR_FILE_IDENTITY_NOT_PERSISTENT : constant := 6823;
   ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY : constant := 6824;
   ERROR_CANT_CROSS_RM_BOUNDARY : constant := 6825;
   ERROR_TXF_DIR_NOT_EMPTY : constant := 6826;
   ERROR_INDOUBT_TRANSACTIONS_EXIST : constant := 6827;
   ERROR_TM_VOLATILE : constant := 6828;
   ERROR_ROLLBACK_TIMER_EXPIRED : constant := 6829;
   ERROR_TXF_ATTRIBUTE_CORRUPT : constant := 6830;
   ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION : constant := 6831;
   ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED : constant := 6832;
   ERROR_LOG_GROWTH_FAILED : constant := 6833;
   ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE : constant := 6834;
   ERROR_TXF_METADATA_ALREADY_PRESENT : constant := 6835;
   ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET : constant := 6836;
   ERROR_TRANSACTION_REQUIRED_PROMOTION : constant := 6837;
   ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION : constant := 6838;
   ERROR_TRANSACTIONS_NOT_FROZEN : constant := 6839;
   ERROR_TRANSACTION_FREEZE_IN_PROGRESS : constant := 6840;
   ERROR_NOT_SNAPSHOT_VOLUME : constant := 6841;
   ERROR_NO_SAVEPOINT_WITH_OPEN_FILES : constant := 6842;
   ERROR_DATA_LOST_REPAIR : constant := 6843;
   ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION : constant := 6844;
   ERROR_TM_IDENTITY_MISMATCH : constant := 6845;
   ERROR_FLOATED_SECTION : constant := 6846;
   ERROR_CANNOT_ACCEPT_TRANSACTED_WORK : constant := 6847;
   ERROR_CANNOT_ABORT_TRANSACTIONS : constant := 6848;
   ERROR_BAD_CLUSTERS : constant := 6849;
   ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION : constant := 6850;
   ERROR_VOLUME_DIRTY : constant := 6851;
   ERROR_NO_LINK_TRACKING_IN_TRANSACTION : constant := 6852;
   ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION : constant := 6853;
   ERROR_EXPIRED_HANDLE : constant := 6854;
   ERROR_TRANSACTION_NOT_ENLISTED : constant := 6855;
   ERROR_CTX_WINSTATION_NAME_INVALID : constant := 7001;
   ERROR_CTX_INVALID_PD : constant := 7002;
   ERROR_CTX_PD_NOT_FOUND : constant := 7003;
   ERROR_CTX_WD_NOT_FOUND : constant := 7004;
   ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY : constant := 7005;
   ERROR_CTX_SERVICE_NAME_COLLISION : constant := 7006;
   ERROR_CTX_CLOSE_PENDING : constant := 7007;
   ERROR_CTX_NO_OUTBUF : constant := 7008;
   ERROR_CTX_MODEM_INF_NOT_FOUND : constant := 7009;
   ERROR_CTX_INVALID_MODEMNAME : constant := 7010;
   ERROR_CTX_MODEM_RESPONSE_ERROR : constant := 7011;
   ERROR_CTX_MODEM_RESPONSE_TIMEOUT : constant := 7012;
   ERROR_CTX_MODEM_RESPONSE_NO_CARRIER : constant := 7013;
   ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE : constant := 7014;
   ERROR_CTX_MODEM_RESPONSE_BUSY : constant := 7015;
   ERROR_CTX_MODEM_RESPONSE_VOICE : constant := 7016;
   ERROR_CTX_TD_ERROR : constant := 7017;
   ERROR_CTX_WINSTATION_NOT_FOUND : constant := 7022;
   ERROR_CTX_WINSTATION_ALREADY_EXISTS : constant := 7023;
   ERROR_CTX_WINSTATION_BUSY : constant := 7024;
   ERROR_CTX_BAD_VIDEO_MODE : constant := 7025;
   ERROR_CTX_GRAPHICS_INVALID : constant := 7035;
   ERROR_CTX_LOGON_DISABLED : constant := 7037;
   ERROR_CTX_NOT_CONSOLE : constant := 7038;
   ERROR_CTX_CLIENT_QUERY_TIMEOUT : constant := 7040;
   ERROR_CTX_CONSOLE_DISCONNECT : constant := 7041;
   ERROR_CTX_CONSOLE_CONNECT : constant := 7042;
   ERROR_CTX_SHADOW_DENIED : constant := 7044;
   ERROR_CTX_WINSTATION_ACCESS_DENIED : constant := 7045;
   ERROR_CTX_INVALID_WD : constant := 7049;
   ERROR_CTX_SHADOW_INVALID : constant := 7050;
   ERROR_CTX_SHADOW_DISABLED : constant := 7051;
   ERROR_CTX_CLIENT_LICENSE_IN_USE : constant := 7052;
   ERROR_CTX_CLIENT_LICENSE_NOT_SET : constant := 7053;
   ERROR_CTX_LICENSE_NOT_AVAILABLE : constant := 7054;
   ERROR_CTX_LICENSE_CLIENT_INVALID : constant := 7055;
   ERROR_CTX_LICENSE_EXPIRED : constant := 7056;
   ERROR_CTX_SHADOW_NOT_RUNNING : constant := 7057;
   ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE : constant := 7058;
   ERROR_ACTIVATION_COUNT_EXCEEDED : constant := 7059;
   ERROR_CTX_WINSTATIONS_DISABLED : constant := 7060;
   ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED : constant := 7061;
   ERROR_CTX_SESSION_IN_USE : constant := 7062;
   ERROR_CTX_NO_FORCE_LOGOFF : constant := 7063;
   ERROR_CTX_ACCOUNT_RESTRICTION : constant := 7064;
   ERROR_RDP_PROTOCOL_ERROR : constant := 7065;
   ERROR_CTX_CDM_CONNECT : constant := 7066;
   ERROR_CTX_CDM_DISCONNECT : constant := 7067;
   ERROR_CTX_SECURITY_LAYER_ERROR : constant := 7068;
   ERROR_TS_INCOMPATIBLE_SESSIONS : constant := 7069;
   ERROR_TS_VIDEO_SUBSYSTEM_ERROR : constant := 7070;
   FRS_ERR_INVALID_API_SEQUENCE : constant := 8001;
   FRS_ERR_STARTING_SERVICE : constant := 8002;
   FRS_ERR_STOPPING_SERVICE : constant := 8003;
   FRS_ERR_INTERNAL_API : constant := 8004;
   FRS_ERR_INTERNAL : constant := 8005;
   FRS_ERR_SERVICE_COMM : constant := 8006;
   FRS_ERR_INSUFFICIENT_PRIV : constant := 8007;
   FRS_ERR_AUTHENTICATION : constant := 8008;
   FRS_ERR_PARENT_INSUFFICIENT_PRIV : constant := 8009;
   FRS_ERR_PARENT_AUTHENTICATION : constant := 8010;
   FRS_ERR_CHILD_TO_PARENT_COMM : constant := 8011;
   FRS_ERR_PARENT_TO_CHILD_COMM : constant := 8012;
   FRS_ERR_SYSVOL_POPULATE : constant := 8013;
   FRS_ERR_SYSVOL_POPULATE_TIMEOUT : constant := 8014;
   FRS_ERR_SYSVOL_IS_BUSY : constant := 8015;
   FRS_ERR_SYSVOL_DEMOTE : constant := 8016;
   FRS_ERR_INVALID_SERVICE_PARAMETER : constant := 8017;
   ERROR_DS_NOT_INSTALLED : constant := 8200;
   ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY : constant := 8201;
   ERROR_DS_NO_ATTRIBUTE_OR_VALUE : constant := 8202;
   ERROR_DS_INVALID_ATTRIBUTE_SYNTAX : constant := 8203;
   ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED : constant := 8204;
   ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS : constant := 8205;
   ERROR_DS_BUSY : constant := 8206;
   ERROR_DS_UNAVAILABLE : constant := 8207;
   ERROR_DS_NO_RIDS_ALLOCATED : constant := 8208;
   ERROR_DS_NO_MORE_RIDS : constant := 8209;
   ERROR_DS_INCORRECT_ROLE_OWNER : constant := 8210;
   ERROR_DS_RIDMGR_INIT_ERROR : constant := 8211;
   ERROR_DS_OBJ_CLASS_VIOLATION : constant := 8212;
   ERROR_DS_CANT_ON_NON_LEAF : constant := 8213;
   ERROR_DS_CANT_ON_RDN : constant := 8214;
   ERROR_DS_CANT_MOD_OBJ_CLASS : constant := 8215;
   ERROR_DS_CROSS_DOM_MOVE_ERROR : constant := 8216;
   ERROR_DS_GC_NOT_AVAILABLE : constant := 8217;
   ERROR_SHARED_POLICY : constant := 8218;
   ERROR_POLICY_OBJECT_NOT_FOUND : constant := 8219;
   ERROR_POLICY_ONLY_IN_DS : constant := 8220;
   ERROR_PROMOTION_ACTIVE : constant := 8221;
   ERROR_NO_PROMOTION_ACTIVE : constant := 8222;
   ERROR_DS_OPERATIONS_ERROR : constant := 8224;
   ERROR_DS_PROTOCOL_ERROR : constant := 8225;
   ERROR_DS_TIMELIMIT_EXCEEDED : constant := 8226;
   ERROR_DS_SIZELIMIT_EXCEEDED : constant := 8227;
   ERROR_DS_ADMIN_LIMIT_EXCEEDED : constant := 8228;
   ERROR_DS_COMPARE_FALSE : constant := 8229;
   ERROR_DS_COMPARE_TRUE : constant := 8230;
   ERROR_DS_AUTH_METHOD_NOT_SUPPORTED : constant := 8231;
   ERROR_DS_STRONG_AUTH_REQUIRED : constant := 8232;
   ERROR_DS_INAPPROPRIATE_AUTH : constant := 8233;
   ERROR_DS_AUTH_UNKNOWN : constant := 8234;
   ERROR_DS_REFERRAL : constant := 8235;
   ERROR_DS_UNAVAILABLE_CRIT_EXTENSION : constant := 8236;
   ERROR_DS_CONFIDENTIALITY_REQUIRED : constant := 8237;
   ERROR_DS_INAPPROPRIATE_MATCHING : constant := 8238;
   ERROR_DS_CONSTRAINT_VIOLATION : constant := 8239;
   ERROR_DS_NO_SUCH_OBJECT : constant := 8240;
   ERROR_DS_ALIAS_PROBLEM : constant := 8241;
   ERROR_DS_INVALID_DN_SYNTAX : constant := 8242;
   ERROR_DS_IS_LEAF : constant := 8243;
   ERROR_DS_ALIAS_DEREF_PROBLEM : constant := 8244;
   ERROR_DS_UNWILLING_TO_PERFORM : constant := 8245;
   ERROR_DS_LOOP_DETECT : constant := 8246;
   ERROR_DS_NAMING_VIOLATION : constant := 8247;
   ERROR_DS_OBJECT_RESULTS_TOO_LARGE : constant := 8248;
   ERROR_DS_AFFECTS_MULTIPLE_DSAS : constant := 8249;
   ERROR_DS_SERVER_DOWN : constant := 8250;
   ERROR_DS_LOCAL_ERROR : constant := 8251;
   ERROR_DS_ENCODING_ERROR : constant := 8252;
   ERROR_DS_DECODING_ERROR : constant := 8253;
   ERROR_DS_FILTER_UNKNOWN : constant := 8254;
   ERROR_DS_PARAM_ERROR : constant := 8255;
   ERROR_DS_NOT_SUPPORTED : constant := 8256;
   ERROR_DS_NO_RESULTS_RETURNED : constant := 8257;
   ERROR_DS_CONTROL_NOT_FOUND : constant := 8258;
   ERROR_DS_CLIENT_LOOP : constant := 8259;
   ERROR_DS_REFERRAL_LIMIT_EXCEEDED : constant := 8260;
   ERROR_DS_SORT_CONTROL_MISSING : constant := 8261;
   ERROR_DS_OFFSET_RANGE_ERROR : constant := 8262;
   ERROR_DS_RIDMGR_DISABLED : constant := 8263;
   ERROR_DS_ROOT_MUST_BE_NC : constant := 8301;
   ERROR_DS_ADD_REPLICA_INHIBITED : constant := 8302;
   ERROR_DS_ATT_NOT_DEF_IN_SCHEMA : constant := 8303;
   ERROR_DS_MAX_OBJ_SIZE_EXCEEDED : constant := 8304;
   ERROR_DS_OBJ_STRING_NAME_EXISTS : constant := 8305;
   ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA : constant := 8306;
   ERROR_DS_RDN_DOESNT_MATCH_SCHEMA : constant := 8307;
   ERROR_DS_NO_REQUESTED_ATTS_FOUND : constant := 8308;
   ERROR_DS_USER_BUFFER_TO_SMALL : constant := 8309;
   ERROR_DS_ATT_IS_NOT_ON_OBJ : constant := 8310;
   ERROR_DS_ILLEGAL_MOD_OPERATION : constant := 8311;
   ERROR_DS_OBJ_TOO_LARGE : constant := 8312;
   ERROR_DS_BAD_INSTANCE_TYPE : constant := 8313;
   ERROR_DS_MASTERDSA_REQUIRED : constant := 8314;
   ERROR_DS_OBJECT_CLASS_REQUIRED : constant := 8315;
   ERROR_DS_MISSING_REQUIRED_ATT : constant := 8316;
   ERROR_DS_ATT_NOT_DEF_FOR_CLASS : constant := 8317;
   ERROR_DS_ATT_ALREADY_EXISTS : constant := 8318;
   ERROR_DS_CANT_ADD_ATT_VALUES : constant := 8320;
   ERROR_DS_SINGLE_VALUE_CONSTRAINT : constant := 8321;
   ERROR_DS_RANGE_CONSTRAINT : constant := 8322;
   ERROR_DS_ATT_VAL_ALREADY_EXISTS : constant := 8323;
   ERROR_DS_CANT_REM_MISSING_ATT : constant := 8324;
   ERROR_DS_CANT_REM_MISSING_ATT_VAL : constant := 8325;
   ERROR_DS_ROOT_CANT_BE_SUBREF : constant := 8326;
   ERROR_DS_NO_CHAINING : constant := 8327;
   ERROR_DS_NO_CHAINED_EVAL : constant := 8328;
   ERROR_DS_NO_PARENT_OBJECT : constant := 8329;
   ERROR_DS_PARENT_IS_AN_ALIAS : constant := 8330;
   ERROR_DS_CANT_MIX_MASTER_AND_REPS : constant := 8331;
   ERROR_DS_CHILDREN_EXIST : constant := 8332;
   ERROR_DS_OBJ_NOT_FOUND : constant := 8333;
   ERROR_DS_ALIASED_OBJ_MISSING : constant := 8334;
   ERROR_DS_BAD_NAME_SYNTAX : constant := 8335;
   ERROR_DS_ALIAS_POINTS_TO_ALIAS : constant := 8336;
   ERROR_DS_CANT_DEREF_ALIAS : constant := 8337;
   ERROR_DS_OUT_OF_SCOPE : constant := 8338;
   ERROR_DS_OBJECT_BEING_REMOVED : constant := 8339;
   ERROR_DS_CANT_DELETE_DSA_OBJ : constant := 8340;
   ERROR_DS_GENERIC_ERROR : constant := 8341;
   ERROR_DS_DSA_MUST_BE_INT_MASTER : constant := 8342;
   ERROR_DS_CLASS_NOT_DSA : constant := 8343;
   ERROR_DS_INSUFF_ACCESS_RIGHTS : constant := 8344;
   ERROR_DS_ILLEGAL_SUPERIOR : constant := 8345;
   ERROR_DS_ATTRIBUTE_OWNED_BY_SAM : constant := 8346;
   ERROR_DS_NAME_TOO_MANY_PARTS : constant := 8347;
   ERROR_DS_NAME_TOO_LONG : constant := 8348;
   ERROR_DS_NAME_VALUE_TOO_LONG : constant := 8349;
   ERROR_DS_NAME_UNPARSEABLE : constant := 8350;
   ERROR_DS_NAME_TYPE_UNKNOWN : constant := 8351;
   ERROR_DS_NOT_AN_OBJECT : constant := 8352;
   ERROR_DS_SEC_DESC_TOO_SHORT : constant := 8353;
   ERROR_DS_SEC_DESC_INVALID : constant := 8354;
   ERROR_DS_NO_DELETED_NAME : constant := 8355;
   ERROR_DS_SUBREF_MUST_HAVE_PARENT : constant := 8356;
   ERROR_DS_NCNAME_MUST_BE_NC : constant := 8357;
   ERROR_DS_CANT_ADD_SYSTEM_ONLY : constant := 8358;
   ERROR_DS_CLASS_MUST_BE_CONCRETE : constant := 8359;
   ERROR_DS_INVALID_DMD : constant := 8360;
   ERROR_DS_OBJ_GUID_EXISTS : constant := 8361;
   ERROR_DS_NOT_ON_BACKLINK : constant := 8362;
   ERROR_DS_NO_CROSSREF_FOR_NC : constant := 8363;
   ERROR_DS_SHUTTING_DOWN : constant := 8364;
   ERROR_DS_UNKNOWN_OPERATION : constant := 8365;
   ERROR_DS_INVALID_ROLE_OWNER : constant := 8366;
   ERROR_DS_COULDNT_CONTACT_FSMO : constant := 8367;
   ERROR_DS_CROSS_NC_DN_RENAME : constant := 8368;
   ERROR_DS_CANT_MOD_SYSTEM_ONLY : constant := 8369;
   ERROR_DS_REPLICATOR_ONLY : constant := 8370;
   ERROR_DS_OBJ_CLASS_NOT_DEFINED : constant := 8371;
   ERROR_DS_OBJ_CLASS_NOT_SUBCLASS : constant := 8372;
   ERROR_DS_NAME_REFERENCE_INVALID : constant := 8373;
   ERROR_DS_CROSS_REF_EXISTS : constant := 8374;
   ERROR_DS_CANT_DEL_MASTER_CROSSREF : constant := 8375;
   ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD : constant := 8376;
   ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX : constant := 8377;
   ERROR_DS_DUP_RDN : constant := 8378;
   ERROR_DS_DUP_OID : constant := 8379;
   ERROR_DS_DUP_MAPI_ID : constant := 8380;
   ERROR_DS_DUP_SCHEMA_ID_GUID : constant := 8381;
   ERROR_DS_DUP_LDAP_DISPLAY_NAME : constant := 8382;
   ERROR_DS_SEMANTIC_ATT_TEST : constant := 8383;
   ERROR_DS_SYNTAX_MISMATCH : constant := 8384;
   ERROR_DS_EXISTS_IN_MUST_HAVE : constant := 8385;
   ERROR_DS_EXISTS_IN_MAY_HAVE : constant := 8386;
   ERROR_DS_NONEXISTENT_MAY_HAVE : constant := 8387;
   ERROR_DS_NONEXISTENT_MUST_HAVE : constant := 8388;
   ERROR_DS_AUX_CLS_TEST_FAIL : constant := 8389;
   ERROR_DS_NONEXISTENT_POSS_SUP : constant := 8390;
   ERROR_DS_SUB_CLS_TEST_FAIL : constant := 8391;
   ERROR_DS_BAD_RDN_ATT_ID_SYNTAX : constant := 8392;
   ERROR_DS_EXISTS_IN_AUX_CLS : constant := 8393;
   ERROR_DS_EXISTS_IN_SUB_CLS : constant := 8394;
   ERROR_DS_EXISTS_IN_POSS_SUP : constant := 8395;
   ERROR_DS_RECALCSCHEMA_FAILED : constant := 8396;
   ERROR_DS_TREE_DELETE_NOT_FINISHED : constant := 8397;
   ERROR_DS_CANT_DELETE : constant := 8398;
   ERROR_DS_ATT_SCHEMA_REQ_ID : constant := 8399;
   ERROR_DS_BAD_ATT_SCHEMA_SYNTAX : constant := 8400;
   ERROR_DS_CANT_CACHE_ATT : constant := 8401;
   ERROR_DS_CANT_CACHE_CLASS : constant := 8402;
   ERROR_DS_CANT_REMOVE_ATT_CACHE : constant := 8403;
   ERROR_DS_CANT_REMOVE_CLASS_CACHE : constant := 8404;
   ERROR_DS_CANT_RETRIEVE_DN : constant := 8405;
   ERROR_DS_MISSING_SUPREF : constant := 8406;
   ERROR_DS_CANT_RETRIEVE_INSTANCE : constant := 8407;
   ERROR_DS_CODE_INCONSISTENCY : constant := 8408;
   ERROR_DS_DATABASE_ERROR : constant := 8409;
   ERROR_DS_GOVERNSID_MISSING : constant := 8410;
   ERROR_DS_MISSING_EXPECTED_ATT : constant := 8411;
   ERROR_DS_NCNAME_MISSING_CR_REF : constant := 8412;
   ERROR_DS_SECURITY_CHECKING_ERROR : constant := 8413;
   ERROR_DS_SCHEMA_NOT_LOADED : constant := 8414;
   ERROR_DS_SCHEMA_ALLOC_FAILED : constant := 8415;
   ERROR_DS_ATT_SCHEMA_REQ_SYNTAX : constant := 8416;
   ERROR_DS_GCVERIFY_ERROR : constant := 8417;
   ERROR_DS_DRA_SCHEMA_MISMATCH : constant := 8418;
   ERROR_DS_CANT_FIND_DSA_OBJ : constant := 8419;
   ERROR_DS_CANT_FIND_EXPECTED_NC : constant := 8420;
   ERROR_DS_CANT_FIND_NC_IN_CACHE : constant := 8421;
   ERROR_DS_CANT_RETRIEVE_CHILD : constant := 8422;
   ERROR_DS_SECURITY_ILLEGAL_MODIFY : constant := 8423;
   ERROR_DS_CANT_REPLACE_HIDDEN_REC : constant := 8424;
   ERROR_DS_BAD_HIERARCHY_FILE : constant := 8425;
   ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED : constant := 8426;
   ERROR_DS_CONFIG_PARAM_MISSING : constant := 8427;
   ERROR_DS_COUNTING_AB_INDICES_FAILED : constant := 8428;
   ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED : constant := 8429;
   ERROR_DS_INTERNAL_FAILURE : constant := 8430;
   ERROR_DS_UNKNOWN_ERROR : constant := 8431;
   ERROR_DS_ROOT_REQUIRES_CLASS_TOP : constant := 8432;
   ERROR_DS_REFUSING_FSMO_ROLES : constant := 8433;
   ERROR_DS_MISSING_FSMO_SETTINGS : constant := 8434;
   ERROR_DS_UNABLE_TO_SURRENDER_ROLES : constant := 8435;
   ERROR_DS_DRA_GENERIC : constant := 8436;
   ERROR_DS_DRA_INVALID_PARAMETER : constant := 8437;
   ERROR_DS_DRA_BUSY : constant := 8438;
   ERROR_DS_DRA_BAD_DN : constant := 8439;
   ERROR_DS_DRA_BAD_NC : constant := 8440;
   ERROR_DS_DRA_DN_EXISTS : constant := 8441;
   ERROR_DS_DRA_INTERNAL_ERROR : constant := 8442;
   ERROR_DS_DRA_INCONSISTENT_DIT : constant := 8443;
   ERROR_DS_DRA_CONNECTION_FAILED : constant := 8444;
   ERROR_DS_DRA_BAD_INSTANCE_TYPE : constant := 8445;
   ERROR_DS_DRA_OUT_OF_MEM : constant := 8446;
   ERROR_DS_DRA_MAIL_PROBLEM : constant := 8447;
   ERROR_DS_DRA_REF_ALREADY_EXISTS : constant := 8448;
   ERROR_DS_DRA_REF_NOT_FOUND : constant := 8449;
   ERROR_DS_DRA_OBJ_IS_REP_SOURCE : constant := 8450;
   ERROR_DS_DRA_DB_ERROR : constant := 8451;
   ERROR_DS_DRA_NO_REPLICA : constant := 8452;
   ERROR_DS_DRA_ACCESS_DENIED : constant := 8453;
   ERROR_DS_DRA_NOT_SUPPORTED : constant := 8454;
   ERROR_DS_DRA_RPC_CANCELLED : constant := 8455;
   ERROR_DS_DRA_SOURCE_DISABLED : constant := 8456;
   ERROR_DS_DRA_SINK_DISABLED : constant := 8457;
   ERROR_DS_DRA_NAME_COLLISION : constant := 8458;
   ERROR_DS_DRA_SOURCE_REINSTALLED : constant := 8459;
   ERROR_DS_DRA_MISSING_PARENT : constant := 8460;
   ERROR_DS_DRA_PREEMPTED : constant := 8461;
   ERROR_DS_DRA_ABANDON_SYNC : constant := 8462;
   ERROR_DS_DRA_SHUTDOWN : constant := 8463;
   ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET : constant := 8464;
   ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA : constant := 8465;
   ERROR_DS_DRA_EXTN_CONNECTION_FAILED : constant := 8466;
   ERROR_DS_INSTALL_SCHEMA_MISMATCH : constant := 8467;
   ERROR_DS_DUP_LINK_ID : constant := 8468;
   ERROR_DS_NAME_ERROR_RESOLVING : constant := 8469;
   ERROR_DS_NAME_ERROR_NOT_FOUND : constant := 8470;
   ERROR_DS_NAME_ERROR_NOT_UNIQUE : constant := 8471;
   ERROR_DS_NAME_ERROR_NO_MAPPING : constant := 8472;
   ERROR_DS_NAME_ERROR_DOMAIN_ONLY : constant := 8473;
   ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING : constant := 8474;
   ERROR_DS_CONSTRUCTED_ATT_MOD : constant := 8475;
   ERROR_DS_WRONG_OM_OBJ_CLASS : constant := 8476;
   ERROR_DS_DRA_REPL_PENDING : constant := 8477;
   ERROR_DS_DS_REQUIRED : constant := 8478;
   ERROR_DS_INVALID_LDAP_DISPLAY_NAME : constant := 8479;
   ERROR_DS_NON_BASE_SEARCH : constant := 8480;
   ERROR_DS_CANT_RETRIEVE_ATTS : constant := 8481;
   ERROR_DS_BACKLINK_WITHOUT_LINK : constant := 8482;
   ERROR_DS_EPOCH_MISMATCH : constant := 8483;
   ERROR_DS_SRC_NAME_MISMATCH : constant := 8484;
   ERROR_DS_SRC_AND_DST_NC_IDENTICAL : constant := 8485;
   ERROR_DS_DST_NC_MISMATCH : constant := 8486;
   ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC : constant := 8487;
   ERROR_DS_SRC_GUID_MISMATCH : constant := 8488;
   ERROR_DS_CANT_MOVE_DELETED_OBJECT : constant := 8489;
   ERROR_DS_PDC_OPERATION_IN_PROGRESS : constant := 8490;
   ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD : constant := 8491;
   ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION : constant := 8492;
   ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS : constant := 8493;
   ERROR_DS_NC_MUST_HAVE_NC_PARENT : constant := 8494;
   ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE : constant := 8495;
   ERROR_DS_DST_DOMAIN_NOT_NATIVE : constant := 8496;
   ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER : constant := 8497;
   ERROR_DS_CANT_MOVE_ACCOUNT_GROUP : constant := 8498;
   ERROR_DS_CANT_MOVE_RESOURCE_GROUP : constant := 8499;
   ERROR_DS_INVALID_SEARCH_FLAG : constant := 8500;
   ERROR_DS_NO_TREE_DELETE_ABOVE_NC : constant := 8501;
   ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE : constant := 8502;
   ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE : constant := 8503;
   ERROR_DS_SAM_INIT_FAILURE : constant := 8504;
   ERROR_DS_SENSITIVE_GROUP_VIOLATION : constant := 8505;
   ERROR_DS_CANT_MOD_PRIMARYGROUPID : constant := 8506;
   ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD : constant := 8507;
   ERROR_DS_NONSAFE_SCHEMA_CHANGE : constant := 8508;
   ERROR_DS_SCHEMA_UPDATE_DISALLOWED : constant := 8509;
   ERROR_DS_CANT_CREATE_UNDER_SCHEMA : constant := 8510;
   ERROR_DS_INSTALL_NO_SRC_SCH_VERSION : constant := 8511;
   ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE : constant := 8512;
   ERROR_DS_INVALID_GROUP_TYPE : constant := 8513;
   ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN : constant := 8514;
   ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN : constant := 8515;
   ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER : constant := 8516;
   ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER : constant := 8517;
   ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER : constant := 8518;
   ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER : constant := 8519;
   ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER : constant := 8520;
   ERROR_DS_HAVE_PRIMARY_MEMBERS : constant := 8521;
   ERROR_DS_STRING_SD_CONVERSION_FAILED : constant := 8522;
   ERROR_DS_NAMING_MASTER_GC : constant := 8523;
   ERROR_DS_DNS_LOOKUP_FAILURE : constant := 8524;
   ERROR_DS_COULDNT_UPDATE_SPNS : constant := 8525;
   ERROR_DS_CANT_RETRIEVE_SD : constant := 8526;
   ERROR_DS_KEY_NOT_UNIQUE : constant := 8527;
   ERROR_DS_WRONG_LINKED_ATT_SYNTAX : constant := 8528;
   ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD : constant := 8529;
   ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY : constant := 8530;
   ERROR_DS_CANT_START : constant := 8531;
   ERROR_DS_INIT_FAILURE : constant := 8532;
   ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION : constant := 8533;
   ERROR_DS_SOURCE_DOMAIN_IN_FOREST : constant := 8534;
   ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST : constant := 8535;
   ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED : constant := 8536;
   ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN : constant := 8537;
   ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER : constant := 8538;
   ERROR_DS_SRC_SID_EXISTS_IN_FOREST : constant := 8539;
   ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH : constant := 8540;
   ERROR_SAM_INIT_FAILURE : constant := 8541;
   ERROR_DS_DRA_SCHEMA_INFO_SHIP : constant := 8542;
   ERROR_DS_DRA_SCHEMA_CONFLICT : constant := 8543;
   ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT : constant := 8544;
   ERROR_DS_DRA_OBJ_NC_MISMATCH : constant := 8545;
   ERROR_DS_NC_STILL_HAS_DSAS : constant := 8546;
   ERROR_DS_GC_REQUIRED : constant := 8547;
   ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY : constant := 8548;
   ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS : constant := 8549;
   ERROR_DS_CANT_ADD_TO_GC : constant := 8550;
   ERROR_DS_NO_CHECKPOINT_WITH_PDC : constant := 8551;
   ERROR_DS_SOURCE_AUDITING_NOT_ENABLED : constant := 8552;
   ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC : constant := 8553;
   ERROR_DS_INVALID_NAME_FOR_SPN : constant := 8554;
   ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS : constant := 8555;
   ERROR_DS_UNICODEPWD_NOT_IN_QUOTES : constant := 8556;
   ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED : constant := 8557;
   ERROR_DS_MUST_BE_RUN_ON_DST_DC : constant := 8558;
   ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER : constant := 8559;
   ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ : constant := 8560;
   ERROR_DS_INIT_FAILURE_CONSOLE : constant := 8561;
   ERROR_DS_SAM_INIT_FAILURE_CONSOLE : constant := 8562;
   ERROR_DS_FOREST_VERSION_TOO_HIGH : constant := 8563;
   ERROR_DS_DOMAIN_VERSION_TOO_HIGH : constant := 8564;
   ERROR_DS_FOREST_VERSION_TOO_LOW : constant := 8565;
   ERROR_DS_DOMAIN_VERSION_TOO_LOW : constant := 8566;
   ERROR_DS_INCOMPATIBLE_VERSION : constant := 8567;
   ERROR_DS_LOW_DSA_VERSION : constant := 8568;
   ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN : constant := 8569;
   ERROR_DS_NOT_SUPPORTED_SORT_ORDER : constant := 8570;
   ERROR_DS_NAME_NOT_UNIQUE : constant := 8571;
   ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 : constant := 8572;
   ERROR_DS_OUT_OF_VERSION_STORE : constant := 8573;
   ERROR_DS_INCOMPATIBLE_CONTROLS_USED : constant := 8574;
   ERROR_DS_NO_REF_DOMAIN : constant := 8575;
   ERROR_DS_RESERVED_LINK_ID : constant := 8576;
   ERROR_DS_LINK_ID_NOT_AVAILABLE : constant := 8577;
   ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER : constant := 8578;
   ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE : constant := 8579;
   ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC : constant := 8580;
   ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG : constant := 8581;
   ERROR_DS_MODIFYDN_WRONG_GRANDPARENT : constant := 8582;
   ERROR_DS_NAME_ERROR_TRUST_REFERRAL : constant := 8583;
   ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER : constant := 8584;
   ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD : constant := 8585;
   ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 : constant := 8586;
   ERROR_DS_THREAD_LIMIT_EXCEEDED : constant := 8587;
   ERROR_DS_NOT_CLOSEST : constant := 8588;
   ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF : constant := 8589;
   ERROR_DS_SINGLE_USER_MODE_FAILED : constant := 8590;
   ERROR_DS_NTDSCRIPT_SYNTAX_ERROR : constant := 8591;
   ERROR_DS_NTDSCRIPT_PROCESS_ERROR : constant := 8592;
   ERROR_DS_DIFFERENT_REPL_EPOCHS : constant := 8593;
   ERROR_DS_DRS_EXTENSIONS_CHANGED : constant := 8594;
   ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR : constant := 8595;
   ERROR_DS_NO_MSDS_INTID : constant := 8596;
   ERROR_DS_DUP_MSDS_INTID : constant := 8597;
   ERROR_DS_EXISTS_IN_RDNATTID : constant := 8598;
   ERROR_DS_AUTHORIZATION_FAILED : constant := 8599;
   ERROR_DS_INVALID_SCRIPT : constant := 8600;
   ERROR_DS_REMOTE_CROSSREF_OP_FAILED : constant := 8601;
   ERROR_DS_CROSS_REF_BUSY : constant := 8602;
   ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN : constant := 8603;
   ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC : constant := 8604;
   ERROR_DS_DUPLICATE_ID_FOUND : constant := 8605;
   ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT : constant := 8606;
   ERROR_DS_GROUP_CONVERSION_ERROR : constant := 8607;
   ERROR_DS_CANT_MOVE_APP_BASIC_GROUP : constant := 8608;
   ERROR_DS_CANT_MOVE_APP_QUERY_GROUP : constant := 8609;
   ERROR_DS_ROLE_NOT_VERIFIED : constant := 8610;
   ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL : constant := 8611;
   ERROR_DS_DOMAIN_RENAME_IN_PROGRESS : constant := 8612;
   ERROR_DS_EXISTING_AD_CHILD_NC : constant := 8613;
   ERROR_DS_REPL_LIFETIME_EXCEEDED : constant := 8614;
   ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER : constant := 8615;
   ERROR_DS_LDAP_SEND_QUEUE_FULL : constant := 8616;
   ERROR_DS_DRA_OUT_SCHEDULE_WINDOW : constant := 8617;
   ERROR_DS_POLICY_NOT_KNOWN : constant := 8618;
   ERROR_NO_SITE_SETTINGS_OBJECT : constant := 8619;
   ERROR_NO_SECRETS : constant := 8620;
   ERROR_NO_WRITABLE_DC_FOUND : constant := 8621;
   ERROR_DS_NO_SERVER_OBJECT : constant := 8622;
   ERROR_DS_NO_NTDSA_OBJECT : constant := 8623;
   ERROR_DS_NON_ASQ_SEARCH : constant := 8624;
   ERROR_DS_AUDIT_FAILURE : constant := 8625;
   ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE : constant := 8626;
   ERROR_DS_INVALID_SEARCH_FLAG_TUPLE : constant := 8627;
   ERROR_DS_HIERARCHY_TABLE_TOO_DEEP : constant := 8628;
   ERROR_DS_DRA_CORRUPT_UTD_VECTOR : constant := 8629;
   ERROR_DS_DRA_SECRETS_DENIED : constant := 8630;
   ERROR_DS_RESERVED_MAPI_ID : constant := 8631;
   ERROR_DS_MAPI_ID_NOT_AVAILABLE : constant := 8632;
   ERROR_DS_DRA_MISSING_KRBTGT_SECRET : constant := 8633;
   ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST : constant := 8634;
   ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST : constant := 8635;
   ERROR_INVALID_USER_PRINCIPAL_NAME : constant := 8636;
   ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS : constant := 8637;
   ERROR_DS_OID_NOT_FOUND : constant := 8638;
   ERROR_DS_DRA_RECYCLED_TARGET : constant := 8639;
   ERROR_DS_DISALLOWED_NC_REDIRECT : constant := 8640;
   ERROR_DS_HIGH_ADLDS_FFL : constant := 8641;
   ERROR_DS_HIGH_DSA_VERSION : constant := 8642;
   ERROR_DS_LOW_ADLDS_FFL : constant := 8643;
   ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION : constant := 8644;
   ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED : constant := 8645;
   ERROR_INCORRECT_ACCOUNT_TYPE : constant := 8646;
   ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST : constant := 8647;
   ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST : constant := 8648;
   ERROR_DS_MISSING_FOREST_TRUST : constant := 8649;
   ERROR_DS_VALUE_KEY_NOT_UNIQUE : constant := 8650;
   DNS_ERROR_RESPONSE_CODES_BASE : constant := 9000;
   DNS_ERROR_MASK : constant := 16#00002328#;
   DNS_ERROR_RCODE_FORMAT_ERROR : constant := 9001;
   DNS_ERROR_RCODE_SERVER_FAILURE : constant := 9002;
   DNS_ERROR_RCODE_NAME_ERROR : constant := 9003;
   DNS_ERROR_RCODE_NOT_IMPLEMENTED : constant := 9004;
   DNS_ERROR_RCODE_REFUSED : constant := 9005;
   DNS_ERROR_RCODE_YXDOMAIN : constant := 9006;
   DNS_ERROR_RCODE_YXRRSET : constant := 9007;
   DNS_ERROR_RCODE_NXRRSET : constant := 9008;
   DNS_ERROR_RCODE_NOTAUTH : constant := 9009;
   DNS_ERROR_RCODE_NOTZONE : constant := 9010;
   DNS_ERROR_RCODE_BADSIG : constant := 9016;
   DNS_ERROR_RCODE_BADKEY : constant := 9017;
   DNS_ERROR_RCODE_BADTIME : constant := 9018;
   DNS_ERROR_DNSSEC_BASE : constant := 9100;
   DNS_ERROR_KEYMASTER_REQUIRED : constant := 9101;
   DNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE : constant := 9102;
   DNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1 : constant := 9103;
   DNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS : constant := 9104;
   DNS_ERROR_UNSUPPORTED_ALGORITHM : constant := 9105;
   DNS_ERROR_INVALID_KEY_SIZE : constant := 9106;
   DNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE : constant := 9107;
   DNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION : constant := 9108;
   DNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR : constant := 9109;
   DNS_ERROR_UNEXPECTED_CNG_ERROR : constant := 9110;
   DNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION : constant := 9111;
   DNS_ERROR_KSP_NOT_ACCESSIBLE : constant := 9112;
   DNS_ERROR_TOO_MANY_SKDS : constant := 9113;
   DNS_ERROR_INVALID_ROLLOVER_PERIOD : constant := 9114;
   DNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET : constant := 9115;
   DNS_ERROR_ROLLOVER_IN_PROGRESS : constant := 9116;
   DNS_ERROR_STANDBY_KEY_NOT_PRESENT : constant := 9117;
   DNS_ERROR_NOT_ALLOWED_ON_ZSK : constant := 9118;
   DNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD : constant := 9119;
   DNS_ERROR_ROLLOVER_ALREADY_QUEUED : constant := 9120;
   DNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE : constant := 9121;
   DNS_ERROR_BAD_KEYMASTER : constant := 9122;
   DNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD : constant := 9123;
   DNS_ERROR_INVALID_NSEC3_ITERATION_COUNT : constant := 9124;
   DNS_ERROR_DNSSEC_IS_DISABLED : constant := 9125;
   DNS_ERROR_INVALID_XML : constant := 9126;
   DNS_ERROR_NO_VALID_TRUST_ANCHORS : constant := 9127;
   DNS_ERROR_ROLLOVER_NOT_POKEABLE : constant := 9128;
   DNS_ERROR_NSEC3_NAME_COLLISION : constant := 9129;
   DNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1 : constant := 9130;
   DNS_ERROR_PACKET_FMT_BASE : constant := 9500;
   DNS_INFO_NO_RECORDS : constant := 9501;
   DNS_ERROR_BAD_PACKET : constant := 9502;
   DNS_ERROR_NO_PACKET : constant := 9503;
   DNS_ERROR_RCODE : constant := 9504;
   DNS_ERROR_UNSECURE_PACKET : constant := 9505;
   DNS_REQUEST_PENDING : constant := 9506;
   DNS_ERROR_GENERAL_API_BASE : constant := 9550;
   DNS_ERROR_INVALID_TYPE : constant := 9551;
   DNS_ERROR_INVALID_IP_ADDRESS : constant := 9552;
   DNS_ERROR_INVALID_PROPERTY : constant := 9553;
   DNS_ERROR_TRY_AGAIN_LATER : constant := 9554;
   DNS_ERROR_NOT_UNIQUE : constant := 9555;
   DNS_ERROR_NON_RFC_NAME : constant := 9556;
   DNS_STATUS_FQDN : constant := 9557;
   DNS_STATUS_DOTTED_NAME : constant := 9558;
   DNS_STATUS_SINGLE_PART_NAME : constant := 9559;
   DNS_ERROR_INVALID_NAME_CHAR : constant := 9560;
   DNS_ERROR_NUMERIC_NAME : constant := 9561;
   DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER : constant := 9562;
   DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION : constant := 9563;
   DNS_ERROR_CANNOT_FIND_ROOT_HINTS : constant := 9564;
   DNS_ERROR_INCONSISTENT_ROOT_HINTS : constant := 9565;
   DNS_ERROR_DWORD_VALUE_TOO_SMALL : constant := 9566;
   DNS_ERROR_DWORD_VALUE_TOO_LARGE : constant := 9567;
   DNS_ERROR_BACKGROUND_LOADING : constant := 9568;
   DNS_ERROR_NOT_ALLOWED_ON_RODC : constant := 9569;
   DNS_ERROR_NOT_ALLOWED_UNDER_DNAME : constant := 9570;
   DNS_ERROR_DELEGATION_REQUIRED : constant := 9571;
   DNS_ERROR_INVALID_POLICY_TABLE : constant := 9572;
   DNS_ERROR_ADDRESS_REQUIRED : constant := 9573;
   DNS_ERROR_ZONE_BASE : constant := 9600;
   DNS_ERROR_ZONE_DOES_NOT_EXIST : constant := 9601;
   DNS_ERROR_NO_ZONE_INFO : constant := 9602;
   DNS_ERROR_INVALID_ZONE_OPERATION : constant := 9603;
   DNS_ERROR_ZONE_CONFIGURATION_ERROR : constant := 9604;
   DNS_ERROR_ZONE_HAS_NO_SOA_RECORD : constant := 9605;
   DNS_ERROR_ZONE_HAS_NO_NS_RECORDS : constant := 9606;
   DNS_ERROR_ZONE_LOCKED : constant := 9607;
   DNS_ERROR_ZONE_CREATION_FAILED : constant := 9608;
   DNS_ERROR_ZONE_ALREADY_EXISTS : constant := 9609;
   DNS_ERROR_AUTOZONE_ALREADY_EXISTS : constant := 9610;
   DNS_ERROR_INVALID_ZONE_TYPE : constant := 9611;
   DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP : constant := 9612;
   DNS_ERROR_ZONE_NOT_SECONDARY : constant := 9613;
   DNS_ERROR_NEED_SECONDARY_ADDRESSES : constant := 9614;
   DNS_ERROR_WINS_INIT_FAILED : constant := 9615;
   DNS_ERROR_NEED_WINS_SERVERS : constant := 9616;
   DNS_ERROR_NBSTAT_INIT_FAILED : constant := 9617;
   DNS_ERROR_SOA_DELETE_INVALID : constant := 9618;
   DNS_ERROR_FORWARDER_ALREADY_EXISTS : constant := 9619;
   DNS_ERROR_ZONE_REQUIRES_MASTER_IP : constant := 9620;
   DNS_ERROR_ZONE_IS_SHUTDOWN : constant := 9621;
   DNS_ERROR_ZONE_LOCKED_FOR_SIGNING : constant := 9622;
   DNS_ERROR_DATAFILE_BASE : constant := 9650;
   DNS_ERROR_PRIMARY_REQUIRES_DATAFILE : constant := 9651;
   DNS_ERROR_INVALID_DATAFILE_NAME : constant := 9652;
   DNS_ERROR_DATAFILE_OPEN_FAILURE : constant := 9653;
   DNS_ERROR_FILE_WRITEBACK_FAILED : constant := 9654;
   DNS_ERROR_DATAFILE_PARSING : constant := 9655;
   DNS_ERROR_DATABASE_BASE : constant := 9700;
   DNS_ERROR_RECORD_DOES_NOT_EXIST : constant := 9701;
   DNS_ERROR_RECORD_FORMAT : constant := 9702;
   DNS_ERROR_NODE_CREATION_FAILED : constant := 9703;
   DNS_ERROR_UNKNOWN_RECORD_TYPE : constant := 9704;
   DNS_ERROR_RECORD_TIMED_OUT : constant := 9705;
   DNS_ERROR_NAME_NOT_IN_ZONE : constant := 9706;
   DNS_ERROR_CNAME_LOOP : constant := 9707;
   DNS_ERROR_NODE_IS_CNAME : constant := 9708;
   DNS_ERROR_CNAME_COLLISION : constant := 9709;
   DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT : constant := 9710;
   DNS_ERROR_RECORD_ALREADY_EXISTS : constant := 9711;
   DNS_ERROR_SECONDARY_DATA : constant := 9712;
   DNS_ERROR_NO_CREATE_CACHE_DATA : constant := 9713;
   DNS_ERROR_NAME_DOES_NOT_EXIST : constant := 9714;
   DNS_WARNING_PTR_CREATE_FAILED : constant := 9715;
   DNS_WARNING_DOMAIN_UNDELETED : constant := 9716;
   DNS_ERROR_DS_UNAVAILABLE : constant := 9717;
   DNS_ERROR_DS_ZONE_ALREADY_EXISTS : constant := 9718;
   DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE : constant := 9719;
   DNS_ERROR_NODE_IS_DNAME : constant := 9720;
   DNS_ERROR_DNAME_COLLISION : constant := 9721;
   DNS_ERROR_ALIAS_LOOP : constant := 9722;
   DNS_ERROR_OPERATION_BASE : constant := 9750;
   DNS_INFO_AXFR_COMPLETE : constant := 9751;
   DNS_ERROR_AXFR : constant := 9752;
   DNS_INFO_ADDED_LOCAL_WINS : constant := 9753;
   DNS_ERROR_SECURE_BASE : constant := 9800;
   DNS_STATUS_CONTINUE_NEEDED : constant := 9801;
   DNS_ERROR_SETUP_BASE : constant := 9850;
   DNS_ERROR_NO_TCPIP : constant := 9851;
   DNS_ERROR_NO_DNS_SERVERS : constant := 9852;
   DNS_ERROR_DP_BASE : constant := 9900;
   DNS_ERROR_DP_DOES_NOT_EXIST : constant := 9901;
   DNS_ERROR_DP_ALREADY_EXISTS : constant := 9902;
   DNS_ERROR_DP_NOT_ENLISTED : constant := 9903;
   DNS_ERROR_DP_ALREADY_ENLISTED : constant := 9904;
   DNS_ERROR_DP_NOT_AVAILABLE : constant := 9905;
   DNS_ERROR_DP_FSMO_ERROR : constant := 9906;
   DNS_ERROR_RRL_NOT_ENABLED : constant := 9911;
   DNS_ERROR_RRL_INVALID_WINDOW_SIZE : constant := 9912;
   DNS_ERROR_RRL_INVALID_IPV4_PREFIX : constant := 9913;
   DNS_ERROR_RRL_INVALID_IPV6_PREFIX : constant := 9914;
   DNS_ERROR_RRL_INVALID_TC_RATE : constant := 9915;
   DNS_ERROR_RRL_INVALID_LEAK_RATE : constant := 9916;
   DNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE : constant := 9917;
   DNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS : constant := 9921;
   DNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST : constant := 9922;
   DNS_ERROR_VIRTUALIZATION_TREE_LOCKED : constant := 9923;
   DNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME : constant := 9924;
   DNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE : constant := 9925;
   DNS_ERROR_ZONESCOPE_ALREADY_EXISTS : constant := 9951;
   DNS_ERROR_ZONESCOPE_DOES_NOT_EXIST : constant := 9952;
   DNS_ERROR_DEFAULT_ZONESCOPE : constant := 9953;
   DNS_ERROR_INVALID_ZONESCOPE_NAME : constant := 9954;
   DNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES : constant := 9955;
   DNS_ERROR_LOAD_ZONESCOPE_FAILED : constant := 9956;
   DNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED : constant := 9957;
   DNS_ERROR_INVALID_SCOPE_NAME : constant := 9958;
   DNS_ERROR_SCOPE_DOES_NOT_EXIST : constant := 9959;
   DNS_ERROR_DEFAULT_SCOPE : constant := 9960;
   DNS_ERROR_INVALID_SCOPE_OPERATION : constant := 9961;
   DNS_ERROR_SCOPE_LOCKED : constant := 9962;
   DNS_ERROR_SCOPE_ALREADY_EXISTS : constant := 9963;
   DNS_ERROR_POLICY_ALREADY_EXISTS : constant := 9971;
   DNS_ERROR_POLICY_DOES_NOT_EXIST : constant := 9972;
   DNS_ERROR_POLICY_INVALID_CRITERIA : constant := 9973;
   DNS_ERROR_POLICY_INVALID_SETTINGS : constant := 9974;
   DNS_ERROR_CLIENT_SUBNET_IS_ACCESSED : constant := 9975;
   DNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST : constant := 9976;
   DNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS : constant := 9977;
   DNS_ERROR_SUBNET_DOES_NOT_EXIST : constant := 9978;
   DNS_ERROR_SUBNET_ALREADY_EXISTS : constant := 9979;
   DNS_ERROR_POLICY_LOCKED : constant := 9980;
   DNS_ERROR_POLICY_INVALID_WEIGHT : constant := 9981;
   DNS_ERROR_POLICY_INVALID_NAME : constant := 9982;
   DNS_ERROR_POLICY_MISSING_CRITERIA : constant := 9983;
   DNS_ERROR_INVALID_CLIENT_SUBNET_NAME : constant := 9984;
   DNS_ERROR_POLICY_PROCESSING_ORDER_INVALID : constant := 9985;
   DNS_ERROR_POLICY_SCOPE_MISSING : constant := 9986;
   DNS_ERROR_POLICY_SCOPE_NOT_ALLOWED : constant := 9987;
   DNS_ERROR_SERVERSCOPE_IS_REFERENCED : constant := 9988;
   DNS_ERROR_ZONESCOPE_IS_REFERENCED : constant := 9989;
   DNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET : constant := 9990;
   DNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL : constant := 9991;
   DNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL : constant := 9992;
   DNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE : constant := 9993;
   DNS_ERROR_POLICY_INVALID_CRITERIA_FQDN : constant := 9994;
   DNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE : constant := 9995;
   DNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY : constant := 9996;
   WSABASEERR : constant := 10000;
   WSAEINTR : constant := 10004;
   WSAEBADF : constant := 10009;
   WSAEACCES : constant := 10013;
   WSAEFAULT : constant := 10014;
   WSAEINVAL : constant := 10022;
   WSAEMFILE : constant := 10024;
   WSAEWOULDBLOCK : constant := 10035;
   WSAEINPROGRESS : constant := 10036;
   WSAEALREADY : constant := 10037;
   WSAENOTSOCK : constant := 10038;
   WSAEDESTADDRREQ : constant := 10039;
   WSAEMSGSIZE : constant := 10040;
   WSAEPROTOTYPE : constant := 10041;
   WSAENOPROTOOPT : constant := 10042;
   WSAEPROTONOSUPPORT : constant := 10043;
   WSAESOCKTNOSUPPORT : constant := 10044;
   WSAEOPNOTSUPP : constant := 10045;
   WSAEPFNOSUPPORT : constant := 10046;
   WSAEAFNOSUPPORT : constant := 10047;
   WSAEADDRINUSE : constant := 10048;
   WSAEADDRNOTAVAIL : constant := 10049;
   WSAENETDOWN : constant := 10050;
   WSAENETUNREACH : constant := 10051;
   WSAENETRESET : constant := 10052;
   WSAECONNABORTED : constant := 10053;
   WSAECONNRESET : constant := 10054;
   WSAENOBUFS : constant := 10055;
   WSAEISCONN : constant := 10056;
   WSAENOTCONN : constant := 10057;
   WSAESHUTDOWN : constant := 10058;
   WSAETOOMANYREFS : constant := 10059;
   WSAETIMEDOUT : constant := 10060;
   WSAECONNREFUSED : constant := 10061;
   WSAELOOP : constant := 10062;
   WSAENAMETOOLONG : constant := 10063;
   WSAEHOSTDOWN : constant := 10064;
   WSAEHOSTUNREACH : constant := 10065;
   WSAENOTEMPTY : constant := 10066;
   WSAEPROCLIM : constant := 10067;
   WSAEUSERS : constant := 10068;
   WSAEDQUOT : constant := 10069;
   WSAESTALE : constant := 10070;
   WSAEREMOTE : constant := 10071;
   WSASYSNOTREADY : constant := 10091;
   WSAVERNOTSUPPORTED : constant := 10092;
   WSANOTINITIALISED : constant := 10093;
   WSAEDISCON : constant := 10101;
   WSAENOMORE : constant := 10102;
   WSAECANCELLED : constant := 10103;
   WSAEINVALIDPROCTABLE : constant := 10104;
   WSAEINVALIDPROVIDER : constant := 10105;
   WSAEPROVIDERFAILEDINIT : constant := 10106;
   WSASYSCALLFAILURE : constant := 10107;
   WSASERVICE_NOT_FOUND : constant := 10108;
   WSATYPE_NOT_FOUND : constant := 10109;
   WSA_E_NO_MORE : constant := 10110;
   WSA_E_CANCELLED : constant := 10111;
   WSAEREFUSED : constant := 10112;
   WSAHOST_NOT_FOUND : constant := 11001;
   WSATRY_AGAIN : constant := 11002;
   WSANO_RECOVERY : constant := 11003;
   WSANO_DATA : constant := 11004;
   WSA_QOS_RECEIVERS : constant := 11005;
   WSA_QOS_SENDERS : constant := 11006;
   WSA_QOS_NO_SENDERS : constant := 11007;
   WSA_QOS_NO_RECEIVERS : constant := 11008;
   WSA_QOS_REQUEST_CONFIRMED : constant := 11009;
   WSA_QOS_ADMISSION_FAILURE : constant := 11010;
   WSA_QOS_POLICY_FAILURE : constant := 11011;
   WSA_QOS_BAD_STYLE : constant := 11012;
   WSA_QOS_BAD_OBJECT : constant := 11013;
   WSA_QOS_TRAFFIC_CTRL_ERROR : constant := 11014;
   WSA_QOS_GENERIC_ERROR : constant := 11015;
   WSA_QOS_ESERVICETYPE : constant := 11016;
   WSA_QOS_EFLOWSPEC : constant := 11017;
   WSA_QOS_EPROVSPECBUF : constant := 11018;
   WSA_QOS_EFILTERSTYLE : constant := 11019;
   WSA_QOS_EFILTERTYPE : constant := 11020;
   WSA_QOS_EFILTERCOUNT : constant := 11021;
   WSA_QOS_EOBJLENGTH : constant := 11022;
   WSA_QOS_EFLOWCOUNT : constant := 11023;
   WSA_QOS_EUNKOWNPSOBJ : constant := 11024;
   WSA_QOS_EPOLICYOBJ : constant := 11025;
   WSA_QOS_EFLOWDESC : constant := 11026;
   WSA_QOS_EPSFLOWSPEC : constant := 11027;
   WSA_QOS_EPSFILTERSPEC : constant := 11028;
   WSA_QOS_ESDMODEOBJ : constant := 11029;
   WSA_QOS_ESHAPERATEOBJ : constant := 11030;
   WSA_QOS_RESERVED_PETYPE : constant := 11031;
   WSA_SECURE_HOST_NOT_FOUND : constant := 11032;
   WSA_IPSEC_NAME_POLICY_ERROR : constant := 11033;
   ERROR_IPSEC_QM_POLICY_EXISTS : constant := 13000;
   ERROR_IPSEC_QM_POLICY_NOT_FOUND : constant := 13001;
   ERROR_IPSEC_QM_POLICY_IN_USE : constant := 13002;
   ERROR_IPSEC_MM_POLICY_EXISTS : constant := 13003;
   ERROR_IPSEC_MM_POLICY_NOT_FOUND : constant := 13004;
   ERROR_IPSEC_MM_POLICY_IN_USE : constant := 13005;
   ERROR_IPSEC_MM_FILTER_EXISTS : constant := 13006;
   ERROR_IPSEC_MM_FILTER_NOT_FOUND : constant := 13007;
   ERROR_IPSEC_TRANSPORT_FILTER_EXISTS : constant := 13008;
   ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND : constant := 13009;
   ERROR_IPSEC_MM_AUTH_EXISTS : constant := 13010;
   ERROR_IPSEC_MM_AUTH_NOT_FOUND : constant := 13011;
   ERROR_IPSEC_MM_AUTH_IN_USE : constant := 13012;
   ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND : constant := 13013;
   ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND : constant := 13014;
   ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND : constant := 13015;
   ERROR_IPSEC_TUNNEL_FILTER_EXISTS : constant := 13016;
   ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND : constant := 13017;
   ERROR_IPSEC_MM_FILTER_PENDING_DELETION : constant := 13018;
   ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION : constant := 13019;
   ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION : constant := 13020;
   ERROR_IPSEC_MM_POLICY_PENDING_DELETION : constant := 13021;
   ERROR_IPSEC_MM_AUTH_PENDING_DELETION : constant := 13022;
   ERROR_IPSEC_QM_POLICY_PENDING_DELETION : constant := 13023;
   WARNING_IPSEC_MM_POLICY_PRUNED : constant := 13024;
   WARNING_IPSEC_QM_POLICY_PRUNED : constant := 13025;
   ERROR_IPSEC_IKE_NEG_STATUS_BEGIN : constant := 13800;
   ERROR_IPSEC_IKE_AUTH_FAIL : constant := 13801;
   ERROR_IPSEC_IKE_ATTRIB_FAIL : constant := 13802;
   ERROR_IPSEC_IKE_NEGOTIATION_PENDING : constant := 13803;
   ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR : constant := 13804;
   ERROR_IPSEC_IKE_TIMED_OUT : constant := 13805;
   ERROR_IPSEC_IKE_NO_CERT : constant := 13806;
   ERROR_IPSEC_IKE_SA_DELETED : constant := 13807;
   ERROR_IPSEC_IKE_SA_REAPED : constant := 13808;
   ERROR_IPSEC_IKE_MM_ACQUIRE_DROP : constant := 13809;
   ERROR_IPSEC_IKE_QM_ACQUIRE_DROP : constant := 13810;
   ERROR_IPSEC_IKE_QUEUE_DROP_MM : constant := 13811;
   ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM : constant := 13812;
   ERROR_IPSEC_IKE_DROP_NO_RESPONSE : constant := 13813;
   ERROR_IPSEC_IKE_MM_DELAY_DROP : constant := 13814;
   ERROR_IPSEC_IKE_QM_DELAY_DROP : constant := 13815;
   ERROR_IPSEC_IKE_ERROR : constant := 13816;
   ERROR_IPSEC_IKE_CRL_FAILED : constant := 13817;
   ERROR_IPSEC_IKE_INVALID_KEY_USAGE : constant := 13818;
   ERROR_IPSEC_IKE_INVALID_CERT_TYPE : constant := 13819;
   ERROR_IPSEC_IKE_NO_PRIVATE_KEY : constant := 13820;
   ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY : constant := 13821;
   ERROR_IPSEC_IKE_DH_FAIL : constant := 13822;
   ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED : constant := 13823;
   ERROR_IPSEC_IKE_INVALID_HEADER : constant := 13824;
   ERROR_IPSEC_IKE_NO_POLICY : constant := 13825;
   ERROR_IPSEC_IKE_INVALID_SIGNATURE : constant := 13826;
   ERROR_IPSEC_IKE_KERBEROS_ERROR : constant := 13827;
   ERROR_IPSEC_IKE_NO_PUBLIC_KEY : constant := 13828;
   ERROR_IPSEC_IKE_PROCESS_ERR : constant := 13829;
   ERROR_IPSEC_IKE_PROCESS_ERR_SA : constant := 13830;
   ERROR_IPSEC_IKE_PROCESS_ERR_PROP : constant := 13831;
   ERROR_IPSEC_IKE_PROCESS_ERR_TRANS : constant := 13832;
   ERROR_IPSEC_IKE_PROCESS_ERR_KE : constant := 13833;
   ERROR_IPSEC_IKE_PROCESS_ERR_ID : constant := 13834;
   ERROR_IPSEC_IKE_PROCESS_ERR_CERT : constant := 13835;
   ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ : constant := 13836;
   ERROR_IPSEC_IKE_PROCESS_ERR_HASH : constant := 13837;
   ERROR_IPSEC_IKE_PROCESS_ERR_SIG : constant := 13838;
   ERROR_IPSEC_IKE_PROCESS_ERR_NONCE : constant := 13839;
   ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY : constant := 13840;
   ERROR_IPSEC_IKE_PROCESS_ERR_DELETE : constant := 13841;
   ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR : constant := 13842;
   ERROR_IPSEC_IKE_INVALID_PAYLOAD : constant := 13843;
   ERROR_IPSEC_IKE_LOAD_SOFT_SA : constant := 13844;
   ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN : constant := 13845;
   ERROR_IPSEC_IKE_INVALID_COOKIE : constant := 13846;
   ERROR_IPSEC_IKE_NO_PEER_CERT : constant := 13847;
   ERROR_IPSEC_IKE_PEER_CRL_FAILED : constant := 13848;
   ERROR_IPSEC_IKE_POLICY_CHANGE : constant := 13849;
   ERROR_IPSEC_IKE_NO_MM_POLICY : constant := 13850;
   ERROR_IPSEC_IKE_NOTCBPRIV : constant := 13851;
   ERROR_IPSEC_IKE_SECLOADFAIL : constant := 13852;
   ERROR_IPSEC_IKE_FAILSSPINIT : constant := 13853;
   ERROR_IPSEC_IKE_FAILQUERYSSP : constant := 13854;
   ERROR_IPSEC_IKE_SRVACQFAIL : constant := 13855;
   ERROR_IPSEC_IKE_SRVQUERYCRED : constant := 13856;
   ERROR_IPSEC_IKE_GETSPIFAIL : constant := 13857;
   ERROR_IPSEC_IKE_INVALID_FILTER : constant := 13858;
   ERROR_IPSEC_IKE_OUT_OF_MEMORY : constant := 13859;
   ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED : constant := 13860;
   ERROR_IPSEC_IKE_INVALID_POLICY : constant := 13861;
   ERROR_IPSEC_IKE_UNKNOWN_DOI : constant := 13862;
   ERROR_IPSEC_IKE_INVALID_SITUATION : constant := 13863;
   ERROR_IPSEC_IKE_DH_FAILURE : constant := 13864;
   ERROR_IPSEC_IKE_INVALID_GROUP : constant := 13865;
   ERROR_IPSEC_IKE_ENCRYPT : constant := 13866;
   ERROR_IPSEC_IKE_DECRYPT : constant := 13867;
   ERROR_IPSEC_IKE_POLICY_MATCH : constant := 13868;
   ERROR_IPSEC_IKE_UNSUPPORTED_ID : constant := 13869;
   ERROR_IPSEC_IKE_INVALID_HASH : constant := 13870;
   ERROR_IPSEC_IKE_INVALID_HASH_ALG : constant := 13871;
   ERROR_IPSEC_IKE_INVALID_HASH_SIZE : constant := 13872;
   ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG : constant := 13873;
   ERROR_IPSEC_IKE_INVALID_AUTH_ALG : constant := 13874;
   ERROR_IPSEC_IKE_INVALID_SIG : constant := 13875;
   ERROR_IPSEC_IKE_LOAD_FAILED : constant := 13876;
   ERROR_IPSEC_IKE_RPC_DELETE : constant := 13877;
   ERROR_IPSEC_IKE_BENIGN_REINIT : constant := 13878;
   ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY : constant := 13879;
   ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION : constant := 13880;
   ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN : constant := 13881;
   ERROR_IPSEC_IKE_MM_LIMIT : constant := 13882;
   ERROR_IPSEC_IKE_NEGOTIATION_DISABLED : constant := 13883;
   ERROR_IPSEC_IKE_QM_LIMIT : constant := 13884;
   ERROR_IPSEC_IKE_MM_EXPIRED : constant := 13885;
   ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID : constant := 13886;
   ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH : constant := 13887;
   ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID : constant := 13888;
   ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD : constant := 13889;
   ERROR_IPSEC_IKE_DOS_COOKIE_SENT : constant := 13890;
   ERROR_IPSEC_IKE_SHUTTING_DOWN : constant := 13891;
   ERROR_IPSEC_IKE_CGA_AUTH_FAILED : constant := 13892;
   ERROR_IPSEC_IKE_PROCESS_ERR_NATOA : constant := 13893;
   ERROR_IPSEC_IKE_INVALID_MM_FOR_QM : constant := 13894;
   ERROR_IPSEC_IKE_QM_EXPIRED : constant := 13895;
   ERROR_IPSEC_IKE_TOO_MANY_FILTERS : constant := 13896;
   ERROR_IPSEC_IKE_NEG_STATUS_END : constant := 13897;
   ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL : constant := 13898;
   ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE : constant := 13899;
   ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING : constant := 13900;
   ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING : constant := 13901;
   ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS : constant := 13902;
   ERROR_IPSEC_IKE_RATELIMIT_DROP : constant := 13903;
   ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE : constant := 13904;
   ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE : constant := 13905;
   ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE : constant := 13906;
   ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY : constant := 13907;
   ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE : constant := 13908;
   ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END : constant := 13909;
   ERROR_IPSEC_BAD_SPI : constant := 13910;
   ERROR_IPSEC_SA_LIFETIME_EXPIRED : constant := 13911;
   ERROR_IPSEC_WRONG_SA : constant := 13912;
   ERROR_IPSEC_REPLAY_CHECK_FAILED : constant := 13913;
   ERROR_IPSEC_INVALID_PACKET : constant := 13914;
   ERROR_IPSEC_INTEGRITY_CHECK_FAILED : constant := 13915;
   ERROR_IPSEC_CLEAR_TEXT_DROP : constant := 13916;
   ERROR_IPSEC_AUTH_FIREWALL_DROP : constant := 13917;
   ERROR_IPSEC_THROTTLE_DROP : constant := 13918;
   ERROR_IPSEC_DOSP_BLOCK : constant := 13925;
   ERROR_IPSEC_DOSP_RECEIVED_MULTICAST : constant := 13926;
   ERROR_IPSEC_DOSP_INVALID_PACKET : constant := 13927;
   ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED : constant := 13928;
   ERROR_IPSEC_DOSP_MAX_ENTRIES : constant := 13929;
   ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED : constant := 13930;
   ERROR_IPSEC_DOSP_NOT_INSTALLED : constant := 13931;
   ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES : constant := 13932;
   ERROR_SXS_SECTION_NOT_FOUND : constant := 14000;
   ERROR_SXS_CANT_GEN_ACTCTX : constant := 14001;
   ERROR_SXS_INVALID_ACTCTXDATA_FORMAT : constant := 14002;
   ERROR_SXS_ASSEMBLY_NOT_FOUND : constant := 14003;
   ERROR_SXS_MANIFEST_FORMAT_ERROR : constant := 14004;
   ERROR_SXS_MANIFEST_PARSE_ERROR : constant := 14005;
   ERROR_SXS_ACTIVATION_CONTEXT_DISABLED : constant := 14006;
   ERROR_SXS_KEY_NOT_FOUND : constant := 14007;
   ERROR_SXS_VERSION_CONFLICT : constant := 14008;
   ERROR_SXS_WRONG_SECTION_TYPE : constant := 14009;
   ERROR_SXS_THREAD_QUERIES_DISABLED : constant := 14010;
   ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET : constant := 14011;
   ERROR_SXS_UNKNOWN_ENCODING_GROUP : constant := 14012;
   ERROR_SXS_UNKNOWN_ENCODING : constant := 14013;
   ERROR_SXS_INVALID_XML_NAMESPACE_URI : constant := 14014;
   ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED : constant := 14015;
   ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED : constant := 14016;
   ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE : constant := 14017;
   ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE : constant := 14018;
   ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE : constant := 14019;
   ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT : constant := 14020;
   ERROR_SXS_DUPLICATE_DLL_NAME : constant := 14021;
   ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME : constant := 14022;
   ERROR_SXS_DUPLICATE_CLSID : constant := 14023;
   ERROR_SXS_DUPLICATE_IID : constant := 14024;
   ERROR_SXS_DUPLICATE_TLBID : constant := 14025;
   ERROR_SXS_DUPLICATE_PROGID : constant := 14026;
   ERROR_SXS_DUPLICATE_ASSEMBLY_NAME : constant := 14027;
   ERROR_SXS_FILE_HASH_MISMATCH : constant := 14028;
   ERROR_SXS_POLICY_PARSE_ERROR : constant := 14029;
   ERROR_SXS_XML_E_MISSINGQUOTE : constant := 14030;
   ERROR_SXS_XML_E_COMMENTSYNTAX : constant := 14031;
   ERROR_SXS_XML_E_BADSTARTNAMECHAR : constant := 14032;
   ERROR_SXS_XML_E_BADNAMECHAR : constant := 14033;
   ERROR_SXS_XML_E_BADCHARINSTRING : constant := 14034;
   ERROR_SXS_XML_E_XMLDECLSYNTAX : constant := 14035;
   ERROR_SXS_XML_E_BADCHARDATA : constant := 14036;
   ERROR_SXS_XML_E_MISSINGWHITESPACE : constant := 14037;
   ERROR_SXS_XML_E_EXPECTINGTAGEND : constant := 14038;
   ERROR_SXS_XML_E_MISSINGSEMICOLON : constant := 14039;
   ERROR_SXS_XML_E_UNBALANCEDPAREN : constant := 14040;
   ERROR_SXS_XML_E_INTERNALERROR : constant := 14041;
   ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE : constant := 14042;
   ERROR_SXS_XML_E_INCOMPLETE_ENCODING : constant := 14043;
   ERROR_SXS_XML_E_MISSING_PAREN : constant := 14044;
   ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE : constant := 14045;
   ERROR_SXS_XML_E_MULTIPLE_COLONS : constant := 14046;
   ERROR_SXS_XML_E_INVALID_DECIMAL : constant := 14047;
   ERROR_SXS_XML_E_INVALID_HEXIDECIMAL : constant := 14048;
   ERROR_SXS_XML_E_INVALID_UNICODE : constant := 14049;
   ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK : constant := 14050;
   ERROR_SXS_XML_E_UNEXPECTEDENDTAG : constant := 14051;
   ERROR_SXS_XML_E_UNCLOSEDTAG : constant := 14052;
   ERROR_SXS_XML_E_DUPLICATEATTRIBUTE : constant := 14053;
   ERROR_SXS_XML_E_MULTIPLEROOTS : constant := 14054;
   ERROR_SXS_XML_E_INVALIDATROOTLEVEL : constant := 14055;
   ERROR_SXS_XML_E_BADXMLDECL : constant := 14056;
   ERROR_SXS_XML_E_MISSINGROOT : constant := 14057;
   ERROR_SXS_XML_E_UNEXPECTEDEOF : constant := 14058;
   ERROR_SXS_XML_E_BADPEREFINSUBSET : constant := 14059;
   ERROR_SXS_XML_E_UNCLOSEDSTARTTAG : constant := 14060;
   ERROR_SXS_XML_E_UNCLOSEDENDTAG : constant := 14061;
   ERROR_SXS_XML_E_UNCLOSEDSTRING : constant := 14062;
   ERROR_SXS_XML_E_UNCLOSEDCOMMENT : constant := 14063;
   ERROR_SXS_XML_E_UNCLOSEDDECL : constant := 14064;
   ERROR_SXS_XML_E_UNCLOSEDCDATA : constant := 14065;
   ERROR_SXS_XML_E_RESERVEDNAMESPACE : constant := 14066;
   ERROR_SXS_XML_E_INVALIDENCODING : constant := 14067;
   ERROR_SXS_XML_E_INVALIDSWITCH : constant := 14068;
   ERROR_SXS_XML_E_BADXMLCASE : constant := 14069;
   ERROR_SXS_XML_E_INVALID_STANDALONE : constant := 14070;
   ERROR_SXS_XML_E_UNEXPECTED_STANDALONE : constant := 14071;
   ERROR_SXS_XML_E_INVALID_VERSION : constant := 14072;
   ERROR_SXS_XML_E_MISSINGEQUALS : constant := 14073;
   ERROR_SXS_PROTECTION_RECOVERY_FAILED : constant := 14074;
   ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT : constant := 14075;
   ERROR_SXS_PROTECTION_CATALOG_NOT_VALID : constant := 14076;
   ERROR_SXS_UNTRANSLATABLE_HRESULT : constant := 14077;
   ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING : constant := 14078;
   ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE : constant := 14079;
   ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME : constant := 14080;
   ERROR_SXS_ASSEMBLY_MISSING : constant := 14081;
   ERROR_SXS_CORRUPT_ACTIVATION_STACK : constant := 14082;
   ERROR_SXS_CORRUPTION : constant := 14083;
   ERROR_SXS_EARLY_DEACTIVATION : constant := 14084;
   ERROR_SXS_INVALID_DEACTIVATION : constant := 14085;
   ERROR_SXS_MULTIPLE_DEACTIVATION : constant := 14086;
   ERROR_SXS_PROCESS_TERMINATION_REQUESTED : constant := 14087;
   ERROR_SXS_RELEASE_ACTIVATION_CONTEXT : constant := 14088;
   ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY : constant := 14089;
   ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE : constant := 14090;
   ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME : constant := 14091;
   ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE : constant := 14092;
   ERROR_SXS_IDENTITY_PARSE_ERROR : constant := 14093;
   ERROR_MALFORMED_SUBSTITUTION_STRING : constant := 14094;
   ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN : constant := 14095;
   ERROR_UNMAPPED_SUBSTITUTION_STRING : constant := 14096;
   ERROR_SXS_ASSEMBLY_NOT_LOCKED : constant := 14097;
   ERROR_SXS_COMPONENT_STORE_CORRUPT : constant := 14098;
   ERROR_ADVANCED_INSTALLER_FAILED : constant := 14099;
   ERROR_XML_ENCODING_MISMATCH : constant := 14100;
   ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT : constant := 14101;
   ERROR_SXS_IDENTITIES_DIFFERENT : constant := 14102;
   ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT : constant := 14103;
   ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY : constant := 14104;
   ERROR_SXS_MANIFEST_TOO_BIG : constant := 14105;
   ERROR_SXS_SETTING_NOT_REGISTERED : constant := 14106;
   ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE : constant := 14107;
   ERROR_SMI_PRIMITIVE_INSTALLER_FAILED : constant := 14108;
   ERROR_GENERIC_COMMAND_FAILED : constant := 14109;
   ERROR_SXS_FILE_HASH_MISSING : constant := 14110;
   ERROR_SXS_DUPLICATE_ACTIVATABLE_CLASS : constant := 14111;
   ERROR_EVT_INVALID_CHANNEL_PATH : constant := 15000;
   ERROR_EVT_INVALID_QUERY : constant := 15001;
   ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND : constant := 15002;
   ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND : constant := 15003;
   ERROR_EVT_INVALID_PUBLISHER_NAME : constant := 15004;
   ERROR_EVT_INVALID_EVENT_DATA : constant := 15005;
   ERROR_EVT_CHANNEL_NOT_FOUND : constant := 15007;
   ERROR_EVT_MALFORMED_XML_TEXT : constant := 15008;
   ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL : constant := 15009;
   ERROR_EVT_CONFIGURATION_ERROR : constant := 15010;
   ERROR_EVT_QUERY_RESULT_STALE : constant := 15011;
   ERROR_EVT_QUERY_RESULT_INVALID_POSITION : constant := 15012;
   ERROR_EVT_NON_VALIDATING_MSXML : constant := 15013;
   ERROR_EVT_FILTER_ALREADYSCOPED : constant := 15014;
   ERROR_EVT_FILTER_NOTELTSET : constant := 15015;
   ERROR_EVT_FILTER_INVARG : constant := 15016;
   ERROR_EVT_FILTER_INVTEST : constant := 15017;
   ERROR_EVT_FILTER_INVTYPE : constant := 15018;
   ERROR_EVT_FILTER_PARSEERR : constant := 15019;
   ERROR_EVT_FILTER_UNSUPPORTEDOP : constant := 15020;
   ERROR_EVT_FILTER_UNEXPECTEDTOKEN : constant := 15021;
   ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL : constant := 15022;
   ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE : constant := 15023;
   ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE : constant := 15024;
   ERROR_EVT_CHANNEL_CANNOT_ACTIVATE : constant := 15025;
   ERROR_EVT_FILTER_TOO_COMPLEX : constant := 15026;
   ERROR_EVT_MESSAGE_NOT_FOUND : constant := 15027;
   ERROR_EVT_MESSAGE_ID_NOT_FOUND : constant := 15028;
   ERROR_EVT_UNRESOLVED_VALUE_INSERT : constant := 15029;
   ERROR_EVT_UNRESOLVED_PARAMETER_INSERT : constant := 15030;
   ERROR_EVT_MAX_INSERTS_REACHED : constant := 15031;
   ERROR_EVT_EVENT_DEFINITION_NOT_FOUND : constant := 15032;
   ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND : constant := 15033;
   ERROR_EVT_VERSION_TOO_OLD : constant := 15034;
   ERROR_EVT_VERSION_TOO_NEW : constant := 15035;
   ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY : constant := 15036;
   ERROR_EVT_PUBLISHER_DISABLED : constant := 15037;
   ERROR_EVT_FILTER_OUT_OF_RANGE : constant := 15038;
   ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE : constant := 15080;
   ERROR_EC_LOG_DISABLED : constant := 15081;
   ERROR_EC_CIRCULAR_FORWARDING : constant := 15082;
   ERROR_EC_CREDSTORE_FULL : constant := 15083;
   ERROR_EC_CRED_NOT_FOUND : constant := 15084;
   ERROR_EC_NO_ACTIVE_CHANNEL : constant := 15085;
   ERROR_MUI_FILE_NOT_FOUND : constant := 15100;
   ERROR_MUI_INVALID_FILE : constant := 15101;
   ERROR_MUI_INVALID_RC_CONFIG : constant := 15102;
   ERROR_MUI_INVALID_LOCALE_NAME : constant := 15103;
   ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME : constant := 15104;
   ERROR_MUI_FILE_NOT_LOADED : constant := 15105;
   ERROR_RESOURCE_ENUM_USER_STOP : constant := 15106;
   ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED : constant := 15107;
   ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME : constant := 15108;
   ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE : constant := 15110;
   ERROR_MRM_INVALID_PRICONFIG : constant := 15111;
   ERROR_MRM_INVALID_FILE_TYPE : constant := 15112;
   ERROR_MRM_UNKNOWN_QUALIFIER : constant := 15113;
   ERROR_MRM_INVALID_QUALIFIER_VALUE : constant := 15114;
   ERROR_MRM_NO_CANDIDATE : constant := 15115;
   ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE : constant := 15116;
   ERROR_MRM_RESOURCE_TYPE_MISMATCH : constant := 15117;
   ERROR_MRM_DUPLICATE_MAP_NAME : constant := 15118;
   ERROR_MRM_DUPLICATE_ENTRY : constant := 15119;
   ERROR_MRM_INVALID_RESOURCE_IDENTIFIER : constant := 15120;
   ERROR_MRM_FILEPATH_TOO_LONG : constant := 15121;
   ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE : constant := 15122;
   ERROR_MRM_INVALID_PRI_FILE : constant := 15126;
   ERROR_MRM_NAMED_RESOURCE_NOT_FOUND : constant := 15127;
   ERROR_MRM_MAP_NOT_FOUND : constant := 15135;
   ERROR_MRM_UNSUPPORTED_PROFILE_TYPE : constant := 15136;
   ERROR_MRM_INVALID_QUALIFIER_OPERATOR : constant := 15137;
   ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE : constant := 15138;
   ERROR_MRM_AUTOMERGE_ENABLED : constant := 15139;
   ERROR_MRM_TOO_MANY_RESOURCES : constant := 15140;
   ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE : constant := 15141;
   ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE : constant := 15142;
   ERROR_MRM_NO_CURRENT_VIEW_ON_THREAD : constant := 15143;
   ERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST : constant := 15144;
   ERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT : constant := 15145;
   ERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE : constant := 15146;
   ERROR_MRM_GENERATION_COUNT_MISMATCH : constant := 15147;
   ERROR_PRI_MERGE_VERSION_MISMATCH : constant := 15148;
   ERROR_PRI_MERGE_MISSING_SCHEMA : constant := 15149;
   ERROR_PRI_MERGE_LOAD_FILE_FAILED : constant := 15150;
   ERROR_PRI_MERGE_ADD_FILE_FAILED : constant := 15151;
   ERROR_PRI_MERGE_WRITE_FILE_FAILED : constant := 15152;
   ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED : constant := 15153;
   ERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED : constant := 15154;
   ERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED : constant := 15155;
   ERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED : constant := 15156;
   ERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED : constant := 15157;
   ERROR_PRI_MERGE_INVALID_FILE_NAME : constant := 15158;
   ERROR_MRM_PACKAGE_NOT_FOUND : constant := 15159;
   ERROR_MRM_MISSING_DEFAULT_LANGUAGE : constant := 15160;
   ERROR_MCA_INVALID_CAPABILITIES_STRING : constant := 15200;
   ERROR_MCA_INVALID_VCP_VERSION : constant := 15201;
   ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION : constant := 15202;
   ERROR_MCA_MCCS_VERSION_MISMATCH : constant := 15203;
   ERROR_MCA_UNSUPPORTED_MCCS_VERSION : constant := 15204;
   ERROR_MCA_INTERNAL_ERROR : constant := 15205;
   ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED : constant := 15206;
   ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE : constant := 15207;
   ERROR_AMBIGUOUS_SYSTEM_DEVICE : constant := 15250;
   ERROR_SYSTEM_DEVICE_NOT_FOUND : constant := 15299;
   ERROR_HASH_NOT_SUPPORTED : constant := 15300;
   ERROR_HASH_NOT_PRESENT : constant := 15301;
   ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED : constant := 15321;
   ERROR_GPIO_CLIENT_INFORMATION_INVALID : constant := 15322;
   ERROR_GPIO_VERSION_NOT_SUPPORTED : constant := 15323;
   ERROR_GPIO_INVALID_REGISTRATION_PACKET : constant := 15324;
   ERROR_GPIO_OPERATION_DENIED : constant := 15325;
   ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE : constant := 15326;
   ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED : constant := 15327;
   ERROR_CANNOT_SWITCH_RUNLEVEL : constant := 15400;
   ERROR_INVALID_RUNLEVEL_SETTING : constant := 15401;
   ERROR_RUNLEVEL_SWITCH_TIMEOUT : constant := 15402;
   ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT : constant := 15403;
   ERROR_RUNLEVEL_SWITCH_IN_PROGRESS : constant := 15404;
   ERROR_SERVICES_FAILED_AUTOSTART : constant := 15405;
   ERROR_COM_TASK_STOP_PENDING : constant := 15501;
   ERROR_INSTALL_OPEN_PACKAGE_FAILED : constant := 15600;
   ERROR_INSTALL_PACKAGE_NOT_FOUND : constant := 15601;
   ERROR_INSTALL_INVALID_PACKAGE : constant := 15602;
   ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED : constant := 15603;
   ERROR_INSTALL_OUT_OF_DISK_SPACE : constant := 15604;
   ERROR_INSTALL_NETWORK_FAILURE : constant := 15605;
   ERROR_INSTALL_REGISTRATION_FAILURE : constant := 15606;
   ERROR_INSTALL_DEREGISTRATION_FAILURE : constant := 15607;
   ERROR_INSTALL_CANCEL : constant := 15608;
   ERROR_INSTALL_FAILED : constant := 15609;
   ERROR_REMOVE_FAILED : constant := 15610;
   ERROR_PACKAGE_ALREADY_EXISTS : constant := 15611;
   ERROR_NEEDS_REMEDIATION : constant := 15612;
   ERROR_INSTALL_PREREQUISITE_FAILED : constant := 15613;
   ERROR_PACKAGE_REPOSITORY_CORRUPTED : constant := 15614;
   ERROR_INSTALL_POLICY_FAILURE : constant := 15615;
   ERROR_PACKAGE_UPDATING : constant := 15616;
   ERROR_DEPLOYMENT_BLOCKED_BY_POLICY : constant := 15617;
   ERROR_PACKAGES_IN_USE : constant := 15618;
   ERROR_RECOVERY_FILE_CORRUPT : constant := 15619;
   ERROR_INVALID_STAGED_SIGNATURE : constant := 15620;
   ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED : constant := 15621;
   ERROR_INSTALL_PACKAGE_DOWNGRADE : constant := 15622;
   ERROR_SYSTEM_NEEDS_REMEDIATION : constant := 15623;
   ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN : constant := 15624;
   ERROR_RESILIENCY_FILE_CORRUPT : constant := 15625;
   ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING : constant := 15626;
   ERROR_PACKAGE_MOVE_FAILED : constant := 15627;
   ERROR_INSTALL_VOLUME_NOT_EMPTY : constant := 15628;
   ERROR_INSTALL_VOLUME_OFFLINE : constant := 15629;
   ERROR_INSTALL_VOLUME_CORRUPT : constant := 15630;
   ERROR_NEEDS_REGISTRATION : constant := 15631;
   ERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE : constant := 15632;
   ERROR_DEV_SIDELOAD_LIMIT_EXCEEDED : constant := 15633;
   ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE : constant := 15634;
   ERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM : constant := 15635;
   ERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING : constant := 15636;
   ERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE : constant := 15637;
   ERROR_PACKAGE_STAGING_ONHOLD : constant := 15638;
   ERROR_INSTALL_INVALID_RELATED_SET_UPDATE : constant := 15639;
   ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY : constant := 15640;
   ERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF : constant := 15641;
   ERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED : constant := 15642;
   ERROR_PACKAGES_REPUTATION_CHECK_FAILED : constant := 15643;
   ERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT : constant := 15644;
   ERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED : constant := 15645;
   ERROR_APPINSTALLER_ACTIVATION_BLOCKED : constant := 15646;
   ERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED : constant := 15647;
   ERROR_APPX_RAW_DATA_WRITE_FAILED : constant := 15648;
   ERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_PACKAGE : constant := 15649;
   ERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_MACHINE : constant := 15650;
   ERROR_DEPLOYMENT_BLOCKED_BY_PROFILE_POLICY : constant := 15651;
   ERROR_DEPLOYMENT_FAILED_CONFLICTING_MUTABLE_PACKAGE_DIRECTORY : constant := 15652;
   ERROR_SINGLETON_RESOURCE_INSTALLED_IN_ACTIVE_USER : constant := 15653;
   ERROR_DIFFERENT_VERSION_OF_PACKAGED_SERVICE_INSTALLED : constant := 15654;
   ERROR_SERVICE_EXISTS_AS_NON_PACKAGED_SERVICE : constant := 15655;
   ERROR_PACKAGED_SERVICE_REQUIRES_ADMIN_PRIVILEGES : constant := 15656;
   ERROR_REDIRECTION_TO_DEFAULT_ACCOUNT_NOT_ALLOWED : constant := 15657;
   ERROR_PACKAGE_LACKS_CAPABILITY_TO_DEPLOY_ON_HOST : constant := 15658;
   ERROR_UNSIGNED_PACKAGE_INVALID_CONTENT : constant := 15659;
   ERROR_UNSIGNED_PACKAGE_INVALID_PUBLISHER_NAMESPACE : constant := 15660;
   ERROR_SIGNED_PACKAGE_INVALID_PUBLISHER_NAMESPACE : constant := 15661;
   ERROR_PACKAGE_EXTERNAL_LOCATION_NOT_ALLOWED : constant := 15662;
   ERROR_INSTALL_FULLTRUST_HOSTRUNTIME_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY : constant := 15663;
   APPMODEL_ERROR_NO_PACKAGE : constant := 15700;
   APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT : constant := 15701;
   APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT : constant := 15702;
   APPMODEL_ERROR_NO_APPLICATION : constant := 15703;
   APPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED : constant := 15704;
   APPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID : constant := 15705;
   APPMODEL_ERROR_PACKAGE_NOT_AVAILABLE : constant := 15706;
   APPMODEL_ERROR_NO_MUTABLE_DIRECTORY : constant := 15707;
   ERROR_STATE_LOAD_STORE_FAILED : constant := 15800;
   ERROR_STATE_GET_VERSION_FAILED : constant := 15801;
   ERROR_STATE_SET_VERSION_FAILED : constant := 15802;
   ERROR_STATE_STRUCTURED_RESET_FAILED : constant := 15803;
   ERROR_STATE_OPEN_CONTAINER_FAILED : constant := 15804;
   ERROR_STATE_CREATE_CONTAINER_FAILED : constant := 15805;
   ERROR_STATE_DELETE_CONTAINER_FAILED : constant := 15806;
   ERROR_STATE_READ_SETTING_FAILED : constant := 15807;
   ERROR_STATE_WRITE_SETTING_FAILED : constant := 15808;
   ERROR_STATE_DELETE_SETTING_FAILED : constant := 15809;
   ERROR_STATE_QUERY_SETTING_FAILED : constant := 15810;
   ERROR_STATE_READ_COMPOSITE_SETTING_FAILED : constant := 15811;
   ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED : constant := 15812;
   ERROR_STATE_ENUMERATE_CONTAINER_FAILED : constant := 15813;
   ERROR_STATE_ENUMERATE_SETTINGS_FAILED : constant := 15814;
   ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED : constant := 15815;
   ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED : constant := 15816;
   ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED : constant := 15817;
   ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED : constant := 15818;
   ERROR_API_UNAVAILABLE : constant := 15841;
   STORE_ERROR_UNLICENSED : constant := 15861;
   STORE_ERROR_UNLICENSED_USER : constant := 15862;
   STORE_ERROR_PENDING_COM_TRANSACTION : constant := 15863;
   STORE_ERROR_LICENSE_REVOKED : constant := 15864;
   SEVERITY_SUCCESS : constant := 0;
   SEVERITY_ERROR : constant := 1;
   FACILITY_NT_BIT : constant := 16#10000000#;
   E_NOT_SET : constant := ERROR_NOT_FOUND;
   E_NOT_VALID_STATE : constant := ERROR_INVALID_STATE;
   E_NOT_SUFFICIENT_BUFFER : constant := ERROR_INSUFFICIENT_BUFFER;
   E_TIME_SENSITIVE_THREAD : constant := ERROR_TIME_SENSITIVE_THREAD;
   E_NO_TASK_QUEUE : constant := ERROR_NO_TASK_QUEUE;
   NOERROR : constant := 0;
   E_UNEXPECTED : constant := 16#8000FFFF#;
   E_NOTIMPL : constant := 16#80004001#;
   E_OUTOFMEMORY : constant := 16#8007000E#;
   E_INVALIDARG : constant := 16#80070057#;
   E_NOINTERFACE : constant := 16#80004002#;
   E_POINTER : constant := 16#80004003#;
   E_HANDLE : constant := 16#80070006#;
   E_ABORT : constant := 16#80004004#;
   E_FAIL : constant := 16#80004005#;
   E_ACCESSDENIED : constant := 16#80070005#;
   E_PENDING : constant := 16#8000000A#;
   E_BOUNDS : constant := 16#8000000B#;
   E_CHANGED_STATE : constant := 16#8000000C#;
   E_ILLEGAL_STATE_CHANGE : constant := 16#8000000D#;
   E_ILLEGAL_METHOD_CALL : constant := 16#8000000E#;
   RO_E_METADATA_NAME_NOT_FOUND : constant := 16#8000000F#;
   RO_E_METADATA_NAME_IS_NAMESPACE : constant := 16#80000010#;
   RO_E_METADATA_INVALID_TYPE_FORMAT : constant := 16#80000011#;
   RO_E_INVALID_METADATA_FILE : constant := 16#80000012#;
   RO_E_CLOSED : constant := 16#80000013#;
   RO_E_EXCLUSIVE_WRITE : constant := 16#80000014#;
   RO_E_CHANGE_NOTIFICATION_IN_PROGRESS : constant := 16#80000015#;
   RO_E_ERROR_STRING_NOT_FOUND : constant := 16#80000016#;
   E_STRING_NOT_NULL_TERMINATED : constant := 16#80000017#;
   E_ILLEGAL_DELEGATE_ASSIGNMENT : constant := 16#80000018#;
   E_ASYNC_OPERATION_NOT_STARTED : constant := 16#80000019#;
   E_APPLICATION_EXITING : constant := 16#8000001A#;
   E_APPLICATION_VIEW_EXITING : constant := 16#8000001B#;
   RO_E_MUST_BE_AGILE : constant := 16#8000001C#;
   RO_E_UNSUPPORTED_FROM_MTA : constant := 16#8000001D#;
   RO_E_COMMITTED : constant := 16#8000001E#;
   RO_E_BLOCKED_CROSS_ASTA_CALL : constant := 16#8000001F#;
   RO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER : constant := 16#80000020#;
   RO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER : constant := 16#80000021#;
   CO_E_INIT_TLS : constant := 16#80004006#;
   CO_E_INIT_SHARED_ALLOCATOR : constant := 16#80004007#;
   CO_E_INIT_MEMORY_ALLOCATOR : constant := 16#80004008#;
   CO_E_INIT_CLASS_CACHE : constant := 16#80004009#;
   CO_E_INIT_RPC_CHANNEL : constant := 16#8000400A#;
   CO_E_INIT_TLS_SET_CHANNEL_CONTROL : constant := 16#8000400B#;
   CO_E_INIT_TLS_CHANNEL_CONTROL : constant := 16#8000400C#;
   CO_E_INIT_UNACCEPTED_USER_ALLOCATOR : constant := 16#8000400D#;
   CO_E_INIT_SCM_MUTEX_EXISTS : constant := 16#8000400E#;
   CO_E_INIT_SCM_FILE_MAPPING_EXISTS : constant := 16#8000400F#;
   CO_E_INIT_SCM_MAP_VIEW_OF_FILE : constant := 16#80004010#;
   CO_E_INIT_SCM_EXEC_FAILURE : constant := 16#80004011#;
   CO_E_INIT_ONLY_SINGLE_THREADED : constant := 16#80004012#;
   CO_E_CANT_REMOTE : constant := 16#80004013#;
   CO_E_BAD_SERVER_NAME : constant := 16#80004014#;
   CO_E_WRONG_SERVER_IDENTITY : constant := 16#80004015#;
   CO_E_OLE1DDE_DISABLED : constant := 16#80004016#;
   CO_E_RUNAS_SYNTAX : constant := 16#80004017#;
   CO_E_CREATEPROCESS_FAILURE : constant := 16#80004018#;
   CO_E_RUNAS_CREATEPROCESS_FAILURE : constant := 16#80004019#;
   CO_E_RUNAS_LOGON_FAILURE : constant := 16#8000401A#;
   CO_E_LAUNCH_PERMSSION_DENIED : constant := 16#8000401B#;
   CO_E_START_SERVICE_FAILURE : constant := 16#8000401C#;
   CO_E_REMOTE_COMMUNICATION_FAILURE : constant := 16#8000401D#;
   CO_E_SERVER_START_TIMEOUT : constant := 16#8000401E#;
   CO_E_CLSREG_INCONSISTENT : constant := 16#8000401F#;
   CO_E_IIDREG_INCONSISTENT : constant := 16#80004020#;
   CO_E_NOT_SUPPORTED : constant := 16#80004021#;
   CO_E_RELOAD_DLL : constant := 16#80004022#;
   CO_E_MSI_ERROR : constant := 16#80004023#;
   CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT : constant := 16#80004024#;
   CO_E_SERVER_PAUSED : constant := 16#80004025#;
   CO_E_SERVER_NOT_PAUSED : constant := 16#80004026#;
   CO_E_CLASS_DISABLED : constant := 16#80004027#;
   CO_E_CLRNOTAVAILABLE : constant := 16#80004028#;
   CO_E_ASYNC_WORK_REJECTED : constant := 16#80004029#;
   CO_E_SERVER_INIT_TIMEOUT : constant := 16#8000402A#;
   CO_E_NO_SECCTX_IN_ACTIVATE : constant := 16#8000402B#;
   CO_E_TRACKER_CONFIG : constant := 16#80004030#;
   CO_E_THREADPOOL_CONFIG : constant := 16#80004031#;
   CO_E_SXS_CONFIG : constant := 16#80004032#;
   CO_E_MALFORMED_SPN : constant := 16#80004033#;
   CO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN : constant := 16#80004034#;
   CO_E_PREMATURE_STUB_RUNDOWN : constant := 16#80004035#;
   S_OK : constant := 0;
   S_FALSE : constant := 1;
   OLE_E_FIRST : constant := 16#80040000#;
   OLE_E_LAST : constant := 16#800400FF#;
   OLE_S_FIRST : constant := 16#00040000#;
   OLE_S_LAST : constant := 16#000400FF#;
   OLE_E_OLEVERB : constant := 16#80040000#;
   OLE_E_ADVF : constant := 16#80040001#;
   OLE_E_ENUM_NOMORE : constant := 16#80040002#;
   OLE_E_ADVISENOTSUPPORTED : constant := 16#80040003#;
   OLE_E_NOCONNECTION : constant := 16#80040004#;
   OLE_E_NOTRUNNING : constant := 16#80040005#;
   OLE_E_NOCACHE : constant := 16#80040006#;
   OLE_E_BLANK : constant := 16#80040007#;
   OLE_E_CLASSDIFF : constant := 16#80040008#;
   OLE_E_CANT_GETMONIKER : constant := 16#80040009#;
   OLE_E_CANT_BINDTOSOURCE : constant := 16#8004000A#;
   OLE_E_STATIC : constant := 16#8004000B#;
   OLE_E_PROMPTSAVECANCELLED : constant := 16#8004000C#;
   OLE_E_INVALIDRECT : constant := 16#8004000D#;
   OLE_E_WRONGCOMPOBJ : constant := 16#8004000E#;
   OLE_E_INVALIDHWND : constant := 16#8004000F#;
   OLE_E_NOT_INPLACEACTIVE : constant := 16#80040010#;
   OLE_E_CANTCONVERT : constant := 16#80040011#;
   OLE_E_NOSTORAGE : constant := 16#80040012#;
   DV_E_FORMATETC : constant := 16#80040064#;
   DV_E_DVTARGETDEVICE : constant := 16#80040065#;
   DV_E_STGMEDIUM : constant := 16#80040066#;
   DV_E_STATDATA : constant := 16#80040067#;
   DV_E_LINDEX : constant := 16#80040068#;
   DV_E_TYMED : constant := 16#80040069#;
   DV_E_CLIPFORMAT : constant := 16#8004006A#;
   DV_E_DVASPECT : constant := 16#8004006B#;
   DV_E_DVTARGETDEVICE_SIZE : constant := 16#8004006C#;
   DV_E_NOIVIEWOBJECT : constant := 16#8004006D#;
   DRAGDROP_E_FIRST : constant := 16#80040100#;
   DRAGDROP_E_LAST : constant := 16#8004010F#;
   DRAGDROP_S_FIRST : constant := 16#00040100#;
   DRAGDROP_S_LAST : constant := 16#0004010F#;
   DRAGDROP_E_NOTREGISTERED : constant := 16#80040100#;
   DRAGDROP_E_ALREADYREGISTERED : constant := 16#80040101#;
   DRAGDROP_E_INVALIDHWND : constant := 16#80040102#;
   DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED : constant := 16#80040103#;
   CLASSFACTORY_E_FIRST : constant := 16#80040110#;
   CLASSFACTORY_E_LAST : constant := 16#8004011F#;
   CLASSFACTORY_S_FIRST : constant := 16#00040110#;
   CLASSFACTORY_S_LAST : constant := 16#0004011F#;
   CLASS_E_NOAGGREGATION : constant := 16#80040110#;
   CLASS_E_CLASSNOTAVAILABLE : constant := 16#80040111#;
   CLASS_E_NOTLICENSED : constant := 16#80040112#;
   MARSHAL_E_FIRST : constant := 16#80040120#;
   MARSHAL_E_LAST : constant := 16#8004012F#;
   MARSHAL_S_FIRST : constant := 16#00040120#;
   MARSHAL_S_LAST : constant := 16#0004012F#;
   DATA_E_FIRST : constant := 16#80040130#;
   DATA_E_LAST : constant := 16#8004013F#;
   DATA_S_FIRST : constant := 16#00040130#;
   DATA_S_LAST : constant := 16#0004013F#;
   VIEW_E_FIRST : constant := 16#80040140#;
   VIEW_E_LAST : constant := 16#8004014F#;
   VIEW_S_FIRST : constant := 16#00040140#;
   VIEW_S_LAST : constant := 16#0004014F#;
   VIEW_E_DRAW : constant := 16#80040140#;
   REGDB_E_FIRST : constant := 16#80040150#;
   REGDB_E_LAST : constant := 16#8004015F#;
   REGDB_S_FIRST : constant := 16#00040150#;
   REGDB_S_LAST : constant := 16#0004015F#;
   REGDB_E_READREGDB : constant := 16#80040150#;
   REGDB_E_WRITEREGDB : constant := 16#80040151#;
   REGDB_E_KEYMISSING : constant := 16#80040152#;
   REGDB_E_INVALIDVALUE : constant := 16#80040153#;
   REGDB_E_CLASSNOTREG : constant := 16#80040154#;
   REGDB_E_IIDNOTREG : constant := 16#80040155#;
   REGDB_E_BADTHREADINGMODEL : constant := 16#80040156#;
   REGDB_E_PACKAGEPOLICYVIOLATION : constant := 16#80040157#;
   CAT_E_FIRST : constant := 16#80040160#;
   CAT_E_LAST : constant := 16#80040161#;
   CAT_E_CATIDNOEXIST : constant := 16#80040160#;
   CAT_E_NODESCRIPTION : constant := 16#80040161#;
   CS_E_FIRST : constant := 16#80040164#;
   CS_E_LAST : constant := 16#8004016F#;
   CS_E_PACKAGE_NOTFOUND : constant := 16#80040164#;
   CS_E_NOT_DELETABLE : constant := 16#80040165#;
   CS_E_CLASS_NOTFOUND : constant := 16#80040166#;
   CS_E_INVALID_VERSION : constant := 16#80040167#;
   CS_E_NO_CLASSSTORE : constant := 16#80040168#;
   CS_E_OBJECT_NOTFOUND : constant := 16#80040169#;
   CS_E_OBJECT_ALREADY_EXISTS : constant := 16#8004016A#;
   CS_E_INVALID_PATH : constant := 16#8004016B#;
   CS_E_NETWORK_ERROR : constant := 16#8004016C#;
   CS_E_ADMIN_LIMIT_EXCEEDED : constant := 16#8004016D#;
   CS_E_SCHEMA_MISMATCH : constant := 16#8004016E#;
   CS_E_INTERNAL_ERROR : constant := 16#8004016F#;
   CACHE_E_FIRST : constant := 16#80040170#;
   CACHE_E_LAST : constant := 16#8004017F#;
   CACHE_S_FIRST : constant := 16#00040170#;
   CACHE_S_LAST : constant := 16#0004017F#;
   CACHE_E_NOCACHE_UPDATED : constant := 16#80040170#;
   OLEOBJ_E_FIRST : constant := 16#80040180#;
   OLEOBJ_E_LAST : constant := 16#8004018F#;
   OLEOBJ_S_FIRST : constant := 16#00040180#;
   OLEOBJ_S_LAST : constant := 16#0004018F#;
   OLEOBJ_E_NOVERBS : constant := 16#80040180#;
   OLEOBJ_E_INVALIDVERB : constant := 16#80040181#;
   CLIENTSITE_E_FIRST : constant := 16#80040190#;
   CLIENTSITE_E_LAST : constant := 16#8004019F#;
   CLIENTSITE_S_FIRST : constant := 16#00040190#;
   CLIENTSITE_S_LAST : constant := 16#0004019F#;
   INPLACE_E_NOTUNDOABLE : constant := 16#800401A0#;
   INPLACE_E_NOTOOLSPACE : constant := 16#800401A1#;
   INPLACE_E_FIRST : constant := 16#800401A0#;
   INPLACE_E_LAST : constant := 16#800401AF#;
   INPLACE_S_FIRST : constant := 16#000401A0#;
   INPLACE_S_LAST : constant := 16#000401AF#;
   ENUM_E_FIRST : constant := 16#800401B0#;
   ENUM_E_LAST : constant := 16#800401BF#;
   ENUM_S_FIRST : constant := 16#000401B0#;
   ENUM_S_LAST : constant := 16#000401BF#;
   CONVERT10_E_FIRST : constant := 16#800401C0#;
   CONVERT10_E_LAST : constant := 16#800401CF#;
   CONVERT10_S_FIRST : constant := 16#000401C0#;
   CONVERT10_S_LAST : constant := 16#000401CF#;
   CONVERT10_E_OLESTREAM_GET : constant := 16#800401C0#;
   CONVERT10_E_OLESTREAM_PUT : constant := 16#800401C1#;
   CONVERT10_E_OLESTREAM_FMT : constant := 16#800401C2#;
   CONVERT10_E_OLESTREAM_BITMAP_TO_DIB : constant := 16#800401C3#;
   CONVERT10_E_STG_FMT : constant := 16#800401C4#;
   CONVERT10_E_STG_NO_STD_STREAM : constant := 16#800401C5#;
   CONVERT10_E_STG_DIB_TO_BITMAP : constant := 16#800401C6#;
   CLIPBRD_E_FIRST : constant := 16#800401D0#;
   CLIPBRD_E_LAST : constant := 16#800401DF#;
   CLIPBRD_S_FIRST : constant := 16#000401D0#;
   CLIPBRD_S_LAST : constant := 16#000401DF#;
   CLIPBRD_E_CANT_OPEN : constant := 16#800401D0#;
   CLIPBRD_E_CANT_EMPTY : constant := 16#800401D1#;
   CLIPBRD_E_CANT_SET : constant := 16#800401D2#;
   CLIPBRD_E_BAD_DATA : constant := 16#800401D3#;
   CLIPBRD_E_CANT_CLOSE : constant := 16#800401D4#;
   MK_E_FIRST : constant := 16#800401E0#;
   MK_E_LAST : constant := 16#800401EF#;
   MK_S_FIRST : constant := 16#000401E0#;
   MK_S_LAST : constant := 16#000401EF#;
   MK_E_CONNECTMANUALLY : constant := 16#800401E0#;
   MK_E_EXCEEDEDDEADLINE : constant := 16#800401E1#;
   MK_E_NEEDGENERIC : constant := 16#800401E2#;
   MK_E_UNAVAILABLE : constant := 16#800401E3#;
   MK_E_SYNTAX : constant := 16#800401E4#;
   MK_E_NOOBJECT : constant := 16#800401E5#;
   MK_E_INVALIDEXTENSION : constant := 16#800401E6#;
   MK_E_INTERMEDIATEINTERFACENOTSUPPORTED : constant := 16#800401E7#;
   MK_E_NOTBINDABLE : constant := 16#800401E8#;
   MK_E_NOTBOUND : constant := 16#800401E9#;
   MK_E_CANTOPENFILE : constant := 16#800401EA#;
   MK_E_MUSTBOTHERUSER : constant := 16#800401EB#;
   MK_E_NOINVERSE : constant := 16#800401EC#;
   MK_E_NOSTORAGE : constant := 16#800401ED#;
   MK_E_NOPREFIX : constant := 16#800401EE#;
   MK_E_ENUMERATION_FAILED : constant := 16#800401EF#;
   CO_E_FIRST : constant := 16#800401F0#;
   CO_E_LAST : constant := 16#800401FF#;
   CO_S_FIRST : constant := 16#000401F0#;
   CO_S_LAST : constant := 16#000401FF#;
   CO_E_NOTINITIALIZED : constant := 16#800401F0#;
   CO_E_ALREADYINITIALIZED : constant := 16#800401F1#;
   CO_E_CANTDETERMINECLASS : constant := 16#800401F2#;
   CO_E_CLASSSTRING : constant := 16#800401F3#;
   CO_E_IIDSTRING : constant := 16#800401F4#;
   CO_E_APPNOTFOUND : constant := 16#800401F5#;
   CO_E_APPSINGLEUSE : constant := 16#800401F6#;
   CO_E_ERRORINAPP : constant := 16#800401F7#;
   CO_E_DLLNOTFOUND : constant := 16#800401F8#;
   CO_E_ERRORINDLL : constant := 16#800401F9#;
   CO_E_WRONGOSFORAPP : constant := 16#800401FA#;
   CO_E_OBJNOTREG : constant := 16#800401FB#;
   CO_E_OBJISREG : constant := 16#800401FC#;
   CO_E_OBJNOTCONNECTED : constant := 16#800401FD#;
   CO_E_APPDIDNTREG : constant := 16#800401FE#;
   CO_E_RELEASED : constant := 16#800401FF#;
   EVENT_E_FIRST : constant := 16#80040200#;
   EVENT_E_LAST : constant := 16#8004021F#;
   EVENT_S_FIRST : constant := 16#00040200#;
   EVENT_S_LAST : constant := 16#0004021F#;
   EVENT_S_SOME_SUBSCRIBERS_FAILED : constant := 16#00040200#;
   EVENT_E_ALL_SUBSCRIBERS_FAILED : constant := 16#80040201#;
   EVENT_S_NOSUBSCRIBERS : constant := 16#00040202#;
   EVENT_E_QUERYSYNTAX : constant := 16#80040203#;
   EVENT_E_QUERYFIELD : constant := 16#80040204#;
   EVENT_E_INTERNALEXCEPTION : constant := 16#80040205#;
   EVENT_E_INTERNALERROR : constant := 16#80040206#;
   EVENT_E_INVALID_PER_USER_SID : constant := 16#80040207#;
   EVENT_E_USER_EXCEPTION : constant := 16#80040208#;
   EVENT_E_TOO_MANY_METHODS : constant := 16#80040209#;
   EVENT_E_MISSING_EVENTCLASS : constant := 16#8004020A#;
   EVENT_E_NOT_ALL_REMOVED : constant := 16#8004020B#;
   EVENT_E_COMPLUS_NOT_INSTALLED : constant := 16#8004020C#;
   EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT : constant := 16#8004020D#;
   EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT : constant := 16#8004020E#;
   EVENT_E_INVALID_EVENT_CLASS_PARTITION : constant := 16#8004020F#;
   EVENT_E_PER_USER_SID_NOT_LOGGED_ON : constant := 16#80040210#;
   TPC_E_INVALID_PROPERTY : constant := 16#80040241#;
   TPC_E_NO_DEFAULT_TABLET : constant := 16#80040212#;
   TPC_E_UNKNOWN_PROPERTY : constant := 16#8004021B#;
   TPC_E_INVALID_INPUT_RECT : constant := 16#80040219#;
   TPC_E_INVALID_STROKE : constant := 16#80040222#;
   TPC_E_INITIALIZE_FAIL : constant := 16#80040223#;
   TPC_E_NOT_RELEVANT : constant := 16#80040232#;
   TPC_E_INVALID_PACKET_DESCRIPTION : constant := 16#80040233#;
   TPC_E_RECOGNIZER_NOT_REGISTERED : constant := 16#80040235#;
   TPC_E_INVALID_RIGHTS : constant := 16#80040236#;
   TPC_E_OUT_OF_ORDER_CALL : constant := 16#80040237#;
   TPC_E_QUEUE_FULL : constant := 16#80040238#;
   TPC_E_INVALID_CONFIGURATION : constant := 16#80040239#;
   TPC_E_INVALID_DATA_FROM_RECOGNIZER : constant := 16#8004023A#;
   TPC_S_TRUNCATED : constant := 16#00040252#;
   TPC_S_INTERRUPTED : constant := 16#00040253#;
   TPC_S_NO_DATA_TO_PROCESS : constant := 16#00040254#;
   XACT_E_FIRST : constant := 16#8004D000#;
   XACT_E_LAST : constant := 16#8004D02B#;
   XACT_S_FIRST : constant := 16#0004D000#;
   XACT_S_LAST : constant := 16#0004D010#;
   XACT_E_ALREADYOTHERSINGLEPHASE : constant := 16#8004D000#;
   XACT_E_CANTRETAIN : constant := 16#8004D001#;
   XACT_E_COMMITFAILED : constant := 16#8004D002#;
   XACT_E_COMMITPREVENTED : constant := 16#8004D003#;
   XACT_E_HEURISTICABORT : constant := 16#8004D004#;
   XACT_E_HEURISTICCOMMIT : constant := 16#8004D005#;
   XACT_E_HEURISTICDAMAGE : constant := 16#8004D006#;
   XACT_E_HEURISTICDANGER : constant := 16#8004D007#;
   XACT_E_ISOLATIONLEVEL : constant := 16#8004D008#;
   XACT_E_NOASYNC : constant := 16#8004D009#;
   XACT_E_NOENLIST : constant := 16#8004D00A#;
   XACT_E_NOISORETAIN : constant := 16#8004D00B#;
   XACT_E_NORESOURCE : constant := 16#8004D00C#;
   XACT_E_NOTCURRENT : constant := 16#8004D00D#;
   XACT_E_NOTRANSACTION : constant := 16#8004D00E#;
   XACT_E_NOTSUPPORTED : constant := 16#8004D00F#;
   XACT_E_UNKNOWNRMGRID : constant := 16#8004D010#;
   XACT_E_WRONGSTATE : constant := 16#8004D011#;
   XACT_E_WRONGUOW : constant := 16#8004D012#;
   XACT_E_XTIONEXISTS : constant := 16#8004D013#;
   XACT_E_NOIMPORTOBJECT : constant := 16#8004D014#;
   XACT_E_INVALIDCOOKIE : constant := 16#8004D015#;
   XACT_E_INDOUBT : constant := 16#8004D016#;
   XACT_E_NOTIMEOUT : constant := 16#8004D017#;
   XACT_E_ALREADYINPROGRESS : constant := 16#8004D018#;
   XACT_E_ABORTED : constant := 16#8004D019#;
   XACT_E_LOGFULL : constant := 16#8004D01A#;
   XACT_E_TMNOTAVAILABLE : constant := 16#8004D01B#;
   XACT_E_CONNECTION_DOWN : constant := 16#8004D01C#;
   XACT_E_CONNECTION_DENIED : constant := 16#8004D01D#;
   XACT_E_REENLISTTIMEOUT : constant := 16#8004D01E#;
   XACT_E_TIP_CONNECT_FAILED : constant := 16#8004D01F#;
   XACT_E_TIP_PROTOCOL_ERROR : constant := 16#8004D020#;
   XACT_E_TIP_PULL_FAILED : constant := 16#8004D021#;
   XACT_E_DEST_TMNOTAVAILABLE : constant := 16#8004D022#;
   XACT_E_TIP_DISABLED : constant := 16#8004D023#;
   XACT_E_NETWORK_TX_DISABLED : constant := 16#8004D024#;
   XACT_E_PARTNER_NETWORK_TX_DISABLED : constant := 16#8004D025#;
   XACT_E_XA_TX_DISABLED : constant := 16#8004D026#;
   XACT_E_UNABLE_TO_READ_DTC_CONFIG : constant := 16#8004D027#;
   XACT_E_UNABLE_TO_LOAD_DTC_PROXY : constant := 16#8004D028#;
   XACT_E_ABORTING : constant := 16#8004D029#;
   XACT_E_PUSH_COMM_FAILURE : constant := 16#8004D02A#;
   XACT_E_PULL_COMM_FAILURE : constant := 16#8004D02B#;
   XACT_E_LU_TX_DISABLED : constant := 16#8004D02C#;
   XACT_E_CLERKNOTFOUND : constant := 16#8004D080#;
   XACT_E_CLERKEXISTS : constant := 16#8004D081#;
   XACT_E_RECOVERYINPROGRESS : constant := 16#8004D082#;
   XACT_E_TRANSACTIONCLOSED : constant := 16#8004D083#;
   XACT_E_INVALIDLSN : constant := 16#8004D084#;
   XACT_E_REPLAYREQUEST : constant := 16#8004D085#;
   XACT_S_ASYNC : constant := 16#0004D000#;
   XACT_S_DEFECT : constant := 16#0004D001#;
   XACT_S_READONLY : constant := 16#0004D002#;
   XACT_S_SOMENORETAIN : constant := 16#0004D003#;
   XACT_S_OKINFORM : constant := 16#0004D004#;
   XACT_S_MADECHANGESCONTENT : constant := 16#0004D005#;
   XACT_S_MADECHANGESINFORM : constant := 16#0004D006#;
   XACT_S_ALLNORETAIN : constant := 16#0004D007#;
   XACT_S_ABORTING : constant := 16#0004D008#;
   XACT_S_SINGLEPHASE : constant := 16#0004D009#;
   XACT_S_LOCALLY_OK : constant := 16#0004D00A#;
   XACT_S_LASTRESOURCEMANAGER : constant := 16#0004D010#;
   CONTEXT_E_FIRST : constant := 16#8004E000#;
   CONTEXT_E_LAST : constant := 16#8004E02F#;
   CONTEXT_S_FIRST : constant := 16#0004E000#;
   CONTEXT_S_LAST : constant := 16#0004E02F#;
   CONTEXT_E_ABORTED : constant := 16#8004E002#;
   CONTEXT_E_ABORTING : constant := 16#8004E003#;
   CONTEXT_E_NOCONTEXT : constant := 16#8004E004#;
   CONTEXT_E_WOULD_DEADLOCK : constant := 16#8004E005#;
   CONTEXT_E_SYNCH_TIMEOUT : constant := 16#8004E006#;
   CONTEXT_E_OLDREF : constant := 16#8004E007#;
   CONTEXT_E_ROLENOTFOUND : constant := 16#8004E00C#;
   CONTEXT_E_TMNOTAVAILABLE : constant := 16#8004E00F#;
   CO_E_ACTIVATIONFAILED : constant := 16#8004E021#;
   CO_E_ACTIVATIONFAILED_EVENTLOGGED : constant := 16#8004E022#;
   CO_E_ACTIVATIONFAILED_CATALOGERROR : constant := 16#8004E023#;
   CO_E_ACTIVATIONFAILED_TIMEOUT : constant := 16#8004E024#;
   CO_E_INITIALIZATIONFAILED : constant := 16#8004E025#;
   CONTEXT_E_NOJIT : constant := 16#8004E026#;
   CONTEXT_E_NOTRANSACTION : constant := 16#8004E027#;
   CO_E_THREADINGMODEL_CHANGED : constant := 16#8004E028#;
   CO_E_NOIISINTRINSICS : constant := 16#8004E029#;
   CO_E_NOCOOKIES : constant := 16#8004E02A#;
   CO_E_DBERROR : constant := 16#8004E02B#;
   CO_E_NOTPOOLED : constant := 16#8004E02C#;
   CO_E_NOTCONSTRUCTED : constant := 16#8004E02D#;
   CO_E_NOSYNCHRONIZATION : constant := 16#8004E02E#;
   CO_E_ISOLEVELMISMATCH : constant := 16#8004E02F#;
   CO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED : constant := 16#8004E030#;
   CO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED : constant := 16#8004E031#;
   OLE_S_USEREG : constant := 16#00040000#;
   OLE_S_STATIC : constant := 16#00040001#;
   OLE_S_MAC_CLIPFORMAT : constant := 16#00040002#;
   DRAGDROP_S_DROP : constant := 16#00040100#;
   DRAGDROP_S_CANCEL : constant := 16#00040101#;
   DRAGDROP_S_USEDEFAULTCURSORS : constant := 16#00040102#;
   DATA_S_SAMEFORMATETC : constant := 16#00040130#;
   VIEW_S_ALREADY_FROZEN : constant := 16#00040140#;
   CACHE_S_FORMATETC_NOTSUPPORTED : constant := 16#00040170#;
   CACHE_S_SAMECACHE : constant := 16#00040171#;
   CACHE_S_SOMECACHES_NOTUPDATED : constant := 16#00040172#;
   OLEOBJ_S_INVALIDVERB : constant := 16#00040180#;
   OLEOBJ_S_CANNOT_DOVERB_NOW : constant := 16#00040181#;
   OLEOBJ_S_INVALIDHWND : constant := 16#00040182#;
   INPLACE_S_TRUNCATED : constant := 16#000401A0#;
   CONVERT10_S_NO_PRESENTATION : constant := 16#000401C0#;
   MK_S_REDUCED_TO_SELF : constant := 16#000401E2#;
   MK_S_ME : constant := 16#000401E4#;
   MK_S_HIM : constant := 16#000401E5#;
   MK_S_US : constant := 16#000401E6#;
   MK_S_MONIKERALREADYREGISTERED : constant := 16#000401E7#;
   SCHED_S_TASK_READY : constant := 16#00041300#;
   SCHED_S_TASK_RUNNING : constant := 16#00041301#;
   SCHED_S_TASK_DISABLED : constant := 16#00041302#;
   SCHED_S_TASK_HAS_NOT_RUN : constant := 16#00041303#;
   SCHED_S_TASK_NO_MORE_RUNS : constant := 16#00041304#;
   SCHED_S_TASK_NOT_SCHEDULED : constant := 16#00041305#;
   SCHED_S_TASK_TERMINATED : constant := 16#00041306#;
   SCHED_S_TASK_NO_VALID_TRIGGERS : constant := 16#00041307#;
   SCHED_S_EVENT_TRIGGER : constant := 16#00041308#;
   SCHED_E_TRIGGER_NOT_FOUND : constant := 16#80041309#;
   SCHED_E_TASK_NOT_READY : constant := 16#8004130A#;
   SCHED_E_TASK_NOT_RUNNING : constant := 16#8004130B#;
   SCHED_E_SERVICE_NOT_INSTALLED : constant := 16#8004130C#;
   SCHED_E_CANNOT_OPEN_TASK : constant := 16#8004130D#;
   SCHED_E_INVALID_TASK : constant := 16#8004130E#;
   SCHED_E_ACCOUNT_INFORMATION_NOT_SET : constant := 16#8004130F#;
   SCHED_E_ACCOUNT_NAME_NOT_FOUND : constant := 16#80041310#;
   SCHED_E_ACCOUNT_DBASE_CORRUPT : constant := 16#80041311#;
   SCHED_E_NO_SECURITY_SERVICES : constant := 16#80041312#;
   SCHED_E_UNKNOWN_OBJECT_VERSION : constant := 16#80041313#;
   SCHED_E_UNSUPPORTED_ACCOUNT_OPTION : constant := 16#80041314#;
   SCHED_E_SERVICE_NOT_RUNNING : constant := 16#80041315#;
   SCHED_E_UNEXPECTEDNODE : constant := 16#80041316#;
   SCHED_E_NAMESPACE : constant := 16#80041317#;
   SCHED_E_INVALIDVALUE : constant := 16#80041318#;
   SCHED_E_MISSINGNODE : constant := 16#80041319#;
   SCHED_E_MALFORMEDXML : constant := 16#8004131A#;
   SCHED_S_SOME_TRIGGERS_FAILED : constant := 16#0004131B#;
   SCHED_S_BATCH_LOGON_PROBLEM : constant := 16#0004131C#;
   SCHED_E_TOO_MANY_NODES : constant := 16#8004131D#;
   SCHED_E_PAST_END_BOUNDARY : constant := 16#8004131E#;
   SCHED_E_ALREADY_RUNNING : constant := 16#8004131F#;
   SCHED_E_USER_NOT_LOGGED_ON : constant := 16#80041320#;
   SCHED_E_INVALID_TASK_HASH : constant := 16#80041321#;
   SCHED_E_SERVICE_NOT_AVAILABLE : constant := 16#80041322#;
   SCHED_E_SERVICE_TOO_BUSY : constant := 16#80041323#;
   SCHED_E_TASK_ATTEMPTED : constant := 16#80041324#;
   SCHED_S_TASK_QUEUED : constant := 16#00041325#;
   SCHED_E_TASK_DISABLED : constant := 16#80041326#;
   SCHED_E_TASK_NOT_V1_COMPAT : constant := 16#80041327#;
   SCHED_E_START_ON_DEMAND : constant := 16#80041328#;
   SCHED_E_TASK_NOT_UBPM_COMPAT : constant := 16#80041329#;
   SCHED_E_DEPRECATED_FEATURE_USED : constant := 16#80041330#;
   CO_E_CLASS_CREATE_FAILED : constant := 16#80080001#;
   CO_E_SCM_ERROR : constant := 16#80080002#;
   CO_E_SCM_RPC_FAILURE : constant := 16#80080003#;
   CO_E_BAD_PATH : constant := 16#80080004#;
   CO_E_SERVER_EXEC_FAILURE : constant := 16#80080005#;
   CO_E_OBJSRV_RPC_FAILURE : constant := 16#80080006#;
   MK_E_NO_NORMALIZED : constant := 16#80080007#;
   CO_E_SERVER_STOPPING : constant := 16#80080008#;
   MEM_E_INVALID_ROOT : constant := 16#80080009#;
   MEM_E_INVALID_LINK : constant := 16#80080010#;
   MEM_E_INVALID_SIZE : constant := 16#80080011#;
   CO_S_NOTALLINTERFACES : constant := 16#00080012#;
   CO_S_MACHINENAMENOTFOUND : constant := 16#00080013#;
   CO_E_MISSING_DISPLAYNAME : constant := 16#80080015#;
   CO_E_RUNAS_VALUE_MUST_BE_AAA : constant := 16#80080016#;
   CO_E_ELEVATION_DISABLED : constant := 16#80080017#;
   APPX_E_PACKAGING_INTERNAL : constant := 16#80080200#;
   APPX_E_INTERLEAVING_NOT_ALLOWED : constant := 16#80080201#;
   APPX_E_RELATIONSHIPS_NOT_ALLOWED : constant := 16#80080202#;
   APPX_E_MISSING_REQUIRED_FILE : constant := 16#80080203#;
   APPX_E_INVALID_MANIFEST : constant := 16#80080204#;
   APPX_E_INVALID_BLOCKMAP : constant := 16#80080205#;
   APPX_E_CORRUPT_CONTENT : constant := 16#80080206#;
   APPX_E_BLOCK_HASH_INVALID : constant := 16#80080207#;
   APPX_E_REQUESTED_RANGE_TOO_LARGE : constant := 16#80080208#;
   APPX_E_INVALID_SIP_CLIENT_DATA : constant := 16#80080209#;
   APPX_E_INVALID_KEY_INFO : constant := 16#8008020A#;
   APPX_E_INVALID_CONTENTGROUPMAP : constant := 16#8008020B#;
   APPX_E_INVALID_APPINSTALLER : constant := 16#8008020C#;
   APPX_E_DELTA_BASELINE_VERSION_MISMATCH : constant := 16#8008020D#;
   APPX_E_DELTA_PACKAGE_MISSING_FILE : constant := 16#8008020E#;
   APPX_E_INVALID_DELTA_PACKAGE : constant := 16#8008020F#;
   APPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED : constant := 16#80080210#;
   APPX_E_INVALID_PACKAGING_LAYOUT : constant := 16#80080211#;
   APPX_E_INVALID_PACKAGESIGNCONFIG : constant := 16#80080212#;
   APPX_E_RESOURCESPRI_NOT_ALLOWED : constant := 16#80080213#;
   APPX_E_FILE_COMPRESSION_MISMATCH : constant := 16#80080214#;
   APPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION : constant := 16#80080215#;
   APPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST : constant := 16#80080216#;
   BT_E_SPURIOUS_ACTIVATION : constant := 16#80080300#;
   DISP_E_UNKNOWNINTERFACE : constant := 16#80020001#;
   DISP_E_MEMBERNOTFOUND : constant := 16#80020003#;
   DISP_E_PARAMNOTFOUND : constant := 16#80020004#;
   DISP_E_TYPEMISMATCH : constant := 16#80020005#;
   DISP_E_UNKNOWNNAME : constant := 16#80020006#;
   DISP_E_NONAMEDARGS : constant := 16#80020007#;
   DISP_E_BADVARTYPE : constant := 16#80020008#;
   DISP_E_EXCEPTION : constant := 16#80020009#;
   DISP_E_OVERFLOW : constant := 16#8002000A#;
   DISP_E_BADINDEX : constant := 16#8002000B#;
   DISP_E_UNKNOWNLCID : constant := 16#8002000C#;
   DISP_E_ARRAYISLOCKED : constant := 16#8002000D#;
   DISP_E_BADPARAMCOUNT : constant := 16#8002000E#;
   DISP_E_PARAMNOTOPTIONAL : constant := 16#8002000F#;
   DISP_E_BADCALLEE : constant := 16#80020010#;
   DISP_E_NOTACOLLECTION : constant := 16#80020011#;
   DISP_E_DIVBYZERO : constant := 16#80020012#;
   DISP_E_BUFFERTOOSMALL : constant := 16#80020013#;
   TYPE_E_BUFFERTOOSMALL : constant := 16#80028016#;
   TYPE_E_FIELDNOTFOUND : constant := 16#80028017#;
   TYPE_E_INVDATAREAD : constant := 16#80028018#;
   TYPE_E_UNSUPFORMAT : constant := 16#80028019#;
   TYPE_E_REGISTRYACCESS : constant := 16#8002801C#;
   TYPE_E_LIBNOTREGISTERED : constant := 16#8002801D#;
   TYPE_E_UNDEFINEDTYPE : constant := 16#80028027#;
   TYPE_E_QUALIFIEDNAMEDISALLOWED : constant := 16#80028028#;
   TYPE_E_INVALIDSTATE : constant := 16#80028029#;
   TYPE_E_WRONGTYPEKIND : constant := 16#8002802A#;
   TYPE_E_ELEMENTNOTFOUND : constant := 16#8002802B#;
   TYPE_E_AMBIGUOUSNAME : constant := 16#8002802C#;
   TYPE_E_NAMECONFLICT : constant := 16#8002802D#;
   TYPE_E_UNKNOWNLCID : constant := 16#8002802E#;
   TYPE_E_DLLFUNCTIONNOTFOUND : constant := 16#8002802F#;
   TYPE_E_BADMODULEKIND : constant := 16#800288BD#;
   TYPE_E_SIZETOOBIG : constant := 16#800288C5#;
   TYPE_E_DUPLICATEID : constant := 16#800288C6#;
   TYPE_E_INVALIDID : constant := 16#800288CF#;
   TYPE_E_TYPEMISMATCH : constant := 16#80028CA0#;
   TYPE_E_OUTOFBOUNDS : constant := 16#80028CA1#;
   TYPE_E_IOERROR : constant := 16#80028CA2#;
   TYPE_E_CANTCREATETMPFILE : constant := 16#80028CA3#;
   TYPE_E_CANTLOADLIBRARY : constant := 16#80029C4A#;
   TYPE_E_INCONSISTENTPROPFUNCS : constant := 16#80029C83#;
   TYPE_E_CIRCULARTYPE : constant := 16#80029C84#;
   STG_E_INVALIDFUNCTION : constant := 16#80030001#;
   STG_E_FILENOTFOUND : constant := 16#80030002#;
   STG_E_PATHNOTFOUND : constant := 16#80030003#;
   STG_E_TOOMANYOPENFILES : constant := 16#80030004#;
   STG_E_ACCESSDENIED : constant := 16#80030005#;
   STG_E_INVALIDHANDLE : constant := 16#80030006#;
   STG_E_INSUFFICIENTMEMORY : constant := 16#80030008#;
   STG_E_INVALIDPOINTER : constant := 16#80030009#;
   STG_E_NOMOREFILES : constant := 16#80030012#;
   STG_E_DISKISWRITEPROTECTED : constant := 16#80030013#;
   STG_E_SEEKERROR : constant := 16#80030019#;
   STG_E_WRITEFAULT : constant := 16#8003001D#;
   STG_E_READFAULT : constant := 16#8003001E#;
   STG_E_SHAREVIOLATION : constant := 16#80030020#;
   STG_E_LOCKVIOLATION : constant := 16#80030021#;
   STG_E_FILEALREADYEXISTS : constant := 16#80030050#;
   STG_E_INVALIDPARAMETER : constant := 16#80030057#;
   STG_E_MEDIUMFULL : constant := 16#80030070#;
   STG_E_PROPSETMISMATCHED : constant := 16#800300F0#;
   STG_E_ABNORMALAPIEXIT : constant := 16#800300FA#;
   STG_E_INVALIDHEADER : constant := 16#800300FB#;
   STG_E_INVALIDNAME : constant := 16#800300FC#;
   STG_E_UNKNOWN : constant := 16#800300FD#;
   STG_E_UNIMPLEMENTEDFUNCTION : constant := 16#800300FE#;
   STG_E_INVALIDFLAG : constant := 16#800300FF#;
   STG_E_INUSE : constant := 16#80030100#;
   STG_E_NOTCURRENT : constant := 16#80030101#;
   STG_E_REVERTED : constant := 16#80030102#;
   STG_E_CANTSAVE : constant := 16#80030103#;
   STG_E_OLDFORMAT : constant := 16#80030104#;
   STG_E_OLDDLL : constant := 16#80030105#;
   STG_E_SHAREREQUIRED : constant := 16#80030106#;
   STG_E_NOTFILEBASEDSTORAGE : constant := 16#80030107#;
   STG_E_EXTANTMARSHALLINGS : constant := 16#80030108#;
   STG_E_DOCFILECORRUPT : constant := 16#80030109#;
   STG_E_BADBASEADDRESS : constant := 16#80030110#;
   STG_E_DOCFILETOOLARGE : constant := 16#80030111#;
   STG_E_NOTSIMPLEFORMAT : constant := 16#80030112#;
   STG_E_INCOMPLETE : constant := 16#80030201#;
   STG_E_TERMINATED : constant := 16#80030202#;
   STG_S_CONVERTED : constant := 16#00030200#;
   STG_S_BLOCK : constant := 16#00030201#;
   STG_S_RETRYNOW : constant := 16#00030202#;
   STG_S_MONITORING : constant := 16#00030203#;
   STG_S_MULTIPLEOPENS : constant := 16#00030204#;
   STG_S_CONSOLIDATIONFAILED : constant := 16#00030205#;
   STG_S_CANNOTCONSOLIDATE : constant := 16#00030206#;
   STG_S_POWER_CYCLE_REQUIRED : constant := 16#00030207#;
   STG_E_FIRMWARE_SLOT_INVALID : constant := 16#80030208#;
   STG_E_FIRMWARE_IMAGE_INVALID : constant := 16#80030209#;
   STG_E_DEVICE_UNRESPONSIVE : constant := 16#8003020A#;
   STG_E_STATUS_COPY_PROTECTION_FAILURE : constant := 16#80030305#;
   STG_E_CSS_AUTHENTICATION_FAILURE : constant := 16#80030306#;
   STG_E_CSS_KEY_NOT_PRESENT : constant := 16#80030307#;
   STG_E_CSS_KEY_NOT_ESTABLISHED : constant := 16#80030308#;
   STG_E_CSS_SCRAMBLED_SECTOR : constant := 16#80030309#;
   STG_E_CSS_REGION_MISMATCH : constant := 16#8003030A#;
   STG_E_RESETS_EXHAUSTED : constant := 16#8003030B#;
   RPC_E_CALL_REJECTED : constant := 16#80010001#;
   RPC_E_CALL_CANCELED : constant := 16#80010002#;
   RPC_E_CANTPOST_INSENDCALL : constant := 16#80010003#;
   RPC_E_CANTCALLOUT_INASYNCCALL : constant := 16#80010004#;
   RPC_E_CANTCALLOUT_INEXTERNALCALL : constant := 16#80010005#;
   RPC_E_CONNECTION_TERMINATED : constant := 16#80010006#;
   RPC_E_SERVER_DIED : constant := 16#80010007#;
   RPC_E_CLIENT_DIED : constant := 16#80010008#;
   RPC_E_INVALID_DATAPACKET : constant := 16#80010009#;
   RPC_E_CANTTRANSMIT_CALL : constant := 16#8001000A#;
   RPC_E_CLIENT_CANTMARSHAL_DATA : constant := 16#8001000B#;
   RPC_E_CLIENT_CANTUNMARSHAL_DATA : constant := 16#8001000C#;
   RPC_E_SERVER_CANTMARSHAL_DATA : constant := 16#8001000D#;
   RPC_E_SERVER_CANTUNMARSHAL_DATA : constant := 16#8001000E#;
   RPC_E_INVALID_DATA : constant := 16#8001000F#;
   RPC_E_INVALID_PARAMETER : constant := 16#80010010#;
   RPC_E_CANTCALLOUT_AGAIN : constant := 16#80010011#;
   RPC_E_SERVER_DIED_DNE : constant := 16#80010012#;
   RPC_E_SYS_CALL_FAILED : constant := 16#80010100#;
   RPC_E_OUT_OF_RESOURCES : constant := 16#80010101#;
   RPC_E_ATTEMPTED_MULTITHREAD : constant := 16#80010102#;
   RPC_E_NOT_REGISTERED : constant := 16#80010103#;
   RPC_E_FAULT : constant := 16#80010104#;
   RPC_E_SERVERFAULT : constant := 16#80010105#;
   RPC_E_CHANGED_MODE : constant := 16#80010106#;
   RPC_E_INVALIDMETHOD : constant := 16#80010107#;
   RPC_E_DISCONNECTED : constant := 16#80010108#;
   RPC_E_RETRY : constant := 16#80010109#;
   RPC_E_SERVERCALL_RETRYLATER : constant := 16#8001010A#;
   RPC_E_SERVERCALL_REJECTED : constant := 16#8001010B#;
   RPC_E_INVALID_CALLDATA : constant := 16#8001010C#;
   RPC_E_CANTCALLOUT_ININPUTSYNCCALL : constant := 16#8001010D#;
   RPC_E_WRONG_THREAD : constant := 16#8001010E#;
   RPC_E_THREAD_NOT_INIT : constant := 16#8001010F#;
   RPC_E_VERSION_MISMATCH : constant := 16#80010110#;
   RPC_E_INVALID_HEADER : constant := 16#80010111#;
   RPC_E_INVALID_EXTENSION : constant := 16#80010112#;
   RPC_E_INVALID_IPID : constant := 16#80010113#;
   RPC_E_INVALID_OBJECT : constant := 16#80010114#;
   RPC_S_CALLPENDING : constant := 16#80010115#;
   RPC_S_WAITONTIMER : constant := 16#80010116#;
   RPC_E_CALL_COMPLETE : constant := 16#80010117#;
   RPC_E_UNSECURE_CALL : constant := 16#80010118#;
   RPC_E_TOO_LATE : constant := 16#80010119#;
   RPC_E_NO_GOOD_SECURITY_PACKAGES : constant := 16#8001011A#;
   RPC_E_ACCESS_DENIED : constant := 16#8001011B#;
   RPC_E_REMOTE_DISABLED : constant := 16#8001011C#;
   RPC_E_INVALID_OBJREF : constant := 16#8001011D#;
   RPC_E_NO_CONTEXT : constant := 16#8001011E#;
   RPC_E_TIMEOUT : constant := 16#8001011F#;
   RPC_E_NO_SYNC : constant := 16#80010120#;
   RPC_E_FULLSIC_REQUIRED : constant := 16#80010121#;
   RPC_E_INVALID_STD_NAME : constant := 16#80010122#;
   CO_E_FAILEDTOIMPERSONATE : constant := 16#80010123#;
   CO_E_FAILEDTOGETSECCTX : constant := 16#80010124#;
   CO_E_FAILEDTOOPENTHREADTOKEN : constant := 16#80010125#;
   CO_E_FAILEDTOGETTOKENINFO : constant := 16#80010126#;
   CO_E_TRUSTEEDOESNTMATCHCLIENT : constant := 16#80010127#;
   CO_E_FAILEDTOQUERYCLIENTBLANKET : constant := 16#80010128#;
   CO_E_FAILEDTOSETDACL : constant := 16#80010129#;
   CO_E_ACCESSCHECKFAILED : constant := 16#8001012A#;
   CO_E_NETACCESSAPIFAILED : constant := 16#8001012B#;
   CO_E_WRONGTRUSTEENAMESYNTAX : constant := 16#8001012C#;
   CO_E_INVALIDSID : constant := 16#8001012D#;
   CO_E_CONVERSIONFAILED : constant := 16#8001012E#;
   CO_E_NOMATCHINGSIDFOUND : constant := 16#8001012F#;
   CO_E_LOOKUPACCSIDFAILED : constant := 16#80010130#;
   CO_E_NOMATCHINGNAMEFOUND : constant := 16#80010131#;
   CO_E_LOOKUPACCNAMEFAILED : constant := 16#80010132#;
   CO_E_SETSERLHNDLFAILED : constant := 16#80010133#;
   CO_E_FAILEDTOGETWINDIR : constant := 16#80010134#;
   CO_E_PATHTOOLONG : constant := 16#80010135#;
   CO_E_FAILEDTOGENUUID : constant := 16#80010136#;
   CO_E_FAILEDTOCREATEFILE : constant := 16#80010137#;
   CO_E_FAILEDTOCLOSEHANDLE : constant := 16#80010138#;
   CO_E_EXCEEDSYSACLLIMIT : constant := 16#80010139#;
   CO_E_ACESINWRONGORDER : constant := 16#8001013A#;
   CO_E_INCOMPATIBLESTREAMVERSION : constant := 16#8001013B#;
   CO_E_FAILEDTOOPENPROCESSTOKEN : constant := 16#8001013C#;
   CO_E_DECODEFAILED : constant := 16#8001013D#;
   CO_E_ACNOTINITIALIZED : constant := 16#8001013F#;
   CO_E_CANCEL_DISABLED : constant := 16#80010140#;
   RPC_E_UNEXPECTED : constant := 16#8001FFFF#;
   ERROR_AUDITING_DISABLED : constant := 16#C0090001#;
   ERROR_ALL_SIDS_FILTERED : constant := 16#C0090002#;
   ERROR_BIZRULES_NOT_ENABLED : constant := 16#C0090003#;
   NTE_BAD_UID : constant := 16#80090001#;
   NTE_BAD_HASH : constant := 16#80090002#;
   NTE_BAD_KEY : constant := 16#80090003#;
   NTE_BAD_LEN : constant := 16#80090004#;
   NTE_BAD_DATA : constant := 16#80090005#;
   NTE_BAD_SIGNATURE : constant := 16#80090006#;
   NTE_BAD_VER : constant := 16#80090007#;
   NTE_BAD_ALGID : constant := 16#80090008#;
   NTE_BAD_FLAGS : constant := 16#80090009#;
   NTE_BAD_TYPE : constant := 16#8009000A#;
   NTE_BAD_KEY_STATE : constant := 16#8009000B#;
   NTE_BAD_HASH_STATE : constant := 16#8009000C#;
   NTE_NO_KEY : constant := 16#8009000D#;
   NTE_NO_MEMORY : constant := 16#8009000E#;
   NTE_EXISTS : constant := 16#8009000F#;
   NTE_PERM : constant := 16#80090010#;
   NTE_NOT_FOUND : constant := 16#80090011#;
   NTE_DOUBLE_ENCRYPT : constant := 16#80090012#;
   NTE_BAD_PROVIDER : constant := 16#80090013#;
   NTE_BAD_PROV_TYPE : constant := 16#80090014#;
   NTE_BAD_PUBLIC_KEY : constant := 16#80090015#;
   NTE_BAD_KEYSET : constant := 16#80090016#;
   NTE_PROV_TYPE_NOT_DEF : constant := 16#80090017#;
   NTE_PROV_TYPE_ENTRY_BAD : constant := 16#80090018#;
   NTE_KEYSET_NOT_DEF : constant := 16#80090019#;
   NTE_KEYSET_ENTRY_BAD : constant := 16#8009001A#;
   NTE_PROV_TYPE_NO_MATCH : constant := 16#8009001B#;
   NTE_SIGNATURE_FILE_BAD : constant := 16#8009001C#;
   NTE_PROVIDER_DLL_FAIL : constant := 16#8009001D#;
   NTE_PROV_DLL_NOT_FOUND : constant := 16#8009001E#;
   NTE_BAD_KEYSET_PARAM : constant := 16#8009001F#;
   NTE_FAIL : constant := 16#80090020#;
   NTE_SYS_ERR : constant := 16#80090021#;
   NTE_SILENT_CONTEXT : constant := 16#80090022#;
   NTE_TOKEN_KEYSET_STORAGE_FULL : constant := 16#80090023#;
   NTE_TEMPORARY_PROFILE : constant := 16#80090024#;
   NTE_FIXEDPARAMETER : constant := 16#80090025#;
   NTE_INVALID_HANDLE : constant := 16#80090026#;
   NTE_INVALID_PARAMETER : constant := 16#80090027#;
   NTE_BUFFER_TOO_SMALL : constant := 16#80090028#;
   NTE_NOT_SUPPORTED : constant := 16#80090029#;
   NTE_NO_MORE_ITEMS : constant := 16#8009002A#;
   NTE_BUFFERS_OVERLAP : constant := 16#8009002B#;
   NTE_DECRYPTION_FAILURE : constant := 16#8009002C#;
   NTE_INTERNAL_ERROR : constant := 16#8009002D#;
   NTE_UI_REQUIRED : constant := 16#8009002E#;
   NTE_HMAC_NOT_SUPPORTED : constant := 16#8009002F#;
   NTE_DEVICE_NOT_READY : constant := 16#80090030#;
   NTE_AUTHENTICATION_IGNORED : constant := 16#80090031#;
   NTE_VALIDATION_FAILED : constant := 16#80090032#;
   NTE_INCORRECT_PASSWORD : constant := 16#80090033#;
   NTE_ENCRYPTION_FAILURE : constant := 16#80090034#;
   NTE_DEVICE_NOT_FOUND : constant := 16#80090035#;
   NTE_USER_CANCELLED : constant := 16#80090036#;
   NTE_PASSWORD_CHANGE_REQUIRED : constant := 16#80090037#;
   NTE_NOT_ACTIVE_CONSOLE : constant := 16#80090038#;
   SEC_E_INSUFFICIENT_MEMORY : constant := 16#80090300#;
   SEC_E_INVALID_HANDLE : constant := 16#80090301#;
   SEC_E_UNSUPPORTED_FUNCTION : constant := 16#80090302#;
   SEC_E_TARGET_UNKNOWN : constant := 16#80090303#;
   SEC_E_INTERNAL_ERROR : constant := 16#80090304#;
   SEC_E_SECPKG_NOT_FOUND : constant := 16#80090305#;
   SEC_E_NOT_OWNER : constant := 16#80090306#;
   SEC_E_CANNOT_INSTALL : constant := 16#80090307#;
   SEC_E_INVALID_TOKEN : constant := 16#80090308#;
   SEC_E_CANNOT_PACK : constant := 16#80090309#;
   SEC_E_QOP_NOT_SUPPORTED : constant := 16#8009030A#;
   SEC_E_NO_IMPERSONATION : constant := 16#8009030B#;
   SEC_E_LOGON_DENIED : constant := 16#8009030C#;
   SEC_E_UNKNOWN_CREDENTIALS : constant := 16#8009030D#;
   SEC_E_NO_CREDENTIALS : constant := 16#8009030E#;
   SEC_E_MESSAGE_ALTERED : constant := 16#8009030F#;
   SEC_E_OUT_OF_SEQUENCE : constant := 16#80090310#;
   SEC_E_NO_AUTHENTICATING_AUTHORITY : constant := 16#80090311#;
   SEC_I_CONTINUE_NEEDED : constant := 16#00090312#;
   SEC_I_COMPLETE_NEEDED : constant := 16#00090313#;
   SEC_I_COMPLETE_AND_CONTINUE : constant := 16#00090314#;
   SEC_I_LOCAL_LOGON : constant := 16#00090315#;
   SEC_I_GENERIC_EXTENSION_RECEIVED : constant := 16#00090316#;
   SEC_E_BAD_PKGID : constant := 16#80090316#;
   SEC_E_CONTEXT_EXPIRED : constant := 16#80090317#;
   SEC_I_CONTEXT_EXPIRED : constant := 16#00090317#;
   SEC_E_INCOMPLETE_MESSAGE : constant := 16#80090318#;
   SEC_E_INCOMPLETE_CREDENTIALS : constant := 16#80090320#;
   SEC_E_BUFFER_TOO_SMALL : constant := 16#80090321#;
   SEC_I_INCOMPLETE_CREDENTIALS : constant := 16#00090320#;
   SEC_I_RENEGOTIATE : constant := 16#00090321#;
   SEC_E_WRONG_PRINCIPAL : constant := 16#80090322#;
   SEC_I_NO_LSA_CONTEXT : constant := 16#00090323#;
   SEC_E_TIME_SKEW : constant := 16#80090324#;
   SEC_E_UNTRUSTED_ROOT : constant := 16#80090325#;
   SEC_E_ILLEGAL_MESSAGE : constant := 16#80090326#;
   SEC_E_CERT_UNKNOWN : constant := 16#80090327#;
   SEC_E_CERT_EXPIRED : constant := 16#80090328#;
   SEC_E_ENCRYPT_FAILURE : constant := 16#80090329#;
   SEC_E_DECRYPT_FAILURE : constant := 16#80090330#;
   SEC_E_ALGORITHM_MISMATCH : constant := 16#80090331#;
   SEC_E_SECURITY_QOS_FAILED : constant := 16#80090332#;
   SEC_E_UNFINISHED_CONTEXT_DELETED : constant := 16#80090333#;
   SEC_E_NO_TGT_REPLY : constant := 16#80090334#;
   SEC_E_NO_IP_ADDRESSES : constant := 16#80090335#;
   SEC_E_WRONG_CREDENTIAL_HANDLE : constant := 16#80090336#;
   SEC_E_CRYPTO_SYSTEM_INVALID : constant := 16#80090337#;
   SEC_E_MAX_REFERRALS_EXCEEDED : constant := 16#80090338#;
   SEC_E_MUST_BE_KDC : constant := 16#80090339#;
   SEC_E_STRONG_CRYPTO_NOT_SUPPORTED : constant := 16#8009033A#;
   SEC_E_TOO_MANY_PRINCIPALS : constant := 16#8009033B#;
   SEC_E_NO_PA_DATA : constant := 16#8009033C#;
   SEC_E_PKINIT_NAME_MISMATCH : constant := 16#8009033D#;
   SEC_E_SMARTCARD_LOGON_REQUIRED : constant := 16#8009033E#;
   SEC_E_SHUTDOWN_IN_PROGRESS : constant := 16#8009033F#;
   SEC_E_KDC_INVALID_REQUEST : constant := 16#80090340#;
   SEC_E_KDC_UNABLE_TO_REFER : constant := 16#80090341#;
   SEC_E_KDC_UNKNOWN_ETYPE : constant := 16#80090342#;
   SEC_E_UNSUPPORTED_PREAUTH : constant := 16#80090343#;
   SEC_E_DELEGATION_REQUIRED : constant := 16#80090345#;
   SEC_E_BAD_BINDINGS : constant := 16#80090346#;
   SEC_E_MULTIPLE_ACCOUNTS : constant := 16#80090347#;
   SEC_E_NO_KERB_KEY : constant := 16#80090348#;
   SEC_E_CERT_WRONG_USAGE : constant := 16#80090349#;
   SEC_E_DOWNGRADE_DETECTED : constant := 16#80090350#;
   SEC_E_SMARTCARD_CERT_REVOKED : constant := 16#80090351#;
   SEC_E_ISSUING_CA_UNTRUSTED : constant := 16#80090352#;
   SEC_E_REVOCATION_OFFLINE_C : constant := 16#80090353#;
   SEC_E_PKINIT_CLIENT_FAILURE : constant := 16#80090354#;
   SEC_E_SMARTCARD_CERT_EXPIRED : constant := 16#80090355#;
   SEC_E_NO_S4U_PROT_SUPPORT : constant := 16#80090356#;
   SEC_E_CROSSREALM_DELEGATION_FAILURE : constant := 16#80090357#;
   SEC_E_REVOCATION_OFFLINE_KDC : constant := 16#80090358#;
   SEC_E_ISSUING_CA_UNTRUSTED_KDC : constant := 16#80090359#;
   SEC_E_KDC_CERT_EXPIRED : constant := 16#8009035A#;
   SEC_E_KDC_CERT_REVOKED : constant := 16#8009035B#;
   SEC_I_SIGNATURE_NEEDED : constant := 16#0009035C#;
   SEC_E_INVALID_PARAMETER : constant := 16#8009035D#;
   SEC_E_DELEGATION_POLICY : constant := 16#8009035E#;
   SEC_E_POLICY_NLTM_ONLY : constant := 16#8009035F#;
   SEC_I_NO_RENEGOTIATION : constant := 16#00090360#;
   SEC_E_NO_CONTEXT : constant := 16#80090361#;
   SEC_E_PKU2U_CERT_FAILURE : constant := 16#80090362#;
   SEC_E_MUTUAL_AUTH_FAILED : constant := 16#80090363#;
   SEC_I_MESSAGE_FRAGMENT : constant := 16#00090364#;
   SEC_E_ONLY_HTTPS_ALLOWED : constant := 16#80090365#;
   SEC_I_CONTINUE_NEEDED_MESSAGE_OK : constant := 16#00090366#;
   SEC_E_APPLICATION_PROTOCOL_MISMATCH : constant := 16#80090367#;
   SEC_I_ASYNC_CALL_PENDING : constant := 16#00090368#;
   SEC_E_INVALID_UPN_NAME : constant := 16#80090369#;
   SEC_E_EXT_BUFFER_TOO_SMALL : constant := 16#8009036A#;
   SEC_E_INSUFFICIENT_BUFFERS : constant := 16#8009036B#;
   CRYPT_E_MSG_ERROR : constant := 16#80091001#;
   CRYPT_E_UNKNOWN_ALGO : constant := 16#80091002#;
   CRYPT_E_OID_FORMAT : constant := 16#80091003#;
   CRYPT_E_INVALID_MSG_TYPE : constant := 16#80091004#;
   CRYPT_E_UNEXPECTED_ENCODING : constant := 16#80091005#;
   CRYPT_E_AUTH_ATTR_MISSING : constant := 16#80091006#;
   CRYPT_E_HASH_VALUE : constant := 16#80091007#;
   CRYPT_E_INVALID_INDEX : constant := 16#80091008#;
   CRYPT_E_ALREADY_DECRYPTED : constant := 16#80091009#;
   CRYPT_E_NOT_DECRYPTED : constant := 16#8009100A#;
   CRYPT_E_RECIPIENT_NOT_FOUND : constant := 16#8009100B#;
   CRYPT_E_CONTROL_TYPE : constant := 16#8009100C#;
   CRYPT_E_ISSUER_SERIALNUMBER : constant := 16#8009100D#;
   CRYPT_E_SIGNER_NOT_FOUND : constant := 16#8009100E#;
   CRYPT_E_ATTRIBUTES_MISSING : constant := 16#8009100F#;
   CRYPT_E_STREAM_MSG_NOT_READY : constant := 16#80091010#;
   CRYPT_E_STREAM_INSUFFICIENT_DATA : constant := 16#80091011#;
   CRYPT_I_NEW_PROTECTION_REQUIRED : constant := 16#00091012#;
   CRYPT_E_BAD_LEN : constant := 16#80092001#;
   CRYPT_E_BAD_ENCODE : constant := 16#80092002#;
   CRYPT_E_FILE_ERROR : constant := 16#80092003#;
   CRYPT_E_NOT_FOUND : constant := 16#80092004#;
   CRYPT_E_EXISTS : constant := 16#80092005#;
   CRYPT_E_NO_PROVIDER : constant := 16#80092006#;
   CRYPT_E_SELF_SIGNED : constant := 16#80092007#;
   CRYPT_E_DELETED_PREV : constant := 16#80092008#;
   CRYPT_E_NO_MATCH : constant := 16#80092009#;
   CRYPT_E_UNEXPECTED_MSG_TYPE : constant := 16#8009200A#;
   CRYPT_E_NO_KEY_PROPERTY : constant := 16#8009200B#;
   CRYPT_E_NO_DECRYPT_CERT : constant := 16#8009200C#;
   CRYPT_E_BAD_MSG : constant := 16#8009200D#;
   CRYPT_E_NO_SIGNER : constant := 16#8009200E#;
   CRYPT_E_PENDING_CLOSE : constant := 16#8009200F#;
   CRYPT_E_REVOKED : constant := 16#80092010#;
   CRYPT_E_NO_REVOCATION_DLL : constant := 16#80092011#;
   CRYPT_E_NO_REVOCATION_CHECK : constant := 16#80092012#;
   CRYPT_E_REVOCATION_OFFLINE : constant := 16#80092013#;
   CRYPT_E_NOT_IN_REVOCATION_DATABASE : constant := 16#80092014#;
   CRYPT_E_INVALID_NUMERIC_STRING : constant := 16#80092020#;
   CRYPT_E_INVALID_PRINTABLE_STRING : constant := 16#80092021#;
   CRYPT_E_INVALID_IA5_STRING : constant := 16#80092022#;
   CRYPT_E_INVALID_X500_STRING : constant := 16#80092023#;
   CRYPT_E_NOT_CHAR_STRING : constant := 16#80092024#;
   CRYPT_E_FILERESIZED : constant := 16#80092025#;
   CRYPT_E_SECURITY_SETTINGS : constant := 16#80092026#;
   CRYPT_E_NO_VERIFY_USAGE_DLL : constant := 16#80092027#;
   CRYPT_E_NO_VERIFY_USAGE_CHECK : constant := 16#80092028#;
   CRYPT_E_VERIFY_USAGE_OFFLINE : constant := 16#80092029#;
   CRYPT_E_NOT_IN_CTL : constant := 16#8009202A#;
   CRYPT_E_NO_TRUSTED_SIGNER : constant := 16#8009202B#;
   CRYPT_E_MISSING_PUBKEY_PARA : constant := 16#8009202C#;
   CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND : constant := 16#8009202D#;
   CRYPT_E_OSS_ERROR : constant := 16#80093000#;
   OSS_MORE_BUF : constant := 16#80093001#;
   OSS_NEGATIVE_UINTEGER : constant := 16#80093002#;
   OSS_PDU_RANGE : constant := 16#80093003#;
   OSS_MORE_INPUT : constant := 16#80093004#;
   OSS_DATA_ERROR : constant := 16#80093005#;
   OSS_BAD_ARG : constant := 16#80093006#;
   OSS_BAD_VERSION : constant := 16#80093007#;
   OSS_OUT_MEMORY : constant := 16#80093008#;
   OSS_PDU_MISMATCH : constant := 16#80093009#;
   OSS_LIMITED : constant := 16#8009300A#;
   OSS_BAD_PTR : constant := 16#8009300B#;
   OSS_BAD_TIME : constant := 16#8009300C#;
   OSS_INDEFINITE_NOT_SUPPORTED : constant := 16#8009300D#;
   OSS_MEM_ERROR : constant := 16#8009300E#;
   OSS_BAD_TABLE : constant := 16#8009300F#;
   OSS_TOO_LONG : constant := 16#80093010#;
   OSS_CONSTRAINT_VIOLATED : constant := 16#80093011#;
   OSS_FATAL_ERROR : constant := 16#80093012#;
   OSS_ACCESS_SERIALIZATION_ERROR : constant := 16#80093013#;
   OSS_NULL_TBL : constant := 16#80093014#;
   OSS_NULL_FCN : constant := 16#80093015#;
   OSS_BAD_ENCRULES : constant := 16#80093016#;
   OSS_UNAVAIL_ENCRULES : constant := 16#80093017#;
   OSS_CANT_OPEN_TRACE_WINDOW : constant := 16#80093018#;
   OSS_UNIMPLEMENTED : constant := 16#80093019#;
   OSS_OID_DLL_NOT_LINKED : constant := 16#8009301A#;
   OSS_CANT_OPEN_TRACE_FILE : constant := 16#8009301B#;
   OSS_TRACE_FILE_ALREADY_OPEN : constant := 16#8009301C#;
   OSS_TABLE_MISMATCH : constant := 16#8009301D#;
   OSS_TYPE_NOT_SUPPORTED : constant := 16#8009301E#;
   OSS_REAL_DLL_NOT_LINKED : constant := 16#8009301F#;
   OSS_REAL_CODE_NOT_LINKED : constant := 16#80093020#;
   OSS_OUT_OF_RANGE : constant := 16#80093021#;
   OSS_COPIER_DLL_NOT_LINKED : constant := 16#80093022#;
   OSS_CONSTRAINT_DLL_NOT_LINKED : constant := 16#80093023#;
   OSS_COMPARATOR_DLL_NOT_LINKED : constant := 16#80093024#;
   OSS_COMPARATOR_CODE_NOT_LINKED : constant := 16#80093025#;
   OSS_MEM_MGR_DLL_NOT_LINKED : constant := 16#80093026#;
   OSS_PDV_DLL_NOT_LINKED : constant := 16#80093027#;
   OSS_PDV_CODE_NOT_LINKED : constant := 16#80093028#;
   OSS_API_DLL_NOT_LINKED : constant := 16#80093029#;
   OSS_BERDER_DLL_NOT_LINKED : constant := 16#8009302A#;
   OSS_PER_DLL_NOT_LINKED : constant := 16#8009302B#;
   OSS_OPEN_TYPE_ERROR : constant := 16#8009302C#;
   OSS_MUTEX_NOT_CREATED : constant := 16#8009302D#;
   OSS_CANT_CLOSE_TRACE_FILE : constant := 16#8009302E#;
   CRYPT_E_ASN1_ERROR : constant := 16#80093100#;
   CRYPT_E_ASN1_INTERNAL : constant := 16#80093101#;
   CRYPT_E_ASN1_EOD : constant := 16#80093102#;
   CRYPT_E_ASN1_CORRUPT : constant := 16#80093103#;
   CRYPT_E_ASN1_LARGE : constant := 16#80093104#;
   CRYPT_E_ASN1_CONSTRAINT : constant := 16#80093105#;
   CRYPT_E_ASN1_MEMORY : constant := 16#80093106#;
   CRYPT_E_ASN1_OVERFLOW : constant := 16#80093107#;
   CRYPT_E_ASN1_BADPDU : constant := 16#80093108#;
   CRYPT_E_ASN1_BADARGS : constant := 16#80093109#;
   CRYPT_E_ASN1_BADREAL : constant := 16#8009310A#;
   CRYPT_E_ASN1_BADTAG : constant := 16#8009310B#;
   CRYPT_E_ASN1_CHOICE : constant := 16#8009310C#;
   CRYPT_E_ASN1_RULE : constant := 16#8009310D#;
   CRYPT_E_ASN1_UTF8 : constant := 16#8009310E#;
   CRYPT_E_ASN1_PDU_TYPE : constant := 16#80093133#;
   CRYPT_E_ASN1_NYI : constant := 16#80093134#;
   CRYPT_E_ASN1_EXTENDED : constant := 16#80093201#;
   CRYPT_E_ASN1_NOEOD : constant := 16#80093202#;
   CERTSRV_E_BAD_REQUESTSUBJECT : constant := 16#80094001#;
   CERTSRV_E_NO_REQUEST : constant := 16#80094002#;
   CERTSRV_E_BAD_REQUESTSTATUS : constant := 16#80094003#;
   CERTSRV_E_PROPERTY_EMPTY : constant := 16#80094004#;
   CERTSRV_E_INVALID_CA_CERTIFICATE : constant := 16#80094005#;
   CERTSRV_E_SERVER_SUSPENDED : constant := 16#80094006#;
   CERTSRV_E_ENCODING_LENGTH : constant := 16#80094007#;
   CERTSRV_E_ROLECONFLICT : constant := 16#80094008#;
   CERTSRV_E_RESTRICTEDOFFICER : constant := 16#80094009#;
   CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED : constant := 16#8009400A#;
   CERTSRV_E_NO_VALID_KRA : constant := 16#8009400B#;
   CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL : constant := 16#8009400C#;
   CERTSRV_E_NO_CAADMIN_DEFINED : constant := 16#8009400D#;
   CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE : constant := 16#8009400E#;
   CERTSRV_E_NO_DB_SESSIONS : constant := 16#8009400F#;
   CERTSRV_E_ALIGNMENT_FAULT : constant := 16#80094010#;
   CERTSRV_E_ENROLL_DENIED : constant := 16#80094011#;
   CERTSRV_E_TEMPLATE_DENIED : constant := 16#80094012#;
   CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE : constant := 16#80094013#;
   CERTSRV_E_ADMIN_DENIED_REQUEST : constant := 16#80094014#;
   CERTSRV_E_NO_POLICY_SERVER : constant := 16#80094015#;
   CERTSRV_E_WEAK_SIGNATURE_OR_KEY : constant := 16#80094016#;
   CERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED : constant := 16#80094017#;
   CERTSRV_E_ENCRYPTION_CERT_REQUIRED : constant := 16#80094018#;
   CERTSRV_E_UNSUPPORTED_CERT_TYPE : constant := 16#80094800#;
   CERTSRV_E_NO_CERT_TYPE : constant := 16#80094801#;
   CERTSRV_E_TEMPLATE_CONFLICT : constant := 16#80094802#;
   CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED : constant := 16#80094803#;
   CERTSRV_E_ARCHIVED_KEY_REQUIRED : constant := 16#80094804#;
   CERTSRV_E_SMIME_REQUIRED : constant := 16#80094805#;
   CERTSRV_E_BAD_RENEWAL_SUBJECT : constant := 16#80094806#;
   CERTSRV_E_BAD_TEMPLATE_VERSION : constant := 16#80094807#;
   CERTSRV_E_TEMPLATE_POLICY_REQUIRED : constant := 16#80094808#;
   CERTSRV_E_SIGNATURE_POLICY_REQUIRED : constant := 16#80094809#;
   CERTSRV_E_SIGNATURE_COUNT : constant := 16#8009480A#;
   CERTSRV_E_SIGNATURE_REJECTED : constant := 16#8009480B#;
   CERTSRV_E_ISSUANCE_POLICY_REQUIRED : constant := 16#8009480C#;
   CERTSRV_E_SUBJECT_UPN_REQUIRED : constant := 16#8009480D#;
   CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED : constant := 16#8009480E#;
   CERTSRV_E_SUBJECT_DNS_REQUIRED : constant := 16#8009480F#;
   CERTSRV_E_ARCHIVED_KEY_UNEXPECTED : constant := 16#80094810#;
   CERTSRV_E_KEY_LENGTH : constant := 16#80094811#;
   CERTSRV_E_SUBJECT_EMAIL_REQUIRED : constant := 16#80094812#;
   CERTSRV_E_UNKNOWN_CERT_TYPE : constant := 16#80094813#;
   CERTSRV_E_CERT_TYPE_OVERLAP : constant := 16#80094814#;
   CERTSRV_E_TOO_MANY_SIGNATURES : constant := 16#80094815#;
   CERTSRV_E_RENEWAL_BAD_PUBLIC_KEY : constant := 16#80094816#;
   CERTSRV_E_INVALID_EK : constant := 16#80094817#;
   CERTSRV_E_INVALID_IDBINDING : constant := 16#80094818#;
   CERTSRV_E_INVALID_ATTESTATION : constant := 16#80094819#;
   CERTSRV_E_KEY_ATTESTATION : constant := 16#8009481A#;
   CERTSRV_E_CORRUPT_KEY_ATTESTATION : constant := 16#8009481B#;
   CERTSRV_E_EXPIRED_CHALLENGE : constant := 16#8009481C#;
   CERTSRV_E_INVALID_RESPONSE : constant := 16#8009481D#;
   CERTSRV_E_INVALID_REQUESTID : constant := 16#8009481E#;
   CERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH : constant := 16#8009481F#;
   CERTSRV_E_PENDING_CLIENT_RESPONSE : constant := 16#80094820#;
   XENROLL_E_KEY_NOT_EXPORTABLE : constant := 16#80095000#;
   XENROLL_E_CANNOT_ADD_ROOT_CERT : constant := 16#80095001#;
   XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND : constant := 16#80095002#;
   XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH : constant := 16#80095003#;
   XENROLL_E_RESPONSE_KA_HASH_MISMATCH : constant := 16#80095004#;
   XENROLL_E_KEYSPEC_SMIME_MISMATCH : constant := 16#80095005#;
   TRUST_E_SYSTEM_ERROR : constant := 16#80096001#;
   TRUST_E_NO_SIGNER_CERT : constant := 16#80096002#;
   TRUST_E_COUNTER_SIGNER : constant := 16#80096003#;
   TRUST_E_CERT_SIGNATURE : constant := 16#80096004#;
   TRUST_E_TIME_STAMP : constant := 16#80096005#;
   TRUST_E_BAD_DIGEST : constant := 16#80096010#;
   TRUST_E_MALFORMED_SIGNATURE : constant := 16#80096011#;
   TRUST_E_BASIC_CONSTRAINTS : constant := 16#80096019#;
   TRUST_E_FINANCIAL_CRITERIA : constant := 16#8009601E#;
   MSSIPOTF_E_OUTOFMEMRANGE : constant := 16#80097001#;
   MSSIPOTF_E_CANTGETOBJECT : constant := 16#80097002#;
   MSSIPOTF_E_NOHEADTABLE : constant := 16#80097003#;
   MSSIPOTF_E_BAD_MAGICNUMBER : constant := 16#80097004#;
   MSSIPOTF_E_BAD_OFFSET_TABLE : constant := 16#80097005#;
   MSSIPOTF_E_TABLE_TAGORDER : constant := 16#80097006#;
   MSSIPOTF_E_TABLE_LONGWORD : constant := 16#80097007#;
   MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT : constant := 16#80097008#;
   MSSIPOTF_E_TABLES_OVERLAP : constant := 16#80097009#;
   MSSIPOTF_E_TABLE_PADBYTES : constant := 16#8009700A#;
   MSSIPOTF_E_FILETOOSMALL : constant := 16#8009700B#;
   MSSIPOTF_E_TABLE_CHECKSUM : constant := 16#8009700C#;
   MSSIPOTF_E_FILE_CHECKSUM : constant := 16#8009700D#;
   MSSIPOTF_E_FAILED_POLICY : constant := 16#80097010#;
   MSSIPOTF_E_FAILED_HINTS_CHECK : constant := 16#80097011#;
   MSSIPOTF_E_NOT_OPENTYPE : constant := 16#80097012#;
   MSSIPOTF_E_FILE : constant := 16#80097013#;
   MSSIPOTF_E_CRYPT : constant := 16#80097014#;
   MSSIPOTF_E_BADVERSION : constant := 16#80097015#;
   MSSIPOTF_E_DSIG_STRUCTURE : constant := 16#80097016#;
   MSSIPOTF_E_PCONST_CHECK : constant := 16#80097017#;
   MSSIPOTF_E_STRUCTURE : constant := 16#80097018#;
   ERROR_CRED_REQUIRES_CONFIRMATION : constant := 16#80097019#;
   NTE_OP_OK : constant := 0;
   TRUST_E_PROVIDER_UNKNOWN : constant := 16#800B0001#;
   TRUST_E_ACTION_UNKNOWN : constant := 16#800B0002#;
   TRUST_E_SUBJECT_FORM_UNKNOWN : constant := 16#800B0003#;
   TRUST_E_SUBJECT_NOT_TRUSTED : constant := 16#800B0004#;
   DIGSIG_E_ENCODE : constant := 16#800B0005#;
   DIGSIG_E_DECODE : constant := 16#800B0006#;
   DIGSIG_E_EXTENSIBILITY : constant := 16#800B0007#;
   DIGSIG_E_CRYPTO : constant := 16#800B0008#;
   PERSIST_E_SIZEDEFINITE : constant := 16#800B0009#;
   PERSIST_E_SIZEINDEFINITE : constant := 16#800B000A#;
   PERSIST_E_NOTSELFSIZING : constant := 16#800B000B#;
   TRUST_E_NOSIGNATURE : constant := 16#800B0100#;
   CERT_E_EXPIRED : constant := 16#800B0101#;
   CERT_E_VALIDITYPERIODNESTING : constant := 16#800B0102#;
   CERT_E_ROLE : constant := 16#800B0103#;
   CERT_E_PATHLENCONST : constant := 16#800B0104#;
   CERT_E_CRITICAL : constant := 16#800B0105#;
   CERT_E_PURPOSE : constant := 16#800B0106#;
   CERT_E_ISSUERCHAINING : constant := 16#800B0107#;
   CERT_E_MALFORMED : constant := 16#800B0108#;
   CERT_E_UNTRUSTEDROOT : constant := 16#800B0109#;
   CERT_E_CHAINING : constant := 16#800B010A#;
   TRUST_E_FAIL : constant := 16#800B010B#;
   CERT_E_REVOKED : constant := 16#800B010C#;
   CERT_E_UNTRUSTEDTESTROOT : constant := 16#800B010D#;
   CERT_E_REVOCATION_FAILURE : constant := 16#800B010E#;
   CERT_E_CN_NO_MATCH : constant := 16#800B010F#;
   CERT_E_WRONG_USAGE : constant := 16#800B0110#;
   TRUST_E_EXPLICIT_DISTRUST : constant := 16#800B0111#;
   CERT_E_UNTRUSTEDCA : constant := 16#800B0112#;
   CERT_E_INVALID_POLICY : constant := 16#800B0113#;
   CERT_E_INVALID_NAME : constant := 16#800B0114#;
   SPAPI_E_EXPECTED_SECTION_NAME : constant := 16#800F0000#;
   SPAPI_E_BAD_SECTION_NAME_LINE : constant := 16#800F0001#;
   SPAPI_E_SECTION_NAME_TOO_LONG : constant := 16#800F0002#;
   SPAPI_E_GENERAL_SYNTAX : constant := 16#800F0003#;
   SPAPI_E_WRONG_INF_STYLE : constant := 16#800F0100#;
   SPAPI_E_SECTION_NOT_FOUND : constant := 16#800F0101#;
   SPAPI_E_LINE_NOT_FOUND : constant := 16#800F0102#;
   SPAPI_E_NO_BACKUP : constant := 16#800F0103#;
   SPAPI_E_NO_ASSOCIATED_CLASS : constant := 16#800F0200#;
   SPAPI_E_CLASS_MISMATCH : constant := 16#800F0201#;
   SPAPI_E_DUPLICATE_FOUND : constant := 16#800F0202#;
   SPAPI_E_NO_DRIVER_SELECTED : constant := 16#800F0203#;
   SPAPI_E_KEY_DOES_NOT_EXIST : constant := 16#800F0204#;
   SPAPI_E_INVALID_DEVINST_NAME : constant := 16#800F0205#;
   SPAPI_E_INVALID_CLASS : constant := 16#800F0206#;
   SPAPI_E_DEVINST_ALREADY_EXISTS : constant := 16#800F0207#;
   SPAPI_E_DEVINFO_NOT_REGISTERED : constant := 16#800F0208#;
   SPAPI_E_INVALID_REG_PROPERTY : constant := 16#800F0209#;
   SPAPI_E_NO_INF : constant := 16#800F020A#;
   SPAPI_E_NO_SUCH_DEVINST : constant := 16#800F020B#;
   SPAPI_E_CANT_LOAD_CLASS_ICON : constant := 16#800F020C#;
   SPAPI_E_INVALID_CLASS_INSTALLER : constant := 16#800F020D#;
   SPAPI_E_DI_DO_DEFAULT : constant := 16#800F020E#;
   SPAPI_E_DI_NOFILECOPY : constant := 16#800F020F#;
   SPAPI_E_INVALID_HWPROFILE : constant := 16#800F0210#;
   SPAPI_E_NO_DEVICE_SELECTED : constant := 16#800F0211#;
   SPAPI_E_DEVINFO_LIST_LOCKED : constant := 16#800F0212#;
   SPAPI_E_DEVINFO_DATA_LOCKED : constant := 16#800F0213#;
   SPAPI_E_DI_BAD_PATH : constant := 16#800F0214#;
   SPAPI_E_NO_CLASSINSTALL_PARAMS : constant := 16#800F0215#;
   SPAPI_E_FILEQUEUE_LOCKED : constant := 16#800F0216#;
   SPAPI_E_BAD_SERVICE_INSTALLSECT : constant := 16#800F0217#;
   SPAPI_E_NO_CLASS_DRIVER_LIST : constant := 16#800F0218#;
   SPAPI_E_NO_ASSOCIATED_SERVICE : constant := 16#800F0219#;
   SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE : constant := 16#800F021A#;
   SPAPI_E_DEVICE_INTERFACE_ACTIVE : constant := 16#800F021B#;
   SPAPI_E_DEVICE_INTERFACE_REMOVED : constant := 16#800F021C#;
   SPAPI_E_BAD_INTERFACE_INSTALLSECT : constant := 16#800F021D#;
   SPAPI_E_NO_SUCH_INTERFACE_CLASS : constant := 16#800F021E#;
   SPAPI_E_INVALID_REFERENCE_STRING : constant := 16#800F021F#;
   SPAPI_E_INVALID_MACHINENAME : constant := 16#800F0220#;
   SPAPI_E_REMOTE_COMM_FAILURE : constant := 16#800F0221#;
   SPAPI_E_MACHINE_UNAVAILABLE : constant := 16#800F0222#;
   SPAPI_E_NO_CONFIGMGR_SERVICES : constant := 16#800F0223#;
   SPAPI_E_INVALID_PROPPAGE_PROVIDER : constant := 16#800F0224#;
   SPAPI_E_NO_SUCH_DEVICE_INTERFACE : constant := 16#800F0225#;
   SPAPI_E_DI_POSTPROCESSING_REQUIRED : constant := 16#800F0226#;
   SPAPI_E_INVALID_COINSTALLER : constant := 16#800F0227#;
   SPAPI_E_NO_COMPAT_DRIVERS : constant := 16#800F0228#;
   SPAPI_E_NO_DEVICE_ICON : constant := 16#800F0229#;
   SPAPI_E_INVALID_INF_LOGCONFIG : constant := 16#800F022A#;
   SPAPI_E_DI_DONT_INSTALL : constant := 16#800F022B#;
   SPAPI_E_INVALID_FILTER_DRIVER : constant := 16#800F022C#;
   SPAPI_E_NON_WINDOWS_NT_DRIVER : constant := 16#800F022D#;
   SPAPI_E_NON_WINDOWS_DRIVER : constant := 16#800F022E#;
   SPAPI_E_NO_CATALOG_FOR_OEM_INF : constant := 16#800F022F#;
   SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE : constant := 16#800F0230#;
   SPAPI_E_NOT_DISABLEABLE : constant := 16#800F0231#;
   SPAPI_E_CANT_REMOVE_DEVINST : constant := 16#800F0232#;
   SPAPI_E_INVALID_TARGET : constant := 16#800F0233#;
   SPAPI_E_DRIVER_NONNATIVE : constant := 16#800F0234#;
   SPAPI_E_IN_WOW64 : constant := 16#800F0235#;
   SPAPI_E_SET_SYSTEM_RESTORE_POINT : constant := 16#800F0236#;
   SPAPI_E_INCORRECTLY_COPIED_INF : constant := 16#800F0237#;
   SPAPI_E_SCE_DISABLED : constant := 16#800F0238#;
   SPAPI_E_UNKNOWN_EXCEPTION : constant := 16#800F0239#;
   SPAPI_E_PNP_REGISTRY_ERROR : constant := 16#800F023A#;
   SPAPI_E_REMOTE_REQUEST_UNSUPPORTED : constant := 16#800F023B#;
   SPAPI_E_NOT_AN_INSTALLED_OEM_INF : constant := 16#800F023C#;
   SPAPI_E_INF_IN_USE_BY_DEVICES : constant := 16#800F023D#;
   SPAPI_E_DI_FUNCTION_OBSOLETE : constant := 16#800F023E#;
   SPAPI_E_NO_AUTHENTICODE_CATALOG : constant := 16#800F023F#;
   SPAPI_E_AUTHENTICODE_DISALLOWED : constant := 16#800F0240#;
   SPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER : constant := 16#800F0241#;
   SPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED : constant := 16#800F0242#;
   SPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED : constant := 16#800F0243#;
   SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH : constant := 16#800F0244#;
   SPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE : constant := 16#800F0245#;
   SPAPI_E_DEVICE_INSTALLER_NOT_READY : constant := 16#800F0246#;
   SPAPI_E_DRIVER_STORE_ADD_FAILED : constant := 16#800F0247#;
   SPAPI_E_DEVICE_INSTALL_BLOCKED : constant := 16#800F0248#;
   SPAPI_E_DRIVER_INSTALL_BLOCKED : constant := 16#800F0249#;
   SPAPI_E_WRONG_INF_TYPE : constant := 16#800F024A#;
   SPAPI_E_FILE_HASH_NOT_IN_CATALOG : constant := 16#800F024B#;
   SPAPI_E_DRIVER_STORE_DELETE_FAILED : constant := 16#800F024C#;
   SPAPI_E_UNRECOVERABLE_STACK_OVERFLOW : constant := 16#800F0300#;
   SPAPI_E_ERROR_NOT_INSTALLED : constant := 16#800F1000#;
   SCARD_F_INTERNAL_ERROR : constant := 16#80100001#;
   SCARD_E_CANCELLED : constant := 16#80100002#;
   SCARD_E_INVALID_HANDLE : constant := 16#80100003#;
   SCARD_E_INVALID_PARAMETER : constant := 16#80100004#;
   SCARD_E_INVALID_TARGET : constant := 16#80100005#;
   SCARD_E_NO_MEMORY : constant := 16#80100006#;
   SCARD_F_WAITED_TOO_LONG : constant := 16#80100007#;
   SCARD_E_INSUFFICIENT_BUFFER : constant := 16#80100008#;
   SCARD_E_UNKNOWN_READER : constant := 16#80100009#;
   SCARD_E_TIMEOUT : constant := 16#8010000A#;
   SCARD_E_SHARING_VIOLATION : constant := 16#8010000B#;
   SCARD_E_NO_SMARTCARD : constant := 16#8010000C#;
   SCARD_E_UNKNOWN_CARD : constant := 16#8010000D#;
   SCARD_E_CANT_DISPOSE : constant := 16#8010000E#;
   SCARD_E_PROTO_MISMATCH : constant := 16#8010000F#;
   SCARD_E_NOT_READY : constant := 16#80100010#;
   SCARD_E_INVALID_VALUE : constant := 16#80100011#;
   SCARD_E_SYSTEM_CANCELLED : constant := 16#80100012#;
   SCARD_F_COMM_ERROR : constant := 16#80100013#;
   SCARD_F_UNKNOWN_ERROR : constant := 16#80100014#;
   SCARD_E_INVALID_ATR : constant := 16#80100015#;
   SCARD_E_NOT_TRANSACTED : constant := 16#80100016#;
   SCARD_E_READER_UNAVAILABLE : constant := 16#80100017#;
   SCARD_P_SHUTDOWN : constant := 16#80100018#;
   SCARD_E_PCI_TOO_SMALL : constant := 16#80100019#;
   SCARD_E_READER_UNSUPPORTED : constant := 16#8010001A#;
   SCARD_E_DUPLICATE_READER : constant := 16#8010001B#;
   SCARD_E_CARD_UNSUPPORTED : constant := 16#8010001C#;
   SCARD_E_NO_SERVICE : constant := 16#8010001D#;
   SCARD_E_SERVICE_STOPPED : constant := 16#8010001E#;
   SCARD_E_UNEXPECTED : constant := 16#8010001F#;
   SCARD_E_ICC_INSTALLATION : constant := 16#80100020#;
   SCARD_E_ICC_CREATEORDER : constant := 16#80100021#;
   SCARD_E_UNSUPPORTED_FEATURE : constant := 16#80100022#;
   SCARD_E_DIR_NOT_FOUND : constant := 16#80100023#;
   SCARD_E_FILE_NOT_FOUND : constant := 16#80100024#;
   SCARD_E_NO_DIR : constant := 16#80100025#;
   SCARD_E_NO_FILE : constant := 16#80100026#;
   SCARD_E_NO_ACCESS : constant := 16#80100027#;
   SCARD_E_WRITE_TOO_MANY : constant := 16#80100028#;
   SCARD_E_BAD_SEEK : constant := 16#80100029#;
   SCARD_E_INVALID_CHV : constant := 16#8010002A#;
   SCARD_E_UNKNOWN_RES_MNG : constant := 16#8010002B#;
   SCARD_E_NO_SUCH_CERTIFICATE : constant := 16#8010002C#;
   SCARD_E_CERTIFICATE_UNAVAILABLE : constant := 16#8010002D#;
   SCARD_E_NO_READERS_AVAILABLE : constant := 16#8010002E#;
   SCARD_E_COMM_DATA_LOST : constant := 16#8010002F#;
   SCARD_E_NO_KEY_CONTAINER : constant := 16#80100030#;
   SCARD_E_SERVER_TOO_BUSY : constant := 16#80100031#;
   SCARD_E_PIN_CACHE_EXPIRED : constant := 16#80100032#;
   SCARD_E_NO_PIN_CACHE : constant := 16#80100033#;
   SCARD_E_READ_ONLY_CARD : constant := 16#80100034#;
   SCARD_W_UNSUPPORTED_CARD : constant := 16#80100065#;
   SCARD_W_UNRESPONSIVE_CARD : constant := 16#80100066#;
   SCARD_W_UNPOWERED_CARD : constant := 16#80100067#;
   SCARD_W_RESET_CARD : constant := 16#80100068#;
   SCARD_W_REMOVED_CARD : constant := 16#80100069#;
   SCARD_W_SECURITY_VIOLATION : constant := 16#8010006A#;
   SCARD_W_WRONG_CHV : constant := 16#8010006B#;
   SCARD_W_CHV_BLOCKED : constant := 16#8010006C#;
   SCARD_W_EOF : constant := 16#8010006D#;
   SCARD_W_CANCELLED_BY_USER : constant := 16#8010006E#;
   SCARD_W_CARD_NOT_AUTHENTICATED : constant := 16#8010006F#;
   SCARD_W_CACHE_ITEM_NOT_FOUND : constant := 16#80100070#;
   SCARD_W_CACHE_ITEM_STALE : constant := 16#80100071#;
   SCARD_W_CACHE_ITEM_TOO_BIG : constant := 16#80100072#;
   COMADMIN_E_OBJECTERRORS : constant := 16#80110401#;
   COMADMIN_E_OBJECTINVALID : constant := 16#80110402#;
   COMADMIN_E_KEYMISSING : constant := 16#80110403#;
   COMADMIN_E_ALREADYINSTALLED : constant := 16#80110404#;
   COMADMIN_E_APP_FILE_WRITEFAIL : constant := 16#80110407#;
   COMADMIN_E_APP_FILE_READFAIL : constant := 16#80110408#;
   COMADMIN_E_APP_FILE_VERSION : constant := 16#80110409#;
   COMADMIN_E_BADPATH : constant := 16#8011040A#;
   COMADMIN_E_APPLICATIONEXISTS : constant := 16#8011040B#;
   COMADMIN_E_ROLEEXISTS : constant := 16#8011040C#;
   COMADMIN_E_CANTCOPYFILE : constant := 16#8011040D#;
   COMADMIN_E_NOUSER : constant := 16#8011040F#;
   COMADMIN_E_INVALIDUSERIDS : constant := 16#80110410#;
   COMADMIN_E_NOREGISTRYCLSID : constant := 16#80110411#;
   COMADMIN_E_BADREGISTRYPROGID : constant := 16#80110412#;
   COMADMIN_E_AUTHENTICATIONLEVEL : constant := 16#80110413#;
   COMADMIN_E_USERPASSWDNOTVALID : constant := 16#80110414#;
   COMADMIN_E_CLSIDORIIDMISMATCH : constant := 16#80110418#;
   COMADMIN_E_REMOTEINTERFACE : constant := 16#80110419#;
   COMADMIN_E_DLLREGISTERSERVER : constant := 16#8011041A#;
   COMADMIN_E_NOSERVERSHARE : constant := 16#8011041B#;
   COMADMIN_E_DLLLOADFAILED : constant := 16#8011041D#;
   COMADMIN_E_BADREGISTRYLIBID : constant := 16#8011041E#;
   COMADMIN_E_APPDIRNOTFOUND : constant := 16#8011041F#;
   COMADMIN_E_REGISTRARFAILED : constant := 16#80110423#;
   COMADMIN_E_COMPFILE_DOESNOTEXIST : constant := 16#80110424#;
   COMADMIN_E_COMPFILE_LOADDLLFAIL : constant := 16#80110425#;
   COMADMIN_E_COMPFILE_GETCLASSOBJ : constant := 16#80110426#;
   COMADMIN_E_COMPFILE_CLASSNOTAVAIL : constant := 16#80110427#;
   COMADMIN_E_COMPFILE_BADTLB : constant := 16#80110428#;
   COMADMIN_E_COMPFILE_NOTINSTALLABLE : constant := 16#80110429#;
   COMADMIN_E_NOTCHANGEABLE : constant := 16#8011042A#;
   COMADMIN_E_NOTDELETEABLE : constant := 16#8011042B#;
   COMADMIN_E_SESSION : constant := 16#8011042C#;
   COMADMIN_E_COMP_MOVE_LOCKED : constant := 16#8011042D#;
   COMADMIN_E_COMP_MOVE_BAD_DEST : constant := 16#8011042E#;
   COMADMIN_E_REGISTERTLB : constant := 16#80110430#;
   COMADMIN_E_SYSTEMAPP : constant := 16#80110433#;
   COMADMIN_E_COMPFILE_NOREGISTRAR : constant := 16#80110434#;
   COMADMIN_E_COREQCOMPINSTALLED : constant := 16#80110435#;
   COMADMIN_E_SERVICENOTINSTALLED : constant := 16#80110436#;
   COMADMIN_E_PROPERTYSAVEFAILED : constant := 16#80110437#;
   COMADMIN_E_OBJECTEXISTS : constant := 16#80110438#;
   COMADMIN_E_COMPONENTEXISTS : constant := 16#80110439#;
   COMADMIN_E_REGFILE_CORRUPT : constant := 16#8011043B#;
   COMADMIN_E_PROPERTY_OVERFLOW : constant := 16#8011043C#;
   COMADMIN_E_NOTINREGISTRY : constant := 16#8011043E#;
   COMADMIN_E_OBJECTNOTPOOLABLE : constant := 16#8011043F#;
   COMADMIN_E_APPLID_MATCHES_CLSID : constant := 16#80110446#;
   COMADMIN_E_ROLE_DOES_NOT_EXIST : constant := 16#80110447#;
   COMADMIN_E_START_APP_NEEDS_COMPONENTS : constant := 16#80110448#;
   COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM : constant := 16#80110449#;
   COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY : constant := 16#8011044A#;
   COMADMIN_E_CAN_NOT_START_APP : constant := 16#8011044B#;
   COMADMIN_E_CAN_NOT_EXPORT_SYS_APP : constant := 16#8011044C#;
   COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT : constant := 16#8011044D#;
   COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER : constant := 16#8011044E#;
   COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE : constant := 16#8011044F#;
   COMADMIN_E_BASE_PARTITION_ONLY : constant := 16#80110450#;
   COMADMIN_E_START_APP_DISABLED : constant := 16#80110451#;
   COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME : constant := 16#80110457#;
   COMADMIN_E_CAT_INVALID_PARTITION_NAME : constant := 16#80110458#;
   COMADMIN_E_CAT_PARTITION_IN_USE : constant := 16#80110459#;
   COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES : constant := 16#8011045A#;
   COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED : constant := 16#8011045B#;
   COMADMIN_E_AMBIGUOUS_APPLICATION_NAME : constant := 16#8011045C#;
   COMADMIN_E_AMBIGUOUS_PARTITION_NAME : constant := 16#8011045D#;
   COMADMIN_E_REGDB_NOTINITIALIZED : constant := 16#80110472#;
   COMADMIN_E_REGDB_NOTOPEN : constant := 16#80110473#;
   COMADMIN_E_REGDB_SYSTEMERR : constant := 16#80110474#;
   COMADMIN_E_REGDB_ALREADYRUNNING : constant := 16#80110475#;
   COMADMIN_E_MIG_VERSIONNOTSUPPORTED : constant := 16#80110480#;
   COMADMIN_E_MIG_SCHEMANOTFOUND : constant := 16#80110481#;
   COMADMIN_E_CAT_BITNESSMISMATCH : constant := 16#80110482#;
   COMADMIN_E_CAT_UNACCEPTABLEBITNESS : constant := 16#80110483#;
   COMADMIN_E_CAT_WRONGAPPBITNESS : constant := 16#80110484#;
   COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED : constant := 16#80110485#;
   COMADMIN_E_CAT_SERVERFAULT : constant := 16#80110486#;
   COMQC_E_APPLICATION_NOT_QUEUED : constant := 16#80110600#;
   COMQC_E_NO_QUEUEABLE_INTERFACES : constant := 16#80110601#;
   COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE : constant := 16#80110602#;
   COMQC_E_NO_IPERSISTSTREAM : constant := 16#80110603#;
   COMQC_E_BAD_MESSAGE : constant := 16#80110604#;
   COMQC_E_UNAUTHENTICATED : constant := 16#80110605#;
   COMQC_E_UNTRUSTED_ENQUEUER : constant := 16#80110606#;
   MSDTC_E_DUPLICATE_RESOURCE : constant := 16#80110701#;
   COMADMIN_E_OBJECT_PARENT_MISSING : constant := 16#80110808#;
   COMADMIN_E_OBJECT_DOES_NOT_EXIST : constant := 16#80110809#;
   COMADMIN_E_APP_NOT_RUNNING : constant := 16#8011080A#;
   COMADMIN_E_INVALID_PARTITION : constant := 16#8011080B#;
   COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE : constant := 16#8011080D#;
   COMADMIN_E_USER_IN_SET : constant := 16#8011080E#;
   COMADMIN_E_CANTRECYCLELIBRARYAPPS : constant := 16#8011080F#;
   COMADMIN_E_CANTRECYCLESERVICEAPPS : constant := 16#80110811#;
   COMADMIN_E_PROCESSALREADYRECYCLED : constant := 16#80110812#;
   COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED : constant := 16#80110813#;
   COMADMIN_E_CANTMAKEINPROCSERVICE : constant := 16#80110814#;
   COMADMIN_E_PROGIDINUSEBYCLSID : constant := 16#80110815#;
   COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET : constant := 16#80110816#;
   COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED : constant := 16#80110817#;
   COMADMIN_E_PARTITION_ACCESSDENIED : constant := 16#80110818#;
   COMADMIN_E_PARTITION_MSI_ONLY : constant := 16#80110819#;
   COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT : constant := 16#8011081A#;
   COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS : constant := 16#8011081B#;
   COMADMIN_E_COMP_MOVE_SOURCE : constant := 16#8011081C#;
   COMADMIN_E_COMP_MOVE_DEST : constant := 16#8011081D#;
   COMADMIN_E_COMP_MOVE_PRIVATE : constant := 16#8011081E#;
   COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET : constant := 16#8011081F#;
   COMADMIN_E_CANNOT_ALIAS_EVENTCLASS : constant := 16#80110820#;
   COMADMIN_E_PRIVATE_ACCESSDENIED : constant := 16#80110821#;
   COMADMIN_E_SAFERINVALID : constant := 16#80110822#;
   COMADMIN_E_REGISTRY_ACCESSDENIED : constant := 16#80110823#;
   COMADMIN_E_PARTITIONS_DISABLED : constant := 16#80110824#;
   WER_S_REPORT_DEBUG : constant := 16#001B0000#;
   WER_S_REPORT_UPLOADED : constant := 16#001B0001#;
   WER_S_REPORT_QUEUED : constant := 16#001B0002#;
   WER_S_DISABLED : constant := 16#001B0003#;
   WER_S_SUSPENDED_UPLOAD : constant := 16#001B0004#;
   WER_S_DISABLED_QUEUE : constant := 16#001B0005#;
   WER_S_DISABLED_ARCHIVE : constant := 16#001B0006#;
   WER_S_REPORT_ASYNC : constant := 16#001B0007#;
   WER_S_IGNORE_ASSERT_INSTANCE : constant := 16#001B0008#;
   WER_S_IGNORE_ALL_ASSERTS : constant := 16#001B0009#;
   WER_S_ASSERT_CONTINUE : constant := 16#001B000A#;
   WER_S_THROTTLED : constant := 16#001B000B#;
   WER_S_REPORT_UPLOADED_CAB : constant := 16#001B000C#;
   WER_E_CRASH_FAILURE : constant := 16#801B8000#;
   WER_E_CANCELED : constant := 16#801B8001#;
   WER_E_NETWORK_FAILURE : constant := 16#801B8002#;
   WER_E_NOT_INITIALIZED : constant := 16#801B8003#;
   WER_E_ALREADY_REPORTING : constant := 16#801B8004#;
   WER_E_DUMP_THROTTLED : constant := 16#801B8005#;
   WER_E_INSUFFICIENT_CONSENT : constant := 16#801B8006#;
   WER_E_TOO_HEAVY : constant := 16#801B8007#;
   ERROR_FLT_IO_COMPLETE : constant := 16#001F0001#;
   ERROR_FLT_NO_HANDLER_DEFINED : constant := 16#801F0001#;
   ERROR_FLT_CONTEXT_ALREADY_DEFINED : constant := 16#801F0002#;
   ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST : constant := 16#801F0003#;
   ERROR_FLT_DISALLOW_FAST_IO : constant := 16#801F0004#;
   ERROR_FLT_INVALID_NAME_REQUEST : constant := 16#801F0005#;
   ERROR_FLT_NOT_SAFE_TO_POST_OPERATION : constant := 16#801F0006#;
   ERROR_FLT_NOT_INITIALIZED : constant := 16#801F0007#;
   ERROR_FLT_FILTER_NOT_READY : constant := 16#801F0008#;
   ERROR_FLT_POST_OPERATION_CLEANUP : constant := 16#801F0009#;
   ERROR_FLT_INTERNAL_ERROR : constant := 16#801F000A#;
   ERROR_FLT_DELETING_OBJECT : constant := 16#801F000B#;
   ERROR_FLT_MUST_BE_NONPAGED_POOL : constant := 16#801F000C#;
   ERROR_FLT_DUPLICATE_ENTRY : constant := 16#801F000D#;
   ERROR_FLT_CBDQ_DISABLED : constant := 16#801F000E#;
   ERROR_FLT_DO_NOT_ATTACH : constant := 16#801F000F#;
   ERROR_FLT_DO_NOT_DETACH : constant := 16#801F0010#;
   ERROR_FLT_INSTANCE_ALTITUDE_COLLISION : constant := 16#801F0011#;
   ERROR_FLT_INSTANCE_NAME_COLLISION : constant := 16#801F0012#;
   ERROR_FLT_FILTER_NOT_FOUND : constant := 16#801F0013#;
   ERROR_FLT_VOLUME_NOT_FOUND : constant := 16#801F0014#;
   ERROR_FLT_INSTANCE_NOT_FOUND : constant := 16#801F0015#;
   ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND : constant := 16#801F0016#;
   ERROR_FLT_INVALID_CONTEXT_REGISTRATION : constant := 16#801F0017#;
   ERROR_FLT_NAME_CACHE_MISS : constant := 16#801F0018#;
   ERROR_FLT_NO_DEVICE_OBJECT : constant := 16#801F0019#;
   ERROR_FLT_VOLUME_ALREADY_MOUNTED : constant := 16#801F001A#;
   ERROR_FLT_ALREADY_ENLISTED : constant := 16#801F001B#;
   ERROR_FLT_CONTEXT_ALREADY_LINKED : constant := 16#801F001C#;
   ERROR_FLT_NO_WAITER_FOR_REPLY : constant := 16#801F0020#;
   ERROR_FLT_REGISTRATION_BUSY : constant := 16#801F0023#;
   ERROR_HUNG_DISPLAY_DRIVER_THREAD : constant := 16#80260001#;
   DWM_E_COMPOSITIONDISABLED : constant := 16#80263001#;
   DWM_E_REMOTING_NOT_SUPPORTED : constant := 16#80263002#;
   DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE : constant := 16#80263003#;
   DWM_E_NOT_QUEUING_PRESENTS : constant := 16#80263004#;
   DWM_E_ADAPTER_NOT_FOUND : constant := 16#80263005#;
   DWM_S_GDI_REDIRECTION_SURFACE : constant := 16#00263005#;
   DWM_E_TEXTURE_TOO_LARGE : constant := 16#80263007#;
   DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI : constant := 16#00263008#;
   ERROR_MONITOR_NO_DESCRIPTOR : constant := 16#00261001#;
   ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT : constant := 16#00261002#;
   ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM : constant := 16#C0261003#;
   ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK : constant := 16#C0261004#;
   ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED : constant := 16#C0261005#;
   ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK : constant := 16#C0261006#;
   ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK : constant := 16#C0261007#;
   ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA : constant := 16#C0261008#;
   ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK : constant := 16#C0261009#;
   ERROR_MONITOR_INVALID_MANUFACTURE_DATE : constant := 16#C026100A#;
   ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER : constant := 16#C0262000#;
   ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER : constant := 16#C0262001#;
   ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER : constant := 16#C0262002#;
   ERROR_GRAPHICS_ADAPTER_WAS_RESET : constant := 16#C0262003#;
   ERROR_GRAPHICS_INVALID_DRIVER_MODEL : constant := 16#C0262004#;
   ERROR_GRAPHICS_PRESENT_MODE_CHANGED : constant := 16#C0262005#;
   ERROR_GRAPHICS_PRESENT_OCCLUDED : constant := 16#C0262006#;
   ERROR_GRAPHICS_PRESENT_DENIED : constant := 16#C0262007#;
   ERROR_GRAPHICS_CANNOTCOLORCONVERT : constant := 16#C0262008#;
   ERROR_GRAPHICS_DRIVER_MISMATCH : constant := 16#C0262009#;
   ERROR_GRAPHICS_PARTIAL_DATA_POPULATED : constant := 16#4026200A#;
   ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED : constant := 16#C026200B#;
   ERROR_GRAPHICS_PRESENT_UNOCCLUDED : constant := 16#C026200C#;
   ERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE : constant := 16#C026200D#;
   ERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED : constant := 16#C026200E#;
   ERROR_GRAPHICS_PRESENT_INVALID_WINDOW : constant := 16#C026200F#;
   ERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND : constant := 16#C0262010#;
   ERROR_GRAPHICS_VAIL_STATE_CHANGED : constant := 16#C0262011#;
   ERROR_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN : constant := 16#C0262012#;
   ERROR_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED : constant := 16#C0262013#;
   ERROR_GRAPHICS_VAIL_FAILED_TO_SEND_CREATE_SUPERWETINK_MESSAGE : constant := 16#C0262014#;
   ERROR_GRAPHICS_VAIL_FAILED_TO_SEND_DESTROY_SUPERWETINK_MESSAGE : constant := 16#C0262015#;
   ERROR_GRAPHICS_NO_VIDEO_MEMORY : constant := 16#C0262100#;
   ERROR_GRAPHICS_CANT_LOCK_MEMORY : constant := 16#C0262101#;
   ERROR_GRAPHICS_ALLOCATION_BUSY : constant := 16#C0262102#;
   ERROR_GRAPHICS_TOO_MANY_REFERENCES : constant := 16#C0262103#;
   ERROR_GRAPHICS_TRY_AGAIN_LATER : constant := 16#C0262104#;
   ERROR_GRAPHICS_TRY_AGAIN_NOW : constant := 16#C0262105#;
   ERROR_GRAPHICS_ALLOCATION_INVALID : constant := 16#C0262106#;
   ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE : constant := 16#C0262107#;
   ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED : constant := 16#C0262108#;
   ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION : constant := 16#C0262109#;
   ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE : constant := 16#C0262110#;
   ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION : constant := 16#C0262111#;
   ERROR_GRAPHICS_ALLOCATION_CLOSED : constant := 16#C0262112#;
   ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE : constant := 16#C0262113#;
   ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE : constant := 16#C0262114#;
   ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE : constant := 16#C0262115#;
   ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST : constant := 16#C0262116#;
   ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE : constant := 16#C0262200#;
   ERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION : constant := 16#40262201#;
   ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY : constant := 16#C0262300#;
   ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED : constant := 16#C0262301#;
   ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED : constant := 16#C0262302#;
   ERROR_GRAPHICS_INVALID_VIDPN : constant := 16#C0262303#;
   ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE : constant := 16#C0262304#;
   ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET : constant := 16#C0262305#;
   ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED : constant := 16#C0262306#;
   ERROR_GRAPHICS_MODE_NOT_PINNED : constant := 16#00262307#;
   ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET : constant := 16#C0262308#;
   ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET : constant := 16#C0262309#;
   ERROR_GRAPHICS_INVALID_FREQUENCY : constant := 16#C026230A#;
   ERROR_GRAPHICS_INVALID_ACTIVE_REGION : constant := 16#C026230B#;
   ERROR_GRAPHICS_INVALID_TOTAL_REGION : constant := 16#C026230C#;
   ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE : constant := 16#C0262310#;
   ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE : constant := 16#C0262311#;
   ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET : constant := 16#C0262312#;
   ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY : constant := 16#C0262313#;
   ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET : constant := 16#C0262314#;
   ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET : constant := 16#C0262315#;
   ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET : constant := 16#C0262316#;
   ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET : constant := 16#C0262317#;
   ERROR_GRAPHICS_TARGET_ALREADY_IN_SET : constant := 16#C0262318#;
   ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH : constant := 16#C0262319#;
   ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY : constant := 16#C026231A#;
   ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET : constant := 16#C026231B#;
   ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE : constant := 16#C026231C#;
   ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET : constant := 16#C026231D#;
   ERROR_GRAPHICS_NO_PREFERRED_MODE : constant := 16#0026231E#;
   ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET : constant := 16#C026231F#;
   ERROR_GRAPHICS_STALE_MODESET : constant := 16#C0262320#;
   ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET : constant := 16#C0262321#;
   ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE : constant := 16#C0262322#;
   ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN : constant := 16#C0262323#;
   ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE : constant := 16#C0262324#;
   ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION : constant := 16#C0262325#;
   ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES : constant := 16#C0262326#;
   ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY : constant := 16#C0262327#;
   ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE : constant := 16#C0262328#;
   ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET : constant := 16#C0262329#;
   ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET : constant := 16#C026232A#;
   ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR : constant := 16#C026232B#;
   ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET : constant := 16#C026232C#;
   ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET : constant := 16#C026232D#;
   ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE : constant := 16#C026232E#;
   ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE : constant := 16#C026232F#;
   ERROR_GRAPHICS_RESOURCES_NOT_RELATED : constant := 16#C0262330#;
   ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE : constant := 16#C0262331#;
   ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE : constant := 16#C0262332#;
   ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET : constant := 16#C0262333#;
   ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER : constant := 16#C0262334#;
   ERROR_GRAPHICS_NO_VIDPNMGR : constant := 16#C0262335#;
   ERROR_GRAPHICS_NO_ACTIVE_VIDPN : constant := 16#C0262336#;
   ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY : constant := 16#C0262337#;
   ERROR_GRAPHICS_MONITOR_NOT_CONNECTED : constant := 16#C0262338#;
   ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY : constant := 16#C0262339#;
   ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE : constant := 16#C026233A#;
   ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE : constant := 16#C026233B#;
   ERROR_GRAPHICS_INVALID_STRIDE : constant := 16#C026233C#;
   ERROR_GRAPHICS_INVALID_PIXELFORMAT : constant := 16#C026233D#;
   ERROR_GRAPHICS_INVALID_COLORBASIS : constant := 16#C026233E#;
   ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE : constant := 16#C026233F#;
   ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY : constant := 16#C0262340#;
   ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT : constant := 16#C0262341#;
   ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE : constant := 16#C0262342#;
   ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN : constant := 16#C0262343#;
   ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL : constant := 16#C0262344#;
   ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION : constant := 16#C0262345#;
   ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED : constant := 16#C0262346#;
   ERROR_GRAPHICS_INVALID_GAMMA_RAMP : constant := 16#C0262347#;
   ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED : constant := 16#C0262348#;
   ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED : constant := 16#C0262349#;
   ERROR_GRAPHICS_MODE_NOT_IN_MODESET : constant := 16#C026234A#;
   ERROR_GRAPHICS_DATASET_IS_EMPTY : constant := 16#0026234B#;
   ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET : constant := 16#0026234C#;
   ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON : constant := 16#C026234D#;
   ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE : constant := 16#C026234E#;
   ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE : constant := 16#C026234F#;
   ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS : constant := 16#C0262350#;
   ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED : constant := 16#00262351#;
   ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING : constant := 16#C0262352#;
   ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED : constant := 16#C0262353#;
   ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS : constant := 16#C0262354#;
   ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT : constant := 16#C0262355#;
   ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM : constant := 16#C0262356#;
   ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN : constant := 16#C0262357#;
   ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT : constant := 16#C0262358#;
   ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED : constant := 16#C0262359#;
   ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION : constant := 16#C026235A#;
   ERROR_GRAPHICS_INVALID_CLIENT_TYPE : constant := 16#C026235B#;
   ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET : constant := 16#C026235C#;
   ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED : constant := 16#C0262400#;
   ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED : constant := 16#C0262401#;
   ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS : constant := 16#4026242F#;
   ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER : constant := 16#C0262430#;
   ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED : constant := 16#C0262431#;
   ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED : constant := 16#C0262432#;
   ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY : constant := 16#C0262433#;
   ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED : constant := 16#C0262434#;
   ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON : constant := 16#C0262435#;
   ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE : constant := 16#C0262436#;
   ERROR_GRAPHICS_LEADLINK_START_DEFERRED : constant := 16#40262437#;
   ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER : constant := 16#C0262438#;
   ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY : constant := 16#40262439#;
   ERROR_GRAPHICS_START_DEFERRED : constant := 16#4026243A#;
   ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED : constant := 16#C026243B#;
   ERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS : constant := 16#4026243C#;
   ERROR_GRAPHICS_OPM_NOT_SUPPORTED : constant := 16#C0262500#;
   ERROR_GRAPHICS_COPP_NOT_SUPPORTED : constant := 16#C0262501#;
   ERROR_GRAPHICS_UAB_NOT_SUPPORTED : constant := 16#C0262502#;
   ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS : constant := 16#C0262503#;
   ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST : constant := 16#C0262505#;
   ERROR_GRAPHICS_OPM_INTERNAL_ERROR : constant := 16#C026250B#;
   ERROR_GRAPHICS_OPM_INVALID_HANDLE : constant := 16#C026250C#;
   ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH : constant := 16#C026250E#;
   ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED : constant := 16#C026250F#;
   ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED : constant := 16#C0262510#;
   ERROR_GRAPHICS_PVP_HFS_FAILED : constant := 16#C0262511#;
   ERROR_GRAPHICS_OPM_INVALID_SRM : constant := 16#C0262512#;
   ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP : constant := 16#C0262513#;
   ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP : constant := 16#C0262514#;
   ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA : constant := 16#C0262515#;
   ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET : constant := 16#C0262516#;
   ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH : constant := 16#C0262517#;
   ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE : constant := 16#C0262518#;
   ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS : constant := 16#C026251A#;
   ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS : constant := 16#C026251B#;
   ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS : constant := 16#C026251C#;
   ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST : constant := 16#C026251D#;
   ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR : constant := 16#C026251E#;
   ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS : constant := 16#C026251F#;
   ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED : constant := 16#C0262520#;
   ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST : constant := 16#C0262521#;
   ERROR_GRAPHICS_I2C_NOT_SUPPORTED : constant := 16#C0262580#;
   ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST : constant := 16#C0262581#;
   ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA : constant := 16#C0262582#;
   ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA : constant := 16#C0262583#;
   ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED : constant := 16#C0262584#;
   ERROR_GRAPHICS_DDCCI_INVALID_DATA : constant := 16#C0262585#;
   ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE : constant := 16#C0262586#;
   ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING : constant := 16#C0262587#;
   ERROR_GRAPHICS_MCA_INTERNAL_ERROR : constant := 16#C0262588#;
   ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND : constant := 16#C0262589#;
   ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH : constant := 16#C026258A#;
   ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM : constant := 16#C026258B#;
   ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE : constant := 16#C026258C#;
   ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS : constant := 16#C026258D#;
   ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE : constant := 16#C02625D8#;
   ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION : constant := 16#C02625D9#;
   ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION : constant := 16#C02625DA#;
   ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH : constant := 16#C02625DB#;
   ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION : constant := 16#C02625DC#;
   ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED : constant := 16#C02625DE#;
   ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE : constant := 16#C02625DF#;
   ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED : constant := 16#C02625E0#;
   ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME : constant := 16#C02625E1#;
   ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP : constant := 16#C02625E2#;
   ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED : constant := 16#C02625E3#;
   ERROR_GRAPHICS_INVALID_POINTER : constant := 16#C02625E4#;
   ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE : constant := 16#C02625E5#;
   ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL : constant := 16#C02625E6#;
   ERROR_GRAPHICS_INTERNAL_ERROR : constant := 16#C02625E7#;
   ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS : constant := 16#C02605E8#;
   NAP_E_INVALID_PACKET : constant := 16#80270001#;
   NAP_E_MISSING_SOH : constant := 16#80270002#;
   NAP_E_CONFLICTING_ID : constant := 16#80270003#;
   NAP_E_NO_CACHED_SOH : constant := 16#80270004#;
   NAP_E_STILL_BOUND : constant := 16#80270005#;
   NAP_E_NOT_REGISTERED : constant := 16#80270006#;
   NAP_E_NOT_INITIALIZED : constant := 16#80270007#;
   NAP_E_MISMATCHED_ID : constant := 16#80270008#;
   NAP_E_NOT_PENDING : constant := 16#80270009#;
   NAP_E_ID_NOT_FOUND : constant := 16#8027000A#;
   NAP_E_MAXSIZE_TOO_SMALL : constant := 16#8027000B#;
   NAP_E_SERVICE_NOT_RUNNING : constant := 16#8027000C#;
   NAP_S_CERT_ALREADY_PRESENT : constant := 16#0027000D#;
   NAP_E_ENTITY_DISABLED : constant := 16#8027000E#;
   NAP_E_NETSH_GROUPPOLICY_ERROR : constant := 16#8027000F#;
   NAP_E_TOO_MANY_CALLS : constant := 16#80270010#;
   NAP_E_SHV_CONFIG_EXISTED : constant := 16#80270011#;
   NAP_E_SHV_CONFIG_NOT_FOUND : constant := 16#80270012#;
   NAP_E_SHV_TIMEOUT : constant := 16#80270013#;
   TPM_E_ERROR_MASK : constant := 16#80280000#;
   TPM_E_AUTHFAIL : constant := 16#80280001#;
   TPM_E_BADINDEX : constant := 16#80280002#;
   TPM_E_BAD_PARAMETER : constant := 16#80280003#;
   TPM_E_AUDITFAILURE : constant := 16#80280004#;
   TPM_E_CLEAR_DISABLED : constant := 16#80280005#;
   TPM_E_DEACTIVATED : constant := 16#80280006#;
   TPM_E_DISABLED : constant := 16#80280007#;
   TPM_E_DISABLED_CMD : constant := 16#80280008#;
   TPM_E_FAIL : constant := 16#80280009#;
   TPM_E_BAD_ORDINAL : constant := 16#8028000A#;
   TPM_E_INSTALL_DISABLED : constant := 16#8028000B#;
   TPM_E_INVALID_KEYHANDLE : constant := 16#8028000C#;
   TPM_E_KEYNOTFOUND : constant := 16#8028000D#;
   TPM_E_INAPPROPRIATE_ENC : constant := 16#8028000E#;
   TPM_E_MIGRATEFAIL : constant := 16#8028000F#;
   TPM_E_INVALID_PCR_INFO : constant := 16#80280010#;
   TPM_E_NOSPACE : constant := 16#80280011#;
   TPM_E_NOSRK : constant := 16#80280012#;
   TPM_E_NOTSEALED_BLOB : constant := 16#80280013#;
   TPM_E_OWNER_SET : constant := 16#80280014#;
   TPM_E_RESOURCES : constant := 16#80280015#;
   TPM_E_SHORTRANDOM : constant := 16#80280016#;
   TPM_E_SIZE : constant := 16#80280017#;
   TPM_E_WRONGPCRVAL : constant := 16#80280018#;
   TPM_E_BAD_PARAM_SIZE : constant := 16#80280019#;
   TPM_E_SHA_THREAD : constant := 16#8028001A#;
   TPM_E_SHA_ERROR : constant := 16#8028001B#;
   TPM_E_FAILEDSELFTEST : constant := 16#8028001C#;
   TPM_E_AUTH2FAIL : constant := 16#8028001D#;
   TPM_E_BADTAG : constant := 16#8028001E#;
   TPM_E_IOERROR : constant := 16#8028001F#;
   TPM_E_ENCRYPT_ERROR : constant := 16#80280020#;
   TPM_E_DECRYPT_ERROR : constant := 16#80280021#;
   TPM_E_INVALID_AUTHHANDLE : constant := 16#80280022#;
   TPM_E_NO_ENDORSEMENT : constant := 16#80280023#;
   TPM_E_INVALID_KEYUSAGE : constant := 16#80280024#;
   TPM_E_WRONG_ENTITYTYPE : constant := 16#80280025#;
   TPM_E_INVALID_POSTINIT : constant := 16#80280026#;
   TPM_E_INAPPROPRIATE_SIG : constant := 16#80280027#;
   TPM_E_BAD_KEY_PROPERTY : constant := 16#80280028#;
   TPM_E_BAD_MIGRATION : constant := 16#80280029#;
   TPM_E_BAD_SCHEME : constant := 16#8028002A#;
   TPM_E_BAD_DATASIZE : constant := 16#8028002B#;
   TPM_E_BAD_MODE : constant := 16#8028002C#;
   TPM_E_BAD_PRESENCE : constant := 16#8028002D#;
   TPM_E_BAD_VERSION : constant := 16#8028002E#;
   TPM_E_NO_WRAP_TRANSPORT : constant := 16#8028002F#;
   TPM_E_AUDITFAIL_UNSUCCESSFUL : constant := 16#80280030#;
   TPM_E_AUDITFAIL_SUCCESSFUL : constant := 16#80280031#;
   TPM_E_NOTRESETABLE : constant := 16#80280032#;
   TPM_E_NOTLOCAL : constant := 16#80280033#;
   TPM_E_BAD_TYPE : constant := 16#80280034#;
   TPM_E_INVALID_RESOURCE : constant := 16#80280035#;
   TPM_E_NOTFIPS : constant := 16#80280036#;
   TPM_E_INVALID_FAMILY : constant := 16#80280037#;
   TPM_E_NO_NV_PERMISSION : constant := 16#80280038#;
   TPM_E_REQUIRES_SIGN : constant := 16#80280039#;
   TPM_E_KEY_NOTSUPPORTED : constant := 16#8028003A#;
   TPM_E_AUTH_CONFLICT : constant := 16#8028003B#;
   TPM_E_AREA_LOCKED : constant := 16#8028003C#;
   TPM_E_BAD_LOCALITY : constant := 16#8028003D#;
   TPM_E_READ_ONLY : constant := 16#8028003E#;
   TPM_E_PER_NOWRITE : constant := 16#8028003F#;
   TPM_E_FAMILYCOUNT : constant := 16#80280040#;
   TPM_E_WRITE_LOCKED : constant := 16#80280041#;
   TPM_E_BAD_ATTRIBUTES : constant := 16#80280042#;
   TPM_E_INVALID_STRUCTURE : constant := 16#80280043#;
   TPM_E_KEY_OWNER_CONTROL : constant := 16#80280044#;
   TPM_E_BAD_COUNTER : constant := 16#80280045#;
   TPM_E_NOT_FULLWRITE : constant := 16#80280046#;
   TPM_E_CONTEXT_GAP : constant := 16#80280047#;
   TPM_E_MAXNVWRITES : constant := 16#80280048#;
   TPM_E_NOOPERATOR : constant := 16#80280049#;
   TPM_E_RESOURCEMISSING : constant := 16#8028004A#;
   TPM_E_DELEGATE_LOCK : constant := 16#8028004B#;
   TPM_E_DELEGATE_FAMILY : constant := 16#8028004C#;
   TPM_E_DELEGATE_ADMIN : constant := 16#8028004D#;
   TPM_E_TRANSPORT_NOTEXCLUSIVE : constant := 16#8028004E#;
   TPM_E_OWNER_CONTROL : constant := 16#8028004F#;
   TPM_E_DAA_RESOURCES : constant := 16#80280050#;
   TPM_E_DAA_INPUT_DATA0 : constant := 16#80280051#;
   TPM_E_DAA_INPUT_DATA1 : constant := 16#80280052#;
   TPM_E_DAA_ISSUER_SETTINGS : constant := 16#80280053#;
   TPM_E_DAA_TPM_SETTINGS : constant := 16#80280054#;
   TPM_E_DAA_STAGE : constant := 16#80280055#;
   TPM_E_DAA_ISSUER_VALIDITY : constant := 16#80280056#;
   TPM_E_DAA_WRONG_W : constant := 16#80280057#;
   TPM_E_BAD_HANDLE : constant := 16#80280058#;
   TPM_E_BAD_DELEGATE : constant := 16#80280059#;
   TPM_E_BADCONTEXT : constant := 16#8028005A#;
   TPM_E_TOOMANYCONTEXTS : constant := 16#8028005B#;
   TPM_E_MA_TICKET_SIGNATURE : constant := 16#8028005C#;
   TPM_E_MA_DESTINATION : constant := 16#8028005D#;
   TPM_E_MA_SOURCE : constant := 16#8028005E#;
   TPM_E_MA_AUTHORITY : constant := 16#8028005F#;
   TPM_E_PERMANENTEK : constant := 16#80280061#;
   TPM_E_BAD_SIGNATURE : constant := 16#80280062#;
   TPM_E_NOCONTEXTSPACE : constant := 16#80280063#;
   TPM_20_E_ASYMMETRIC : constant := 16#80280081#;
   TPM_20_E_ATTRIBUTES : constant := 16#80280082#;
   TPM_20_E_HASH : constant := 16#80280083#;
   TPM_20_E_VALUE : constant := 16#80280084#;
   TPM_20_E_HIERARCHY : constant := 16#80280085#;
   TPM_20_E_KEY_SIZE : constant := 16#80280087#;
   TPM_20_E_MGF : constant := 16#80280088#;
   TPM_20_E_MODE : constant := 16#80280089#;
   TPM_20_E_TYPE : constant := 16#8028008A#;
   TPM_20_E_HANDLE : constant := 16#8028008B#;
   TPM_20_E_KDF : constant := 16#8028008C#;
   TPM_20_E_RANGE : constant := 16#8028008D#;
   TPM_20_E_AUTH_FAIL : constant := 16#8028008E#;
   TPM_20_E_NONCE : constant := 16#8028008F#;
   TPM_20_E_PP : constant := 16#80280090#;
   TPM_20_E_SCHEME : constant := 16#80280092#;
   TPM_20_E_SIZE : constant := 16#80280095#;
   TPM_20_E_SYMMETRIC : constant := 16#80280096#;
   TPM_20_E_TAG : constant := 16#80280097#;
   TPM_20_E_SELECTOR : constant := 16#80280098#;
   TPM_20_E_INSUFFICIENT : constant := 16#8028009A#;
   TPM_20_E_SIGNATURE : constant := 16#8028009B#;
   TPM_20_E_KEY : constant := 16#8028009C#;
   TPM_20_E_POLICY_FAIL : constant := 16#8028009D#;
   TPM_20_E_INTEGRITY : constant := 16#8028009F#;
   TPM_20_E_TICKET : constant := 16#802800A0#;
   TPM_20_E_RESERVED_BITS : constant := 16#802800A1#;
   TPM_20_E_BAD_AUTH : constant := 16#802800A2#;
   TPM_20_E_EXPIRED : constant := 16#802800A3#;
   TPM_20_E_POLICY_CC : constant := 16#802800A4#;
   TPM_20_E_BINDING : constant := 16#802800A5#;
   TPM_20_E_CURVE : constant := 16#802800A6#;
   TPM_20_E_ECC_POINT : constant := 16#802800A7#;
   TPM_20_E_INITIALIZE : constant := 16#80280100#;
   TPM_20_E_FAILURE : constant := 16#80280101#;
   TPM_20_E_SEQUENCE : constant := 16#80280103#;
   TPM_20_E_PRIVATE : constant := 16#8028010B#;
   TPM_20_E_HMAC : constant := 16#80280119#;
   TPM_20_E_DISABLED : constant := 16#80280120#;
   TPM_20_E_EXCLUSIVE : constant := 16#80280121#;
   TPM_20_E_ECC_CURVE : constant := 16#80280123#;
   TPM_20_E_AUTH_TYPE : constant := 16#80280124#;
   TPM_20_E_AUTH_MISSING : constant := 16#80280125#;
   TPM_20_E_POLICY : constant := 16#80280126#;
   TPM_20_E_PCR : constant := 16#80280127#;
   TPM_20_E_PCR_CHANGED : constant := 16#80280128#;
   TPM_20_E_UPGRADE : constant := 16#8028012D#;
   TPM_20_E_TOO_MANY_CONTEXTS : constant := 16#8028012E#;
   TPM_20_E_AUTH_UNAVAILABLE : constant := 16#8028012F#;
   TPM_20_E_REBOOT : constant := 16#80280130#;
   TPM_20_E_UNBALANCED : constant := 16#80280131#;
   TPM_20_E_COMMAND_SIZE : constant := 16#80280142#;
   TPM_20_E_COMMAND_CODE : constant := 16#80280143#;
   TPM_20_E_AUTHSIZE : constant := 16#80280144#;
   TPM_20_E_AUTH_CONTEXT : constant := 16#80280145#;
   TPM_20_E_NV_RANGE : constant := 16#80280146#;
   TPM_20_E_NV_SIZE : constant := 16#80280147#;
   TPM_20_E_NV_LOCKED : constant := 16#80280148#;
   TPM_20_E_NV_AUTHORIZATION : constant := 16#80280149#;
   TPM_20_E_NV_UNINITIALIZED : constant := 16#8028014A#;
   TPM_20_E_NV_SPACE : constant := 16#8028014B#;
   TPM_20_E_NV_DEFINED : constant := 16#8028014C#;
   TPM_20_E_BAD_CONTEXT : constant := 16#80280150#;
   TPM_20_E_CPHASH : constant := 16#80280151#;
   TPM_20_E_PARENT : constant := 16#80280152#;
   TPM_20_E_NEEDS_TEST : constant := 16#80280153#;
   TPM_20_E_NO_RESULT : constant := 16#80280154#;
   TPM_20_E_SENSITIVE : constant := 16#80280155#;
   TPM_E_COMMAND_BLOCKED : constant := 16#80280400#;
   TPM_E_INVALID_HANDLE : constant := 16#80280401#;
   TPM_E_DUPLICATE_VHANDLE : constant := 16#80280402#;
   TPM_E_EMBEDDED_COMMAND_BLOCKED : constant := 16#80280403#;
   TPM_E_EMBEDDED_COMMAND_UNSUPPORTED : constant := 16#80280404#;
   TPM_E_RETRY : constant := 16#80280800#;
   TPM_E_NEEDS_SELFTEST : constant := 16#80280801#;
   TPM_E_DOING_SELFTEST : constant := 16#80280802#;
   TPM_E_DEFEND_LOCK_RUNNING : constant := 16#80280803#;
   TPM_20_E_CONTEXT_GAP : constant := 16#80280901#;
   TPM_20_E_OBJECT_MEMORY : constant := 16#80280902#;
   TPM_20_E_SESSION_MEMORY : constant := 16#80280903#;
   TPM_20_E_MEMORY : constant := 16#80280904#;
   TPM_20_E_SESSION_HANDLES : constant := 16#80280905#;
   TPM_20_E_OBJECT_HANDLES : constant := 16#80280906#;
   TPM_20_E_LOCALITY : constant := 16#80280907#;
   TPM_20_E_YIELDED : constant := 16#80280908#;
   TPM_20_E_CANCELED : constant := 16#80280909#;
   TPM_20_E_TESTING : constant := 16#8028090A#;
   TPM_20_E_NV_RATE : constant := 16#80280920#;
   TPM_20_E_LOCKOUT : constant := 16#80280921#;
   TPM_20_E_RETRY : constant := 16#80280922#;
   TPM_20_E_NV_UNAVAILABLE : constant := 16#80280923#;
   TBS_E_INTERNAL_ERROR : constant := 16#80284001#;
   TBS_E_BAD_PARAMETER : constant := 16#80284002#;
   TBS_E_INVALID_OUTPUT_POINTER : constant := 16#80284003#;
   TBS_E_INVALID_CONTEXT : constant := 16#80284004#;
   TBS_E_INSUFFICIENT_BUFFER : constant := 16#80284005#;
   TBS_E_IOERROR : constant := 16#80284006#;
   TBS_E_INVALID_CONTEXT_PARAM : constant := 16#80284007#;
   TBS_E_SERVICE_NOT_RUNNING : constant := 16#80284008#;
   TBS_E_TOO_MANY_TBS_CONTEXTS : constant := 16#80284009#;
   TBS_E_TOO_MANY_RESOURCES : constant := 16#8028400A#;
   TBS_E_SERVICE_START_PENDING : constant := 16#8028400B#;
   TBS_E_PPI_NOT_SUPPORTED : constant := 16#8028400C#;
   TBS_E_COMMAND_CANCELED : constant := 16#8028400D#;
   TBS_E_BUFFER_TOO_LARGE : constant := 16#8028400E#;
   TBS_E_TPM_NOT_FOUND : constant := 16#8028400F#;
   TBS_E_SERVICE_DISABLED : constant := 16#80284010#;
   TBS_E_NO_EVENT_LOG : constant := 16#80284011#;
   TBS_E_ACCESS_DENIED : constant := 16#80284012#;
   TBS_E_PROVISIONING_NOT_ALLOWED : constant := 16#80284013#;
   TBS_E_PPI_FUNCTION_UNSUPPORTED : constant := 16#80284014#;
   TBS_E_OWNERAUTH_NOT_FOUND : constant := 16#80284015#;
   TBS_E_PROVISIONING_INCOMPLETE : constant := 16#80284016#;
   TPMAPI_E_INVALID_STATE : constant := 16#80290100#;
   TPMAPI_E_NOT_ENOUGH_DATA : constant := 16#80290101#;
   TPMAPI_E_TOO_MUCH_DATA : constant := 16#80290102#;
   TPMAPI_E_INVALID_OUTPUT_POINTER : constant := 16#80290103#;
   TPMAPI_E_INVALID_PARAMETER : constant := 16#80290104#;
   TPMAPI_E_OUT_OF_MEMORY : constant := 16#80290105#;
   TPMAPI_E_BUFFER_TOO_SMALL : constant := 16#80290106#;
   TPMAPI_E_INTERNAL_ERROR : constant := 16#80290107#;
   TPMAPI_E_ACCESS_DENIED : constant := 16#80290108#;
   TPMAPI_E_AUTHORIZATION_FAILED : constant := 16#80290109#;
   TPMAPI_E_INVALID_CONTEXT_HANDLE : constant := 16#8029010A#;
   TPMAPI_E_TBS_COMMUNICATION_ERROR : constant := 16#8029010B#;
   TPMAPI_E_TPM_COMMAND_ERROR : constant := 16#8029010C#;
   TPMAPI_E_MESSAGE_TOO_LARGE : constant := 16#8029010D#;
   TPMAPI_E_INVALID_ENCODING : constant := 16#8029010E#;
   TPMAPI_E_INVALID_KEY_SIZE : constant := 16#8029010F#;
   TPMAPI_E_ENCRYPTION_FAILED : constant := 16#80290110#;
   TPMAPI_E_INVALID_KEY_PARAMS : constant := 16#80290111#;
   TPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB : constant := 16#80290112#;
   TPMAPI_E_INVALID_PCR_INDEX : constant := 16#80290113#;
   TPMAPI_E_INVALID_DELEGATE_BLOB : constant := 16#80290114#;
   TPMAPI_E_INVALID_CONTEXT_PARAMS : constant := 16#80290115#;
   TPMAPI_E_INVALID_KEY_BLOB : constant := 16#80290116#;
   TPMAPI_E_INVALID_PCR_DATA : constant := 16#80290117#;
   TPMAPI_E_INVALID_OWNER_AUTH : constant := 16#80290118#;
   TPMAPI_E_FIPS_RNG_CHECK_FAILED : constant := 16#80290119#;
   TPMAPI_E_EMPTY_TCG_LOG : constant := 16#8029011A#;
   TPMAPI_E_INVALID_TCG_LOG_ENTRY : constant := 16#8029011B#;
   TPMAPI_E_TCG_SEPARATOR_ABSENT : constant := 16#8029011C#;
   TPMAPI_E_TCG_INVALID_DIGEST_ENTRY : constant := 16#8029011D#;
   TPMAPI_E_POLICY_DENIES_OPERATION : constant := 16#8029011E#;
   TPMAPI_E_NV_BITS_NOT_DEFINED : constant := 16#8029011F#;
   TPMAPI_E_NV_BITS_NOT_READY : constant := 16#80290120#;
   TPMAPI_E_SEALING_KEY_NOT_AVAILABLE : constant := 16#80290121#;
   TPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND : constant := 16#80290122#;
   TPMAPI_E_SVN_COUNTER_NOT_AVAILABLE : constant := 16#80290123#;
   TPMAPI_E_OWNER_AUTH_NOT_NULL : constant := 16#80290124#;
   TPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL : constant := 16#80290125#;
   TPMAPI_E_AUTHORIZATION_REVOKED : constant := 16#80290126#;
   TPMAPI_E_MALFORMED_AUTHORIZATION_KEY : constant := 16#80290127#;
   TPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED : constant := 16#80290128#;
   TPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE : constant := 16#80290129#;
   TPMAPI_E_MALFORMED_AUTHORIZATION_POLICY : constant := 16#8029012A#;
   TPMAPI_E_MALFORMED_AUTHORIZATION_OTHER : constant := 16#8029012B#;
   TPMAPI_E_SEALING_KEY_CHANGED : constant := 16#8029012C#;
   TPMAPI_E_INVALID_TPM_VERSION : constant := 16#8029012D#;
   TPMAPI_E_INVALID_POLICYAUTH_BLOB_TYPE : constant := 16#8029012E#;
   TBSIMP_E_BUFFER_TOO_SMALL : constant := 16#80290200#;
   TBSIMP_E_CLEANUP_FAILED : constant := 16#80290201#;
   TBSIMP_E_INVALID_CONTEXT_HANDLE : constant := 16#80290202#;
   TBSIMP_E_INVALID_CONTEXT_PARAM : constant := 16#80290203#;
   TBSIMP_E_TPM_ERROR : constant := 16#80290204#;
   TBSIMP_E_HASH_BAD_KEY : constant := 16#80290205#;
   TBSIMP_E_DUPLICATE_VHANDLE : constant := 16#80290206#;
   TBSIMP_E_INVALID_OUTPUT_POINTER : constant := 16#80290207#;
   TBSIMP_E_INVALID_PARAMETER : constant := 16#80290208#;
   TBSIMP_E_RPC_INIT_FAILED : constant := 16#80290209#;
   TBSIMP_E_SCHEDULER_NOT_RUNNING : constant := 16#8029020A#;
   TBSIMP_E_COMMAND_CANCELED : constant := 16#8029020B#;
   TBSIMP_E_OUT_OF_MEMORY : constant := 16#8029020C#;
   TBSIMP_E_LIST_NO_MORE_ITEMS : constant := 16#8029020D#;
   TBSIMP_E_LIST_NOT_FOUND : constant := 16#8029020E#;
   TBSIMP_E_NOT_ENOUGH_SPACE : constant := 16#8029020F#;
   TBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS : constant := 16#80290210#;
   TBSIMP_E_COMMAND_FAILED : constant := 16#80290211#;
   TBSIMP_E_UNKNOWN_ORDINAL : constant := 16#80290212#;
   TBSIMP_E_RESOURCE_EXPIRED : constant := 16#80290213#;
   TBSIMP_E_INVALID_RESOURCE : constant := 16#80290214#;
   TBSIMP_E_NOTHING_TO_UNLOAD : constant := 16#80290215#;
   TBSIMP_E_HASH_TABLE_FULL : constant := 16#80290216#;
   TBSIMP_E_TOO_MANY_TBS_CONTEXTS : constant := 16#80290217#;
   TBSIMP_E_TOO_MANY_RESOURCES : constant := 16#80290218#;
   TBSIMP_E_PPI_NOT_SUPPORTED : constant := 16#80290219#;
   TBSIMP_E_TPM_INCOMPATIBLE : constant := 16#8029021A#;
   TBSIMP_E_NO_EVENT_LOG : constant := 16#8029021B#;
   TPM_E_PPI_ACPI_FAILURE : constant := 16#80290300#;
   TPM_E_PPI_USER_ABORT : constant := 16#80290301#;
   TPM_E_PPI_BIOS_FAILURE : constant := 16#80290302#;
   TPM_E_PPI_NOT_SUPPORTED : constant := 16#80290303#;
   TPM_E_PPI_BLOCKED_IN_BIOS : constant := 16#80290304#;
   TPM_E_PCP_ERROR_MASK : constant := 16#80290400#;
   TPM_E_PCP_DEVICE_NOT_READY : constant := 16#80290401#;
   TPM_E_PCP_INVALID_HANDLE : constant := 16#80290402#;
   TPM_E_PCP_INVALID_PARAMETER : constant := 16#80290403#;
   TPM_E_PCP_FLAG_NOT_SUPPORTED : constant := 16#80290404#;
   TPM_E_PCP_NOT_SUPPORTED : constant := 16#80290405#;
   TPM_E_PCP_BUFFER_TOO_SMALL : constant := 16#80290406#;
   TPM_E_PCP_INTERNAL_ERROR : constant := 16#80290407#;
   TPM_E_PCP_AUTHENTICATION_FAILED : constant := 16#80290408#;
   TPM_E_PCP_AUTHENTICATION_IGNORED : constant := 16#80290409#;
   TPM_E_PCP_POLICY_NOT_FOUND : constant := 16#8029040A#;
   TPM_E_PCP_PROFILE_NOT_FOUND : constant := 16#8029040B#;
   TPM_E_PCP_VALIDATION_FAILED : constant := 16#8029040C#;
   TPM_E_PCP_WRONG_PARENT : constant := 16#8029040E#;
   TPM_E_KEY_NOT_LOADED : constant := 16#8029040F#;
   TPM_E_NO_KEY_CERTIFICATION : constant := 16#80290410#;
   TPM_E_KEY_NOT_FINALIZED : constant := 16#80290411#;
   TPM_E_ATTESTATION_CHALLENGE_NOT_SET : constant := 16#80290412#;
   TPM_E_NOT_PCR_BOUND : constant := 16#80290413#;
   TPM_E_KEY_ALREADY_FINALIZED : constant := 16#80290414#;
   TPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED : constant := 16#80290415#;
   TPM_E_KEY_USAGE_POLICY_INVALID : constant := 16#80290416#;
   TPM_E_SOFT_KEY_ERROR : constant := 16#80290417#;
   TPM_E_KEY_NOT_AUTHENTICATED : constant := 16#80290418#;
   TPM_E_PCP_KEY_NOT_AIK : constant := 16#80290419#;
   TPM_E_KEY_NOT_SIGNING_KEY : constant := 16#8029041A#;
   TPM_E_LOCKED_OUT : constant := 16#8029041B#;
   TPM_E_CLAIM_TYPE_NOT_SUPPORTED : constant := 16#8029041C#;
   TPM_E_VERSION_NOT_SUPPORTED : constant := 16#8029041D#;
   TPM_E_BUFFER_LENGTH_MISMATCH : constant := 16#8029041E#;
   TPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED : constant := 16#8029041F#;
   TPM_E_PCP_TICKET_MISSING : constant := 16#80290420#;
   TPM_E_PCP_RAW_POLICY_NOT_SUPPORTED : constant := 16#80290421#;
   TPM_E_PCP_KEY_HANDLE_INVALIDATED : constant := 16#80290422#;
   TPM_E_PCP_UNSUPPORTED_PSS_SALT : constant := 16#40290423#;
   TPM_E_PCP_PLATFORM_CLAIM_MAY_BE_OUTDATED : constant := 16#40290424#;
   TPM_E_PCP_PLATFORM_CLAIM_OUTDATED : constant := 16#40290425#;
   TPM_E_PCP_PLATFORM_CLAIM_REBOOT : constant := 16#40290426#;
   TPM_E_ZERO_EXHAUST_ENABLED : constant := 16#80290500#;
   TPM_E_PROVISIONING_INCOMPLETE : constant := 16#80290600#;
   TPM_E_INVALID_OWNER_AUTH : constant := 16#80290601#;
   TPM_E_TOO_MUCH_DATA : constant := 16#80290602#;
   PLA_E_DCS_NOT_FOUND : constant := 16#80300002#;
   PLA_E_DCS_IN_USE : constant := 16#803000AA#;
   PLA_E_TOO_MANY_FOLDERS : constant := 16#80300045#;
   PLA_E_NO_MIN_DISK : constant := 16#80300070#;
   PLA_E_DCS_ALREADY_EXISTS : constant := 16#803000B7#;
   PLA_S_PROPERTY_IGNORED : constant := 16#00300100#;
   PLA_E_PROPERTY_CONFLICT : constant := 16#80300101#;
   PLA_E_DCS_SINGLETON_REQUIRED : constant := 16#80300102#;
   PLA_E_CREDENTIALS_REQUIRED : constant := 16#80300103#;
   PLA_E_DCS_NOT_RUNNING : constant := 16#80300104#;
   PLA_E_CONFLICT_INCL_EXCL_API : constant := 16#80300105#;
   PLA_E_NETWORK_EXE_NOT_VALID : constant := 16#80300106#;
   PLA_E_EXE_ALREADY_CONFIGURED : constant := 16#80300107#;
   PLA_E_EXE_PATH_NOT_VALID : constant := 16#80300108#;
   PLA_E_DC_ALREADY_EXISTS : constant := 16#80300109#;
   PLA_E_DCS_START_WAIT_TIMEOUT : constant := 16#8030010A#;
   PLA_E_DC_START_WAIT_TIMEOUT : constant := 16#8030010B#;
   PLA_E_REPORT_WAIT_TIMEOUT : constant := 16#8030010C#;
   PLA_E_NO_DUPLICATES : constant := 16#8030010D#;
   PLA_E_EXE_FULL_PATH_REQUIRED : constant := 16#8030010E#;
   PLA_E_INVALID_SESSION_NAME : constant := 16#8030010F#;
   PLA_E_PLA_CHANNEL_NOT_ENABLED : constant := 16#80300110#;
   PLA_E_TASKSCHED_CHANNEL_NOT_ENABLED : constant := 16#80300111#;
   PLA_E_RULES_MANAGER_FAILED : constant := 16#80300112#;
   PLA_E_CABAPI_FAILURE : constant := 16#80300113#;
   FVE_E_LOCKED_VOLUME : constant := 16#80310000#;
   FVE_E_NOT_ENCRYPTED : constant := 16#80310001#;
   FVE_E_NO_TPM_BIOS : constant := 16#80310002#;
   FVE_E_NO_MBR_METRIC : constant := 16#80310003#;
   FVE_E_NO_BOOTSECTOR_METRIC : constant := 16#80310004#;
   FVE_E_NO_BOOTMGR_METRIC : constant := 16#80310005#;
   FVE_E_WRONG_BOOTMGR : constant := 16#80310006#;
   FVE_E_SECURE_KEY_REQUIRED : constant := 16#80310007#;
   FVE_E_NOT_ACTIVATED : constant := 16#80310008#;
   FVE_E_ACTION_NOT_ALLOWED : constant := 16#80310009#;
   FVE_E_AD_SCHEMA_NOT_INSTALLED : constant := 16#8031000A#;
   FVE_E_AD_INVALID_DATATYPE : constant := 16#8031000B#;
   FVE_E_AD_INVALID_DATASIZE : constant := 16#8031000C#;
   FVE_E_AD_NO_VALUES : constant := 16#8031000D#;
   FVE_E_AD_ATTR_NOT_SET : constant := 16#8031000E#;
   FVE_E_AD_GUID_NOT_FOUND : constant := 16#8031000F#;
   FVE_E_BAD_INFORMATION : constant := 16#80310010#;
   FVE_E_TOO_SMALL : constant := 16#80310011#;
   FVE_E_SYSTEM_VOLUME : constant := 16#80310012#;
   FVE_E_FAILED_WRONG_FS : constant := 16#80310013#;
   FVE_E_BAD_PARTITION_SIZE : constant := 16#80310014#;
   FVE_E_NOT_SUPPORTED : constant := 16#80310015#;
   FVE_E_BAD_DATA : constant := 16#80310016#;
   FVE_E_VOLUME_NOT_BOUND : constant := 16#80310017#;
   FVE_E_TPM_NOT_OWNED : constant := 16#80310018#;
   FVE_E_NOT_DATA_VOLUME : constant := 16#80310019#;
   FVE_E_AD_INSUFFICIENT_BUFFER : constant := 16#8031001A#;
   FVE_E_CONV_READ : constant := 16#8031001B#;
   FVE_E_CONV_WRITE : constant := 16#8031001C#;
   FVE_E_KEY_REQUIRED : constant := 16#8031001D#;
   FVE_E_CLUSTERING_NOT_SUPPORTED : constant := 16#8031001E#;
   FVE_E_VOLUME_BOUND_ALREADY : constant := 16#8031001F#;
   FVE_E_OS_NOT_PROTECTED : constant := 16#80310020#;
   FVE_E_PROTECTION_DISABLED : constant := 16#80310021#;
   FVE_E_RECOVERY_KEY_REQUIRED : constant := 16#80310022#;
   FVE_E_FOREIGN_VOLUME : constant := 16#80310023#;
   FVE_E_OVERLAPPED_UPDATE : constant := 16#80310024#;
   FVE_E_TPM_SRK_AUTH_NOT_ZERO : constant := 16#80310025#;
   FVE_E_FAILED_SECTOR_SIZE : constant := 16#80310026#;
   FVE_E_FAILED_AUTHENTICATION : constant := 16#80310027#;
   FVE_E_NOT_OS_VOLUME : constant := 16#80310028#;
   FVE_E_AUTOUNLOCK_ENABLED : constant := 16#80310029#;
   FVE_E_WRONG_BOOTSECTOR : constant := 16#8031002A#;
   FVE_E_WRONG_SYSTEM_FS : constant := 16#8031002B#;
   FVE_E_POLICY_PASSWORD_REQUIRED : constant := 16#8031002C#;
   FVE_E_CANNOT_SET_FVEK_ENCRYPTED : constant := 16#8031002D#;
   FVE_E_CANNOT_ENCRYPT_NO_KEY : constant := 16#8031002E#;
   FVE_E_BOOTABLE_CDDVD : constant := 16#80310030#;
   FVE_E_PROTECTOR_EXISTS : constant := 16#80310031#;
   FVE_E_RELATIVE_PATH : constant := 16#80310032#;
   FVE_E_PROTECTOR_NOT_FOUND : constant := 16#80310033#;
   FVE_E_INVALID_KEY_FORMAT : constant := 16#80310034#;
   FVE_E_INVALID_PASSWORD_FORMAT : constant := 16#80310035#;
   FVE_E_FIPS_RNG_CHECK_FAILED : constant := 16#80310036#;
   FVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD : constant := 16#80310037#;
   FVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT : constant := 16#80310038#;
   FVE_E_NOT_DECRYPTED : constant := 16#80310039#;
   FVE_E_INVALID_PROTECTOR_TYPE : constant := 16#8031003A#;
   FVE_E_NO_PROTECTORS_TO_TEST : constant := 16#8031003B#;
   FVE_E_KEYFILE_NOT_FOUND : constant := 16#8031003C#;
   FVE_E_KEYFILE_INVALID : constant := 16#8031003D#;
   FVE_E_KEYFILE_NO_VMK : constant := 16#8031003E#;
   FVE_E_TPM_DISABLED : constant := 16#8031003F#;
   FVE_E_NOT_ALLOWED_IN_SAFE_MODE : constant := 16#80310040#;
   FVE_E_TPM_INVALID_PCR : constant := 16#80310041#;
   FVE_E_TPM_NO_VMK : constant := 16#80310042#;
   FVE_E_PIN_INVALID : constant := 16#80310043#;
   FVE_E_AUTH_INVALID_APPLICATION : constant := 16#80310044#;
   FVE_E_AUTH_INVALID_CONFIG : constant := 16#80310045#;
   FVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED : constant := 16#80310046#;
   FVE_E_FS_NOT_EXTENDED : constant := 16#80310047#;
   FVE_E_FIRMWARE_TYPE_NOT_SUPPORTED : constant := 16#80310048#;
   FVE_E_NO_LICENSE : constant := 16#80310049#;
   FVE_E_NOT_ON_STACK : constant := 16#8031004A#;
   FVE_E_FS_MOUNTED : constant := 16#8031004B#;
   FVE_E_TOKEN_NOT_IMPERSONATED : constant := 16#8031004C#;
   FVE_E_DRY_RUN_FAILED : constant := 16#8031004D#;
   FVE_E_REBOOT_REQUIRED : constant := 16#8031004E#;
   FVE_E_DEBUGGER_ENABLED : constant := 16#8031004F#;
   FVE_E_RAW_ACCESS : constant := 16#80310050#;
   FVE_E_RAW_BLOCKED : constant := 16#80310051#;
   FVE_E_BCD_APPLICATIONS_PATH_INCORRECT : constant := 16#80310052#;
   FVE_E_NOT_ALLOWED_IN_VERSION : constant := 16#80310053#;
   FVE_E_NO_AUTOUNLOCK_MASTER_KEY : constant := 16#80310054#;
   FVE_E_MOR_FAILED : constant := 16#80310055#;
   FVE_E_HIDDEN_VOLUME : constant := 16#80310056#;
   FVE_E_TRANSIENT_STATE : constant := 16#80310057#;
   FVE_E_PUBKEY_NOT_ALLOWED : constant := 16#80310058#;
   FVE_E_VOLUME_HANDLE_OPEN : constant := 16#80310059#;
   FVE_E_NO_FEATURE_LICENSE : constant := 16#8031005A#;
   FVE_E_INVALID_STARTUP_OPTIONS : constant := 16#8031005B#;
   FVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED : constant := 16#8031005C#;
   FVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED : constant := 16#8031005D#;
   FVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED : constant := 16#8031005E#;
   FVE_E_POLICY_RECOVERY_KEY_REQUIRED : constant := 16#8031005F#;
   FVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED : constant := 16#80310060#;
   FVE_E_POLICY_STARTUP_PIN_REQUIRED : constant := 16#80310061#;
   FVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED : constant := 16#80310062#;
   FVE_E_POLICY_STARTUP_KEY_REQUIRED : constant := 16#80310063#;
   FVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED : constant := 16#80310064#;
   FVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED : constant := 16#80310065#;
   FVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED : constant := 16#80310066#;
   FVE_E_POLICY_STARTUP_TPM_REQUIRED : constant := 16#80310067#;
   FVE_E_POLICY_INVALID_PIN_LENGTH : constant := 16#80310068#;
   FVE_E_KEY_PROTECTOR_NOT_SUPPORTED : constant := 16#80310069#;
   FVE_E_POLICY_PASSPHRASE_NOT_ALLOWED : constant := 16#8031006A#;
   FVE_E_POLICY_PASSPHRASE_REQUIRED : constant := 16#8031006B#;
   FVE_E_FIPS_PREVENTS_PASSPHRASE : constant := 16#8031006C#;
   FVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED : constant := 16#8031006D#;
   FVE_E_INVALID_BITLOCKER_OID : constant := 16#8031006E#;
   FVE_E_VOLUME_TOO_SMALL : constant := 16#8031006F#;
   FVE_E_DV_NOT_SUPPORTED_ON_FS : constant := 16#80310070#;
   FVE_E_DV_NOT_ALLOWED_BY_GP : constant := 16#80310071#;
   FVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED : constant := 16#80310072#;
   FVE_E_POLICY_USER_CERTIFICATE_REQUIRED : constant := 16#80310073#;
   FVE_E_POLICY_USER_CERT_MUST_BE_HW : constant := 16#80310074#;
   FVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED : constant := 16#80310075#;
   FVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED : constant := 16#80310076#;
   FVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED : constant := 16#80310077#;
   FVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED : constant := 16#80310078#;
   FVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED : constant := 16#80310079#;
   FVE_E_POLICY_INVALID_PASSPHRASE_LENGTH : constant := 16#80310080#;
   FVE_E_POLICY_PASSPHRASE_TOO_SIMPLE : constant := 16#80310081#;
   FVE_E_RECOVERY_PARTITION : constant := 16#80310082#;
   FVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON : constant := 16#80310083#;
   FVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON : constant := 16#80310084#;
   FVE_E_NON_BITLOCKER_OID : constant := 16#80310085#;
   FVE_E_POLICY_PROHIBITS_SELFSIGNED : constant := 16#80310086#;
   FVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED : constant := 16#80310087#;
   FVE_E_CONV_RECOVERY_FAILED : constant := 16#80310088#;
   FVE_E_VIRTUALIZED_SPACE_TOO_BIG : constant := 16#80310089#;
   FVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON : constant := 16#80310090#;
   FVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON : constant := 16#80310091#;
   FVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON : constant := 16#80310092#;
   FVE_E_NON_BITLOCKER_KU : constant := 16#80310093#;
   FVE_E_PRIVATEKEY_AUTH_FAILED : constant := 16#80310094#;
   FVE_E_REMOVAL_OF_DRA_FAILED : constant := 16#80310095#;
   FVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME : constant := 16#80310096#;
   FVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME : constant := 16#80310097#;
   FVE_E_FIPS_HASH_KDF_NOT_ALLOWED : constant := 16#80310098#;
   FVE_E_ENH_PIN_INVALID : constant := 16#80310099#;
   FVE_E_INVALID_PIN_CHARS : constant := 16#8031009A#;
   FVE_E_INVALID_DATUM_TYPE : constant := 16#8031009B#;
   FVE_E_EFI_ONLY : constant := 16#8031009C#;
   FVE_E_MULTIPLE_NKP_CERTS : constant := 16#8031009D#;
   FVE_E_REMOVAL_OF_NKP_FAILED : constant := 16#8031009E#;
   FVE_E_INVALID_NKP_CERT : constant := 16#8031009F#;
   FVE_E_NO_EXISTING_PIN : constant := 16#803100A0#;
   FVE_E_PROTECTOR_CHANGE_PIN_MISMATCH : constant := 16#803100A1#;
   FVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED : constant := 16#803100A2#;
   FVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED : constant := 16#803100A3#;
   FVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII : constant := 16#803100A4#;
   FVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE : constant := 16#803100A5#;
   FVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE : constant := 16#803100A6#;
   FVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE : constant := 16#803100A7#;
   FVE_E_NO_EXISTING_PASSPHRASE : constant := 16#803100A8#;
   FVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH : constant := 16#803100A9#;
   FVE_E_PASSPHRASE_TOO_LONG : constant := 16#803100AA#;
   FVE_E_NO_PASSPHRASE_WITH_TPM : constant := 16#803100AB#;
   FVE_E_NO_TPM_WITH_PASSPHRASE : constant := 16#803100AC#;
   FVE_E_NOT_ALLOWED_ON_CSV_STACK : constant := 16#803100AD#;
   FVE_E_NOT_ALLOWED_ON_CLUSTER : constant := 16#803100AE#;
   FVE_E_EDRIVE_NO_FAILOVER_TO_SW : constant := 16#803100AF#;
   FVE_E_EDRIVE_BAND_IN_USE : constant := 16#803100B0#;
   FVE_E_EDRIVE_DISALLOWED_BY_GP : constant := 16#803100B1#;
   FVE_E_EDRIVE_INCOMPATIBLE_VOLUME : constant := 16#803100B2#;
   FVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING : constant := 16#803100B3#;
   FVE_E_EDRIVE_DV_NOT_SUPPORTED : constant := 16#803100B4#;
   FVE_E_NO_PREBOOT_KEYBOARD_DETECTED : constant := 16#803100B5#;
   FVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED : constant := 16#803100B6#;
   FVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE : constant := 16#803100B7#;
   FVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE : constant := 16#803100B8#;
   FVE_E_WIPE_CANCEL_NOT_APPLICABLE : constant := 16#803100B9#;
   FVE_E_SECUREBOOT_DISABLED : constant := 16#803100BA#;
   FVE_E_SECUREBOOT_CONFIGURATION_INVALID : constant := 16#803100BB#;
   FVE_E_EDRIVE_DRY_RUN_FAILED : constant := 16#803100BC#;
   FVE_E_SHADOW_COPY_PRESENT : constant := 16#803100BD#;
   FVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS : constant := 16#803100BE#;
   FVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE : constant := 16#803100BF#;
   FVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED : constant := 16#803100C0#;
   FVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED : constant := 16#803100C1#;
   FVE_E_LIVEID_ACCOUNT_SUSPENDED : constant := 16#803100C2#;
   FVE_E_LIVEID_ACCOUNT_BLOCKED : constant := 16#803100C3#;
   FVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES : constant := 16#803100C4#;
   FVE_E_DE_FIXED_DATA_NOT_SUPPORTED : constant := 16#803100C5#;
   FVE_E_DE_HARDWARE_NOT_COMPLIANT : constant := 16#803100C6#;
   FVE_E_DE_WINRE_NOT_CONFIGURED : constant := 16#803100C7#;
   FVE_E_DE_PROTECTION_SUSPENDED : constant := 16#803100C8#;
   FVE_E_DE_OS_VOLUME_NOT_PROTECTED : constant := 16#803100C9#;
   FVE_E_DE_DEVICE_LOCKEDOUT : constant := 16#803100CA#;
   FVE_E_DE_PROTECTION_NOT_YET_ENABLED : constant := 16#803100CB#;
   FVE_E_INVALID_PIN_CHARS_DETAILED : constant := 16#803100CC#;
   FVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE : constant := 16#803100CD#;
   FVE_E_DEVICELOCKOUT_COUNTER_MISMATCH : constant := 16#803100CE#;
   FVE_E_BUFFER_TOO_LARGE : constant := 16#803100CF#;
   FVE_E_NO_SUCH_CAPABILITY_ON_TARGET : constant := 16#803100D0#;
   FVE_E_DE_PREVENTED_FOR_OS : constant := 16#803100D1#;
   FVE_E_DE_VOLUME_OPTED_OUT : constant := 16#803100D2#;
   FVE_E_DE_VOLUME_NOT_SUPPORTED : constant := 16#803100D3#;
   FVE_E_EOW_NOT_SUPPORTED_IN_VERSION : constant := 16#803100D4#;
   FVE_E_ADBACKUP_NOT_ENABLED : constant := 16#803100D5#;
   FVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT : constant := 16#803100D6#;
   FVE_E_NOT_DE_VOLUME : constant := 16#803100D7#;
   FVE_E_PROTECTION_CANNOT_BE_DISABLED : constant := 16#803100D8#;
   FVE_E_OSV_KSR_NOT_ALLOWED : constant := 16#803100D9#;
   FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_OS_DRIVE : constant := 16#803100DA#;
   FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_FIXED_DRIVE : constant := 16#803100DB#;
   FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_REMOVABLE_DRIVE : constant := 16#803100DC#;
   FVE_E_KEY_ROTATION_NOT_SUPPORTED : constant := 16#803100DD#;
   FVE_E_EXECUTE_REQUEST_SENT_TOO_SOON : constant := 16#803100DE#;
   FVE_E_KEY_ROTATION_NOT_ENABLED : constant := 16#803100DF#;
   FVE_E_DEVICE_NOT_JOINED : constant := 16#803100E0#;
   FVE_E_AAD_ENDPOINT_BUSY : constant := 16#803100E1#;
   FWP_E_CALLOUT_NOT_FOUND : constant := 16#80320001#;
   FWP_E_CONDITION_NOT_FOUND : constant := 16#80320002#;
   FWP_E_FILTER_NOT_FOUND : constant := 16#80320003#;
   FWP_E_LAYER_NOT_FOUND : constant := 16#80320004#;
   FWP_E_PROVIDER_NOT_FOUND : constant := 16#80320005#;
   FWP_E_PROVIDER_CONTEXT_NOT_FOUND : constant := 16#80320006#;
   FWP_E_SUBLAYER_NOT_FOUND : constant := 16#80320007#;
   FWP_E_NOT_FOUND : constant := 16#80320008#;
   FWP_E_ALREADY_EXISTS : constant := 16#80320009#;
   FWP_E_IN_USE : constant := 16#8032000A#;
   FWP_E_DYNAMIC_SESSION_IN_PROGRESS : constant := 16#8032000B#;
   FWP_E_WRONG_SESSION : constant := 16#8032000C#;
   FWP_E_NO_TXN_IN_PROGRESS : constant := 16#8032000D#;
   FWP_E_TXN_IN_PROGRESS : constant := 16#8032000E#;
   FWP_E_TXN_ABORTED : constant := 16#8032000F#;
   FWP_E_SESSION_ABORTED : constant := 16#80320010#;
   FWP_E_INCOMPATIBLE_TXN : constant := 16#80320011#;
   FWP_E_TIMEOUT : constant := 16#80320012#;
   FWP_E_NET_EVENTS_DISABLED : constant := 16#80320013#;
   FWP_E_INCOMPATIBLE_LAYER : constant := 16#80320014#;
   FWP_E_KM_CLIENTS_ONLY : constant := 16#80320015#;
   FWP_E_LIFETIME_MISMATCH : constant := 16#80320016#;
   FWP_E_BUILTIN_OBJECT : constant := 16#80320017#;
   FWP_E_TOO_MANY_CALLOUTS : constant := 16#80320018#;
   FWP_E_NOTIFICATION_DROPPED : constant := 16#80320019#;
   FWP_E_TRAFFIC_MISMATCH : constant := 16#8032001A#;
   FWP_E_INCOMPATIBLE_SA_STATE : constant := 16#8032001B#;
   FWP_E_NULL_POINTER : constant := 16#8032001C#;
   FWP_E_INVALID_ENUMERATOR : constant := 16#8032001D#;
   FWP_E_INVALID_FLAGS : constant := 16#8032001E#;
   FWP_E_INVALID_NET_MASK : constant := 16#8032001F#;
   FWP_E_INVALID_RANGE : constant := 16#80320020#;
   FWP_E_INVALID_INTERVAL : constant := 16#80320021#;
   FWP_E_ZERO_LENGTH_ARRAY : constant := 16#80320022#;
   FWP_E_NULL_DISPLAY_NAME : constant := 16#80320023#;
   FWP_E_INVALID_ACTION_TYPE : constant := 16#80320024#;
   FWP_E_INVALID_WEIGHT : constant := 16#80320025#;
   FWP_E_MATCH_TYPE_MISMATCH : constant := 16#80320026#;
   FWP_E_TYPE_MISMATCH : constant := 16#80320027#;
   FWP_E_OUT_OF_BOUNDS : constant := 16#80320028#;
   FWP_E_RESERVED : constant := 16#80320029#;
   FWP_E_DUPLICATE_CONDITION : constant := 16#8032002A#;
   FWP_E_DUPLICATE_KEYMOD : constant := 16#8032002B#;
   FWP_E_ACTION_INCOMPATIBLE_WITH_LAYER : constant := 16#8032002C#;
   FWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER : constant := 16#8032002D#;
   FWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER : constant := 16#8032002E#;
   FWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT : constant := 16#8032002F#;
   FWP_E_INCOMPATIBLE_AUTH_METHOD : constant := 16#80320030#;
   FWP_E_INCOMPATIBLE_DH_GROUP : constant := 16#80320031#;
   FWP_E_EM_NOT_SUPPORTED : constant := 16#80320032#;
   FWP_E_NEVER_MATCH : constant := 16#80320033#;
   FWP_E_PROVIDER_CONTEXT_MISMATCH : constant := 16#80320034#;
   FWP_E_INVALID_PARAMETER : constant := 16#80320035#;
   FWP_E_TOO_MANY_SUBLAYERS : constant := 16#80320036#;
   FWP_E_CALLOUT_NOTIFICATION_FAILED : constant := 16#80320037#;
   FWP_E_INVALID_AUTH_TRANSFORM : constant := 16#80320038#;
   FWP_E_INVALID_CIPHER_TRANSFORM : constant := 16#80320039#;
   FWP_E_INCOMPATIBLE_CIPHER_TRANSFORM : constant := 16#8032003A#;
   FWP_E_INVALID_TRANSFORM_COMBINATION : constant := 16#8032003B#;
   FWP_E_DUPLICATE_AUTH_METHOD : constant := 16#8032003C#;
   FWP_E_INVALID_TUNNEL_ENDPOINT : constant := 16#8032003D#;
   FWP_E_L2_DRIVER_NOT_READY : constant := 16#8032003E#;
   FWP_E_KEY_DICTATOR_ALREADY_REGISTERED : constant := 16#8032003F#;
   FWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL : constant := 16#80320040#;
   FWP_E_CONNECTIONS_DISABLED : constant := 16#80320041#;
   FWP_E_INVALID_DNS_NAME : constant := 16#80320042#;
   FWP_E_STILL_ON : constant := 16#80320043#;
   FWP_E_IKEEXT_NOT_RUNNING : constant := 16#80320044#;
   FWP_E_DROP_NOICMP : constant := 16#80320104#;
   WS_S_ASYNC : constant := 16#003D0000#;
   WS_S_END : constant := 16#003D0001#;
   WS_E_INVALID_FORMAT : constant := 16#803D0000#;
   WS_E_OBJECT_FAULTED : constant := 16#803D0001#;
   WS_E_NUMERIC_OVERFLOW : constant := 16#803D0002#;
   WS_E_INVALID_OPERATION : constant := 16#803D0003#;
   WS_E_OPERATION_ABORTED : constant := 16#803D0004#;
   WS_E_ENDPOINT_ACCESS_DENIED : constant := 16#803D0005#;
   WS_E_OPERATION_TIMED_OUT : constant := 16#803D0006#;
   WS_E_OPERATION_ABANDONED : constant := 16#803D0007#;
   WS_E_QUOTA_EXCEEDED : constant := 16#803D0008#;
   WS_E_NO_TRANSLATION_AVAILABLE : constant := 16#803D0009#;
   WS_E_SECURITY_VERIFICATION_FAILURE : constant := 16#803D000A#;
   WS_E_ADDRESS_IN_USE : constant := 16#803D000B#;
   WS_E_ADDRESS_NOT_AVAILABLE : constant := 16#803D000C#;
   WS_E_ENDPOINT_NOT_FOUND : constant := 16#803D000D#;
   WS_E_ENDPOINT_NOT_AVAILABLE : constant := 16#803D000E#;
   WS_E_ENDPOINT_FAILURE : constant := 16#803D000F#;
   WS_E_ENDPOINT_UNREACHABLE : constant := 16#803D0010#;
   WS_E_ENDPOINT_ACTION_NOT_SUPPORTED : constant := 16#803D0011#;
   WS_E_ENDPOINT_TOO_BUSY : constant := 16#803D0012#;
   WS_E_ENDPOINT_FAULT_RECEIVED : constant := 16#803D0013#;
   WS_E_ENDPOINT_DISCONNECTED : constant := 16#803D0014#;
   WS_E_PROXY_FAILURE : constant := 16#803D0015#;
   WS_E_PROXY_ACCESS_DENIED : constant := 16#803D0016#;
   WS_E_NOT_SUPPORTED : constant := 16#803D0017#;
   WS_E_PROXY_REQUIRES_BASIC_AUTH : constant := 16#803D0018#;
   WS_E_PROXY_REQUIRES_DIGEST_AUTH : constant := 16#803D0019#;
   WS_E_PROXY_REQUIRES_NTLM_AUTH : constant := 16#803D001A#;
   WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH : constant := 16#803D001B#;
   WS_E_SERVER_REQUIRES_BASIC_AUTH : constant := 16#803D001C#;
   WS_E_SERVER_REQUIRES_DIGEST_AUTH : constant := 16#803D001D#;
   WS_E_SERVER_REQUIRES_NTLM_AUTH : constant := 16#803D001E#;
   WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH : constant := 16#803D001F#;
   WS_E_INVALID_ENDPOINT_URL : constant := 16#803D0020#;
   WS_E_OTHER : constant := 16#803D0021#;
   WS_E_SECURITY_TOKEN_EXPIRED : constant := 16#803D0022#;
   WS_E_SECURITY_SYSTEM_FAILURE : constant := 16#803D0023#;
   ERROR_NDIS_INTERFACE_CLOSING : constant := 16#80340002#;
   ERROR_NDIS_BAD_VERSION : constant := 16#80340004#;
   ERROR_NDIS_BAD_CHARACTERISTICS : constant := 16#80340005#;
   ERROR_NDIS_ADAPTER_NOT_FOUND : constant := 16#80340006#;
   ERROR_NDIS_OPEN_FAILED : constant := 16#80340007#;
   ERROR_NDIS_DEVICE_FAILED : constant := 16#80340008#;
   ERROR_NDIS_MULTICAST_FULL : constant := 16#80340009#;
   ERROR_NDIS_MULTICAST_EXISTS : constant := 16#8034000A#;
   ERROR_NDIS_MULTICAST_NOT_FOUND : constant := 16#8034000B#;
   ERROR_NDIS_REQUEST_ABORTED : constant := 16#8034000C#;
   ERROR_NDIS_RESET_IN_PROGRESS : constant := 16#8034000D#;
   ERROR_NDIS_NOT_SUPPORTED : constant := 16#803400BB#;
   ERROR_NDIS_INVALID_PACKET : constant := 16#8034000F#;
   ERROR_NDIS_ADAPTER_NOT_READY : constant := 16#80340011#;
   ERROR_NDIS_INVALID_LENGTH : constant := 16#80340014#;
   ERROR_NDIS_INVALID_DATA : constant := 16#80340015#;
   ERROR_NDIS_BUFFER_TOO_SHORT : constant := 16#80340016#;
   ERROR_NDIS_INVALID_OID : constant := 16#80340017#;
   ERROR_NDIS_ADAPTER_REMOVED : constant := 16#80340018#;
   ERROR_NDIS_UNSUPPORTED_MEDIA : constant := 16#80340019#;
   ERROR_NDIS_GROUP_ADDRESS_IN_USE : constant := 16#8034001A#;
   ERROR_NDIS_FILE_NOT_FOUND : constant := 16#8034001B#;
   ERROR_NDIS_ERROR_READING_FILE : constant := 16#8034001C#;
   ERROR_NDIS_ALREADY_MAPPED : constant := 16#8034001D#;
   ERROR_NDIS_RESOURCE_CONFLICT : constant := 16#8034001E#;
   ERROR_NDIS_MEDIA_DISCONNECTED : constant := 16#8034001F#;
   ERROR_NDIS_INVALID_ADDRESS : constant := 16#80340022#;
   ERROR_NDIS_INVALID_DEVICE_REQUEST : constant := 16#80340010#;
   ERROR_NDIS_PAUSED : constant := 16#8034002A#;
   ERROR_NDIS_INTERFACE_NOT_FOUND : constant := 16#8034002B#;
   ERROR_NDIS_UNSUPPORTED_REVISION : constant := 16#8034002C#;
   ERROR_NDIS_INVALID_PORT : constant := 16#8034002D#;
   ERROR_NDIS_INVALID_PORT_STATE : constant := 16#8034002E#;
   ERROR_NDIS_LOW_POWER_STATE : constant := 16#8034002F#;
   ERROR_NDIS_REINIT_REQUIRED : constant := 16#80340030#;
   ERROR_NDIS_NO_QUEUES : constant := 16#80340031#;
   ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED : constant := 16#80342000#;
   ERROR_NDIS_DOT11_MEDIA_IN_USE : constant := 16#80342001#;
   ERROR_NDIS_DOT11_POWER_STATE_INVALID : constant := 16#80342002#;
   ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL : constant := 16#80342003#;
   ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL : constant := 16#80342004#;
   ERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE : constant := 16#80342005#;
   ERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE : constant := 16#80342006#;
   ERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED : constant := 16#80342007#;
   ERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED : constant := 16#80342008#;
   ERROR_NDIS_INDICATION_REQUIRED : constant := 16#00340001#;
   ERROR_NDIS_OFFLOAD_POLICY : constant := 16#C034100F#;
   ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED : constant := 16#C0341012#;
   ERROR_NDIS_OFFLOAD_PATH_REJECTED : constant := 16#C0341013#;
   ERROR_HV_INVALID_HYPERCALL_CODE : constant := 16#C0350002#;
   ERROR_HV_INVALID_HYPERCALL_INPUT : constant := 16#C0350003#;
   ERROR_HV_INVALID_ALIGNMENT : constant := 16#C0350004#;
   ERROR_HV_INVALID_PARAMETER : constant := 16#C0350005#;
   ERROR_HV_ACCESS_DENIED : constant := 16#C0350006#;
   ERROR_HV_INVALID_PARTITION_STATE : constant := 16#C0350007#;
   ERROR_HV_OPERATION_DENIED : constant := 16#C0350008#;
   ERROR_HV_UNKNOWN_PROPERTY : constant := 16#C0350009#;
   ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE : constant := 16#C035000A#;
   ERROR_HV_INSUFFICIENT_MEMORY : constant := 16#C035000B#;
   ERROR_HV_PARTITION_TOO_DEEP : constant := 16#C035000C#;
   ERROR_HV_INVALID_PARTITION_ID : constant := 16#C035000D#;
   ERROR_HV_INVALID_VP_INDEX : constant := 16#C035000E#;
   ERROR_HV_INVALID_PORT_ID : constant := 16#C0350011#;
   ERROR_HV_INVALID_CONNECTION_ID : constant := 16#C0350012#;
   ERROR_HV_INSUFFICIENT_BUFFERS : constant := 16#C0350013#;
   ERROR_HV_NOT_ACKNOWLEDGED : constant := 16#C0350014#;
   ERROR_HV_INVALID_VP_STATE : constant := 16#C0350015#;
   ERROR_HV_ACKNOWLEDGED : constant := 16#C0350016#;
   ERROR_HV_INVALID_SAVE_RESTORE_STATE : constant := 16#C0350017#;
   ERROR_HV_INVALID_SYNIC_STATE : constant := 16#C0350018#;
   ERROR_HV_OBJECT_IN_USE : constant := 16#C0350019#;
   ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO : constant := 16#C035001A#;
   ERROR_HV_NO_DATA : constant := 16#C035001B#;
   ERROR_HV_INACTIVE : constant := 16#C035001C#;
   ERROR_HV_NO_RESOURCES : constant := 16#C035001D#;
   ERROR_HV_FEATURE_UNAVAILABLE : constant := 16#C035001E#;
   ERROR_HV_INSUFFICIENT_BUFFER : constant := 16#C0350033#;
   ERROR_HV_INSUFFICIENT_DEVICE_DOMAINS : constant := 16#C0350038#;
   ERROR_HV_CPUID_FEATURE_VALIDATION : constant := 16#C035003C#;
   ERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION : constant := 16#C035003D#;
   ERROR_HV_PROCESSOR_STARTUP_TIMEOUT : constant := 16#C035003E#;
   ERROR_HV_SMX_ENABLED : constant := 16#C035003F#;
   ERROR_HV_INVALID_LP_INDEX : constant := 16#C0350041#;
   ERROR_HV_INVALID_REGISTER_VALUE : constant := 16#C0350050#;
   ERROR_HV_INVALID_VTL_STATE : constant := 16#C0350051#;
   ERROR_HV_NX_NOT_DETECTED : constant := 16#C0350055#;
   ERROR_HV_INVALID_DEVICE_ID : constant := 16#C0350057#;
   ERROR_HV_INVALID_DEVICE_STATE : constant := 16#C0350058#;
   ERROR_HV_PENDING_PAGE_REQUESTS : constant := 16#00350059#;
   ERROR_HV_PAGE_REQUEST_INVALID : constant := 16#C0350060#;
   ERROR_HV_INVALID_CPU_GROUP_ID : constant := 16#C035006F#;
   ERROR_HV_INVALID_CPU_GROUP_STATE : constant := 16#C0350070#;
   ERROR_HV_OPERATION_FAILED : constant := 16#C0350071#;
   ERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE : constant := 16#C0350072#;
   ERROR_HV_INSUFFICIENT_ROOT_MEMORY : constant := 16#C0350073#;
   ERROR_HV_EVENT_BUFFER_ALREADY_FREED : constant := 16#C0350074#;
   ERROR_HV_INSUFFICIENT_CONTIGUOUS_MEMORY : constant := 16#C0350075#;
   ERROR_HV_NOT_PRESENT : constant := 16#C0351000#;
   ERROR_VID_DUPLICATE_HANDLER : constant := 16#C0370001#;
   ERROR_VID_TOO_MANY_HANDLERS : constant := 16#C0370002#;
   ERROR_VID_QUEUE_FULL : constant := 16#C0370003#;
   ERROR_VID_HANDLER_NOT_PRESENT : constant := 16#C0370004#;
   ERROR_VID_INVALID_OBJECT_NAME : constant := 16#C0370005#;
   ERROR_VID_PARTITION_NAME_TOO_LONG : constant := 16#C0370006#;
   ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG : constant := 16#C0370007#;
   ERROR_VID_PARTITION_ALREADY_EXISTS : constant := 16#C0370008#;
   ERROR_VID_PARTITION_DOES_NOT_EXIST : constant := 16#C0370009#;
   ERROR_VID_PARTITION_NAME_NOT_FOUND : constant := 16#C037000A#;
   ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS : constant := 16#C037000B#;
   ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT : constant := 16#C037000C#;
   ERROR_VID_MB_STILL_REFERENCED : constant := 16#C037000D#;
   ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED : constant := 16#C037000E#;
   ERROR_VID_INVALID_NUMA_SETTINGS : constant := 16#C037000F#;
   ERROR_VID_INVALID_NUMA_NODE_INDEX : constant := 16#C0370010#;
   ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED : constant := 16#C0370011#;
   ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE : constant := 16#C0370012#;
   ERROR_VID_PAGE_RANGE_OVERFLOW : constant := 16#C0370013#;
   ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE : constant := 16#C0370014#;
   ERROR_VID_INVALID_GPA_RANGE_HANDLE : constant := 16#C0370015#;
   ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE : constant := 16#C0370016#;
   ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED : constant := 16#C0370017#;
   ERROR_VID_INVALID_PPM_HANDLE : constant := 16#C0370018#;
   ERROR_VID_MBPS_ARE_LOCKED : constant := 16#C0370019#;
   ERROR_VID_MESSAGE_QUEUE_CLOSED : constant := 16#C037001A#;
   ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED : constant := 16#C037001B#;
   ERROR_VID_STOP_PENDING : constant := 16#C037001C#;
   ERROR_VID_INVALID_PROCESSOR_STATE : constant := 16#C037001D#;
   ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT : constant := 16#C037001E#;
   ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED : constant := 16#C037001F#;
   ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET : constant := 16#C0370020#;
   ERROR_VID_MMIO_RANGE_DESTROYED : constant := 16#C0370021#;
   ERROR_VID_INVALID_CHILD_GPA_PAGE_SET : constant := 16#C0370022#;
   ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED : constant := 16#C0370023#;
   ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL : constant := 16#C0370024#;
   ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE : constant := 16#C0370025#;
   ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT : constant := 16#C0370026#;
   ERROR_VID_SAVED_STATE_CORRUPT : constant := 16#C0370027#;
   ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM : constant := 16#C0370028#;
   ERROR_VID_SAVED_STATE_INCOMPATIBLE : constant := 16#C0370029#;
   ERROR_VID_VTL_ACCESS_DENIED : constant := 16#C037002A#;
   ERROR_VMCOMPUTE_TERMINATED_DURING_START : constant := 16#C0370100#;
   ERROR_VMCOMPUTE_IMAGE_MISMATCH : constant := 16#C0370101#;
   ERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED : constant := 16#C0370102#;
   ERROR_VMCOMPUTE_OPERATION_PENDING : constant := 16#C0370103#;
   ERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS : constant := 16#C0370104#;
   ERROR_VMCOMPUTE_INVALID_STATE : constant := 16#C0370105#;
   ERROR_VMCOMPUTE_UNEXPECTED_EXIT : constant := 16#C0370106#;
   ERROR_VMCOMPUTE_TERMINATED : constant := 16#C0370107#;
   ERROR_VMCOMPUTE_CONNECT_FAILED : constant := 16#C0370108#;
   ERROR_VMCOMPUTE_TIMEOUT : constant := 16#C0370109#;
   ERROR_VMCOMPUTE_CONNECTION_CLOSED : constant := 16#C037010A#;
   ERROR_VMCOMPUTE_UNKNOWN_MESSAGE : constant := 16#C037010B#;
   ERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION : constant := 16#C037010C#;
   ERROR_VMCOMPUTE_INVALID_JSON : constant := 16#C037010D#;
   ERROR_VMCOMPUTE_SYSTEM_NOT_FOUND : constant := 16#C037010E#;
   ERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS : constant := 16#C037010F#;
   ERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED : constant := 16#C0370110#;
   ERROR_VMCOMPUTE_PROTOCOL_ERROR : constant := 16#C0370111#;
   ERROR_VMCOMPUTE_INVALID_LAYER : constant := 16#C0370112#;
   ERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED : constant := 16#C0370113#;
   HCS_E_TERMINATED_DURING_START : constant := 16#80370100#;
   HCS_E_IMAGE_MISMATCH : constant := 16#80370101#;
   HCS_E_HYPERV_NOT_INSTALLED : constant := 16#80370102#;
   HCS_E_INVALID_STATE : constant := 16#80370105#;
   HCS_E_UNEXPECTED_EXIT : constant := 16#80370106#;
   HCS_E_TERMINATED : constant := 16#80370107#;
   HCS_E_CONNECT_FAILED : constant := 16#80370108#;
   HCS_E_CONNECTION_TIMEOUT : constant := 16#80370109#;
   HCS_E_CONNECTION_CLOSED : constant := 16#8037010A#;
   HCS_E_UNKNOWN_MESSAGE : constant := 16#8037010B#;
   HCS_E_UNSUPPORTED_PROTOCOL_VERSION : constant := 16#8037010C#;
   HCS_E_INVALID_JSON : constant := 16#8037010D#;
   HCS_E_SYSTEM_NOT_FOUND : constant := 16#8037010E#;
   HCS_E_SYSTEM_ALREADY_EXISTS : constant := 16#8037010F#;
   HCS_E_SYSTEM_ALREADY_STOPPED : constant := 16#80370110#;
   HCS_E_PROTOCOL_ERROR : constant := 16#80370111#;
   HCS_E_INVALID_LAYER : constant := 16#80370112#;
   HCS_E_WINDOWS_INSIDER_REQUIRED : constant := 16#80370113#;
   HCS_E_SERVICE_NOT_AVAILABLE : constant := 16#80370114#;
   HCS_E_OPERATION_NOT_STARTED : constant := 16#80370115#;
   HCS_E_OPERATION_ALREADY_STARTED : constant := 16#80370116#;
   HCS_E_OPERATION_PENDING : constant := 16#80370117#;
   HCS_E_OPERATION_TIMEOUT : constant := 16#80370118#;
   HCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET : constant := 16#80370119#;
   HCS_E_OPERATION_RESULT_ALLOCATION_FAILED : constant := 16#8037011A#;
   HCS_E_ACCESS_DENIED : constant := 16#8037011B#;
   HCS_E_GUEST_CRITICAL_ERROR : constant := 16#8037011C#;
   HCS_E_PROCESS_INFO_NOT_AVAILABLE : constant := 16#8037011D#;
   HCS_E_SERVICE_DISCONNECT : constant := 16#8037011E#;
   HCS_E_PROCESS_ALREADY_STOPPED : constant := 16#8037011F#;
   ERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND : constant := 16#C0370200#;
   ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED : constant := 16#80370001#;
   WHV_E_UNKNOWN_CAPABILITY : constant := 16#80370300#;
   WHV_E_INSUFFICIENT_BUFFER : constant := 16#80370301#;
   WHV_E_UNKNOWN_PROPERTY : constant := 16#80370302#;
   WHV_E_UNSUPPORTED_HYPERVISOR_CONFIG : constant := 16#80370303#;
   WHV_E_INVALID_PARTITION_CONFIG : constant := 16#80370304#;
   WHV_E_GPA_RANGE_NOT_FOUND : constant := 16#80370305#;
   WHV_E_VP_ALREADY_EXISTS : constant := 16#80370306#;
   WHV_E_VP_DOES_NOT_EXIST : constant := 16#80370307#;
   WHV_E_INVALID_VP_STATE : constant := 16#80370308#;
   WHV_E_INVALID_VP_REGISTER_NAME : constant := 16#80370309#;
   WHV_E_UNSUPPORTED_PROCESSOR_CONFIG : constant := 16#80370310#;
   ERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND : constant := 16#C0370400#;
   ERROR_VSMB_SAVED_STATE_CORRUPT : constant := 16#C0370401#;
   VM_SAVED_STATE_DUMP_E_PARTITION_STATE_NOT_FOUND : constant := 16#C0370500#;
   VM_SAVED_STATE_DUMP_E_GUEST_MEMORY_NOT_FOUND : constant := 16#C0370501#;
   VM_SAVED_STATE_DUMP_E_NO_VP_FOUND_IN_PARTITION_STATE : constant := 16#C0370502#;
   VM_SAVED_STATE_DUMP_E_NESTED_VIRTUALIZATION_NOT_SUPPORTED : constant := 16#C0370503#;
   VM_SAVED_STATE_DUMP_E_WINDOWS_KERNEL_IMAGE_NOT_FOUND : constant := 16#C0370504#;
   VM_SAVED_STATE_DUMP_E_PXE_NOT_PRESENT : constant := 16#C0370505#;
   VM_SAVED_STATE_DUMP_E_PDPTE_NOT_PRESENT : constant := 16#C0370506#;
   VM_SAVED_STATE_DUMP_E_PDE_NOT_PRESENT : constant := 16#C0370507#;
   VM_SAVED_STATE_DUMP_E_PTE_NOT_PRESENT : constant := 16#C0370508#;
   ERROR_VOLMGR_INCOMPLETE_REGENERATION : constant := 16#80380001#;
   ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION : constant := 16#80380002#;
   ERROR_VOLMGR_DATABASE_FULL : constant := 16#C0380001#;
   ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED : constant := 16#C0380002#;
   ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC : constant := 16#C0380003#;
   ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED : constant := 16#C0380004#;
   ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME : constant := 16#C0380005#;
   ERROR_VOLMGR_DISK_DUPLICATE : constant := 16#C0380006#;
   ERROR_VOLMGR_DISK_DYNAMIC : constant := 16#C0380007#;
   ERROR_VOLMGR_DISK_ID_INVALID : constant := 16#C0380008#;
   ERROR_VOLMGR_DISK_INVALID : constant := 16#C0380009#;
   ERROR_VOLMGR_DISK_LAST_VOTER : constant := 16#C038000A#;
   ERROR_VOLMGR_DISK_LAYOUT_INVALID : constant := 16#C038000B#;
   ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS : constant := 16#C038000C#;
   ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED : constant := 16#C038000D#;
   ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL : constant := 16#C038000E#;
   ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS : constant := 16#C038000F#;
   ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS : constant := 16#C0380010#;
   ERROR_VOLMGR_DISK_MISSING : constant := 16#C0380011#;
   ERROR_VOLMGR_DISK_NOT_EMPTY : constant := 16#C0380012#;
   ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE : constant := 16#C0380013#;
   ERROR_VOLMGR_DISK_REVECTORING_FAILED : constant := 16#C0380014#;
   ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID : constant := 16#C0380015#;
   ERROR_VOLMGR_DISK_SET_NOT_CONTAINED : constant := 16#C0380016#;
   ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS : constant := 16#C0380017#;
   ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES : constant := 16#C0380018#;
   ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED : constant := 16#C0380019#;
   ERROR_VOLMGR_EXTENT_ALREADY_USED : constant := 16#C038001A#;
   ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS : constant := 16#C038001B#;
   ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION : constant := 16#C038001C#;
   ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED : constant := 16#C038001D#;
   ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION : constant := 16#C038001E#;
   ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH : constant := 16#C038001F#;
   ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED : constant := 16#C0380020#;
   ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID : constant := 16#C0380021#;
   ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS : constant := 16#C0380022#;
   ERROR_VOLMGR_MEMBER_IN_SYNC : constant := 16#C0380023#;
   ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE : constant := 16#C0380024#;
   ERROR_VOLMGR_MEMBER_INDEX_INVALID : constant := 16#C0380025#;
   ERROR_VOLMGR_MEMBER_MISSING : constant := 16#C0380026#;
   ERROR_VOLMGR_MEMBER_NOT_DETACHED : constant := 16#C0380027#;
   ERROR_VOLMGR_MEMBER_REGENERATING : constant := 16#C0380028#;
   ERROR_VOLMGR_ALL_DISKS_FAILED : constant := 16#C0380029#;
   ERROR_VOLMGR_NO_REGISTERED_USERS : constant := 16#C038002A#;
   ERROR_VOLMGR_NO_SUCH_USER : constant := 16#C038002B#;
   ERROR_VOLMGR_NOTIFICATION_RESET : constant := 16#C038002C#;
   ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID : constant := 16#C038002D#;
   ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID : constant := 16#C038002E#;
   ERROR_VOLMGR_PACK_DUPLICATE : constant := 16#C038002F#;
   ERROR_VOLMGR_PACK_ID_INVALID : constant := 16#C0380030#;
   ERROR_VOLMGR_PACK_INVALID : constant := 16#C0380031#;
   ERROR_VOLMGR_PACK_NAME_INVALID : constant := 16#C0380032#;
   ERROR_VOLMGR_PACK_OFFLINE : constant := 16#C0380033#;
   ERROR_VOLMGR_PACK_HAS_QUORUM : constant := 16#C0380034#;
   ERROR_VOLMGR_PACK_WITHOUT_QUORUM : constant := 16#C0380035#;
   ERROR_VOLMGR_PARTITION_STYLE_INVALID : constant := 16#C0380036#;
   ERROR_VOLMGR_PARTITION_UPDATE_FAILED : constant := 16#C0380037#;
   ERROR_VOLMGR_PLEX_IN_SYNC : constant := 16#C0380038#;
   ERROR_VOLMGR_PLEX_INDEX_DUPLICATE : constant := 16#C0380039#;
   ERROR_VOLMGR_PLEX_INDEX_INVALID : constant := 16#C038003A#;
   ERROR_VOLMGR_PLEX_LAST_ACTIVE : constant := 16#C038003B#;
   ERROR_VOLMGR_PLEX_MISSING : constant := 16#C038003C#;
   ERROR_VOLMGR_PLEX_REGENERATING : constant := 16#C038003D#;
   ERROR_VOLMGR_PLEX_TYPE_INVALID : constant := 16#C038003E#;
   ERROR_VOLMGR_PLEX_NOT_RAID5 : constant := 16#C038003F#;
   ERROR_VOLMGR_PLEX_NOT_SIMPLE : constant := 16#C0380040#;
   ERROR_VOLMGR_STRUCTURE_SIZE_INVALID : constant := 16#C0380041#;
   ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS : constant := 16#C0380042#;
   ERROR_VOLMGR_TRANSACTION_IN_PROGRESS : constant := 16#C0380043#;
   ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE : constant := 16#C0380044#;
   ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK : constant := 16#C0380045#;
   ERROR_VOLMGR_VOLUME_ID_INVALID : constant := 16#C0380046#;
   ERROR_VOLMGR_VOLUME_LENGTH_INVALID : constant := 16#C0380047#;
   ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE : constant := 16#C0380048#;
   ERROR_VOLMGR_VOLUME_NOT_MIRRORED : constant := 16#C0380049#;
   ERROR_VOLMGR_VOLUME_NOT_RETAINED : constant := 16#C038004A#;
   ERROR_VOLMGR_VOLUME_OFFLINE : constant := 16#C038004B#;
   ERROR_VOLMGR_VOLUME_RETAINED : constant := 16#C038004C#;
   ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID : constant := 16#C038004D#;
   ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE : constant := 16#C038004E#;
   ERROR_VOLMGR_BAD_BOOT_DISK : constant := 16#C038004F#;
   ERROR_VOLMGR_PACK_CONFIG_OFFLINE : constant := 16#C0380050#;
   ERROR_VOLMGR_PACK_CONFIG_ONLINE : constant := 16#C0380051#;
   ERROR_VOLMGR_NOT_PRIMARY_PACK : constant := 16#C0380052#;
   ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED : constant := 16#C0380053#;
   ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID : constant := 16#C0380054#;
   ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID : constant := 16#C0380055#;
   ERROR_VOLMGR_VOLUME_MIRRORED : constant := 16#C0380056#;
   ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED : constant := 16#C0380057#;
   ERROR_VOLMGR_NO_VALID_LOG_COPIES : constant := 16#C0380058#;
   ERROR_VOLMGR_PRIMARY_PACK_PRESENT : constant := 16#C0380059#;
   ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID : constant := 16#C038005A#;
   ERROR_VOLMGR_MIRROR_NOT_SUPPORTED : constant := 16#C038005B#;
   ERROR_VOLMGR_RAID5_NOT_SUPPORTED : constant := 16#C038005C#;
   ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED : constant := 16#80390001#;
   ERROR_BCD_TOO_MANY_ELEMENTS : constant := 16#C0390002#;
   ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED : constant := 16#80390003#;
   ERROR_VHD_DRIVE_FOOTER_MISSING : constant := 16#C03A0001#;
   ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH : constant := 16#C03A0002#;
   ERROR_VHD_DRIVE_FOOTER_CORRUPT : constant := 16#C03A0003#;
   ERROR_VHD_FORMAT_UNKNOWN : constant := 16#C03A0004#;
   ERROR_VHD_FORMAT_UNSUPPORTED_VERSION : constant := 16#C03A0005#;
   ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH : constant := 16#C03A0006#;
   ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION : constant := 16#C03A0007#;
   ERROR_VHD_SPARSE_HEADER_CORRUPT : constant := 16#C03A0008#;
   ERROR_VHD_BLOCK_ALLOCATION_FAILURE : constant := 16#C03A0009#;
   ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT : constant := 16#C03A000A#;
   ERROR_VHD_INVALID_BLOCK_SIZE : constant := 16#C03A000B#;
   ERROR_VHD_BITMAP_MISMATCH : constant := 16#C03A000C#;
   ERROR_VHD_PARENT_VHD_NOT_FOUND : constant := 16#C03A000D#;
   ERROR_VHD_CHILD_PARENT_ID_MISMATCH : constant := 16#C03A000E#;
   ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH : constant := 16#C03A000F#;
   ERROR_VHD_METADATA_READ_FAILURE : constant := 16#C03A0010#;
   ERROR_VHD_METADATA_WRITE_FAILURE : constant := 16#C03A0011#;
   ERROR_VHD_INVALID_SIZE : constant := 16#C03A0012#;
   ERROR_VHD_INVALID_FILE_SIZE : constant := 16#C03A0013#;
   ERROR_VIRTDISK_PROVIDER_NOT_FOUND : constant := 16#C03A0014#;
   ERROR_VIRTDISK_NOT_VIRTUAL_DISK : constant := 16#C03A0015#;
   ERROR_VHD_PARENT_VHD_ACCESS_DENIED : constant := 16#C03A0016#;
   ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH : constant := 16#C03A0017#;
   ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED : constant := 16#C03A0018#;
   ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT : constant := 16#C03A0019#;
   ERROR_VIRTUAL_DISK_LIMITATION : constant := 16#C03A001A#;
   ERROR_VHD_INVALID_TYPE : constant := 16#C03A001B#;
   ERROR_VHD_INVALID_STATE : constant := 16#C03A001C#;
   ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE : constant := 16#C03A001D#;
   ERROR_VIRTDISK_DISK_ALREADY_OWNED : constant := 16#C03A001E#;
   ERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE : constant := 16#C03A001F#;
   ERROR_CTLOG_TRACKING_NOT_INITIALIZED : constant := 16#C03A0020#;
   ERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE : constant := 16#C03A0021#;
   ERROR_CTLOG_VHD_CHANGED_OFFLINE : constant := 16#C03A0022#;
   ERROR_CTLOG_INVALID_TRACKING_STATE : constant := 16#C03A0023#;
   ERROR_CTLOG_INCONSISTENT_TRACKING_FILE : constant := 16#C03A0024#;
   ERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA : constant := 16#C03A0025#;
   ERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE : constant := 16#C03A0026#;
   ERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE : constant := 16#C03A0027#;
   ERROR_VHD_METADATA_FULL : constant := 16#C03A0028#;
   ERROR_VHD_INVALID_CHANGE_TRACKING_ID : constant := 16#C03A0029#;
   ERROR_VHD_CHANGE_TRACKING_DISABLED : constant := 16#C03A002A#;
   ERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION : constant := 16#C03A0030#;
   ERROR_QUERY_STORAGE_ERROR : constant := 16#803A0001#;
   HCN_E_NETWORK_NOT_FOUND : constant := 16#803B0001#;
   HCN_E_ENDPOINT_NOT_FOUND : constant := 16#803B0002#;
   HCN_E_LAYER_NOT_FOUND : constant := 16#803B0003#;
   HCN_E_SWITCH_NOT_FOUND : constant := 16#803B0004#;
   HCN_E_SUBNET_NOT_FOUND : constant := 16#803B0005#;
   HCN_E_ADAPTER_NOT_FOUND : constant := 16#803B0006#;
   HCN_E_PORT_NOT_FOUND : constant := 16#803B0007#;
   HCN_E_POLICY_NOT_FOUND : constant := 16#803B0008#;
   HCN_E_VFP_PORTSETTING_NOT_FOUND : constant := 16#803B0009#;
   HCN_E_INVALID_NETWORK : constant := 16#803B000A#;
   HCN_E_INVALID_NETWORK_TYPE : constant := 16#803B000B#;
   HCN_E_INVALID_ENDPOINT : constant := 16#803B000C#;
   HCN_E_INVALID_POLICY : constant := 16#803B000D#;
   HCN_E_INVALID_POLICY_TYPE : constant := 16#803B000E#;
   HCN_E_INVALID_REMOTE_ENDPOINT_OPERATION : constant := 16#803B000F#;
   HCN_E_NETWORK_ALREADY_EXISTS : constant := 16#803B0010#;
   HCN_E_LAYER_ALREADY_EXISTS : constant := 16#803B0011#;
   HCN_E_POLICY_ALREADY_EXISTS : constant := 16#803B0012#;
   HCN_E_PORT_ALREADY_EXISTS : constant := 16#803B0013#;
   HCN_E_ENDPOINT_ALREADY_ATTACHED : constant := 16#803B0014#;
   HCN_E_REQUEST_UNSUPPORTED : constant := 16#803B0015#;
   HCN_E_MAPPING_NOT_SUPPORTED : constant := 16#803B0016#;
   HCN_E_DEGRADED_OPERATION : constant := 16#803B0017#;
   HCN_E_SHARED_SWITCH_MODIFICATION : constant := 16#803B0018#;
   HCN_E_GUID_CONVERSION_FAILURE : constant := 16#803B0019#;
   HCN_E_REGKEY_FAILURE : constant := 16#803B001A#;
   HCN_E_INVALID_JSON : constant := 16#803B001B#;
   HCN_E_INVALID_JSON_REFERENCE : constant := 16#803B001C#;
   HCN_E_ENDPOINT_SHARING_DISABLED : constant := 16#803B001D#;
   HCN_E_INVALID_IP : constant := 16#803B001E#;
   HCN_E_SWITCH_EXTENSION_NOT_FOUND : constant := 16#803B001F#;
   HCN_E_MANAGER_STOPPED : constant := 16#803B0020#;
   GCN_E_MODULE_NOT_FOUND : constant := 16#803B0021#;
   GCN_E_NO_REQUEST_HANDLERS : constant := 16#803B0022#;
   GCN_E_REQUEST_UNSUPPORTED : constant := 16#803B0023#;
   GCN_E_RUNTIMEKEYS_FAILED : constant := 16#803B0024#;
   GCN_E_NETADAPTER_TIMEOUT : constant := 16#803B0025#;
   GCN_E_NETADAPTER_NOT_FOUND : constant := 16#803B0026#;
   GCN_E_NETCOMPARTMENT_NOT_FOUND : constant := 16#803B0027#;
   GCN_E_NETINTERFACE_NOT_FOUND : constant := 16#803B0028#;
   GCN_E_DEFAULTNAMESPACE_EXISTS : constant := 16#803B0029#;
   HCN_E_ICS_DISABLED : constant := 16#803B002A#;
   HCN_E_ENDPOINT_NAMESPACE_ALREADY_EXISTS : constant := 16#803B002B#;
   HCN_E_ENTITY_HAS_REFERENCES : constant := 16#803B002C#;
   HCN_E_INVALID_INTERNAL_PORT : constant := 16#803B002D#;
   HCN_E_NAMESPACE_ATTACH_FAILED : constant := 16#803B002E#;
   HCN_E_ADDR_INVALID_OR_RESERVED : constant := 16#803B002F#;
   HCN_E_INVALID_PREFIX : constant := 16#803B0030#;
   HCN_E_OBJECT_USED_AFTER_UNLOAD : constant := 16#803B0031#;
   HCN_E_INVALID_SUBNET : constant := 16#803B0032#;
   HCN_E_INVALID_IP_SUBNET : constant := 16#803B0033#;
   HCN_E_ENDPOINT_NOT_ATTACHED : constant := 16#803B0034#;
   HCN_E_ENDPOINT_NOT_LOCAL : constant := 16#803B0035#;
   HCN_INTERFACEPARAMETERS_ALREADY_APPLIED : constant := 16#803B0036#;
   SDIAG_E_CANCELLED : constant := 16#803C0100#;
   SDIAG_E_SCRIPT : constant := 16#803C0101#;
   SDIAG_E_POWERSHELL : constant := 16#803C0102#;
   SDIAG_E_MANAGEDHOST : constant := 16#803C0103#;
   SDIAG_E_NOVERIFIER : constant := 16#803C0104#;
   SDIAG_S_CANNOTRUN : constant := 16#003C0105#;
   SDIAG_E_DISABLED : constant := 16#803C0106#;
   SDIAG_E_TRUST : constant := 16#803C0107#;
   SDIAG_E_CANNOTRUN : constant := 16#803C0108#;
   SDIAG_E_VERSION : constant := 16#803C0109#;
   SDIAG_E_RESOURCE : constant := 16#803C010A#;
   SDIAG_E_ROOTCAUSE : constant := 16#803C010B#;
   WPN_E_CHANNEL_CLOSED : constant := 16#803E0100#;
   WPN_E_CHANNEL_REQUEST_NOT_COMPLETE : constant := 16#803E0101#;
   WPN_E_INVALID_APP : constant := 16#803E0102#;
   WPN_E_OUTSTANDING_CHANNEL_REQUEST : constant := 16#803E0103#;
   WPN_E_DUPLICATE_CHANNEL : constant := 16#803E0104#;
   WPN_E_PLATFORM_UNAVAILABLE : constant := 16#803E0105#;
   WPN_E_NOTIFICATION_POSTED : constant := 16#803E0106#;
   WPN_E_NOTIFICATION_HIDDEN : constant := 16#803E0107#;
   WPN_E_NOTIFICATION_NOT_POSTED : constant := 16#803E0108#;
   WPN_E_CLOUD_DISABLED : constant := 16#803E0109#;
   WPN_E_CLOUD_INCAPABLE : constant := 16#803E0110#;
   WPN_E_CLOUD_AUTH_UNAVAILABLE : constant := 16#803E011A#;
   WPN_E_CLOUD_SERVICE_UNAVAILABLE : constant := 16#803E011B#;
   WPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION : constant := 16#803E011C#;
   WPN_E_NOTIFICATION_DISABLED : constant := 16#803E0111#;
   WPN_E_NOTIFICATION_INCAPABLE : constant := 16#803E0112#;
   WPN_E_INTERNET_INCAPABLE : constant := 16#803E0113#;
   WPN_E_NOTIFICATION_TYPE_DISABLED : constant := 16#803E0114#;
   WPN_E_NOTIFICATION_SIZE : constant := 16#803E0115#;
   WPN_E_TAG_SIZE : constant := 16#803E0116#;
   WPN_E_ACCESS_DENIED : constant := 16#803E0117#;
   WPN_E_DUPLICATE_REGISTRATION : constant := 16#803E0118#;
   WPN_E_PUSH_NOTIFICATION_INCAPABLE : constant := 16#803E0119#;
   WPN_E_DEV_ID_SIZE : constant := 16#803E0120#;
   WPN_E_TAG_ALPHANUMERIC : constant := 16#803E012A#;
   WPN_E_INVALID_HTTP_STATUS_CODE : constant := 16#803E012B#;
   WPN_E_OUT_OF_SESSION : constant := 16#803E0200#;
   WPN_E_POWER_SAVE : constant := 16#803E0201#;
   WPN_E_IMAGE_NOT_FOUND_IN_CACHE : constant := 16#803E0202#;
   WPN_E_ALL_URL_NOT_COMPLETED : constant := 16#803E0203#;
   WPN_E_INVALID_CLOUD_IMAGE : constant := 16#803E0204#;
   WPN_E_NOTIFICATION_ID_MATCHED : constant := 16#803E0205#;
   WPN_E_CALLBACK_ALREADY_REGISTERED : constant := 16#803E0206#;
   WPN_E_TOAST_NOTIFICATION_DROPPED : constant := 16#803E0207#;
   WPN_E_STORAGE_LOCKED : constant := 16#803E0208#;
   WPN_E_GROUP_SIZE : constant := 16#803E0209#;
   WPN_E_GROUP_ALPHANUMERIC : constant := 16#803E020A#;
   WPN_E_CLOUD_DISABLED_FOR_APP : constant := 16#803E020B#;
   E_MBN_CONTEXT_NOT_ACTIVATED : constant := 16#80548201#;
   E_MBN_BAD_SIM : constant := 16#80548202#;
   E_MBN_DATA_CLASS_NOT_AVAILABLE : constant := 16#80548203#;
   E_MBN_INVALID_ACCESS_STRING : constant := 16#80548204#;
   E_MBN_MAX_ACTIVATED_CONTEXTS : constant := 16#80548205#;
   E_MBN_PACKET_SVC_DETACHED : constant := 16#80548206#;
   E_MBN_PROVIDER_NOT_VISIBLE : constant := 16#80548207#;
   E_MBN_RADIO_POWER_OFF : constant := 16#80548208#;
   E_MBN_SERVICE_NOT_ACTIVATED : constant := 16#80548209#;
   E_MBN_SIM_NOT_INSERTED : constant := 16#8054820A#;
   E_MBN_VOICE_CALL_IN_PROGRESS : constant := 16#8054820B#;
   E_MBN_INVALID_CACHE : constant := 16#8054820C#;
   E_MBN_NOT_REGISTERED : constant := 16#8054820D#;
   E_MBN_PROVIDERS_NOT_FOUND : constant := 16#8054820E#;
   E_MBN_PIN_NOT_SUPPORTED : constant := 16#8054820F#;
   E_MBN_PIN_REQUIRED : constant := 16#80548210#;
   E_MBN_PIN_DISABLED : constant := 16#80548211#;
   E_MBN_FAILURE : constant := 16#80548212#;
   E_MBN_INVALID_PROFILE : constant := 16#80548218#;
   E_MBN_DEFAULT_PROFILE_EXIST : constant := 16#80548219#;
   E_MBN_SMS_ENCODING_NOT_SUPPORTED : constant := 16#80548220#;
   E_MBN_SMS_FILTER_NOT_SUPPORTED : constant := 16#80548221#;
   E_MBN_SMS_INVALID_MEMORY_INDEX : constant := 16#80548222#;
   E_MBN_SMS_LANG_NOT_SUPPORTED : constant := 16#80548223#;
   E_MBN_SMS_MEMORY_FAILURE : constant := 16#80548224#;
   E_MBN_SMS_NETWORK_TIMEOUT : constant := 16#80548225#;
   E_MBN_SMS_UNKNOWN_SMSC_ADDRESS : constant := 16#80548226#;
   E_MBN_SMS_FORMAT_NOT_SUPPORTED : constant := 16#80548227#;
   E_MBN_SMS_OPERATION_NOT_ALLOWED : constant := 16#80548228#;
   E_MBN_SMS_MEMORY_FULL : constant := 16#80548229#;
   PEER_E_IPV6_NOT_INSTALLED : constant := 16#80630001#;
   PEER_E_NOT_INITIALIZED : constant := 16#80630002#;
   PEER_E_CANNOT_START_SERVICE : constant := 16#80630003#;
   PEER_E_NOT_LICENSED : constant := 16#80630004#;
   PEER_E_INVALID_GRAPH : constant := 16#80630010#;
   PEER_E_DBNAME_CHANGED : constant := 16#80630011#;
   PEER_E_DUPLICATE_GRAPH : constant := 16#80630012#;
   PEER_E_GRAPH_NOT_READY : constant := 16#80630013#;
   PEER_E_GRAPH_SHUTTING_DOWN : constant := 16#80630014#;
   PEER_E_GRAPH_IN_USE : constant := 16#80630015#;
   PEER_E_INVALID_DATABASE : constant := 16#80630016#;
   PEER_E_TOO_MANY_ATTRIBUTES : constant := 16#80630017#;
   PEER_E_CONNECTION_NOT_FOUND : constant := 16#80630103#;
   PEER_E_CONNECT_SELF : constant := 16#80630106#;
   PEER_E_ALREADY_LISTENING : constant := 16#80630107#;
   PEER_E_NODE_NOT_FOUND : constant := 16#80630108#;
   PEER_E_CONNECTION_FAILED : constant := 16#80630109#;
   PEER_E_CONNECTION_NOT_AUTHENTICATED : constant := 16#8063010A#;
   PEER_E_CONNECTION_REFUSED : constant := 16#8063010B#;
   PEER_E_CLASSIFIER_TOO_LONG : constant := 16#80630201#;
   PEER_E_TOO_MANY_IDENTITIES : constant := 16#80630202#;
   PEER_E_NO_KEY_ACCESS : constant := 16#80630203#;
   PEER_E_GROUPS_EXIST : constant := 16#80630204#;
   PEER_E_RECORD_NOT_FOUND : constant := 16#80630301#;
   PEER_E_DATABASE_ACCESSDENIED : constant := 16#80630302#;
   PEER_E_DBINITIALIZATION_FAILED : constant := 16#80630303#;
   PEER_E_MAX_RECORD_SIZE_EXCEEDED : constant := 16#80630304#;
   PEER_E_DATABASE_ALREADY_PRESENT : constant := 16#80630305#;
   PEER_E_DATABASE_NOT_PRESENT : constant := 16#80630306#;
   PEER_E_IDENTITY_NOT_FOUND : constant := 16#80630401#;
   PEER_E_EVENT_HANDLE_NOT_FOUND : constant := 16#80630501#;
   PEER_E_INVALID_SEARCH : constant := 16#80630601#;
   PEER_E_INVALID_ATTRIBUTES : constant := 16#80630602#;
   PEER_E_INVITATION_NOT_TRUSTED : constant := 16#80630701#;
   PEER_E_CHAIN_TOO_LONG : constant := 16#80630703#;
   PEER_E_INVALID_TIME_PERIOD : constant := 16#80630705#;
   PEER_E_CIRCULAR_CHAIN_DETECTED : constant := 16#80630706#;
   PEER_E_CERT_STORE_CORRUPTED : constant := 16#80630801#;
   PEER_E_NO_CLOUD : constant := 16#80631001#;
   PEER_E_CLOUD_NAME_AMBIGUOUS : constant := 16#80631005#;
   PEER_E_INVALID_RECORD : constant := 16#80632010#;
   PEER_E_NOT_AUTHORIZED : constant := 16#80632020#;
   PEER_E_PASSWORD_DOES_NOT_MEET_POLICY : constant := 16#80632021#;
   PEER_E_DEFERRED_VALIDATION : constant := 16#80632030#;
   PEER_E_INVALID_GROUP_PROPERTIES : constant := 16#80632040#;
   PEER_E_INVALID_PEER_NAME : constant := 16#80632050#;
   PEER_E_INVALID_CLASSIFIER : constant := 16#80632060#;
   PEER_E_INVALID_FRIENDLY_NAME : constant := 16#80632070#;
   PEER_E_INVALID_ROLE_PROPERTY : constant := 16#80632071#;
   PEER_E_INVALID_CLASSIFIER_PROPERTY : constant := 16#80632072#;
   PEER_E_INVALID_RECORD_EXPIRATION : constant := 16#80632080#;
   PEER_E_INVALID_CREDENTIAL_INFO : constant := 16#80632081#;
   PEER_E_INVALID_CREDENTIAL : constant := 16#80632082#;
   PEER_E_INVALID_RECORD_SIZE : constant := 16#80632083#;
   PEER_E_UNSUPPORTED_VERSION : constant := 16#80632090#;
   PEER_E_GROUP_NOT_READY : constant := 16#80632091#;
   PEER_E_GROUP_IN_USE : constant := 16#80632092#;
   PEER_E_INVALID_GROUP : constant := 16#80632093#;
   PEER_E_NO_MEMBERS_FOUND : constant := 16#80632094#;
   PEER_E_NO_MEMBER_CONNECTIONS : constant := 16#80632095#;
   PEER_E_UNABLE_TO_LISTEN : constant := 16#80632096#;
   PEER_E_IDENTITY_DELETED : constant := 16#806320A0#;
   PEER_E_SERVICE_NOT_AVAILABLE : constant := 16#806320A1#;
   PEER_E_CONTACT_NOT_FOUND : constant := 16#80636001#;
   PEER_S_GRAPH_DATA_CREATED : constant := 16#00630001#;
   PEER_S_NO_EVENT_DATA : constant := 16#00630002#;
   PEER_S_ALREADY_CONNECTED : constant := 16#00632000#;
   PEER_S_SUBSCRIPTION_EXISTS : constant := 16#00636000#;
   PEER_S_NO_CONNECTIVITY : constant := 16#00630005#;
   PEER_S_ALREADY_A_MEMBER : constant := 16#00630006#;
   PEER_E_CANNOT_CONVERT_PEER_NAME : constant := 16#80634001#;
   PEER_E_INVALID_PEER_HOST_NAME : constant := 16#80634002#;
   PEER_E_NO_MORE : constant := 16#80634003#;
   PEER_E_PNRP_DUPLICATE_PEER_NAME : constant := 16#80634005#;
   PEER_E_INVITE_CANCELLED : constant := 16#80637000#;
   PEER_E_INVITE_RESPONSE_NOT_AVAILABLE : constant := 16#80637001#;
   PEER_E_NOT_SIGNED_IN : constant := 16#80637003#;
   PEER_E_PRIVACY_DECLINED : constant := 16#80637004#;
   PEER_E_TIMEOUT : constant := 16#80637005#;
   PEER_E_INVALID_ADDRESS : constant := 16#80637007#;
   PEER_E_FW_EXCEPTION_DISABLED : constant := 16#80637008#;
   PEER_E_FW_BLOCKED_BY_POLICY : constant := 16#80637009#;
   PEER_E_FW_BLOCKED_BY_SHIELDS_UP : constant := 16#8063700A#;
   PEER_E_FW_DECLINED : constant := 16#8063700B#;
   UI_E_CREATE_FAILED : constant := 16#802A0001#;
   UI_E_SHUTDOWN_CALLED : constant := 16#802A0002#;
   UI_E_ILLEGAL_REENTRANCY : constant := 16#802A0003#;
   UI_E_OBJECT_SEALED : constant := 16#802A0004#;
   UI_E_VALUE_NOT_SET : constant := 16#802A0005#;
   UI_E_VALUE_NOT_DETERMINED : constant := 16#802A0006#;
   UI_E_INVALID_OUTPUT : constant := 16#802A0007#;
   UI_E_BOOLEAN_EXPECTED : constant := 16#802A0008#;
   UI_E_DIFFERENT_OWNER : constant := 16#802A0009#;
   UI_E_AMBIGUOUS_MATCH : constant := 16#802A000A#;
   UI_E_FP_OVERFLOW : constant := 16#802A000B#;
   UI_E_WRONG_THREAD : constant := 16#802A000C#;
   UI_E_STORYBOARD_ACTIVE : constant := 16#802A0101#;
   UI_E_STORYBOARD_NOT_PLAYING : constant := 16#802A0102#;
   UI_E_START_KEYFRAME_AFTER_END : constant := 16#802A0103#;
   UI_E_END_KEYFRAME_NOT_DETERMINED : constant := 16#802A0104#;
   UI_E_LOOPS_OVERLAP : constant := 16#802A0105#;
   UI_E_TRANSITION_ALREADY_USED : constant := 16#802A0106#;
   UI_E_TRANSITION_NOT_IN_STORYBOARD : constant := 16#802A0107#;
   UI_E_TRANSITION_ECLIPSED : constant := 16#802A0108#;
   UI_E_TIME_BEFORE_LAST_UPDATE : constant := 16#802A0109#;
   UI_E_TIMER_CLIENT_ALREADY_CONNECTED : constant := 16#802A010A#;
   UI_E_INVALID_DIMENSION : constant := 16#802A010B#;
   UI_E_PRIMITIVE_OUT_OF_BOUNDS : constant := 16#802A010C#;
   UI_E_WINDOW_CLOSED : constant := 16#802A0201#;
   E_BLUETOOTH_ATT_INVALID_HANDLE : constant := 16#80650001#;
   E_BLUETOOTH_ATT_READ_NOT_PERMITTED : constant := 16#80650002#;
   E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED : constant := 16#80650003#;
   E_BLUETOOTH_ATT_INVALID_PDU : constant := 16#80650004#;
   E_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION : constant := 16#80650005#;
   E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED : constant := 16#80650006#;
   E_BLUETOOTH_ATT_INVALID_OFFSET : constant := 16#80650007#;
   E_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION : constant := 16#80650008#;
   E_BLUETOOTH_ATT_PREPARE_QUEUE_FULL : constant := 16#80650009#;
   E_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND : constant := 16#8065000A#;
   E_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG : constant := 16#8065000B#;
   E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE : constant := 16#8065000C#;
   E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH : constant := 16#8065000D#;
   E_BLUETOOTH_ATT_UNLIKELY : constant := 16#8065000E#;
   E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION : constant := 16#8065000F#;
   E_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE : constant := 16#80650010#;
   E_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES : constant := 16#80650011#;
   E_BLUETOOTH_ATT_UNKNOWN_ERROR : constant := 16#80651000#;
   E_AUDIO_ENGINE_NODE_NOT_FOUND : constant := 16#80660001#;
   E_HDAUDIO_EMPTY_CONNECTION_LIST : constant := 16#80660002#;
   E_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED : constant := 16#80660003#;
   E_HDAUDIO_NO_LOGICAL_DEVICES_CREATED : constant := 16#80660004#;
   E_HDAUDIO_NULL_LINKED_LIST_ENTRY : constant := 16#80660005#;
   STATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE : constant := 16#80670001#;
   STATEREPOSITORY_E_STATEMENT_INPROGRESS : constant := 16#80670002#;
   STATEREPOSITORY_E_CONFIGURATION_INVALID : constant := 16#80670003#;
   STATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION : constant := 16#80670004#;
   STATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED : constant := 16#80670005#;
   STATEREPOSITORY_E_BLOCKED : constant := 16#80670006#;
   STATEREPOSITORY_E_BUSY_RETRY : constant := 16#80670007#;
   STATEREPOSITORY_E_BUSY_RECOVERY_RETRY : constant := 16#80670008#;
   STATEREPOSITORY_E_LOCKED_RETRY : constant := 16#80670009#;
   STATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY : constant := 16#8067000A#;
   STATEREPOSITORY_E_TRANSACTION_REQUIRED : constant := 16#8067000B#;
   STATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED : constant := 16#8067000C#;
   STATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED : constant := 16#8067000D#;
   STATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED : constant := 16#8067000E#;
   STATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED : constant := 16#8067000F#;
   STATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS : constant := 16#80670010#;
   STATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED : constant := 16#80670011#;
   STATEREPOSITORY_ERROR_CACHE_CORRUPTED : constant := 16#80670012#;
   STATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED : constant := 16#00670013#;
   STATEREPOSITORY_TRANSACTION_IN_PROGRESS : constant := 16#00670014#;
   ERROR_SPACES_POOL_WAS_DELETED : constant := 16#00E70001#;
   ERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID : constant := 16#80E70001#;
   ERROR_SPACES_INTERNAL_ERROR : constant := 16#80E70002#;
   ERROR_SPACES_RESILIENCY_TYPE_INVALID : constant := 16#80E70003#;
   ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID : constant := 16#80E70004#;
   ERROR_SPACES_DRIVE_REDUNDANCY_INVALID : constant := 16#80E70006#;
   ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID : constant := 16#80E70007#;
   ERROR_SPACES_PARITY_LAYOUT_INVALID : constant := 16#80E70008#;
   ERROR_SPACES_INTERLEAVE_LENGTH_INVALID : constant := 16#80E70009#;
   ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID : constant := 16#80E7000A#;
   ERROR_SPACES_NOT_ENOUGH_DRIVES : constant := 16#80E7000B#;
   ERROR_SPACES_EXTENDED_ERROR : constant := 16#80E7000C#;
   ERROR_SPACES_PROVISIONING_TYPE_INVALID : constant := 16#80E7000D#;
   ERROR_SPACES_ALLOCATION_SIZE_INVALID : constant := 16#80E7000E#;
   ERROR_SPACES_ENCLOSURE_AWARE_INVALID : constant := 16#80E7000F#;
   ERROR_SPACES_WRITE_CACHE_SIZE_INVALID : constant := 16#80E70010#;
   ERROR_SPACES_NUMBER_OF_GROUPS_INVALID : constant := 16#80E70011#;
   ERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID : constant := 16#80E70012#;
   ERROR_SPACES_ENTRY_INCOMPLETE : constant := 16#80E70013#;
   ERROR_SPACES_ENTRY_INVALID : constant := 16#80E70014#;
   ERROR_VOLSNAP_BOOTFILE_NOT_VALID : constant := 16#80820001#;
   ERROR_VOLSNAP_ACTIVATION_TIMEOUT : constant := 16#80820002#;
   ERROR_TIERING_NOT_SUPPORTED_ON_VOLUME : constant := 16#80830001#;
   ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS : constant := 16#80830002#;
   ERROR_TIERING_STORAGE_TIER_NOT_FOUND : constant := 16#80830003#;
   ERROR_TIERING_INVALID_FILE_ID : constant := 16#80830004#;
   ERROR_TIERING_WRONG_CLUSTER_NODE : constant := 16#80830005#;
   ERROR_TIERING_ALREADY_PROCESSING : constant := 16#80830006#;
   ERROR_TIERING_CANNOT_PIN_OBJECT : constant := 16#80830007#;
   ERROR_TIERING_FILE_IS_NOT_PINNED : constant := 16#80830008#;
   ERROR_NOT_A_TIERED_VOLUME : constant := 16#80830009#;
   ERROR_ATTRIBUTE_NOT_PRESENT : constant := 16#8083000A#;
   ERROR_SECCORE_INVALID_COMMAND : constant := 16#C0E80000#;
   ERROR_NO_APPLICABLE_APP_LICENSES_FOUND : constant := 16#C0EA0001#;
   ERROR_CLIP_LICENSE_NOT_FOUND : constant := 16#C0EA0002#;
   ERROR_CLIP_DEVICE_LICENSE_MISSING : constant := 16#C0EA0003#;
   ERROR_CLIP_LICENSE_INVALID_SIGNATURE : constant := 16#C0EA0004#;
   ERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID : constant := 16#C0EA0005#;
   ERROR_CLIP_LICENSE_EXPIRED : constant := 16#C0EA0006#;
   ERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE : constant := 16#C0EA0007#;
   ERROR_CLIP_LICENSE_NOT_SIGNED : constant := 16#C0EA0008#;
   ERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE : constant := 16#C0EA0009#;
   ERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH : constant := 16#C0EA000A#;
   DXGI_STATUS_OCCLUDED : constant := 16#087A0001#;
   DXGI_STATUS_CLIPPED : constant := 16#087A0002#;
   DXGI_STATUS_NO_REDIRECTION : constant := 16#087A0004#;
   DXGI_STATUS_NO_DESKTOP_ACCESS : constant := 16#087A0005#;
   DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE : constant := 16#087A0006#;
   DXGI_STATUS_MODE_CHANGED : constant := 16#087A0007#;
   DXGI_STATUS_MODE_CHANGE_IN_PROGRESS : constant := 16#087A0008#;
   DXGI_ERROR_INVALID_CALL : constant := 16#887A0001#;
   DXGI_ERROR_NOT_FOUND : constant := 16#887A0002#;
   DXGI_ERROR_MORE_DATA : constant := 16#887A0003#;
   DXGI_ERROR_UNSUPPORTED : constant := 16#887A0004#;
   DXGI_ERROR_DEVICE_REMOVED : constant := 16#887A0005#;
   DXGI_ERROR_DEVICE_HUNG : constant := 16#887A0006#;
   DXGI_ERROR_DEVICE_RESET : constant := 16#887A0007#;
   DXGI_ERROR_WAS_STILL_DRAWING : constant := 16#887A000A#;
   DXGI_ERROR_FRAME_STATISTICS_DISJOINT : constant := 16#887A000B#;
   DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE : constant := 16#887A000C#;
   DXGI_ERROR_DRIVER_INTERNAL_ERROR : constant := 16#887A0020#;
   DXGI_ERROR_NONEXCLUSIVE : constant := 16#887A0021#;
   DXGI_ERROR_NOT_CURRENTLY_AVAILABLE : constant := 16#887A0022#;
   DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED : constant := 16#887A0023#;
   DXGI_ERROR_REMOTE_OUTOFMEMORY : constant := 16#887A0024#;
   DXGI_ERROR_ACCESS_LOST : constant := 16#887A0026#;
   DXGI_ERROR_WAIT_TIMEOUT : constant := 16#887A0027#;
   DXGI_ERROR_SESSION_DISCONNECTED : constant := 16#887A0028#;
   DXGI_ERROR_RESTRICT_TO_OUTPUT_STALE : constant := 16#887A0029#;
   DXGI_ERROR_CANNOT_PROTECT_CONTENT : constant := 16#887A002A#;
   DXGI_ERROR_ACCESS_DENIED : constant := 16#887A002B#;
   DXGI_ERROR_NAME_ALREADY_EXISTS : constant := 16#887A002C#;
   DXGI_ERROR_SDK_COMPONENT_MISSING : constant := 16#887A002D#;
   DXGI_ERROR_NOT_CURRENT : constant := 16#887A002E#;
   DXGI_ERROR_HW_PROTECTION_OUTOFMEMORY : constant := 16#887A0030#;
   DXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION : constant := 16#887A0031#;
   DXGI_ERROR_NON_COMPOSITED_UI : constant := 16#887A0032#;
   DXCORE_ERROR_EVENT_NOT_UNREGISTERED : constant := 16#88800001#;
   DXGI_STATUS_UNOCCLUDED : constant := 16#087A0009#;
   DXGI_STATUS_DDA_WAS_STILL_DRAWING : constant := 16#087A000A#;
   DXGI_ERROR_MODE_CHANGE_IN_PROGRESS : constant := 16#887A0025#;
   DXGI_STATUS_PRESENT_REQUIRED : constant := 16#087A002F#;
   DXGI_ERROR_CACHE_CORRUPT : constant := 16#887A0033#;
   DXGI_ERROR_CACHE_FULL : constant := 16#887A0034#;
   DXGI_ERROR_CACHE_HASH_COLLISION : constant := 16#887A0035#;
   DXGI_ERROR_ALREADY_EXISTS : constant := 16#887A0036#;
   DXGI_DDI_ERR_WASSTILLDRAWING : constant := 16#887B0001#;
   DXGI_DDI_ERR_UNSUPPORTED : constant := 16#887B0002#;
   DXGI_DDI_ERR_NONEXCLUSIVE : constant := 16#887B0003#;
   D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS : constant := 16#88790001#;
   D3D10_ERROR_FILE_NOT_FOUND : constant := 16#88790002#;
   D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS : constant := 16#887C0001#;
   D3D11_ERROR_FILE_NOT_FOUND : constant := 16#887C0002#;
   D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS : constant := 16#887C0003#;
   D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD : constant := 16#887C0004#;
   D3D12_ERROR_ADAPTER_NOT_FOUND : constant := 16#887E0001#;
   D3D12_ERROR_DRIVER_VERSION_MISMATCH : constant := 16#887E0002#;
   D2DERR_WRONG_STATE : constant := 16#88990001#;
   D2DERR_NOT_INITIALIZED : constant := 16#88990002#;
   D2DERR_UNSUPPORTED_OPERATION : constant := 16#88990003#;
   D2DERR_SCANNER_FAILED : constant := 16#88990004#;
   D2DERR_SCREEN_ACCESS_DENIED : constant := 16#88990005#;
   D2DERR_DISPLAY_STATE_INVALID : constant := 16#88990006#;
   D2DERR_ZERO_VECTOR : constant := 16#88990007#;
   D2DERR_INTERNAL_ERROR : constant := 16#88990008#;
   D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED : constant := 16#88990009#;
   D2DERR_INVALID_CALL : constant := 16#8899000A#;
   D2DERR_NO_HARDWARE_DEVICE : constant := 16#8899000B#;
   D2DERR_RECREATE_TARGET : constant := 16#8899000C#;
   D2DERR_TOO_MANY_SHADER_ELEMENTS : constant := 16#8899000D#;
   D2DERR_SHADER_COMPILE_FAILED : constant := 16#8899000E#;
   D2DERR_MAX_TEXTURE_SIZE_EXCEEDED : constant := 16#8899000F#;
   D2DERR_UNSUPPORTED_VERSION : constant := 16#88990010#;
   D2DERR_BAD_NUMBER : constant := 16#88990011#;
   D2DERR_WRONG_FACTORY : constant := 16#88990012#;
   D2DERR_LAYER_ALREADY_IN_USE : constant := 16#88990013#;
   D2DERR_POP_CALL_DID_NOT_MATCH_PUSH : constant := 16#88990014#;
   D2DERR_WRONG_RESOURCE_DOMAIN : constant := 16#88990015#;
   D2DERR_PUSH_POP_UNBALANCED : constant := 16#88990016#;
   D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT : constant := 16#88990017#;
   D2DERR_INCOMPATIBLE_BRUSH_TYPES : constant := 16#88990018#;
   D2DERR_WIN32_ERROR : constant := 16#88990019#;
   D2DERR_TARGET_NOT_GDI_COMPATIBLE : constant := 16#8899001A#;
   D2DERR_TEXT_EFFECT_IS_WRONG_TYPE : constant := 16#8899001B#;
   D2DERR_TEXT_RENDERER_NOT_RELEASED : constant := 16#8899001C#;
   D2DERR_EXCEEDS_MAX_BITMAP_SIZE : constant := 16#8899001D#;
   D2DERR_INVALID_GRAPH_CONFIGURATION : constant := 16#8899001E#;
   D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION : constant := 16#8899001F#;
   D2DERR_CYCLIC_GRAPH : constant := 16#88990020#;
   D2DERR_BITMAP_CANNOT_DRAW : constant := 16#88990021#;
   D2DERR_OUTSTANDING_BITMAP_REFERENCES : constant := 16#88990022#;
   D2DERR_ORIGINAL_TARGET_NOT_BOUND : constant := 16#88990023#;
   D2DERR_INVALID_TARGET : constant := 16#88990024#;
   D2DERR_BITMAP_BOUND_AS_TARGET : constant := 16#88990025#;
   D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES : constant := 16#88990026#;
   D2DERR_INTERMEDIATE_TOO_LARGE : constant := 16#88990027#;
   D2DERR_EFFECT_IS_NOT_REGISTERED : constant := 16#88990028#;
   D2DERR_INVALID_PROPERTY : constant := 16#88990029#;
   D2DERR_NO_SUBPROPERTIES : constant := 16#8899002A#;
   D2DERR_PRINT_JOB_CLOSED : constant := 16#8899002B#;
   D2DERR_PRINT_FORMAT_NOT_SUPPORTED : constant := 16#8899002C#;
   D2DERR_TOO_MANY_TRANSFORM_INPUTS : constant := 16#8899002D#;
   D2DERR_INVALID_GLYPH_IMAGE : constant := 16#8899002E#;
   DWRITE_E_FILEFORMAT : constant := 16#88985000#;
   DWRITE_E_UNEXPECTED : constant := 16#88985001#;
   DWRITE_E_NOFONT : constant := 16#88985002#;
   DWRITE_E_FILENOTFOUND : constant := 16#88985003#;
   DWRITE_E_FILEACCESS : constant := 16#88985004#;
   DWRITE_E_FONTCOLLECTIONOBSOLETE : constant := 16#88985005#;
   DWRITE_E_ALREADYREGISTERED : constant := 16#88985006#;
   DWRITE_E_CACHEFORMAT : constant := 16#88985007#;
   DWRITE_E_CACHEVERSION : constant := 16#88985008#;
   DWRITE_E_UNSUPPORTEDOPERATION : constant := 16#88985009#;
   DWRITE_E_TEXTRENDERERINCOMPATIBLE : constant := 16#8898500A#;
   DWRITE_E_FLOWDIRECTIONCONFLICTS : constant := 16#8898500B#;
   DWRITE_E_NOCOLOR : constant := 16#8898500C#;
   DWRITE_E_REMOTEFONT : constant := 16#8898500D#;
   DWRITE_E_DOWNLOADCANCELLED : constant := 16#8898500E#;
   DWRITE_E_DOWNLOADFAILED : constant := 16#8898500F#;
   DWRITE_E_TOOMANYDOWNLOADS : constant := 16#88985010#;
   WINCODEC_ERR_WRONGSTATE : constant := 16#88982F04#;
   WINCODEC_ERR_VALUEOUTOFRANGE : constant := 16#88982F05#;
   WINCODEC_ERR_UNKNOWNIMAGEFORMAT : constant := 16#88982F07#;
   WINCODEC_ERR_UNSUPPORTEDVERSION : constant := 16#88982F0B#;
   WINCODEC_ERR_NOTINITIALIZED : constant := 16#88982F0C#;
   WINCODEC_ERR_ALREADYLOCKED : constant := 16#88982F0D#;
   WINCODEC_ERR_PROPERTYNOTFOUND : constant := 16#88982F40#;
   WINCODEC_ERR_PROPERTYNOTSUPPORTED : constant := 16#88982F41#;
   WINCODEC_ERR_PROPERTYSIZE : constant := 16#88982F42#;
   WINCODEC_ERR_CODECPRESENT : constant := 16#88982F43#;
   WINCODEC_ERR_CODECNOTHUMBNAIL : constant := 16#88982F44#;
   WINCODEC_ERR_PALETTEUNAVAILABLE : constant := 16#88982F45#;
   WINCODEC_ERR_CODECTOOMANYSCANLINES : constant := 16#88982F46#;
   WINCODEC_ERR_INTERNALERROR : constant := 16#88982F48#;
   WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS : constant := 16#88982F49#;
   WINCODEC_ERR_COMPONENTNOTFOUND : constant := 16#88982F50#;
   WINCODEC_ERR_IMAGESIZEOUTOFRANGE : constant := 16#88982F51#;
   WINCODEC_ERR_TOOMUCHMETADATA : constant := 16#88982F52#;
   WINCODEC_ERR_BADIMAGE : constant := 16#88982F60#;
   WINCODEC_ERR_BADHEADER : constant := 16#88982F61#;
   WINCODEC_ERR_FRAMEMISSING : constant := 16#88982F62#;
   WINCODEC_ERR_BADMETADATAHEADER : constant := 16#88982F63#;
   WINCODEC_ERR_BADSTREAMDATA : constant := 16#88982F70#;
   WINCODEC_ERR_STREAMWRITE : constant := 16#88982F71#;
   WINCODEC_ERR_STREAMREAD : constant := 16#88982F72#;
   WINCODEC_ERR_STREAMNOTAVAILABLE : constant := 16#88982F73#;
   WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT : constant := 16#88982F80#;
   WINCODEC_ERR_UNSUPPORTEDOPERATION : constant := 16#88982F81#;
   WINCODEC_ERR_INVALIDREGISTRATION : constant := 16#88982F8A#;
   WINCODEC_ERR_COMPONENTINITIALIZEFAILURE : constant := 16#88982F8B#;
   WINCODEC_ERR_INSUFFICIENTBUFFER : constant := 16#88982F8C#;
   WINCODEC_ERR_DUPLICATEMETADATAPRESENT : constant := 16#88982F8D#;
   WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE : constant := 16#88982F8E#;
   WINCODEC_ERR_UNEXPECTEDSIZE : constant := 16#88982F8F#;
   WINCODEC_ERR_INVALIDQUERYREQUEST : constant := 16#88982F90#;
   WINCODEC_ERR_UNEXPECTEDMETADATATYPE : constant := 16#88982F91#;
   WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT : constant := 16#88982F92#;
   WINCODEC_ERR_INVALIDQUERYCHARACTER : constant := 16#88982F93#;
   WINCODEC_ERR_WIN32ERROR : constant := 16#88982F94#;
   WINCODEC_ERR_INVALIDPROGRESSIVELEVEL : constant := 16#88982F95#;
   WINCODEC_ERR_INVALIDJPEGSCANINDEX : constant := 16#88982F96#;
   MILERR_OBJECTBUSY : constant := 16#88980001#;
   MILERR_INSUFFICIENTBUFFER : constant := 16#88980002#;
   MILERR_WIN32ERROR : constant := 16#88980003#;
   MILERR_SCANNER_FAILED : constant := 16#88980004#;
   MILERR_SCREENACCESSDENIED : constant := 16#88980005#;
   MILERR_DISPLAYSTATEINVALID : constant := 16#88980006#;
   MILERR_NONINVERTIBLEMATRIX : constant := 16#88980007#;
   MILERR_ZEROVECTOR : constant := 16#88980008#;
   MILERR_TERMINATED : constant := 16#88980009#;
   MILERR_BADNUMBER : constant := 16#8898000A#;
   MILERR_INTERNALERROR : constant := 16#88980080#;
   MILERR_DISPLAYFORMATNOTSUPPORTED : constant := 16#88980084#;
   MILERR_INVALIDCALL : constant := 16#88980085#;
   MILERR_ALREADYLOCKED : constant := 16#88980086#;
   MILERR_NOTLOCKED : constant := 16#88980087#;
   MILERR_DEVICECANNOTRENDERTEXT : constant := 16#88980088#;
   MILERR_GLYPHBITMAPMISSED : constant := 16#88980089#;
   MILERR_MALFORMEDGLYPHCACHE : constant := 16#8898008A#;
   MILERR_GENERIC_IGNORE : constant := 16#8898008B#;
   MILERR_MALFORMED_GUIDELINE_DATA : constant := 16#8898008C#;
   MILERR_NO_HARDWARE_DEVICE : constant := 16#8898008D#;
   MILERR_NEED_RECREATE_AND_PRESENT : constant := 16#8898008E#;
   MILERR_ALREADY_INITIALIZED : constant := 16#8898008F#;
   MILERR_MISMATCHED_SIZE : constant := 16#88980090#;
   MILERR_NO_REDIRECTION_SURFACE_AVAILABLE : constant := 16#88980091#;
   MILERR_REMOTING_NOT_SUPPORTED : constant := 16#88980092#;
   MILERR_QUEUED_PRESENT_NOT_SUPPORTED : constant := 16#88980093#;
   MILERR_NOT_QUEUING_PRESENTS : constant := 16#88980094#;
   MILERR_NO_REDIRECTION_SURFACE_RETRY_LATER : constant := 16#88980095#;
   MILERR_TOOMANYSHADERELEMNTS : constant := 16#88980096#;
   MILERR_MROW_READLOCK_FAILED : constant := 16#88980097#;
   MILERR_MROW_UPDATE_FAILED : constant := 16#88980098#;
   MILERR_SHADER_COMPILE_FAILED : constant := 16#88980099#;
   MILERR_MAX_TEXTURE_SIZE_EXCEEDED : constant := 16#8898009A#;
   MILERR_QPC_TIME_WENT_BACKWARD : constant := 16#8898009B#;
   MILERR_DXGI_ENUMERATION_OUT_OF_SYNC : constant := 16#8898009D#;
   MILERR_ADAPTER_NOT_FOUND : constant := 16#8898009E#;
   MILERR_COLORSPACE_NOT_SUPPORTED : constant := 16#8898009F#;
   MILERR_PREFILTER_NOT_SUPPORTED : constant := 16#889800A0#;
   MILERR_DISPLAYID_ACCESS_DENIED : constant := 16#889800A1#;
   UCEERR_INVALIDPACKETHEADER : constant := 16#88980400#;
   UCEERR_UNKNOWNPACKET : constant := 16#88980401#;
   UCEERR_ILLEGALPACKET : constant := 16#88980402#;
   UCEERR_MALFORMEDPACKET : constant := 16#88980403#;
   UCEERR_ILLEGALHANDLE : constant := 16#88980404#;
   UCEERR_HANDLELOOKUPFAILED : constant := 16#88980405#;
   UCEERR_RENDERTHREADFAILURE : constant := 16#88980406#;
   UCEERR_CTXSTACKFRSTTARGETNULL : constant := 16#88980407#;
   UCEERR_CONNECTIONIDLOOKUPFAILED : constant := 16#88980408#;
   UCEERR_BLOCKSFULL : constant := 16#88980409#;
   UCEERR_MEMORYFAILURE : constant := 16#8898040A#;
   UCEERR_PACKETRECORDOUTOFRANGE : constant := 16#8898040B#;
   UCEERR_ILLEGALRECORDTYPE : constant := 16#8898040C#;
   UCEERR_OUTOFHANDLES : constant := 16#8898040D#;
   UCEERR_UNCHANGABLE_UPDATE_ATTEMPTED : constant := 16#8898040E#;
   UCEERR_NO_MULTIPLE_WORKER_THREADS : constant := 16#8898040F#;
   UCEERR_REMOTINGNOTSUPPORTED : constant := 16#88980410#;
   UCEERR_MISSINGENDCOMMAND : constant := 16#88980411#;
   UCEERR_MISSINGBEGINCOMMAND : constant := 16#88980412#;
   UCEERR_CHANNELSYNCTIMEDOUT : constant := 16#88980413#;
   UCEERR_CHANNELSYNCABANDONED : constant := 16#88980414#;
   UCEERR_UNSUPPORTEDTRANSPORTVERSION : constant := 16#88980415#;
   UCEERR_TRANSPORTUNAVAILABLE : constant := 16#88980416#;
   UCEERR_FEEDBACK_UNSUPPORTED : constant := 16#88980417#;
   UCEERR_COMMANDTRANSPORTDENIED : constant := 16#88980418#;
   UCEERR_GRAPHICSSTREAMUNAVAILABLE : constant := 16#88980419#;
   UCEERR_GRAPHICSSTREAMALREADYOPEN : constant := 16#88980420#;
   UCEERR_TRANSPORTDISCONNECTED : constant := 16#88980421#;
   UCEERR_TRANSPORTOVERLOADED : constant := 16#88980422#;
   UCEERR_PARTITION_ZOMBIED : constant := 16#88980423#;
   MILAVERR_NOCLOCK : constant := 16#88980500#;
   MILAVERR_NOMEDIATYPE : constant := 16#88980501#;
   MILAVERR_NOVIDEOMIXER : constant := 16#88980502#;
   MILAVERR_NOVIDEOPRESENTER : constant := 16#88980503#;
   MILAVERR_NOREADYFRAMES : constant := 16#88980504#;
   MILAVERR_MODULENOTLOADED : constant := 16#88980505#;
   MILAVERR_WMPFACTORYNOTREGISTERED : constant := 16#88980506#;
   MILAVERR_INVALIDWMPVERSION : constant := 16#88980507#;
   MILAVERR_INSUFFICIENTVIDEORESOURCES : constant := 16#88980508#;
   MILAVERR_VIDEOACCELERATIONNOTAVAILABLE : constant := 16#88980509#;
   MILAVERR_REQUESTEDTEXTURETOOBIG : constant := 16#8898050A#;
   MILAVERR_SEEKFAILED : constant := 16#8898050B#;
   MILAVERR_UNEXPECTEDWMPFAILURE : constant := 16#8898050C#;
   MILAVERR_MEDIAPLAYERCLOSED : constant := 16#8898050D#;
   MILAVERR_UNKNOWNHARDWAREERROR : constant := 16#8898050E#;
   MILEFFECTSERR_UNKNOWNPROPERTY : constant := 16#8898060E#;
   MILEFFECTSERR_EFFECTNOTPARTOFGROUP : constant := 16#8898060F#;
   MILEFFECTSERR_NOINPUTSOURCEATTACHED : constant := 16#88980610#;
   MILEFFECTSERR_CONNECTORNOTCONNECTED : constant := 16#88980611#;
   MILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT : constant := 16#88980612#;
   MILEFFECTSERR_RESERVED : constant := 16#88980613#;
   MILEFFECTSERR_CYCLEDETECTED : constant := 16#88980614#;
   MILEFFECTSERR_EFFECTINMORETHANONEGRAPH : constant := 16#88980615#;
   MILEFFECTSERR_EFFECTALREADYINAGRAPH : constant := 16#88980616#;
   MILEFFECTSERR_EFFECTHASNOCHILDREN : constant := 16#88980617#;
   MILEFFECTSERR_ALREADYATTACHEDTOLISTENER : constant := 16#88980618#;
   MILEFFECTSERR_NOTAFFINETRANSFORM : constant := 16#88980619#;
   MILEFFECTSERR_EMPTYBOUNDS : constant := 16#8898061A#;
   MILEFFECTSERR_OUTPUTSIZETOOLARGE : constant := 16#8898061B#;
   DWMERR_STATE_TRANSITION_FAILED : constant := 16#88980700#;
   DWMERR_THEME_FAILED : constant := 16#88980701#;
   DWMERR_CATASTROPHIC_FAILURE : constant := 16#88980702#;
   DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED : constant := 16#88980800#;
   DCOMPOSITION_ERROR_SURFACE_BEING_RENDERED : constant := 16#88980801#;
   DCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED : constant := 16#88980802#;
   ONL_E_INVALID_AUTHENTICATION_TARGET : constant := 16#80860001#;
   ONL_E_ACCESS_DENIED_BY_TOU : constant := 16#80860002#;
   ONL_E_INVALID_APPLICATION : constant := 16#80860003#;
   ONL_E_PASSWORD_UPDATE_REQUIRED : constant := 16#80860004#;
   ONL_E_ACCOUNT_UPDATE_REQUIRED : constant := 16#80860005#;
   ONL_E_FORCESIGNIN : constant := 16#80860006#;
   ONL_E_ACCOUNT_LOCKED : constant := 16#80860007#;
   ONL_E_PARENTAL_CONSENT_REQUIRED : constant := 16#80860008#;
   ONL_E_EMAIL_VERIFICATION_REQUIRED : constant := 16#80860009#;
   ONL_E_ACCOUNT_SUSPENDED_COMPROIMISE : constant := 16#8086000A#;
   ONL_E_ACCOUNT_SUSPENDED_ABUSE : constant := 16#8086000B#;
   ONL_E_ACTION_REQUIRED : constant := 16#8086000C#;
   ONL_CONNECTION_COUNT_LIMIT : constant := 16#8086000D#;
   ONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT : constant := 16#8086000E#;
   ONL_E_USER_AUTHENTICATION_REQUIRED : constant := 16#8086000F#;
   ONL_E_REQUEST_THROTTLED : constant := 16#80860010#;
   FA_E_MAX_PERSISTED_ITEMS_REACHED : constant := 16#80270220#;
   FA_E_HOMEGROUP_NOT_AVAILABLE : constant := 16#80270222#;
   E_MONITOR_RESOLUTION_TOO_LOW : constant := 16#80270250#;
   E_ELEVATED_ACTIVATION_NOT_SUPPORTED : constant := 16#80270251#;
   E_UAC_DISABLED : constant := 16#80270252#;
   E_FULL_ADMIN_NOT_SUPPORTED : constant := 16#80270253#;
   E_APPLICATION_NOT_REGISTERED : constant := 16#80270254#;
   E_MULTIPLE_EXTENSIONS_FOR_APPLICATION : constant := 16#80270255#;
   E_MULTIPLE_PACKAGES_FOR_FAMILY : constant := 16#80270256#;
   E_APPLICATION_MANAGER_NOT_RUNNING : constant := 16#80270257#;
   S_STORE_LAUNCHED_FOR_REMEDIATION : constant := 16#00270258#;
   S_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG : constant := 16#00270259#;
   E_APPLICATION_ACTIVATION_TIMED_OUT : constant := 16#8027025A#;
   E_APPLICATION_ACTIVATION_EXEC_FAILURE : constant := 16#8027025B#;
   E_APPLICATION_TEMPORARY_LICENSE_ERROR : constant := 16#8027025C#;
   E_APPLICATION_TRIAL_LICENSE_EXPIRED : constant := 16#8027025D#;
   E_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED : constant := 16#80270260#;
   E_SKYDRIVE_ROOT_TARGET_OVERLAP : constant := 16#80270261#;
   E_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX : constant := 16#80270262#;
   E_SKYDRIVE_FILE_NOT_UPLOADED : constant := 16#80270263#;
   E_SKYDRIVE_UPDATE_AVAILABILITY_FAIL : constant := 16#80270264#;
   E_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED : constant := 16#80270265#;
   E_SYNCENGINE_FILE_SIZE_OVER_LIMIT : constant := 16#8802B001#;
   E_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA : constant := 16#8802B002#;
   E_SYNCENGINE_UNSUPPORTED_FILE_NAME : constant := 16#8802B003#;
   E_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED : constant := 16#8802B004#;
   E_SYNCENGINE_FILE_SYNC_PARTNER_ERROR : constant := 16#8802B005#;
   E_SYNCENGINE_SYNC_PAUSED_BY_SERVICE : constant := 16#8802B006#;
   E_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN : constant := 16#8802C002#;
   E_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED : constant := 16#8802C003#;
   E_SYNCENGINE_UNKNOWN_SERVICE_ERROR : constant := 16#8802C004#;
   E_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE : constant := 16#8802C005#;
   E_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE : constant := 16#8802C006#;
   E_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR : constant := 16#8802C007#;
   E_SYNCENGINE_FOLDER_INACCESSIBLE : constant := 16#8802D001#;
   E_SYNCENGINE_UNSUPPORTED_FOLDER_NAME : constant := 16#8802D002#;
   E_SYNCENGINE_UNSUPPORTED_MARKET : constant := 16#8802D003#;
   E_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED : constant := 16#8802D004#;
   E_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED : constant := 16#8802D005#;
   E_SYNCENGINE_CLIENT_UPDATE_NEEDED : constant := 16#8802D006#;
   E_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED : constant := 16#8802D007#;
   E_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED : constant := 16#8802D008#;
   E_SYNCENGINE_UNSUPPORTED_REPARSE_POINT : constant := 16#8802D009#;
   E_SYNCENGINE_STORAGE_SERVICE_BLOCKED : constant := 16#8802D00A#;
   E_SYNCENGINE_FOLDER_IN_REDIRECTION : constant := 16#8802D00B#;
   EAS_E_POLICY_NOT_MANAGED_BY_OS : constant := 16#80550001#;
   EAS_E_POLICY_COMPLIANT_WITH_ACTIONS : constant := 16#80550002#;
   EAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE : constant := 16#80550003#;
   EAS_E_CURRENT_USER_HAS_BLANK_PASSWORD : constant := 16#80550004#;
   EAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE : constant := 16#80550005#;
   EAS_E_USER_CANNOT_CHANGE_PASSWORD : constant := 16#80550006#;
   EAS_E_ADMINS_HAVE_BLANK_PASSWORD : constant := 16#80550007#;
   EAS_E_ADMINS_CANNOT_CHANGE_PASSWORD : constant := 16#80550008#;
   EAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD : constant := 16#80550009#;
   EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS : constant := 16#8055000A#;
   EAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD : constant := 16#8055000B#;
   EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER : constant := 16#8055000C#;
   EAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD : constant := 16#8055000D#;
   WEB_E_UNSUPPORTED_FORMAT : constant := 16#83750001#;
   WEB_E_INVALID_XML : constant := 16#83750002#;
   WEB_E_MISSING_REQUIRED_ELEMENT : constant := 16#83750003#;
   WEB_E_MISSING_REQUIRED_ATTRIBUTE : constant := 16#83750004#;
   WEB_E_UNEXPECTED_CONTENT : constant := 16#83750005#;
   WEB_E_RESOURCE_TOO_LARGE : constant := 16#83750006#;
   WEB_E_INVALID_JSON_STRING : constant := 16#83750007#;
   WEB_E_INVALID_JSON_NUMBER : constant := 16#83750008#;
   WEB_E_JSON_VALUE_NOT_FOUND : constant := 16#83750009#;
   HTTP_E_STATUS_UNEXPECTED : constant := 16#80190001#;
   HTTP_E_STATUS_UNEXPECTED_REDIRECTION : constant := 16#80190003#;
   HTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR : constant := 16#80190004#;
   HTTP_E_STATUS_UNEXPECTED_SERVER_ERROR : constant := 16#80190005#;
   HTTP_E_STATUS_AMBIGUOUS : constant := 16#8019012C#;
   HTTP_E_STATUS_MOVED : constant := 16#8019012D#;
   HTTP_E_STATUS_REDIRECT : constant := 16#8019012E#;
   HTTP_E_STATUS_REDIRECT_METHOD : constant := 16#8019012F#;
   HTTP_E_STATUS_NOT_MODIFIED : constant := 16#80190130#;
   HTTP_E_STATUS_USE_PROXY : constant := 16#80190131#;
   HTTP_E_STATUS_REDIRECT_KEEP_VERB : constant := 16#80190133#;
   HTTP_E_STATUS_BAD_REQUEST : constant := 16#80190190#;
   HTTP_E_STATUS_DENIED : constant := 16#80190191#;
   HTTP_E_STATUS_PAYMENT_REQ : constant := 16#80190192#;
   HTTP_E_STATUS_FORBIDDEN : constant := 16#80190193#;
   HTTP_E_STATUS_NOT_FOUND : constant := 16#80190194#;
   HTTP_E_STATUS_BAD_METHOD : constant := 16#80190195#;
   HTTP_E_STATUS_NONE_ACCEPTABLE : constant := 16#80190196#;
   HTTP_E_STATUS_PROXY_AUTH_REQ : constant := 16#80190197#;
   HTTP_E_STATUS_REQUEST_TIMEOUT : constant := 16#80190198#;
   HTTP_E_STATUS_CONFLICT : constant := 16#80190199#;
   HTTP_E_STATUS_GONE : constant := 16#8019019A#;
   HTTP_E_STATUS_LENGTH_REQUIRED : constant := 16#8019019B#;
   HTTP_E_STATUS_PRECOND_FAILED : constant := 16#8019019C#;
   HTTP_E_STATUS_REQUEST_TOO_LARGE : constant := 16#8019019D#;
   HTTP_E_STATUS_URI_TOO_LONG : constant := 16#8019019E#;
   HTTP_E_STATUS_UNSUPPORTED_MEDIA : constant := 16#8019019F#;
   HTTP_E_STATUS_RANGE_NOT_SATISFIABLE : constant := 16#801901A0#;
   HTTP_E_STATUS_EXPECTATION_FAILED : constant := 16#801901A1#;
   HTTP_E_STATUS_SERVER_ERROR : constant := 16#801901F4#;
   HTTP_E_STATUS_NOT_SUPPORTED : constant := 16#801901F5#;
   HTTP_E_STATUS_BAD_GATEWAY : constant := 16#801901F6#;
   HTTP_E_STATUS_SERVICE_UNAVAIL : constant := 16#801901F7#;
   HTTP_E_STATUS_GATEWAY_TIMEOUT : constant := 16#801901F8#;
   HTTP_E_STATUS_VERSION_NOT_SUP : constant := 16#801901F9#;
   E_INVALID_PROTOCOL_OPERATION : constant := 16#83760001#;
   E_INVALID_PROTOCOL_FORMAT : constant := 16#83760002#;
   E_PROTOCOL_EXTENSIONS_NOT_SUPPORTED : constant := 16#83760003#;
   E_SUBPROTOCOL_NOT_SUPPORTED : constant := 16#83760004#;
   E_PROTOCOL_VERSION_NOT_SUPPORTED : constant := 16#83760005#;
   INPUT_E_OUT_OF_ORDER : constant := 16#80400000#;
   INPUT_E_REENTRANCY : constant := 16#80400001#;
   INPUT_E_MULTIMODAL : constant := 16#80400002#;
   INPUT_E_PACKET : constant := 16#80400003#;
   INPUT_E_FRAME : constant := 16#80400004#;
   INPUT_E_HISTORY : constant := 16#80400005#;
   INPUT_E_DEVICE_INFO : constant := 16#80400006#;
   INPUT_E_TRANSFORM : constant := 16#80400007#;
   INPUT_E_DEVICE_PROPERTY : constant := 16#80400008#;
   INET_E_INVALID_URL : constant := 16#800C0002#;
   INET_E_NO_SESSION : constant := 16#800C0003#;
   INET_E_CANNOT_CONNECT : constant := 16#800C0004#;
   INET_E_RESOURCE_NOT_FOUND : constant := 16#800C0005#;
   INET_E_OBJECT_NOT_FOUND : constant := 16#800C0006#;
   INET_E_DATA_NOT_AVAILABLE : constant := 16#800C0007#;
   INET_E_DOWNLOAD_FAILURE : constant := 16#800C0008#;
   INET_E_AUTHENTICATION_REQUIRED : constant := 16#800C0009#;
   INET_E_NO_VALID_MEDIA : constant := 16#800C000A#;
   INET_E_CONNECTION_TIMEOUT : constant := 16#800C000B#;
   INET_E_INVALID_REQUEST : constant := 16#800C000C#;
   INET_E_UNKNOWN_PROTOCOL : constant := 16#800C000D#;
   INET_E_SECURITY_PROBLEM : constant := 16#800C000E#;
   INET_E_CANNOT_LOAD_DATA : constant := 16#800C000F#;
   INET_E_CANNOT_INSTANTIATE_OBJECT : constant := 16#800C0010#;
   INET_E_INVALID_CERTIFICATE : constant := 16#800C0019#;
   INET_E_REDIRECT_FAILED : constant := 16#800C0014#;
   INET_E_REDIRECT_TO_DIR : constant := 16#800C0015#;
   ERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN : constant := 16#80B00001#;
   ERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN : constant := 16#80B00002#;
   ERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN : constant := 16#80B00003#;
   ERROR_DBG_START_SERVER_FAILURE_LOCKDOWN : constant := 16#80B00004#;
   ERROR_IO_PREEMPTED : constant := 16#89010001#;
   JSCRIPT_E_CANTEXECUTE : constant := 16#89020001#;
   WEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES : constant := 16#88010001#;
   WEP_E_FIXED_DATA_NOT_SUPPORTED : constant := 16#88010002#;
   WEP_E_HARDWARE_NOT_COMPLIANT : constant := 16#88010003#;
   WEP_E_LOCK_NOT_CONFIGURED : constant := 16#88010004#;
   WEP_E_PROTECTION_SUSPENDED : constant := 16#88010005#;
   WEP_E_NO_LICENSE : constant := 16#88010006#;
   WEP_E_OS_NOT_PROTECTED : constant := 16#88010007#;
   WEP_E_UNEXPECTED_FAIL : constant := 16#88010008#;
   WEP_E_BUFFER_TOO_LARGE : constant := 16#88010009#;
   ERROR_SVHDX_ERROR_STORED : constant := 16#C05C0000#;
   ERROR_SVHDX_ERROR_NOT_AVAILABLE : constant := 16#C05CFF00#;
   ERROR_SVHDX_UNIT_ATTENTION_AVAILABLE : constant := 16#C05CFF01#;
   ERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED : constant := 16#C05CFF02#;
   ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED : constant := 16#C05CFF03#;
   ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED : constant := 16#C05CFF04#;
   ERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED : constant := 16#C05CFF05#;
   ERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED : constant := 16#C05CFF06#;
   ERROR_SVHDX_RESERVATION_CONFLICT : constant := 16#C05CFF07#;
   ERROR_SVHDX_WRONG_FILE_TYPE : constant := 16#C05CFF08#;
   ERROR_SVHDX_VERSION_MISMATCH : constant := 16#C05CFF09#;
   ERROR_VHD_SHARED : constant := 16#C05CFF0A#;
   ERROR_SVHDX_NO_INITIATOR : constant := 16#C05CFF0B#;
   ERROR_VHDSET_BACKING_STORAGE_NOT_FOUND : constant := 16#C05CFF0C#;
   ERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP : constant := 16#C05D0000#;
   ERROR_SMB_BAD_CLUSTER_DIALECT : constant := 16#C05D0001#;
   WININET_E_OUT_OF_HANDLES : constant := 16#80072EE1#;
   WININET_E_TIMEOUT : constant := 16#80072EE2#;
   WININET_E_EXTENDED_ERROR : constant := 16#80072EE3#;
   WININET_E_INTERNAL_ERROR : constant := 16#80072EE4#;
   WININET_E_INVALID_URL : constant := 16#80072EE5#;
   WININET_E_UNRECOGNIZED_SCHEME : constant := 16#80072EE6#;
   WININET_E_NAME_NOT_RESOLVED : constant := 16#80072EE7#;
   WININET_E_PROTOCOL_NOT_FOUND : constant := 16#80072EE8#;
   WININET_E_INVALID_OPTION : constant := 16#80072EE9#;
   WININET_E_BAD_OPTION_LENGTH : constant := 16#80072EEA#;
   WININET_E_OPTION_NOT_SETTABLE : constant := 16#80072EEB#;
   WININET_E_SHUTDOWN : constant := 16#80072EEC#;
   WININET_E_INCORRECT_USER_NAME : constant := 16#80072EED#;
   WININET_E_INCORRECT_PASSWORD : constant := 16#80072EEE#;
   WININET_E_LOGIN_FAILURE : constant := 16#80072EEF#;
   WININET_E_INVALID_OPERATION : constant := 16#80072EF0#;
   WININET_E_OPERATION_CANCELLED : constant := 16#80072EF1#;
   WININET_E_INCORRECT_HANDLE_TYPE : constant := 16#80072EF2#;
   WININET_E_INCORRECT_HANDLE_STATE : constant := 16#80072EF3#;
   WININET_E_NOT_PROXY_REQUEST : constant := 16#80072EF4#;
   WININET_E_REGISTRY_VALUE_NOT_FOUND : constant := 16#80072EF5#;
   WININET_E_BAD_REGISTRY_PARAMETER : constant := 16#80072EF6#;
   WININET_E_NO_DIRECT_ACCESS : constant := 16#80072EF7#;
   WININET_E_NO_CONTEXT : constant := 16#80072EF8#;
   WININET_E_NO_CALLBACK : constant := 16#80072EF9#;
   WININET_E_REQUEST_PENDING : constant := 16#80072EFA#;
   WININET_E_INCORRECT_FORMAT : constant := 16#80072EFB#;
   WININET_E_ITEM_NOT_FOUND : constant := 16#80072EFC#;
   WININET_E_CANNOT_CONNECT : constant := 16#80072EFD#;
   WININET_E_CONNECTION_ABORTED : constant := 16#80072EFE#;
   WININET_E_CONNECTION_RESET : constant := 16#80072EFF#;
   WININET_E_FORCE_RETRY : constant := 16#80072F00#;
   WININET_E_INVALID_PROXY_REQUEST : constant := 16#80072F01#;
   WININET_E_NEED_UI : constant := 16#80072F02#;
   WININET_E_HANDLE_EXISTS : constant := 16#80072F04#;
   WININET_E_SEC_CERT_DATE_INVALID : constant := 16#80072F05#;
   WININET_E_SEC_CERT_CN_INVALID : constant := 16#80072F06#;
   WININET_E_HTTP_TO_HTTPS_ON_REDIR : constant := 16#80072F07#;
   WININET_E_HTTPS_TO_HTTP_ON_REDIR : constant := 16#80072F08#;
   WININET_E_MIXED_SECURITY : constant := 16#80072F09#;
   WININET_E_CHG_POST_IS_NON_SECURE : constant := 16#80072F0A#;
   WININET_E_POST_IS_NON_SECURE : constant := 16#80072F0B#;
   WININET_E_CLIENT_AUTH_CERT_NEEDED : constant := 16#80072F0C#;
   WININET_E_INVALID_CA : constant := 16#80072F0D#;
   WININET_E_CLIENT_AUTH_NOT_SETUP : constant := 16#80072F0E#;
   WININET_E_ASYNC_THREAD_FAILED : constant := 16#80072F0F#;
   WININET_E_REDIRECT_SCHEME_CHANGE : constant := 16#80072F10#;
   WININET_E_DIALOG_PENDING : constant := 16#80072F11#;
   WININET_E_RETRY_DIALOG : constant := 16#80072F12#;
   WININET_E_NO_NEW_CONTAINERS : constant := 16#80072F13#;
   WININET_E_HTTPS_HTTP_SUBMIT_REDIR : constant := 16#80072F14#;
   WININET_E_SEC_CERT_ERRORS : constant := 16#80072F17#;
   WININET_E_SEC_CERT_REV_FAILED : constant := 16#80072F19#;
   WININET_E_HEADER_NOT_FOUND : constant := 16#80072F76#;
   WININET_E_DOWNLEVEL_SERVER : constant := 16#80072F77#;
   WININET_E_INVALID_SERVER_RESPONSE : constant := 16#80072F78#;
   WININET_E_INVALID_HEADER : constant := 16#80072F79#;
   WININET_E_INVALID_QUERY_REQUEST : constant := 16#80072F7A#;
   WININET_E_HEADER_ALREADY_EXISTS : constant := 16#80072F7B#;
   WININET_E_REDIRECT_FAILED : constant := 16#80072F7C#;
   WININET_E_SECURITY_CHANNEL_ERROR : constant := 16#80072F7D#;
   WININET_E_UNABLE_TO_CACHE_FILE : constant := 16#80072F7E#;
   WININET_E_TCPIP_NOT_INSTALLED : constant := 16#80072F7F#;
   WININET_E_DISCONNECTED : constant := 16#80072F83#;
   WININET_E_SERVER_UNREACHABLE : constant := 16#80072F84#;
   WININET_E_PROXY_SERVER_UNREACHABLE : constant := 16#80072F85#;
   WININET_E_BAD_AUTO_PROXY_SCRIPT : constant := 16#80072F86#;
   WININET_E_UNABLE_TO_DOWNLOAD_SCRIPT : constant := 16#80072F87#;
   WININET_E_SEC_INVALID_CERT : constant := 16#80072F89#;
   WININET_E_SEC_CERT_REVOKED : constant := 16#80072F8A#;
   WININET_E_FAILED_DUETOSECURITYCHECK : constant := 16#80072F8B#;
   WININET_E_NOT_INITIALIZED : constant := 16#80072F8C#;
   WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY : constant := 16#80072F8E#;
   WININET_E_DECODING_FAILED : constant := 16#80072F8F#;
   WININET_E_NOT_REDIRECTED : constant := 16#80072F80#;
   WININET_E_COOKIE_NEEDS_CONFIRMATION : constant := 16#80072F81#;
   WININET_E_COOKIE_DECLINED : constant := 16#80072F82#;
   WININET_E_REDIRECT_NEEDS_CONFIRMATION : constant := 16#80072F88#;
   SQLITE_E_ERROR : constant := 16#87AF0001#;
   SQLITE_E_INTERNAL : constant := 16#87AF0002#;
   SQLITE_E_PERM : constant := 16#87AF0003#;
   SQLITE_E_ABORT : constant := 16#87AF0004#;
   SQLITE_E_BUSY : constant := 16#87AF0005#;
   SQLITE_E_LOCKED : constant := 16#87AF0006#;
   SQLITE_E_NOMEM : constant := 16#87AF0007#;
   SQLITE_E_READONLY : constant := 16#87AF0008#;
   SQLITE_E_INTERRUPT : constant := 16#87AF0009#;
   SQLITE_E_IOERR : constant := 16#87AF000A#;
   SQLITE_E_CORRUPT : constant := 16#87AF000B#;
   SQLITE_E_NOTFOUND : constant := 16#87AF000C#;
   SQLITE_E_FULL : constant := 16#87AF000D#;
   SQLITE_E_CANTOPEN : constant := 16#87AF000E#;
   SQLITE_E_PROTOCOL : constant := 16#87AF000F#;
   SQLITE_E_EMPTY : constant := 16#87AF0010#;
   SQLITE_E_SCHEMA : constant := 16#87AF0011#;
   SQLITE_E_TOOBIG : constant := 16#87AF0012#;
   SQLITE_E_CONSTRAINT : constant := 16#87AF0013#;
   SQLITE_E_MISMATCH : constant := 16#87AF0014#;
   SQLITE_E_MISUSE : constant := 16#87AF0015#;
   SQLITE_E_NOLFS : constant := 16#87AF0016#;
   SQLITE_E_AUTH : constant := 16#87AF0017#;
   SQLITE_E_FORMAT : constant := 16#87AF0018#;
   SQLITE_E_RANGE : constant := 16#87AF0019#;
   SQLITE_E_NOTADB : constant := 16#87AF001A#;
   SQLITE_E_NOTICE : constant := 16#87AF001B#;
   SQLITE_E_WARNING : constant := 16#87AF001C#;
   SQLITE_E_ROW : constant := 16#87AF0064#;
   SQLITE_E_DONE : constant := 16#87AF0065#;
   SQLITE_E_IOERR_READ : constant := 16#87AF010A#;
   SQLITE_E_IOERR_SHORT_READ : constant := 16#87AF020A#;
   SQLITE_E_IOERR_WRITE : constant := 16#87AF030A#;
   SQLITE_E_IOERR_FSYNC : constant := 16#87AF040A#;
   SQLITE_E_IOERR_DIR_FSYNC : constant := 16#87AF050A#;
   SQLITE_E_IOERR_TRUNCATE : constant := 16#87AF060A#;
   SQLITE_E_IOERR_FSTAT : constant := 16#87AF070A#;
   SQLITE_E_IOERR_UNLOCK : constant := 16#87AF080A#;
   SQLITE_E_IOERR_RDLOCK : constant := 16#87AF090A#;
   SQLITE_E_IOERR_DELETE : constant := 16#87AF0A0A#;
   SQLITE_E_IOERR_BLOCKED : constant := 16#87AF0B0A#;
   SQLITE_E_IOERR_NOMEM : constant := 16#87AF0C0A#;
   SQLITE_E_IOERR_ACCESS : constant := 16#87AF0D0A#;
   SQLITE_E_IOERR_CHECKRESERVEDLOCK : constant := 16#87AF0E0A#;
   SQLITE_E_IOERR_LOCK : constant := 16#87AF0F0A#;
   SQLITE_E_IOERR_CLOSE : constant := 16#87AF100A#;
   SQLITE_E_IOERR_DIR_CLOSE : constant := 16#87AF110A#;
   SQLITE_E_IOERR_SHMOPEN : constant := 16#87AF120A#;
   SQLITE_E_IOERR_SHMSIZE : constant := 16#87AF130A#;
   SQLITE_E_IOERR_SHMLOCK : constant := 16#87AF140A#;
   SQLITE_E_IOERR_SHMMAP : constant := 16#87AF150A#;
   SQLITE_E_IOERR_SEEK : constant := 16#87AF160A#;
   SQLITE_E_IOERR_DELETE_NOENT : constant := 16#87AF170A#;
   SQLITE_E_IOERR_MMAP : constant := 16#87AF180A#;
   SQLITE_E_IOERR_GETTEMPPATH : constant := 16#87AF190A#;
   SQLITE_E_IOERR_CONVPATH : constant := 16#87AF1A0A#;
   SQLITE_E_IOERR_VNODE : constant := 16#87AF1A02#;
   SQLITE_E_IOERR_AUTH : constant := 16#87AF1A03#;
   SQLITE_E_LOCKED_SHAREDCACHE : constant := 16#87AF0106#;
   SQLITE_E_BUSY_RECOVERY : constant := 16#87AF0105#;
   SQLITE_E_BUSY_SNAPSHOT : constant := 16#87AF0205#;
   SQLITE_E_CANTOPEN_NOTEMPDIR : constant := 16#87AF010E#;
   SQLITE_E_CANTOPEN_ISDIR : constant := 16#87AF020E#;
   SQLITE_E_CANTOPEN_FULLPATH : constant := 16#87AF030E#;
   SQLITE_E_CANTOPEN_CONVPATH : constant := 16#87AF040E#;
   SQLITE_E_CORRUPT_VTAB : constant := 16#87AF010B#;
   SQLITE_E_READONLY_RECOVERY : constant := 16#87AF0108#;
   SQLITE_E_READONLY_CANTLOCK : constant := 16#87AF0208#;
   SQLITE_E_READONLY_ROLLBACK : constant := 16#87AF0308#;
   SQLITE_E_READONLY_DBMOVED : constant := 16#87AF0408#;
   SQLITE_E_ABORT_ROLLBACK : constant := 16#87AF0204#;
   SQLITE_E_CONSTRAINT_CHECK : constant := 16#87AF0113#;
   SQLITE_E_CONSTRAINT_COMMITHOOK : constant := 16#87AF0213#;
   SQLITE_E_CONSTRAINT_FOREIGNKEY : constant := 16#87AF0313#;
   SQLITE_E_CONSTRAINT_FUNCTION : constant := 16#87AF0413#;
   SQLITE_E_CONSTRAINT_NOTNULL : constant := 16#87AF0513#;
   SQLITE_E_CONSTRAINT_PRIMARYKEY : constant := 16#87AF0613#;
   SQLITE_E_CONSTRAINT_TRIGGER : constant := 16#87AF0713#;
   SQLITE_E_CONSTRAINT_UNIQUE : constant := 16#87AF0813#;
   SQLITE_E_CONSTRAINT_VTAB : constant := 16#87AF0913#;
   SQLITE_E_CONSTRAINT_ROWID : constant := 16#87AF0A13#;
   SQLITE_E_NOTICE_RECOVER_WAL : constant := 16#87AF011B#;
   SQLITE_E_NOTICE_RECOVER_ROLLBACK : constant := 16#87AF021B#;
   SQLITE_E_WARNING_AUTOINDEX : constant := 16#87AF011C#;
   UTC_E_TOGGLE_TRACE_STARTED : constant := 16#87C51001#;
   UTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT : constant := 16#87C51002#;
   UTC_E_AOT_NOT_RUNNING : constant := 16#87C51003#;
   UTC_E_SCRIPT_TYPE_INVALID : constant := 16#87C51004#;
   UTC_E_SCENARIODEF_NOT_FOUND : constant := 16#87C51005#;
   UTC_E_TRACEPROFILE_NOT_FOUND : constant := 16#87C51006#;
   UTC_E_FORWARDER_ALREADY_ENABLED : constant := 16#87C51007#;
   UTC_E_FORWARDER_ALREADY_DISABLED : constant := 16#87C51008#;
   UTC_E_EVENTLOG_ENTRY_MALFORMED : constant := 16#87C51009#;
   UTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH : constant := 16#87C5100A#;
   UTC_E_SCRIPT_TERMINATED : constant := 16#87C5100B#;
   UTC_E_INVALID_CUSTOM_FILTER : constant := 16#87C5100C#;
   UTC_E_TRACE_NOT_RUNNING : constant := 16#87C5100D#;
   UTC_E_REESCALATED_TOO_QUICKLY : constant := 16#87C5100E#;
   UTC_E_ESCALATION_ALREADY_RUNNING : constant := 16#87C5100F#;
   UTC_E_PERFTRACK_ALREADY_TRACING : constant := 16#87C51010#;
   UTC_E_REACHED_MAX_ESCALATIONS : constant := 16#87C51011#;
   UTC_E_FORWARDER_PRODUCER_MISMATCH : constant := 16#87C51012#;
   UTC_E_INTENTIONAL_SCRIPT_FAILURE : constant := 16#87C51013#;
   UTC_E_SQM_INIT_FAILED : constant := 16#87C51014#;
   UTC_E_NO_WER_LOGGER_SUPPORTED : constant := 16#87C51015#;
   UTC_E_TRACERS_DONT_EXIST : constant := 16#87C51016#;
   UTC_E_WINRT_INIT_FAILED : constant := 16#87C51017#;
   UTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH : constant := 16#87C51018#;
   UTC_E_INVALID_FILTER : constant := 16#87C51019#;
   UTC_E_EXE_TERMINATED : constant := 16#87C5101A#;
   UTC_E_ESCALATION_NOT_AUTHORIZED : constant := 16#87C5101B#;
   UTC_E_SETUP_NOT_AUTHORIZED : constant := 16#87C5101C#;
   UTC_E_CHILD_PROCESS_FAILED : constant := 16#87C5101D#;
   UTC_E_COMMAND_LINE_NOT_AUTHORIZED : constant := 16#87C5101E#;
   UTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML : constant := 16#87C5101F#;
   UTC_E_ESCALATION_TIMED_OUT : constant := 16#87C51020#;
   UTC_E_SETUP_TIMED_OUT : constant := 16#87C51021#;
   UTC_E_TRIGGER_MISMATCH : constant := 16#87C51022#;
   UTC_E_TRIGGER_NOT_FOUND : constant := 16#87C51023#;
   UTC_E_SIF_NOT_SUPPORTED : constant := 16#87C51024#;
   UTC_E_DELAY_TERMINATED : constant := 16#87C51025#;
   UTC_E_DEVICE_TICKET_ERROR : constant := 16#87C51026#;
   UTC_E_TRACE_BUFFER_LIMIT_EXCEEDED : constant := 16#87C51027#;
   UTC_E_API_RESULT_UNAVAILABLE : constant := 16#87C51028#;
   UTC_E_RPC_TIMEOUT : constant := 16#87C51029#;
   UTC_E_RPC_WAIT_FAILED : constant := 16#87C5102A#;
   UTC_E_API_BUSY : constant := 16#87C5102B#;
   UTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET : constant := 16#87C5102C#;
   UTC_E_EXCLUSIVITY_NOT_AVAILABLE : constant := 16#87C5102D#;
   UTC_E_GETFILE_FILE_PATH_NOT_APPROVED : constant := 16#87C5102E#;
   UTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS : constant := 16#87C5102F#;
   UTC_E_TIME_TRIGGER_ON_START_INVALID : constant := 16#87C51030#;
   UTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION : constant := 16#87C51031#;
   UTC_E_TIME_TRIGGER_INVALID_TIME_RANGE : constant := 16#87C51032#;
   UTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE : constant := 16#87C51033#;
   UTC_E_BINARY_MISSING : constant := 16#87C51034#;
   UTC_E_FAILED_TO_RESOLVE_CONTAINER_ID : constant := 16#87C51036#;
   UTC_E_UNABLE_TO_RESOLVE_SESSION : constant := 16#87C51037#;
   UTC_E_THROTTLED : constant := 16#87C51038#;
   UTC_E_UNAPPROVED_SCRIPT : constant := 16#87C51039#;
   UTC_E_SCRIPT_MISSING : constant := 16#87C5103A#;
   UTC_E_SCENARIO_THROTTLED : constant := 16#87C5103B#;
   UTC_E_API_NOT_SUPPORTED : constant := 16#87C5103C#;
   UTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED : constant := 16#87C5103D#;
   UTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED : constant := 16#87C5103E#;
   UTC_E_CERT_REV_FAILED : constant := 16#87C5103F#;
   UTC_E_FAILED_TO_START_NDISCAP : constant := 16#87C51040#;
   UTC_E_KERNELDUMP_LIMIT_REACHED : constant := 16#87C51041#;
   UTC_E_MISSING_AGGREGATE_EVENT_TAG : constant := 16#87C51042#;
   UTC_E_INVALID_AGGREGATION_STRUCT : constant := 16#87C51043#;
   UTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION : constant := 16#87C51044#;
   UTC_E_FILTER_MISSING_ATTRIBUTE : constant := 16#87C51045#;
   UTC_E_FILTER_INVALID_TYPE : constant := 16#87C51046#;
   UTC_E_FILTER_VARIABLE_NOT_FOUND : constant := 16#87C51047#;
   UTC_E_FILTER_FUNCTION_RESTRICTED : constant := 16#87C51048#;
   UTC_E_FILTER_VERSION_MISMATCH : constant := 16#87C51049#;
   UTC_E_FILTER_INVALID_FUNCTION : constant := 16#87C51050#;
   UTC_E_FILTER_INVALID_FUNCTION_PARAMS : constant := 16#87C51051#;
   UTC_E_FILTER_INVALID_COMMAND : constant := 16#87C51052#;
   UTC_E_FILTER_ILLEGAL_EVAL : constant := 16#87C51053#;
   UTC_E_TTTRACER_RETURNED_ERROR : constant := 16#87C51054#;
   UTC_E_AGENT_DIAGNOSTICS_TOO_LARGE : constant := 16#87C51055#;
   UTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS : constant := 16#87C51056#;
   UTC_E_SCENARIO_HAS_NO_ACTIONS : constant := 16#87C51057#;
   UTC_E_TTTRACER_STORAGE_FULL : constant := 16#87C51058#;
   UTC_E_INSUFFICIENT_SPACE_TO_START_TRACE : constant := 16#87C51059#;
   UTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN : constant := 16#87C5105A#;
   UTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED : constant := 16#87C5105B#;
   UTC_E_SETREGKEYACTION_TYPE_NOT_APPROVED : constant := 16#87C5105C#;
   WINML_ERR_INVALID_DEVICE : constant := 16#88900001#;
   WINML_ERR_INVALID_BINDING : constant := 16#88900002#;
   WINML_ERR_VALUE_NOTFOUND : constant := 16#88900003#;
   WINML_ERR_SIZE_MISMATCH : constant := 16#88900004#;
   ERROR_QUIC_HANDSHAKE_FAILURE : constant := 16#80410000#;
   ERROR_QUIC_VER_NEG_FAILURE : constant := 16#80410001#;
   -- #include <winbase.h>
   -- #include <timezoneapi.h>
   TIME_ZONE_ID_INVALID : constant := 16#FFFFFFFF#;
   -- #include <winbase.h>
   TC_NORMAL : constant := 0;
   TC_HARDERR : constant := 1;
   TC_GP_TRAP : constant := 2;
   TC_SIGNAL : constant := 3;
   AC_LINE_OFFLINE : constant := 16#00#;
   AC_LINE_ONLINE : constant := 16#01#;
   AC_LINE_BACKUP_POWER : constant := 16#02#;
   AC_LINE_UNKNOWN : constant := 16#FF#;
   BATTERY_FLAG_HIGH : constant := 16#01#;
   BATTERY_FLAG_LOW : constant := 16#02#;
   BATTERY_FLAG_CRITICAL : constant := 16#04#;
   BATTERY_FLAG_CHARGING : constant := 16#08#;
   BATTERY_FLAG_NO_BATTERY : constant := 16#80#;
   BATTERY_FLAG_UNKNOWN : constant := 16#FF#;
   BATTERY_PERCENTAGE_UNKNOWN : constant := 16#FF#;
   SYSTEM_STATUS_FLAG_POWER_SAVING_ON : constant := 16#01#;
   BATTERY_LIFE_UNKNOWN : constant := 16#FFFFFFFF#;
   ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID : constant := 16#00000001#;
   ACTCTX_FLAG_LANGID_VALID : constant := 16#00000002#;
   ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID : constant := 16#00000004#;
   ACTCTX_FLAG_RESOURCE_NAME_VALID : constant := 16#00000008#;
   ACTCTX_FLAG_SET_PROCESS_DEFAULT : constant := 16#00000010#;
   ACTCTX_FLAG_APPLICATION_NAME_VALID : constant := 16#00000020#;
   ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF : constant := 16#00000040#;
   ACTCTX_FLAG_HMODULE_VALID : constant := 16#00000080#;
   DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION : constant := 16#00000001#;
   FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX : constant := 16#00000001#;
   FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS : constant := 16#00000002#;
   FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA : constant := 16#00000004#;
   ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED : constant := 1;
   QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX : constant := 16#00000004#;
   QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE : constant := 16#00000008#;
   QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS : constant := 16#00000010#;
   QUERY_ACTCTX_FLAG_NO_ADDREF : constant := 16#80000000#;
   RESTART_MAX_CMD_LINE : constant := 1024;
   RESTART_NO_CRASH : constant := 1;
   RESTART_NO_HANG : constant := 2;
   RESTART_NO_PATCH : constant := 4;
   RESTART_NO_REBOOT : constant := 8;
   RECOVERY_DEFAULT_PING_INTERVAL : constant := 5000;
   FILE_RENAME_FLAG_REPLACE_IF_EXISTS : constant := 16#00000001#;
   FILE_RENAME_FLAG_POSIX_SEMANTICS : constant := 16#00000002#;
   FILE_RENAME_FLAG_SUPPRESS_PIN_STATE_INHERITANCE : constant := 16#00000004#;
   FILE_DISPOSITION_FLAG_DO_NOT_DELETE : constant := 16#00000000#;
   FILE_DISPOSITION_FLAG_DELETE : constant := 16#00000001#;
   FILE_DISPOSITION_FLAG_POSIX_SEMANTICS : constant := 16#00000002#;
   FILE_DISPOSITION_FLAG_FORCE_IMAGE_SECTION_CHECK : constant := 16#00000004#;
   FILE_DISPOSITION_FLAG_ON_CLOSE : constant := 16#00000008#;
   FILE_DISPOSITION_FLAG_IGNORE_READONLY_ATTRIBUTE : constant := 16#00000010#;
   STORAGE_INFO_FLAGS_ALIGNED_DEVICE : constant := 16#00000001#;
   STORAGE_INFO_FLAGS_PARTITION_ALIGNED_ON_DEVICE : constant := 16#00000002#;
   STORAGE_INFO_OFFSET_UNKNOWN : constant := 16#ffffffff#;
   REMOTE_PROTOCOL_INFO_FLAG_LOOPBACK : constant := 16#00000001#;
   REMOTE_PROTOCOL_INFO_FLAG_OFFLINE : constant := 16#00000002#;
   REMOTE_PROTOCOL_INFO_FLAG_PERSISTENT_HANDLE : constant := 16#00000004#;
   RPI_FLAG_SMB2_SHARECAP_TIMEWARP : constant := 16#00000002#;
   RPI_FLAG_SMB2_SHARECAP_DFS : constant := 16#00000008#;
   RPI_FLAG_SMB2_SHARECAP_CONTINUOUS_AVAILABILITY : constant := 16#00000010#;
   RPI_FLAG_SMB2_SHARECAP_SCALEOUT : constant := 16#00000020#;
   RPI_FLAG_SMB2_SHARECAP_CLUSTER : constant := 16#00000040#;
   RPI_SMB2_FLAG_SERVERCAP_DFS : constant := 16#00000001#;
   RPI_SMB2_FLAG_SERVERCAP_LEASING : constant := 16#00000002#;
   RPI_SMB2_FLAG_SERVERCAP_LARGEMTU : constant := 16#00000004#;
   RPI_SMB2_FLAG_SERVERCAP_MULTICHANNEL : constant := 16#00000008#;
   RPI_SMB2_FLAG_SERVERCAP_PERSISTENT_HANDLES : constant := 16#00000010#;
   RPI_SMB2_FLAG_SERVERCAP_DIRECTORY_LEASING : constant := 16#00000020#;
   SYMBOLIC_LINK_FLAG_DIRECTORY : constant := 16#1#;
   SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE : constant := 16#2#;
   MICROSOFT_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS : constant := 0;
   -- #include <windows.h>
   -- #include <wingdi.h>
   R2_BLACK : constant := 1;
   R2_NOTMERGEPEN : constant := 2;
   R2_MASKNOTPEN : constant := 3;
   R2_NOTCOPYPEN : constant := 4;
   R2_MASKPENNOT : constant := 5;
   R2_NOT : constant := 6;
   R2_XORPEN : constant := 7;
   R2_NOTMASKPEN : constant := 8;
   R2_MASKPEN : constant := 9;
   R2_NOTXORPEN : constant := 10;
   R2_NOP : constant := 11;
   R2_MERGENOTPEN : constant := 12;
   R2_COPYPEN : constant := 13;
   R2_MERGEPENNOT : constant := 14;
   R2_MERGEPEN : constant := 15;
   R2_WHITE : constant := 16;
   R2_LAST : constant := 16;
   SRCCOPY : constant := 16#00CC0020#;
   SRCPAINT : constant := 16#00EE0086#;
   SRCAND : constant := 16#008800C6#;
   SRCINVERT : constant := 16#00660046#;
   SRCERASE : constant := 16#00440328#;
   NOTSRCCOPY : constant := 16#00330008#;
   NOTSRCERASE : constant := 16#001100A6#;
   MERGECOPY : constant := 16#00C000CA#;
   MERGEPAINT : constant := 16#00BB0226#;
   PATCOPY : constant := 16#00F00021#;
   PATPAINT : constant := 16#00FB0A09#;
   PATINVERT : constant := 16#005A0049#;
   DSTINVERT : constant := 16#00550009#;
   BLACKNESS : constant := 16#00000042#;
   WHITENESS : constant := 16#00FF0062#;
   NOMIRRORBITMAP : constant := 16#80000000#;
   CAPTUREBLT : constant := 16#40000000#;
   GDI_ERROR : constant := 16#FFFFFFFF#;
   ERROR : constant := 0;
   NULLREGION : constant := 1;
   SIMPLEREGION : constant := 2;
   COMPLEXREGION : constant := 3;
   RGN_AND : constant := 1;
   RGN_OR : constant := 2;
   RGN_XOR : constant := 3;
   RGN_DIFF : constant := 4;
   RGN_COPY : constant := 5;
   BLACKONWHITE : constant := 1;
   WHITEONBLACK : constant := 2;
   COLORONCOLOR : constant := 3;
   HALFTONE : constant := 4;
   MAXSTRETCHBLTMODE : constant := 4;
   ALTERNATE : constant := 1;
   WINDING : constant := 2;
   POLYFILL_LAST : constant := 2;
   LAYOUT_RTL : constant := 16#00000001#;
   LAYOUT_BTT : constant := 16#00000002#;
   LAYOUT_VBH : constant := 16#00000004#;
   LAYOUT_ORIENTATIONMASK : constant := ( Interfaces.C.Unsigned( LAYOUT_RTL )
       or Interfaces.C.Unsigned( LAYOUT_BTT )
       or Interfaces.C.Unsigned( LAYOUT_VBH ) );
   LAYOUT_BITMAPORIENTATIONPRESERVED : constant := 16#00000008#;
   TA_NOUPDATECP : constant := 0;
   TA_UPDATECP : constant := 1;
   TA_LEFT : constant := 0;
   TA_RIGHT : constant := 2;
   TA_CENTER : constant := 6;
   TA_TOP : constant := 0;
   TA_BOTTOM : constant := 8;
   TA_BASELINE : constant := 24;
   TA_RTLREADING : constant := 256;
   ETO_OPAQUE : constant := 16#0002#;
   ETO_CLIPPED : constant := 16#0004#;
   ETO_GLYPH_INDEX : constant := 16#0010#;
   ETO_RTLREADING : constant := 16#0080#;
   ETO_NUMERICSLOCAL : constant := 16#0400#;
   ETO_NUMERICSLATIN : constant := 16#0800#;
   ETO_IGNORELANGUAGE : constant := 16#1000#;
   ETO_PDY : constant := 16#2000#;
   ETO_REVERSE_INDEX_MAP : constant := 16#10000#;
   ASPECT_FILTERING : constant := 16#0001#;
   DCB_RESET : constant := 16#0001#;
   DCB_ACCUMULATE : constant := 16#0002#;
   DCB_SET : constant := ( Interfaces.C.Unsigned( DCB_RESET )
       or Interfaces.C.Unsigned( DCB_ACCUMULATE ) );
   DCB_ENABLE : constant := 16#0004#;
   DCB_DISABLE : constant := 16#0008#;
   META_SETBKCOLOR : constant := 16#0201#;
   META_SETBKMODE : constant := 16#0102#;
   META_SETMAPMODE : constant := 16#0103#;
   META_SETROP2 : constant := 16#0104#;
   META_SETRELABS : constant := 16#0105#;
   META_SETPOLYFILLMODE : constant := 16#0106#;
   META_SETSTRETCHBLTMODE : constant := 16#0107#;
   META_SETTEXTCHAREXTRA : constant := 16#0108#;
   META_SETTEXTCOLOR : constant := 16#0209#;
   META_SETTEXTJUSTIFICATION : constant := 16#020A#;
   META_SETWINDOWORG : constant := 16#020B#;
   META_SETWINDOWEXT : constant := 16#020C#;
   META_SETVIEWPORTORG : constant := 16#020D#;
   META_SETVIEWPORTEXT : constant := 16#020E#;
   META_OFFSETWINDOWORG : constant := 16#020F#;
   META_SCALEWINDOWEXT : constant := 16#0410#;
   META_OFFSETVIEWPORTORG : constant := 16#0211#;
   META_SCALEVIEWPORTEXT : constant := 16#0412#;
   META_LINETO : constant := 16#0213#;
   META_MOVETO : constant := 16#0214#;
   META_EXCLUDECLIPRECT : constant := 16#0415#;
   META_INTERSECTCLIPRECT : constant := 16#0416#;
   META_ARC : constant := 16#0817#;
   META_ELLIPSE : constant := 16#0418#;
   META_FLOODFILL : constant := 16#0419#;
   META_PIE : constant := 16#081A#;
   META_RECTANGLE : constant := 16#041B#;
   META_ROUNDRECT : constant := 16#061C#;
   META_PATBLT : constant := 16#061D#;
   META_SAVEDC : constant := 16#001E#;
   META_SETPIXEL : constant := 16#041F#;
   META_OFFSETCLIPRGN : constant := 16#0220#;
   META_TEXTOUT : constant := 16#0521#;
   META_BITBLT : constant := 16#0922#;
   META_STRETCHBLT : constant := 16#0B23#;
   META_POLYGON : constant := 16#0324#;
   META_POLYLINE : constant := 16#0325#;
   META_ESCAPE : constant := 16#0626#;
   META_RESTOREDC : constant := 16#0127#;
   META_FILLREGION : constant := 16#0228#;
   META_FRAMEREGION : constant := 16#0429#;
   META_INVERTREGION : constant := 16#012A#;
   META_PAINTREGION : constant := 16#012B#;
   META_SELECTCLIPREGION : constant := 16#012C#;
   META_SELECTOBJECT : constant := 16#012D#;
   META_SETTEXTALIGN : constant := 16#012E#;
   META_CHORD : constant := 16#0830#;
   META_SETMAPPERFLAGS : constant := 16#0231#;
   META_EXTTEXTOUT : constant := 16#0a32#;
   META_SETDIBTODEV : constant := 16#0d33#;
   META_SELECTPALETTE : constant := 16#0234#;
   META_REALIZEPALETTE : constant := 16#0035#;
   META_ANIMATEPALETTE : constant := 16#0436#;
   META_SETPALENTRIES : constant := 16#0037#;
   META_POLYPOLYGON : constant := 16#0538#;
   META_RESIZEPALETTE : constant := 16#0139#;
   META_DIBBITBLT : constant := 16#0940#;
   META_DIBSTRETCHBLT : constant := 16#0b41#;
   META_DIBCREATEPATTERNBRUSH : constant := 16#0142#;
   META_STRETCHDIB : constant := 16#0f43#;
   META_EXTFLOODFILL : constant := 16#0548#;
   META_SETLAYOUT : constant := 16#0149#;
   META_DELETEOBJECT : constant := 16#01f0#;
   META_CREATEPALETTE : constant := 16#00f7#;
   META_CREATEPATTERNBRUSH : constant := 16#01F9#;
   META_CREATEPENINDIRECT : constant := 16#02FA#;
   META_CREATEFONTINDIRECT : constant := 16#02FB#;
   META_CREATEBRUSHINDIRECT : constant := 16#02FC#;
   META_CREATEREGION : constant := 16#06FF#;
   NEWFRAME : constant := 1;
   ABORTDOC : constant := 2;
   NEXTBAND : constant := 3;
   SETCOLORTABLE : constant := 4;
   GETCOLORTABLE : constant := 5;
   FLUSHOUTPUT : constant := 6;
   DRAFTMODE : constant := 7;
   QUERYESCSUPPORT : constant := 8;
   SETABORTPROC : constant := 9;
   STARTDOC : constant := 10;
   ENDDOC : constant := 11;
   GETPHYSPAGESIZE : constant := 12;
   GETPRINTINGOFFSET : constant := 13;
   GETSCALINGFACTOR : constant := 14;
   MFCOMMENT : constant := 15;
   GETPENWIDTH : constant := 16;
   SETCOPYCOUNT : constant := 17;
   SELECTPAPERSOURCE : constant := 18;
   DEVICEDATA : constant := 19;
   PASSTHROUGH : constant := 19;
   GETTECHNOLGY : constant := 20;
   GETTECHNOLOGY : constant := 20;
   SETLINECAP : constant := 21;
   SETLINEJOIN : constant := 22;
   SETMITERLIMIT : constant := 23;
   BANDINFO : constant := 24;
   DRAWPATTERNRECT : constant := 25;
   GETVECTORPENSIZE : constant := 26;
   GETVECTORBRUSHSIZE : constant := 27;
   ENABLEDUPLEX : constant := 28;
   GETSETPAPERBINS : constant := 29;
   GETSETPRINTORIENT : constant := 30;
   ENUMPAPERBINS : constant := 31;
   SETDIBSCALING : constant := 32;
   EPSPRINTING : constant := 33;
   ENUMPAPERMETRICS : constant := 34;
   GETSETPAPERMETRICS : constant := 35;
   POSTSCRIPT_DATA : constant := 37;
   POSTSCRIPT_IGNORE : constant := 38;
   MOUSETRAILS : constant := 39;
   GETDEVICEUNITS : constant := 42;
   GETEXTENDEDTEXTMETRICS : constant := 256;
   GETEXTENTTABLE : constant := 257;
   GETPAIRKERNTABLE : constant := 258;
   GETTRACKKERNTABLE : constant := 259;
   EXTTEXTOUT : constant := 512;
   GETFACENAME : constant := 513;
   DOWNLOADFACE : constant := 514;
   ENABLERELATIVEWIDTHS : constant := 768;
   ENABLEPAIRKERNING : constant := 769;
   SETKERNTRACK : constant := 770;
   SETALLJUSTVALUES : constant := 771;
   SETCHARSET : constant := 772;
   STRETCHBLT : constant := 2048;
   METAFILE_DRIVER : constant := 2049;
   GETSETSCREENPARAMS : constant := 3072;
   QUERYDIBSUPPORT : constant := 3073;
   BEGIN_PATH : constant := 4096;
   CLIP_TO_PATH : constant := 4097;
   END_PATH : constant := 4098;
   EXT_DEVICE_CAPS : constant := 4099;
   RESTORE_CTM : constant := 4100;
   SAVE_CTM : constant := 4101;
   SET_ARC_DIRECTION : constant := 4102;
   SET_BACKGROUND_COLOR : constant := 4103;
   SET_POLY_MODE : constant := 4104;
   SET_SCREEN_ANGLE : constant := 4105;
   SET_SPREAD : constant := 4106;
   TRANSFORM_CTM : constant := 4107;
   SET_CLIP_BOX : constant := 4108;
   SET_BOUNDS : constant := 4109;
   SET_MIRROR_MODE : constant := 4110;
   OPENCHANNEL : constant := 4110;
   DOWNLOADHEADER : constant := 4111;
   CLOSECHANNEL : constant := 4112;
   POSTSCRIPT_PASSTHROUGH : constant := 4115;
   ENCAPSULATED_POSTSCRIPT : constant := 4116;
   POSTSCRIPT_IDENTIFY : constant := 4117;
   POSTSCRIPT_INJECTION : constant := 4118;
   CHECKJPEGFORMAT : constant := 4119;
   CHECKPNGFORMAT : constant := 4120;
   GET_PS_FEATURESETTING : constant := 4121;
   GDIPLUS_TS_QUERYVER : constant := 4122;
   GDIPLUS_TS_RECORD : constant := 4123;
   MILCORE_TS_QUERYVER_RESULT_FALSE : constant := 16#0#;
   MILCORE_TS_QUERYVER_RESULT_TRUE : constant := 16#7FFFFFFF#;
   SPCLPASSTHROUGH2 : constant := 4568;
   PSIDENT_GDICENTRIC : constant := 0;
   PSIDENT_PSCENTRIC : constant := 1;
   PSINJECT_BEGINSTREAM : constant := 1;
   PSINJECT_PSADOBE : constant := 2;
   PSINJECT_PAGESATEND : constant := 3;
   PSINJECT_PAGES : constant := 4;
   PSINJECT_DOCNEEDEDRES : constant := 5;
   PSINJECT_DOCSUPPLIEDRES : constant := 6;
   PSINJECT_PAGEORDER : constant := 7;
   PSINJECT_ORIENTATION : constant := 8;
   PSINJECT_BOUNDINGBOX : constant := 9;
   PSINJECT_DOCUMENTPROCESSCOLORS : constant := 10;
   PSINJECT_COMMENTS : constant := 11;
   PSINJECT_BEGINDEFAULTS : constant := 12;
   PSINJECT_ENDDEFAULTS : constant := 13;
   PSINJECT_BEGINPROLOG : constant := 14;
   PSINJECT_ENDPROLOG : constant := 15;
   PSINJECT_BEGINSETUP : constant := 16;
   PSINJECT_ENDSETUP : constant := 17;
   PSINJECT_TRAILER : constant := 18;
   PSINJECT_EOF : constant := 19;
   PSINJECT_ENDSTREAM : constant := 20;
   PSINJECT_DOCUMENTPROCESSCOLORSATEND : constant := 21;
   PSINJECT_PAGENUMBER : constant := 100;
   PSINJECT_BEGINPAGESETUP : constant := 101;
   PSINJECT_ENDPAGESETUP : constant := 102;
   PSINJECT_PAGETRAILER : constant := 103;
   PSINJECT_PLATECOLOR : constant := 104;
   PSINJECT_SHOWPAGE : constant := 105;
   PSINJECT_PAGEBBOX : constant := 106;
   PSINJECT_ENDPAGECOMMENTS : constant := 107;
   PSINJECT_VMSAVE : constant := 200;
   PSINJECT_VMRESTORE : constant := 201;
   PSINJECT_DLFONT : constant := 16#dddddddd#;
   FEATURESETTING_NUP : constant := 0;
   FEATURESETTING_OUTPUT : constant := 1;
   FEATURESETTING_PSLEVEL : constant := 2;
   FEATURESETTING_CUSTPAPER : constant := 3;
   FEATURESETTING_MIRROR : constant := 4;
   FEATURESETTING_NEGATIVE : constant := 5;
   FEATURESETTING_PROTOCOL : constant := 6;
   FEATURESETTING_PRIVATE_BEGIN : constant := 16#1000#;
   FEATURESETTING_PRIVATE_END : constant := 16#1FFF#;
   PSPROTOCOL_ASCII : constant := 0;
   PSPROTOCOL_BCP : constant := 1;
   PSPROTOCOL_TBCP : constant := 2;
   PSPROTOCOL_BINARY : constant := 3;
   QDI_SETDIBITS : constant := 1;
   QDI_GETDIBITS : constant := 2;
   QDI_DIBTOSCREEN : constant := 4;
   QDI_STRETCHDIB : constant := 8;
   SP_NOTREPORTED : constant := 16#4000#;
   SP_ERROR : constant := -1;
   SP_APPABORT : constant := -2;
   SP_USERABORT : constant := -3;
   SP_OUTOFDISK : constant := -4;
   SP_OUTOFMEMORY : constant := -5;
   PR_JOBSTATUS : constant := 16#0000#;
   OBJ_PEN : constant := 1;
   OBJ_BRUSH : constant := 2;
   OBJ_DC : constant := 3;
   OBJ_METADC : constant := 4;
   OBJ_PAL : constant := 5;
   OBJ_FONT : constant := 6;
   OBJ_BITMAP : constant := 7;
   OBJ_REGION : constant := 8;
   OBJ_METAFILE : constant := 9;
   OBJ_MEMDC : constant := 10;
   OBJ_EXTPEN : constant := 11;
   OBJ_ENHMETADC : constant := 12;
   OBJ_ENHMETAFILE : constant := 13;
   OBJ_COLORSPACE : constant := 14;
   MWT_IDENTITY : constant := 1;
   MWT_LEFTMULTIPLY : constant := 2;
   MWT_RIGHTMULTIPLY : constant := 3;
   -- #include <pshpack1.h>
   -- #include <wingdi.h>
   -- #include <poppack.h>
   -- #include <wingdi.h>
   CS_ENABLE : constant := 16#00000001#;
   CS_DISABLE : constant := 16#00000002#;
   CS_DELETE_TRANSFORM : constant := 16#00000003#;
   LCS_CALIBRATED_RGB : constant := 16#00000000#;
   LCS_GM_BUSINESS : constant := 16#00000001#;
   LCS_GM_GRAPHICS : constant := 16#00000002#;
   LCS_GM_IMAGES : constant := 16#00000004#;
   LCS_GM_ABS_COLORIMETRIC : constant := 16#00000008#;
   CM_OUT_OF_GAMUT : constant := 255;
   CM_IN_GAMUT : constant := 0;
   ICM_ADDPROFILE : constant := 1;
   ICM_DELETEPROFILE : constant := 2;
   ICM_QUERYPROFILE : constant := 3;
   ICM_SETDEFAULTPROFILE : constant := 4;
   ICM_REGISTERICMATCHER : constant := 5;
   ICM_UNREGISTERICMATCHER : constant := 6;
   ICM_QUERYMATCH : constant := 7;
   BI_RGB : constant := 0;
   BI_RLE8 : constant := 1;
   BI_RLE4 : constant := 2;
   BI_BITFIELDS : constant := 3;
   BI_JPEG : constant := 4;
   BI_PNG : constant := 5;
   -- #include <pshpack2.h>
   -- #include <wingdi.h>
   -- #include <poppack.h>
   -- #include <wingdi.h>
   TCI_SRCCHARSET : constant := 1;
   TCI_SRCCODEPAGE : constant := 2;
   TCI_SRCFONTSIG : constant := 3;
   TCI_SRCLOCALE : constant := 16#1000#;
   -- #include <pshpack2.h>
   -- #include <wingdi.h>
   -- #include <poppack.h>
   -- #include <wingdi.h>
   TMPF_FIXED_PITCH : constant := 16#01#;
   TMPF_VECTOR : constant := 16#02#;
   TMPF_DEVICE : constant := 16#08#;
   TMPF_TRUETYPE : constant := 16#04#;
   -- #include <pshpack4.h>
   -- #include <wingdi.h>
   -- #include <poppack.h>
   -- #include <wingdi.h>
   NTM_REGULAR : constant := 16#00000040#;
   NTM_BOLD : constant := 16#00000020#;
   NTM_ITALIC : constant := 16#00000001#;
   NTM_NONNEGATIVE_AC : constant := 16#00010000#;
   NTM_PS_OPENTYPE : constant := 16#00020000#;
   NTM_TT_OPENTYPE : constant := 16#00040000#;
   NTM_MULTIPLEMASTER : constant := 16#00080000#;
   NTM_TYPE1 : constant := 16#00100000#;
   NTM_DSIG : constant := 16#00200000#;
   -- #include <pshpack4.h>
   -- #include <wingdi.h>
   -- #include <poppack.h>
   -- #include <wingdi.h>
   LF_FACESIZE : constant := 32;
   LF_FULLFACESIZE : constant := 64;
   OUT_DEFAULT_PRECIS : constant := 0;
   OUT_STRING_PRECIS : constant := 1;
   OUT_CHARACTER_PRECIS : constant := 2;
   OUT_STROKE_PRECIS : constant := 3;
   OUT_TT_PRECIS : constant := 4;
   OUT_DEVICE_PRECIS : constant := 5;
   OUT_RASTER_PRECIS : constant := 6;
   OUT_TT_ONLY_PRECIS : constant := 7;
   OUT_OUTLINE_PRECIS : constant := 8;
   OUT_SCREEN_OUTLINE_PRECIS : constant := 9;
   OUT_PS_ONLY_PRECIS : constant := 10;
   CLIP_DEFAULT_PRECIS : constant := 0;
   CLIP_CHARACTER_PRECIS : constant := 1;
   CLIP_STROKE_PRECIS : constant := 2;
   CLIP_MASK : constant := 16#f#;
   -- [Todo] CLIP_LH_ANGLES ( 1 << 4 );
   -- [Todo] CLIP_TT_ALWAYS ( 2 << 4 );
   -- [Todo] CLIP_DFA_DISABLE ( 4 << 4 );
   -- [Todo] CLIP_EMBEDDED ( 8 << 4 );
   DEFAULT_QUALITY : constant := 0;
   DRAFT_QUALITY : constant := 1;
   PROOF_QUALITY : constant := 2;
   NONANTIALIASED_QUALITY : constant := 3;
   ANTIALIASED_QUALITY : constant := 4;
   CLEARTYPE_QUALITY : constant := 5;
   CLEARTYPE_NATURAL_QUALITY : constant := 6;
   DEFAULT_PITCH : constant := 0;
   FIXED_PITCH : constant := 1;
   VARIABLE_PITCH : constant := 2;
   MONO_FONT : constant := 8;
   ANSI_CHARSET : constant := 0;
   DEFAULT_CHARSET : constant := 1;
   SYMBOL_CHARSET : constant := 2;
   SHIFTJIS_CHARSET : constant := 128;
   HANGEUL_CHARSET : constant := 129;
   HANGUL_CHARSET : constant := 129;
   GB2312_CHARSET : constant := 134;
   CHINESEBIG5_CHARSET : constant := 136;
   OEM_CHARSET : constant := 255;
   JOHAB_CHARSET : constant := 130;
   HEBREW_CHARSET : constant := 177;
   ARABIC_CHARSET : constant := 178;
   GREEK_CHARSET : constant := 161;
   TURKISH_CHARSET : constant := 162;
   VIETNAMESE_CHARSET : constant := 163;
   THAI_CHARSET : constant := 222;
   EASTEUROPE_CHARSET : constant := 238;
   RUSSIAN_CHARSET : constant := 204;
   MAC_CHARSET : constant := 77;
   BALTIC_CHARSET : constant := 186;
   FS_LATIN1 : constant := 16#00000001#;
   FS_LATIN2 : constant := 16#00000002#;
   FS_CYRILLIC : constant := 16#00000004#;
   FS_GREEK : constant := 16#00000008#;
   FS_TURKISH : constant := 16#00000010#;
   FS_HEBREW : constant := 16#00000020#;
   FS_ARABIC : constant := 16#00000040#;
   FS_BALTIC : constant := 16#00000080#;
   FS_VIETNAMESE : constant := 16#00000100#;
   FS_THAI : constant := 16#00010000#;
   FS_JISJAPAN : constant := 16#00020000#;
   FS_CHINESESIMP : constant := 16#00040000#;
   FS_WANSUNG : constant := 16#00080000#;
   FS_CHINESETRAD : constant := 16#00100000#;
   FS_JOHAB : constant := 16#00200000#;
   FS_SYMBOL : constant := 16#80000000#;
   -- [Todo] FF_DONTCARE ( 0 << 4 );
   -- [Todo] FF_ROMAN ( 1 << 4 );
   -- [Todo] FF_SWISS ( 2 << 4 );
   -- [Todo] FF_MODERN ( 3 << 4 );
   -- [Todo] FF_SCRIPT ( 4 << 4 );
   -- [Todo] FF_DECORATIVE ( 5 << 4 );
   FW_DONTCARE : constant := 0;
   FW_THIN : constant := 100;
   FW_EXTRALIGHT : constant := 200;
   FW_LIGHT : constant := 300;
   FW_NORMAL : constant := 400;
   FW_MEDIUM : constant := 500;
   FW_SEMIBOLD : constant := 600;
   FW_BOLD : constant := 700;
   FW_EXTRABOLD : constant := 800;
   FW_HEAVY : constant := 900;
   PANOSE_COUNT : constant := 10;
   PAN_FAMILYTYPE_INDEX : constant := 0;
   PAN_SERIFSTYLE_INDEX : constant := 1;
   PAN_WEIGHT_INDEX : constant := 2;
   PAN_PROPORTION_INDEX : constant := 3;
   PAN_CONTRAST_INDEX : constant := 4;
   PAN_STROKEVARIATION_INDEX : constant := 5;
   PAN_ARMSTYLE_INDEX : constant := 6;
   PAN_LETTERFORM_INDEX : constant := 7;
   PAN_MIDLINE_INDEX : constant := 8;
   PAN_XHEIGHT_INDEX : constant := 9;
   PAN_CULTURE_LATIN : constant := 0;
   PAN_ANY : constant := 0;
   PAN_NO_FIT : constant := 1;
   PAN_FAMILY_TEXT_DISPLAY : constant := 2;
   PAN_FAMILY_SCRIPT : constant := 3;
   PAN_FAMILY_DECORATIVE : constant := 4;
   PAN_FAMILY_PICTORIAL : constant := 5;
   PAN_SERIF_COVE : constant := 2;
   PAN_SERIF_OBTUSE_COVE : constant := 3;
   PAN_SERIF_SQUARE_COVE : constant := 4;
   PAN_SERIF_OBTUSE_SQUARE_COVE : constant := 5;
   PAN_SERIF_SQUARE : constant := 6;
   PAN_SERIF_THIN : constant := 7;
   PAN_SERIF_BONE : constant := 8;
   PAN_SERIF_EXAGGERATED : constant := 9;
   PAN_SERIF_TRIANGLE : constant := 10;
   PAN_SERIF_NORMAL_SANS : constant := 11;
   PAN_SERIF_OBTUSE_SANS : constant := 12;
   PAN_SERIF_PERP_SANS : constant := 13;
   PAN_SERIF_FLARED : constant := 14;
   PAN_SERIF_ROUNDED : constant := 15;
   PAN_WEIGHT_VERY_LIGHT : constant := 2;
   PAN_WEIGHT_LIGHT : constant := 3;
   PAN_WEIGHT_THIN : constant := 4;
   PAN_WEIGHT_BOOK : constant := 5;
   PAN_WEIGHT_MEDIUM : constant := 6;
   PAN_WEIGHT_DEMI : constant := 7;
   PAN_WEIGHT_BOLD : constant := 8;
   PAN_WEIGHT_HEAVY : constant := 9;
   PAN_WEIGHT_BLACK : constant := 10;
   PAN_WEIGHT_NORD : constant := 11;
   PAN_PROP_OLD_STYLE : constant := 2;
   PAN_PROP_MODERN : constant := 3;
   PAN_PROP_EVEN_WIDTH : constant := 4;
   PAN_PROP_EXPANDED : constant := 5;
   PAN_PROP_CONDENSED : constant := 6;
   PAN_PROP_VERY_EXPANDED : constant := 7;
   PAN_PROP_VERY_CONDENSED : constant := 8;
   PAN_PROP_MONOSPACED : constant := 9;
   PAN_CONTRAST_NONE : constant := 2;
   PAN_CONTRAST_VERY_LOW : constant := 3;
   PAN_CONTRAST_LOW : constant := 4;
   PAN_CONTRAST_MEDIUM_LOW : constant := 5;
   PAN_CONTRAST_MEDIUM : constant := 6;
   PAN_CONTRAST_MEDIUM_HIGH : constant := 7;
   PAN_CONTRAST_HIGH : constant := 8;
   PAN_CONTRAST_VERY_HIGH : constant := 9;
   PAN_STROKE_GRADUAL_DIAG : constant := 2;
   PAN_STROKE_GRADUAL_TRAN : constant := 3;
   PAN_STROKE_GRADUAL_VERT : constant := 4;
   PAN_STROKE_GRADUAL_HORZ : constant := 5;
   PAN_STROKE_RAPID_VERT : constant := 6;
   PAN_STROKE_RAPID_HORZ : constant := 7;
   PAN_STROKE_INSTANT_VERT : constant := 8;
   PAN_STRAIGHT_ARMS_HORZ : constant := 2;
   PAN_STRAIGHT_ARMS_WEDGE : constant := 3;
   PAN_STRAIGHT_ARMS_VERT : constant := 4;
   PAN_STRAIGHT_ARMS_SINGLE_SERIF : constant := 5;
   PAN_STRAIGHT_ARMS_DOUBLE_SERIF : constant := 6;
   PAN_BENT_ARMS_HORZ : constant := 7;
   PAN_BENT_ARMS_WEDGE : constant := 8;
   PAN_BENT_ARMS_VERT : constant := 9;
   PAN_BENT_ARMS_SINGLE_SERIF : constant := 10;
   PAN_BENT_ARMS_DOUBLE_SERIF : constant := 11;
   PAN_LETT_NORMAL_CONTACT : constant := 2;
   PAN_LETT_NORMAL_WEIGHTED : constant := 3;
   PAN_LETT_NORMAL_BOXED : constant := 4;
   PAN_LETT_NORMAL_FLATTENED : constant := 5;
   PAN_LETT_NORMAL_ROUNDED : constant := 6;
   PAN_LETT_NORMAL_OFF_CENTER : constant := 7;
   PAN_LETT_NORMAL_SQUARE : constant := 8;
   PAN_LETT_OBLIQUE_CONTACT : constant := 9;
   PAN_LETT_OBLIQUE_WEIGHTED : constant := 10;
   PAN_LETT_OBLIQUE_BOXED : constant := 11;
   PAN_LETT_OBLIQUE_FLATTENED : constant := 12;
   PAN_LETT_OBLIQUE_ROUNDED : constant := 13;
   PAN_LETT_OBLIQUE_OFF_CENTER : constant := 14;
   PAN_LETT_OBLIQUE_SQUARE : constant := 15;
   PAN_MIDLINE_STANDARD_TRIMMED : constant := 2;
   PAN_MIDLINE_STANDARD_POINTED : constant := 3;
   PAN_MIDLINE_STANDARD_SERIFED : constant := 4;
   PAN_MIDLINE_HIGH_TRIMMED : constant := 5;
   PAN_MIDLINE_HIGH_POINTED : constant := 6;
   PAN_MIDLINE_HIGH_SERIFED : constant := 7;
   PAN_MIDLINE_CONSTANT_TRIMMED : constant := 8;
   PAN_MIDLINE_CONSTANT_POINTED : constant := 9;
   PAN_MIDLINE_CONSTANT_SERIFED : constant := 10;
   PAN_MIDLINE_LOW_TRIMMED : constant := 11;
   PAN_MIDLINE_LOW_POINTED : constant := 12;
   PAN_MIDLINE_LOW_SERIFED : constant := 13;
   PAN_XHEIGHT_CONSTANT_SMALL : constant := 2;
   PAN_XHEIGHT_CONSTANT_STD : constant := 3;
   PAN_XHEIGHT_CONSTANT_LARGE : constant := 4;
   PAN_XHEIGHT_DUCKING_SMALL : constant := 5;
   PAN_XHEIGHT_DUCKING_STD : constant := 6;
   PAN_XHEIGHT_DUCKING_LARGE : constant := 7;
   ELF_VENDOR_SIZE : constant := 4;
   ELF_VERSION : constant := 0;
   ELF_CULTURE_LATIN : constant := 0;
   RASTER_FONTTYPE : constant := 16#0001#;
   DEVICE_FONTTYPE : constant := 16#0002#;
   TRUETYPE_FONTTYPE : constant := 16#0004#;
   PC_RESERVED : constant := 16#01#;
   PC_EXPLICIT : constant := 16#02#;
   PC_NOCOLLAPSE : constant := 16#04#;
   TRANSPARENT : constant := 1;
   OPAQUE : constant := 2;
   BKMODE_LAST : constant := 2;
   GM_COMPATIBLE : constant := 1;
   GM_ADVANCED : constant := 2;
   GM_LAST : constant := 2;
   PT_CLOSEFIGURE : constant := 16#01#;
   PT_LINETO : constant := 16#02#;
   PT_BEZIERTO : constant := 16#04#;
   PT_MOVETO : constant := 16#06#;
   MM_TEXT : constant := 1;
   MM_LOMETRIC : constant := 2;
   MM_HIMETRIC : constant := 3;
   MM_LOENGLISH : constant := 4;
   MM_HIENGLISH : constant := 5;
   MM_TWIPS : constant := 6;
   MM_ISOTROPIC : constant := 7;
   MM_ANISOTROPIC : constant := 8;
   ABSOLUTE : constant := 1;
   RELATIVE : constant := 2;
   WHITE_BRUSH : constant := 0;
   LTGRAY_BRUSH : constant := 1;
   GRAY_BRUSH : constant := 2;
   DKGRAY_BRUSH : constant := 3;
   BLACK_BRUSH : constant := 4;
   NULL_BRUSH : constant := 5;
   WHITE_PEN : constant := 6;
   BLACK_PEN : constant := 7;
   NULL_PEN : constant := 8;
   OEM_FIXED_FONT : constant := 10;
   ANSI_FIXED_FONT : constant := 11;
   ANSI_VAR_FONT : constant := 12;
   SYSTEM_FONT : constant := 13;
   DEVICE_DEFAULT_FONT : constant := 14;
   DEFAULT_PALETTE : constant := 15;
   SYSTEM_FIXED_FONT : constant := 16;
   DEFAULT_GUI_FONT : constant := 17;
   DC_BRUSH : constant := 18;
   DC_PEN : constant := 19;
   STOCK_LAST : constant := 19;
   CLR_INVALID : constant := 16#FFFFFFFF#;
   BS_SOLID : constant := 0;
   BS_NULL : constant := 1;
   BS_HATCHED : constant := 2;
   BS_PATTERN : constant := 3;
   BS_INDEXED : constant := 4;
   BS_DIBPATTERN : constant := 5;
   BS_DIBPATTERNPT : constant := 6;
   BS_PATTERN8X8 : constant := 7;
   BS_DIBPATTERN8X8 : constant := 8;
   BS_MONOPATTERN : constant := 9;
   HS_HORIZONTAL : constant := 0;
   HS_VERTICAL : constant := 1;
   HS_FDIAGONAL : constant := 2;
   HS_BDIAGONAL : constant := 3;
   HS_CROSS : constant := 4;
   HS_DIAGCROSS : constant := 5;
   HS_API_MAX : constant := 12;
   PS_SOLID : constant := 0;
   PS_DASH : constant := 1;
   PS_DOT : constant := 2;
   PS_DASHDOT : constant := 3;
   PS_DASHDOTDOT : constant := 4;
   PS_NULL : constant := 5;
   PS_INSIDEFRAME : constant := 6;
   PS_USERSTYLE : constant := 7;
   PS_ALTERNATE : constant := 8;
   PS_STYLE_MASK : constant := 16#0000000F#;
   PS_ENDCAP_ROUND : constant := 16#00000000#;
   PS_ENDCAP_SQUARE : constant := 16#00000100#;
   PS_ENDCAP_FLAT : constant := 16#00000200#;
   PS_ENDCAP_MASK : constant := 16#00000F00#;
   PS_JOIN_ROUND : constant := 16#00000000#;
   PS_JOIN_BEVEL : constant := 16#00001000#;
   PS_JOIN_MITER : constant := 16#00002000#;
   PS_JOIN_MASK : constant := 16#0000F000#;
   PS_COSMETIC : constant := 16#00000000#;
   PS_GEOMETRIC : constant := 16#00010000#;
   PS_TYPE_MASK : constant := 16#000F0000#;
   AD_COUNTERCLOCKWISE : constant := 1;
   AD_CLOCKWISE : constant := 2;
   DRIVERVERSION : constant := 0;
   TECHNOLOGY : constant := 2;
   HORZSIZE : constant := 4;
   VERTSIZE : constant := 6;
   HORZRES : constant := 8;
   VERTRES : constant := 10;
   BITSPIXEL : constant := 12;
   PLANES : constant := 14;
   NUMBRUSHES : constant := 16;
   NUMPENS : constant := 18;
   NUMMARKERS : constant := 20;
   NUMFONTS : constant := 22;
   NUMCOLORS : constant := 24;
   PDEVICESIZE : constant := 26;
   CURVECAPS : constant := 28;
   LINECAPS : constant := 30;
   POLYGONALCAPS : constant := 32;
   TEXTCAPS : constant := 34;
   CLIPCAPS : constant := 36;
   RASTERCAPS : constant := 38;
   ASPECTX : constant := 40;
   ASPECTY : constant := 42;
   ASPECTXY : constant := 44;
   LOGPIXELSX : constant := 88;
   LOGPIXELSY : constant := 90;
   SIZEPALETTE : constant := 104;
   NUMRESERVED : constant := 106;
   COLORRES : constant := 108;
   PHYSICALWIDTH : constant := 110;
   PHYSICALHEIGHT : constant := 111;
   PHYSICALOFFSETX : constant := 112;
   PHYSICALOFFSETY : constant := 113;
   SCALINGFACTORX : constant := 114;
   SCALINGFACTORY : constant := 115;
   VREFRESH : constant := 116;
   DESKTOPVERTRES : constant := 117;
   DESKTOPHORZRES : constant := 118;
   BLTALIGNMENT : constant := 119;
   SHADEBLENDCAPS : constant := 120;
   COLORMGMTCAPS : constant := 121;
   DT_PLOTTER : constant := 0;
   DT_RASDISPLAY : constant := 1;
   DT_RASPRINTER : constant := 2;
   DT_RASCAMERA : constant := 3;
   DT_CHARSTREAM : constant := 4;
   DT_METAFILE : constant := 5;
   DT_DISPFILE : constant := 6;
   CC_NONE : constant := 0;
   CC_CIRCLES : constant := 1;
   CC_PIE : constant := 2;
   CC_CHORD : constant := 4;
   CC_ELLIPSES : constant := 8;
   CC_WIDE : constant := 16;
   CC_STYLED : constant := 32;
   CC_WIDESTYLED : constant := 64;
   CC_INTERIORS : constant := 128;
   CC_ROUNDRECT : constant := 256;
   LC_NONE : constant := 0;
   LC_POLYLINE : constant := 2;
   LC_MARKER : constant := 4;
   LC_POLYMARKER : constant := 8;
   LC_WIDE : constant := 16;
   LC_STYLED : constant := 32;
   LC_WIDESTYLED : constant := 64;
   LC_INTERIORS : constant := 128;
   PC_NONE : constant := 0;
   PC_POLYGON : constant := 1;
   PC_RECTANGLE : constant := 2;
   PC_WINDPOLYGON : constant := 4;
   PC_TRAPEZOID : constant := 4;
   PC_SCANLINE : constant := 8;
   PC_WIDE : constant := 16;
   PC_STYLED : constant := 32;
   PC_WIDESTYLED : constant := 64;
   PC_INTERIORS : constant := 128;
   PC_POLYPOLYGON : constant := 256;
   PC_PATHS : constant := 512;
   CP_NONE : constant := 0;
   CP_RECTANGLE : constant := 1;
   CP_REGION : constant := 2;
   TC_OP_CHARACTER : constant := 16#00000001#;
   TC_OP_STROKE : constant := 16#00000002#;
   TC_CP_STROKE : constant := 16#00000004#;
   TC_CR_90 : constant := 16#00000008#;
   TC_CR_ANY : constant := 16#00000010#;
   TC_SF_X_YINDEP : constant := 16#00000020#;
   TC_SA_DOUBLE : constant := 16#00000040#;
   TC_SA_INTEGER : constant := 16#00000080#;
   TC_SA_CONTIN : constant := 16#00000100#;
   TC_EA_DOUBLE : constant := 16#00000200#;
   TC_IA_ABLE : constant := 16#00000400#;
   TC_UA_ABLE : constant := 16#00000800#;
   TC_SO_ABLE : constant := 16#00001000#;
   TC_RA_ABLE : constant := 16#00002000#;
   TC_VA_ABLE : constant := 16#00004000#;
   TC_RESERVED : constant := 16#00008000#;
   TC_SCROLLBLT : constant := 16#00010000#;
   RC_BITBLT : constant := 1;
   RC_BANDING : constant := 2;
   RC_SCALING : constant := 4;
   RC_BITMAP64 : constant := 8;
   RC_GDI20_OUTPUT : constant := 16#0010#;
   RC_GDI20_STATE : constant := 16#0020#;
   RC_SAVEBITMAP : constant := 16#0040#;
   RC_DI_BITMAP : constant := 16#0080#;
   RC_PALETTE : constant := 16#0100#;
   RC_DIBTODEV : constant := 16#0200#;
   RC_BIGFONT : constant := 16#0400#;
   RC_STRETCHBLT : constant := 16#0800#;
   RC_FLOODFILL : constant := 16#1000#;
   RC_STRETCHDIB : constant := 16#2000#;
   RC_OP_DX_OUTPUT : constant := 16#4000#;
   RC_DEVBITS : constant := 16#8000#;
   SB_NONE : constant := 16#00000000#;
   SB_CONST_ALPHA : constant := 16#00000001#;
   SB_PIXEL_ALPHA : constant := 16#00000002#;
   SB_PREMULT_ALPHA : constant := 16#00000004#;
   SB_GRAD_RECT : constant := 16#00000010#;
   SB_GRAD_TRI : constant := 16#00000020#;
   CM_NONE : constant := 16#00000000#;
   CM_DEVICE_ICM : constant := 16#00000001#;
   CM_GAMMA_RAMP : constant := 16#00000002#;
   CM_CMYK_COLOR : constant := 16#00000004#;
   DIB_RGB_COLORS : constant := 0;
   DIB_PAL_COLORS : constant := 1;
   SYSPAL_ERROR : constant := 0;
   SYSPAL_STATIC : constant := 1;
   SYSPAL_NOSTATIC : constant := 2;
   SYSPAL_NOSTATIC256 : constant := 3;
   CBM_INIT : constant := 16#04#;
   FLOODFILLBORDER : constant := 0;
   FLOODFILLSURFACE : constant := 1;
   CCHDEVICENAME : constant := 32;
   CCHFORMNAME : constant := 32;
   DM_SPECVERSION : constant := 16#0401#;
   DM_ORIENTATION : constant := 16#00000001#;
   DM_PAPERSIZE : constant := 16#00000002#;
   DM_PAPERLENGTH : constant := 16#00000004#;
   DM_PAPERWIDTH : constant := 16#00000008#;
   DM_SCALE : constant := 16#00000010#;
   DM_POSITION : constant := 16#00000020#;
   DM_NUP : constant := 16#00000040#;
   DM_DISPLAYORIENTATION : constant := 16#00000080#;
   DM_COPIES : constant := 16#00000100#;
   DM_DEFAULTSOURCE : constant := 16#00000200#;
   DM_PRINTQUALITY : constant := 16#00000400#;
   DM_COLOR : constant := 16#00000800#;
   DM_DUPLEX : constant := 16#00001000#;
   DM_YRESOLUTION : constant := 16#00002000#;
   DM_TTOPTION : constant := 16#00004000#;
   DM_COLLATE : constant := 16#00008000#;
   DM_FORMNAME : constant := 16#00010000#;
   DM_LOGPIXELS : constant := 16#00020000#;
   DM_BITSPERPEL : constant := 16#00040000#;
   DM_PELSWIDTH : constant := 16#00080000#;
   DM_PELSHEIGHT : constant := 16#00100000#;
   DM_DISPLAYFLAGS : constant := 16#00200000#;
   DM_DISPLAYFREQUENCY : constant := 16#00400000#;
   DM_ICMMETHOD : constant := 16#00800000#;
   DM_ICMINTENT : constant := 16#01000000#;
   DM_MEDIATYPE : constant := 16#02000000#;
   DM_DITHERTYPE : constant := 16#04000000#;
   DM_PANNINGWIDTH : constant := 16#08000000#;
   DM_PANNINGHEIGHT : constant := 16#10000000#;
   DM_DISPLAYFIXEDOUTPUT : constant := 16#20000000#;
   DMORIENT_PORTRAIT : constant := 1;
   DMORIENT_LANDSCAPE : constant := 2;
   DMPAPER_LETTER : constant := 1;
   DMPAPER_LETTERSMALL : constant := 2;
   DMPAPER_TABLOID : constant := 3;
   DMPAPER_LEDGER : constant := 4;
   DMPAPER_LEGAL : constant := 5;
   DMPAPER_STATEMENT : constant := 6;
   DMPAPER_EXECUTIVE : constant := 7;
   DMPAPER_A3 : constant := 8;
   DMPAPER_A4 : constant := 9;
   DMPAPER_A4SMALL : constant := 10;
   DMPAPER_A5 : constant := 11;
   DMPAPER_B4 : constant := 12;
   DMPAPER_B5 : constant := 13;
   DMPAPER_FOLIO : constant := 14;
   DMPAPER_QUARTO : constant := 15;
   DMPAPER_10X14 : constant := 16;
   DMPAPER_11X17 : constant := 17;
   DMPAPER_NOTE : constant := 18;
   DMPAPER_ENV_9 : constant := 19;
   DMPAPER_ENV_10 : constant := 20;
   DMPAPER_ENV_11 : constant := 21;
   DMPAPER_ENV_12 : constant := 22;
   DMPAPER_ENV_14 : constant := 23;
   DMPAPER_CSHEET : constant := 24;
   DMPAPER_DSHEET : constant := 25;
   DMPAPER_ESHEET : constant := 26;
   DMPAPER_ENV_DL : constant := 27;
   DMPAPER_ENV_C5 : constant := 28;
   DMPAPER_ENV_C3 : constant := 29;
   DMPAPER_ENV_C4 : constant := 30;
   DMPAPER_ENV_C6 : constant := 31;
   DMPAPER_ENV_C65 : constant := 32;
   DMPAPER_ENV_B4 : constant := 33;
   DMPAPER_ENV_B5 : constant := 34;
   DMPAPER_ENV_B6 : constant := 35;
   DMPAPER_ENV_ITALY : constant := 36;
   DMPAPER_ENV_MONARCH : constant := 37;
   DMPAPER_ENV_PERSONAL : constant := 38;
   DMPAPER_FANFOLD_US : constant := 39;
   DMPAPER_FANFOLD_STD_GERMAN : constant := 40;
   DMPAPER_FANFOLD_LGL_GERMAN : constant := 41;
   DMPAPER_ISO_B4 : constant := 42;
   DMPAPER_JAPANESE_POSTCARD : constant := 43;
   DMPAPER_9X11 : constant := 44;
   DMPAPER_10X11 : constant := 45;
   DMPAPER_15X11 : constant := 46;
   DMPAPER_ENV_INVITE : constant := 47;
   DMPAPER_RESERVED_48 : constant := 48;
   DMPAPER_RESERVED_49 : constant := 49;
   DMPAPER_LETTER_EXTRA : constant := 50;
   DMPAPER_LEGAL_EXTRA : constant := 51;
   DMPAPER_TABLOID_EXTRA : constant := 52;
   DMPAPER_A4_EXTRA : constant := 53;
   DMPAPER_LETTER_TRANSVERSE : constant := 54;
   DMPAPER_A4_TRANSVERSE : constant := 55;
   DMPAPER_LETTER_EXTRA_TRANSVERSE : constant := 56;
   DMPAPER_A_PLUS : constant := 57;
   DMPAPER_B_PLUS : constant := 58;
   DMPAPER_LETTER_PLUS : constant := 59;
   DMPAPER_A4_PLUS : constant := 60;
   DMPAPER_A5_TRANSVERSE : constant := 61;
   DMPAPER_B5_TRANSVERSE : constant := 62;
   DMPAPER_A3_EXTRA : constant := 63;
   DMPAPER_A5_EXTRA : constant := 64;
   DMPAPER_B5_EXTRA : constant := 65;
   DMPAPER_A2 : constant := 66;
   DMPAPER_A3_TRANSVERSE : constant := 67;
   DMPAPER_A3_EXTRA_TRANSVERSE : constant := 68;
   DMPAPER_DBL_JAPANESE_POSTCARD : constant := 69;
   DMPAPER_A6 : constant := 70;
   DMPAPER_JENV_KAKU2 : constant := 71;
   DMPAPER_JENV_KAKU3 : constant := 72;
   DMPAPER_JENV_CHOU3 : constant := 73;
   DMPAPER_JENV_CHOU4 : constant := 74;
   DMPAPER_LETTER_ROTATED : constant := 75;
   DMPAPER_A3_ROTATED : constant := 76;
   DMPAPER_A4_ROTATED : constant := 77;
   DMPAPER_A5_ROTATED : constant := 78;
   DMPAPER_B4_JIS_ROTATED : constant := 79;
   DMPAPER_B5_JIS_ROTATED : constant := 80;
   DMPAPER_JAPANESE_POSTCARD_ROTATED : constant := 81;
   DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED : constant := 82;
   DMPAPER_A6_ROTATED : constant := 83;
   DMPAPER_JENV_KAKU2_ROTATED : constant := 84;
   DMPAPER_JENV_KAKU3_ROTATED : constant := 85;
   DMPAPER_JENV_CHOU3_ROTATED : constant := 86;
   DMPAPER_JENV_CHOU4_ROTATED : constant := 87;
   DMPAPER_B6_JIS : constant := 88;
   DMPAPER_B6_JIS_ROTATED : constant := 89;
   DMPAPER_12X11 : constant := 90;
   DMPAPER_JENV_YOU4 : constant := 91;
   DMPAPER_JENV_YOU4_ROTATED : constant := 92;
   DMPAPER_P16K : constant := 93;
   DMPAPER_P32K : constant := 94;
   DMPAPER_P32KBIG : constant := 95;
   DMPAPER_PENV_1 : constant := 96;
   DMPAPER_PENV_2 : constant := 97;
   DMPAPER_PENV_3 : constant := 98;
   DMPAPER_PENV_4 : constant := 99;
   DMPAPER_PENV_5 : constant := 100;
   DMPAPER_PENV_6 : constant := 101;
   DMPAPER_PENV_7 : constant := 102;
   DMPAPER_PENV_8 : constant := 103;
   DMPAPER_PENV_9 : constant := 104;
   DMPAPER_PENV_10 : constant := 105;
   DMPAPER_P16K_ROTATED : constant := 106;
   DMPAPER_P32K_ROTATED : constant := 107;
   DMPAPER_P32KBIG_ROTATED : constant := 108;
   DMPAPER_PENV_1_ROTATED : constant := 109;
   DMPAPER_PENV_2_ROTATED : constant := 110;
   DMPAPER_PENV_3_ROTATED : constant := 111;
   DMPAPER_PENV_4_ROTATED : constant := 112;
   DMPAPER_PENV_5_ROTATED : constant := 113;
   DMPAPER_PENV_6_ROTATED : constant := 114;
   DMPAPER_PENV_7_ROTATED : constant := 115;
   DMPAPER_PENV_8_ROTATED : constant := 116;
   DMPAPER_PENV_9_ROTATED : constant := 117;
   DMPAPER_PENV_10_ROTATED : constant := 118;
   DMPAPER_USER : constant := 256;
   DMBIN_UPPER : constant := 1;
   DMBIN_ONLYONE : constant := 1;
   DMBIN_LOWER : constant := 2;
   DMBIN_MIDDLE : constant := 3;
   DMBIN_MANUAL : constant := 4;
   DMBIN_ENVELOPE : constant := 5;
   DMBIN_ENVMANUAL : constant := 6;
   DMBIN_AUTO : constant := 7;
   DMBIN_TRACTOR : constant := 8;
   DMBIN_SMALLFMT : constant := 9;
   DMBIN_LARGEFMT : constant := 10;
   DMBIN_LARGECAPACITY : constant := 11;
   DMBIN_CASSETTE : constant := 14;
   DMBIN_FORMSOURCE : constant := 15;
   DMBIN_USER : constant := 256;
   DMRES_DRAFT : constant := -1;
   DMRES_LOW : constant := -2;
   DMRES_MEDIUM : constant := -3;
   DMRES_HIGH : constant := -4;
   DMCOLOR_MONOCHROME : constant := 1;
   DMCOLOR_COLOR : constant := 2;
   DMDUP_SIMPLEX : constant := 1;
   DMDUP_VERTICAL : constant := 2;
   DMDUP_HORIZONTAL : constant := 3;
   DMTT_BITMAP : constant := 1;
   DMTT_DOWNLOAD : constant := 2;
   DMTT_SUBDEV : constant := 3;
   DMTT_DOWNLOAD_OUTLINE : constant := 4;
   DMCOLLATE_FALSE : constant := 0;
   DMCOLLATE_TRUE : constant := 1;
   DMDO_DEFAULT : constant := 0;
   DMDO_90 : constant := 1;
   DMDO_180 : constant := 2;
   DMDO_270 : constant := 3;
   DMDFO_DEFAULT : constant := 0;
   DMDFO_STRETCH : constant := 1;
   DMDFO_CENTER : constant := 2;
   DM_INTERLACED : constant := 16#00000002#;
   DMDISPLAYFLAGS_TEXTMODE : constant := 16#00000004#;
   DMNUP_SYSTEM : constant := 1;
   DMNUP_ONEUP : constant := 2;
   DMICMMETHOD_NONE : constant := 1;
   DMICMMETHOD_SYSTEM : constant := 2;
   DMICMMETHOD_DRIVER : constant := 3;
   DMICMMETHOD_DEVICE : constant := 4;
   DMICMMETHOD_USER : constant := 256;
   DMICM_SATURATE : constant := 1;
   DMICM_CONTRAST : constant := 2;
   DMICM_COLORIMETRIC : constant := 3;
   DMICM_ABS_COLORIMETRIC : constant := 4;
   DMICM_USER : constant := 256;
   DMMEDIA_STANDARD : constant := 1;
   DMMEDIA_TRANSPARENCY : constant := 2;
   DMMEDIA_GLOSSY : constant := 3;
   DMMEDIA_USER : constant := 256;
   DMDITHER_NONE : constant := 1;
   DMDITHER_COARSE : constant := 2;
   DMDITHER_FINE : constant := 3;
   DMDITHER_LINEART : constant := 4;
   DMDITHER_ERRORDIFFUSION : constant := 5;
   DMDITHER_RESERVED6 : constant := 6;
   DMDITHER_RESERVED7 : constant := 7;
   DMDITHER_RESERVED8 : constant := 8;
   DMDITHER_RESERVED9 : constant := 9;
   DMDITHER_GRAYSCALE : constant := 10;
   DMDITHER_USER : constant := 256;
   DISPLAY_DEVICE_ATTACHED_TO_DESKTOP : constant := 16#00000001#;
   DISPLAY_DEVICE_MULTI_DRIVER : constant := 16#00000002#;
   DISPLAY_DEVICE_PRIMARY_DEVICE : constant := 16#00000004#;
   DISPLAY_DEVICE_MIRRORING_DRIVER : constant := 16#00000008#;
   DISPLAY_DEVICE_VGA_COMPATIBLE : constant := 16#00000010#;
   DISPLAY_DEVICE_REMOVABLE : constant := 16#00000020#;
   DISPLAY_DEVICE_ACC_DRIVER : constant := 16#00000040#;
   DISPLAY_DEVICE_MODESPRUNED : constant := 16#08000000#;
   DISPLAY_DEVICE_RDPUDD : constant := 16#01000000#;
   DISPLAY_DEVICE_REMOTE : constant := 16#04000000#;
   DISPLAY_DEVICE_DISCONNECT : constant := 16#02000000#;
   DISPLAY_DEVICE_TS_COMPATIBLE : constant := 16#00200000#;
   DISPLAY_DEVICE_UNSAFE_MODES_ON : constant := 16#00080000#;
   DISPLAY_DEVICE_ACTIVE : constant := 16#00000001#;
   DISPLAY_DEVICE_ATTACHED : constant := 16#00000002#;
   DISPLAYCONFIG_MAXPATH : constant := 1024;
   DISPLAYCONFIG_PATH_MODE_IDX_INVALID : constant := 16#ffffffff#;
   DISPLAYCONFIG_PATH_TARGET_MODE_IDX_INVALID : constant := 16#ffff#;
   DISPLAYCONFIG_PATH_DESKTOP_IMAGE_IDX_INVALID : constant := 16#ffff#;
   DISPLAYCONFIG_PATH_SOURCE_MODE_IDX_INVALID : constant := 16#ffff#;
   DISPLAYCONFIG_PATH_CLONE_GROUP_INVALID : constant := 16#ffff#;
   DISPLAYCONFIG_SOURCE_IN_USE : constant := 16#00000001#;
   DISPLAYCONFIG_TARGET_IN_USE : constant := 16#00000001#;
   DISPLAYCONFIG_TARGET_FORCIBLE : constant := 16#00000002#;
   DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_BOOT : constant := 16#00000004#;
   DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_PATH : constant := 16#00000008#;
   DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_SYSTEM : constant := 16#00000010#;
   DISPLAYCONFIG_TARGET_IS_HMD : constant := 16#00000020#;
   DISPLAYCONFIG_PATH_ACTIVE : constant := 16#00000001#;
   DISPLAYCONFIG_PATH_PREFERRED_UNSCALED : constant := 16#00000004#;
   DISPLAYCONFIG_PATH_SUPPORT_VIRTUAL_MODE : constant := 16#00000008#;
   DISPLAYCONFIG_PATH_VALID_FLAGS : constant := 16#0000000D#;
   QDC_ALL_PATHS : constant := 16#00000001#;
   QDC_ONLY_ACTIVE_PATHS : constant := 16#00000002#;
   QDC_DATABASE_CURRENT : constant := 16#00000004#;
   QDC_VIRTUAL_MODE_AWARE : constant := 16#00000010#;
   QDC_INCLUDE_HMD : constant := 16#00000020#;
   SDC_TOPOLOGY_INTERNAL : constant := 16#00000001#;
   SDC_TOPOLOGY_CLONE : constant := 16#00000002#;
   SDC_TOPOLOGY_EXTEND : constant := 16#00000004#;
   SDC_TOPOLOGY_EXTERNAL : constant := 16#00000008#;
   SDC_TOPOLOGY_SUPPLIED : constant := 16#00000010#;
   SDC_USE_DATABASE_CURRENT : constant := ( Interfaces.C.Unsigned( SDC_TOPOLOGY_INTERNAL )
       or Interfaces.C.Unsigned( SDC_TOPOLOGY_CLONE )
       or Interfaces.C.Unsigned( SDC_TOPOLOGY_EXTEND )
       or Interfaces.C.Unsigned( SDC_TOPOLOGY_EXTERNAL ) );
   SDC_USE_SUPPLIED_DISPLAY_CONFIG : constant := 16#00000020#;
   SDC_VALIDATE : constant := 16#00000040#;
   SDC_APPLY : constant := 16#00000080#;
   SDC_NO_OPTIMIZATION : constant := 16#00000100#;
   SDC_SAVE_TO_DATABASE : constant := 16#00000200#;
   SDC_ALLOW_CHANGES : constant := 16#00000400#;
   SDC_PATH_PERSIST_IF_REQUIRED : constant := 16#00000800#;
   SDC_FORCE_MODE_ENUMERATION : constant := 16#00001000#;
   SDC_ALLOW_PATH_ORDER_CHANGES : constant := 16#00002000#;
   SDC_VIRTUAL_MODE_AWARE : constant := 16#00008000#;
   RDH_RECTANGLES : constant := 1;
   SYSRGN : constant := 4;
   GGO_METRICS : constant := 0;
   GGO_BITMAP : constant := 1;
   GGO_NATIVE : constant := 2;
   GGO_BEZIER : constant := 3;
   GGO_GRAY2_BITMAP : constant := 4;
   GGO_GRAY4_BITMAP : constant := 5;
   GGO_GRAY8_BITMAP : constant := 6;
   GGO_GLYPH_INDEX : constant := 16#0080#;
   GGO_UNHINTED : constant := 16#0100#;
   TT_POLYGON_TYPE : constant := 24;
   TT_PRIM_LINE : constant := 1;
   TT_PRIM_QSPLINE : constant := 2;
   TT_PRIM_CSPLINE : constant := 3;
   GCP_DBCS : constant := 16#0001#;
   GCP_REORDER : constant := 16#0002#;
   GCP_USEKERNING : constant := 16#0008#;
   GCP_GLYPHSHAPE : constant := 16#0010#;
   GCP_LIGATE : constant := 16#0020#;
   GCP_DIACRITIC : constant := 16#0100#;
   GCP_KASHIDA : constant := 16#0400#;
   GCP_ERROR : constant := 16#8000#;
   FLI_MASK : constant := 16#103B#;
   GCP_JUSTIFY : constant := 16#00010000#;
   FLI_GLYPHS : constant := 16#00040000#;
   GCP_CLASSIN : constant := 16#00080000#;
   GCP_MAXEXTENT : constant := 16#00100000#;
   GCP_JUSTIFYIN : constant := 16#00200000#;
   GCP_DISPLAYZWG : constant := 16#00400000#;
   GCP_SYMSWAPOFF : constant := 16#00800000#;
   GCP_NUMERICOVERRIDE : constant := 16#01000000#;
   GCP_NEUTRALOVERRIDE : constant := 16#02000000#;
   GCP_NUMERICSLATIN : constant := 16#04000000#;
   GCP_NUMERICSLOCAL : constant := 16#08000000#;
   GCPCLASS_LATIN : constant := 1;
   GCPCLASS_HEBREW : constant := 2;
   GCPCLASS_ARABIC : constant := 2;
   GCPCLASS_NEUTRAL : constant := 3;
   GCPCLASS_LOCALNUMBER : constant := 4;
   GCPCLASS_LATINNUMBER : constant := 5;
   GCPCLASS_LATINNUMERICTERMINATOR : constant := 6;
   GCPCLASS_LATINNUMERICSEPARATOR : constant := 7;
   GCPCLASS_NUMERICSEPARATOR : constant := 8;
   GCPCLASS_PREBOUNDLTR : constant := 16#80#;
   GCPCLASS_PREBOUNDRTL : constant := 16#40#;
   GCPCLASS_POSTBOUNDLTR : constant := 16#20#;
   GCPCLASS_POSTBOUNDRTL : constant := 16#10#;
   GCPGLYPH_LINKBEFORE : constant := 16#8000#;
   GCPGLYPH_LINKAFTER : constant := 16#4000#;
   TT_AVAILABLE : constant := 16#0001#;
   TT_ENABLED : constant := 16#0002#;
   PFD_TYPE_RGBA : constant := 0;
   PFD_TYPE_COLORINDEX : constant := 1;
   PFD_MAIN_PLANE : constant := 0;
   PFD_OVERLAY_PLANE : constant := 1;
   PFD_UNDERLAY_PLANE : constant := -1;
   PFD_DOUBLEBUFFER : constant := 16#00000001#;
   PFD_STEREO : constant := 16#00000002#;
   PFD_DRAW_TO_WINDOW : constant := 16#00000004#;
   PFD_DRAW_TO_BITMAP : constant := 16#00000008#;
   PFD_SUPPORT_GDI : constant := 16#00000010#;
   PFD_SUPPORT_OPENGL : constant := 16#00000020#;
   PFD_GENERIC_FORMAT : constant := 16#00000040#;
   PFD_NEED_PALETTE : constant := 16#00000080#;
   PFD_NEED_SYSTEM_PALETTE : constant := 16#00000100#;
   PFD_SWAP_EXCHANGE : constant := 16#00000200#;
   PFD_SWAP_COPY : constant := 16#00000400#;
   PFD_SWAP_LAYER_BUFFERS : constant := 16#00000800#;
   PFD_GENERIC_ACCELERATED : constant := 16#00001000#;
   PFD_SUPPORT_DIRECTDRAW : constant := 16#00002000#;
   PFD_DIRECT3D_ACCELERATED : constant := 16#00004000#;
   PFD_SUPPORT_COMPOSITION : constant := 16#00008000#;
   PFD_DEPTH_DONTCARE : constant := 16#20000000#;
   PFD_DOUBLEBUFFER_DONTCARE : constant := 16#40000000#;
   PFD_STEREO_DONTCARE : constant := 16#80000000#;
   DC_BINADJUST : constant := 19;
   DC_EMF_COMPLIANT : constant := 20;
   DC_DATATYPE_PRODUCED : constant := 21;
   DC_COLLATE : constant := 22;
   DC_MANUFACTURER : constant := 23;
   DC_MODEL : constant := 24;
   DC_PERSONALITY : constant := 25;
   DC_PRINTRATE : constant := 26;
   DC_PRINTRATEUNIT : constant := 27;
   PRINTRATEUNIT_PPM : constant := 1;
   PRINTRATEUNIT_CPS : constant := 2;
   PRINTRATEUNIT_LPM : constant := 3;
   PRINTRATEUNIT_IPM : constant := 4;
   DC_PRINTERMEM : constant := 28;
   DC_MEDIAREADY : constant := 29;
   DC_STAPLE : constant := 30;
   DC_PRINTRATEPPM : constant := 31;
   DC_COLORDEVICE : constant := 32;
   DC_NUP : constant := 33;
   DC_MEDIATYPENAMES : constant := 34;
   DC_MEDIATYPES : constant := 35;
   DCTT_BITMAP : constant := 16#0000001#;
   DCTT_DOWNLOAD : constant := 16#0000002#;
   DCTT_SUBDEV : constant := 16#0000004#;
   DCTT_DOWNLOAD_OUTLINE : constant := 16#0000008#;
   DCBA_FACEUPNONE : constant := 16#0000#;
   DCBA_FACEUPCENTER : constant := 16#0001#;
   DCBA_FACEUPLEFT : constant := 16#0002#;
   DCBA_FACEUPRIGHT : constant := 16#0003#;
   DCBA_FACEDOWNNONE : constant := 16#0100#;
   DCBA_FACEDOWNCENTER : constant := 16#0101#;
   DCBA_FACEDOWNLEFT : constant := 16#0102#;
   DCBA_FACEDOWNRIGHT : constant := 16#0103#;
   GS_8BIT_INDICES : constant := 16#00000001#;
   GGI_MARK_NONEXISTING_GLYPHS : constant := 16#0001#;
   MM_MAX_NUMAXES : constant := 16;
   FR_PRIVATE : constant := 16#10#;
   FR_NOT_ENUM : constant := 16#20#;
   MM_MAX_AXES_NAMELEN : constant := 16;
   AC_SRC_OVER : constant := 16#00#;
   AC_SRC_ALPHA : constant := 16#01#;
   GRADIENT_FILL_RECT_H : constant := 16#00000000#;
   GRADIENT_FILL_RECT_V : constant := 16#00000001#;
   GRADIENT_FILL_TRIANGLE : constant := 16#00000002#;
   GRADIENT_FILL_OP_FLAG : constant := 16#000000ff#;
   CA_NEGATIVE : constant := 16#0001#;
   CA_LOG_FILTER : constant := 16#0002#;
   ILLUMINANT_DEVICE_DEFAULT : constant := 0;
   ILLUMINANT_A : constant := 1;
   ILLUMINANT_B : constant := 2;
   ILLUMINANT_C : constant := 3;
   ILLUMINANT_D50 : constant := 4;
   ILLUMINANT_D55 : constant := 5;
   ILLUMINANT_D65 : constant := 6;
   ILLUMINANT_D75 : constant := 7;
   ILLUMINANT_F2 : constant := 8;
   RGB_GAMMA_MIN : constant := 02500;
   RGB_GAMMA_MAX : constant := 65000;
   REFERENCE_WHITE_MIN : constant := 6000;
   REFERENCE_WHITE_MAX : constant := 10000;
   REFERENCE_BLACK_MIN : constant := 0;
   REFERENCE_BLACK_MAX : constant := 4000;
   COLOR_ADJ_MIN : constant := 100;
   COLOR_ADJ_MAX : constant := 100;
   DI_APPBANDING : constant := 16#00000001#;
   DI_ROPS_READ_DESTINATION : constant := 16#00000002#;
   FONTMAPPER_MAX : constant := 10;
   ICM_OFF : constant := 1;
   ICM_ON : constant := 2;
   ICM_QUERY : constant := 3;
   ICM_DONE_OUTSIDEDC : constant := 4;
   ENHMETA_SIGNATURE : constant := 16#464D4520#;
   ENHMETA_STOCK_OBJECT : constant := 16#80000000#;
   EMR_HEADER : constant := 1;
   EMR_POLYBEZIER : constant := 2;
   EMR_POLYGON : constant := 3;
   EMR_POLYLINE : constant := 4;
   EMR_POLYBEZIERTO : constant := 5;
   EMR_POLYLINETO : constant := 6;
   EMR_POLYPOLYLINE : constant := 7;
   EMR_POLYPOLYGON : constant := 8;
   EMR_SETWINDOWEXTEX : constant := 9;
   EMR_SETWINDOWORGEX : constant := 10;
   EMR_SETVIEWPORTEXTEX : constant := 11;
   EMR_SETVIEWPORTORGEX : constant := 12;
   EMR_SETBRUSHORGEX : constant := 13;
   EMR_EOF : constant := 14;
   EMR_SETPIXELV : constant := 15;
   EMR_SETMAPPERFLAGS : constant := 16;
   EMR_SETMAPMODE : constant := 17;
   EMR_SETBKMODE : constant := 18;
   EMR_SETPOLYFILLMODE : constant := 19;
   EMR_SETROP2 : constant := 20;
   EMR_SETSTRETCHBLTMODE : constant := 21;
   EMR_SETTEXTALIGN : constant := 22;
   EMR_SETCOLORADJUSTMENT : constant := 23;
   EMR_SETTEXTCOLOR : constant := 24;
   EMR_SETBKCOLOR : constant := 25;
   EMR_OFFSETCLIPRGN : constant := 26;
   EMR_MOVETOEX : constant := 27;
   EMR_SETMETARGN : constant := 28;
   EMR_EXCLUDECLIPRECT : constant := 29;
   EMR_INTERSECTCLIPRECT : constant := 30;
   EMR_SCALEVIEWPORTEXTEX : constant := 31;
   EMR_SCALEWINDOWEXTEX : constant := 32;
   EMR_SAVEDC : constant := 33;
   EMR_RESTOREDC : constant := 34;
   EMR_SETWORLDTRANSFORM : constant := 35;
   EMR_MODIFYWORLDTRANSFORM : constant := 36;
   EMR_SELECTOBJECT : constant := 37;
   EMR_CREATEPEN : constant := 38;
   EMR_CREATEBRUSHINDIRECT : constant := 39;
   EMR_DELETEOBJECT : constant := 40;
   EMR_ANGLEARC : constant := 41;
   EMR_ELLIPSE : constant := 42;
   EMR_RECTANGLE : constant := 43;
   EMR_ROUNDRECT : constant := 44;
   EMR_ARC : constant := 45;
   EMR_CHORD : constant := 46;
   EMR_PIE : constant := 47;
   EMR_SELECTPALETTE : constant := 48;
   EMR_CREATEPALETTE : constant := 49;
   EMR_SETPALETTEENTRIES : constant := 50;
   EMR_RESIZEPALETTE : constant := 51;
   EMR_REALIZEPALETTE : constant := 52;
   EMR_EXTFLOODFILL : constant := 53;
   EMR_LINETO : constant := 54;
   EMR_ARCTO : constant := 55;
   EMR_POLYDRAW : constant := 56;
   EMR_SETARCDIRECTION : constant := 57;
   EMR_SETMITERLIMIT : constant := 58;
   EMR_BEGINPATH : constant := 59;
   EMR_ENDPATH : constant := 60;
   EMR_CLOSEFIGURE : constant := 61;
   EMR_FILLPATH : constant := 62;
   EMR_STROKEANDFILLPATH : constant := 63;
   EMR_STROKEPATH : constant := 64;
   EMR_FLATTENPATH : constant := 65;
   EMR_WIDENPATH : constant := 66;
   EMR_SELECTCLIPPATH : constant := 67;
   EMR_ABORTPATH : constant := 68;
   EMR_GDICOMMENT : constant := 70;
   EMR_FILLRGN : constant := 71;
   EMR_FRAMERGN : constant := 72;
   EMR_INVERTRGN : constant := 73;
   EMR_PAINTRGN : constant := 74;
   EMR_EXTSELECTCLIPRGN : constant := 75;
   EMR_BITBLT : constant := 76;
   EMR_STRETCHBLT : constant := 77;
   EMR_MASKBLT : constant := 78;
   EMR_PLGBLT : constant := 79;
   EMR_SETDIBITSTODEVICE : constant := 80;
   EMR_STRETCHDIBITS : constant := 81;
   EMR_EXTCREATEFONTINDIRECTW : constant := 82;
   EMR_EXTTEXTOUTA : constant := 83;
   EMR_EXTTEXTOUTW : constant := 84;
   EMR_POLYBEZIER16 : constant := 85;
   EMR_POLYGON16 : constant := 86;
   EMR_POLYLINE16 : constant := 87;
   EMR_POLYBEZIERTO16 : constant := 88;
   EMR_POLYLINETO16 : constant := 89;
   EMR_POLYPOLYLINE16 : constant := 90;
   EMR_POLYPOLYGON16 : constant := 91;
   EMR_POLYDRAW16 : constant := 92;
   EMR_CREATEMONOBRUSH : constant := 93;
   EMR_CREATEDIBPATTERNBRUSHPT : constant := 94;
   EMR_EXTCREATEPEN : constant := 95;
   EMR_POLYTEXTOUTA : constant := 96;
   EMR_POLYTEXTOUTW : constant := 97;
   EMR_SETICMMODE : constant := 98;
   EMR_CREATECOLORSPACE : constant := 99;
   EMR_SETCOLORSPACE : constant := 100;
   EMR_DELETECOLORSPACE : constant := 101;
   EMR_GLSRECORD : constant := 102;
   EMR_GLSBOUNDEDRECORD : constant := 103;
   EMR_PIXELFORMAT : constant := 104;
   EMR_RESERVED_105 : constant := 105;
   EMR_RESERVED_106 : constant := 106;
   EMR_RESERVED_107 : constant := 107;
   EMR_RESERVED_108 : constant := 108;
   EMR_RESERVED_109 : constant := 109;
   EMR_RESERVED_110 : constant := 110;
   EMR_COLORCORRECTPALETTE : constant := 111;
   EMR_SETICMPROFILEA : constant := 112;
   EMR_SETICMPROFILEW : constant := 113;
   EMR_ALPHABLEND : constant := 114;
   EMR_SETLAYOUT : constant := 115;
   EMR_TRANSPARENTBLT : constant := 116;
   EMR_RESERVED_117 : constant := 117;
   EMR_GRADIENTFILL : constant := 118;
   EMR_RESERVED_119 : constant := 119;
   EMR_RESERVED_120 : constant := 120;
   EMR_COLORMATCHTOTARGETW : constant := 121;
   EMR_CREATECOLORSPACEW : constant := 122;
   EMR_MIN : constant := 1;
   EMR_MAX : constant := 122;
   SETICMPROFILE_EMBEDED : constant := 16#00000001#;
   CREATECOLORSPACE_EMBEDED : constant := 16#00000001#;
   COLORMATCHTOTARGET_EMBEDED : constant := 16#00000001#;
   GDICOMMENT_IDENTIFIER : constant := 16#43494447#;
   GDICOMMENT_WINDOWS_METAFILE : constant := 16#80000001#;
   GDICOMMENT_BEGINGROUP : constant := 16#00000002#;
   GDICOMMENT_ENDGROUP : constant := 16#00000003#;
   GDICOMMENT_MULTIFORMATS : constant := 16#40000004#;
   EPS_SIGNATURE : constant := 16#46535045#;
   GDICOMMENT_UNICODE_STRING : constant := 16#00000040#;
   GDICOMMENT_UNICODE_END : constant := 16#00000080#;
   WGL_FONT_LINES : constant := 0;
   WGL_FONT_POLYGONS : constant := 1;
   LPD_DOUBLEBUFFER : constant := 16#00000001#;
   LPD_STEREO : constant := 16#00000002#;
   LPD_SUPPORT_GDI : constant := 16#00000010#;
   LPD_SUPPORT_OPENGL : constant := 16#00000020#;
   LPD_SHARE_DEPTH : constant := 16#00000040#;
   LPD_SHARE_STENCIL : constant := 16#00000080#;
   LPD_SHARE_ACCUM : constant := 16#00000100#;
   LPD_SWAP_EXCHANGE : constant := 16#00000200#;
   LPD_SWAP_COPY : constant := 16#00000400#;
   LPD_TRANSPARENT : constant := 16#00001000#;
   LPD_TYPE_RGBA : constant := 0;
   LPD_TYPE_COLORINDEX : constant := 1;
   WGL_SWAP_MAIN_PLANE : constant := 16#00000001#;
   WGL_SWAP_OVERLAY1 : constant := 16#00000002#;
   WGL_SWAP_OVERLAY2 : constant := 16#00000004#;
   WGL_SWAP_OVERLAY3 : constant := 16#00000008#;
   WGL_SWAP_OVERLAY4 : constant := 16#00000010#;
   WGL_SWAP_OVERLAY5 : constant := 16#00000020#;
   WGL_SWAP_OVERLAY6 : constant := 16#00000040#;
   WGL_SWAP_OVERLAY7 : constant := 16#00000080#;
   WGL_SWAP_OVERLAY8 : constant := 16#00000100#;
   WGL_SWAP_OVERLAY9 : constant := 16#00000200#;
   WGL_SWAP_OVERLAY10 : constant := 16#00000400#;
   WGL_SWAP_OVERLAY11 : constant := 16#00000800#;
   WGL_SWAP_OVERLAY12 : constant := 16#00001000#;
   WGL_SWAP_OVERLAY13 : constant := 16#00002000#;
   WGL_SWAP_OVERLAY14 : constant := 16#00004000#;
   WGL_SWAP_OVERLAY15 : constant := 16#00008000#;
   WGL_SWAP_UNDERLAY1 : constant := 16#00010000#;
   WGL_SWAP_UNDERLAY2 : constant := 16#00020000#;
   WGL_SWAP_UNDERLAY3 : constant := 16#00040000#;
   WGL_SWAP_UNDERLAY4 : constant := 16#00080000#;
   WGL_SWAP_UNDERLAY5 : constant := 16#00100000#;
   WGL_SWAP_UNDERLAY6 : constant := 16#00200000#;
   WGL_SWAP_UNDERLAY7 : constant := 16#00400000#;
   WGL_SWAP_UNDERLAY8 : constant := 16#00800000#;
   WGL_SWAP_UNDERLAY9 : constant := 16#01000000#;
   WGL_SWAP_UNDERLAY10 : constant := 16#02000000#;
   WGL_SWAP_UNDERLAY11 : constant := 16#04000000#;
   WGL_SWAP_UNDERLAY12 : constant := 16#08000000#;
   WGL_SWAP_UNDERLAY13 : constant := 16#10000000#;
   WGL_SWAP_UNDERLAY14 : constant := 16#20000000#;
   WGL_SWAP_UNDERLAY15 : constant := 16#40000000#;
   WGL_SWAPMULTIPLE_MAX : constant := 16;
   -- #include <windows.h>
   -- #include <winuser.h>
   RT_CURSOR : constant := 1;
   RT_BITMAP : constant := 2;
   RT_ICON : constant := 3;
   RT_MENU : constant := 4;
   RT_DIALOG : constant := 5;
   RT_STRING : constant := 6;
   RT_FONTDIR : constant := 7;
   RT_FONT : constant := 8;
   RT_ACCELERATOR : constant := 9;
   RT_RCDATA : constant := 10;
   RT_MESSAGETABLE : constant := 11;
   DIFFERENCE : constant := 11;
   RT_VERSION : constant := 16;
   RT_DLGINCLUDE : constant := 17;
   RT_PLUGPLAY : constant := 19;
   RT_VXD : constant := 20;
   RT_ANICURSOR : constant := 21;
   RT_ANIICON : constant := 22;
   RT_HTML : constant := 23;
   RT_MANIFEST : constant := 24;
   CREATEPROCESS_MANIFEST_RESOURCE_ID : constant := 1;
   ISOLATIONAWARE_MANIFEST_RESOURCE_ID : constant := 2;
   ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID : constant := 3;
   ISOLATIONPOLICY_MANIFEST_RESOURCE_ID : constant := 4;
   ISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID : constant := 5;
   MINIMUM_RESERVED_MANIFEST_RESOURCE_ID : constant := 1;
   MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID : constant := 16;
   SETWALLPAPER_DEFAULT : constant := 1;
   SB_HORZ : constant := 0;
   SB_VERT : constant := 1;
   SB_CTL : constant := 2;
   SB_BOTH : constant := 3;
   SB_LINEUP : constant := 0;
   SB_LINELEFT : constant := 0;
   SB_LINEDOWN : constant := 1;
   SB_LINERIGHT : constant := 1;
   SB_PAGEUP : constant := 2;
   SB_PAGELEFT : constant := 2;
   SB_PAGEDOWN : constant := 3;
   SB_PAGERIGHT : constant := 3;
   SB_THUMBPOSITION : constant := 4;
   SB_THUMBTRACK : constant := 5;
   SB_TOP : constant := 6;
   SB_LEFT : constant := 6;
   SB_BOTTOM : constant := 7;
   SB_RIGHT : constant := 7;
   SB_ENDSCROLL : constant := 8;
   SW_HIDE : constant := 0;
   SW_SHOWNORMAL : constant := 1;
   SW_NORMAL : constant := 1;
   SW_SHOWMINIMIZED : constant := 2;
   SW_SHOWMAXIMIZED : constant := 3;
   SW_MAXIMIZE : constant := 3;
   SW_SHOWNOACTIVATE : constant := 4;
   SW_SHOW : constant := 5;
   SW_MINIMIZE : constant := 6;
   SW_SHOWMINNOACTIVE : constant := 7;
   SW_SHOWNA : constant := 8;
   SW_RESTORE : constant := 9;
   SW_SHOWDEFAULT : constant := 10;
   SW_FORCEMINIMIZE : constant := 11;
   SW_MAX : constant := 11;
   HIDE_WINDOW : constant := 0;
   SHOW_OPENWINDOW : constant := 1;
   SHOW_ICONWINDOW : constant := 2;
   SHOW_FULLSCREEN : constant := 3;
   SHOW_OPENNOACTIVATE : constant := 4;
   SW_PARENTCLOSING : constant := 1;
   SW_OTHERZOOM : constant := 2;
   SW_PARENTOPENING : constant := 3;
   SW_OTHERUNZOOM : constant := 4;
   AW_HOR_POSITIVE : constant := 16#00000001#;
   AW_HOR_NEGATIVE : constant := 16#00000002#;
   AW_VER_POSITIVE : constant := 16#00000004#;
   AW_VER_NEGATIVE : constant := 16#00000008#;
   AW_CENTER : constant := 16#00000010#;
   AW_HIDE : constant := 16#00010000#;
   AW_ACTIVATE : constant := 16#00020000#;
   AW_SLIDE : constant := 16#00040000#;
   AW_BLEND : constant := 16#00080000#;
   KF_EXTENDED : constant := 16#0100#;
   KF_DLGMODE : constant := 16#0800#;
   KF_MENUMODE : constant := 16#1000#;
   KF_ALTDOWN : constant := 16#2000#;
   KF_REPEAT : constant := 16#4000#;
   KF_UP : constant := 16#8000#;
   VK_LBUTTON : constant := 16#01#;
   VK_RBUTTON : constant := 16#02#;
   VK_CANCEL : constant := 16#03#;
   VK_MBUTTON : constant := 16#04#;
   VK_XBUTTON1 : constant := 16#05#;
   VK_XBUTTON2 : constant := 16#06#;
   VK_BACK : constant := 16#08#;
   VK_TAB : constant := 16#09#;
   VK_CLEAR : constant := 16#0C#;
   VK_RETURN : constant := 16#0D#;
   VK_SHIFT : constant := 16#10#;
   VK_CONTROL : constant := 16#11#;
   VK_MENU : constant := 16#12#;
   VK_PAUSE : constant := 16#13#;
   VK_CAPITAL : constant := 16#14#;
   VK_KANA : constant := 16#15#;
   VK_HANGEUL : constant := 16#15#;
   VK_HANGUL : constant := 16#15#;
   VK_JUNJA : constant := 16#17#;
   VK_FINAL : constant := 16#18#;
   VK_HANJA : constant := 16#19#;
   VK_KANJI : constant := 16#19#;
   VK_ESCAPE : constant := 16#1B#;
   VK_CONVERT : constant := 16#1C#;
   VK_NONCONVERT : constant := 16#1D#;
   VK_ACCEPT : constant := 16#1E#;
   VK_MODECHANGE : constant := 16#1F#;
   VK_SPACE : constant := 16#20#;
   VK_PRIOR : constant := 16#21#;
   VK_NEXT : constant := 16#22#;
   VK_END : constant := 16#23#;
   VK_HOME : constant := 16#24#;
   VK_LEFT : constant := 16#25#;
   VK_UP : constant := 16#26#;
   VK_RIGHT : constant := 16#27#;
   VK_DOWN : constant := 16#28#;
   VK_SELECT : constant := 16#29#;
   VK_PRINT : constant := 16#2A#;
   VK_EXECUTE : constant := 16#2B#;
   VK_SNAPSHOT : constant := 16#2C#;
   VK_INSERT : constant := 16#2D#;
   VK_DELETE : constant := 16#2E#;
   VK_HELP : constant := 16#2F#;
   VK_LWIN : constant := 16#5B#;
   VK_RWIN : constant := 16#5C#;
   VK_APPS : constant := 16#5D#;
   VK_SLEEP : constant := 16#5F#;
   VK_NUMPAD0 : constant := 16#60#;
   VK_NUMPAD1 : constant := 16#61#;
   VK_NUMPAD2 : constant := 16#62#;
   VK_NUMPAD3 : constant := 16#63#;
   VK_NUMPAD4 : constant := 16#64#;
   VK_NUMPAD5 : constant := 16#65#;
   VK_NUMPAD6 : constant := 16#66#;
   VK_NUMPAD7 : constant := 16#67#;
   VK_NUMPAD8 : constant := 16#68#;
   VK_NUMPAD9 : constant := 16#69#;
   VK_MULTIPLY : constant := 16#6A#;
   VK_ADD : constant := 16#6B#;
   VK_SEPARATOR : constant := 16#6C#;
   VK_SUBTRACT : constant := 16#6D#;
   VK_DECIMAL : constant := 16#6E#;
   VK_DIVIDE : constant := 16#6F#;
   VK_F1 : constant := 16#70#;
   VK_F2 : constant := 16#71#;
   VK_F3 : constant := 16#72#;
   VK_F4 : constant := 16#73#;
   VK_F5 : constant := 16#74#;
   VK_F6 : constant := 16#75#;
   VK_F7 : constant := 16#76#;
   VK_F8 : constant := 16#77#;
   VK_F9 : constant := 16#78#;
   VK_F10 : constant := 16#79#;
   VK_F11 : constant := 16#7A#;
   VK_F12 : constant := 16#7B#;
   VK_F13 : constant := 16#7C#;
   VK_F14 : constant := 16#7D#;
   VK_F15 : constant := 16#7E#;
   VK_F16 : constant := 16#7F#;
   VK_F17 : constant := 16#80#;
   VK_F18 : constant := 16#81#;
   VK_F19 : constant := 16#82#;
   VK_F20 : constant := 16#83#;
   VK_F21 : constant := 16#84#;
   VK_F22 : constant := 16#85#;
   VK_F23 : constant := 16#86#;
   VK_F24 : constant := 16#87#;
   VK_NAVIGATION_VIEW : constant := 16#88#;
   VK_NAVIGATION_MENU : constant := 16#89#;
   VK_NAVIGATION_UP : constant := 16#8A#;
   VK_NAVIGATION_DOWN : constant := 16#8B#;
   VK_NAVIGATION_LEFT : constant := 16#8C#;
   VK_NAVIGATION_RIGHT : constant := 16#8D#;
   VK_NAVIGATION_ACCEPT : constant := 16#8E#;
   VK_NAVIGATION_CANCEL : constant := 16#8F#;
   VK_NUMLOCK : constant := 16#90#;
   VK_SCROLL : constant := 16#91#;
   VK_OEM_NEC_EQUAL : constant := 16#92#;
   VK_OEM_FJ_JISHO : constant := 16#92#;
   VK_OEM_FJ_MASSHOU : constant := 16#93#;
   VK_OEM_FJ_TOUROKU : constant := 16#94#;
   VK_OEM_FJ_LOYA : constant := 16#95#;
   VK_OEM_FJ_ROYA : constant := 16#96#;
   VK_LSHIFT : constant := 16#A0#;
   VK_RSHIFT : constant := 16#A1#;
   VK_LCONTROL : constant := 16#A2#;
   VK_RCONTROL : constant := 16#A3#;
   VK_LMENU : constant := 16#A4#;
   VK_RMENU : constant := 16#A5#;
   VK_BROWSER_BACK : constant := 16#A6#;
   VK_BROWSER_FORWARD : constant := 16#A7#;
   VK_BROWSER_REFRESH : constant := 16#A8#;
   VK_BROWSER_STOP : constant := 16#A9#;
   VK_BROWSER_SEARCH : constant := 16#AA#;
   VK_BROWSER_FAVORITES : constant := 16#AB#;
   VK_BROWSER_HOME : constant := 16#AC#;
   VK_VOLUME_MUTE : constant := 16#AD#;
   VK_VOLUME_DOWN : constant := 16#AE#;
   VK_VOLUME_UP : constant := 16#AF#;
   VK_MEDIA_NEXT_TRACK : constant := 16#B0#;
   VK_MEDIA_PREV_TRACK : constant := 16#B1#;
   VK_MEDIA_STOP : constant := 16#B2#;
   VK_MEDIA_PLAY_PAUSE : constant := 16#B3#;
   VK_LAUNCH_MAIL : constant := 16#B4#;
   VK_LAUNCH_MEDIA_SELECT : constant := 16#B5#;
   VK_LAUNCH_APP1 : constant := 16#B6#;
   VK_LAUNCH_APP2 : constant := 16#B7#;
   VK_OEM_1 : constant := 16#BA#;
   VK_OEM_PLUS : constant := 16#BB#;
   VK_OEM_COMMA : constant := 16#BC#;
   VK_OEM_MINUS : constant := 16#BD#;
   VK_OEM_PERIOD : constant := 16#BE#;
   VK_OEM_2 : constant := 16#BF#;
   VK_OEM_3 : constant := 16#C0#;
   VK_GAMEPAD_A : constant := 16#C3#;
   VK_GAMEPAD_B : constant := 16#C4#;
   VK_GAMEPAD_X : constant := 16#C5#;
   VK_GAMEPAD_Y : constant := 16#C6#;
   VK_GAMEPAD_RIGHT_SHOULDER : constant := 16#C7#;
   VK_GAMEPAD_LEFT_SHOULDER : constant := 16#C8#;
   VK_GAMEPAD_LEFT_TRIGGER : constant := 16#C9#;
   VK_GAMEPAD_RIGHT_TRIGGER : constant := 16#CA#;
   VK_GAMEPAD_DPAD_UP : constant := 16#CB#;
   VK_GAMEPAD_DPAD_DOWN : constant := 16#CC#;
   VK_GAMEPAD_DPAD_LEFT : constant := 16#CD#;
   VK_GAMEPAD_DPAD_RIGHT : constant := 16#CE#;
   VK_GAMEPAD_MENU : constant := 16#CF#;
   VK_GAMEPAD_VIEW : constant := 16#D0#;
   VK_GAMEPAD_LEFT_THUMBSTICK_BUTTON : constant := 16#D1#;
   VK_GAMEPAD_RIGHT_THUMBSTICK_BUTTON : constant := 16#D2#;
   VK_GAMEPAD_LEFT_THUMBSTICK_UP : constant := 16#D3#;
   VK_GAMEPAD_LEFT_THUMBSTICK_DOWN : constant := 16#D4#;
   VK_GAMEPAD_LEFT_THUMBSTICK_RIGHT : constant := 16#D5#;
   VK_GAMEPAD_LEFT_THUMBSTICK_LEFT : constant := 16#D6#;
   VK_GAMEPAD_RIGHT_THUMBSTICK_UP : constant := 16#D7#;
   VK_GAMEPAD_RIGHT_THUMBSTICK_DOWN : constant := 16#D8#;
   VK_GAMEPAD_RIGHT_THUMBSTICK_RIGHT : constant := 16#D9#;
   VK_GAMEPAD_RIGHT_THUMBSTICK_LEFT : constant := 16#DA#;
   VK_OEM_4 : constant := 16#DB#;
   VK_OEM_5 : constant := 16#DC#;
   VK_OEM_6 : constant := 16#DD#;
   VK_OEM_7 : constant := 16#DE#;
   VK_OEM_8 : constant := 16#DF#;
   VK_OEM_AX : constant := 16#E1#;
   VK_OEM_102 : constant := 16#E2#;
   VK_ICO_HELP : constant := 16#E3#;
   VK_ICO_00 : constant := 16#E4#;
   VK_PROCESSKEY : constant := 16#E5#;
   VK_ICO_CLEAR : constant := 16#E6#;
   VK_PACKET : constant := 16#E7#;
   VK_OEM_RESET : constant := 16#E9#;
   VK_OEM_JUMP : constant := 16#EA#;
   VK_OEM_PA1 : constant := 16#EB#;
   VK_OEM_PA2 : constant := 16#EC#;
   VK_OEM_PA3 : constant := 16#ED#;
   VK_OEM_WSCTRL : constant := 16#EE#;
   VK_OEM_CUSEL : constant := 16#EF#;
   VK_OEM_ATTN : constant := 16#F0#;
   VK_OEM_FINISH : constant := 16#F1#;
   VK_OEM_COPY : constant := 16#F2#;
   VK_OEM_AUTO : constant := 16#F3#;
   VK_OEM_ENLW : constant := 16#F4#;
   VK_OEM_BACKTAB : constant := 16#F5#;
   VK_ATTN : constant := 16#F6#;
   VK_CRSEL : constant := 16#F7#;
   VK_EXSEL : constant := 16#F8#;
   VK_EREOF : constant := 16#F9#;
   VK_PLAY : constant := 16#FA#;
   VK_ZOOM : constant := 16#FB#;
   VK_NONAME : constant := 16#FC#;
   VK_PA1 : constant := 16#FD#;
   VK_OEM_CLEAR : constant := 16#FE#;
   WH_MIN : constant := -1;
   WH_MSGFILTER : constant := -1;
   WH_JOURNALRECORD : constant := 0;
   WH_JOURNALPLAYBACK : constant := 1;
   WH_KEYBOARD : constant := 2;
   WH_GETMESSAGE : constant := 3;
   WH_CALLWNDPROC : constant := 4;
   WH_CBT : constant := 5;
   WH_SYSMSGFILTER : constant := 6;
   WH_MOUSE : constant := 7;
   WH_DEBUG : constant := 9;
   WH_SHELL : constant := 10;
   WH_FOREGROUNDIDLE : constant := 11;
   WH_CALLWNDPROCRET : constant := 12;
   WH_KEYBOARD_LL : constant := 13;
   WH_MOUSE_LL : constant := 14;
   WH_MAX : constant := 14;
   HC_ACTION : constant := 0;
   HC_GETNEXT : constant := 1;
   HC_SKIP : constant := 2;
   HC_NOREMOVE : constant := 3;
   HC_SYSMODALON : constant := 4;
   HC_SYSMODALOFF : constant := 5;
   HCBT_MOVESIZE : constant := 0;
   HCBT_MINMAX : constant := 1;
   HCBT_QS : constant := 2;
   HCBT_CREATEWND : constant := 3;
   HCBT_DESTROYWND : constant := 4;
   HCBT_ACTIVATE : constant := 5;
   HCBT_CLICKSKIPPED : constant := 6;
   HCBT_KEYSKIPPED : constant := 7;
   HCBT_SYSCOMMAND : constant := 8;
   HCBT_SETFOCUS : constant := 9;
   WTS_CONSOLE_CONNECT : constant := 16#1#;
   WTS_CONSOLE_DISCONNECT : constant := 16#2#;
   WTS_REMOTE_CONNECT : constant := 16#3#;
   WTS_REMOTE_DISCONNECT : constant := 16#4#;
   WTS_SESSION_LOGON : constant := 16#5#;
   WTS_SESSION_LOGOFF : constant := 16#6#;
   WTS_SESSION_LOCK : constant := 16#7#;
   WTS_SESSION_UNLOCK : constant := 16#8#;
   WTS_SESSION_REMOTE_CONTROL : constant := 16#9#;
   WTS_SESSION_CREATE : constant := 16#a#;
   WTS_SESSION_TERMINATE : constant := 16#b#;
   MSGF_DIALOGBOX : constant := 0;
   MSGF_MESSAGEBOX : constant := 1;
   MSGF_MENU : constant := 2;
   MSGF_SCROLLBAR : constant := 5;
   MSGF_NEXTWINDOW : constant := 6;
   MSGF_MAX : constant := 8;
   MSGF_USER : constant := 4096;
   HSHELL_WINDOWCREATED : constant := 1;
   HSHELL_WINDOWDESTROYED : constant := 2;
   HSHELL_ACTIVATESHELLWINDOW : constant := 3;
   HSHELL_WINDOWACTIVATED : constant := 4;
   HSHELL_GETMINRECT : constant := 5;
   HSHELL_REDRAW : constant := 6;
   HSHELL_TASKMAN : constant := 7;
   HSHELL_LANGUAGE : constant := 8;
   HSHELL_SYSMENU : constant := 9;
   HSHELL_ENDTASK : constant := 10;
   HSHELL_ACCESSIBILITYSTATE : constant := 11;
   HSHELL_APPCOMMAND : constant := 12;
   HSHELL_WINDOWREPLACED : constant := 13;
   HSHELL_WINDOWREPLACING : constant := 14;
   HSHELL_MONITORCHANGED : constant := 16;
   HSHELL_HIGHBIT : constant := 16#8000#;
   HSHELL_FLASH : constant := ( Interfaces.C.Unsigned( HSHELL_REDRAW )
       or Interfaces.C.Unsigned( HSHELL_HIGHBIT ) );
   HSHELL_RUDEAPPACTIVATED : constant := ( Interfaces.C.Unsigned( HSHELL_WINDOWACTIVATED )
       or Interfaces.C.Unsigned( HSHELL_HIGHBIT ) );
   APPCOMMAND_BROWSER_BACKWARD : constant := 1;
   APPCOMMAND_BROWSER_FORWARD : constant := 2;
   APPCOMMAND_BROWSER_REFRESH : constant := 3;
   APPCOMMAND_BROWSER_STOP : constant := 4;
   APPCOMMAND_BROWSER_SEARCH : constant := 5;
   APPCOMMAND_BROWSER_FAVORITES : constant := 6;
   APPCOMMAND_BROWSER_HOME : constant := 7;
   APPCOMMAND_VOLUME_MUTE : constant := 8;
   APPCOMMAND_VOLUME_DOWN : constant := 9;
   APPCOMMAND_VOLUME_UP : constant := 10;
   APPCOMMAND_MEDIA_NEXTTRACK : constant := 11;
   APPCOMMAND_MEDIA_PREVIOUSTRACK : constant := 12;
   APPCOMMAND_MEDIA_STOP : constant := 13;
   APPCOMMAND_MEDIA_PLAY_PAUSE : constant := 14;
   APPCOMMAND_LAUNCH_MAIL : constant := 15;
   APPCOMMAND_LAUNCH_MEDIA_SELECT : constant := 16;
   APPCOMMAND_LAUNCH_APP1 : constant := 17;
   APPCOMMAND_LAUNCH_APP2 : constant := 18;
   APPCOMMAND_BASS_DOWN : constant := 19;
   APPCOMMAND_BASS_BOOST : constant := 20;
   APPCOMMAND_BASS_UP : constant := 21;
   APPCOMMAND_TREBLE_DOWN : constant := 22;
   APPCOMMAND_TREBLE_UP : constant := 23;
   APPCOMMAND_MICROPHONE_VOLUME_MUTE : constant := 24;
   APPCOMMAND_MICROPHONE_VOLUME_DOWN : constant := 25;
   APPCOMMAND_MICROPHONE_VOLUME_UP : constant := 26;
   APPCOMMAND_HELP : constant := 27;
   APPCOMMAND_FIND : constant := 28;
   APPCOMMAND_NEW : constant := 29;
   APPCOMMAND_OPEN : constant := 30;
   APPCOMMAND_CLOSE : constant := 31;
   APPCOMMAND_SAVE : constant := 32;
   APPCOMMAND_PRINT : constant := 33;
   APPCOMMAND_UNDO : constant := 34;
   APPCOMMAND_REDO : constant := 35;
   APPCOMMAND_COPY : constant := 36;
   APPCOMMAND_CUT : constant := 37;
   APPCOMMAND_PASTE : constant := 38;
   APPCOMMAND_REPLY_TO_MAIL : constant := 39;
   APPCOMMAND_FORWARD_MAIL : constant := 40;
   APPCOMMAND_SEND_MAIL : constant := 41;
   APPCOMMAND_SPELL_CHECK : constant := 42;
   APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE : constant := 43;
   APPCOMMAND_MIC_ON_OFF_TOGGLE : constant := 44;
   APPCOMMAND_CORRECTION_LIST : constant := 45;
   APPCOMMAND_MEDIA_PLAY : constant := 46;
   APPCOMMAND_MEDIA_PAUSE : constant := 47;
   APPCOMMAND_MEDIA_RECORD : constant := 48;
   APPCOMMAND_MEDIA_FAST_FORWARD : constant := 49;
   APPCOMMAND_MEDIA_REWIND : constant := 50;
   APPCOMMAND_MEDIA_CHANNEL_UP : constant := 51;
   APPCOMMAND_MEDIA_CHANNEL_DOWN : constant := 52;
   APPCOMMAND_DELETE : constant := 53;
   APPCOMMAND_DWM_FLIP3D : constant := 54;
   FAPPCOMMAND_MOUSE : constant := 16#8000#;
   FAPPCOMMAND_KEY : constant := 0;
   FAPPCOMMAND_OEM : constant := 16#1000#;
   FAPPCOMMAND_MASK : constant := 16#F000#;
   -- [Todo] LLKHF_EXTENDED ( KF_EXTENDED >> 8 );
   LLKHF_INJECTED : constant := 16#00000010#;
   -- [Todo] LLKHF_ALTDOWN ( KF_ALTDOWN >> 8 );
   -- [Todo] LLKHF_UP ( KF_UP >> 8 );
   LLKHF_LOWER_IL_INJECTED : constant := 16#00000002#;
   LLMHF_INJECTED : constant := 16#00000001#;
   LLMHF_LOWER_IL_INJECTED : constant := 16#00000002#;
   HKL_PREV : constant := 0;
   HKL_NEXT : constant := 1;
   KLF_ACTIVATE : constant := 16#00000001#;
   KLF_SUBSTITUTE_OK : constant := 16#00000002#;
   KLF_REORDER : constant := 16#00000008#;
   KLF_REPLACELANG : constant := 16#00000010#;
   KLF_NOTELLSHELL : constant := 16#00000080#;
   KLF_SETFORPROCESS : constant := 16#00000100#;
   KLF_SHIFTLOCK : constant := 16#00010000#;
   KLF_RESET : constant := 16#40000000#;
   INPUTLANGCHANGE_SYSCHARSET : constant := 16#0001#;
   INPUTLANGCHANGE_FORWARD : constant := 16#0002#;
   INPUTLANGCHANGE_BACKWARD : constant := 16#0004#;
   KL_NAMELENGTH : constant := 9;
   GMMP_USE_DISPLAY_POINTS : constant := 1;
   GMMP_USE_HIGH_RESOLUTION_POINTS : constant := 2;
   DESKTOP_READOBJECTS : constant := 16#0001#;
   DESKTOP_CREATEWINDOW : constant := 16#0002#;
   DESKTOP_CREATEMENU : constant := 16#0004#;
   DESKTOP_HOOKCONTROL : constant := 16#0008#;
   DESKTOP_JOURNALRECORD : constant := 16#0010#;
   DESKTOP_JOURNALPLAYBACK : constant := 16#0020#;
   DESKTOP_ENUMERATE : constant := 16#0040#;
   DESKTOP_WRITEOBJECTS : constant := 16#0080#;
   DESKTOP_SWITCHDESKTOP : constant := 16#0100#;
   DF_ALLOWOTHERACCOUNTHOOK : constant := 16#0001#;
   WINSTA_ENUMDESKTOPS : constant := 16#0001#;
   WINSTA_READATTRIBUTES : constant := 16#0002#;
   WINSTA_ACCESSCLIPBOARD : constant := 16#0004#;
   WINSTA_CREATEDESKTOP : constant := 16#0008#;
   WINSTA_WRITEATTRIBUTES : constant := 16#0010#;
   WINSTA_ACCESSGLOBALATOMS : constant := 16#0020#;
   WINSTA_EXITWINDOWS : constant := 16#0040#;
   WINSTA_ENUMERATE : constant := 16#0100#;
   WINSTA_READSCREEN : constant := 16#0200#;
   WINSTA_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( WINSTA_ENUMDESKTOPS )
       or Interfaces.C.Unsigned( WINSTA_READATTRIBUTES )
       or Interfaces.C.Unsigned( WINSTA_ACCESSCLIPBOARD )
       or Interfaces.C.Unsigned( WINSTA_CREATEDESKTOP )
       or Interfaces.C.Unsigned( WINSTA_WRITEATTRIBUTES )
       or Interfaces.C.Unsigned( WINSTA_ACCESSGLOBALATOMS )
       or Interfaces.C.Unsigned( WINSTA_EXITWINDOWS )
       or Interfaces.C.Unsigned( WINSTA_ENUMERATE )
       or Interfaces.C.Unsigned( WINSTA_READSCREEN ) );
   CWF_CREATE_ONLY : constant := 16#00000001#;
   WSF_VISIBLE : constant := 16#0001#;
   UOI_FLAGS : constant := 1;
   UOI_NAME : constant := 2;
   UOI_TYPE : constant := 3;
   UOI_USER_SID : constant := 4;
   UOI_HEAPSIZE : constant := 5;
   UOI_IO : constant := 6;
   UOI_TIMERPROC_EXCEPTION_SUPPRESSION : constant := 7;
   GWL_WNDPROC : constant := -4;
   GWL_HINSTANCE : constant := -6;
   GWL_HWNDPARENT : constant := -8;
   GWL_STYLE : constant := -16;
   GWL_EXSTYLE : constant := -20;
   GWL_USERDATA : constant := -21;
   GWL_ID : constant := -12;
   GWLP_WNDPROC : constant := -4;
   GWLP_HINSTANCE : constant := -6;
   GWLP_HWNDPARENT : constant := -8;
   GWLP_USERDATA : constant := -21;
   GWLP_ID : constant := -12;
   GCL_MENUNAME : constant := -8;
   GCL_HBRBACKGROUND : constant := -10;
   GCL_HCURSOR : constant := -12;
   GCL_HICON : constant := -14;
   GCL_HMODULE : constant := -16;
   GCL_CBWNDEXTRA : constant := -18;
   GCL_CBCLSEXTRA : constant := -20;
   GCL_WNDPROC : constant := -24;
   GCL_STYLE : constant := -26;
   GCW_ATOM : constant := -32;
   GCL_HICONSM : constant := -34;
   GCLP_MENUNAME : constant := -8;
   GCLP_HBRBACKGROUND : constant := -10;
   GCLP_HCURSOR : constant := -12;
   GCLP_HICON : constant := -14;
   GCLP_HMODULE : constant := -16;
   GCLP_WNDPROC : constant := -24;
   GCLP_HICONSM : constant := -34;
   WM_NULL : constant := 16#0000#;
   WM_CREATE : constant := 16#0001#;
   WM_DESTROY : constant := 16#0002#;
   WM_MOVE : constant := 16#0003#;
   WM_SIZE : constant := 16#0005#;
   WM_ACTIVATE : constant := 16#0006#;
   WA_INACTIVE : constant := 0;
   WA_ACTIVE : constant := 1;
   WA_CLICKACTIVE : constant := 2;
   WM_SETFOCUS : constant := 16#0007#;
   WM_KILLFOCUS : constant := 16#0008#;
   WM_ENABLE : constant := 16#000A#;
   WM_SETREDRAW : constant := 16#000B#;
   WM_SETTEXT : constant := 16#000C#;
   WM_GETTEXT : constant := 16#000D#;
   WM_GETTEXTLENGTH : constant := 16#000E#;
   WM_PAINT : constant := 16#000F#;
   WM_CLOSE : constant := 16#0010#;
   WM_QUERYENDSESSION : constant := 16#0011#;
   WM_QUERYOPEN : constant := 16#0013#;
   WM_ENDSESSION : constant := 16#0016#;
   WM_QUIT : constant := 16#0012#;
   WM_ERASEBKGND : constant := 16#0014#;
   WM_SYSCOLORCHANGE : constant := 16#0015#;
   WM_SHOWWINDOW : constant := 16#0018#;
   WM_WININICHANGE : constant := 16#001A#;
   WM_DEVMODECHANGE : constant := 16#001B#;
   WM_ACTIVATEAPP : constant := 16#001C#;
   WM_FONTCHANGE : constant := 16#001D#;
   WM_TIMECHANGE : constant := 16#001E#;
   WM_CANCELMODE : constant := 16#001F#;
   WM_SETCURSOR : constant := 16#0020#;
   WM_MOUSEACTIVATE : constant := 16#0021#;
   WM_CHILDACTIVATE : constant := 16#0022#;
   WM_QUEUESYNC : constant := 16#0023#;
   WM_GETMINMAXINFO : constant := 16#0024#;
   WM_PAINTICON : constant := 16#0026#;
   WM_ICONERASEBKGND : constant := 16#0027#;
   WM_NEXTDLGCTL : constant := 16#0028#;
   WM_SPOOLERSTATUS : constant := 16#002A#;
   WM_DRAWITEM : constant := 16#002B#;
   WM_MEASUREITEM : constant := 16#002C#;
   WM_DELETEITEM : constant := 16#002D#;
   WM_VKEYTOITEM : constant := 16#002E#;
   WM_CHARTOITEM : constant := 16#002F#;
   WM_SETFONT : constant := 16#0030#;
   WM_GETFONT : constant := 16#0031#;
   WM_SETHOTKEY : constant := 16#0032#;
   WM_GETHOTKEY : constant := 16#0033#;
   WM_QUERYDRAGICON : constant := 16#0037#;
   WM_COMPAREITEM : constant := 16#0039#;
   WM_GETOBJECT : constant := 16#003D#;
   WM_COMPACTING : constant := 16#0041#;
   WM_COMMNOTIFY : constant := 16#0044#;
   WM_WINDOWPOSCHANGING : constant := 16#0046#;
   WM_WINDOWPOSCHANGED : constant := 16#0047#;
   WM_POWER : constant := 16#0048#;
   PWR_OK : constant := 1;
   PWR_FAIL : constant := -1;
   PWR_SUSPENDREQUEST : constant := 1;
   PWR_SUSPENDRESUME : constant := 2;
   PWR_CRITICALRESUME : constant := 3;
   WM_COPYDATA : constant := 16#004A#;
   WM_CANCELJOURNAL : constant := 16#004B#;
   WM_NOTIFY : constant := 16#004E#;
   WM_INPUTLANGCHANGEREQUEST : constant := 16#0050#;
   WM_INPUTLANGCHANGE : constant := 16#0051#;
   WM_TCARD : constant := 16#0052#;
   WM_HELP : constant := 16#0053#;
   WM_USERCHANGED : constant := 16#0054#;
   WM_NOTIFYFORMAT : constant := 16#0055#;
   NFR_ANSI : constant := 1;
   NFR_UNICODE : constant := 2;
   NF_QUERY : constant := 3;
   NF_REQUERY : constant := 4;
   WM_CONTEXTMENU : constant := 16#007B#;
   WM_STYLECHANGING : constant := 16#007C#;
   WM_STYLECHANGED : constant := 16#007D#;
   WM_DISPLAYCHANGE : constant := 16#007E#;
   WM_GETICON : constant := 16#007F#;
   WM_SETICON : constant := 16#0080#;
   WM_NCCREATE : constant := 16#0081#;
   WM_NCDESTROY : constant := 16#0082#;
   WM_NCCALCSIZE : constant := 16#0083#;
   WM_NCHITTEST : constant := 16#0084#;
   WM_NCPAINT : constant := 16#0085#;
   WM_NCACTIVATE : constant := 16#0086#;
   WM_GETDLGCODE : constant := 16#0087#;
   WM_SYNCPAINT : constant := 16#0088#;
   WM_NCMOUSEMOVE : constant := 16#00A0#;
   WM_NCLBUTTONDOWN : constant := 16#00A1#;
   WM_NCLBUTTONUP : constant := 16#00A2#;
   WM_NCLBUTTONDBLCLK : constant := 16#00A3#;
   WM_NCRBUTTONDOWN : constant := 16#00A4#;
   WM_NCRBUTTONUP : constant := 16#00A5#;
   WM_NCRBUTTONDBLCLK : constant := 16#00A6#;
   WM_NCMBUTTONDOWN : constant := 16#00A7#;
   WM_NCMBUTTONUP : constant := 16#00A8#;
   WM_NCMBUTTONDBLCLK : constant := 16#00A9#;
   WM_NCXBUTTONDOWN : constant := 16#00AB#;
   WM_NCXBUTTONUP : constant := 16#00AC#;
   WM_NCXBUTTONDBLCLK : constant := 16#00AD#;
   WM_INPUT_DEVICE_CHANGE : constant := 16#00FE#;
   WM_INPUT : constant := 16#00FF#;
   WM_KEYFIRST : constant := 16#0100#;
   WM_KEYDOWN : constant := 16#0100#;
   WM_KEYUP : constant := 16#0101#;
   WM_CHAR : constant := 16#0102#;
   WM_DEADCHAR : constant := 16#0103#;
   WM_SYSKEYDOWN : constant := 16#0104#;
   WM_SYSKEYUP : constant := 16#0105#;
   WM_SYSCHAR : constant := 16#0106#;
   WM_SYSDEADCHAR : constant := 16#0107#;
   WM_UNICHAR : constant := 16#0109#;
   WM_KEYLAST : constant := 16#0109#;
   UNICODE_NOCHAR : constant := 16#FFFF#;
   WM_IME_STARTCOMPOSITION : constant := 16#010D#;
   WM_IME_ENDCOMPOSITION : constant := 16#010E#;
   WM_IME_COMPOSITION : constant := 16#010F#;
   WM_IME_KEYLAST : constant := 16#010F#;
   WM_INITDIALOG : constant := 16#0110#;
   WM_COMMAND : constant := 16#0111#;
   WM_SYSCOMMAND : constant := 16#0112#;
   WM_TIMER : constant := 16#0113#;
   WM_HSCROLL : constant := 16#0114#;
   WM_VSCROLL : constant := 16#0115#;
   WM_INITMENU : constant := 16#0116#;
   WM_INITMENUPOPUP : constant := 16#0117#;
   WM_GESTURE : constant := 16#0119#;
   WM_GESTURENOTIFY : constant := 16#011A#;
   WM_MENUSELECT : constant := 16#011F#;
   WM_MENUCHAR : constant := 16#0120#;
   WM_ENTERIDLE : constant := 16#0121#;
   WM_MENURBUTTONUP : constant := 16#0122#;
   WM_MENUDRAG : constant := 16#0123#;
   WM_MENUGETOBJECT : constant := 16#0124#;
   WM_UNINITMENUPOPUP : constant := 16#0125#;
   WM_MENUCOMMAND : constant := 16#0126#;
   WM_CHANGEUISTATE : constant := 16#0127#;
   WM_UPDATEUISTATE : constant := 16#0128#;
   WM_QUERYUISTATE : constant := 16#0129#;
   UIS_SET : constant := 1;
   UIS_CLEAR : constant := 2;
   UIS_INITIALIZE : constant := 3;
   UISF_HIDEFOCUS : constant := 16#1#;
   UISF_HIDEACCEL : constant := 16#2#;
   UISF_ACTIVE : constant := 16#4#;
   WM_CTLCOLORMSGBOX : constant := 16#0132#;
   WM_CTLCOLOREDIT : constant := 16#0133#;
   WM_CTLCOLORLISTBOX : constant := 16#0134#;
   WM_CTLCOLORBTN : constant := 16#0135#;
   WM_CTLCOLORDLG : constant := 16#0136#;
   WM_CTLCOLORSCROLLBAR : constant := 16#0137#;
   WM_CTLCOLORSTATIC : constant := 16#0138#;
   MN_GETHMENU : constant := 16#01E1#;
   WM_MOUSEFIRST : constant := 16#0200#;
   WM_MOUSEMOVE : constant := 16#0200#;
   WM_LBUTTONDOWN : constant := 16#0201#;
   WM_LBUTTONUP : constant := 16#0202#;
   WM_LBUTTONDBLCLK : constant := 16#0203#;
   WM_RBUTTONDOWN : constant := 16#0204#;
   WM_RBUTTONUP : constant := 16#0205#;
   WM_RBUTTONDBLCLK : constant := 16#0206#;
   WM_MBUTTONDOWN : constant := 16#0207#;
   WM_MBUTTONUP : constant := 16#0208#;
   WM_MBUTTONDBLCLK : constant := 16#0209#;
   WM_MOUSEWHEEL : constant := 16#020A#;
   WM_XBUTTONDOWN : constant := 16#020B#;
   WM_XBUTTONUP : constant := 16#020C#;
   WM_XBUTTONDBLCLK : constant := 16#020D#;
   WM_MOUSEHWHEEL : constant := 16#020E#;
   WM_MOUSELAST : constant := 16#020E#;
   WHEEL_DELTA : constant := 120;
   XBUTTON1 : constant := 16#0001#;
   XBUTTON2 : constant := 16#0002#;
   WM_PARENTNOTIFY : constant := 16#0210#;
   WM_ENTERMENULOOP : constant := 16#0211#;
   WM_EXITMENULOOP : constant := 16#0212#;
   WM_NEXTMENU : constant := 16#0213#;
   WM_SIZING : constant := 16#0214#;
   WM_CAPTURECHANGED : constant := 16#0215#;
   WM_MOVING : constant := 16#0216#;
   WM_POWERBROADCAST : constant := 16#0218#;
   PBT_APMQUERYSUSPEND : constant := 16#0000#;
   PBT_APMQUERYSTANDBY : constant := 16#0001#;
   PBT_APMQUERYSUSPENDFAILED : constant := 16#0002#;
   PBT_APMQUERYSTANDBYFAILED : constant := 16#0003#;
   PBT_APMSUSPEND : constant := 16#0004#;
   PBT_APMSTANDBY : constant := 16#0005#;
   PBT_APMRESUMECRITICAL : constant := 16#0006#;
   PBT_APMRESUMESUSPEND : constant := 16#0007#;
   PBT_APMRESUMESTANDBY : constant := 16#0008#;
   PBTF_APMRESUMEFROMFAILURE : constant := 16#00000001#;
   PBT_APMBATTERYLOW : constant := 16#0009#;
   PBT_APMPOWERSTATUSCHANGE : constant := 16#000A#;
   PBT_APMOEMEVENT : constant := 16#000B#;
   PBT_APMRESUMEAUTOMATIC : constant := 16#0012#;
   PBT_POWERSETTINGCHANGE : constant := 16#8013#;
   WM_DEVICECHANGE : constant := 16#0219#;
   WM_MDICREATE : constant := 16#0220#;
   WM_MDIDESTROY : constant := 16#0221#;
   WM_MDIACTIVATE : constant := 16#0222#;
   WM_MDIRESTORE : constant := 16#0223#;
   WM_MDINEXT : constant := 16#0224#;
   WM_MDIMAXIMIZE : constant := 16#0225#;
   WM_MDITILE : constant := 16#0226#;
   WM_MDICASCADE : constant := 16#0227#;
   WM_MDIICONARRANGE : constant := 16#0228#;
   WM_MDIGETACTIVE : constant := 16#0229#;
   WM_MDISETMENU : constant := 16#0230#;
   WM_ENTERSIZEMOVE : constant := 16#0231#;
   WM_EXITSIZEMOVE : constant := 16#0232#;
   WM_DROPFILES : constant := 16#0233#;
   WM_MDIREFRESHMENU : constant := 16#0234#;
   WM_POINTERDEVICECHANGE : constant := 16#238#;
   WM_POINTERDEVICEINRANGE : constant := 16#239#;
   WM_POINTERDEVICEOUTOFRANGE : constant := 16#23A#;
   WM_TOUCH : constant := 16#0240#;
   WM_NCPOINTERUPDATE : constant := 16#0241#;
   WM_NCPOINTERDOWN : constant := 16#0242#;
   WM_NCPOINTERUP : constant := 16#0243#;
   WM_POINTERUPDATE : constant := 16#0245#;
   WM_POINTERDOWN : constant := 16#0246#;
   WM_POINTERUP : constant := 16#0247#;
   WM_POINTERENTER : constant := 16#0249#;
   WM_POINTERLEAVE : constant := 16#024A#;
   WM_POINTERACTIVATE : constant := 16#024B#;
   WM_POINTERCAPTURECHANGED : constant := 16#024C#;
   WM_TOUCHHITTESTING : constant := 16#024D#;
   WM_POINTERWHEEL : constant := 16#024E#;
   WM_POINTERHWHEEL : constant := 16#024F#;
   DM_POINTERHITTEST : constant := 16#0250#;
   WM_POINTERROUTEDTO : constant := 16#0251#;
   WM_POINTERROUTEDAWAY : constant := 16#0252#;
   WM_POINTERROUTEDRELEASED : constant := 16#0253#;
   WM_IME_SETCONTEXT : constant := 16#0281#;
   WM_IME_NOTIFY : constant := 16#0282#;
   WM_IME_CONTROL : constant := 16#0283#;
   WM_IME_COMPOSITIONFULL : constant := 16#0284#;
   WM_IME_SELECT : constant := 16#0285#;
   WM_IME_CHAR : constant := 16#0286#;
   WM_IME_REQUEST : constant := 16#0288#;
   WM_IME_KEYDOWN : constant := 16#0290#;
   WM_IME_KEYUP : constant := 16#0291#;
   WM_MOUSEHOVER : constant := 16#02A1#;
   WM_MOUSELEAVE : constant := 16#02A3#;
   WM_NCMOUSEHOVER : constant := 16#02A0#;
   WM_NCMOUSELEAVE : constant := 16#02A2#;
   WM_WTSSESSION_CHANGE : constant := 16#02B1#;
   WM_TABLET_FIRST : constant := 16#02c0#;
   WM_TABLET_LAST : constant := 16#02df#;
   WM_DPICHANGED : constant := 16#02E0#;
   WM_DPICHANGED_BEFOREPARENT : constant := 16#02E2#;
   WM_DPICHANGED_AFTERPARENT : constant := 16#02E3#;
   WM_GETDPISCALEDSIZE : constant := 16#02E4#;
   WM_CUT : constant := 16#0300#;
   WM_COPY : constant := 16#0301#;
   WM_PASTE : constant := 16#0302#;
   WM_CLEAR : constant := 16#0303#;
   WM_UNDO : constant := 16#0304#;
   WM_RENDERFORMAT : constant := 16#0305#;
   WM_RENDERALLFORMATS : constant := 16#0306#;
   WM_DESTROYCLIPBOARD : constant := 16#0307#;
   WM_DRAWCLIPBOARD : constant := 16#0308#;
   WM_PAINTCLIPBOARD : constant := 16#0309#;
   WM_VSCROLLCLIPBOARD : constant := 16#030A#;
   WM_SIZECLIPBOARD : constant := 16#030B#;
   WM_ASKCBFORMATNAME : constant := 16#030C#;
   WM_CHANGECBCHAIN : constant := 16#030D#;
   WM_HSCROLLCLIPBOARD : constant := 16#030E#;
   WM_QUERYNEWPALETTE : constant := 16#030F#;
   WM_PALETTEISCHANGING : constant := 16#0310#;
   WM_PALETTECHANGED : constant := 16#0311#;
   WM_HOTKEY : constant := 16#0312#;
   WM_PRINT : constant := 16#0317#;
   WM_PRINTCLIENT : constant := 16#0318#;
   WM_APPCOMMAND : constant := 16#0319#;
   WM_THEMECHANGED : constant := 16#031A#;
   WM_CLIPBOARDUPDATE : constant := 16#031D#;
   WM_DWMCOMPOSITIONCHANGED : constant := 16#031E#;
   WM_DWMNCRENDERINGCHANGED : constant := 16#031F#;
   WM_DWMCOLORIZATIONCOLORCHANGED : constant := 16#0320#;
   WM_DWMWINDOWMAXIMIZEDCHANGE : constant := 16#0321#;
   WM_DWMSENDICONICTHUMBNAIL : constant := 16#0323#;
   WM_DWMSENDICONICLIVEPREVIEWBITMAP : constant := 16#0326#;
   WM_GETTITLEBARINFOEX : constant := 16#033F#;
   WM_HANDHELDFIRST : constant := 16#0358#;
   WM_HANDHELDLAST : constant := 16#035F#;
   WM_AFXFIRST : constant := 16#0360#;
   WM_AFXLAST : constant := 16#037F#;
   WM_PENWINFIRST : constant := 16#0380#;
   WM_PENWINLAST : constant := 16#038F#;
   WM_APP : constant := 16#8000#;
   WM_USER : constant := 16#0400#;
   WMSZ_LEFT : constant := 1;
   WMSZ_RIGHT : constant := 2;
   WMSZ_TOP : constant := 3;
   WMSZ_TOPLEFT : constant := 4;
   WMSZ_TOPRIGHT : constant := 5;
   WMSZ_BOTTOM : constant := 6;
   WMSZ_BOTTOMLEFT : constant := 7;
   WMSZ_BOTTOMRIGHT : constant := 8;
   HTERROR : constant := -2;
   HTTRANSPARENT : constant := -1;
   HTNOWHERE : constant := 0;
   HTCLIENT : constant := 1;
   HTCAPTION : constant := 2;
   HTSYSMENU : constant := 3;
   HTGROWBOX : constant := 4;
   HTMENU : constant := 5;
   HTHSCROLL : constant := 6;
   HTVSCROLL : constant := 7;
   HTMINBUTTON : constant := 8;
   HTMAXBUTTON : constant := 9;
   HTLEFT : constant := 10;
   HTRIGHT : constant := 11;
   HTTOP : constant := 12;
   HTTOPLEFT : constant := 13;
   HTTOPRIGHT : constant := 14;
   HTBOTTOM : constant := 15;
   HTBOTTOMLEFT : constant := 16;
   HTBOTTOMRIGHT : constant := 17;
   HTBORDER : constant := 18;
   HTOBJECT : constant := 19;
   HTCLOSE : constant := 20;
   HTHELP : constant := 21;
   SMTO_NORMAL : constant := 16#0000#;
   SMTO_BLOCK : constant := 16#0001#;
   SMTO_ABORTIFHUNG : constant := 16#0002#;
   SMTO_NOTIMEOUTIFNOTHUNG : constant := 16#0008#;
   SMTO_ERRORONEXIT : constant := 16#0020#;
   MA_ACTIVATE : constant := 1;
   MA_ACTIVATEANDEAT : constant := 2;
   MA_NOACTIVATE : constant := 3;
   MA_NOACTIVATEANDEAT : constant := 4;
   ICON_SMALL : constant := 0;
   ICON_BIG : constant := 1;
   ICON_SMALL2 : constant := 2;
   SIZE_RESTORED : constant := 0;
   SIZE_MINIMIZED : constant := 1;
   SIZE_MAXIMIZED : constant := 2;
   SIZE_MAXSHOW : constant := 3;
   SIZE_MAXHIDE : constant := 4;
   WVR_ALIGNTOP : constant := 16#0010#;
   WVR_ALIGNLEFT : constant := 16#0020#;
   WVR_ALIGNBOTTOM : constant := 16#0040#;
   WVR_ALIGNRIGHT : constant := 16#0080#;
   WVR_HREDRAW : constant := 16#0100#;
   WVR_VREDRAW : constant := 16#0200#;
   WVR_REDRAW : constant := ( Interfaces.C.Unsigned( WVR_HREDRAW )
       or Interfaces.C.Unsigned( WVR_VREDRAW ) );
   WVR_VALIDRECTS : constant := 16#0400#;
   MK_LBUTTON : constant := 16#0001#;
   MK_RBUTTON : constant := 16#0002#;
   MK_SHIFT : constant := 16#0004#;
   MK_CONTROL : constant := 16#0008#;
   MK_MBUTTON : constant := 16#0010#;
   MK_XBUTTON1 : constant := 16#0020#;
   MK_XBUTTON2 : constant := 16#0040#;
   TME_HOVER : constant := 16#00000001#;
   TME_LEAVE : constant := 16#00000002#;
   TME_NONCLIENT : constant := 16#00000010#;
   TME_QUERY : constant := 16#40000000#;
   TME_CANCEL : constant := 16#80000000#;
   HOVER_DEFAULT : constant := 16#FFFFFFFF#;
   WS_OVERLAPPED : constant := 16#00000000#;
   WS_POPUP : constant := 16#80000000#;
   WS_CHILD : constant := 16#40000000#;
   WS_MINIMIZE : constant := 16#20000000#;
   WS_VISIBLE : constant := 16#10000000#;
   WS_DISABLED : constant := 16#08000000#;
   WS_CLIPSIBLINGS : constant := 16#04000000#;
   WS_CLIPCHILDREN : constant := 16#02000000#;
   WS_MAXIMIZE : constant := 16#01000000#;
   WS_CAPTION : constant := 16#00C00000#;
   WS_BORDER : constant := 16#00800000#;
   WS_DLGFRAME : constant := 16#00400000#;
   WS_VSCROLL : constant := 16#00200000#;
   WS_HSCROLL : constant := 16#00100000#;
   WS_SYSMENU : constant := 16#00080000#;
   WS_THICKFRAME : constant := 16#00040000#;
   WS_GROUP : constant := 16#00020000#;
   WS_TABSTOP : constant := 16#00010000#;
   WS_MINIMIZEBOX : constant := 16#00020000#;
   WS_MAXIMIZEBOX : constant := 16#00010000#;
   WS_OVERLAPPEDWINDOW : constant := ( Interfaces.C.Unsigned( WS_OVERLAPPED )
       or Interfaces.C.Unsigned( WS_CAPTION )
       or Interfaces.C.Unsigned( WS_SYSMENU )
       or Interfaces.C.Unsigned( WS_THICKFRAME )
       or Interfaces.C.Unsigned( WS_MINIMIZEBOX )
       or Interfaces.C.Unsigned( WS_MAXIMIZEBOX ) );
   WS_POPUPWINDOW : constant := ( Interfaces.C.Unsigned( WS_POPUP )
       or Interfaces.C.Unsigned( WS_BORDER )
       or Interfaces.C.Unsigned( WS_SYSMENU ) );
   WS_CHILDWINDOW : constant := WS_CHILD;
   WS_EX_DLGMODALFRAME : constant := 16#00000001#;
   WS_EX_NOPARENTNOTIFY : constant := 16#00000004#;
   WS_EX_TOPMOST : constant := 16#00000008#;
   WS_EX_ACCEPTFILES : constant := 16#00000010#;
   WS_EX_TRANSPARENT : constant := 16#00000020#;
   WS_EX_MDICHILD : constant := 16#00000040#;
   WS_EX_TOOLWINDOW : constant := 16#00000080#;
   WS_EX_WINDOWEDGE : constant := 16#00000100#;
   WS_EX_CLIENTEDGE : constant := 16#00000200#;
   WS_EX_CONTEXTHELP : constant := 16#00000400#;
   WS_EX_RIGHT : constant := 16#00001000#;
   WS_EX_LEFT : constant := 16#00000000#;
   WS_EX_RTLREADING : constant := 16#00002000#;
   WS_EX_LTRREADING : constant := 16#00000000#;
   WS_EX_LEFTSCROLLBAR : constant := 16#00004000#;
   WS_EX_RIGHTSCROLLBAR : constant := 16#00000000#;
   WS_EX_CONTROLPARENT : constant := 16#00010000#;
   WS_EX_STATICEDGE : constant := 16#00020000#;
   WS_EX_APPWINDOW : constant := 16#00040000#;
   WS_EX_OVERLAPPEDWINDOW : constant := ( Interfaces.C.Unsigned( WS_EX_WINDOWEDGE )
       or Interfaces.C.Unsigned( WS_EX_CLIENTEDGE ) );
   WS_EX_PALETTEWINDOW : constant := ( Interfaces.C.Unsigned( WS_EX_WINDOWEDGE )
       or Interfaces.C.Unsigned( WS_EX_TOOLWINDOW )
       or Interfaces.C.Unsigned( WS_EX_TOPMOST ) );
   WS_EX_LAYERED : constant := 16#00080000#;
   WS_EX_NOINHERITLAYOUT : constant := 16#00100000#;
   WS_EX_NOREDIRECTIONBITMAP : constant := 16#00200000#;
   WS_EX_LAYOUTRTL : constant := 16#00400000#;
   WS_EX_COMPOSITED : constant := 16#02000000#;
   WS_EX_NOACTIVATE : constant := 16#08000000#;
   CS_VREDRAW : constant := 16#0001#;
   CS_HREDRAW : constant := 16#0002#;
   CS_DBLCLKS : constant := 16#0008#;
   CS_OWNDC : constant := 16#0020#;
   CS_CLASSDC : constant := 16#0040#;
   CS_PARENTDC : constant := 16#0080#;
   CS_NOCLOSE : constant := 16#0200#;
   CS_SAVEBITS : constant := 16#0800#;
   CS_BYTEALIGNCLIENT : constant := 16#1000#;
   CS_BYTEALIGNWINDOW : constant := 16#2000#;
   CS_GLOBALCLASS : constant := 16#4000#;
   CS_IME : constant := 16#00010000#;
   CS_DROPSHADOW : constant := 16#00020000#;
   PRF_CHECKVISIBLE : constant := 16#00000001#;
   PRF_NONCLIENT : constant := 16#00000002#;
   PRF_CLIENT : constant := 16#00000004#;
   PRF_ERASEBKGND : constant := 16#00000008#;
   PRF_CHILDREN : constant := 16#00000010#;
   PRF_OWNED : constant := 16#00000020#;
   BDR_RAISEDOUTER : constant := 16#0001#;
   BDR_SUNKENOUTER : constant := 16#0002#;
   BDR_RAISEDINNER : constant := 16#0004#;
   BDR_SUNKENINNER : constant := 16#0008#;
   BDR_OUTER : constant := ( Interfaces.C.Unsigned( BDR_RAISEDOUTER )
       or Interfaces.C.Unsigned( BDR_SUNKENOUTER ) );
   BDR_INNER : constant := ( Interfaces.C.Unsigned( BDR_RAISEDINNER )
       or Interfaces.C.Unsigned( BDR_SUNKENINNER ) );
   BDR_RAISED : constant := ( Interfaces.C.Unsigned( BDR_RAISEDOUTER )
       or Interfaces.C.Unsigned( BDR_RAISEDINNER ) );
   BDR_SUNKEN : constant := ( Interfaces.C.Unsigned( BDR_SUNKENOUTER )
       or Interfaces.C.Unsigned( BDR_SUNKENINNER ) );
   EDGE_RAISED : constant := ( Interfaces.C.Unsigned( BDR_RAISEDOUTER )
       or Interfaces.C.Unsigned( BDR_RAISEDINNER ) );
   EDGE_SUNKEN : constant := ( Interfaces.C.Unsigned( BDR_SUNKENOUTER )
       or Interfaces.C.Unsigned( BDR_SUNKENINNER ) );
   EDGE_ETCHED : constant := ( Interfaces.C.Unsigned( BDR_SUNKENOUTER )
       or Interfaces.C.Unsigned( BDR_RAISEDINNER ) );
   EDGE_BUMP : constant := ( Interfaces.C.Unsigned( BDR_RAISEDOUTER )
       or Interfaces.C.Unsigned( BDR_SUNKENINNER ) );
   BF_LEFT : constant := 16#0001#;
   BF_TOP : constant := 16#0002#;
   BF_RIGHT : constant := 16#0004#;
   BF_BOTTOM : constant := 16#0008#;
   BF_TOPLEFT : constant := ( Interfaces.C.Unsigned( BF_TOP )
       or Interfaces.C.Unsigned( BF_LEFT ) );
   BF_TOPRIGHT : constant := ( Interfaces.C.Unsigned( BF_TOP )
       or Interfaces.C.Unsigned( BF_RIGHT ) );
   BF_BOTTOMLEFT : constant := ( Interfaces.C.Unsigned( BF_BOTTOM )
       or Interfaces.C.Unsigned( BF_LEFT ) );
   BF_BOTTOMRIGHT : constant := ( Interfaces.C.Unsigned( BF_BOTTOM )
       or Interfaces.C.Unsigned( BF_RIGHT ) );
   BF_RECT : constant := ( Interfaces.C.Unsigned( BF_LEFT )
       or Interfaces.C.Unsigned( BF_TOP )
       or Interfaces.C.Unsigned( BF_RIGHT )
       or Interfaces.C.Unsigned( BF_BOTTOM ) );
   BF_DIAGONAL : constant := 16#0010#;
   BF_DIAGONAL_ENDTOPRIGHT : constant := ( Interfaces.C.Unsigned( BF_DIAGONAL )
       or Interfaces.C.Unsigned( BF_TOP )
       or Interfaces.C.Unsigned( BF_RIGHT ) );
   BF_DIAGONAL_ENDTOPLEFT : constant := ( Interfaces.C.Unsigned( BF_DIAGONAL )
       or Interfaces.C.Unsigned( BF_TOP )
       or Interfaces.C.Unsigned( BF_LEFT ) );
   BF_DIAGONAL_ENDBOTTOMLEFT : constant := ( Interfaces.C.Unsigned( BF_DIAGONAL )
       or Interfaces.C.Unsigned( BF_BOTTOM )
       or Interfaces.C.Unsigned( BF_LEFT ) );
   BF_DIAGONAL_ENDBOTTOMRIGHT : constant := ( Interfaces.C.Unsigned( BF_DIAGONAL )
       or Interfaces.C.Unsigned( BF_BOTTOM )
       or Interfaces.C.Unsigned( BF_RIGHT ) );
   BF_MIDDLE : constant := 16#0800#;
   BF_SOFT : constant := 16#1000#;
   BF_ADJUST : constant := 16#2000#;
   BF_FLAT : constant := 16#4000#;
   BF_MONO : constant := 16#8000#;
   DFC_CAPTION : constant := 1;
   DFC_MENU : constant := 2;
   DFC_SCROLL : constant := 3;
   DFC_BUTTON : constant := 4;
   DFC_POPUPMENU : constant := 5;
   DFCS_CAPTIONCLOSE : constant := 16#0000#;
   DFCS_CAPTIONMIN : constant := 16#0001#;
   DFCS_CAPTIONMAX : constant := 16#0002#;
   DFCS_CAPTIONRESTORE : constant := 16#0003#;
   DFCS_CAPTIONHELP : constant := 16#0004#;
   DFCS_MENUARROW : constant := 16#0000#;
   DFCS_MENUCHECK : constant := 16#0001#;
   DFCS_MENUBULLET : constant := 16#0002#;
   DFCS_MENUARROWRIGHT : constant := 16#0004#;
   DFCS_SCROLLUP : constant := 16#0000#;
   DFCS_SCROLLDOWN : constant := 16#0001#;
   DFCS_SCROLLLEFT : constant := 16#0002#;
   DFCS_SCROLLRIGHT : constant := 16#0003#;
   DFCS_SCROLLCOMBOBOX : constant := 16#0005#;
   DFCS_SCROLLSIZEGRIP : constant := 16#0008#;
   DFCS_SCROLLSIZEGRIPRIGHT : constant := 16#0010#;
   DFCS_BUTTONCHECK : constant := 16#0000#;
   DFCS_BUTTONRADIOIMAGE : constant := 16#0001#;
   DFCS_BUTTONRADIOMASK : constant := 16#0002#;
   DFCS_BUTTONRADIO : constant := 16#0004#;
   DFCS_BUTTON3STATE : constant := 16#0008#;
   DFCS_BUTTONPUSH : constant := 16#0010#;
   DFCS_INACTIVE : constant := 16#0100#;
   DFCS_PUSHED : constant := 16#0200#;
   DFCS_CHECKED : constant := 16#0400#;
   DFCS_TRANSPARENT : constant := 16#0800#;
   DFCS_HOT : constant := 16#1000#;
   DFCS_ADJUSTRECT : constant := 16#2000#;
   DFCS_FLAT : constant := 16#4000#;
   DFCS_MONO : constant := 16#8000#;
   DC_ACTIVE : constant := 16#0001#;
   DC_SMALLCAP : constant := 16#0002#;
   DC_ICON : constant := 16#0004#;
   DC_TEXT : constant := 16#0008#;
   DC_INBUTTON : constant := 16#0010#;
   DC_GRADIENT : constant := 16#0020#;
   DC_BUTTONS : constant := 16#1000#;
   IDANI_OPEN : constant := 1;
   IDANI_CAPTION : constant := 3;
   CF_TEXT : constant := 1;
   CF_BITMAP : constant := 2;
   CF_METAFILEPICT : constant := 3;
   CF_SYLK : constant := 4;
   CF_DIF : constant := 5;
   CF_TIFF : constant := 6;
   CF_OEMTEXT : constant := 7;
   CF_DIB : constant := 8;
   CF_PALETTE : constant := 9;
   CF_PENDATA : constant := 10;
   CF_RIFF : constant := 11;
   CF_WAVE : constant := 12;
   CF_UNICODETEXT : constant := 13;
   CF_ENHMETAFILE : constant := 14;
   CF_HDROP : constant := 15;
   CF_LOCALE : constant := 16;
   CF_DIBV5 : constant := 17;
   CF_MAX : constant := 18;
   CF_OWNERDISPLAY : constant := 16#0080#;
   CF_DSPTEXT : constant := 16#0081#;
   CF_DSPBITMAP : constant := 16#0082#;
   CF_DSPMETAFILEPICT : constant := 16#0083#;
   CF_DSPENHMETAFILE : constant := 16#008E#;
   CF_PRIVATEFIRST : constant := 16#0200#;
   CF_PRIVATELAST : constant := 16#02FF#;
   CF_GDIOBJFIRST : constant := 16#0300#;
   CF_GDIOBJLAST : constant := 16#03FF#;
   FNOINVERT : constant := 16#02#;
   FSHIFT : constant := 16#04#;
   FCONTROL : constant := 16#08#;
   FALT : constant := 16#10#;
   WPF_SETMINPOSITION : constant := 16#0001#;
   WPF_RESTORETOMAXIMIZED : constant := 16#0002#;
   WPF_ASYNCWINDOWPLACEMENT : constant := 16#0004#;
   ODT_MENU : constant := 1;
   ODT_LISTBOX : constant := 2;
   ODT_COMBOBOX : constant := 3;
   ODT_BUTTON : constant := 4;
   ODT_STATIC : constant := 5;
   ODA_DRAWENTIRE : constant := 16#0001#;
   ODA_SELECT : constant := 16#0002#;
   ODA_FOCUS : constant := 16#0004#;
   ODS_SELECTED : constant := 16#0001#;
   ODS_GRAYED : constant := 16#0002#;
   ODS_DISABLED : constant := 16#0004#;
   ODS_CHECKED : constant := 16#0008#;
   ODS_FOCUS : constant := 16#0010#;
   ODS_DEFAULT : constant := 16#0020#;
   ODS_COMBOBOXEDIT : constant := 16#1000#;
   ODS_HOTLIGHT : constant := 16#0040#;
   ODS_INACTIVE : constant := 16#0080#;
   ODS_NOACCEL : constant := 16#0100#;
   ODS_NOFOCUSRECT : constant := 16#0200#;
   PM_NOREMOVE : constant := 16#0000#;
   PM_REMOVE : constant := 16#0001#;
   PM_NOYIELD : constant := 16#0002#;
   -- [Todo] PM_QS_INPUT ( QS_INPUT << 16 );
   -- [Todo] PM_QS_PAINT ( QS_PAINT << 16 );
   -- [Todo] PM_QS_SENDMESSAGE ( QS_SENDMESSAGE << 16 );
   MOD_ALT : constant := 16#0001#;
   MOD_CONTROL : constant := 16#0002#;
   MOD_SHIFT : constant := 16#0004#;
   MOD_WIN : constant := 16#0008#;
   MOD_NOREPEAT : constant := 16#4000#;
   IDHOT_SNAPWINDOW : constant := -1;
   IDHOT_SNAPDESKTOP : constant := -2;
   ENDSESSION_CLOSEAPP : constant := 16#00000001#;
   ENDSESSION_CRITICAL : constant := 16#40000000#;
   ENDSESSION_LOGOFF : constant := 16#80000000#;
   EWX_LOGOFF : constant := 16#00000000#;
   EWX_SHUTDOWN : constant := 16#00000001#;
   EWX_REBOOT : constant := 16#00000002#;
   EWX_FORCE : constant := 16#00000004#;
   EWX_POWEROFF : constant := 16#00000008#;
   EWX_FORCEIFHUNG : constant := 16#00000010#;
   EWX_QUICKRESOLVE : constant := 16#00000020#;
   EWX_RESTARTAPPS : constant := 16#00000040#;
   EWX_HYBRID_SHUTDOWN : constant := 16#00400000#;
   EWX_BOOTOPTIONS : constant := 16#01000000#;
   EWX_ARSO : constant := 16#04000000#;
   BSM_ALLCOMPONENTS : constant := 16#00000000#;
   BSM_VXDS : constant := 16#00000001#;
   BSM_NETDRIVER : constant := 16#00000002#;
   BSM_INSTALLABLEDRIVERS : constant := 16#00000004#;
   BSM_APPLICATIONS : constant := 16#00000008#;
   BSM_ALLDESKTOPS : constant := 16#00000010#;
   BSF_QUERY : constant := 16#00000001#;
   BSF_IGNORECURRENTTASK : constant := 16#00000002#;
   BSF_FLUSHDISK : constant := 16#00000004#;
   BSF_NOHANG : constant := 16#00000008#;
   BSF_POSTMESSAGE : constant := 16#00000010#;
   BSF_FORCEIFHUNG : constant := 16#00000020#;
   BSF_NOTIMEOUTIFNOTHUNG : constant := 16#00000040#;
   BSF_ALLOWSFW : constant := 16#00000080#;
   BSF_SENDNOTIFYMESSAGE : constant := 16#00000100#;
   BSF_RETURNHDESK : constant := 16#00000200#;
   BSF_LUID : constant := 16#00000400#;
   BROADCAST_QUERY_DENY : constant := 16#424D5144#;
   DEVICE_NOTIFY_WINDOW_HANDLE : constant := 16#00000000#;
   DEVICE_NOTIFY_SERVICE_HANDLE : constant := 16#00000001#;
   DEVICE_NOTIFY_ALL_INTERFACE_CLASSES : constant := 16#00000004#;
   HWND_BROADCAST : constant := 16#ffff#;
   HWND_MESSAGE : constant := 3;
   ISMEX_NOSEND : constant := 16#00000000#;
   ISMEX_SEND : constant := 16#00000001#;
   ISMEX_NOTIFY : constant := 16#00000002#;
   ISMEX_CALLBACK : constant := 16#00000004#;
   ISMEX_REPLIED : constant := 16#00000008#;
   HWND_DESKTOP : constant := 0;
   PW_CLIENTONLY : constant := 16#00000001#;
   PW_RENDERFULLCONTENT : constant := 16#00000002#;
   LWA_COLORKEY : constant := 16#00000001#;
   LWA_ALPHA : constant := 16#00000002#;
   ULW_COLORKEY : constant := 16#00000001#;
   ULW_ALPHA : constant := 16#00000002#;
   ULW_OPAQUE : constant := 16#00000004#;
   ULW_EX_NORESIZE : constant := 16#00000008#;
   FLASHW_STOP : constant := 0;
   FLASHW_CAPTION : constant := 16#00000001#;
   FLASHW_TRAY : constant := 16#00000002#;
   FLASHW_ALL : constant := ( Interfaces.C.Unsigned( FLASHW_CAPTION )
       or Interfaces.C.Unsigned( FLASHW_TRAY ) );
   FLASHW_TIMER : constant := 16#00000004#;
   FLASHW_TIMERNOFG : constant := 16#0000000C#;
   WDA_NONE : constant := 16#00000000#;
   WDA_MONITOR : constant := 16#00000001#;
   WDA_EXCLUDEFROMCAPTURE : constant := 16#00000011#;
   SWP_NOSIZE : constant := 16#0001#;
   SWP_NOMOVE : constant := 16#0002#;
   SWP_NOZORDER : constant := 16#0004#;
   SWP_NOREDRAW : constant := 16#0008#;
   SWP_NOACTIVATE : constant := 16#0010#;
   SWP_FRAMECHANGED : constant := 16#0020#;
   SWP_SHOWWINDOW : constant := 16#0040#;
   SWP_HIDEWINDOW : constant := 16#0080#;
   SWP_NOCOPYBITS : constant := 16#0100#;
   SWP_NOOWNERZORDER : constant := 16#0200#;
   SWP_NOSENDCHANGING : constant := 16#0400#;
   SWP_DEFERERASE : constant := 16#2000#;
   SWP_ASYNCWINDOWPOS : constant := 16#4000#;
   HWND_TOP : constant := 0;
   HWND_BOTTOM : constant := 1;
   HWND_TOPMOST : constant := 1;
   HWND_NOTOPMOST : constant := 2;
   -- #include <pshpack2.h>
   -- #include <winuser.h>
   -- #include <poppack.h>
   -- #include <winuser.h>
   DLGWINDOWEXTRA : constant := 30;
   KEYEVENTF_EXTENDEDKEY : constant := 16#0001#;
   KEYEVENTF_KEYUP : constant := 16#0002#;
   KEYEVENTF_UNICODE : constant := 16#0004#;
   KEYEVENTF_SCANCODE : constant := 16#0008#;
   MOUSEEVENTF_MOVE : constant := 16#0001#;
   MOUSEEVENTF_LEFTDOWN : constant := 16#0002#;
   MOUSEEVENTF_LEFTUP : constant := 16#0004#;
   MOUSEEVENTF_RIGHTDOWN : constant := 16#0008#;
   MOUSEEVENTF_RIGHTUP : constant := 16#0010#;
   MOUSEEVENTF_MIDDLEDOWN : constant := 16#0020#;
   MOUSEEVENTF_MIDDLEUP : constant := 16#0040#;
   MOUSEEVENTF_XDOWN : constant := 16#0080#;
   MOUSEEVENTF_XUP : constant := 16#0100#;
   MOUSEEVENTF_WHEEL : constant := 16#0800#;
   MOUSEEVENTF_HWHEEL : constant := 16#01000#;
   MOUSEEVENTF_MOVE_NOCOALESCE : constant := 16#2000#;
   MOUSEEVENTF_VIRTUALDESK : constant := 16#4000#;
   MOUSEEVENTF_ABSOLUTE : constant := 16#8000#;
   INPUT_MOUSE : constant := 0;
   INPUT_KEYBOARD : constant := 1;
   INPUT_HARDWARE : constant := 2;
   TOUCHEVENTF_MOVE : constant := 16#0001#;
   TOUCHEVENTF_DOWN : constant := 16#0002#;
   TOUCHEVENTF_UP : constant := 16#0004#;
   TOUCHEVENTF_INRANGE : constant := 16#0008#;
   TOUCHEVENTF_PRIMARY : constant := 16#0010#;
   TOUCHEVENTF_NOCOALESCE : constant := 16#0020#;
   TOUCHEVENTF_PEN : constant := 16#0040#;
   TOUCHEVENTF_PALM : constant := 16#0080#;
   TOUCHINPUTMASKF_TIMEFROMSYSTEM : constant := 16#0001#;
   TOUCHINPUTMASKF_EXTRAINFO : constant := 16#0002#;
   TOUCHINPUTMASKF_CONTACTAREA : constant := 16#0004#;
   TWF_FINETOUCH : constant := 16#00000001#;
   TWF_WANTPALM : constant := 16#00000002#;
   POINTER_FLAG_NONE : constant := 16#00000000#;
   POINTER_FLAG_NEW : constant := 16#00000001#;
   POINTER_FLAG_INRANGE : constant := 16#00000002#;
   POINTER_FLAG_INCONTACT : constant := 16#00000004#;
   POINTER_FLAG_FIRSTBUTTON : constant := 16#00000010#;
   POINTER_FLAG_SECONDBUTTON : constant := 16#00000020#;
   POINTER_FLAG_THIRDBUTTON : constant := 16#00000040#;
   POINTER_FLAG_FOURTHBUTTON : constant := 16#00000080#;
   POINTER_FLAG_FIFTHBUTTON : constant := 16#00000100#;
   POINTER_FLAG_PRIMARY : constant := 16#00002000#;
   POINTER_FLAG_CONFIDENCE : constant := 16#00004000#;
   POINTER_FLAG_CANCELED : constant := 16#00008000#;
   POINTER_FLAG_DOWN : constant := 16#00010000#;
   POINTER_FLAG_UPDATE : constant := 16#00020000#;
   POINTER_FLAG_UP : constant := 16#00040000#;
   POINTER_FLAG_WHEEL : constant := 16#00080000#;
   POINTER_FLAG_HWHEEL : constant := 16#00100000#;
   POINTER_FLAG_CAPTURECHANGED : constant := 16#00200000#;
   POINTER_FLAG_HASTRANSFORM : constant := 16#00400000#;
   POINTER_MOD_SHIFT : constant := 16#0004#;
   POINTER_MOD_CTRL : constant := 16#0008#;
   TOUCH_FLAG_NONE : constant := 16#00000000#;
   TOUCH_MASK_NONE : constant := 16#00000000#;
   TOUCH_MASK_CONTACTAREA : constant := 16#00000001#;
   TOUCH_MASK_ORIENTATION : constant := 16#00000002#;
   TOUCH_MASK_PRESSURE : constant := 16#00000004#;
   PEN_FLAG_NONE : constant := 16#00000000#;
   PEN_FLAG_BARREL : constant := 16#00000001#;
   PEN_FLAG_INVERTED : constant := 16#00000002#;
   PEN_FLAG_ERASER : constant := 16#00000004#;
   PEN_MASK_NONE : constant := 16#00000000#;
   PEN_MASK_PRESSURE : constant := 16#00000001#;
   PEN_MASK_ROTATION : constant := 16#00000002#;
   PEN_MASK_TILT_X : constant := 16#00000004#;
   PEN_MASK_TILT_Y : constant := 16#00000008#;
   POINTER_MESSAGE_FLAG_NEW : constant := 16#00000001#;
   POINTER_MESSAGE_FLAG_INRANGE : constant := 16#00000002#;
   POINTER_MESSAGE_FLAG_INCONTACT : constant := 16#00000004#;
   POINTER_MESSAGE_FLAG_FIRSTBUTTON : constant := 16#00000010#;
   POINTER_MESSAGE_FLAG_SECONDBUTTON : constant := 16#00000020#;
   POINTER_MESSAGE_FLAG_THIRDBUTTON : constant := 16#00000040#;
   POINTER_MESSAGE_FLAG_FOURTHBUTTON : constant := 16#00000080#;
   POINTER_MESSAGE_FLAG_FIFTHBUTTON : constant := 16#00000100#;
   POINTER_MESSAGE_FLAG_PRIMARY : constant := 16#00002000#;
   POINTER_MESSAGE_FLAG_CONFIDENCE : constant := 16#00004000#;
   POINTER_MESSAGE_FLAG_CANCELED : constant := 16#00008000#;
   MAX_TOUCH_COUNT : constant := 256;
   TOUCH_FEEDBACK_DEFAULT : constant := 16#1#;
   TOUCH_FEEDBACK_INDIRECT : constant := 16#2#;
   TOUCH_FEEDBACK_NONE : constant := 16#3#;
   TOUCH_HIT_TESTING_DEFAULT : constant := 16#0#;
   TOUCH_HIT_TESTING_CLIENT : constant := 16#1#;
   TOUCH_HIT_TESTING_NONE : constant := 16#2#;
   TOUCH_HIT_TESTING_PROXIMITY_CLOSEST : constant := 16#0#;
   TOUCH_HIT_TESTING_PROXIMITY_FARTHEST : constant := 16#FFF#;
   GWFS_INCLUDE_ANCESTORS : constant := 16#00000001#;
   MAPVK_VK_TO_VSC : constant := 0;
   MAPVK_VSC_TO_VK : constant := 1;
   MAPVK_VK_TO_CHAR : constant := 2;
   MAPVK_VSC_TO_VK_EX : constant := 3;
   MAPVK_VK_TO_VSC_EX : constant := 4;
   MWMO_WAITALL : constant := 16#0001#;
   MWMO_ALERTABLE : constant := 16#0002#;
   MWMO_INPUTAVAILABLE : constant := 16#0004#;
   QS_KEY : constant := 16#0001#;
   QS_MOUSEMOVE : constant := 16#0002#;
   QS_MOUSEBUTTON : constant := 16#0004#;
   QS_POSTMESSAGE : constant := 16#0008#;
   QS_TIMER : constant := 16#0010#;
   QS_PAINT : constant := 16#0020#;
   QS_SENDMESSAGE : constant := 16#0040#;
   QS_HOTKEY : constant := 16#0080#;
   QS_ALLPOSTMESSAGE : constant := 16#0100#;
   QS_RAWINPUT : constant := 16#0400#;
   QS_TOUCH : constant := 16#0800#;
   QS_POINTER : constant := 16#1000#;
   QS_MOUSE : constant := ( Interfaces.C.Unsigned( QS_MOUSEMOVE )
       or Interfaces.C.Unsigned( QS_MOUSEBUTTON ) );
   QS_INPUT : constant := ( Interfaces.C.Unsigned( QS_MOUSE )
       or Interfaces.C.Unsigned( QS_KEY )
       or Interfaces.C.Unsigned( QS_RAWINPUT )
       or Interfaces.C.Unsigned( QS_TOUCH )
       or Interfaces.C.Unsigned( QS_POINTER ) );
   QS_ALLEVENTS : constant := ( Interfaces.C.Unsigned( QS_INPUT )
       or Interfaces.C.Unsigned( QS_POSTMESSAGE )
       or Interfaces.C.Unsigned( QS_TIMER )
       or Interfaces.C.Unsigned( QS_PAINT )
       or Interfaces.C.Unsigned( QS_HOTKEY ) );
   QS_ALLINPUT : constant := ( Interfaces.C.Unsigned( QS_INPUT )
       or Interfaces.C.Unsigned( QS_POSTMESSAGE )
       or Interfaces.C.Unsigned( QS_TIMER )
       or Interfaces.C.Unsigned( QS_PAINT )
       or Interfaces.C.Unsigned( QS_HOTKEY )
       or Interfaces.C.Unsigned( QS_SENDMESSAGE ) );
   USER_TIMER_MAXIMUM : constant := 16#7FFFFFFF#;
   USER_TIMER_MINIMUM : constant := 16#0000000A#;
   TIMERV_DEFAULT_COALESCING : constant := 0;
   TIMERV_NO_COALESCING : constant := 16#FFFFFFFF#;
   TIMERV_COALESCING_MIN : constant := 1;
   TIMERV_COALESCING_MAX : constant := 16#7FFFFFF5#;
   SM_CXSCREEN : constant := 0;
   SM_CYSCREEN : constant := 1;
   SM_CXVSCROLL : constant := 2;
   SM_CYHSCROLL : constant := 3;
   SM_CYCAPTION : constant := 4;
   SM_CXBORDER : constant := 5;
   SM_CYBORDER : constant := 6;
   SM_CXDLGFRAME : constant := 7;
   SM_CYDLGFRAME : constant := 8;
   SM_CYVTHUMB : constant := 9;
   SM_CXHTHUMB : constant := 10;
   SM_CXICON : constant := 11;
   SM_CYICON : constant := 12;
   SM_CXCURSOR : constant := 13;
   SM_CYCURSOR : constant := 14;
   SM_CYMENU : constant := 15;
   SM_CXFULLSCREEN : constant := 16;
   SM_CYFULLSCREEN : constant := 17;
   SM_CYKANJIWINDOW : constant := 18;
   SM_MOUSEPRESENT : constant := 19;
   SM_CYVSCROLL : constant := 20;
   SM_CXHSCROLL : constant := 21;
   SM_DEBUG : constant := 22;
   SM_SWAPBUTTON : constant := 23;
   SM_RESERVED1 : constant := 24;
   SM_RESERVED2 : constant := 25;
   SM_RESERVED3 : constant := 26;
   SM_RESERVED4 : constant := 27;
   SM_CXMIN : constant := 28;
   SM_CYMIN : constant := 29;
   SM_CXSIZE : constant := 30;
   SM_CYSIZE : constant := 31;
   SM_CXFRAME : constant := 32;
   SM_CYFRAME : constant := 33;
   SM_CXMINTRACK : constant := 34;
   SM_CYMINTRACK : constant := 35;
   SM_CXDOUBLECLK : constant := 36;
   SM_CYDOUBLECLK : constant := 37;
   SM_CXICONSPACING : constant := 38;
   SM_CYICONSPACING : constant := 39;
   SM_MENUDROPALIGNMENT : constant := 40;
   SM_PENWINDOWS : constant := 41;
   SM_DBCSENABLED : constant := 42;
   SM_CMOUSEBUTTONS : constant := 43;
   SM_SECURE : constant := 44;
   SM_CXEDGE : constant := 45;
   SM_CYEDGE : constant := 46;
   SM_CXMINSPACING : constant := 47;
   SM_CYMINSPACING : constant := 48;
   SM_CXSMICON : constant := 49;
   SM_CYSMICON : constant := 50;
   SM_CYSMCAPTION : constant := 51;
   SM_CXSMSIZE : constant := 52;
   SM_CYSMSIZE : constant := 53;
   SM_CXMENUSIZE : constant := 54;
   SM_CYMENUSIZE : constant := 55;
   SM_ARRANGE : constant := 56;
   SM_CXMINIMIZED : constant := 57;
   SM_CYMINIMIZED : constant := 58;
   SM_CXMAXTRACK : constant := 59;
   SM_CYMAXTRACK : constant := 60;
   SM_CXMAXIMIZED : constant := 61;
   SM_CYMAXIMIZED : constant := 62;
   SM_NETWORK : constant := 63;
   SM_CLEANBOOT : constant := 67;
   SM_CXDRAG : constant := 68;
   SM_CYDRAG : constant := 69;
   SM_SHOWSOUNDS : constant := 70;
   SM_CXMENUCHECK : constant := 71;
   SM_CYMENUCHECK : constant := 72;
   SM_SLOWMACHINE : constant := 73;
   SM_MIDEASTENABLED : constant := 74;
   SM_MOUSEWHEELPRESENT : constant := 75;
   SM_XVIRTUALSCREEN : constant := 76;
   SM_YVIRTUALSCREEN : constant := 77;
   SM_CXVIRTUALSCREEN : constant := 78;
   SM_CYVIRTUALSCREEN : constant := 79;
   SM_CMONITORS : constant := 80;
   SM_SAMEDISPLAYFORMAT : constant := 81;
   SM_IMMENABLED : constant := 82;
   SM_CXFOCUSBORDER : constant := 83;
   SM_CYFOCUSBORDER : constant := 84;
   SM_TABLETPC : constant := 86;
   SM_MEDIACENTER : constant := 87;
   SM_STARTER : constant := 88;
   SM_SERVERR2 : constant := 89;
   SM_MOUSEHORIZONTALWHEELPRESENT : constant := 91;
   SM_CXPADDEDBORDER : constant := 92;
   SM_DIGITIZER : constant := 94;
   SM_MAXIMUMTOUCHES : constant := 95;
   SM_CMETRICS : constant := 97;
   SM_REMOTESESSION : constant := 16#1000#;
   SM_SHUTTINGDOWN : constant := 16#2000#;
   SM_REMOTECONTROL : constant := 16#2001#;
   SM_CARETBLINKINGENABLED : constant := 16#2002#;
   SM_CONVERTIBLESLATEMODE : constant := 16#2003#;
   SM_SYSTEMDOCKED : constant := 16#2004#;
   PMB_ACTIVE : constant := 16#00000001#;
   MNC_IGNORE : constant := 0;
   MNC_CLOSE : constant := 1;
   MNC_EXECUTE : constant := 2;
   MNC_SELECT : constant := 3;
   MNS_NOCHECK : constant := 16#80000000#;
   MNS_MODELESS : constant := 16#40000000#;
   MNS_DRAGDROP : constant := 16#20000000#;
   MNS_AUTODISMISS : constant := 16#10000000#;
   MNS_NOTIFYBYPOS : constant := 16#08000000#;
   MNS_CHECKORBMP : constant := 16#04000000#;
   MIM_MAXHEIGHT : constant := 16#00000001#;
   MIM_BACKGROUND : constant := 16#00000002#;
   MIM_HELPID : constant := 16#00000004#;
   MIM_MENUDATA : constant := 16#00000008#;
   MIM_STYLE : constant := 16#00000010#;
   MIM_APPLYTOSUBMENUS : constant := 16#80000000#;
   MND_CONTINUE : constant := 0;
   MND_ENDMENU : constant := 1;
   MNGOF_TOPGAP : constant := 16#00000001#;
   MNGOF_BOTTOMGAP : constant := 16#00000002#;
   MNGO_NOINTERFACE : constant := 16#00000000#;
   MNGO_NOERROR : constant := 16#00000001#;
   MIIM_STATE : constant := 16#00000001#;
   MIIM_ID : constant := 16#00000002#;
   MIIM_SUBMENU : constant := 16#00000004#;
   MIIM_CHECKMARKS : constant := 16#00000008#;
   MIIM_TYPE : constant := 16#00000010#;
   MIIM_DATA : constant := 16#00000020#;
   MIIM_STRING : constant := 16#00000040#;
   MIIM_BITMAP : constant := 16#00000080#;
   MIIM_FTYPE : constant := 16#00000100#;
   HBMMENU_CALLBACK : constant := 1;
   HBMMENU_SYSTEM : constant := 1;
   HBMMENU_MBAR_RESTORE : constant := 2;
   HBMMENU_MBAR_MINIMIZE : constant := 3;
   HBMMENU_MBAR_CLOSE : constant := 5;
   HBMMENU_MBAR_CLOSE_D : constant := 6;
   HBMMENU_MBAR_MINIMIZE_D : constant := 7;
   HBMMENU_POPUP_CLOSE : constant := 8;
   HBMMENU_POPUP_RESTORE : constant := 9;
   HBMMENU_POPUP_MAXIMIZE : constant := 10;
   HBMMENU_POPUP_MINIMIZE : constant := 11;
   GMDI_USEDISABLED : constant := 16#0001#;
   GMDI_GOINTOPOPUPS : constant := 16#0002#;
   TPM_LEFTBUTTON : constant := 16#0000#;
   TPM_RIGHTBUTTON : constant := 16#0002#;
   TPM_LEFTALIGN : constant := 16#0000#;
   TPM_CENTERALIGN : constant := 16#0004#;
   TPM_RIGHTALIGN : constant := 16#0008#;
   TPM_TOPALIGN : constant := 16#0000#;
   TPM_VCENTERALIGN : constant := 16#0010#;
   TPM_BOTTOMALIGN : constant := 16#0020#;
   TPM_HORIZONTAL : constant := 16#0000#;
   TPM_VERTICAL : constant := 16#0040#;
   TPM_NONOTIFY : constant := 16#0080#;
   TPM_RETURNCMD : constant := 16#0100#;
   TPM_RECURSE : constant := 16#0001#;
   TPM_HORPOSANIMATION : constant := 16#0400#;
   TPM_HORNEGANIMATION : constant := 16#0800#;
   TPM_VERPOSANIMATION : constant := 16#1000#;
   TPM_VERNEGANIMATION : constant := 16#2000#;
   TPM_NOANIMATION : constant := 16#4000#;
   TPM_LAYOUTRTL : constant := 16#8000#;
   TPM_WORKAREA : constant := 16#10000#;
   DOF_EXECUTABLE : constant := 16#8001#;
   DOF_DOCUMENT : constant := 16#8002#;
   DOF_DIRECTORY : constant := 16#8003#;
   DOF_MULTIPLE : constant := 16#8004#;
   DOF_PROGMAN : constant := 16#0001#;
   DOF_SHELLDATA : constant := 16#0002#;
   DO_DROPFILE : constant := 16#454C4946#;
   DO_PRINTFILE : constant := 16#544E5250#;
   DT_TOP : constant := 16#00000000#;
   DT_LEFT : constant := 16#00000000#;
   DT_CENTER : constant := 16#00000001#;
   DT_RIGHT : constant := 16#00000002#;
   DT_VCENTER : constant := 16#00000004#;
   DT_BOTTOM : constant := 16#00000008#;
   DT_WORDBREAK : constant := 16#00000010#;
   DT_SINGLELINE : constant := 16#00000020#;
   DT_EXPANDTABS : constant := 16#00000040#;
   DT_TABSTOP : constant := 16#00000080#;
   DT_NOCLIP : constant := 16#00000100#;
   DT_EXTERNALLEADING : constant := 16#00000200#;
   DT_CALCRECT : constant := 16#00000400#;
   DT_NOPREFIX : constant := 16#00000800#;
   DT_INTERNAL : constant := 16#00001000#;
   DT_EDITCONTROL : constant := 16#00002000#;
   DT_PATH_ELLIPSIS : constant := 16#00004000#;
   DT_END_ELLIPSIS : constant := 16#00008000#;
   DT_MODIFYSTRING : constant := 16#00010000#;
   DT_RTLREADING : constant := 16#00020000#;
   DT_WORD_ELLIPSIS : constant := 16#00040000#;
   DT_NOFULLWIDTHCHARBREAK : constant := 16#00080000#;
   DT_HIDEPREFIX : constant := 16#00100000#;
   DT_PREFIXONLY : constant := 16#00200000#;
   DST_COMPLEX : constant := 16#0000#;
   DST_TEXT : constant := 16#0001#;
   DST_PREFIXTEXT : constant := 16#0002#;
   DST_ICON : constant := 16#0003#;
   DST_BITMAP : constant := 16#0004#;
   DSS_NORMAL : constant := 16#0000#;
   DSS_UNION : constant := 16#0010#;
   DSS_DISABLED : constant := 16#0020#;
   DSS_MONO : constant := 16#0080#;
   DSS_HIDEPREFIX : constant := 16#0200#;
   DSS_PREFIXONLY : constant := 16#0400#;
   DSS_RIGHT : constant := 16#8000#;
   ASFW_ANY : constant := Interfaces.C.unsigned_long'mod(-1);
   LSFW_LOCK : constant := 1;
   LSFW_UNLOCK : constant := 2;
   DCX_WINDOW : constant := 16#00000001#;
   DCX_CACHE : constant := 16#00000002#;
   DCX_NORESETATTRS : constant := 16#00000004#;
   DCX_CLIPCHILDREN : constant := 16#00000008#;
   DCX_CLIPSIBLINGS : constant := 16#00000010#;
   DCX_PARENTCLIP : constant := 16#00000020#;
   DCX_EXCLUDERGN : constant := 16#00000040#;
   DCX_INTERSECTRGN : constant := 16#00000080#;
   DCX_EXCLUDEUPDATE : constant := 16#00000100#;
   DCX_INTERSECTUPDATE : constant := 16#00000200#;
   DCX_LOCKWINDOWUPDATE : constant := 16#00000400#;
   DCX_VALIDATE : constant := 16#00200000#;
   RDW_INVALIDATE : constant := 16#0001#;
   RDW_INTERNALPAINT : constant := 16#0002#;
   RDW_ERASE : constant := 16#0004#;
   RDW_VALIDATE : constant := 16#0008#;
   RDW_NOINTERNALPAINT : constant := 16#0010#;
   RDW_NOERASE : constant := 16#0020#;
   RDW_NOCHILDREN : constant := 16#0040#;
   RDW_ALLCHILDREN : constant := 16#0080#;
   RDW_UPDATENOW : constant := 16#0100#;
   RDW_ERASENOW : constant := 16#0200#;
   RDW_FRAME : constant := 16#0400#;
   RDW_NOFRAME : constant := 16#0800#;
   SW_SCROLLCHILDREN : constant := 16#0001#;
   SW_INVALIDATE : constant := 16#0002#;
   SW_ERASE : constant := 16#0004#;
   SW_SMOOTHSCROLL : constant := 16#0010#;
   ESB_ENABLE_BOTH : constant := 16#0000#;
   ESB_DISABLE_BOTH : constant := 16#0003#;
   ESB_DISABLE_LEFT : constant := 16#0001#;
   ESB_DISABLE_RIGHT : constant := 16#0002#;
   ESB_DISABLE_UP : constant := 16#0001#;
   ESB_DISABLE_DOWN : constant := 16#0002#;
   HELPINFO_WINDOW : constant := 16#0001#;
   HELPINFO_MENUITEM : constant := 16#0002#;
   MB_OK : constant := 16#00000000#;
   MB_OKCANCEL : constant := 16#00000001#;
   MB_ABORTRETRYIGNORE : constant := 16#00000002#;
   MB_YESNOCANCEL : constant := 16#00000003#;
   MB_YESNO : constant := 16#00000004#;
   MB_RETRYCANCEL : constant := 16#00000005#;
   MB_CANCELTRYCONTINUE : constant := 16#00000006#;
   MB_ICONHAND : constant := 16#00000010#;
   MB_ICONQUESTION : constant := 16#00000020#;
   MB_ICONEXCLAMATION : constant := 16#00000030#;
   MB_ICONASTERISK : constant := 16#00000040#;
   MB_USERICON : constant := 16#00000080#;
   MB_DEFBUTTON1 : constant := 16#00000000#;
   MB_DEFBUTTON2 : constant := 16#00000100#;
   MB_DEFBUTTON3 : constant := 16#00000200#;
   MB_DEFBUTTON4 : constant := 16#00000300#;
   MB_APPLMODAL : constant := 16#00000000#;
   MB_SYSTEMMODAL : constant := 16#00001000#;
   MB_TASKMODAL : constant := 16#00002000#;
   MB_HELP : constant := 16#00004000#;
   MB_NOFOCUS : constant := 16#00008000#;
   MB_SETFOREGROUND : constant := 16#00010000#;
   MB_DEFAULT_DESKTOP_ONLY : constant := 16#00020000#;
   MB_TOPMOST : constant := 16#00040000#;
   MB_RIGHT : constant := 16#00080000#;
   MB_RTLREADING : constant := 16#00100000#;
   MB_SERVICE_NOTIFICATION : constant := 16#00200000#;
   MB_SERVICE_NOTIFICATION_NT3X : constant := 16#00040000#;
   MB_TYPEMASK : constant := 16#0000000F#;
   MB_ICONMASK : constant := 16#000000F0#;
   MB_DEFMASK : constant := 16#00000F00#;
   MB_MODEMASK : constant := 16#00003000#;
   MB_MISCMASK : constant := 16#0000C000#;
   CWP_ALL : constant := 16#0000#;
   CWP_SKIPINVISIBLE : constant := 16#0001#;
   CWP_SKIPDISABLED : constant := 16#0002#;
   CWP_SKIPTRANSPARENT : constant := 16#0004#;
   CTLCOLOR_MSGBOX : constant := 0;
   CTLCOLOR_EDIT : constant := 1;
   CTLCOLOR_LISTBOX : constant := 2;
   CTLCOLOR_BTN : constant := 3;
   CTLCOLOR_DLG : constant := 4;
   CTLCOLOR_SCROLLBAR : constant := 5;
   CTLCOLOR_STATIC : constant := 6;
   CTLCOLOR_MAX : constant := 7;
   COLOR_SCROLLBAR : constant := 0;
   COLOR_BACKGROUND : constant := 1;
   COLOR_ACTIVECAPTION : constant := 2;
   COLOR_INACTIVECAPTION : constant := 3;
   COLOR_MENU : constant := 4;
   COLOR_WINDOW : constant := 5;
   COLOR_WINDOWFRAME : constant := 6;
   COLOR_MENUTEXT : constant := 7;
   COLOR_WINDOWTEXT : constant := 8;
   COLOR_CAPTIONTEXT : constant := 9;
   COLOR_ACTIVEBORDER : constant := 10;
   COLOR_INACTIVEBORDER : constant := 11;
   COLOR_APPWORKSPACE : constant := 12;
   COLOR_HIGHLIGHT : constant := 13;
   COLOR_HIGHLIGHTTEXT : constant := 14;
   COLOR_BTNFACE : constant := 15;
   COLOR_BTNSHADOW : constant := 16;
   COLOR_GRAYTEXT : constant := 17;
   COLOR_BTNTEXT : constant := 18;
   COLOR_INACTIVECAPTIONTEXT : constant := 19;
   COLOR_BTNHIGHLIGHT : constant := 20;
   COLOR_3DDKSHADOW : constant := 21;
   COLOR_3DLIGHT : constant := 22;
   COLOR_INFOTEXT : constant := 23;
   COLOR_INFOBK : constant := 24;
   COLOR_HOTLIGHT : constant := 26;
   COLOR_GRADIENTACTIVECAPTION : constant := 27;
   COLOR_GRADIENTINACTIVECAPTION : constant := 28;
   COLOR_MENUHILIGHT : constant := 29;
   COLOR_MENUBAR : constant := 30;
   GW_HWNDFIRST : constant := 0;
   GW_HWNDLAST : constant := 1;
   GW_HWNDNEXT : constant := 2;
   GW_HWNDPREV : constant := 3;
   GW_OWNER : constant := 4;
   GW_CHILD : constant := 5;
   GW_ENABLEDPOPUP : constant := 6;
   GW_MAX : constant := 6;
   MF_INSERT : constant := 16#00000000#;
   MF_CHANGE : constant := 16#00000080#;
   MF_APPEND : constant := 16#00000100#;
   MF_DELETE : constant := 16#00000200#;
   MF_REMOVE : constant := 16#00001000#;
   MF_BYCOMMAND : constant := 16#00000000#;
   MF_BYPOSITION : constant := 16#00000400#;
   MF_SEPARATOR : constant := 16#00000800#;
   MF_ENABLED : constant := 16#00000000#;
   MF_GRAYED : constant := 16#00000001#;
   MF_DISABLED : constant := 16#00000002#;
   MF_UNCHECKED : constant := 16#00000000#;
   MF_CHECKED : constant := 16#00000008#;
   MF_USECHECKBITMAPS : constant := 16#00000200#;
   MF_STRING : constant := 16#00000000#;
   MF_BITMAP : constant := 16#00000004#;
   MF_OWNERDRAW : constant := 16#00000100#;
   MF_POPUP : constant := 16#00000010#;
   MF_MENUBARBREAK : constant := 16#00000020#;
   MF_MENUBREAK : constant := 16#00000040#;
   MF_UNHILITE : constant := 16#00000000#;
   MF_HILITE : constant := 16#00000080#;
   MF_DEFAULT : constant := 16#00001000#;
   MF_SYSMENU : constant := 16#00002000#;
   MF_HELP : constant := 16#00004000#;
   MF_RIGHTJUSTIFY : constant := 16#00004000#;
   MF_MOUSESELECT : constant := 16#00008000#;
   MF_END : constant := 16#00000080#;
   MFT_RADIOCHECK : constant := 16#00000200#;
   MFT_RIGHTORDER : constant := 16#00002000#;
   MFS_GRAYED : constant := 16#00000003#;
   SC_SIZE : constant := 16#F000#;
   SC_MOVE : constant := 16#F010#;
   SC_MINIMIZE : constant := 16#F020#;
   SC_MAXIMIZE : constant := 16#F030#;
   SC_NEXTWINDOW : constant := 16#F040#;
   SC_PREVWINDOW : constant := 16#F050#;
   SC_CLOSE : constant := 16#F060#;
   SC_VSCROLL : constant := 16#F070#;
   SC_HSCROLL : constant := 16#F080#;
   SC_MOUSEMENU : constant := 16#F090#;
   SC_KEYMENU : constant := 16#F100#;
   SC_ARRANGE : constant := 16#F110#;
   SC_RESTORE : constant := 16#F120#;
   SC_TASKLIST : constant := 16#F130#;
   SC_SCREENSAVE : constant := 16#F140#;
   SC_HOTKEY : constant := 16#F150#;
   SC_DEFAULT : constant := 16#F160#;
   SC_MONITORPOWER : constant := 16#F170#;
   SC_CONTEXTHELP : constant := 16#F180#;
   SC_SEPARATOR : constant := 16#F00F#;
   SCF_ISSECURE : constant := 16#00000001#;
   IDC_ARROW : constant := 32512;
   IDC_IBEAM : constant := 32513;
   IDC_WAIT : constant := 32514;
   IDC_CROSS : constant := 32515;
   IDC_UPARROW : constant := 32516;
   IDC_SIZE : constant := 32640;
   IDC_ICON : constant := 32641;
   IDC_SIZENWSE : constant := 32642;
   IDC_SIZENESW : constant := 32643;
   IDC_SIZEWE : constant := 32644;
   IDC_SIZENS : constant := 32645;
   IDC_SIZEALL : constant := 32646;
   IDC_NO : constant := 32648;
   IDC_HAND : constant := 32649;
   IDC_APPSTARTING : constant := 32650;
   IDC_HELP : constant := 32651;
   IDC_PIN : constant := 32671;
   IDC_PERSON : constant := 32672;
   IMAGE_BITMAP : constant := 0;
   IMAGE_ICON : constant := 1;
   IMAGE_CURSOR : constant := 2;
   IMAGE_ENHMETAFILE : constant := 3;
   LR_DEFAULTCOLOR : constant := 16#00000000#;
   LR_MONOCHROME : constant := 16#00000001#;
   LR_COLOR : constant := 16#00000002#;
   LR_COPYRETURNORG : constant := 16#00000004#;
   LR_COPYDELETEORG : constant := 16#00000008#;
   LR_LOADFROMFILE : constant := 16#00000010#;
   LR_LOADTRANSPARENT : constant := 16#00000020#;
   LR_DEFAULTSIZE : constant := 16#00000040#;
   LR_VGACOLOR : constant := 16#00000080#;
   LR_LOADMAP3DCOLORS : constant := 16#00001000#;
   LR_CREATEDIBSECTION : constant := 16#00002000#;
   LR_COPYFROMRESOURCE : constant := 16#00004000#;
   LR_SHARED : constant := 16#00008000#;
   DI_MASK : constant := 16#0001#;
   DI_IMAGE : constant := 16#0002#;
   DI_NORMAL : constant := 16#0003#;
   DI_COMPAT : constant := 16#0004#;
   DI_DEFAULTSIZE : constant := 16#0008#;
   DI_NOMIRROR : constant := 16#0010#;
   RES_ICON : constant := 1;
   RES_CURSOR : constant := 2;
   ORD_LANGDRIVER : constant := 1;
   IDI_APPLICATION : constant := 32512;
   IDI_HAND : constant := 32513;
   IDI_QUESTION : constant := 32514;
   IDI_EXCLAMATION : constant := 32515;
   IDI_ASTERISK : constant := 32516;
   IDI_WINLOGO : constant := 32517;
   IDI_SHIELD : constant := 32518;
   IDOK : constant := 1;
   IDCANCEL : constant := 2;
   IDABORT : constant := 3;
   IDRETRY : constant := 4;
   IDIGNORE : constant := 5;
   IDYES : constant := 6;
   IDNO : constant := 7;
   IDCLOSE : constant := 8;
   IDHELP : constant := 9;
   IDTRYAGAIN : constant := 10;
   IDCONTINUE : constant := 11;
   IDTIMEOUT : constant := 32000;
   ES_LEFT : constant := 16#0000#;
   ES_CENTER : constant := 16#0001#;
   ES_RIGHT : constant := 16#0002#;
   ES_MULTILINE : constant := 16#0004#;
   ES_UPPERCASE : constant := 16#0008#;
   ES_LOWERCASE : constant := 16#0010#;
   ES_PASSWORD : constant := 16#0020#;
   ES_AUTOVSCROLL : constant := 16#0040#;
   ES_AUTOHSCROLL : constant := 16#0080#;
   ES_NOHIDESEL : constant := 16#0100#;
   ES_OEMCONVERT : constant := 16#0400#;
   ES_READONLY : constant := 16#0800#;
   ES_WANTRETURN : constant := 16#1000#;
   ES_NUMBER : constant := 16#2000#;
   EN_SETFOCUS : constant := 16#0100#;
   EN_KILLFOCUS : constant := 16#0200#;
   EN_CHANGE : constant := 16#0300#;
   EN_UPDATE : constant := 16#0400#;
   EN_ERRSPACE : constant := 16#0500#;
   EN_MAXTEXT : constant := 16#0501#;
   EN_HSCROLL : constant := 16#0601#;
   EN_VSCROLL : constant := 16#0602#;
   EN_ALIGN_LTR_EC : constant := 16#0700#;
   EN_ALIGN_RTL_EC : constant := 16#0701#;
   EN_BEFORE_PASTE : constant := 16#0800#;
   EN_AFTER_PASTE : constant := 16#0801#;
   EC_LEFTMARGIN : constant := 16#0001#;
   EC_RIGHTMARGIN : constant := 16#0002#;
   EC_USEFONTINFO : constant := 16#ffff#;
   EMSIS_COMPOSITIONSTRING : constant := 16#0001#;
   EIMES_GETCOMPSTRATONCE : constant := 16#0001#;
   EIMES_CANCELCOMPSTRINFOCUS : constant := 16#0002#;
   EIMES_COMPLETECOMPSTRKILLFOCUS : constant := 16#0004#;
   EM_GETSEL : constant := 16#00B0#;
   EM_SETSEL : constant := 16#00B1#;
   EM_GETRECT : constant := 16#00B2#;
   EM_SETRECT : constant := 16#00B3#;
   EM_SETRECTNP : constant := 16#00B4#;
   EM_SCROLL : constant := 16#00B5#;
   EM_LINESCROLL : constant := 16#00B6#;
   EM_SCROLLCARET : constant := 16#00B7#;
   EM_GETMODIFY : constant := 16#00B8#;
   EM_SETMODIFY : constant := 16#00B9#;
   EM_GETLINECOUNT : constant := 16#00BA#;
   EM_LINEINDEX : constant := 16#00BB#;
   EM_SETHANDLE : constant := 16#00BC#;
   EM_GETHANDLE : constant := 16#00BD#;
   EM_GETTHUMB : constant := 16#00BE#;
   EM_LINELENGTH : constant := 16#00C1#;
   EM_REPLACESEL : constant := 16#00C2#;
   EM_GETLINE : constant := 16#00C4#;
   EM_LIMITTEXT : constant := 16#00C5#;
   EM_CANUNDO : constant := 16#00C6#;
   EM_UNDO : constant := 16#00C7#;
   EM_FMTLINES : constant := 16#00C8#;
   EM_LINEFROMCHAR : constant := 16#00C9#;
   EM_SETTABSTOPS : constant := 16#00CB#;
   EM_SETPASSWORDCHAR : constant := 16#00CC#;
   EM_EMPTYUNDOBUFFER : constant := 16#00CD#;
   EM_GETFIRSTVISIBLELINE : constant := 16#00CE#;
   EM_SETREADONLY : constant := 16#00CF#;
   EM_SETWORDBREAKPROC : constant := 16#00D0#;
   EM_GETWORDBREAKPROC : constant := 16#00D1#;
   EM_GETPASSWORDCHAR : constant := 16#00D2#;
   EM_SETMARGINS : constant := 16#00D3#;
   EM_GETMARGINS : constant := 16#00D4#;
   EM_GETLIMITTEXT : constant := 16#00D5#;
   EM_POSFROMCHAR : constant := 16#00D6#;
   EM_CHARFROMPOS : constant := 16#00D7#;
   EM_SETIMESTATUS : constant := 16#00D8#;
   EM_GETIMESTATUS : constant := 16#00D9#;
   EM_ENABLEFEATURE : constant := 16#00DA#;
   WB_LEFT : constant := 0;
   WB_RIGHT : constant := 1;
   WB_ISDELIMITER : constant := 2;
   BS_PUSHBUTTON : constant := 16#00000000#;
   BS_DEFPUSHBUTTON : constant := 16#00000001#;
   BS_CHECKBOX : constant := 16#00000002#;
   BS_AUTOCHECKBOX : constant := 16#00000003#;
   BS_RADIOBUTTON : constant := 16#00000004#;
   BS_3STATE : constant := 16#00000005#;
   BS_AUTO3STATE : constant := 16#00000006#;
   BS_GROUPBOX : constant := 16#00000007#;
   BS_USERBUTTON : constant := 16#00000008#;
   BS_AUTORADIOBUTTON : constant := 16#00000009#;
   BS_PUSHBOX : constant := 16#0000000A#;
   BS_OWNERDRAW : constant := 16#0000000B#;
   BS_TYPEMASK : constant := 16#0000000F#;
   BS_LEFTTEXT : constant := 16#00000020#;
   BS_TEXT : constant := 16#00000000#;
   BS_ICON : constant := 16#00000040#;
   BS_BITMAP : constant := 16#00000080#;
   BS_LEFT : constant := 16#00000100#;
   BS_RIGHT : constant := 16#00000200#;
   BS_CENTER : constant := 16#00000300#;
   BS_TOP : constant := 16#00000400#;
   BS_BOTTOM : constant := 16#00000800#;
   BS_VCENTER : constant := 16#00000C00#;
   BS_PUSHLIKE : constant := 16#00001000#;
   BS_MULTILINE : constant := 16#00002000#;
   BS_NOTIFY : constant := 16#00004000#;
   BS_FLAT : constant := 16#00008000#;
   BN_CLICKED : constant := 0;
   BN_PAINT : constant := 1;
   BN_HILITE : constant := 2;
   BN_UNHILITE : constant := 3;
   BN_DISABLE : constant := 4;
   BN_DOUBLECLICKED : constant := 5;
   BN_SETFOCUS : constant := 6;
   BN_KILLFOCUS : constant := 7;
   BM_GETCHECK : constant := 16#00F0#;
   BM_SETCHECK : constant := 16#00F1#;
   BM_GETSTATE : constant := 16#00F2#;
   BM_SETSTATE : constant := 16#00F3#;
   BM_SETSTYLE : constant := 16#00F4#;
   BM_CLICK : constant := 16#00F5#;
   BM_GETIMAGE : constant := 16#00F6#;
   BM_SETIMAGE : constant := 16#00F7#;
   BM_SETDONTCLICK : constant := 16#00F8#;
   BST_UNCHECKED : constant := 16#0000#;
   BST_CHECKED : constant := 16#0001#;
   BST_INDETERMINATE : constant := 16#0002#;
   BST_PUSHED : constant := 16#0004#;
   BST_FOCUS : constant := 16#0008#;
   SS_LEFT : constant := 16#00000000#;
   SS_CENTER : constant := 16#00000001#;
   SS_RIGHT : constant := 16#00000002#;
   SS_ICON : constant := 16#00000003#;
   SS_BLACKRECT : constant := 16#00000004#;
   SS_GRAYRECT : constant := 16#00000005#;
   SS_WHITERECT : constant := 16#00000006#;
   SS_BLACKFRAME : constant := 16#00000007#;
   SS_GRAYFRAME : constant := 16#00000008#;
   SS_WHITEFRAME : constant := 16#00000009#;
   SS_USERITEM : constant := 16#0000000A#;
   SS_SIMPLE : constant := 16#0000000B#;
   SS_LEFTNOWORDWRAP : constant := 16#0000000C#;
   SS_OWNERDRAW : constant := 16#0000000D#;
   SS_BITMAP : constant := 16#0000000E#;
   SS_ENHMETAFILE : constant := 16#0000000F#;
   SS_ETCHEDHORZ : constant := 16#00000010#;
   SS_ETCHEDVERT : constant := 16#00000011#;
   SS_ETCHEDFRAME : constant := 16#00000012#;
   SS_TYPEMASK : constant := 16#0000001F#;
   SS_REALSIZECONTROL : constant := 16#00000040#;
   SS_NOPREFIX : constant := 16#00000080#;
   SS_NOTIFY : constant := 16#00000100#;
   SS_CENTERIMAGE : constant := 16#00000200#;
   SS_RIGHTJUST : constant := 16#00000400#;
   SS_REALSIZEIMAGE : constant := 16#00000800#;
   SS_SUNKEN : constant := 16#00001000#;
   SS_EDITCONTROL : constant := 16#00002000#;
   SS_ENDELLIPSIS : constant := 16#00004000#;
   SS_PATHELLIPSIS : constant := 16#00008000#;
   SS_WORDELLIPSIS : constant := 16#0000C000#;
   SS_ELLIPSISMASK : constant := 16#0000C000#;
   STM_SETICON : constant := 16#0170#;
   STM_GETICON : constant := 16#0171#;
   STM_SETIMAGE : constant := 16#0172#;
   STM_GETIMAGE : constant := 16#0173#;
   STN_CLICKED : constant := 0;
   STN_DBLCLK : constant := 1;
   STN_ENABLE : constant := 2;
   STN_DISABLE : constant := 3;
   STM_MSGMAX : constant := 16#0174#;
   DWL_MSGRESULT : constant := 0;
   DWL_DLGPROC : constant := 4;
   DWL_USER : constant := 8;
   DWLP_MSGRESULT : constant := 0;
   DDL_READWRITE : constant := 16#0000#;
   DDL_READONLY : constant := 16#0001#;
   DDL_HIDDEN : constant := 16#0002#;
   DDL_SYSTEM : constant := 16#0004#;
   DDL_DIRECTORY : constant := 16#0010#;
   DDL_ARCHIVE : constant := 16#0020#;
   DDL_POSTMSGS : constant := 16#2000#;
   DDL_DRIVES : constant := 16#4000#;
   DDL_EXCLUSIVE : constant := 16#8000#;
   DS_ABSALIGN : constant := 16#01#;
   DS_SYSMODAL : constant := 16#02#;
   DS_LOCALEDIT : constant := 16#20#;
   DS_SETFONT : constant := 16#40#;
   DS_MODALFRAME : constant := 16#80#;
   DS_NOIDLEMSG : constant := 16#100#;
   DS_SETFOREGROUND : constant := 16#200#;
   DS_3DLOOK : constant := 16#0004#;
   DS_FIXEDSYS : constant := 16#0008#;
   DS_NOFAILCREATE : constant := 16#0010#;
   DS_CONTROL : constant := 16#0400#;
   DS_CENTER : constant := 16#0800#;
   DS_CENTERMOUSE : constant := 16#1000#;
   DS_CONTEXTHELP : constant := 16#2000#;
   DS_SHELLFONT : constant := ( Interfaces.C.Unsigned( DS_SETFONT )
       or Interfaces.C.Unsigned( DS_FIXEDSYS ) );
   DM_GETDEFID : constant := WM_USER + 0;
   DM_SETDEFID : constant := WM_USER + 1;
   DM_REPOSITION : constant := WM_USER + 2;
   DC_HASDEFID : constant := 16#534B#;
   DLGC_WANTARROWS : constant := 16#0001#;
   DLGC_WANTTAB : constant := 16#0002#;
   DLGC_WANTALLKEYS : constant := 16#0004#;
   DLGC_WANTMESSAGE : constant := 16#0004#;
   DLGC_HASSETSEL : constant := 16#0008#;
   DLGC_DEFPUSHBUTTON : constant := 16#0010#;
   DLGC_UNDEFPUSHBUTTON : constant := 16#0020#;
   DLGC_RADIOBUTTON : constant := 16#0040#;
   DLGC_WANTCHARS : constant := 16#0080#;
   DLGC_STATIC : constant := 16#0100#;
   DLGC_BUTTON : constant := 16#2000#;
   LB_CTLCODE : constant := 0;
   LB_OKAY : constant := 0;
   LB_ERR : constant := -1;
   LB_ERRSPACE : constant := -2;
   LBN_ERRSPACE : constant := -2;
   LBN_SELCHANGE : constant := 1;
   LBN_DBLCLK : constant := 2;
   LBN_SELCANCEL : constant := 3;
   LBN_SETFOCUS : constant := 4;
   LBN_KILLFOCUS : constant := 5;
   LB_ADDSTRING : constant := 16#0180#;
   LB_INSERTSTRING : constant := 16#0181#;
   LB_DELETESTRING : constant := 16#0182#;
   LB_SELITEMRANGEEX : constant := 16#0183#;
   LB_RESETCONTENT : constant := 16#0184#;
   LB_SETSEL : constant := 16#0185#;
   LB_SETCURSEL : constant := 16#0186#;
   LB_GETSEL : constant := 16#0187#;
   LB_GETCURSEL : constant := 16#0188#;
   LB_GETTEXT : constant := 16#0189#;
   LB_GETTEXTLEN : constant := 16#018A#;
   LB_GETCOUNT : constant := 16#018B#;
   LB_SELECTSTRING : constant := 16#018C#;
   LB_DIR : constant := 16#018D#;
   LB_GETTOPINDEX : constant := 16#018E#;
   LB_FINDSTRING : constant := 16#018F#;
   LB_GETSELCOUNT : constant := 16#0190#;
   LB_GETSELITEMS : constant := 16#0191#;
   LB_SETTABSTOPS : constant := 16#0192#;
   LB_GETHORIZONTALEXTENT : constant := 16#0193#;
   LB_SETHORIZONTALEXTENT : constant := 16#0194#;
   LB_SETCOLUMNWIDTH : constant := 16#0195#;
   LB_ADDFILE : constant := 16#0196#;
   LB_SETTOPINDEX : constant := 16#0197#;
   LB_GETITEMRECT : constant := 16#0198#;
   LB_GETITEMDATA : constant := 16#0199#;
   LB_SETITEMDATA : constant := 16#019A#;
   LB_SELITEMRANGE : constant := 16#019B#;
   LB_SETANCHORINDEX : constant := 16#019C#;
   LB_GETANCHORINDEX : constant := 16#019D#;
   LB_SETCARETINDEX : constant := 16#019E#;
   LB_GETCARETINDEX : constant := 16#019F#;
   LB_SETITEMHEIGHT : constant := 16#01A0#;
   LB_GETITEMHEIGHT : constant := 16#01A1#;
   LB_FINDSTRINGEXACT : constant := 16#01A2#;
   LB_SETLOCALE : constant := 16#01A5#;
   LB_GETLOCALE : constant := 16#01A6#;
   LB_SETCOUNT : constant := 16#01A7#;
   LB_INITSTORAGE : constant := 16#01A8#;
   LB_ITEMFROMPOINT : constant := 16#01A9#;
   LB_GETLISTBOXINFO : constant := 16#01B2#;
   LB_MSGMAX : constant := 16#01B3#;
   LBS_NOTIFY : constant := 16#0001#;
   LBS_SORT : constant := 16#0002#;
   LBS_NOREDRAW : constant := 16#0004#;
   LBS_MULTIPLESEL : constant := 16#0008#;
   LBS_OWNERDRAWFIXED : constant := 16#0010#;
   LBS_OWNERDRAWVARIABLE : constant := 16#0020#;
   LBS_HASSTRINGS : constant := 16#0040#;
   LBS_USETABSTOPS : constant := 16#0080#;
   LBS_NOINTEGRALHEIGHT : constant := 16#0100#;
   LBS_MULTICOLUMN : constant := 16#0200#;
   LBS_WANTKEYBOARDINPUT : constant := 16#0400#;
   LBS_EXTENDEDSEL : constant := 16#0800#;
   LBS_DISABLENOSCROLL : constant := 16#1000#;
   LBS_NODATA : constant := 16#2000#;
   LBS_NOSEL : constant := 16#4000#;
   LBS_COMBOBOX : constant := 16#8000#;
   LBS_STANDARD : constant := ( Interfaces.C.Unsigned( LBS_NOTIFY )
       or Interfaces.C.Unsigned( LBS_SORT )
       or Interfaces.C.Unsigned( WS_VSCROLL )
       or Interfaces.C.Unsigned( WS_BORDER ) );
   CB_OKAY : constant := 0;
   CB_ERR : constant := -1;
   CB_ERRSPACE : constant := -2;
   CBN_ERRSPACE : constant := -1;
   CBN_SELCHANGE : constant := 1;
   CBN_DBLCLK : constant := 2;
   CBN_SETFOCUS : constant := 3;
   CBN_KILLFOCUS : constant := 4;
   CBN_EDITCHANGE : constant := 5;
   CBN_EDITUPDATE : constant := 6;
   CBN_DROPDOWN : constant := 7;
   CBN_CLOSEUP : constant := 8;
   CBN_SELENDOK : constant := 9;
   CBN_SELENDCANCEL : constant := 10;
   CBS_SIMPLE : constant := 16#0001#;
   CBS_DROPDOWN : constant := 16#0002#;
   CBS_DROPDOWNLIST : constant := 16#0003#;
   CBS_OWNERDRAWFIXED : constant := 16#0010#;
   CBS_OWNERDRAWVARIABLE : constant := 16#0020#;
   CBS_AUTOHSCROLL : constant := 16#0040#;
   CBS_OEMCONVERT : constant := 16#0080#;
   CBS_SORT : constant := 16#0100#;
   CBS_HASSTRINGS : constant := 16#0200#;
   CBS_NOINTEGRALHEIGHT : constant := 16#0400#;
   CBS_DISABLENOSCROLL : constant := 16#0800#;
   CBS_UPPERCASE : constant := 16#2000#;
   CBS_LOWERCASE : constant := 16#4000#;
   CB_GETEDITSEL : constant := 16#0140#;
   CB_LIMITTEXT : constant := 16#0141#;
   CB_SETEDITSEL : constant := 16#0142#;
   CB_ADDSTRING : constant := 16#0143#;
   CB_DELETESTRING : constant := 16#0144#;
   CB_DIR : constant := 16#0145#;
   CB_GETCOUNT : constant := 16#0146#;
   CB_GETCURSEL : constant := 16#0147#;
   CB_GETLBTEXT : constant := 16#0148#;
   CB_GETLBTEXTLEN : constant := 16#0149#;
   CB_INSERTSTRING : constant := 16#014A#;
   CB_RESETCONTENT : constant := 16#014B#;
   CB_FINDSTRING : constant := 16#014C#;
   CB_SELECTSTRING : constant := 16#014D#;
   CB_SETCURSEL : constant := 16#014E#;
   CB_SHOWDROPDOWN : constant := 16#014F#;
   CB_GETITEMDATA : constant := 16#0150#;
   CB_SETITEMDATA : constant := 16#0151#;
   CB_GETDROPPEDCONTROLRECT : constant := 16#0152#;
   CB_SETITEMHEIGHT : constant := 16#0153#;
   CB_GETITEMHEIGHT : constant := 16#0154#;
   CB_SETEXTENDEDUI : constant := 16#0155#;
   CB_GETEXTENDEDUI : constant := 16#0156#;
   CB_GETDROPPEDSTATE : constant := 16#0157#;
   CB_FINDSTRINGEXACT : constant := 16#0158#;
   CB_SETLOCALE : constant := 16#0159#;
   CB_GETLOCALE : constant := 16#015A#;
   CB_GETTOPINDEX : constant := 16#015b#;
   CB_SETTOPINDEX : constant := 16#015c#;
   CB_GETHORIZONTALEXTENT : constant := 16#015d#;
   CB_SETHORIZONTALEXTENT : constant := 16#015e#;
   CB_GETDROPPEDWIDTH : constant := 16#015f#;
   CB_SETDROPPEDWIDTH : constant := 16#0160#;
   CB_INITSTORAGE : constant := 16#0161#;
   CB_GETCOMBOBOXINFO : constant := 16#0164#;
   CB_MSGMAX : constant := 16#0165#;
   SBS_HORZ : constant := 16#0000#;
   SBS_VERT : constant := 16#0001#;
   SBS_TOPALIGN : constant := 16#0002#;
   SBS_LEFTALIGN : constant := 16#0002#;
   SBS_BOTTOMALIGN : constant := 16#0004#;
   SBS_RIGHTALIGN : constant := 16#0004#;
   SBS_SIZEBOXTOPLEFTALIGN : constant := 16#0002#;
   SBS_SIZEBOXBOTTOMRIGHTALIGN : constant := 16#0004#;
   SBS_SIZEBOX : constant := 16#0008#;
   SBS_SIZEGRIP : constant := 16#0010#;
   SBM_SETPOS : constant := 16#00E0#;
   SBM_GETPOS : constant := 16#00E1#;
   SBM_SETRANGE : constant := 16#00E2#;
   SBM_SETRANGEREDRAW : constant := 16#00E6#;
   SBM_GETRANGE : constant := 16#00E3#;
   SBM_ENABLE_ARROWS : constant := 16#00E4#;
   SBM_SETSCROLLINFO : constant := 16#00E9#;
   SBM_GETSCROLLINFO : constant := 16#00EA#;
   SBM_GETSCROLLBARINFO : constant := 16#00EB#;
   SIF_RANGE : constant := 16#0001#;
   SIF_PAGE : constant := 16#0002#;
   SIF_POS : constant := 16#0004#;
   SIF_DISABLENOSCROLL : constant := 16#0008#;
   SIF_TRACKPOS : constant := 16#0010#;
   SIF_ALL : constant := ( Interfaces.C.Unsigned( SIF_RANGE )
       or Interfaces.C.Unsigned( SIF_PAGE )
       or Interfaces.C.Unsigned( SIF_POS )
       or Interfaces.C.Unsigned( SIF_TRACKPOS ) );
   MDIS_ALLCHILDSTYLES : constant := 16#0001#;
   MDITILE_VERTICAL : constant := 16#0000#;
   MDITILE_HORIZONTAL : constant := 16#0001#;
   MDITILE_SKIPDISABLED : constant := 16#0002#;
   MDITILE_ZORDER : constant := 16#0004#;
   HELP_CONTEXT : constant := 16#0001#;
   HELP_QUIT : constant := 16#0002#;
   HELP_INDEX : constant := 16#0003#;
   HELP_CONTENTS : constant := 16#0003#;
   HELP_HELPONHELP : constant := 16#0004#;
   HELP_SETINDEX : constant := 16#0005#;
   HELP_SETCONTENTS : constant := 16#0005#;
   HELP_CONTEXTPOPUP : constant := 16#0008#;
   HELP_FORCEFILE : constant := 16#0009#;
   HELP_KEY : constant := 16#0101#;
   HELP_COMMAND : constant := 16#0102#;
   HELP_PARTIALKEY : constant := 16#0105#;
   HELP_MULTIKEY : constant := 16#0201#;
   HELP_SETWINPOS : constant := 16#0203#;
   HELP_CONTEXTMENU : constant := 16#000a#;
   HELP_FINDER : constant := 16#000b#;
   HELP_WM_HELP : constant := 16#000c#;
   HELP_SETPOPUP_POS : constant := 16#000d#;
   HELP_TCARD : constant := 16#8000#;
   HELP_TCARD_DATA : constant := 16#0010#;
   HELP_TCARD_OTHER_CALLER : constant := 16#0011#;
   IDH_NO_HELP : constant := 28440;
   IDH_MISSING_CONTEXT : constant := 28441;
   IDH_GENERIC_HELP_BUTTON : constant := 28442;
   IDH_OK : constant := 28443;
   IDH_CANCEL : constant := 28444;
   IDH_HELP : constant := 28445;
   GR_GDIOBJECTS : constant := 0;
   GR_USEROBJECTS : constant := 1;
   GR_GDIOBJECTS_PEAK : constant := 2;
   GR_USEROBJECTS_PEAK : constant := 4;
   GR_GLOBAL : constant := 2;
   SPI_GETBEEP : constant := 16#0001#;
   SPI_SETBEEP : constant := 16#0002#;
   SPI_GETMOUSE : constant := 16#0003#;
   SPI_SETMOUSE : constant := 16#0004#;
   SPI_GETBORDER : constant := 16#0005#;
   SPI_SETBORDER : constant := 16#0006#;
   SPI_GETKEYBOARDSPEED : constant := 16#000A#;
   SPI_SETKEYBOARDSPEED : constant := 16#000B#;
   SPI_LANGDRIVER : constant := 16#000C#;
   SPI_ICONHORIZONTALSPACING : constant := 16#000D#;
   SPI_GETSCREENSAVETIMEOUT : constant := 16#000E#;
   SPI_SETSCREENSAVETIMEOUT : constant := 16#000F#;
   SPI_GETSCREENSAVEACTIVE : constant := 16#0010#;
   SPI_SETSCREENSAVEACTIVE : constant := 16#0011#;
   SPI_GETGRIDGRANULARITY : constant := 16#0012#;
   SPI_SETGRIDGRANULARITY : constant := 16#0013#;
   SPI_SETDESKWALLPAPER : constant := 16#0014#;
   SPI_SETDESKPATTERN : constant := 16#0015#;
   SPI_GETKEYBOARDDELAY : constant := 16#0016#;
   SPI_SETKEYBOARDDELAY : constant := 16#0017#;
   SPI_ICONVERTICALSPACING : constant := 16#0018#;
   SPI_GETICONTITLEWRAP : constant := 16#0019#;
   SPI_SETICONTITLEWRAP : constant := 16#001A#;
   SPI_GETMENUDROPALIGNMENT : constant := 16#001B#;
   SPI_SETMENUDROPALIGNMENT : constant := 16#001C#;
   SPI_SETDOUBLECLKWIDTH : constant := 16#001D#;
   SPI_SETDOUBLECLKHEIGHT : constant := 16#001E#;
   SPI_GETICONTITLELOGFONT : constant := 16#001F#;
   SPI_SETDOUBLECLICKTIME : constant := 16#0020#;
   SPI_SETMOUSEBUTTONSWAP : constant := 16#0021#;
   SPI_SETICONTITLELOGFONT : constant := 16#0022#;
   SPI_GETFASTTASKSWITCH : constant := 16#0023#;
   SPI_SETFASTTASKSWITCH : constant := 16#0024#;
   SPI_SETDRAGFULLWINDOWS : constant := 16#0025#;
   SPI_GETDRAGFULLWINDOWS : constant := 16#0026#;
   SPI_GETNONCLIENTMETRICS : constant := 16#0029#;
   SPI_SETNONCLIENTMETRICS : constant := 16#002A#;
   SPI_GETMINIMIZEDMETRICS : constant := 16#002B#;
   SPI_SETMINIMIZEDMETRICS : constant := 16#002C#;
   SPI_GETICONMETRICS : constant := 16#002D#;
   SPI_SETICONMETRICS : constant := 16#002E#;
   SPI_SETWORKAREA : constant := 16#002F#;
   SPI_GETWORKAREA : constant := 16#0030#;
   SPI_SETPENWINDOWS : constant := 16#0031#;
   SPI_GETHIGHCONTRAST : constant := 16#0042#;
   SPI_SETHIGHCONTRAST : constant := 16#0043#;
   SPI_GETKEYBOARDPREF : constant := 16#0044#;
   SPI_SETKEYBOARDPREF : constant := 16#0045#;
   SPI_GETSCREENREADER : constant := 16#0046#;
   SPI_SETSCREENREADER : constant := 16#0047#;
   SPI_GETANIMATION : constant := 16#0048#;
   SPI_SETANIMATION : constant := 16#0049#;
   SPI_GETFONTSMOOTHING : constant := 16#004A#;
   SPI_SETFONTSMOOTHING : constant := 16#004B#;
   SPI_SETDRAGWIDTH : constant := 16#004C#;
   SPI_SETDRAGHEIGHT : constant := 16#004D#;
   SPI_SETHANDHELD : constant := 16#004E#;
   SPI_GETLOWPOWERTIMEOUT : constant := 16#004F#;
   SPI_GETPOWEROFFTIMEOUT : constant := 16#0050#;
   SPI_SETLOWPOWERTIMEOUT : constant := 16#0051#;
   SPI_SETPOWEROFFTIMEOUT : constant := 16#0052#;
   SPI_GETLOWPOWERACTIVE : constant := 16#0053#;
   SPI_GETPOWEROFFACTIVE : constant := 16#0054#;
   SPI_SETLOWPOWERACTIVE : constant := 16#0055#;
   SPI_SETPOWEROFFACTIVE : constant := 16#0056#;
   SPI_SETCURSORS : constant := 16#0057#;
   SPI_SETICONS : constant := 16#0058#;
   SPI_GETDEFAULTINPUTLANG : constant := 16#0059#;
   SPI_SETDEFAULTINPUTLANG : constant := 16#005A#;
   SPI_SETLANGTOGGLE : constant := 16#005B#;
   SPI_GETWINDOWSEXTENSION : constant := 16#005C#;
   SPI_SETMOUSETRAILS : constant := 16#005D#;
   SPI_GETMOUSETRAILS : constant := 16#005E#;
   SPI_SETSCREENSAVERRUNNING : constant := 16#0061#;
   SPI_GETFILTERKEYS : constant := 16#0032#;
   SPI_SETFILTERKEYS : constant := 16#0033#;
   SPI_GETTOGGLEKEYS : constant := 16#0034#;
   SPI_SETTOGGLEKEYS : constant := 16#0035#;
   SPI_GETMOUSEKEYS : constant := 16#0036#;
   SPI_SETMOUSEKEYS : constant := 16#0037#;
   SPI_GETSHOWSOUNDS : constant := 16#0038#;
   SPI_SETSHOWSOUNDS : constant := 16#0039#;
   SPI_GETSTICKYKEYS : constant := 16#003A#;
   SPI_SETSTICKYKEYS : constant := 16#003B#;
   SPI_GETACCESSTIMEOUT : constant := 16#003C#;
   SPI_SETACCESSTIMEOUT : constant := 16#003D#;
   SPI_GETSERIALKEYS : constant := 16#003E#;
   SPI_SETSERIALKEYS : constant := 16#003F#;
   SPI_GETSOUNDSENTRY : constant := 16#0040#;
   SPI_SETSOUNDSENTRY : constant := 16#0041#;
   SPI_GETSNAPTODEFBUTTON : constant := 16#005F#;
   SPI_SETSNAPTODEFBUTTON : constant := 16#0060#;
   SPI_GETMOUSEHOVERWIDTH : constant := 16#0062#;
   SPI_SETMOUSEHOVERWIDTH : constant := 16#0063#;
   SPI_GETMOUSEHOVERHEIGHT : constant := 16#0064#;
   SPI_SETMOUSEHOVERHEIGHT : constant := 16#0065#;
   SPI_GETMOUSEHOVERTIME : constant := 16#0066#;
   SPI_SETMOUSEHOVERTIME : constant := 16#0067#;
   SPI_GETWHEELSCROLLLINES : constant := 16#0068#;
   SPI_SETWHEELSCROLLLINES : constant := 16#0069#;
   SPI_GETMENUSHOWDELAY : constant := 16#006A#;
   SPI_SETMENUSHOWDELAY : constant := 16#006B#;
   SPI_GETWHEELSCROLLCHARS : constant := 16#006C#;
   SPI_SETWHEELSCROLLCHARS : constant := 16#006D#;
   SPI_GETSHOWIMEUI : constant := 16#006E#;
   SPI_SETSHOWIMEUI : constant := 16#006F#;
   SPI_GETMOUSESPEED : constant := 16#0070#;
   SPI_SETMOUSESPEED : constant := 16#0071#;
   SPI_GETSCREENSAVERRUNNING : constant := 16#0072#;
   SPI_GETDESKWALLPAPER : constant := 16#0073#;
   SPI_GETAUDIODESCRIPTION : constant := 16#0074#;
   SPI_SETAUDIODESCRIPTION : constant := 16#0075#;
   SPI_GETSCREENSAVESECURE : constant := 16#0076#;
   SPI_SETSCREENSAVESECURE : constant := 16#0077#;
   SPI_GETHUNGAPPTIMEOUT : constant := 16#0078#;
   SPI_SETHUNGAPPTIMEOUT : constant := 16#0079#;
   SPI_GETWAITTOKILLTIMEOUT : constant := 16#007A#;
   SPI_SETWAITTOKILLTIMEOUT : constant := 16#007B#;
   SPI_GETWAITTOKILLSERVICETIMEOUT : constant := 16#007C#;
   SPI_SETWAITTOKILLSERVICETIMEOUT : constant := 16#007D#;
   SPI_GETMOUSEDOCKTHRESHOLD : constant := 16#007E#;
   SPI_SETMOUSEDOCKTHRESHOLD : constant := 16#007F#;
   SPI_GETPENDOCKTHRESHOLD : constant := 16#0080#;
   SPI_SETPENDOCKTHRESHOLD : constant := 16#0081#;
   SPI_GETWINARRANGING : constant := 16#0082#;
   SPI_SETWINARRANGING : constant := 16#0083#;
   SPI_GETMOUSEDRAGOUTTHRESHOLD : constant := 16#0084#;
   SPI_SETMOUSEDRAGOUTTHRESHOLD : constant := 16#0085#;
   SPI_GETPENDRAGOUTTHRESHOLD : constant := 16#0086#;
   SPI_SETPENDRAGOUTTHRESHOLD : constant := 16#0087#;
   SPI_GETMOUSESIDEMOVETHRESHOLD : constant := 16#0088#;
   SPI_SETMOUSESIDEMOVETHRESHOLD : constant := 16#0089#;
   SPI_GETPENSIDEMOVETHRESHOLD : constant := 16#008A#;
   SPI_SETPENSIDEMOVETHRESHOLD : constant := 16#008B#;
   SPI_GETDRAGFROMMAXIMIZE : constant := 16#008C#;
   SPI_SETDRAGFROMMAXIMIZE : constant := 16#008D#;
   SPI_GETSNAPSIZING : constant := 16#008E#;
   SPI_SETSNAPSIZING : constant := 16#008F#;
   SPI_GETDOCKMOVING : constant := 16#0090#;
   SPI_SETDOCKMOVING : constant := 16#0091#;
   MAX_TOUCH_PREDICTION_FILTER_TAPS : constant := 3;
   TOUCHPREDICTIONPARAMETERS_DEFAULT_LATENCY : constant := 8;
   TOUCHPREDICTIONPARAMETERS_DEFAULT_SAMPLETIME : constant := 8;
   TOUCHPREDICTIONPARAMETERS_DEFAULT_USE_HW_TIMESTAMP : constant := 1;
   SPI_GETTOUCHPREDICTIONPARAMETERS : constant := 16#009C#;
   SPI_SETTOUCHPREDICTIONPARAMETERS : constant := 16#009D#;
   MAX_LOGICALDPIOVERRIDE : constant := 2;
   MIN_LOGICALDPIOVERRIDE : constant := -2;
   SPI_GETLOGICALDPIOVERRIDE : constant := 16#009E#;
   SPI_SETLOGICALDPIOVERRIDE : constant := 16#009F#;
   SPI_GETMENURECT : constant := 16#00A2#;
   SPI_SETMENURECT : constant := 16#00A3#;
   SPI_GETACTIVEWINDOWTRACKING : constant := 16#1000#;
   SPI_SETACTIVEWINDOWTRACKING : constant := 16#1001#;
   SPI_GETMENUANIMATION : constant := 16#1002#;
   SPI_SETMENUANIMATION : constant := 16#1003#;
   SPI_GETCOMBOBOXANIMATION : constant := 16#1004#;
   SPI_SETCOMBOBOXANIMATION : constant := 16#1005#;
   SPI_GETLISTBOXSMOOTHSCROLLING : constant := 16#1006#;
   SPI_SETLISTBOXSMOOTHSCROLLING : constant := 16#1007#;
   SPI_GETGRADIENTCAPTIONS : constant := 16#1008#;
   SPI_SETGRADIENTCAPTIONS : constant := 16#1009#;
   SPI_GETKEYBOARDCUES : constant := 16#100A#;
   SPI_SETKEYBOARDCUES : constant := 16#100B#;
   SPI_GETACTIVEWNDTRKZORDER : constant := 16#100C#;
   SPI_SETACTIVEWNDTRKZORDER : constant := 16#100D#;
   SPI_GETHOTTRACKING : constant := 16#100E#;
   SPI_SETHOTTRACKING : constant := 16#100F#;
   SPI_GETMENUFADE : constant := 16#1012#;
   SPI_SETMENUFADE : constant := 16#1013#;
   SPI_GETSELECTIONFADE : constant := 16#1014#;
   SPI_SETSELECTIONFADE : constant := 16#1015#;
   SPI_GETTOOLTIPANIMATION : constant := 16#1016#;
   SPI_SETTOOLTIPANIMATION : constant := 16#1017#;
   SPI_GETTOOLTIPFADE : constant := 16#1018#;
   SPI_SETTOOLTIPFADE : constant := 16#1019#;
   SPI_GETCURSORSHADOW : constant := 16#101A#;
   SPI_SETCURSORSHADOW : constant := 16#101B#;
   SPI_GETMOUSESONAR : constant := 16#101C#;
   SPI_SETMOUSESONAR : constant := 16#101D#;
   SPI_GETMOUSECLICKLOCK : constant := 16#101E#;
   SPI_SETMOUSECLICKLOCK : constant := 16#101F#;
   SPI_GETMOUSEVANISH : constant := 16#1020#;
   SPI_SETMOUSEVANISH : constant := 16#1021#;
   SPI_GETFLATMENU : constant := 16#1022#;
   SPI_SETFLATMENU : constant := 16#1023#;
   SPI_GETDROPSHADOW : constant := 16#1024#;
   SPI_SETDROPSHADOW : constant := 16#1025#;
   SPI_GETBLOCKSENDINPUTRESETS : constant := 16#1026#;
   SPI_SETBLOCKSENDINPUTRESETS : constant := 16#1027#;
   SPI_GETUIEFFECTS : constant := 16#103E#;
   SPI_SETUIEFFECTS : constant := 16#103F#;
   SPI_GETDISABLEOVERLAPPEDCONTENT : constant := 16#1040#;
   SPI_SETDISABLEOVERLAPPEDCONTENT : constant := 16#1041#;
   SPI_GETCLIENTAREAANIMATION : constant := 16#1042#;
   SPI_SETCLIENTAREAANIMATION : constant := 16#1043#;
   SPI_GETCLEARTYPE : constant := 16#1048#;
   SPI_SETCLEARTYPE : constant := 16#1049#;
   SPI_GETSPEECHRECOGNITION : constant := 16#104A#;
   SPI_SETSPEECHRECOGNITION : constant := 16#104B#;
   SPI_GETCARETBROWSING : constant := 16#104C#;
   SPI_SETCARETBROWSING : constant := 16#104D#;
   SPI_GETTHREADLOCALINPUTSETTINGS : constant := 16#104E#;
   SPI_SETTHREADLOCALINPUTSETTINGS : constant := 16#104F#;
   SPI_GETSYSTEMLANGUAGEBAR : constant := 16#1050#;
   SPI_SETSYSTEMLANGUAGEBAR : constant := 16#1051#;
   SPI_GETFOREGROUNDLOCKTIMEOUT : constant := 16#2000#;
   SPI_SETFOREGROUNDLOCKTIMEOUT : constant := 16#2001#;
   SPI_GETACTIVEWNDTRKTIMEOUT : constant := 16#2002#;
   SPI_SETACTIVEWNDTRKTIMEOUT : constant := 16#2003#;
   SPI_GETFOREGROUNDFLASHCOUNT : constant := 16#2004#;
   SPI_SETFOREGROUNDFLASHCOUNT : constant := 16#2005#;
   SPI_GETCARETWIDTH : constant := 16#2006#;
   SPI_SETCARETWIDTH : constant := 16#2007#;
   SPI_GETMOUSECLICKLOCKTIME : constant := 16#2008#;
   SPI_SETMOUSECLICKLOCKTIME : constant := 16#2009#;
   SPI_GETFONTSMOOTHINGTYPE : constant := 16#200A#;
   SPI_SETFONTSMOOTHINGTYPE : constant := 16#200B#;
   FE_FONTSMOOTHINGSTANDARD : constant := 16#0001#;
   FE_FONTSMOOTHINGCLEARTYPE : constant := 16#0002#;
   SPI_GETFONTSMOOTHINGCONTRAST : constant := 16#200C#;
   SPI_SETFONTSMOOTHINGCONTRAST : constant := 16#200D#;
   SPI_GETFOCUSBORDERWIDTH : constant := 16#200E#;
   SPI_SETFOCUSBORDERWIDTH : constant := 16#200F#;
   SPI_GETFOCUSBORDERHEIGHT : constant := 16#2010#;
   SPI_SETFOCUSBORDERHEIGHT : constant := 16#2011#;
   SPI_GETFONTSMOOTHINGORIENTATION : constant := 16#2012#;
   SPI_SETFONTSMOOTHINGORIENTATION : constant := 16#2013#;
   FE_FONTSMOOTHINGORIENTATIONBGR : constant := 16#0000#;
   FE_FONTSMOOTHINGORIENTATIONRGB : constant := 16#0001#;
   SPI_GETMINIMUMHITRADIUS : constant := 16#2014#;
   SPI_SETMINIMUMHITRADIUS : constant := 16#2015#;
   SPI_GETMESSAGEDURATION : constant := 16#2016#;
   SPI_SETMESSAGEDURATION : constant := 16#2017#;
   SPI_GETCONTACTVISUALIZATION : constant := 16#2018#;
   SPI_SETCONTACTVISUALIZATION : constant := 16#2019#;
   CONTACTVISUALIZATION_OFF : constant := 16#0000#;
   CONTACTVISUALIZATION_ON : constant := 16#0001#;
   CONTACTVISUALIZATION_PRESENTATIONMODE : constant := 16#0002#;
   SPI_GETGESTUREVISUALIZATION : constant := 16#201A#;
   SPI_SETGESTUREVISUALIZATION : constant := 16#201B#;
   GESTUREVISUALIZATION_OFF : constant := 16#0000#;
   GESTUREVISUALIZATION_ON : constant := 16#001F#;
   GESTUREVISUALIZATION_TAP : constant := 16#0001#;
   GESTUREVISUALIZATION_DOUBLETAP : constant := 16#0002#;
   GESTUREVISUALIZATION_PRESSANDTAP : constant := 16#0004#;
   GESTUREVISUALIZATION_PRESSANDHOLD : constant := 16#0008#;
   GESTUREVISUALIZATION_RIGHTTAP : constant := 16#0010#;
   SPI_GETMOUSEWHEELROUTING : constant := 16#201C#;
   SPI_SETMOUSEWHEELROUTING : constant := 16#201D#;
   MOUSEWHEEL_ROUTING_FOCUS : constant := 0;
   MOUSEWHEEL_ROUTING_HYBRID : constant := 1;
   MOUSEWHEEL_ROUTING_MOUSE_POS : constant := 2;
   SPI_GETPENVISUALIZATION : constant := 16#201E#;
   SPI_SETPENVISUALIZATION : constant := 16#201F#;
   PENVISUALIZATION_ON : constant := 16#0023#;
   PENVISUALIZATION_OFF : constant := 16#0000#;
   PENVISUALIZATION_TAP : constant := 16#0001#;
   PENVISUALIZATION_DOUBLETAP : constant := 16#0002#;
   PENVISUALIZATION_CURSOR : constant := 16#0020#;
   SPI_GETPENARBITRATIONTYPE : constant := 16#2020#;
   SPI_SETPENARBITRATIONTYPE : constant := 16#2021#;
   PENARBITRATIONTYPE_NONE : constant := 16#0000#;
   PENARBITRATIONTYPE_WIN8 : constant := 16#0001#;
   PENARBITRATIONTYPE_FIS : constant := 16#0002#;
   PENARBITRATIONTYPE_SPT : constant := 16#0003#;
   PENARBITRATIONTYPE_MAX : constant := 16#0004#;
   SPI_GETCARETTIMEOUT : constant := 16#2022#;
   SPI_SETCARETTIMEOUT : constant := 16#2023#;
   SPI_GETHANDEDNESS : constant := 16#2024#;
   SPI_SETHANDEDNESS : constant := 16#2025#;
   SPIF_UPDATEINIFILE : constant := 16#0001#;
   SPIF_SENDWININICHANGE : constant := 16#0002#;
   METRICS_USEDEFAULT : constant := -1;
   ARW_BOTTOMLEFT : constant := 16#0000#;
   ARW_BOTTOMRIGHT : constant := 16#0001#;
   ARW_TOPLEFT : constant := 16#0002#;
   ARW_TOPRIGHT : constant := 16#0003#;
   ARW_STARTMASK : constant := 16#0003#;
   ARW_STARTRIGHT : constant := 16#0001#;
   ARW_STARTTOP : constant := 16#0002#;
   ARW_LEFT : constant := 16#0000#;
   ARW_RIGHT : constant := 16#0000#;
   ARW_UP : constant := 16#0004#;
   ARW_DOWN : constant := 16#0004#;
   ARW_HIDE : constant := 16#0008#;
   SERKF_SERIALKEYSON : constant := 16#00000001#;
   SERKF_AVAILABLE : constant := 16#00000002#;
   SERKF_INDICATOR : constant := 16#00000004#;
   HCF_HIGHCONTRASTON : constant := 16#00000001#;
   HCF_AVAILABLE : constant := 16#00000002#;
   HCF_HOTKEYACTIVE : constant := 16#00000004#;
   HCF_CONFIRMHOTKEY : constant := 16#00000008#;
   HCF_HOTKEYSOUND : constant := 16#00000010#;
   HCF_INDICATOR : constant := 16#00000020#;
   HCF_HOTKEYAVAILABLE : constant := 16#00000040#;
   HCF_LOGONDESKTOP : constant := 16#00000100#;
   HCF_DEFAULTDESKTOP : constant := 16#00000200#;
   HCF_OPTION_NOTHEMECHANGE : constant := 16#00001000#;
   CDS_UPDATEREGISTRY : constant := 16#00000001#;
   CDS_TEST : constant := 16#00000002#;
   CDS_FULLSCREEN : constant := 16#00000004#;
   CDS_GLOBAL : constant := 16#00000008#;
   CDS_SET_PRIMARY : constant := 16#00000010#;
   CDS_VIDEOPARAMETERS : constant := 16#00000020#;
   CDS_ENABLE_UNSAFE_MODES : constant := 16#00000100#;
   CDS_DISABLE_UNSAFE_MODES : constant := 16#00000200#;
   CDS_RESET : constant := 16#40000000#;
   CDS_RESET_EX : constant := 16#20000000#;
   CDS_NORESET : constant := 16#10000000#;
   -- #include <tvout.h>
   VP_COMMAND_GET : constant := 16#0001#;
   VP_COMMAND_SET : constant := 16#0002#;
   VP_FLAGS_TV_MODE : constant := 16#0001#;
   VP_FLAGS_TV_STANDARD : constant := 16#0002#;
   VP_FLAGS_FLICKER : constant := 16#0004#;
   VP_FLAGS_OVERSCAN : constant := 16#0008#;
   VP_FLAGS_MAX_UNSCALED : constant := 16#0010#;
   VP_FLAGS_POSITION : constant := 16#0020#;
   VP_FLAGS_BRIGHTNESS : constant := 16#0040#;
   VP_FLAGS_CONTRAST : constant := 16#0080#;
   VP_FLAGS_COPYPROTECT : constant := 16#0100#;
   VP_MODE_WIN_GRAPHICS : constant := 16#0001#;
   VP_MODE_TV_PLAYBACK : constant := 16#0002#;
   VP_TV_STANDARD_NTSC_M : constant := 16#0001#;
   VP_TV_STANDARD_NTSC_M_J : constant := 16#0002#;
   VP_TV_STANDARD_PAL_B : constant := 16#0004#;
   VP_TV_STANDARD_PAL_D : constant := 16#0008#;
   VP_TV_STANDARD_PAL_H : constant := 16#0010#;
   VP_TV_STANDARD_PAL_I : constant := 16#0020#;
   VP_TV_STANDARD_PAL_M : constant := 16#0040#;
   VP_TV_STANDARD_PAL_N : constant := 16#0080#;
   VP_TV_STANDARD_SECAM_B : constant := 16#0100#;
   VP_TV_STANDARD_SECAM_D : constant := 16#0200#;
   VP_TV_STANDARD_SECAM_G : constant := 16#0400#;
   VP_TV_STANDARD_SECAM_H : constant := 16#0800#;
   VP_TV_STANDARD_SECAM_K : constant := 16#1000#;
   VP_TV_STANDARD_SECAM_K1 : constant := 16#2000#;
   VP_TV_STANDARD_SECAM_L : constant := 16#4000#;
   VP_TV_STANDARD_WIN_VGA : constant := 16#8000#;
   VP_TV_STANDARD_NTSC_433 : constant := 16#00010000#;
   VP_TV_STANDARD_PAL_G : constant := 16#00020000#;
   VP_TV_STANDARD_PAL_60 : constant := 16#00040000#;
   VP_TV_STANDARD_SECAM_L1 : constant := 16#00080000#;
   VP_CP_TYPE_APS_TRIGGER : constant := 16#0001#;
   VP_CP_TYPE_MACROVISION : constant := 16#0002#;
   VP_CP_CMD_ACTIVATE : constant := 16#0001#;
   VP_CP_CMD_DEACTIVATE : constant := 16#0002#;
   VP_CP_CMD_CHANGE : constant := 16#0004#;
   -- #include <winuser.h>
   DISP_CHANGE_SUCCESSFUL : constant := 0;
   DISP_CHANGE_RESTART : constant := 1;
   DISP_CHANGE_FAILED : constant := -1;
   DISP_CHANGE_BADMODE : constant := -2;
   DISP_CHANGE_NOTUPDATED : constant := -3;
   DISP_CHANGE_BADFLAGS : constant := -4;
   DISP_CHANGE_BADPARAM : constant := -5;
   DISP_CHANGE_BADDUALVIEW : constant := -6;
   ENUM_CURRENT_SETTINGS : constant := Interfaces.C.unsigned_long'mod(-1);
   ENUM_REGISTRY_SETTINGS : constant := Interfaces.C.unsigned_long'mod(-2);
   EDS_RAWMODE : constant := 16#00000002#;
   EDS_ROTATEDMODE : constant := 16#00000004#;
   EDD_GET_DEVICE_INTERFACE_NAME : constant := 16#00000001#;
   FKF_FILTERKEYSON : constant := 16#00000001#;
   FKF_AVAILABLE : constant := 16#00000002#;
   FKF_HOTKEYACTIVE : constant := 16#00000004#;
   FKF_CONFIRMHOTKEY : constant := 16#00000008#;
   FKF_HOTKEYSOUND : constant := 16#00000010#;
   FKF_INDICATOR : constant := 16#00000020#;
   FKF_CLICKON : constant := 16#00000040#;
   SKF_STICKYKEYSON : constant := 16#00000001#;
   SKF_AVAILABLE : constant := 16#00000002#;
   SKF_HOTKEYACTIVE : constant := 16#00000004#;
   SKF_CONFIRMHOTKEY : constant := 16#00000008#;
   SKF_HOTKEYSOUND : constant := 16#00000010#;
   SKF_INDICATOR : constant := 16#00000020#;
   SKF_AUDIBLEFEEDBACK : constant := 16#00000040#;
   SKF_TRISTATE : constant := 16#00000080#;
   SKF_TWOKEYSOFF : constant := 16#00000100#;
   SKF_LALTLATCHED : constant := 16#10000000#;
   SKF_LCTLLATCHED : constant := 16#04000000#;
   SKF_LSHIFTLATCHED : constant := 16#01000000#;
   SKF_RALTLATCHED : constant := 16#20000000#;
   SKF_RCTLLATCHED : constant := 16#08000000#;
   SKF_RSHIFTLATCHED : constant := 16#02000000#;
   SKF_LWINLATCHED : constant := 16#40000000#;
   SKF_RWINLATCHED : constant := 16#80000000#;
   SKF_LALTLOCKED : constant := 16#00100000#;
   SKF_LCTLLOCKED : constant := 16#00040000#;
   SKF_LSHIFTLOCKED : constant := 16#00010000#;
   SKF_RALTLOCKED : constant := 16#00200000#;
   SKF_RCTLLOCKED : constant := 16#00080000#;
   SKF_RSHIFTLOCKED : constant := 16#00020000#;
   SKF_LWINLOCKED : constant := 16#00400000#;
   SKF_RWINLOCKED : constant := 16#00800000#;
   MKF_MOUSEKEYSON : constant := 16#00000001#;
   MKF_AVAILABLE : constant := 16#00000002#;
   MKF_HOTKEYACTIVE : constant := 16#00000004#;
   MKF_CONFIRMHOTKEY : constant := 16#00000008#;
   MKF_HOTKEYSOUND : constant := 16#00000010#;
   MKF_INDICATOR : constant := 16#00000020#;
   MKF_MODIFIERS : constant := 16#00000040#;
   MKF_REPLACENUMBERS : constant := 16#00000080#;
   MKF_LEFTBUTTONSEL : constant := 16#10000000#;
   MKF_RIGHTBUTTONSEL : constant := 16#20000000#;
   MKF_LEFTBUTTONDOWN : constant := 16#01000000#;
   MKF_RIGHTBUTTONDOWN : constant := 16#02000000#;
   MKF_MOUSEMODE : constant := 16#80000000#;
   ATF_TIMEOUTON : constant := 16#00000001#;
   ATF_ONOFFFEEDBACK : constant := 16#00000002#;
   SSGF_NONE : constant := 0;
   SSGF_DISPLAY : constant := 3;
   SSTF_NONE : constant := 0;
   SSTF_CHARS : constant := 1;
   SSTF_BORDER : constant := 2;
   SSTF_DISPLAY : constant := 3;
   SSWF_NONE : constant := 0;
   SSWF_TITLE : constant := 1;
   SSWF_WINDOW : constant := 2;
   SSWF_DISPLAY : constant := 3;
   SSWF_CUSTOM : constant := 4;
   SSF_SOUNDSENTRYON : constant := 16#00000001#;
   SSF_AVAILABLE : constant := 16#00000002#;
   SSF_INDICATOR : constant := 16#00000004#;
   TKF_TOGGLEKEYSON : constant := 16#00000001#;
   TKF_AVAILABLE : constant := 16#00000002#;
   TKF_HOTKEYACTIVE : constant := 16#00000004#;
   TKF_CONFIRMHOTKEY : constant := 16#00000008#;
   TKF_HOTKEYSOUND : constant := 16#00000010#;
   TKF_INDICATOR : constant := 16#00000020#;
   SLE_ERROR : constant := 16#00000001#;
   SLE_MINORERROR : constant := 16#00000002#;
   SLE_WARNING : constant := 16#00000003#;
   MONITOR_DEFAULTTONULL : constant := 16#00000000#;
   MONITOR_DEFAULTTOPRIMARY : constant := 16#00000001#;
   MONITOR_DEFAULTTONEAREST : constant := 16#00000002#;
   MONITORINFOF_PRIMARY : constant := 16#00000001#;
   WINEVENT_OUTOFCONTEXT : constant := 16#0000#;
   WINEVENT_SKIPOWNTHREAD : constant := 16#0001#;
   WINEVENT_SKIPOWNPROCESS : constant := 16#0002#;
   WINEVENT_INCONTEXT : constant := 16#0004#;
   CHILDID_SELF : constant := 0;
   INDEXID_OBJECT : constant := 0;
   INDEXID_CONTAINER : constant := 0;
   OBJID_WINDOW : constant := 16#00000000#;
   OBJID_SYSMENU : constant := 16#FFFFFFFF#;
   OBJID_TITLEBAR : constant := 16#FFFFFFFE#;
   OBJID_MENU : constant := 16#FFFFFFFD#;
   OBJID_CLIENT : constant := 16#FFFFFFFC#;
   OBJID_VSCROLL : constant := 16#FFFFFFFB#;
   OBJID_HSCROLL : constant := 16#FFFFFFFA#;
   OBJID_SIZEGRIP : constant := 16#FFFFFFF9#;
   OBJID_CARET : constant := 16#FFFFFFF8#;
   OBJID_CURSOR : constant := 16#FFFFFFF7#;
   OBJID_ALERT : constant := 16#FFFFFFF6#;
   OBJID_SOUND : constant := 16#FFFFFFF5#;
   OBJID_QUERYCLASSNAMEIDX : constant := 16#FFFFFFF4#;
   OBJID_NATIVEOM : constant := 16#FFFFFFF0#;
   EVENT_MIN : constant := 16#00000001#;
   EVENT_MAX : constant := 16#7FFFFFFF#;
   EVENT_SYSTEM_SOUND : constant := 16#0001#;
   EVENT_SYSTEM_ALERT : constant := 16#0002#;
   EVENT_SYSTEM_FOREGROUND : constant := 16#0003#;
   EVENT_SYSTEM_MENUSTART : constant := 16#0004#;
   EVENT_SYSTEM_MENUEND : constant := 16#0005#;
   EVENT_SYSTEM_MENUPOPUPSTART : constant := 16#0006#;
   EVENT_SYSTEM_MENUPOPUPEND : constant := 16#0007#;
   EVENT_SYSTEM_CAPTURESTART : constant := 16#0008#;
   EVENT_SYSTEM_CAPTUREEND : constant := 16#0009#;
   EVENT_SYSTEM_MOVESIZESTART : constant := 16#000A#;
   EVENT_SYSTEM_MOVESIZEEND : constant := 16#000B#;
   EVENT_SYSTEM_CONTEXTHELPSTART : constant := 16#000C#;
   EVENT_SYSTEM_CONTEXTHELPEND : constant := 16#000D#;
   EVENT_SYSTEM_DRAGDROPSTART : constant := 16#000E#;
   EVENT_SYSTEM_DRAGDROPEND : constant := 16#000F#;
   EVENT_SYSTEM_DIALOGSTART : constant := 16#0010#;
   EVENT_SYSTEM_DIALOGEND : constant := 16#0011#;
   EVENT_SYSTEM_SCROLLINGSTART : constant := 16#0012#;
   EVENT_SYSTEM_SCROLLINGEND : constant := 16#0013#;
   EVENT_SYSTEM_SWITCHSTART : constant := 16#0014#;
   EVENT_SYSTEM_SWITCHEND : constant := 16#0015#;
   EVENT_SYSTEM_MINIMIZESTART : constant := 16#0016#;
   EVENT_SYSTEM_MINIMIZEEND : constant := 16#0017#;
   EVENT_SYSTEM_DESKTOPSWITCH : constant := 16#0020#;
   EVENT_SYSTEM_SWITCHER_APPGRABBED : constant := 16#0024#;
   EVENT_SYSTEM_SWITCHER_APPOVERTARGET : constant := 16#0025#;
   EVENT_SYSTEM_SWITCHER_APPDROPPED : constant := 16#0026#;
   EVENT_SYSTEM_SWITCHER_CANCELLED : constant := 16#0027#;
   EVENT_SYSTEM_IME_KEY_NOTIFICATION : constant := 16#0029#;
   EVENT_SYSTEM_END : constant := 16#00FF#;
   EVENT_OEM_DEFINED_START : constant := 16#0101#;
   EVENT_OEM_DEFINED_END : constant := 16#01FF#;
   EVENT_UIA_EVENTID_START : constant := 16#4E00#;
   EVENT_UIA_EVENTID_END : constant := 16#4EFF#;
   EVENT_UIA_PROPID_START : constant := 16#7500#;
   EVENT_UIA_PROPID_END : constant := 16#75FF#;
   EVENT_CONSOLE_CARET : constant := 16#4001#;
   EVENT_CONSOLE_UPDATE_REGION : constant := 16#4002#;
   EVENT_CONSOLE_UPDATE_SIMPLE : constant := 16#4003#;
   EVENT_CONSOLE_UPDATE_SCROLL : constant := 16#4004#;
   EVENT_CONSOLE_LAYOUT : constant := 16#4005#;
   EVENT_CONSOLE_START_APPLICATION : constant := 16#4006#;
   EVENT_CONSOLE_END_APPLICATION : constant := 16#4007#;
   CONSOLE_APPLICATION_16BIT : constant := 16#0000#;
   CONSOLE_CARET_SELECTION : constant := 16#0001#;
   CONSOLE_CARET_VISIBLE : constant := 16#0002#;
   EVENT_CONSOLE_END : constant := 16#40FF#;
   EVENT_OBJECT_CREATE : constant := 16#8000#;
   EVENT_OBJECT_DESTROY : constant := 16#8001#;
   EVENT_OBJECT_SHOW : constant := 16#8002#;
   EVENT_OBJECT_HIDE : constant := 16#8003#;
   EVENT_OBJECT_REORDER : constant := 16#8004#;
   EVENT_OBJECT_FOCUS : constant := 16#8005#;
   EVENT_OBJECT_SELECTION : constant := 16#8006#;
   EVENT_OBJECT_SELECTIONADD : constant := 16#8007#;
   EVENT_OBJECT_SELECTIONREMOVE : constant := 16#8008#;
   EVENT_OBJECT_SELECTIONWITHIN : constant := 16#8009#;
   EVENT_OBJECT_STATECHANGE : constant := 16#800A#;
   EVENT_OBJECT_LOCATIONCHANGE : constant := 16#800B#;
   EVENT_OBJECT_NAMECHANGE : constant := 16#800C#;
   EVENT_OBJECT_DESCRIPTIONCHANGE : constant := 16#800D#;
   EVENT_OBJECT_VALUECHANGE : constant := 16#800E#;
   EVENT_OBJECT_PARENTCHANGE : constant := 16#800F#;
   EVENT_OBJECT_HELPCHANGE : constant := 16#8010#;
   EVENT_OBJECT_DEFACTIONCHANGE : constant := 16#8011#;
   EVENT_OBJECT_ACCELERATORCHANGE : constant := 16#8012#;
   EVENT_OBJECT_INVOKED : constant := 16#8013#;
   EVENT_OBJECT_TEXTSELECTIONCHANGED : constant := 16#8014#;
   EVENT_OBJECT_CONTENTSCROLLED : constant := 16#8015#;
   EVENT_SYSTEM_ARRANGMENTPREVIEW : constant := 16#8016#;
   EVENT_OBJECT_CLOAKED : constant := 16#8017#;
   EVENT_OBJECT_UNCLOAKED : constant := 16#8018#;
   EVENT_OBJECT_LIVEREGIONCHANGED : constant := 16#8019#;
   EVENT_OBJECT_HOSTEDOBJECTSINVALIDATED : constant := 16#8020#;
   EVENT_OBJECT_DRAGSTART : constant := 16#8021#;
   EVENT_OBJECT_DRAGCANCEL : constant := 16#8022#;
   EVENT_OBJECT_DRAGCOMPLETE : constant := 16#8023#;
   EVENT_OBJECT_DRAGENTER : constant := 16#8024#;
   EVENT_OBJECT_DRAGLEAVE : constant := 16#8025#;
   EVENT_OBJECT_DRAGDROPPED : constant := 16#8026#;
   EVENT_OBJECT_IME_SHOW : constant := 16#8027#;
   EVENT_OBJECT_IME_HIDE : constant := 16#8028#;
   EVENT_OBJECT_IME_CHANGE : constant := 16#8029#;
   EVENT_OBJECT_TEXTEDIT_CONVERSIONTARGETCHANGED : constant := 16#8030#;
   EVENT_OBJECT_END : constant := 16#80FF#;
   EVENT_AIA_START : constant := 16#A000#;
   EVENT_AIA_END : constant := 16#AFFF#;
   SOUND_SYSTEM_STARTUP : constant := 1;
   SOUND_SYSTEM_SHUTDOWN : constant := 2;
   SOUND_SYSTEM_BEEP : constant := 3;
   SOUND_SYSTEM_ERROR : constant := 4;
   SOUND_SYSTEM_QUESTION : constant := 5;
   SOUND_SYSTEM_WARNING : constant := 6;
   SOUND_SYSTEM_INFORMATION : constant := 7;
   SOUND_SYSTEM_MAXIMIZE : constant := 8;
   SOUND_SYSTEM_MINIMIZE : constant := 9;
   SOUND_SYSTEM_RESTOREUP : constant := 10;
   SOUND_SYSTEM_RESTOREDOWN : constant := 11;
   SOUND_SYSTEM_APPSTART : constant := 12;
   SOUND_SYSTEM_FAULT : constant := 13;
   SOUND_SYSTEM_APPEND : constant := 14;
   SOUND_SYSTEM_MENUCOMMAND : constant := 15;
   SOUND_SYSTEM_MENUPOPUP : constant := 16;
   CSOUND_SYSTEM : constant := 16;
   ALERT_SYSTEM_INFORMATIONAL : constant := 1;
   ALERT_SYSTEM_WARNING : constant := 2;
   ALERT_SYSTEM_ERROR : constant := 3;
   ALERT_SYSTEM_QUERY : constant := 4;
   ALERT_SYSTEM_CRITICAL : constant := 5;
   CALERT_SYSTEM : constant := 6;
   GUI_CARETBLINKING : constant := 16#00000001#;
   GUI_INMOVESIZE : constant := 16#00000002#;
   GUI_INMENUMODE : constant := 16#00000004#;
   GUI_SYSTEMMENUMODE : constant := 16#00000008#;
   GUI_POPUPMENUMODE : constant := 16#00000010#;
   GUI_16BITTASK : constant := 16#00000000#;
   USER_DEFAULT_SCREEN_DPI : constant := 96;
   STATE_SYSTEM_UNAVAILABLE : constant := 16#00000001#;
   STATE_SYSTEM_SELECTED : constant := 16#00000002#;
   STATE_SYSTEM_FOCUSED : constant := 16#00000004#;
   STATE_SYSTEM_PRESSED : constant := 16#00000008#;
   STATE_SYSTEM_CHECKED : constant := 16#00000010#;
   STATE_SYSTEM_MIXED : constant := 16#00000020#;
   STATE_SYSTEM_READONLY : constant := 16#00000040#;
   STATE_SYSTEM_HOTTRACKED : constant := 16#00000080#;
   STATE_SYSTEM_DEFAULT : constant := 16#00000100#;
   STATE_SYSTEM_EXPANDED : constant := 16#00000200#;
   STATE_SYSTEM_COLLAPSED : constant := 16#00000400#;
   STATE_SYSTEM_BUSY : constant := 16#00000800#;
   STATE_SYSTEM_FLOATING : constant := 16#00001000#;
   STATE_SYSTEM_MARQUEED : constant := 16#00002000#;
   STATE_SYSTEM_ANIMATED : constant := 16#00004000#;
   STATE_SYSTEM_INVISIBLE : constant := 16#00008000#;
   STATE_SYSTEM_OFFSCREEN : constant := 16#00010000#;
   STATE_SYSTEM_SIZEABLE : constant := 16#00020000#;
   STATE_SYSTEM_MOVEABLE : constant := 16#00040000#;
   STATE_SYSTEM_SELFVOICING : constant := 16#00080000#;
   STATE_SYSTEM_FOCUSABLE : constant := 16#00100000#;
   STATE_SYSTEM_SELECTABLE : constant := 16#00200000#;
   STATE_SYSTEM_LINKED : constant := 16#00400000#;
   STATE_SYSTEM_TRAVERSED : constant := 16#00800000#;
   STATE_SYSTEM_MULTISELECTABLE : constant := 16#01000000#;
   STATE_SYSTEM_EXTSELECTABLE : constant := 16#02000000#;
   STATE_SYSTEM_ALERT_LOW : constant := 16#04000000#;
   STATE_SYSTEM_ALERT_MEDIUM : constant := 16#08000000#;
   STATE_SYSTEM_ALERT_HIGH : constant := 16#10000000#;
   STATE_SYSTEM_PROTECTED : constant := 16#20000000#;
   STATE_SYSTEM_VALID : constant := 16#3FFFFFFF#;
   CCHILDREN_TITLEBAR : constant := 5;
   CCHILDREN_SCROLLBAR : constant := 5;
   CURSOR_SHOWING : constant := 16#00000001#;
   CURSOR_SUPPRESSED : constant := 16#00000002#;
   WS_ACTIVECAPTION : constant := 16#0001#;
   GA_PARENT : constant := 1;
   GA_ROOT : constant := 2;
   GA_ROOTOWNER : constant := 3;
   RIM_INPUT : constant := 0;
   RIM_INPUTSINK : constant := 1;
   RIM_TYPEMOUSE : constant := 0;
   RIM_TYPEKEYBOARD : constant := 1;
   RIM_TYPEHID : constant := 2;
   RIM_TYPEMAX : constant := 2;
   RI_MOUSE_LEFT_BUTTON_DOWN : constant := 16#0001#;
   RI_MOUSE_LEFT_BUTTON_UP : constant := 16#0002#;
   RI_MOUSE_RIGHT_BUTTON_DOWN : constant := 16#0004#;
   RI_MOUSE_RIGHT_BUTTON_UP : constant := 16#0008#;
   RI_MOUSE_MIDDLE_BUTTON_DOWN : constant := 16#0010#;
   RI_MOUSE_MIDDLE_BUTTON_UP : constant := 16#0020#;
   RI_MOUSE_BUTTON_4_DOWN : constant := 16#0040#;
   RI_MOUSE_BUTTON_4_UP : constant := 16#0080#;
   RI_MOUSE_BUTTON_5_DOWN : constant := 16#0100#;
   RI_MOUSE_BUTTON_5_UP : constant := 16#0200#;
   RI_MOUSE_WHEEL : constant := 16#0400#;
   RI_MOUSE_HWHEEL : constant := 16#0800#;
   MOUSE_MOVE_RELATIVE : constant := 0;
   MOUSE_MOVE_ABSOLUTE : constant := 1;
   MOUSE_VIRTUAL_DESKTOP : constant := 16#02#;
   MOUSE_ATTRIBUTES_CHANGED : constant := 16#04#;
   MOUSE_MOVE_NOCOALESCE : constant := 16#08#;
   KEYBOARD_OVERRUN_MAKE_CODE : constant := 16#FF#;
   RI_KEY_MAKE : constant := 0;
   RI_KEY_BREAK : constant := 1;
   RI_KEY_E0 : constant := 2;
   RI_KEY_E1 : constant := 4;
   RI_KEY_TERMSRV_SET_LED : constant := 8;
   RI_KEY_TERMSRV_SHADOW : constant := 16#10#;
   RID_INPUT : constant := 16#10000003#;
   RID_HEADER : constant := 16#10000005#;
   RIDI_PREPARSEDDATA : constant := 16#20000005#;
   RIDI_DEVICENAME : constant := 16#20000007#;
   RIDI_DEVICEINFO : constant := 16#2000000b#;
   RIDEV_REMOVE : constant := 16#00000001#;
   RIDEV_EXCLUDE : constant := 16#00000010#;
   RIDEV_PAGEONLY : constant := 16#00000020#;
   RIDEV_NOLEGACY : constant := 16#00000030#;
   RIDEV_INPUTSINK : constant := 16#00000100#;
   RIDEV_CAPTUREMOUSE : constant := 16#00000200#;
   RIDEV_NOHOTKEYS : constant := 16#00000200#;
   RIDEV_APPKEYS : constant := 16#00000400#;
   RIDEV_EXINPUTSINK : constant := 16#00001000#;
   RIDEV_DEVNOTIFY : constant := 16#00002000#;
   RIDEV_EXMODEMASK : constant := 16#000000F0#;
   GIDC_ARRIVAL : constant := 1;
   GIDC_REMOVAL : constant := 2;
   POINTER_DEVICE_PRODUCT_STRING_MAX : constant := 520;
   PDC_ARRIVAL : constant := 16#001#;
   PDC_REMOVAL : constant := 16#002#;
   PDC_ORIENTATION_0 : constant := 16#004#;
   PDC_ORIENTATION_90 : constant := 16#008#;
   PDC_ORIENTATION_180 : constant := 16#010#;
   PDC_ORIENTATION_270 : constant := 16#020#;
   PDC_MODE_DEFAULT : constant := 16#040#;
   PDC_MODE_CENTERED : constant := 16#080#;
   PDC_MAPPING_CHANGE : constant := 16#100#;
   PDC_RESOLUTION : constant := 16#200#;
   PDC_ORIGIN : constant := 16#400#;
   PDC_MODE_ASPECTRATIOPRESERVED : constant := 16#800#;
   MSGFLT_ADD : constant := 1;
   MSGFLT_REMOVE : constant := 2;
   MSGFLTINFO_NONE : constant := 0;
   MSGFLTINFO_ALREADYALLOWED_FORWND : constant := 1;
   MSGFLTINFO_ALREADYDISALLOWED_FORWND : constant := 2;
   MSGFLTINFO_ALLOWED_HIGHER : constant := 3;
   MSGFLT_RESET : constant := 0;
   MSGFLT_ALLOW : constant := 1;
   MSGFLT_DISALLOW : constant := 2;
   GF_BEGIN : constant := 16#00000001#;
   GF_INERTIA : constant := 16#00000002#;
   GF_END : constant := 16#00000004#;
   GID_BEGIN : constant := 1;
   GID_END : constant := 2;
   GID_ZOOM : constant := 3;
   GID_PAN : constant := 4;
   GID_ROTATE : constant := 5;
   GID_TWOFINGERTAP : constant := 6;
   GID_PRESSANDTAP : constant := 7;
   GC_ALLGESTURES : constant := 16#00000001#;
   GC_ZOOM : constant := 16#00000001#;
   GC_PAN : constant := 16#00000001#;
   GC_PAN_WITH_SINGLE_FINGER_VERTICALLY : constant := 16#00000002#;
   GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY : constant := 16#00000004#;
   GC_PAN_WITH_GUTTER : constant := 16#00000008#;
   GC_PAN_WITH_INERTIA : constant := 16#00000010#;
   GC_ROTATE : constant := 16#00000001#;
   GC_TWOFINGERTAP : constant := 16#00000001#;
   GC_PRESSANDTAP : constant := 16#00000001#;
   GESTURECONFIGMAXCOUNT : constant := 256;
   GCF_INCLUDE_ANCESTORS : constant := 16#00000001#;
   NID_INTEGRATED_TOUCH : constant := 16#00000001#;
   NID_EXTERNAL_TOUCH : constant := 16#00000002#;
   NID_INTEGRATED_PEN : constant := 16#00000004#;
   NID_EXTERNAL_PEN : constant := 16#00000008#;
   NID_MULTI_INPUT : constant := 16#00000040#;
   NID_READY : constant := 16#00000080#;
   MAX_STR_BLOCKREASON : constant := 256;
   -- #include <windows.h>
   -- #include <winnls.h>
   -- #include <datetimeapi.h>
   -- #include <winnls.h>
   MAX_LEADBYTES : constant := 12;
   MAX_DEFAULTCHAR : constant := 2;
   HIGH_SURROGATE_START : constant := 16#d800#;
   HIGH_SURROGATE_END : constant := 16#dbff#;
   LOW_SURROGATE_START : constant := 16#dc00#;
   LOW_SURROGATE_END : constant := 16#dfff#;
   MB_PRECOMPOSED : constant := 16#00000001#;
   MB_COMPOSITE : constant := 16#00000002#;
   MB_USEGLYPHCHARS : constant := 16#00000004#;
   MB_ERR_INVALID_CHARS : constant := 16#00000008#;
   WC_COMPOSITECHECK : constant := 16#00000200#;
   WC_DISCARDNS : constant := 16#00000010#;
   WC_SEPCHARS : constant := 16#00000020#;
   WC_DEFAULTCHAR : constant := 16#00000040#;
   WC_ERR_INVALID_CHARS : constant := 16#00000080#;
   WC_NO_BEST_FIT_CHARS : constant := 16#00000400#;
   CT_CTYPE1 : constant := 16#00000001#;
   CT_CTYPE2 : constant := 16#00000002#;
   CT_CTYPE3 : constant := 16#00000004#;
   C1_UPPER : constant := 16#0001#;
   C1_LOWER : constant := 16#0002#;
   C1_DIGIT : constant := 16#0004#;
   C1_SPACE : constant := 16#0008#;
   C1_PUNCT : constant := 16#0010#;
   C1_CNTRL : constant := 16#0020#;
   C1_BLANK : constant := 16#0040#;
   C1_XDIGIT : constant := 16#0080#;
   C1_ALPHA : constant := 16#0100#;
   C1_DEFINED : constant := 16#0200#;
   C2_LEFTTORIGHT : constant := 16#0001#;
   C2_RIGHTTOLEFT : constant := 16#0002#;
   C2_EUROPENUMBER : constant := 16#0003#;
   C2_EUROPESEPARATOR : constant := 16#0004#;
   C2_EUROPETERMINATOR : constant := 16#0005#;
   C2_ARABICNUMBER : constant := 16#0006#;
   C2_COMMONSEPARATOR : constant := 16#0007#;
   C2_BLOCKSEPARATOR : constant := 16#0008#;
   C2_SEGMENTSEPARATOR : constant := 16#0009#;
   C2_WHITESPACE : constant := 16#000A#;
   C2_OTHERNEUTRAL : constant := 16#000B#;
   C2_NOTAPPLICABLE : constant := 16#0000#;
   C3_NONSPACING : constant := 16#0001#;
   C3_DIACRITIC : constant := 16#0002#;
   C3_VOWELMARK : constant := 16#0004#;
   C3_SYMBOL : constant := 16#0008#;
   C3_KATAKANA : constant := 16#0010#;
   C3_HIRAGANA : constant := 16#0020#;
   C3_HALFWIDTH : constant := 16#0040#;
   C3_FULLWIDTH : constant := 16#0080#;
   C3_IDEOGRAPH : constant := 16#0100#;
   C3_KASHIDA : constant := 16#0200#;
   C3_LEXICAL : constant := 16#0400#;
   C3_HIGHSURROGATE : constant := 16#0800#;
   C3_LOWSURROGATE : constant := 16#1000#;
   C3_ALPHA : constant := 16#8000#;
   C3_NOTAPPLICABLE : constant := 16#0000#;
   NORM_IGNORECASE : constant := 16#00000001#;
   NORM_IGNORENONSPACE : constant := 16#00000002#;
   NORM_IGNORESYMBOLS : constant := 16#00000004#;
   LINGUISTIC_IGNORECASE : constant := 16#00000010#;
   LINGUISTIC_IGNOREDIACRITIC : constant := 16#00000020#;
   NORM_IGNOREKANATYPE : constant := 16#00010000#;
   NORM_IGNOREWIDTH : constant := 16#00020000#;
   NORM_LINGUISTIC_CASING : constant := 16#08000000#;
   MAP_FOLDCZONE : constant := 16#00000010#;
   MAP_PRECOMPOSED : constant := 16#00000020#;
   MAP_COMPOSITE : constant := 16#00000040#;
   MAP_FOLDDIGITS : constant := 16#00000080#;
   MAP_EXPAND_LIGATURES : constant := 16#00002000#;
   LCMAP_LOWERCASE : constant := 16#00000100#;
   LCMAP_UPPERCASE : constant := 16#00000200#;
   LCMAP_TITLECASE : constant := 16#00000300#;
   LCMAP_SORTKEY : constant := 16#00000400#;
   LCMAP_BYTEREV : constant := 16#00000800#;
   LCMAP_HIRAGANA : constant := 16#00100000#;
   LCMAP_KATAKANA : constant := 16#00200000#;
   LCMAP_HALFWIDTH : constant := 16#00400000#;
   LCMAP_FULLWIDTH : constant := 16#00800000#;
   LCMAP_LINGUISTIC_CASING : constant := 16#01000000#;
   LCMAP_SIMPLIFIED_CHINESE : constant := 16#02000000#;
   LCMAP_TRADITIONAL_CHINESE : constant := 16#04000000#;
   LCMAP_SORTHANDLE : constant := 16#20000000#;
   LCMAP_HASH : constant := 16#00040000#;
   FIND_STARTSWITH : constant := 16#00100000#;
   FIND_ENDSWITH : constant := 16#00200000#;
   FIND_FROMSTART : constant := 16#00400000#;
   FIND_FROMEND : constant := 16#00800000#;
   LGRPID_INSTALLED : constant := 16#00000001#;
   LGRPID_SUPPORTED : constant := 16#00000002#;
   LCID_INSTALLED : constant := 16#00000001#;
   LCID_SUPPORTED : constant := 16#00000002#;
   LCID_ALTERNATE_SORTS : constant := 16#00000004#;
   LOCALE_ALL : constant := 0;
   LOCALE_WINDOWS : constant := 16#00000001#;
   LOCALE_SUPPLEMENTAL : constant := 16#00000002#;
   LOCALE_ALTERNATE_SORTS : constant := 16#00000004#;
   LOCALE_REPLACEMENT : constant := 16#00000008#;
   LOCALE_NEUTRALDATA : constant := 16#00000010#;
   LOCALE_SPECIFICDATA : constant := 16#00000020#;
   CP_INSTALLED : constant := 16#00000001#;
   CP_SUPPORTED : constant := 16#00000002#;
   SORT_STRINGSORT : constant := 16#00001000#;
   SORT_DIGITSASNUMBERS : constant := 16#00000008#;
   CSTR_LESS_THAN : constant := 1;
   CSTR_EQUAL : constant := 2;
   CSTR_GREATER_THAN : constant := 3;
   CP_ACP : constant := 0;
   CP_OEMCP : constant := 1;
   CP_MACCP : constant := 2;
   CP_THREAD_ACP : constant := 3;
   CP_SYMBOL : constant := 42;
   CP_UTF7 : constant := 65000;
   CP_UTF8 : constant := 65001;
   CTRY_DEFAULT : constant := 0;
   CTRY_ALBANIA : constant := 355;
   CTRY_ALGERIA : constant := 213;
   CTRY_ARGENTINA : constant := 54;
   CTRY_ARMENIA : constant := 374;
   CTRY_AUSTRALIA : constant := 61;
   CTRY_AUSTRIA : constant := 43;
   CTRY_AZERBAIJAN : constant := 994;
   CTRY_BAHRAIN : constant := 973;
   CTRY_BELARUS : constant := 375;
   CTRY_BELGIUM : constant := 32;
   CTRY_BELIZE : constant := 501;
   CTRY_BOLIVIA : constant := 591;
   CTRY_BRAZIL : constant := 55;
   CTRY_BRUNEI_DARUSSALAM : constant := 673;
   CTRY_BULGARIA : constant := 359;
   CTRY_CANADA : constant := 2;
   CTRY_CARIBBEAN : constant := 1;
   CTRY_CHILE : constant := 56;
   CTRY_COLOMBIA : constant := 57;
   CTRY_COSTA_RICA : constant := 506;
   CTRY_CROATIA : constant := 385;
   CTRY_CZECH : constant := 420;
   CTRY_DENMARK : constant := 45;
   CTRY_DOMINICAN_REPUBLIC : constant := 1;
   CTRY_ECUADOR : constant := 593;
   CTRY_EGYPT : constant := 20;
   CTRY_EL_SALVADOR : constant := 503;
   CTRY_ESTONIA : constant := 372;
   CTRY_FAEROE_ISLANDS : constant := 298;
   CTRY_FINLAND : constant := 358;
   CTRY_FRANCE : constant := 33;
   CTRY_GEORGIA : constant := 995;
   CTRY_GERMANY : constant := 49;
   CTRY_GREECE : constant := 30;
   CTRY_GUATEMALA : constant := 502;
   CTRY_HONDURAS : constant := 504;
   CTRY_HONG_KONG : constant := 852;
   CTRY_HUNGARY : constant := 36;
   CTRY_ICELAND : constant := 354;
   CTRY_INDIA : constant := 91;
   CTRY_INDONESIA : constant := 62;
   CTRY_IRAN : constant := 981;
   CTRY_IRAQ : constant := 964;
   CTRY_IRELAND : constant := 353;
   CTRY_ISRAEL : constant := 972;
   CTRY_ITALY : constant := 39;
   CTRY_JAMAICA : constant := 1;
   CTRY_JAPAN : constant := 81;
   CTRY_JORDAN : constant := 962;
   CTRY_KAZAKSTAN : constant := 7;
   CTRY_KENYA : constant := 254;
   CTRY_KUWAIT : constant := 965;
   CTRY_KYRGYZSTAN : constant := 996;
   CTRY_LATVIA : constant := 371;
   CTRY_LEBANON : constant := 961;
   CTRY_LIBYA : constant := 218;
   CTRY_LIECHTENSTEIN : constant := 41;
   CTRY_LITHUANIA : constant := 370;
   CTRY_LUXEMBOURG : constant := 352;
   CTRY_MACAU : constant := 853;
   CTRY_MACEDONIA : constant := 389;
   CTRY_MALAYSIA : constant := 60;
   CTRY_MALDIVES : constant := 960;
   CTRY_MEXICO : constant := 52;
   CTRY_MONACO : constant := 33;
   CTRY_MONGOLIA : constant := 976;
   CTRY_MOROCCO : constant := 212;
   CTRY_NETHERLANDS : constant := 31;
   CTRY_NEW_ZEALAND : constant := 64;
   CTRY_NICARAGUA : constant := 505;
   CTRY_NORWAY : constant := 47;
   CTRY_OMAN : constant := 968;
   CTRY_PAKISTAN : constant := 92;
   CTRY_PANAMA : constant := 507;
   CTRY_PARAGUAY : constant := 595;
   CTRY_PERU : constant := 51;
   CTRY_PHILIPPINES : constant := 63;
   CTRY_POLAND : constant := 48;
   CTRY_PORTUGAL : constant := 351;
   CTRY_PRCHINA : constant := 86;
   CTRY_PUERTO_RICO : constant := 1;
   CTRY_QATAR : constant := 974;
   CTRY_ROMANIA : constant := 40;
   CTRY_RUSSIA : constant := 7;
   CTRY_SAUDI_ARABIA : constant := 966;
   CTRY_SERBIA : constant := 381;
   CTRY_SINGAPORE : constant := 65;
   CTRY_SLOVAK : constant := 421;
   CTRY_SLOVENIA : constant := 386;
   CTRY_SOUTH_AFRICA : constant := 27;
   CTRY_SOUTH_KOREA : constant := 82;
   CTRY_SPAIN : constant := 34;
   CTRY_SWEDEN : constant := 46;
   CTRY_SWITZERLAND : constant := 41;
   CTRY_SYRIA : constant := 963;
   CTRY_TAIWAN : constant := 886;
   CTRY_TATARSTAN : constant := 7;
   CTRY_THAILAND : constant := 66;
   CTRY_TRINIDAD_Y_TOBAGO : constant := 1;
   CTRY_TUNISIA : constant := 216;
   CTRY_TURKEY : constant := 90;
   CTRY_UAE : constant := 971;
   CTRY_UKRAINE : constant := 380;
   CTRY_UNITED_KINGDOM : constant := 44;
   CTRY_UNITED_STATES : constant := 1;
   CTRY_URUGUAY : constant := 598;
   CTRY_UZBEKISTAN : constant := 7;
   CTRY_VENEZUELA : constant := 58;
   CTRY_VIET_NAM : constant := 84;
   CTRY_YEMEN : constant := 967;
   CTRY_ZIMBABWE : constant := 263;
   LOCALE_NOUSEROVERRIDE : constant := 16#80000000#;
   LOCALE_USE_CP_ACP : constant := 16#40000000#;
   LOCALE_RETURN_NUMBER : constant := 16#20000000#;
   LOCALE_RETURN_GENITIVE_NAMES : constant := 16#10000000#;
   LOCALE_ALLOW_NEUTRAL_NAMES : constant := 16#08000000#;
   LOCALE_SLOCALIZEDDISPLAYNAME : constant := 16#00000002#;
   LOCALE_SENGLISHDISPLAYNAME : constant := 16#00000072#;
   LOCALE_SNATIVEDISPLAYNAME : constant := 16#00000073#;
   LOCALE_SLOCALIZEDLANGUAGENAME : constant := 16#0000006f#;
   LOCALE_SENGLISHLANGUAGENAME : constant := 16#00001001#;
   LOCALE_SNATIVELANGUAGENAME : constant := 16#00000004#;
   LOCALE_SLOCALIZEDCOUNTRYNAME : constant := 16#00000006#;
   LOCALE_SENGLISHCOUNTRYNAME : constant := 16#00001002#;
   LOCALE_SNATIVECOUNTRYNAME : constant := 16#00000008#;
   LOCALE_IDIALINGCODE : constant := 16#00000005#;
   LOCALE_SLIST : constant := 16#0000000C#;
   LOCALE_IMEASURE : constant := 16#0000000D#;
   LOCALE_SDECIMAL : constant := 16#0000000E#;
   LOCALE_STHOUSAND : constant := 16#0000000F#;
   LOCALE_SGROUPING : constant := 16#00000010#;
   LOCALE_IDIGITS : constant := 16#00000011#;
   LOCALE_ILZERO : constant := 16#00000012#;
   LOCALE_INEGNUMBER : constant := 16#00001010#;
   LOCALE_SNATIVEDIGITS : constant := 16#00000013#;
   LOCALE_SCURRENCY : constant := 16#00000014#;
   LOCALE_SINTLSYMBOL : constant := 16#00000015#;
   LOCALE_SMONDECIMALSEP : constant := 16#00000016#;
   LOCALE_SMONTHOUSANDSEP : constant := 16#00000017#;
   LOCALE_SMONGROUPING : constant := 16#00000018#;
   LOCALE_ICURRDIGITS : constant := 16#00000019#;
   LOCALE_ICURRENCY : constant := 16#0000001B#;
   LOCALE_INEGCURR : constant := 16#0000001C#;
   LOCALE_SSHORTDATE : constant := 16#0000001F#;
   LOCALE_SLONGDATE : constant := 16#00000020#;
   LOCALE_STIMEFORMAT : constant := 16#00001003#;
   LOCALE_SAM : constant := 16#00000028#;
   LOCALE_SPM : constant := 16#00000029#;
   LOCALE_ICALENDARTYPE : constant := 16#00001009#;
   LOCALE_IOPTIONALCALENDAR : constant := 16#0000100B#;
   LOCALE_IFIRSTDAYOFWEEK : constant := 16#0000100C#;
   LOCALE_IFIRSTWEEKOFYEAR : constant := 16#0000100D#;
   LOCALE_SDAYNAME1 : constant := 16#0000002A#;
   LOCALE_SDAYNAME2 : constant := 16#0000002B#;
   LOCALE_SDAYNAME3 : constant := 16#0000002C#;
   LOCALE_SDAYNAME4 : constant := 16#0000002D#;
   LOCALE_SDAYNAME5 : constant := 16#0000002E#;
   LOCALE_SDAYNAME6 : constant := 16#0000002F#;
   LOCALE_SDAYNAME7 : constant := 16#00000030#;
   LOCALE_SABBREVDAYNAME1 : constant := 16#00000031#;
   LOCALE_SABBREVDAYNAME2 : constant := 16#00000032#;
   LOCALE_SABBREVDAYNAME3 : constant := 16#00000033#;
   LOCALE_SABBREVDAYNAME4 : constant := 16#00000034#;
   LOCALE_SABBREVDAYNAME5 : constant := 16#00000035#;
   LOCALE_SABBREVDAYNAME6 : constant := 16#00000036#;
   LOCALE_SABBREVDAYNAME7 : constant := 16#00000037#;
   LOCALE_SMONTHNAME1 : constant := 16#00000038#;
   LOCALE_SMONTHNAME2 : constant := 16#00000039#;
   LOCALE_SMONTHNAME3 : constant := 16#0000003A#;
   LOCALE_SMONTHNAME4 : constant := 16#0000003B#;
   LOCALE_SMONTHNAME5 : constant := 16#0000003C#;
   LOCALE_SMONTHNAME6 : constant := 16#0000003D#;
   LOCALE_SMONTHNAME7 : constant := 16#0000003E#;
   LOCALE_SMONTHNAME8 : constant := 16#0000003F#;
   LOCALE_SMONTHNAME9 : constant := 16#00000040#;
   LOCALE_SMONTHNAME10 : constant := 16#00000041#;
   LOCALE_SMONTHNAME11 : constant := 16#00000042#;
   LOCALE_SMONTHNAME12 : constant := 16#00000043#;
   LOCALE_SMONTHNAME13 : constant := 16#0000100E#;
   LOCALE_SABBREVMONTHNAME1 : constant := 16#00000044#;
   LOCALE_SABBREVMONTHNAME2 : constant := 16#00000045#;
   LOCALE_SABBREVMONTHNAME3 : constant := 16#00000046#;
   LOCALE_SABBREVMONTHNAME4 : constant := 16#00000047#;
   LOCALE_SABBREVMONTHNAME5 : constant := 16#00000048#;
   LOCALE_SABBREVMONTHNAME6 : constant := 16#00000049#;
   LOCALE_SABBREVMONTHNAME7 : constant := 16#0000004A#;
   LOCALE_SABBREVMONTHNAME8 : constant := 16#0000004B#;
   LOCALE_SABBREVMONTHNAME9 : constant := 16#0000004C#;
   LOCALE_SABBREVMONTHNAME10 : constant := 16#0000004D#;
   LOCALE_SABBREVMONTHNAME11 : constant := 16#0000004E#;
   LOCALE_SABBREVMONTHNAME12 : constant := 16#0000004F#;
   LOCALE_SABBREVMONTHNAME13 : constant := 16#0000100F#;
   LOCALE_SPOSITIVESIGN : constant := 16#00000050#;
   LOCALE_SNEGATIVESIGN : constant := 16#00000051#;
   LOCALE_IPOSSIGNPOSN : constant := 16#00000052#;
   LOCALE_INEGSIGNPOSN : constant := 16#00000053#;
   LOCALE_IPOSSYMPRECEDES : constant := 16#00000054#;
   LOCALE_IPOSSEPBYSPACE : constant := 16#00000055#;
   LOCALE_INEGSYMPRECEDES : constant := 16#00000056#;
   LOCALE_INEGSEPBYSPACE : constant := 16#00000057#;
   LOCALE_FONTSIGNATURE : constant := 16#00000058#;
   LOCALE_SISO639LANGNAME : constant := 16#00000059#;
   LOCALE_SISO3166CTRYNAME : constant := 16#0000005A#;
   LOCALE_IPAPERSIZE : constant := 16#0000100A#;
   LOCALE_SENGCURRNAME : constant := 16#00001007#;
   LOCALE_SNATIVECURRNAME : constant := 16#00001008#;
   LOCALE_SYEARMONTH : constant := 16#00001006#;
   LOCALE_SSORTNAME : constant := 16#00001013#;
   LOCALE_IDIGITSUBSTITUTION : constant := 16#00001014#;
   LOCALE_SNAME : constant := 16#0000005c#;
   LOCALE_SDURATION : constant := 16#0000005d#;
   LOCALE_SSHORTESTDAYNAME1 : constant := 16#00000060#;
   LOCALE_SSHORTESTDAYNAME2 : constant := 16#00000061#;
   LOCALE_SSHORTESTDAYNAME3 : constant := 16#00000062#;
   LOCALE_SSHORTESTDAYNAME4 : constant := 16#00000063#;
   LOCALE_SSHORTESTDAYNAME5 : constant := 16#00000064#;
   LOCALE_SSHORTESTDAYNAME6 : constant := 16#00000065#;
   LOCALE_SSHORTESTDAYNAME7 : constant := 16#00000066#;
   LOCALE_SISO639LANGNAME2 : constant := 16#00000067#;
   LOCALE_SISO3166CTRYNAME2 : constant := 16#00000068#;
   LOCALE_SNAN : constant := 16#00000069#;
   LOCALE_SPOSINFINITY : constant := 16#0000006a#;
   LOCALE_SNEGINFINITY : constant := 16#0000006b#;
   LOCALE_SSCRIPTS : constant := 16#0000006c#;
   LOCALE_SPARENT : constant := 16#0000006d#;
   LOCALE_SCONSOLEFALLBACKNAME : constant := 16#0000006e#;
   LOCALE_IREADINGLAYOUT : constant := 16#00000070#;
   LOCALE_INEUTRAL : constant := 16#00000071#;
   LOCALE_INEGATIVEPERCENT : constant := 16#00000074#;
   LOCALE_IPOSITIVEPERCENT : constant := 16#00000075#;
   LOCALE_SPERCENT : constant := 16#00000076#;
   LOCALE_SPERMILLE : constant := 16#00000077#;
   LOCALE_SMONTHDAY : constant := 16#00000078#;
   LOCALE_SSHORTTIME : constant := 16#00000079#;
   LOCALE_SOPENTYPELANGUAGETAG : constant := 16#0000007a#;
   LOCALE_SSORTLOCALE : constant := 16#0000007b#;
   LOCALE_SRELATIVELONGDATE : constant := 16#0000007c#;
   LOCALE_SSHORTESTAM : constant := 16#0000007e#;
   LOCALE_SSHORTESTPM : constant := 16#0000007f#;
   LOCALE_IDEFAULTCODEPAGE : constant := 16#0000000B#;
   LOCALE_IDEFAULTANSICODEPAGE : constant := 16#00001004#;
   LOCALE_IDEFAULTMACCODEPAGE : constant := 16#00001011#;
   LOCALE_IDEFAULTEBCDICCODEPAGE : constant := 16#00001012#;
   LOCALE_ILANGUAGE : constant := 16#00000001#;
   LOCALE_SABBREVLANGNAME : constant := 16#00000003#;
   LOCALE_SABBREVCTRYNAME : constant := 16#00000007#;
   LOCALE_IGEOID : constant := 16#0000005B#;
   LOCALE_IDEFAULTLANGUAGE : constant := 16#00000009#;
   LOCALE_IDEFAULTCOUNTRY : constant := 16#0000000A#;
   LOCALE_IINTLCURRDIGITS : constant := 16#0000001A#;
   LOCALE_SDATE : constant := 16#0000001D#;
   LOCALE_STIME : constant := 16#0000001E#;
   LOCALE_IDATE : constant := 16#00000021#;
   LOCALE_ILDATE : constant := 16#00000022#;
   LOCALE_ITIME : constant := 16#00000023#;
   LOCALE_ITIMEMARKPOSN : constant := 16#00001005#;
   LOCALE_ICENTURY : constant := 16#00000024#;
   LOCALE_ITLZERO : constant := 16#00000025#;
   LOCALE_IDAYLZERO : constant := 16#00000026#;
   LOCALE_IMONLZERO : constant := 16#00000027#;
   LOCALE_SKEYBOARDSTOINSTALL : constant := 16#0000005e#;
   TIME_NOMINUTESORSECONDS : constant := 16#00000001#;
   TIME_NOSECONDS : constant := 16#00000002#;
   TIME_NOTIMEMARKER : constant := 16#00000004#;
   TIME_FORCE24HOURFORMAT : constant := 16#00000008#;
   DATE_SHORTDATE : constant := 16#00000001#;
   DATE_LONGDATE : constant := 16#00000002#;
   DATE_USE_ALT_CALENDAR : constant := 16#00000004#;
   DATE_YEARMONTH : constant := 16#00000008#;
   DATE_LTRREADING : constant := 16#00000010#;
   DATE_RTLREADING : constant := 16#00000020#;
   DATE_AUTOLAYOUT : constant := 16#00000040#;
   DATE_MONTHDAY : constant := 16#00000080#;
   CAL_ICALINTVALUE : constant := 16#00000001#;
   CAL_SCALNAME : constant := 16#00000002#;
   CAL_IYEAROFFSETRANGE : constant := 16#00000003#;
   CAL_SERASTRING : constant := 16#00000004#;
   CAL_SSHORTDATE : constant := 16#00000005#;
   CAL_SLONGDATE : constant := 16#00000006#;
   CAL_SDAYNAME1 : constant := 16#00000007#;
   CAL_SDAYNAME2 : constant := 16#00000008#;
   CAL_SDAYNAME3 : constant := 16#00000009#;
   CAL_SDAYNAME4 : constant := 16#0000000a#;
   CAL_SDAYNAME5 : constant := 16#0000000b#;
   CAL_SDAYNAME6 : constant := 16#0000000c#;
   CAL_SDAYNAME7 : constant := 16#0000000d#;
   CAL_SABBREVDAYNAME1 : constant := 16#0000000e#;
   CAL_SABBREVDAYNAME2 : constant := 16#0000000f#;
   CAL_SABBREVDAYNAME3 : constant := 16#00000010#;
   CAL_SABBREVDAYNAME4 : constant := 16#00000011#;
   CAL_SABBREVDAYNAME5 : constant := 16#00000012#;
   CAL_SABBREVDAYNAME6 : constant := 16#00000013#;
   CAL_SABBREVDAYNAME7 : constant := 16#00000014#;
   CAL_SMONTHNAME1 : constant := 16#00000015#;
   CAL_SMONTHNAME2 : constant := 16#00000016#;
   CAL_SMONTHNAME3 : constant := 16#00000017#;
   CAL_SMONTHNAME4 : constant := 16#00000018#;
   CAL_SMONTHNAME5 : constant := 16#00000019#;
   CAL_SMONTHNAME6 : constant := 16#0000001a#;
   CAL_SMONTHNAME7 : constant := 16#0000001b#;
   CAL_SMONTHNAME8 : constant := 16#0000001c#;
   CAL_SMONTHNAME9 : constant := 16#0000001d#;
   CAL_SMONTHNAME10 : constant := 16#0000001e#;
   CAL_SMONTHNAME11 : constant := 16#0000001f#;
   CAL_SMONTHNAME12 : constant := 16#00000020#;
   CAL_SMONTHNAME13 : constant := 16#00000021#;
   CAL_SABBREVMONTHNAME1 : constant := 16#00000022#;
   CAL_SABBREVMONTHNAME2 : constant := 16#00000023#;
   CAL_SABBREVMONTHNAME3 : constant := 16#00000024#;
   CAL_SABBREVMONTHNAME4 : constant := 16#00000025#;
   CAL_SABBREVMONTHNAME5 : constant := 16#00000026#;
   CAL_SABBREVMONTHNAME6 : constant := 16#00000027#;
   CAL_SABBREVMONTHNAME7 : constant := 16#00000028#;
   CAL_SABBREVMONTHNAME8 : constant := 16#00000029#;
   CAL_SABBREVMONTHNAME9 : constant := 16#0000002a#;
   CAL_SABBREVMONTHNAME10 : constant := 16#0000002b#;
   CAL_SABBREVMONTHNAME11 : constant := 16#0000002c#;
   CAL_SABBREVMONTHNAME12 : constant := 16#0000002d#;
   CAL_SABBREVMONTHNAME13 : constant := 16#0000002e#;
   CAL_SYEARMONTH : constant := 16#0000002f#;
   CAL_ITWODIGITYEARMAX : constant := 16#00000030#;
   CAL_SSHORTESTDAYNAME1 : constant := 16#00000031#;
   CAL_SSHORTESTDAYNAME2 : constant := 16#00000032#;
   CAL_SSHORTESTDAYNAME3 : constant := 16#00000033#;
   CAL_SSHORTESTDAYNAME4 : constant := 16#00000034#;
   CAL_SSHORTESTDAYNAME5 : constant := 16#00000035#;
   CAL_SSHORTESTDAYNAME6 : constant := 16#00000036#;
   CAL_SSHORTESTDAYNAME7 : constant := 16#00000037#;
   CAL_SMONTHDAY : constant := 16#00000038#;
   CAL_SABBREVERASTRING : constant := 16#00000039#;
   CAL_SRELATIVELONGDATE : constant := 16#0000003a#;
   CAL_SENGLISHERANAME : constant := 16#0000003b#;
   CAL_SENGLISHABBREVERANAME : constant := 16#0000003c#;
   CAL_SJAPANESEERAFIRSTYEAR : constant := 16#0000003d#;
   ENUM_ALL_CALENDARS : constant := 16#ffffffff#;
   CAL_GREGORIAN : constant := 1;
   CAL_GREGORIAN_US : constant := 2;
   CAL_JAPAN : constant := 3;
   CAL_TAIWAN : constant := 4;
   CAL_KOREA : constant := 5;
   CAL_HIJRI : constant := 6;
   CAL_THAI : constant := 7;
   CAL_HEBREW : constant := 8;
   CAL_GREGORIAN_ME_FRENCH : constant := 9;
   CAL_GREGORIAN_ARABIC : constant := 10;
   CAL_GREGORIAN_XLIT_ENGLISH : constant := 11;
   CAL_GREGORIAN_XLIT_FRENCH : constant := 12;
   CAL_PERSIAN : constant := 22;
   CAL_UMALQURA : constant := 23;
   LGRPID_WESTERN_EUROPE : constant := 16#0001#;
   LGRPID_CENTRAL_EUROPE : constant := 16#0002#;
   LGRPID_BALTIC : constant := 16#0003#;
   LGRPID_GREEK : constant := 16#0004#;
   LGRPID_CYRILLIC : constant := 16#0005#;
   LGRPID_TURKIC : constant := 16#0006#;
   LGRPID_TURKISH : constant := 16#0006#;
   LGRPID_JAPANESE : constant := 16#0007#;
   LGRPID_KOREAN : constant := 16#0008#;
   LGRPID_TRADITIONAL_CHINESE : constant := 16#0009#;
   LGRPID_SIMPLIFIED_CHINESE : constant := 16#000a#;
   LGRPID_THAI : constant := 16#000b#;
   LGRPID_HEBREW : constant := 16#000c#;
   LGRPID_ARABIC : constant := 16#000d#;
   LGRPID_VIETNAMESE : constant := 16#000e#;
   LGRPID_INDIC : constant := 16#000f#;
   LGRPID_GEORGIAN : constant := 16#0010#;
   LGRPID_ARMENIAN : constant := 16#0011#;
   MUI_LANGUAGE_ID : constant := 16#4#;
   MUI_LANGUAGE_NAME : constant := 16#8#;
   MUI_MERGE_SYSTEM_FALLBACK : constant := 16#10#;
   MUI_MERGE_USER_FALLBACK : constant := 16#20#;
   MUI_THREAD_LANGUAGES : constant := 16#40#;
   MUI_CONSOLE_FILTER : constant := 16#100#;
   MUI_COMPLEX_SCRIPT_FILTER : constant := 16#200#;
   MUI_RESET_FILTERS : constant := 16#001#;
   MUI_USER_PREFERRED_UI_LANGUAGES : constant := 16#10#;
   MUI_USE_INSTALLED_LANGUAGES : constant := 16#20#;
   MUI_USE_SEARCH_ALL_LANGUAGES : constant := 16#40#;
   MUI_LANG_NEUTRAL_PE_FILE : constant := 16#100#;
   MUI_NON_LANG_NEUTRAL_FILE : constant := 16#200#;
   MUI_MACHINE_LANGUAGE_SETTINGS : constant := 16#400#;
   MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL : constant := 16#001#;
   MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN : constant := 16#002#;
   MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI : constant := 16#004#;
   MUI_QUERY_TYPE : constant := 16#001#;
   MUI_QUERY_CHECKSUM : constant := 16#002#;
   MUI_QUERY_LANGUAGE_NAME : constant := 16#004#;
   MUI_QUERY_RESOURCE_TYPES : constant := 16#008#;
   MUI_FILEINFO_VERSION : constant := 16#001#;
   MUI_FULL_LANGUAGE : constant := 16#01#;
   MUI_PARTIAL_LANGUAGE : constant := 16#02#;
   MUI_LIP_LANGUAGE : constant := 16#04#;
   MUI_LANGUAGE_INSTALLED : constant := 16#20#;
   MUI_LANGUAGE_LICENSED : constant := 16#40#;
   GEOID_NOT_AVAILABLE : constant := -1;
   IDN_ALLOW_UNASSIGNED : constant := 16#01#;
   IDN_USE_STD3_ASCII_RULES : constant := 16#02#;
   IDN_EMAIL_ADDRESS : constant := 16#04#;
   IDN_RAW_PUNYCODE : constant := 16#08#;
   VS_ALLOW_LATIN : constant := 16#0001#;
   GSS_ALLOW_INHERITED_COMMON : constant := 16#0001#;
   -- #include <stringapiset.h>
   -- #include <winnls.h>
   -- #include <stringapiset.h>
   -- #include <winnls.h>
   MUI_FORMAT_REG_COMPAT : constant := 16#0001#;
   MUI_FORMAT_INF_COMPAT : constant := 16#0002#;
   MUI_VERIFY_FILE_EXISTS : constant := 16#0004#;
   MUI_SKIP_STRING_CACHE : constant := 16#0008#;
   MUI_IMMUTABLE_LOOKUP : constant := 16#0010#;
   -- #include <windows.h>
   -- #include <wincon.h>
   -- #include <wincontypes.h>
   RIGHT_ALT_PRESSED : constant := 16#0001#;
   LEFT_ALT_PRESSED : constant := 16#0002#;
   RIGHT_CTRL_PRESSED : constant := 16#0004#;
   LEFT_CTRL_PRESSED : constant := 16#0008#;
   SHIFT_PRESSED : constant := 16#0010#;
   NUMLOCK_ON : constant := 16#0020#;
   SCROLLLOCK_ON : constant := 16#0040#;
   CAPSLOCK_ON : constant := 16#0080#;
   ENHANCED_KEY : constant := 16#0100#;
   NLS_DBCSCHAR : constant := 16#00010000#;
   NLS_ALPHANUMERIC : constant := 16#00000000#;
   NLS_KATAKANA : constant := 16#00020000#;
   NLS_HIRAGANA : constant := 16#00040000#;
   NLS_ROMAN : constant := 16#00400000#;
   NLS_IME_CONVERSION : constant := 16#00800000#;
   ALTNUMPAD_BIT : constant := 16#04000000#;
   NLS_IME_DISABLE : constant := 16#20000000#;
   FROM_LEFT_1ST_BUTTON_PRESSED : constant := 16#0001#;
   RIGHTMOST_BUTTON_PRESSED : constant := 16#0002#;
   FROM_LEFT_2ND_BUTTON_PRESSED : constant := 16#0004#;
   FROM_LEFT_3RD_BUTTON_PRESSED : constant := 16#0008#;
   FROM_LEFT_4TH_BUTTON_PRESSED : constant := 16#0010#;
   MOUSE_MOVED : constant := 16#0001#;
   DOUBLE_CLICK : constant := 16#0002#;
   MOUSE_WHEELED : constant := 16#0004#;
   MOUSE_HWHEELED : constant := 16#0008#;
   KEY_EVENT : constant := 16#0001#;
   MOUSE_EVENT : constant := 16#0002#;
   WINDOW_BUFFER_SIZE_EVENT : constant := 16#0004#;
   MENU_EVENT : constant := 16#0008#;
   FOCUS_EVENT : constant := 16#0010#;
   -- #include <wincon.h>
   -- #include <consoleapi.h>
   ATTACH_PARENT_PROCESS : constant := Interfaces.C.unsigned_long'mod(-1);
   ENABLE_PROCESSED_INPUT : constant := 16#0001#;
   ENABLE_LINE_INPUT : constant := 16#0002#;
   ENABLE_ECHO_INPUT : constant := 16#0004#;
   ENABLE_WINDOW_INPUT : constant := 16#0008#;
   ENABLE_MOUSE_INPUT : constant := 16#0010#;
   ENABLE_INSERT_MODE : constant := 16#0020#;
   ENABLE_QUICK_EDIT_MODE : constant := 16#0040#;
   ENABLE_EXTENDED_FLAGS : constant := 16#0080#;
   ENABLE_AUTO_POSITION : constant := 16#0100#;
   ENABLE_VIRTUAL_TERMINAL_INPUT : constant := 16#0200#;
   ENABLE_PROCESSED_OUTPUT : constant := 16#0001#;
   ENABLE_WRAP_AT_EOL_OUTPUT : constant := 16#0002#;
   ENABLE_VIRTUAL_TERMINAL_PROCESSING : constant := 16#0004#;
   DISABLE_NEWLINE_AUTO_RETURN : constant := 16#0008#;
   ENABLE_LVB_GRID_WORLDWIDE : constant := 16#0010#;
   CTRL_C_EVENT : constant := 0;
   CTRL_BREAK_EVENT : constant := 1;
   CTRL_CLOSE_EVENT : constant := 2;
   CTRL_LOGOFF_EVENT : constant := 5;
   CTRL_SHUTDOWN_EVENT : constant := 6;
   PSEUDOCONSOLE_INHERIT_CURSOR : constant := 16#1#;
   -- #include <wincon.h>
   -- #include <consoleapi2.h>
   FOREGROUND_BLUE : constant := 16#0001#;
   FOREGROUND_GREEN : constant := 16#0002#;
   FOREGROUND_RED : constant := 16#0004#;
   FOREGROUND_INTENSITY : constant := 16#0008#;
   BACKGROUND_BLUE : constant := 16#0010#;
   BACKGROUND_GREEN : constant := 16#0020#;
   BACKGROUND_RED : constant := 16#0040#;
   BACKGROUND_INTENSITY : constant := 16#0080#;
   COMMON_LVB_LEADING_BYTE : constant := 16#0100#;
   COMMON_LVB_TRAILING_BYTE : constant := 16#0200#;
   COMMON_LVB_GRID_HORIZONTAL : constant := 16#0400#;
   COMMON_LVB_GRID_LVERTICAL : constant := 16#0800#;
   COMMON_LVB_GRID_RVERTICAL : constant := 16#1000#;
   COMMON_LVB_REVERSE_VIDEO : constant := 16#4000#;
   COMMON_LVB_UNDERSCORE : constant := 16#8000#;
   COMMON_LVB_SBCSDBCS : constant := 16#0300#;
   -- #include <wincon.h>
   -- #include <consoleapi3.h>
   CONSOLE_NO_SELECTION : constant := 16#0000#;
   CONSOLE_SELECTION_IN_PROGRESS : constant := 16#0001#;
   CONSOLE_SELECTION_NOT_EMPTY : constant := 16#0002#;
   CONSOLE_MOUSE_SELECTION : constant := 16#0004#;
   CONSOLE_MOUSE_DOWN : constant := 16#0008#;
   HISTORY_NO_DUP_FLAG : constant := 16#1#;
   CONSOLE_FULLSCREEN : constant := 1;
   CONSOLE_FULLSCREEN_HARDWARE : constant := 2;
   CONSOLE_FULLSCREEN_MODE : constant := 1;
   CONSOLE_WINDOWED_MODE : constant := 2;
   -- #include <wincon.h>
   CONSOLE_TEXTMODE_BUFFER : constant := 1;
   -- #include <windows.h>
   -- #include <winver.h>
   -- #include <verrsrc.h>
   VS_VERSION_INFO : constant := 1;
   VS_USER_DEFINED : constant := 100;
   VS_FFI_SIGNATURE : constant := 16#FEEF04BD#;
   VS_FFI_STRUCVERSION : constant := 16#00010000#;
   VS_FFI_FILEFLAGSMASK : constant := 16#0000003F#;
   VS_FF_DEBUG : constant := 16#00000001#;
   VS_FF_PRERELEASE : constant := 16#00000002#;
   VS_FF_PATCHED : constant := 16#00000004#;
   VS_FF_PRIVATEBUILD : constant := 16#00000008#;
   VS_FF_INFOINFERRED : constant := 16#00000010#;
   VS_FF_SPECIALBUILD : constant := 16#00000020#;
   VOS_UNKNOWN : constant := 16#00000000#;
   VOS_DOS : constant := 16#00010000#;
   VOS_OS216 : constant := 16#00020000#;
   VOS_OS232 : constant := 16#00030000#;
   VOS_NT : constant := 16#00040000#;
   VOS_WINCE : constant := 16#00050000#;
   VOS_BASE : constant := 16#00000000#;
   VOS_WINDOWS16 : constant := 16#00000001#;
   VOS_PM16 : constant := 16#00000002#;
   VOS_PM32 : constant := 16#00000003#;
   VOS_WINDOWS32 : constant := 16#00000004#;
   VOS_DOS_WINDOWS16 : constant := 16#00010001#;
   VOS_DOS_WINDOWS32 : constant := 16#00010004#;
   VOS_OS216_PM16 : constant := 16#00020002#;
   VOS_OS232_PM32 : constant := 16#00030003#;
   VOS_NT_WINDOWS32 : constant := 16#00040004#;
   VFT_UNKNOWN : constant := 16#00000000#;
   VFT_APP : constant := 16#00000001#;
   VFT_DLL : constant := 16#00000002#;
   VFT_DRV : constant := 16#00000003#;
   VFT_FONT : constant := 16#00000004#;
   VFT_VXD : constant := 16#00000005#;
   VFT_STATIC_LIB : constant := 16#00000007#;
   VFT2_UNKNOWN : constant := 16#00000000#;
   VFT2_DRV_PRINTER : constant := 16#00000001#;
   VFT2_DRV_KEYBOARD : constant := 16#00000002#;
   VFT2_DRV_LANGUAGE : constant := 16#00000003#;
   VFT2_DRV_DISPLAY : constant := 16#00000004#;
   VFT2_DRV_MOUSE : constant := 16#00000005#;
   VFT2_DRV_NETWORK : constant := 16#00000006#;
   VFT2_DRV_SYSTEM : constant := 16#00000007#;
   VFT2_DRV_INSTALLABLE : constant := 16#00000008#;
   VFT2_DRV_SOUND : constant := 16#00000009#;
   VFT2_DRV_COMM : constant := 16#0000000A#;
   VFT2_DRV_INPUTMETHOD : constant := 16#0000000B#;
   VFT2_DRV_VERSIONED_PRINTER : constant := 16#0000000C#;
   VFT2_FONT_RASTER : constant := 16#00000001#;
   VFT2_FONT_VECTOR : constant := 16#00000002#;
   VFT2_FONT_TRUETYPE : constant := 16#00000003#;
   VFFF_ISSHAREDFILE : constant := 16#0001#;
   VFF_CURNEDEST : constant := 16#0001#;
   VFF_FILEINUSE : constant := 16#0002#;
   VFF_BUFFTOOSMALL : constant := 16#0004#;
   VIFF_FORCEINSTALL : constant := 16#0001#;
   VIFF_DONTDELETEOLD : constant := 16#0002#;
   VIF_TEMPFILE : constant := 16#00000001#;
   VIF_MISMATCH : constant := 16#00000002#;
   VIF_SRCOLD : constant := 16#00000004#;
   VIF_DIFFLANG : constant := 16#00000008#;
   VIF_DIFFCODEPG : constant := 16#00000010#;
   VIF_DIFFTYPE : constant := 16#00000020#;
   VIF_WRITEPROT : constant := 16#00000040#;
   VIF_FILEINUSE : constant := 16#00000080#;
   VIF_OUTOFSPACE : constant := 16#00000100#;
   VIF_ACCESSVIOLATION : constant := 16#00000200#;
   VIF_SHARINGVIOLATION : constant := 16#00000400#;
   VIF_CANNOTCREATE : constant := 16#00000800#;
   VIF_CANNOTDELETE : constant := 16#00001000#;
   VIF_CANNOTRENAME : constant := 16#00002000#;
   VIF_CANNOTDELETECUR : constant := 16#00004000#;
   VIF_OUTOFMEMORY : constant := 16#00008000#;
   VIF_CANNOTREADSRC : constant := 16#00010000#;
   VIF_CANNOTREADDST : constant := 16#00020000#;
   VIF_BUFFTOOSMALL : constant := 16#00040000#;
   VIF_CANNOTLOADLZ32 : constant := 16#00080000#;
   VIF_CANNOTLOADCABINET : constant := 16#00100000#;
   FILE_VER_GET_LOCALISED : constant := 16#01#;
   FILE_VER_GET_NEUTRAL : constant := 16#02#;
   FILE_VER_GET_PREFETCHED : constant := 16#04#;
   -- #include <winver.h>
   -- #include <windows.h>
   -- #include <winreg.h>
   RRF_RT_REG_NONE : constant := 16#00000001#;
   RRF_RT_REG_SZ : constant := 16#00000002#;
   RRF_RT_REG_EXPAND_SZ : constant := 16#00000004#;
   RRF_RT_REG_BINARY : constant := 16#00000008#;
   RRF_RT_REG_DWORD : constant := 16#00000010#;
   RRF_RT_REG_MULTI_SZ : constant := 16#00000020#;
   RRF_RT_REG_QWORD : constant := 16#00000040#;
   RRF_RT_DWORD : constant := ( Interfaces.C.Unsigned( RRF_RT_REG_BINARY )
       or Interfaces.C.Unsigned( RRF_RT_REG_DWORD ) );
   RRF_RT_QWORD : constant := ( Interfaces.C.Unsigned( RRF_RT_REG_BINARY )
       or Interfaces.C.Unsigned( RRF_RT_REG_QWORD ) );
   RRF_RT_ANY : constant := 16#0000ffff#;
   RRF_SUBKEY_WOW6464KEY : constant := 16#00010000#;
   RRF_SUBKEY_WOW6432KEY : constant := 16#00020000#;
   RRF_WOW64_MASK : constant := 16#00030000#;
   RRF_NOEXPAND : constant := 16#10000000#;
   RRF_ZEROONFAILURE : constant := 16#20000000#;
   REG_PROCESS_APPKEY : constant := 16#00000001#;
   PROVIDER_KEEPS_VALUE_LENGTH : constant := 16#1#;
   REG_MUI_STRING_TRUNCATE : constant := 16#00000001#;
   REG_SECURE_CONNECTION : constant := 1;
   -- #include <reason.h>
   SHTDN_REASON_FLAG_COMMENT_REQUIRED : constant := 16#01000000#;
   SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED : constant := 16#02000000#;
   SHTDN_REASON_FLAG_CLEAN_UI : constant := 16#04000000#;
   SHTDN_REASON_FLAG_DIRTY_UI : constant := 16#08000000#;
   SHTDN_REASON_FLAG_MOBILE_UI_RESERVED : constant := 16#10000000#;
   SHTDN_REASON_FLAG_USER_DEFINED : constant := 16#40000000#;
   SHTDN_REASON_FLAG_PLANNED : constant := 16#80000000#;
   SHTDN_REASON_MAJOR_OTHER : constant := 16#00000000#;
   SHTDN_REASON_MAJOR_NONE : constant := 16#00000000#;
   SHTDN_REASON_MAJOR_HARDWARE : constant := 16#00010000#;
   SHTDN_REASON_MAJOR_OPERATINGSYSTEM : constant := 16#00020000#;
   SHTDN_REASON_MAJOR_SOFTWARE : constant := 16#00030000#;
   SHTDN_REASON_MAJOR_APPLICATION : constant := 16#00040000#;
   SHTDN_REASON_MAJOR_SYSTEM : constant := 16#00050000#;
   SHTDN_REASON_MAJOR_POWER : constant := 16#00060000#;
   SHTDN_REASON_MAJOR_LEGACY_API : constant := 16#00070000#;
   SHTDN_REASON_MINOR_OTHER : constant := 16#00000000#;
   SHTDN_REASON_MINOR_NONE : constant := 16#000000ff#;
   SHTDN_REASON_MINOR_MAINTENANCE : constant := 16#00000001#;
   SHTDN_REASON_MINOR_INSTALLATION : constant := 16#00000002#;
   SHTDN_REASON_MINOR_UPGRADE : constant := 16#00000003#;
   SHTDN_REASON_MINOR_RECONFIG : constant := 16#00000004#;
   SHTDN_REASON_MINOR_HUNG : constant := 16#00000005#;
   SHTDN_REASON_MINOR_UNSTABLE : constant := 16#00000006#;
   SHTDN_REASON_MINOR_DISK : constant := 16#00000007#;
   SHTDN_REASON_MINOR_PROCESSOR : constant := 16#00000008#;
   SHTDN_REASON_MINOR_NETWORKCARD : constant := 16#00000009#;
   SHTDN_REASON_MINOR_POWER_SUPPLY : constant := 16#0000000a#;
   SHTDN_REASON_MINOR_CORDUNPLUGGED : constant := 16#0000000b#;
   SHTDN_REASON_MINOR_ENVIRONMENT : constant := 16#0000000c#;
   SHTDN_REASON_MINOR_HARDWARE_DRIVER : constant := 16#0000000d#;
   SHTDN_REASON_MINOR_OTHERDRIVER : constant := 16#0000000e#;
   SHTDN_REASON_MINOR_BLUESCREEN : constant := 16#0000000F#;
   SHTDN_REASON_MINOR_SERVICEPACK : constant := 16#00000010#;
   SHTDN_REASON_MINOR_HOTFIX : constant := 16#00000011#;
   SHTDN_REASON_MINOR_SECURITYFIX : constant := 16#00000012#;
   SHTDN_REASON_MINOR_SECURITY : constant := 16#00000013#;
   SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY : constant := 16#00000014#;
   SHTDN_REASON_MINOR_WMI : constant := 16#00000015#;
   SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL : constant := 16#00000016#;
   SHTDN_REASON_MINOR_HOTFIX_UNINSTALL : constant := 16#00000017#;
   SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL : constant := 16#00000018#;
   SHTDN_REASON_MINOR_MMC : constant := 16#00000019#;
   SHTDN_REASON_MINOR_SYSTEMRESTORE : constant := 16#0000001a#;
   SHTDN_REASON_MINOR_TERMSRV : constant := 16#00000020#;
   SHTDN_REASON_MINOR_DC_PROMOTION : constant := 16#00000021#;
   SHTDN_REASON_MINOR_DC_DEMOTION : constant := 16#00000022#;
   SHTDN_REASON_LEGACY_API : constant := ( Interfaces.C.Unsigned( SHTDN_REASON_MAJOR_LEGACY_API )
       or Interfaces.C.Unsigned( SHTDN_REASON_FLAG_PLANNED ) );
   SHTDN_REASON_VALID_BIT_MASK : constant := 16#c0ffffff#;
   PCLEANUI : constant := ( Interfaces.C.Unsigned( SHTDN_REASON_FLAG_PLANNED )
       or Interfaces.C.Unsigned( SHTDN_REASON_FLAG_CLEAN_UI ) );
   UCLEANUI : constant := SHTDN_REASON_FLAG_CLEAN_UI;
   PDIRTYUI : constant := ( Interfaces.C.Unsigned( SHTDN_REASON_FLAG_PLANNED )
       or Interfaces.C.Unsigned( SHTDN_REASON_FLAG_DIRTY_UI ) );
   UDIRTYUI : constant := SHTDN_REASON_FLAG_DIRTY_UI;
   MAX_REASON_NAME_LEN : constant := 64;
   MAX_REASON_DESC_LEN : constant := 256;
   MAX_REASON_BUGID_LEN : constant := 32;
   MAX_REASON_COMMENT_LEN : constant := 512;
   SHUTDOWN_TYPE_LEN : constant := 32;
   POLICY_SHOWREASONUI_NEVER : constant := 0;
   POLICY_SHOWREASONUI_ALWAYS : constant := 1;
   POLICY_SHOWREASONUI_WORKSTATIONONLY : constant := 2;
   POLICY_SHOWREASONUI_SERVERONLY : constant := 3;
   SNAPSHOT_POLICY_NEVER : constant := 0;
   SNAPSHOT_POLICY_ALWAYS : constant := 1;
   SNAPSHOT_POLICY_UNPLANNED : constant := 2;
   MAX_NUM_REASONS : constant := 256;
   -- #include <winreg.h>
   REASON_SWINSTALL : constant := ( Interfaces.C.Unsigned( SHTDN_REASON_MAJOR_SOFTWARE )
       or Interfaces.C.Unsigned( SHTDN_REASON_MINOR_INSTALLATION ) );
   REASON_HWINSTALL : constant := ( Interfaces.C.Unsigned( SHTDN_REASON_MAJOR_HARDWARE )
       or Interfaces.C.Unsigned( SHTDN_REASON_MINOR_INSTALLATION ) );
   REASON_SERVICEHANG : constant := ( Interfaces.C.Unsigned( SHTDN_REASON_MAJOR_SOFTWARE )
       or Interfaces.C.Unsigned( SHTDN_REASON_MINOR_HUNG ) );
   REASON_UNSTABLE : constant := ( Interfaces.C.Unsigned( SHTDN_REASON_MAJOR_SYSTEM )
       or Interfaces.C.Unsigned( SHTDN_REASON_MINOR_UNSTABLE ) );
   REASON_SWHWRECONF : constant := ( Interfaces.C.Unsigned( SHTDN_REASON_MAJOR_SOFTWARE )
       or Interfaces.C.Unsigned( SHTDN_REASON_MINOR_RECONFIG ) );
   REASON_OTHER : constant := ( Interfaces.C.Unsigned( SHTDN_REASON_MAJOR_OTHER )
       or Interfaces.C.Unsigned( SHTDN_REASON_MINOR_OTHER ) );
   SHUTDOWN_FORCE_OTHERS : constant := 16#00000001#;
   SHUTDOWN_FORCE_SELF : constant := 16#00000002#;
   SHUTDOWN_RESTART : constant := 16#00000004#;
   SHUTDOWN_POWEROFF : constant := 16#00000008#;
   SHUTDOWN_NOREBOOT : constant := 16#00000010#;
   SHUTDOWN_GRACE_OVERRIDE : constant := 16#00000020#;
   SHUTDOWN_INSTALL_UPDATES : constant := 16#00000040#;
   SHUTDOWN_RESTARTAPPS : constant := 16#00000080#;
   SHUTDOWN_SKIP_SVC_PRESHUTDOWN : constant := 16#00000100#;
   SHUTDOWN_HYBRID : constant := 16#00000200#;
   SHUTDOWN_RESTART_BOOTOPTIONS : constant := 16#00000400#;
   SHUTDOWN_SOFT_REBOOT : constant := 16#00000800#;
   SHUTDOWN_MOBILE_UI : constant := 16#00001000#;
   SHUTDOWN_ARSO : constant := 16#00002000#;
   -- #include <windows.h>
   -- #include <winnetwk.h>
   -- #include <wnnc.h>
   WNNC_NET_MSNET : constant := 16#00010000#;
   WNNC_NET_SMB : constant := 16#00020000#;
   WNNC_NET_NETWARE : constant := 16#00030000#;
   WNNC_NET_VINES : constant := 16#00040000#;
   WNNC_NET_10NET : constant := 16#00050000#;
   WNNC_NET_LOCUS : constant := 16#00060000#;
   WNNC_NET_SUN_PC_NFS : constant := 16#00070000#;
   WNNC_NET_LANSTEP : constant := 16#00080000#;
   WNNC_NET_9TILES : constant := 16#00090000#;
   WNNC_NET_LANTASTIC : constant := 16#000A0000#;
   WNNC_NET_AS400 : constant := 16#000B0000#;
   WNNC_NET_FTP_NFS : constant := 16#000C0000#;
   WNNC_NET_PATHWORKS : constant := 16#000D0000#;
   WNNC_NET_LIFENET : constant := 16#000E0000#;
   WNNC_NET_POWERLAN : constant := 16#000F0000#;
   WNNC_NET_BWNFS : constant := 16#00100000#;
   WNNC_NET_COGENT : constant := 16#00110000#;
   WNNC_NET_FARALLON : constant := 16#00120000#;
   WNNC_NET_APPLETALK : constant := 16#00130000#;
   WNNC_NET_INTERGRAPH : constant := 16#00140000#;
   WNNC_NET_SYMFONET : constant := 16#00150000#;
   WNNC_NET_CLEARCASE : constant := 16#00160000#;
   WNNC_NET_FRONTIER : constant := 16#00170000#;
   WNNC_NET_BMC : constant := 16#00180000#;
   WNNC_NET_DCE : constant := 16#00190000#;
   WNNC_NET_AVID : constant := 16#001A0000#;
   WNNC_NET_DOCUSPACE : constant := 16#001B0000#;
   WNNC_NET_MANGOSOFT : constant := 16#001C0000#;
   WNNC_NET_SERNET : constant := 16#001D0000#;
   WNNC_NET_RIVERFRONT1 : constant := 16#001E0000#;
   WNNC_NET_RIVERFRONT2 : constant := 16#001F0000#;
   WNNC_NET_DECORB : constant := 16#00200000#;
   WNNC_NET_PROTSTOR : constant := 16#00210000#;
   WNNC_NET_FJ_REDIR : constant := 16#00220000#;
   WNNC_NET_DISTINCT : constant := 16#00230000#;
   WNNC_NET_TWINS : constant := 16#00240000#;
   WNNC_NET_RDR2SAMPLE : constant := 16#00250000#;
   WNNC_NET_CSC : constant := 16#00260000#;
   WNNC_NET_3IN1 : constant := 16#00270000#;
   WNNC_NET_EXTENDNET : constant := 16#00290000#;
   WNNC_NET_STAC : constant := 16#002A0000#;
   WNNC_NET_FOXBAT : constant := 16#002B0000#;
   WNNC_NET_YAHOO : constant := 16#002C0000#;
   WNNC_NET_EXIFS : constant := 16#002D0000#;
   WNNC_NET_DAV : constant := 16#002E0000#;
   WNNC_NET_KNOWARE : constant := 16#002F0000#;
   WNNC_NET_OBJECT_DIRE : constant := 16#00300000#;
   WNNC_NET_MASFAX : constant := 16#00310000#;
   WNNC_NET_HOB_NFS : constant := 16#00320000#;
   WNNC_NET_SHIVA : constant := 16#00330000#;
   WNNC_NET_IBMAL : constant := 16#00340000#;
   WNNC_NET_LOCK : constant := 16#00350000#;
   WNNC_NET_TERMSRV : constant := 16#00360000#;
   WNNC_NET_SRT : constant := 16#00370000#;
   WNNC_NET_QUINCY : constant := 16#00380000#;
   WNNC_NET_OPENAFS : constant := 16#00390000#;
   WNNC_NET_AVID1 : constant := 16#003A0000#;
   WNNC_NET_DFS : constant := 16#003B0000#;
   WNNC_NET_KWNP : constant := 16#003C0000#;
   WNNC_NET_ZENWORKS : constant := 16#003D0000#;
   WNNC_NET_DRIVEONWEB : constant := 16#003E0000#;
   WNNC_NET_VMWARE : constant := 16#003F0000#;
   WNNC_NET_RSFX : constant := 16#00400000#;
   WNNC_NET_MFILES : constant := 16#00410000#;
   WNNC_NET_MS_NFS : constant := 16#00420000#;
   WNNC_NET_GOOGLE : constant := 16#00430000#;
   WNNC_NET_NDFS : constant := 16#00440000#;
   WNNC_NET_DOCUSHARE : constant := 16#00450000#;
   WNNC_NET_AURISTOR_FS : constant := 16#00460000#;
   WNNC_NET_SECUREAGENT : constant := 16#00470000#;
   WNNC_NET_9P : constant := 16#00480000#;
   WNNC_CRED_MANAGER : constant := 16#FFFF0000#;
   -- #include <winnetwk.h>
   RESOURCE_CONNECTED : constant := 16#00000001#;
   RESOURCE_GLOBALNET : constant := 16#00000002#;
   RESOURCE_REMEMBERED : constant := 16#00000003#;
   RESOURCE_RECENT : constant := 16#00000004#;
   RESOURCE_CONTEXT : constant := 16#00000005#;
   RESOURCETYPE_ANY : constant := 16#00000000#;
   RESOURCETYPE_DISK : constant := 16#00000001#;
   RESOURCETYPE_PRINT : constant := 16#00000002#;
   RESOURCETYPE_RESERVED : constant := 16#00000008#;
   RESOURCETYPE_UNKNOWN : constant := 16#FFFFFFFF#;
   RESOURCEUSAGE_CONNECTABLE : constant := 16#00000001#;
   RESOURCEUSAGE_CONTAINER : constant := 16#00000002#;
   RESOURCEUSAGE_NOLOCALDEVICE : constant := 16#00000004#;
   RESOURCEUSAGE_SIBLING : constant := 16#00000008#;
   RESOURCEUSAGE_ATTACHED : constant := 16#00000010#;
   RESOURCEUSAGE_ALL : constant := ( Interfaces.C.Unsigned( RESOURCEUSAGE_CONNECTABLE )
       or Interfaces.C.Unsigned( RESOURCEUSAGE_CONTAINER )
       or Interfaces.C.Unsigned( RESOURCEUSAGE_ATTACHED ) );
   RESOURCEUSAGE_RESERVED : constant := 16#80000000#;
   RESOURCEDISPLAYTYPE_GENERIC : constant := 16#00000000#;
   RESOURCEDISPLAYTYPE_DOMAIN : constant := 16#00000001#;
   RESOURCEDISPLAYTYPE_SERVER : constant := 16#00000002#;
   RESOURCEDISPLAYTYPE_SHARE : constant := 16#00000003#;
   RESOURCEDISPLAYTYPE_FILE : constant := 16#00000004#;
   RESOURCEDISPLAYTYPE_GROUP : constant := 16#00000005#;
   RESOURCEDISPLAYTYPE_NETWORK : constant := 16#00000006#;
   RESOURCEDISPLAYTYPE_ROOT : constant := 16#00000007#;
   RESOURCEDISPLAYTYPE_SHAREADMIN : constant := 16#00000008#;
   RESOURCEDISPLAYTYPE_DIRECTORY : constant := 16#00000009#;
   RESOURCEDISPLAYTYPE_TREE : constant := 16#0000000A#;
   RESOURCEDISPLAYTYPE_NDSCONTAINER : constant := 16#0000000B#;
   NETPROPERTY_PERSISTENT : constant := 1;
   CONNECT_UPDATE_PROFILE : constant := 16#00000001#;
   CONNECT_UPDATE_RECENT : constant := 16#00000002#;
   CONNECT_TEMPORARY : constant := 16#00000004#;
   CONNECT_INTERACTIVE : constant := 16#00000008#;
   CONNECT_PROMPT : constant := 16#00000010#;
   CONNECT_NEED_DRIVE : constant := 16#00000020#;
   CONNECT_REFCOUNT : constant := 16#00000040#;
   CONNECT_REDIRECT : constant := 16#00000080#;
   CONNECT_LOCALDRIVE : constant := 16#00000100#;
   CONNECT_CURRENT_MEDIA : constant := 16#00000200#;
   CONNECT_DEFERRED : constant := 16#00000400#;
   CONNECT_RESERVED : constant := 16#FF000000#;
   CONNECT_COMMANDLINE : constant := 16#00000800#;
   CONNECT_CMD_SAVECRED : constant := 16#00001000#;
   CONNECT_CRED_RESET : constant := 16#00002000#;
   CONNECT_REQUIRE_INTEGRITY : constant := 16#00004000#;
   CONNECT_REQUIRE_PRIVACY : constant := 16#00008000#;
   CONNECT_WRITE_THROUGH_SEMANTICS : constant := 16#00010000#;
   CONNECT_COMPRESS_NETWORK_TRAFFIC : constant := 16#00020000#;
   CONNDLG_RO_PATH : constant := 16#00000001#;
   CONNDLG_CONN_POINT : constant := 16#00000002#;
   CONNDLG_USE_MRU : constant := 16#00000004#;
   CONNDLG_HIDE_BOX : constant := 16#00000008#;
   CONNDLG_PERSIST : constant := 16#00000010#;
   CONNDLG_NOT_PERSIST : constant := 16#00000020#;
   DISC_UPDATE_PROFILE : constant := 16#00000001#;
   DISC_NO_FORCE : constant := 16#00000040#;
   UNIVERSAL_NAME_INFO_LEVEL : constant := 16#00000001#;
   REMOTE_NAME_INFO_LEVEL : constant := 16#00000002#;
   WNFMT_MULTILINE : constant := 16#01#;
   WNFMT_ABBREVIATED : constant := 16#02#;
   WNFMT_INENUM : constant := 16#10#;
   WNFMT_CONNECTION : constant := 16#20#;
   NETINFO_DLL16 : constant := 16#00000001#;
   NETINFO_DISKRED : constant := 16#00000004#;
   NETINFO_PRINTERRED : constant := 16#00000008#;
   WNCON_FORNETCARD : constant := 16#00000001#;
   WNCON_NOTROUTED : constant := 16#00000002#;
   WNCON_SLOWLINK : constant := 16#00000004#;
   WNCON_DYNAMIC : constant := 16#00000008#;
   -- #include <windows.h>
   -- #include <stralign.h>
   -- [Todo] WSTR_ALIGNED ( s ) TRUE;
   -- [Todo] TSTR_ALIGNED ( x ) TRUE;
   -- #include <windows.h>
   -- #include <winsvc.h>
   SERVICE_NO_CHANGE : constant := 16#ffffffff#;
   SERVICE_ACTIVE : constant := 16#00000001#;
   SERVICE_INACTIVE : constant := 16#00000002#;
   SERVICE_STATE_ALL : constant := ( Interfaces.C.Unsigned( SERVICE_ACTIVE )
       or Interfaces.C.Unsigned( SERVICE_INACTIVE ) );
   SERVICE_CONTROL_STOP : constant := 16#00000001#;
   SERVICE_CONTROL_PAUSE : constant := 16#00000002#;
   SERVICE_CONTROL_CONTINUE : constant := 16#00000003#;
   SERVICE_CONTROL_INTERROGATE : constant := 16#00000004#;
   SERVICE_CONTROL_SHUTDOWN : constant := 16#00000005#;
   SERVICE_CONTROL_PARAMCHANGE : constant := 16#00000006#;
   SERVICE_CONTROL_NETBINDADD : constant := 16#00000007#;
   SERVICE_CONTROL_NETBINDREMOVE : constant := 16#00000008#;
   SERVICE_CONTROL_NETBINDENABLE : constant := 16#00000009#;
   SERVICE_CONTROL_NETBINDDISABLE : constant := 16#0000000A#;
   SERVICE_CONTROL_DEVICEEVENT : constant := 16#0000000B#;
   SERVICE_CONTROL_HARDWAREPROFILECHANGE : constant := 16#0000000C#;
   SERVICE_CONTROL_POWEREVENT : constant := 16#0000000D#;
   SERVICE_CONTROL_SESSIONCHANGE : constant := 16#0000000E#;
   SERVICE_CONTROL_PRESHUTDOWN : constant := 16#0000000F#;
   SERVICE_CONTROL_TIMECHANGE : constant := 16#00000010#;
   SERVICE_CONTROL_TRIGGEREVENT : constant := 16#00000020#;
   SERVICE_CONTROL_LOWRESOURCES : constant := 16#00000060#;
   SERVICE_CONTROL_SYSTEMLOWRESOURCES : constant := 16#00000061#;
   SERVICE_STOPPED : constant := 16#00000001#;
   SERVICE_START_PENDING : constant := 16#00000002#;
   SERVICE_STOP_PENDING : constant := 16#00000003#;
   SERVICE_RUNNING : constant := 16#00000004#;
   SERVICE_CONTINUE_PENDING : constant := 16#00000005#;
   SERVICE_PAUSE_PENDING : constant := 16#00000006#;
   SERVICE_PAUSED : constant := 16#00000007#;
   SERVICE_ACCEPT_STOP : constant := 16#00000001#;
   SERVICE_ACCEPT_PAUSE_CONTINUE : constant := 16#00000002#;
   SERVICE_ACCEPT_SHUTDOWN : constant := 16#00000004#;
   SERVICE_ACCEPT_PARAMCHANGE : constant := 16#00000008#;
   SERVICE_ACCEPT_NETBINDCHANGE : constant := 16#00000010#;
   SERVICE_ACCEPT_HARDWAREPROFILECHANGE : constant := 16#00000020#;
   SERVICE_ACCEPT_POWEREVENT : constant := 16#00000040#;
   SERVICE_ACCEPT_SESSIONCHANGE : constant := 16#00000080#;
   SERVICE_ACCEPT_PRESHUTDOWN : constant := 16#00000100#;
   SERVICE_ACCEPT_TIMECHANGE : constant := 16#00000200#;
   SERVICE_ACCEPT_TRIGGEREVENT : constant := 16#00000400#;
   SERVICE_ACCEPT_USER_LOGOFF : constant := 16#00000800#;
   SERVICE_ACCEPT_LOWRESOURCES : constant := 16#00002000#;
   SERVICE_ACCEPT_SYSTEMLOWRESOURCES : constant := 16#00004000#;
   SC_MANAGER_CONNECT : constant := 16#0001#;
   SC_MANAGER_CREATE_SERVICE : constant := 16#0002#;
   SC_MANAGER_ENUMERATE_SERVICE : constant := 16#0004#;
   SC_MANAGER_LOCK : constant := 16#0008#;
   SC_MANAGER_QUERY_LOCK_STATUS : constant := 16#0010#;
   SC_MANAGER_MODIFY_BOOT_CONFIG : constant := 16#0020#;
   SC_MANAGER_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SC_MANAGER_CONNECT )
       or Interfaces.C.Unsigned( SC_MANAGER_CREATE_SERVICE )
       or Interfaces.C.Unsigned( SC_MANAGER_ENUMERATE_SERVICE )
       or Interfaces.C.Unsigned( SC_MANAGER_LOCK )
       or Interfaces.C.Unsigned( SC_MANAGER_QUERY_LOCK_STATUS )
       or Interfaces.C.Unsigned( SC_MANAGER_MODIFY_BOOT_CONFIG ) );
   SERVICE_QUERY_CONFIG : constant := 16#0001#;
   SERVICE_CHANGE_CONFIG : constant := 16#0002#;
   SERVICE_QUERY_STATUS : constant := 16#0004#;
   SERVICE_ENUMERATE_DEPENDENTS : constant := 16#0008#;
   SERVICE_START : constant := 16#0010#;
   SERVICE_STOP : constant := 16#0020#;
   SERVICE_PAUSE_CONTINUE : constant := 16#0040#;
   SERVICE_INTERROGATE : constant := 16#0080#;
   SERVICE_USER_DEFINED_CONTROL : constant := 16#0100#;
   SERVICE_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SERVICE_QUERY_CONFIG )
       or Interfaces.C.Unsigned( SERVICE_CHANGE_CONFIG )
       or Interfaces.C.Unsigned( SERVICE_QUERY_STATUS )
       or Interfaces.C.Unsigned( SERVICE_ENUMERATE_DEPENDENTS )
       or Interfaces.C.Unsigned( SERVICE_START )
       or Interfaces.C.Unsigned( SERVICE_STOP )
       or Interfaces.C.Unsigned( SERVICE_PAUSE_CONTINUE )
       or Interfaces.C.Unsigned( SERVICE_INTERROGATE )
       or Interfaces.C.Unsigned( SERVICE_USER_DEFINED_CONTROL ) );
   SERVICE_RUNS_IN_SYSTEM_PROCESS : constant := 16#00000001#;
   SERVICE_CONFIG_DESCRIPTION : constant := 1;
   SERVICE_CONFIG_FAILURE_ACTIONS : constant := 2;
   SERVICE_CONFIG_DELAYED_AUTO_START_INFO : constant := 3;
   SERVICE_CONFIG_FAILURE_ACTIONS_FLAG : constant := 4;
   SERVICE_CONFIG_SERVICE_SID_INFO : constant := 5;
   SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO : constant := 6;
   SERVICE_CONFIG_PRESHUTDOWN_INFO : constant := 7;
   SERVICE_CONFIG_TRIGGER_INFO : constant := 8;
   SERVICE_CONFIG_PREFERRED_NODE : constant := 9;
   SERVICE_CONFIG_LAUNCH_PROTECTED : constant := 12;
   SERVICE_NOTIFY_STATUS_CHANGE_1 : constant := 1;
   SERVICE_NOTIFY_STATUS_CHANGE_2 : constant := 2;
   SERVICE_NOTIFY_STOPPED : constant := 16#00000001#;
   SERVICE_NOTIFY_START_PENDING : constant := 16#00000002#;
   SERVICE_NOTIFY_STOP_PENDING : constant := 16#00000004#;
   SERVICE_NOTIFY_RUNNING : constant := 16#00000008#;
   SERVICE_NOTIFY_CONTINUE_PENDING : constant := 16#00000010#;
   SERVICE_NOTIFY_PAUSE_PENDING : constant := 16#00000020#;
   SERVICE_NOTIFY_PAUSED : constant := 16#00000040#;
   SERVICE_NOTIFY_CREATED : constant := 16#00000080#;
   SERVICE_NOTIFY_DELETED : constant := 16#00000100#;
   SERVICE_NOTIFY_DELETE_PENDING : constant := 16#00000200#;
   SERVICE_STOP_REASON_FLAG_MIN : constant := 16#00000000#;
   SERVICE_STOP_REASON_FLAG_UNPLANNED : constant := 16#10000000#;
   SERVICE_STOP_REASON_FLAG_CUSTOM : constant := 16#20000000#;
   SERVICE_STOP_REASON_FLAG_PLANNED : constant := 16#40000000#;
   SERVICE_STOP_REASON_FLAG_MAX : constant := 16#80000000#;
   SERVICE_STOP_REASON_MAJOR_MIN : constant := 16#00000000#;
   SERVICE_STOP_REASON_MAJOR_OTHER : constant := 16#00010000#;
   SERVICE_STOP_REASON_MAJOR_HARDWARE : constant := 16#00020000#;
   SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM : constant := 16#00030000#;
   SERVICE_STOP_REASON_MAJOR_SOFTWARE : constant := 16#00040000#;
   SERVICE_STOP_REASON_MAJOR_APPLICATION : constant := 16#00050000#;
   SERVICE_STOP_REASON_MAJOR_NONE : constant := 16#00060000#;
   SERVICE_STOP_REASON_MAJOR_MAX : constant := 16#00070000#;
   SERVICE_STOP_REASON_MAJOR_MIN_CUSTOM : constant := 16#00400000#;
   SERVICE_STOP_REASON_MAJOR_MAX_CUSTOM : constant := 16#00ff0000#;
   SERVICE_STOP_REASON_MINOR_MIN : constant := 16#00000000#;
   SERVICE_STOP_REASON_MINOR_OTHER : constant := 16#00000001#;
   SERVICE_STOP_REASON_MINOR_MAINTENANCE : constant := 16#00000002#;
   SERVICE_STOP_REASON_MINOR_INSTALLATION : constant := 16#00000003#;
   SERVICE_STOP_REASON_MINOR_UPGRADE : constant := 16#00000004#;
   SERVICE_STOP_REASON_MINOR_RECONFIG : constant := 16#00000005#;
   SERVICE_STOP_REASON_MINOR_HUNG : constant := 16#00000006#;
   SERVICE_STOP_REASON_MINOR_UNSTABLE : constant := 16#00000007#;
   SERVICE_STOP_REASON_MINOR_DISK : constant := 16#00000008#;
   SERVICE_STOP_REASON_MINOR_NETWORKCARD : constant := 16#00000009#;
   SERVICE_STOP_REASON_MINOR_ENVIRONMENT : constant := 16#0000000a#;
   SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER : constant := 16#0000000b#;
   SERVICE_STOP_REASON_MINOR_OTHERDRIVER : constant := 16#0000000c#;
   SERVICE_STOP_REASON_MINOR_SERVICEPACK : constant := 16#0000000d#;
   SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE : constant := 16#0000000e#;
   SERVICE_STOP_REASON_MINOR_SECURITYFIX : constant := 16#0000000f#;
   SERVICE_STOP_REASON_MINOR_SECURITY : constant := 16#00000010#;
   SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY : constant := 16#00000011#;
   SERVICE_STOP_REASON_MINOR_WMI : constant := 16#00000012#;
   SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL : constant := 16#00000013#;
   SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL : constant := 16#00000014#;
   SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL : constant := 16#00000015#;
   SERVICE_STOP_REASON_MINOR_MMC : constant := 16#00000016#;
   SERVICE_STOP_REASON_MINOR_NONE : constant := 16#00000017#;
   SERVICE_STOP_REASON_MINOR_MEMOTYLIMIT : constant := 16#00000018#;
   SERVICE_STOP_REASON_MINOR_MAX : constant := 16#00000019#;
   SERVICE_STOP_REASON_MINOR_MIN_CUSTOM : constant := 16#00000100#;
   SERVICE_STOP_REASON_MINOR_MAX_CUSTOM : constant := 16#0000FFFF#;
   SERVICE_CONTROL_STATUS_REASON_INFO : constant := 1;
   SERVICE_SID_TYPE_NONE : constant := 16#00000000#;
   SERVICE_SID_TYPE_UNRESTRICTED : constant := 16#00000001#;
   SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL : constant := 1;
   SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY : constant := 2;
   SERVICE_TRIGGER_TYPE_DOMAIN_JOIN : constant := 3;
   SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT : constant := 4;
   SERVICE_TRIGGER_TYPE_GROUP_POLICY : constant := 5;
   SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT : constant := 6;
   SERVICE_TRIGGER_TYPE_CUSTOM_SYSTEM_STATE_CHANGE : constant := 7;
   SERVICE_TRIGGER_TYPE_CUSTOM : constant := 20;
   SERVICE_TRIGGER_TYPE_AGGREGATE : constant := 30;
   SERVICE_TRIGGER_DATA_TYPE_BINARY : constant := 1;
   SERVICE_TRIGGER_DATA_TYPE_STRING : constant := 2;
   SERVICE_TRIGGER_DATA_TYPE_LEVEL : constant := 3;
   SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY : constant := 4;
   SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL : constant := 5;
   SERVICE_START_REASON_DEMAND : constant := 16#00000001#;
   SERVICE_START_REASON_AUTO : constant := 16#00000002#;
   SERVICE_START_REASON_TRIGGER : constant := 16#00000004#;
   SERVICE_START_REASON_RESTART_ON_FAILURE : constant := 16#00000008#;
   SERVICE_START_REASON_DELAYEDAUTO : constant := 16#00000010#;
   SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON : constant := 1;
   SERVICE_LAUNCH_PROTECTED_NONE : constant := 0;
   SERVICE_LAUNCH_PROTECTED_WINDOWS : constant := 1;
   SERVICE_LAUNCH_PROTECTED_WINDOWS_LIGHT : constant := 2;
   SERVICE_LAUNCH_PROTECTED_ANTIMALWARE_LIGHT : constant := 3;
   SERVICE_TRIGGER_ACTION_SERVICE_START : constant := 1;
   SERVICE_TRIGGER_ACTION_SERVICE_STOP : constant := 2;
   -- #include <windows.h>
   -- #include <mcx.h>
   DIALOPTION_BILLING : constant := 16#00000040#;
   DIALOPTION_QUIET : constant := 16#00000080#;
   DIALOPTION_DIALTONE : constant := 16#00000100#;
   MDMVOLFLAG_LOW : constant := 16#00000001#;
   MDMVOLFLAG_MEDIUM : constant := 16#00000002#;
   MDMVOLFLAG_HIGH : constant := 16#00000004#;
   MDMVOL_LOW : constant := 16#00000000#;
   MDMVOL_MEDIUM : constant := 16#00000001#;
   MDMVOL_HIGH : constant := 16#00000002#;
   MDMSPKRFLAG_OFF : constant := 16#00000001#;
   MDMSPKRFLAG_DIAL : constant := 16#00000002#;
   MDMSPKRFLAG_ON : constant := 16#00000004#;
   MDMSPKRFLAG_CALLSETUP : constant := 16#00000008#;
   MDMSPKR_OFF : constant := 16#00000000#;
   MDMSPKR_DIAL : constant := 16#00000001#;
   MDMSPKR_ON : constant := 16#00000002#;
   MDMSPKR_CALLSETUP : constant := 16#00000003#;
   MDM_COMPRESSION : constant := 16#00000001#;
   MDM_ERROR_CONTROL : constant := 16#00000002#;
   MDM_FORCED_EC : constant := 16#00000004#;
   MDM_CELLULAR : constant := 16#00000008#;
   MDM_FLOWCONTROL_HARD : constant := 16#00000010#;
   MDM_FLOWCONTROL_SOFT : constant := 16#00000020#;
   MDM_CCITT_OVERRIDE : constant := 16#00000040#;
   MDM_SPEED_ADJUST : constant := 16#00000080#;
   MDM_TONE_DIAL : constant := 16#00000100#;
   MDM_BLIND_DIAL : constant := 16#00000200#;
   MDM_V23_OVERRIDE : constant := 16#00000400#;
   MDM_DIAGNOSTICS : constant := 16#00000800#;
   MDM_MASK_BEARERMODE : constant := 16#0000f000#;
   MDM_SHIFT_BEARERMODE : constant := 12;
   MDM_MASK_PROTOCOLID : constant := 16#000f0000#;
   MDM_SHIFT_PROTOCOLID : constant := 16;
   MDM_MASK_PROTOCOLDATA : constant := 16#0ff00000#;
   MDM_SHIFT_PROTOCOLDATA : constant := 20;
   MDM_MASK_PROTOCOLINFO : constant := ( Interfaces.C.Unsigned( MDM_MASK_PROTOCOLID )
       or Interfaces.C.Unsigned( MDM_MASK_PROTOCOLDATA ) );
   MDM_MASK_EXTENDEDINFO : constant := ( Interfaces.C.Unsigned( MDM_MASK_BEARERMODE )
       or Interfaces.C.Unsigned( MDM_MASK_PROTOCOLINFO ) );
   MDM_BEARERMODE_ANALOG : constant := 16#0#;
   MDM_BEARERMODE_ISDN : constant := 16#1#;
   MDM_BEARERMODE_GSM : constant := 16#2#;
   MDM_PROTOCOLID_DEFAULT : constant := 16#0#;
   MDM_PROTOCOLID_HDLCPPP : constant := 16#1#;
   MDM_PROTOCOLID_V128 : constant := 16#2#;
   MDM_PROTOCOLID_X75 : constant := 16#3#;
   MDM_PROTOCOLID_V110 : constant := 16#4#;
   MDM_PROTOCOLID_V120 : constant := 16#5#;
   MDM_PROTOCOLID_AUTO : constant := 16#6#;
   MDM_PROTOCOLID_ANALOG : constant := 16#7#;
   MDM_PROTOCOLID_GPRS : constant := 16#8#;
   MDM_PROTOCOLID_PIAFS : constant := 16#9#;
   MDM_SHIFT_HDLCPPP_SPEED : constant := 16#0#;
   MDM_MASK_HDLCPPP_SPEED : constant := 16#7#;
   MDM_HDLCPPP_SPEED_DEFAULT : constant := 16#0#;
   MDM_HDLCPPP_SPEED_64K : constant := 16#1#;
   MDM_HDLCPPP_SPEED_56K : constant := 16#2#;
   MDM_SHIFT_HDLCPPP_AUTH : constant := 16#3#;
   -- [Todo] MDM_MASK_HDLCPPP_AUTH ( 0x7 << 3 );
   MDM_HDLCPPP_AUTH_DEFAULT : constant := 16#0#;
   MDM_HDLCPPP_AUTH_NONE : constant := 16#1#;
   MDM_HDLCPPP_AUTH_PAP : constant := 16#2#;
   MDM_HDLCPPP_AUTH_CHAP : constant := 16#3#;
   MDM_HDLCPPP_AUTH_MSCHAP : constant := 16#4#;
   MDM_SHIFT_HDLCPPP_ML : constant := 16#6#;
   -- [Todo] MDM_MASK_HDLCPPP_ML ( 0x3 << 6 );
   MDM_HDLCPPP_ML_DEFAULT : constant := 16#0#;
   MDM_HDLCPPP_ML_NONE : constant := 16#1#;
   MDM_HDLCPPP_ML_2 : constant := 16#2#;
   MDM_SHIFT_V120_SPEED : constant := 16#0#;
   MDM_MASK_V120_SPEED : constant := 16#7#;
   MDM_V120_SPEED_DEFAULT : constant := 16#0#;
   MDM_V120_SPEED_64K : constant := 16#1#;
   MDM_V120_SPEED_56K : constant := 16#2#;
   MDM_SHIFT_V120_ML : constant := 16#6#;
   -- [Todo] MDM_MASK_V120_ML ( 0x3 << 6 );
   MDM_V120_ML_DEFAULT : constant := 16#0#;
   MDM_V120_ML_NONE : constant := 16#1#;
   MDM_V120_ML_2 : constant := 16#2#;
   MDM_SHIFT_X75_DATA : constant := 16#0#;
   MDM_MASK_X75_DATA : constant := 16#7#;
   MDM_X75_DATA_DEFAULT : constant := 16#0#;
   MDM_X75_DATA_64K : constant := 16#1#;
   MDM_X75_DATA_128K : constant := 16#2#;
   MDM_X75_DATA_T_70 : constant := 16#3#;
   MDM_X75_DATA_BTX : constant := 16#4#;
   MDM_SHIFT_V110_SPEED : constant := 16#0#;
   MDM_MASK_V110_SPEED : constant := 16#f#;
   MDM_V110_SPEED_DEFAULT : constant := 16#0#;
   MDM_V110_SPEED_1DOT2K : constant := 16#1#;
   MDM_V110_SPEED_2DOT4K : constant := 16#2#;
   MDM_V110_SPEED_4DOT8K : constant := 16#3#;
   MDM_V110_SPEED_9DOT6K : constant := 16#4#;
   MDM_V110_SPEED_12DOT0K : constant := 16#5#;
   MDM_V110_SPEED_14DOT4K : constant := 16#6#;
   MDM_V110_SPEED_19DOT2K : constant := 16#7#;
   MDM_V110_SPEED_28DOT8K : constant := 16#8#;
   MDM_V110_SPEED_38DOT4K : constant := 16#9#;
   MDM_V110_SPEED_57DOT6K : constant := 16#A#;
   MDM_SHIFT_AUTO_SPEED : constant := 16#0#;
   MDM_MASK_AUTO_SPEED : constant := 16#7#;
   MDM_AUTO_SPEED_DEFAULT : constant := 16#0#;
   MDM_SHIFT_AUTO_ML : constant := 16#6#;
   -- [Todo] MDM_MASK_AUTO_ML ( 0x3 << 6 );
   MDM_AUTO_ML_DEFAULT : constant := 16#0#;
   MDM_AUTO_ML_NONE : constant := 16#1#;
   MDM_AUTO_ML_2 : constant := 16#2#;
   MDM_ANALOG_RLP_ON : constant := 16#0#;
   MDM_ANALOG_RLP_OFF : constant := 16#1#;
   MDM_ANALOG_V34 : constant := 16#2#;
   MDM_PIAFS_INCOMING : constant := 0;
   MDM_PIAFS_OUTGOING : constant := 1;
   -- #include <windows.h>
   -- #include <imm.h>
   STYLE_DESCRIPTION_SIZE : constant := 32;
   IMEMENUITEM_STRING_SIZE : constant := 80;
   IMC_GETCANDIDATEPOS : constant := 16#0007#;
   IMC_SETCANDIDATEPOS : constant := 16#0008#;
   IMC_GETCOMPOSITIONFONT : constant := 16#0009#;
   IMC_SETCOMPOSITIONFONT : constant := 16#000A#;
   IMC_GETCOMPOSITIONWINDOW : constant := 16#000B#;
   IMC_SETCOMPOSITIONWINDOW : constant := 16#000C#;
   IMC_GETSTATUSWINDOWPOS : constant := 16#000F#;
   IMC_SETSTATUSWINDOWPOS : constant := 16#0010#;
   IMC_CLOSESTATUSWINDOW : constant := 16#0021#;
   IMC_OPENSTATUSWINDOW : constant := 16#0022#;
   NI_OPENCANDIDATE : constant := 16#0010#;
   NI_CLOSECANDIDATE : constant := 16#0011#;
   NI_SELECTCANDIDATESTR : constant := 16#0012#;
   NI_CHANGECANDIDATELIST : constant := 16#0013#;
   NI_FINALIZECONVERSIONRESULT : constant := 16#0014#;
   NI_COMPOSITIONSTR : constant := 16#0015#;
   NI_SETCANDIDATE_PAGESTART : constant := 16#0016#;
   NI_SETCANDIDATE_PAGESIZE : constant := 16#0017#;
   NI_IMEMENUSELECTED : constant := 16#0018#;
   ISC_SHOWUICANDIDATEWINDOW : constant := 16#00000001#;
   ISC_SHOWUICOMPOSITIONWINDOW : constant := 16#80000000#;
   ISC_SHOWUIGUIDELINE : constant := 16#40000000#;
   ISC_SHOWUIALLCANDIDATEWINDOW : constant := 16#0000000F#;
   ISC_SHOWUIALL : constant := 16#C000000F#;
   CPS_COMPLETE : constant := 16#0001#;
   CPS_CONVERT : constant := 16#0002#;
   CPS_REVERT : constant := 16#0003#;
   CPS_CANCEL : constant := 16#0004#;
   MOD_LEFT : constant := 16#8000#;
   MOD_RIGHT : constant := 16#4000#;
   MOD_ON_KEYUP : constant := 16#0800#;
   MOD_IGNORE_ALL_MODIFIER : constant := 16#0400#;
   IME_CHOTKEY_IME_NONIME_TOGGLE : constant := 16#10#;
   IME_CHOTKEY_SHAPE_TOGGLE : constant := 16#11#;
   IME_CHOTKEY_SYMBOL_TOGGLE : constant := 16#12#;
   IME_JHOTKEY_CLOSE_OPEN : constant := 16#30#;
   IME_KHOTKEY_SHAPE_TOGGLE : constant := 16#50#;
   IME_KHOTKEY_HANJACONVERT : constant := 16#51#;
   IME_KHOTKEY_ENGLISH : constant := 16#52#;
   IME_THOTKEY_IME_NONIME_TOGGLE : constant := 16#70#;
   IME_THOTKEY_SHAPE_TOGGLE : constant := 16#71#;
   IME_THOTKEY_SYMBOL_TOGGLE : constant := 16#72#;
   IME_HOTKEY_DSWITCH_FIRST : constant := 16#100#;
   IME_HOTKEY_DSWITCH_LAST : constant := 16#11F#;
   IME_HOTKEY_PRIVATE_FIRST : constant := 16#200#;
   IME_ITHOTKEY_RESEND_RESULTSTR : constant := 16#200#;
   IME_ITHOTKEY_PREVIOUS_COMPOSITION : constant := 16#201#;
   IME_ITHOTKEY_UISTYLE_TOGGLE : constant := 16#202#;
   IME_ITHOTKEY_RECONVERTSTRING : constant := 16#203#;
   IME_HOTKEY_PRIVATE_LAST : constant := 16#21F#;
   GCS_COMPREADSTR : constant := 16#0001#;
   GCS_COMPREADATTR : constant := 16#0002#;
   GCS_COMPREADCLAUSE : constant := 16#0004#;
   GCS_COMPSTR : constant := 16#0008#;
   GCS_COMPATTR : constant := 16#0010#;
   GCS_COMPCLAUSE : constant := 16#0020#;
   GCS_CURSORPOS : constant := 16#0080#;
   GCS_DELTASTART : constant := 16#0100#;
   GCS_RESULTREADSTR : constant := 16#0200#;
   GCS_RESULTREADCLAUSE : constant := 16#0400#;
   GCS_RESULTSTR : constant := 16#0800#;
   GCS_RESULTCLAUSE : constant := 16#1000#;
   CS_INSERTCHAR : constant := 16#2000#;
   CS_NOMOVECARET : constant := 16#4000#;
   IMEVER_0310 : constant := 16#0003000A#;
   IMEVER_0400 : constant := 16#00040000#;
   IME_PROP_AT_CARET : constant := 16#00010000#;
   IME_PROP_SPECIAL_UI : constant := 16#00020000#;
   IME_PROP_CANDLIST_START_FROM_1 : constant := 16#00040000#;
   IME_PROP_UNICODE : constant := 16#00080000#;
   IME_PROP_COMPLETE_ON_UNSELECT : constant := 16#00100000#;
   UI_CAP_2700 : constant := 16#00000001#;
   UI_CAP_ROT90 : constant := 16#00000002#;
   UI_CAP_ROTANY : constant := 16#00000004#;
   SCS_CAP_COMPSTR : constant := 16#00000001#;
   SCS_CAP_MAKEREAD : constant := 16#00000002#;
   SCS_CAP_SETRECONVERTSTRING : constant := 16#00000004#;
   SELECT_CAP_CONVERSION : constant := 16#00000001#;
   SELECT_CAP_SENTENCE : constant := 16#00000002#;
   GGL_LEVEL : constant := 16#00000001#;
   GGL_INDEX : constant := 16#00000002#;
   GGL_STRING : constant := 16#00000003#;
   GGL_PRIVATE : constant := 16#00000004#;
   GL_LEVEL_NOGUIDELINE : constant := 16#00000000#;
   GL_LEVEL_FATAL : constant := 16#00000001#;
   GL_LEVEL_ERROR : constant := 16#00000002#;
   GL_LEVEL_WARNING : constant := 16#00000003#;
   GL_LEVEL_INFORMATION : constant := 16#00000004#;
   GL_ID_UNKNOWN : constant := 16#00000000#;
   GL_ID_NOMODULE : constant := 16#00000001#;
   GL_ID_NODICTIONARY : constant := 16#00000010#;
   GL_ID_CANNOTSAVE : constant := 16#00000011#;
   GL_ID_NOCONVERT : constant := 16#00000020#;
   GL_ID_TYPINGERROR : constant := 16#00000021#;
   GL_ID_TOOMANYSTROKE : constant := 16#00000022#;
   GL_ID_READINGCONFLICT : constant := 16#00000023#;
   GL_ID_INPUTREADING : constant := 16#00000024#;
   GL_ID_INPUTRADICAL : constant := 16#00000025#;
   GL_ID_INPUTCODE : constant := 16#00000026#;
   GL_ID_INPUTSYMBOL : constant := 16#00000027#;
   GL_ID_CHOOSECANDIDATE : constant := 16#00000028#;
   GL_ID_REVERSECONVERSION : constant := 16#00000029#;
   GL_ID_PRIVATE_FIRST : constant := 16#00008000#;
   GL_ID_PRIVATE_LAST : constant := 16#0000FFFF#;
   IGP_GETIMEVERSION : constant := Interfaces.C.unsigned_long'mod(-4);
   IGP_PROPERTY : constant := 16#00000004#;
   IGP_CONVERSION : constant := 16#00000008#;
   IGP_SENTENCE : constant := 16#0000000c#;
   IGP_UI : constant := 16#00000010#;
   IGP_SETCOMPSTR : constant := 16#00000014#;
   IGP_SELECT : constant := 16#00000018#;
   SCS_SETSTR : constant := ( Interfaces.C.Unsigned( GCS_COMPREADSTR )
       or Interfaces.C.Unsigned( GCS_COMPSTR ) );
   SCS_CHANGEATTR : constant := ( Interfaces.C.Unsigned( GCS_COMPREADATTR )
       or Interfaces.C.Unsigned( GCS_COMPATTR ) );
   SCS_CHANGECLAUSE : constant := ( Interfaces.C.Unsigned( GCS_COMPREADCLAUSE )
       or Interfaces.C.Unsigned( GCS_COMPCLAUSE ) );
   SCS_SETRECONVERTSTRING : constant := 16#00010000#;
   SCS_QUERYRECONVERTSTRING : constant := 16#00020000#;
   ATTR_INPUT : constant := 16#00#;
   ATTR_TARGET_CONVERTED : constant := 16#01#;
   ATTR_CONVERTED : constant := 16#02#;
   ATTR_TARGET_NOTCONVERTED : constant := 16#03#;
   ATTR_INPUT_ERROR : constant := 16#04#;
   ATTR_FIXEDCONVERTED : constant := 16#05#;
   CFS_DEFAULT : constant := 16#0000#;
   CFS_RECT : constant := 16#0001#;
   CFS_POINT : constant := 16#0002#;
   CFS_FORCE_POSITION : constant := 16#0020#;
   CFS_CANDIDATEPOS : constant := 16#0040#;
   CFS_EXCLUDE : constant := 16#0080#;
   GCL_CONVERSION : constant := 16#0001#;
   GCL_REVERSECONVERSION : constant := 16#0002#;
   GCL_REVERSE_LENGTH : constant := 16#0003#;
   -- #include <ime_cmodes.h>
   IME_CMODE_ALPHANUMERIC : constant := 16#0000#;
   IME_CMODE_NATIVE : constant := 16#0001#;
   IME_CMODE_KATAKANA : constant := 16#0002#;
   IME_CMODE_LANGUAGE : constant := 16#0003#;
   IME_CMODE_FULLSHAPE : constant := 16#0008#;
   IME_CMODE_ROMAN : constant := 16#0010#;
   IME_CMODE_CHARCODE : constant := 16#0020#;
   IME_CMODE_HANJACONVERT : constant := 16#0040#;
   IME_CMODE_NATIVESYMBOL : constant := 16#0080#;
   -- #include <imm.h>
   IME_CMODE_SOFTKBD : constant := 16#0080#;
   IME_CMODE_NOCONVERSION : constant := 16#0100#;
   IME_CMODE_EUDC : constant := 16#0200#;
   IME_CMODE_SYMBOL : constant := 16#0400#;
   IME_CMODE_FIXED : constant := 16#0800#;
   IME_CMODE_RESERVED : constant := 16#F0000000#;
   IME_SMODE_NONE : constant := 16#0000#;
   IME_SMODE_PLAURALCLAUSE : constant := 16#0001#;
   IME_SMODE_SINGLECONVERT : constant := 16#0002#;
   IME_SMODE_AUTOMATIC : constant := 16#0004#;
   IME_SMODE_PHRASEPREDICT : constant := 16#0008#;
   IME_SMODE_CONVERSATION : constant := 16#0010#;
   IME_SMODE_RESERVED : constant := 16#0000F000#;
   IME_CAND_UNKNOWN : constant := 16#0000#;
   IME_CAND_READ : constant := 16#0001#;
   IME_CAND_CODE : constant := 16#0002#;
   IME_CAND_MEANING : constant := 16#0003#;
   IME_CAND_RADICAL : constant := 16#0004#;
   IME_CAND_STROKE : constant := 16#0005#;
   IMN_CLOSESTATUSWINDOW : constant := 16#0001#;
   IMN_OPENSTATUSWINDOW : constant := 16#0002#;
   IMN_CHANGECANDIDATE : constant := 16#0003#;
   IMN_CLOSECANDIDATE : constant := 16#0004#;
   IMN_OPENCANDIDATE : constant := 16#0005#;
   IMN_SETCONVERSIONMODE : constant := 16#0006#;
   IMN_SETSENTENCEMODE : constant := 16#0007#;
   IMN_SETOPENSTATUS : constant := 16#0008#;
   IMN_SETCANDIDATEPOS : constant := 16#0009#;
   IMN_SETCOMPOSITIONFONT : constant := 16#000A#;
   IMN_SETCOMPOSITIONWINDOW : constant := 16#000B#;
   IMN_SETSTATUSWINDOWPOS : constant := 16#000C#;
   IMN_GUIDELINE : constant := 16#000D#;
   IMN_PRIVATE : constant := 16#000E#;
   IMR_COMPOSITIONWINDOW : constant := 16#0001#;
   IMR_CANDIDATEWINDOW : constant := 16#0002#;
   IMR_COMPOSITIONFONT : constant := 16#0003#;
   IMR_RECONVERTSTRING : constant := 16#0004#;
   IMR_CONFIRMRECONVERTSTRING : constant := 16#0005#;
   IMR_QUERYCHARPOSITION : constant := 16#0006#;
   IMR_DOCUMENTFEED : constant := 16#0007#;
   IMM_ERROR_NODATA : constant := -1;
   IMM_ERROR_GENERAL : constant := -2;
   IME_CONFIG_GENERAL : constant := 1;
   IME_CONFIG_REGISTERWORD : constant := 2;
   IME_CONFIG_SELECTDICTIONARY : constant := 3;
   IME_ESC_QUERY_SUPPORT : constant := 16#0003#;
   IME_ESC_RESERVED_FIRST : constant := 16#0004#;
   IME_ESC_RESERVED_LAST : constant := 16#07FF#;
   IME_ESC_PRIVATE_FIRST : constant := 16#0800#;
   IME_ESC_PRIVATE_LAST : constant := 16#0FFF#;
   IME_ESC_SEQUENCE_TO_INTERNAL : constant := 16#1001#;
   IME_ESC_GET_EUDC_DICTIONARY : constant := 16#1003#;
   IME_ESC_SET_EUDC_DICTIONARY : constant := 16#1004#;
   IME_ESC_MAX_KEY : constant := 16#1005#;
   IME_ESC_IME_NAME : constant := 16#1006#;
   IME_ESC_SYNC_HOTKEY : constant := 16#1007#;
   IME_ESC_HANJA_MODE : constant := 16#1008#;
   IME_ESC_AUTOMATA : constant := 16#1009#;
   IME_ESC_PRIVATE_HOTKEY : constant := 16#100a#;
   IME_ESC_GETHELPFILENAME : constant := 16#100b#;
   IME_REGWORD_STYLE_EUDC : constant := 16#00000001#;
   IME_REGWORD_STYLE_USER_FIRST : constant := 16#80000000#;
   IME_REGWORD_STYLE_USER_LAST : constant := 16#FFFFFFFF#;
   IACE_CHILDREN : constant := 16#0001#;
   IACE_DEFAULT : constant := 16#0010#;
   IACE_IGNORENOCONTEXT : constant := 16#0020#;
   IGIMIF_RIGHTMENU : constant := 16#0001#;
   IGIMII_CMODE : constant := 16#0001#;
   IGIMII_SMODE : constant := 16#0002#;
   IGIMII_CONFIGURE : constant := 16#0004#;
   IGIMII_TOOLS : constant := 16#0008#;
   IGIMII_HELP : constant := 16#0010#;
   IGIMII_OTHER : constant := 16#0020#;
   IGIMII_INPUTTOOLS : constant := 16#0040#;
   IMFT_RADIOCHECK : constant := 16#00001#;
   IMFT_SEPARATOR : constant := 16#00002#;
   IMFT_SUBMENU : constant := 16#00004#;
   SOFTKEYBOARD_TYPE_T1 : constant := 16#0001#;
   SOFTKEYBOARD_TYPE_C1 : constant := 16#0002#;
   -- #include <windows.h>
   -- #include <Win32.hpp>
   -- #include <shellapi.h>
   ABM_NEW : constant := 16#00000000#;
   ABM_REMOVE : constant := 16#00000001#;
   ABM_QUERYPOS : constant := 16#00000002#;
   ABM_SETPOS : constant := 16#00000003#;
   ABM_GETSTATE : constant := 16#00000004#;
   ABM_GETTASKBARPOS : constant := 16#00000005#;
   ABM_ACTIVATE : constant := 16#00000006#;
   ABM_GETAUTOHIDEBAR : constant := 16#00000007#;
   ABM_SETAUTOHIDEBAR : constant := 16#00000008#;
   ABM_WINDOWPOSCHANGED : constant := 16#0000009#;
   ABM_SETSTATE : constant := 16#0000000a#;
   ABM_GETAUTOHIDEBAREX : constant := 16#0000000b#;
   ABM_SETAUTOHIDEBAREX : constant := 16#0000000c#;
   ABN_STATECHANGE : constant := 16#0000000#;
   ABN_POSCHANGED : constant := 16#0000001#;
   ABN_FULLSCREENAPP : constant := 16#0000002#;
   ABN_WINDOWARRANGE : constant := 16#0000003#;
   ABS_AUTOHIDE : constant := 16#0000001#;
   ABS_ALWAYSONTOP : constant := 16#0000002#;
   ABE_LEFT : constant := 0;
   ABE_TOP : constant := 1;
   ABE_RIGHT : constant := 2;
   ABE_BOTTOM : constant := 3;
   FO_MOVE : constant := 16#0001#;
   FO_COPY : constant := 16#0002#;
   FO_DELETE : constant := 16#0003#;
   FO_RENAME : constant := 16#0004#;
   FOF_MULTIDESTFILES : constant := 16#0001#;
   FOF_CONFIRMMOUSE : constant := 16#0002#;
   FOF_SILENT : constant := 16#0004#;
   FOF_RENAMEONCOLLISION : constant := 16#0008#;
   FOF_NOCONFIRMATION : constant := 16#0010#;
   FOF_WANTMAPPINGHANDLE : constant := 16#0020#;
   FOF_ALLOWUNDO : constant := 16#0040#;
   FOF_FILESONLY : constant := 16#0080#;
   FOF_SIMPLEPROGRESS : constant := 16#0100#;
   FOF_NOCONFIRMMKDIR : constant := 16#0200#;
   FOF_NOERRORUI : constant := 16#0400#;
   FOF_NOCOPYSECURITYATTRIBS : constant := 16#0800#;
   FOF_NORECURSION : constant := 16#1000#;
   FOF_NO_CONNECTED_ELEMENTS : constant := 16#2000#;
   FOF_WANTNUKEWARNING : constant := 16#4000#;
   FOF_NORECURSEREPARSE : constant := 16#8000#;
   FOF_NO_UI : constant := ( Interfaces.C.Unsigned( FOF_SILENT )
       or Interfaces.C.Unsigned( FOF_NOCONFIRMATION )
       or Interfaces.C.Unsigned( FOF_NOERRORUI )
       or Interfaces.C.Unsigned( FOF_NOCONFIRMMKDIR ) );
   PO_DELETE : constant := 16#0013#;
   PO_RENAME : constant := 16#0014#;
   PO_PORTCHANGE : constant := 16#0020#;
   PO_REN_PORT : constant := 16#0034#;
   SE_ERR_FNF : constant := 2;
   SE_ERR_PNF : constant := 3;
   SE_ERR_ACCESSDENIED : constant := 5;
   SE_ERR_OOM : constant := 8;
   SE_ERR_DLLNOTFOUND : constant := 32;
   SE_ERR_SHARE : constant := 26;
   SE_ERR_ASSOCINCOMPLETE : constant := 27;
   SE_ERR_DDETIMEOUT : constant := 28;
   SE_ERR_DDEFAIL : constant := 29;
   SE_ERR_DDEBUSY : constant := 30;
   SE_ERR_NOASSOC : constant := 31;
   SEE_MASK_DEFAULT : constant := 16#00000000#;
   SEE_MASK_CLASSNAME : constant := 16#00000001#;
   SEE_MASK_CLASSKEY : constant := 16#00000003#;
   SEE_MASK_IDLIST : constant := 16#00000004#;
   SEE_MASK_INVOKEIDLIST : constant := 16#0000000c#;
   SEE_MASK_HOTKEY : constant := 16#00000020#;
   SEE_MASK_NOCLOSEPROCESS : constant := 16#00000040#;
   SEE_MASK_CONNECTNETDRV : constant := 16#00000080#;
   SEE_MASK_NOASYNC : constant := 16#00000100#;
   SEE_MASK_DOENVSUBST : constant := 16#00000200#;
   SEE_MASK_FLAG_NO_UI : constant := 16#00000400#;
   SEE_MASK_UNICODE : constant := 16#00004000#;
   SEE_MASK_NO_CONSOLE : constant := 16#00008000#;
   SEE_MASK_ASYNCOK : constant := 16#00100000#;
   SEE_MASK_HMONITOR : constant := 16#00200000#;
   SEE_MASK_NOZONECHECKS : constant := 16#00800000#;
   SEE_MASK_NOQUERYCLASSSTORE : constant := 16#01000000#;
   SEE_MASK_WAITFORINPUTIDLE : constant := 16#02000000#;
   SEE_MASK_FLAG_LOG_USAGE : constant := 16#04000000#;
   SEE_MASK_FLAG_HINST_IS_SITE : constant := 16#08000000#;
   SHERB_NOCONFIRMATION : constant := 16#00000001#;
   SHERB_NOPROGRESSUI : constant := 16#00000002#;
   SHERB_NOSOUND : constant := 16#00000004#;
   NIN_SELECT : constant := WM_USER + 0;
   NINF_KEY : constant := 16#1#;
   NIN_KEYSELECT : constant := ( Interfaces.C.Unsigned( NIN_SELECT )
       or Interfaces.C.Unsigned( NINF_KEY ) );
   NIN_BALLOONSHOW : constant := WM_USER + 2;
   NIN_BALLOONHIDE : constant := WM_USER + 3;
   NIN_BALLOONTIMEOUT : constant := WM_USER + 4;
   NIN_BALLOONUSERCLICK : constant := WM_USER + 5;
   NIN_POPUPOPEN : constant := WM_USER + 6;
   NIN_POPUPCLOSE : constant := WM_USER + 7;
   NIM_ADD : constant := 16#00000000#;
   NIM_MODIFY : constant := 16#00000001#;
   NIM_DELETE : constant := 16#00000002#;
   NIM_SETFOCUS : constant := 16#00000003#;
   NIM_SETVERSION : constant := 16#00000004#;
   NOTIFYICON_VERSION : constant := 3;
   NOTIFYICON_VERSION_4 : constant := 4;
   NIF_MESSAGE : constant := 16#00000001#;
   NIF_ICON : constant := 16#00000002#;
   NIF_TIP : constant := 16#00000004#;
   NIF_STATE : constant := 16#00000008#;
   NIF_INFO : constant := 16#00000010#;
   NIF_GUID : constant := 16#00000020#;
   NIF_REALTIME : constant := 16#00000040#;
   NIF_SHOWTIP : constant := 16#00000080#;
   NIS_HIDDEN : constant := 16#00000001#;
   NIS_SHAREDICON : constant := 16#00000002#;
   NIIF_NONE : constant := 16#00000000#;
   NIIF_INFO : constant := 16#00000001#;
   NIIF_WARNING : constant := 16#00000002#;
   NIIF_ERROR : constant := 16#00000003#;
   NIIF_USER : constant := 16#00000004#;
   NIIF_ICON_MASK : constant := 16#0000000F#;
   NIIF_NOSOUND : constant := 16#00000010#;
   NIIF_LARGE_ICON : constant := 16#00000020#;
   NIIF_RESPECT_QUIET_TIME : constant := 16#00000080#;
   SHGFI_ICON : constant := 16#000000100#;
   SHGFI_DISPLAYNAME : constant := 16#000000200#;
   SHGFI_TYPENAME : constant := 16#000000400#;
   SHGFI_ATTRIBUTES : constant := 16#000000800#;
   SHGFI_ICONLOCATION : constant := 16#000001000#;
   SHGFI_EXETYPE : constant := 16#000002000#;
   SHGFI_SYSICONINDEX : constant := 16#000004000#;
   SHGFI_LINKOVERLAY : constant := 16#000008000#;
   SHGFI_SELECTED : constant := 16#000010000#;
   SHGFI_ATTR_SPECIFIED : constant := 16#000020000#;
   SHGFI_LARGEICON : constant := 16#000000000#;
   SHGFI_SMALLICON : constant := 16#000000001#;
   SHGFI_OPENICON : constant := 16#000000002#;
   SHGFI_SHELLICONSIZE : constant := 16#000000004#;
   SHGFI_PIDL : constant := 16#000000008#;
   SHGFI_USEFILEATTRIBUTES : constant := 16#000000010#;
   SHGFI_ADDOVERLAYS : constant := 16#000000020#;
   SHGFI_OVERLAYINDEX : constant := 16#000000040#;
   SHGSI_ICONLOCATION : constant := 0;
   SIID_INVALID : constant := 1;
   SHGNLI_PIDL : constant := 16#000000001#;
   SHGNLI_PREFIXNAME : constant := 16#000000002#;
   SHGNLI_NOUNIQUE : constant := 16#000000004#;
   SHGNLI_NOLNK : constant := 16#000000008#;
   SHGNLI_NOLOCNAME : constant := 16#000000010#;
   SHGNLI_USEURLEXT : constant := 16#000000020#;
   PRINTACTION_OPEN : constant := 0;
   PRINTACTION_PROPERTIES : constant := 1;
   PRINTACTION_NETINSTALL : constant := 2;
   PRINTACTION_NETINSTALLLINK : constant := 3;
   PRINTACTION_TESTPAGE : constant := 4;
   PRINTACTION_OPENNETPRN : constant := 5;
   PRINTACTION_DOCUMENTDEFAULTS : constant := 6;
   PRINTACTION_SERVERPROPERTIES : constant := 7;
   PRINT_PROP_FORCE_NAME : constant := 16#01#;
   OFFLINE_STATUS_LOCAL : constant := 16#0001#;
   OFFLINE_STATUS_REMOTE : constant := 16#0002#;
   OFFLINE_STATUS_INCOMPLETE : constant := 16#0004#;
   SHIL_LARGE : constant := 0;
   SHIL_SMALL : constant := 1;
   SHIL_EXTRALARGE : constant := 2;
   SHIL_SYSSMALL : constant := 3;
   SHIL_JUMBO : constant := 4;
   NCM_GETADDRESS : constant := WM_USER + 1;
   NCM_SETALLOWTYPE : constant := WM_USER + 2;
   NCM_GETALLOWTYPE : constant := WM_USER + 3;
   NCM_DISPLAYERRORTIP : constant := WM_USER + 4;
   -- #include <Win32.hpp>
   -- #include <winperf.h>
   -- #include <pshpack8.h>
   -- #include <winperf.h>
   PERF_DATA_VERSION : constant := 1;
   PERF_DATA_REVISION : constant := 1;
   PERF_NO_INSTANCES : constant := -1;
   PERF_SIZE_DWORD : constant := 16#00000000#;
   PERF_SIZE_LARGE : constant := 16#00000100#;
   PERF_SIZE_ZERO : constant := 16#00000200#;
   PERF_SIZE_VARIABLE_LEN : constant := 16#00000300#;
   PERF_TYPE_NUMBER : constant := 16#00000000#;
   PERF_TYPE_COUNTER : constant := 16#00000400#;
   PERF_TYPE_TEXT : constant := 16#00000800#;
   PERF_TYPE_ZERO : constant := 16#00000C00#;
   PERF_NUMBER_HEX : constant := 16#00000000#;
   PERF_NUMBER_DECIMAL : constant := 16#00010000#;
   PERF_NUMBER_DEC_1000 : constant := 16#00020000#;
   PERF_COUNTER_VALUE : constant := 16#00000000#;
   PERF_COUNTER_RATE : constant := 16#00010000#;
   PERF_COUNTER_FRACTION : constant := 16#00020000#;
   PERF_COUNTER_BASE : constant := 16#00030000#;
   PERF_COUNTER_ELAPSED : constant := 16#00040000#;
   PERF_COUNTER_QUEUELEN : constant := 16#00050000#;
   PERF_COUNTER_HISTOGRAM : constant := 16#00060000#;
   PERF_COUNTER_PRECISION : constant := 16#00070000#;
   PERF_TEXT_UNICODE : constant := 16#00000000#;
   PERF_TEXT_ASCII : constant := 16#00010000#;
   PERF_TIMER_TICK : constant := 16#00000000#;
   PERF_TIMER_100NS : constant := 16#00100000#;
   PERF_OBJECT_TIMER : constant := 16#00200000#;
   PERF_DELTA_COUNTER : constant := 16#00400000#;
   PERF_DELTA_BASE : constant := 16#00800000#;
   PERF_INVERSE_COUNTER : constant := 16#01000000#;
   PERF_MULTI_COUNTER : constant := 16#02000000#;
   PERF_DISPLAY_NO_SUFFIX : constant := 16#00000000#;
   PERF_DISPLAY_PER_SEC : constant := 16#10000000#;
   PERF_DISPLAY_PERCENT : constant := 16#20000000#;
   PERF_DISPLAY_SECONDS : constant := 16#30000000#;
   PERF_DISPLAY_NOSHOW : constant := 16#40000000#;
   PERF_COUNTER_COUNTER : constant := ( Interfaces.C.Unsigned( PERF_SIZE_DWORD )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_RATE )
       or Interfaces.C.Unsigned( PERF_TIMER_TICK )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PER_SEC ) );
   PERF_COUNTER_TIMER : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_RATE )
       or Interfaces.C.Unsigned( PERF_TIMER_TICK )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_COUNTER_QUEUELEN_TYPE : constant := ( Interfaces.C.Unsigned( PERF_SIZE_DWORD )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_QUEUELEN )
       or Interfaces.C.Unsigned( PERF_TIMER_TICK )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NO_SUFFIX ) );
   PERF_COUNTER_LARGE_QUEUELEN_TYPE : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_QUEUELEN )
       or Interfaces.C.Unsigned( PERF_TIMER_TICK )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NO_SUFFIX ) );
   PERF_COUNTER_100NS_QUEUELEN_TYPE : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_QUEUELEN )
       or Interfaces.C.Unsigned( PERF_TIMER_100NS )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NO_SUFFIX ) );
   PERF_COUNTER_OBJ_TIME_QUEUELEN_TYPE : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_QUEUELEN )
       or Interfaces.C.Unsigned( PERF_OBJECT_TIMER )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NO_SUFFIX ) );
   PERF_COUNTER_BULK_COUNT : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_RATE )
       or Interfaces.C.Unsigned( PERF_TIMER_TICK )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PER_SEC ) );
   PERF_COUNTER_TEXT : constant := ( Interfaces.C.Unsigned( PERF_SIZE_VARIABLE_LEN )
       or Interfaces.C.Unsigned( PERF_TYPE_TEXT )
       or Interfaces.C.Unsigned( PERF_TEXT_UNICODE )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NO_SUFFIX ) );
   PERF_COUNTER_RAWCOUNT : constant := ( Interfaces.C.Unsigned( PERF_SIZE_DWORD )
       or Interfaces.C.Unsigned( PERF_TYPE_NUMBER )
       or Interfaces.C.Unsigned( PERF_NUMBER_DECIMAL )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NO_SUFFIX ) );
   PERF_COUNTER_LARGE_RAWCOUNT : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_NUMBER )
       or Interfaces.C.Unsigned( PERF_NUMBER_DECIMAL )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NO_SUFFIX ) );
   PERF_COUNTER_RAWCOUNT_HEX : constant := ( Interfaces.C.Unsigned( PERF_SIZE_DWORD )
       or Interfaces.C.Unsigned( PERF_TYPE_NUMBER )
       or Interfaces.C.Unsigned( PERF_NUMBER_HEX )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NO_SUFFIX ) );
   PERF_COUNTER_LARGE_RAWCOUNT_HEX : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_NUMBER )
       or Interfaces.C.Unsigned( PERF_NUMBER_HEX )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NO_SUFFIX ) );
   PERF_SAMPLE_FRACTION : constant := ( Interfaces.C.Unsigned( PERF_SIZE_DWORD )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_FRACTION )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DELTA_BASE )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_SAMPLE_COUNTER : constant := ( Interfaces.C.Unsigned( PERF_SIZE_DWORD )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_RATE )
       or Interfaces.C.Unsigned( PERF_TIMER_TICK )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NO_SUFFIX ) );
   PERF_COUNTER_NODATA : constant := ( Interfaces.C.Unsigned( PERF_SIZE_ZERO )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NOSHOW ) );
   PERF_COUNTER_TIMER_INV : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_RATE )
       or Interfaces.C.Unsigned( PERF_TIMER_TICK )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_INVERSE_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_SAMPLE_BASE : constant := ( Interfaces.C.Unsigned( PERF_SIZE_DWORD )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_BASE )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NOSHOW )
       or 16#00000001# );
   PERF_AVERAGE_TIMER : constant := ( Interfaces.C.Unsigned( PERF_SIZE_DWORD )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_FRACTION )
       or Interfaces.C.Unsigned( PERF_DISPLAY_SECONDS ) );
   PERF_AVERAGE_BASE : constant := ( Interfaces.C.Unsigned( PERF_SIZE_DWORD )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_BASE )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NOSHOW )
       or 16#00000002# );
   PERF_AVERAGE_BULK : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_FRACTION )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NOSHOW ) );
   PERF_OBJ_TIME_TIMER : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_RATE )
       or Interfaces.C.Unsigned( PERF_OBJECT_TIMER )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_100NSEC_TIMER : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_RATE )
       or Interfaces.C.Unsigned( PERF_TIMER_100NS )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_100NSEC_TIMER_INV : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_RATE )
       or Interfaces.C.Unsigned( PERF_TIMER_100NS )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_INVERSE_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_COUNTER_MULTI_TIMER : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_RATE )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_TIMER_TICK )
       or Interfaces.C.Unsigned( PERF_MULTI_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_COUNTER_MULTI_TIMER_INV : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_RATE )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_MULTI_COUNTER )
       or Interfaces.C.Unsigned( PERF_TIMER_TICK )
       or Interfaces.C.Unsigned( PERF_INVERSE_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_COUNTER_MULTI_BASE : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_BASE )
       or Interfaces.C.Unsigned( PERF_MULTI_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NOSHOW ) );
   PERF_100NSEC_MULTI_TIMER : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_RATE )
       or Interfaces.C.Unsigned( PERF_TIMER_100NS )
       or Interfaces.C.Unsigned( PERF_MULTI_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_100NSEC_MULTI_TIMER_INV : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_RATE )
       or Interfaces.C.Unsigned( PERF_TIMER_100NS )
       or Interfaces.C.Unsigned( PERF_MULTI_COUNTER )
       or Interfaces.C.Unsigned( PERF_INVERSE_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_RAW_FRACTION : constant := ( Interfaces.C.Unsigned( PERF_SIZE_DWORD )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_FRACTION )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_LARGE_RAW_FRACTION : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_FRACTION )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_RAW_BASE : constant := ( Interfaces.C.Unsigned( PERF_SIZE_DWORD )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_BASE )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NOSHOW )
       or 16#00000003# );
   PERF_LARGE_RAW_BASE : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_BASE )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NOSHOW ) );
   PERF_ELAPSED_TIME : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_ELAPSED )
       or Interfaces.C.Unsigned( PERF_OBJECT_TIMER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_SECONDS ) );
   PERF_COUNTER_HISTOGRAM_TYPE : constant := 16#80000000#;
   PERF_COUNTER_DELTA : constant := ( Interfaces.C.Unsigned( PERF_SIZE_DWORD )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_VALUE )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NO_SUFFIX ) );
   PERF_COUNTER_LARGE_DELTA : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_VALUE )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_NO_SUFFIX ) );
   PERF_PRECISION_SYSTEM_TIMER : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_PRECISION )
       or Interfaces.C.Unsigned( PERF_TIMER_TICK )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_PRECISION_100NS_TIMER : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_PRECISION )
       or Interfaces.C.Unsigned( PERF_TIMER_100NS )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_PRECISION_OBJECT_TIMER : constant := ( Interfaces.C.Unsigned( PERF_SIZE_LARGE )
       or Interfaces.C.Unsigned( PERF_TYPE_COUNTER )
       or Interfaces.C.Unsigned( PERF_COUNTER_PRECISION )
       or Interfaces.C.Unsigned( PERF_OBJECT_TIMER )
       or Interfaces.C.Unsigned( PERF_DELTA_COUNTER )
       or Interfaces.C.Unsigned( PERF_DISPLAY_PERCENT ) );
   PERF_DETAIL_NOVICE : constant := 100;
   PERF_DETAIL_ADVANCED : constant := 200;
   PERF_DETAIL_EXPERT : constant := 300;
   PERF_DETAIL_WIZARD : constant := 400;
   PERF_NO_UNIQUE_ID : constant := -1;
   PERF_QUERY_OBJECTS : constant := 16#80000000#;
   PERF_QUERY_GLOBAL : constant := 16#80000001#;
   PERF_QUERY_COSTLY : constant := 16#80000002#;
   MAX_PERF_OBJECTS_IN_QUERY_FUNCTION : constant := 64;
   WINPERF_LOG_NONE : constant := 0;
   WINPERF_LOG_USER : constant := 1;
   WINPERF_LOG_DEBUG : constant := 2;
   WINPERF_LOG_VERBOSE : constant := 3;
   -- #include <poppack.h>
   -- #include <winperf.h>
   -- #include <Win32.hpp>
   -- #include <Winsock2.h>
   INCL_WINSOCK_API_PROTOTYPES : constant := 1;
   INCL_WINSOCK_API_TYPEDEFS : constant := 0;
   -- #include <ws2def.h>
   -- #include <inaddr.h>
   -- #include <ws2def.h>
   AF_UNSPEC : constant := 0;
   AF_UNIX : constant := 1;
   AF_INET : constant := 2;
   AF_IMPLINK : constant := 3;
   AF_PUP : constant := 4;
   AF_CHAOS : constant := 5;
   AF_NS : constant := 6;
   AF_ISO : constant := 7;
   AF_ECMA : constant := 8;
   AF_DATAKIT : constant := 9;
   AF_CCITT : constant := 10;
   AF_SNA : constant := 11;
   AF_DECnet : constant := 12;
   AF_DLI : constant := 13;
   AF_LAT : constant := 14;
   AF_HYLINK : constant := 15;
   AF_APPLETALK : constant := 16;
   AF_NETBIOS : constant := 17;
   AF_VOICEVIEW : constant := 18;
   AF_FIREFOX : constant := 19;
   AF_UNKNOWN1 : constant := 20;
   AF_BAN : constant := 21;
   AF_ATM : constant := 22;
   AF_INET6 : constant := 23;
   AF_CLUSTER : constant := 24;
   AF_12844 : constant := 25;
   AF_IRDA : constant := 26;
   AF_NETDES : constant := 28;
   AF_TCNPROCESS : constant := 29;
   AF_TCNMESSAGE : constant := 30;
   AF_ICLFXBM : constant := 31;
   AF_BTH : constant := 32;
   AF_LINK : constant := 33;
   AF_HYPERV : constant := 34;
   AF_MAX : constant := 35;
   SOCK_STREAM : constant := 1;
   SOCK_DGRAM : constant := 2;
   SOCK_RAW : constant := 3;
   SOCK_RDM : constant := 4;
   SOCK_SEQPACKET : constant := 5;
   SOL_SOCKET : constant := 16#ffff#;
   SO_DEBUG : constant := 16#0001#;
   SO_ACCEPTCONN : constant := 16#0002#;
   SO_REUSEADDR : constant := 16#0004#;
   SO_KEEPALIVE : constant := 16#0008#;
   SO_DONTROUTE : constant := 16#0010#;
   SO_BROADCAST : constant := 16#0020#;
   SO_USELOOPBACK : constant := 16#0040#;
   SO_LINGER : constant := 16#0080#;
   SO_OOBINLINE : constant := 16#0100#;
   SO_SNDBUF : constant := 16#1001#;
   SO_RCVBUF : constant := 16#1002#;
   SO_SNDLOWAT : constant := 16#1003#;
   SO_RCVLOWAT : constant := 16#1004#;
   SO_SNDTIMEO : constant := 16#1005#;
   SO_RCVTIMEO : constant := 16#1006#;
   SO_ERROR : constant := 16#1007#;
   SO_TYPE : constant := 16#1008#;
   SO_BSP_STATE : constant := 16#1009#;
   SO_GROUP_ID : constant := 16#2001#;
   SO_GROUP_PRIORITY : constant := 16#2002#;
   SO_MAX_MSG_SIZE : constant := 16#2003#;
   SO_CONDITIONAL_ACCEPT : constant := 16#3002#;
   SO_PAUSE_ACCEPT : constant := 16#3003#;
   SO_COMPARTMENT_ID : constant := 16#3004#;
   SO_RANDOMIZE_PORT : constant := 16#3005#;
   SO_PORT_SCALABILITY : constant := 16#3006#;
   SO_REUSE_UNICASTPORT : constant := 16#3007#;
   SO_REUSE_MULTICASTPORT : constant := 16#3008#;
   SO_ORIGINAL_DST : constant := 16#300F#;
   WSK_SO_BASE : constant := 16#4000#;
   TCP_NODELAY : constant := 16#0001#;
   IOC_UNIX : constant := 16#00000000#;
   IOC_WS2 : constant := 16#08000000#;
   IOC_PROTOCOL : constant := 16#10000000#;
   IOC_VENDOR : constant := 16#18000000#;
   IOC_WSK : constant := ( Interfaces.C.Unsigned( IOC_WS2 ) or 16#07000000# );
   IPPROTO_IP : constant := 0;
   IPPORT_TCPMUX : constant := 1;
   IPPORT_ECHO : constant := 7;
   IPPORT_DISCARD : constant := 9;
   IPPORT_SYSTAT : constant := 11;
   IPPORT_DAYTIME : constant := 13;
   IPPORT_NETSTAT : constant := 15;
   IPPORT_QOTD : constant := 17;
   IPPORT_MSP : constant := 18;
   IPPORT_CHARGEN : constant := 19;
   IPPORT_FTP_DATA : constant := 20;
   IPPORT_FTP : constant := 21;
   IPPORT_TELNET : constant := 23;
   IPPORT_SMTP : constant := 25;
   IPPORT_TIMESERVER : constant := 37;
   IPPORT_NAMESERVER : constant := 42;
   IPPORT_WHOIS : constant := 43;
   IPPORT_MTP : constant := 57;
   IPPORT_TFTP : constant := 69;
   IPPORT_RJE : constant := 77;
   IPPORT_FINGER : constant := 79;
   IPPORT_TTYLINK : constant := 87;
   IPPORT_SUPDUP : constant := 95;
   IPPORT_POP3 : constant := 110;
   IPPORT_NTP : constant := 123;
   IPPORT_EPMAP : constant := 135;
   IPPORT_NETBIOS_NS : constant := 137;
   IPPORT_NETBIOS_DGM : constant := 138;
   IPPORT_NETBIOS_SSN : constant := 139;
   IPPORT_IMAP : constant := 143;
   IPPORT_SNMP : constant := 161;
   IPPORT_SNMP_TRAP : constant := 162;
   IPPORT_IMAP3 : constant := 220;
   IPPORT_LDAP : constant := 389;
   IPPORT_HTTPS : constant := 443;
   IPPORT_MICROSOFT_DS : constant := 445;
   IPPORT_EXECSERVER : constant := 512;
   IPPORT_LOGINSERVER : constant := 513;
   IPPORT_CMDSERVER : constant := 514;
   IPPORT_EFSSERVER : constant := 520;
   IPPORT_BIFFUDP : constant := 512;
   IPPORT_WHOSERVER : constant := 513;
   IPPORT_ROUTESERVER : constant := 520;
   IPPORT_RESERVED : constant := 1024;
   IPPORT_REGISTERED_MAX : constant := 16#bfff#;
   IPPORT_DYNAMIC_MIN : constant := 16#c000#;
   IPPORT_DYNAMIC_MAX : constant := 16#ffff#;
   IN_CLASSA_NET : constant := 16#ff000000#;
   IN_CLASSA_NSHIFT : constant := 24;
   IN_CLASSA_HOST : constant := 16#00ffffff#;
   IN_CLASSA_MAX : constant := 128;
   IN_CLASSB_NET : constant := 16#ffff0000#;
   IN_CLASSB_NSHIFT : constant := 16;
   IN_CLASSB_HOST : constant := 16#0000ffff#;
   IN_CLASSB_MAX : constant := 65536;
   IN_CLASSC_NET : constant := 16#ffffff00#;
   IN_CLASSC_NSHIFT : constant := 8;
   IN_CLASSC_HOST : constant := 16#000000ff#;
   IN_CLASSD_NET : constant := 16#f0000000#;
   IN_CLASSD_NSHIFT : constant := 28;
   IN_CLASSD_HOST : constant := 16#0fffffff#;
   INADDR_LOOPBACK : constant := 16#7f000001#;
   INADDR_NONE : constant := 16#ffffffff#;
   SCOPEID_UNSPECIFIED_INIT : constant := 0;
   IOCPARM_MASK : constant := 16#7f#;
   IOC_VOID : constant := 16#20000000#;
   IOC_OUT : constant := 16#40000000#;
   IOC_IN : constant := 16#80000000#;
   IOC_INOUT : constant := ( Interfaces.C.Unsigned( IOC_IN )
       or Interfaces.C.Unsigned( IOC_OUT ) );
   MSG_TRUNC : constant := 16#0100#;
   MSG_CTRUNC : constant := 16#0200#;
   MSG_BCAST : constant := 16#0400#;
   MSG_MCAST : constant := 16#0800#;
   MSG_ERRQUEUE : constant := 16#1000#;
   AI_PASSIVE : constant := 16#00000001#;
   AI_CANONNAME : constant := 16#00000002#;
   AI_NUMERICHOST : constant := 16#00000004#;
   AI_NUMERICSERV : constant := 16#00000008#;
   AI_DNS_ONLY : constant := 16#00000010#;
   AI_ALL : constant := 16#00000100#;
   AI_ADDRCONFIG : constant := 16#00000400#;
   AI_V4MAPPED : constant := 16#00000800#;
   AI_NON_AUTHORITATIVE : constant := 16#00004000#;
   AI_SECURE : constant := 16#00008000#;
   AI_RETURN_PREFERRED_NAMES : constant := 16#00010000#;
   AI_FQDN : constant := 16#00020000#;
   AI_FILESERVER : constant := 16#00040000#;
   AI_DISABLE_IDN_ENCODING : constant := 16#00080000#;
   AI_EXTENDED : constant := 16#80000000#;
   AI_RESOLUTION_HANDLE : constant := 16#40000000#;
   ADDRINFOEX_VERSION_2 : constant := 2;
   ADDRINFOEX_VERSION_3 : constant := 3;
   ADDRINFOEX_VERSION_4 : constant := 4;
   NS_ALL : constant := 0;
   NS_SAP : constant := 1;
   NS_NDS : constant := 2;
   NS_PEER_BROWSE : constant := 3;
   NS_SLP : constant := 5;
   NS_DHCP : constant := 6;
   NS_TCPIP_LOCAL : constant := 10;
   NS_TCPIP_HOSTS : constant := 11;
   NS_DNS : constant := 12;
   NS_NETBT : constant := 13;
   NS_WINS : constant := 14;
   NS_NLA : constant := 15;
   NS_BTH : constant := 16;
   NS_NBP : constant := 20;
   NS_MS : constant := 30;
   NS_STDA : constant := 31;
   NS_NTDS : constant := 32;
   NS_EMAIL : constant := 37;
   NS_PNRPNAME : constant := 38;
   NS_PNRPCLOUD : constant := 39;
   NS_X500 : constant := 40;
   NS_NIS : constant := 41;
   NS_NISPLUS : constant := 42;
   NS_WRQ : constant := 50;
   NS_NETDES : constant := 60;
   NI_NOFQDN : constant := 16#01#;
   NI_NUMERICHOST : constant := 16#02#;
   NI_NAMEREQD : constant := 16#04#;
   NI_NUMERICSERV : constant := 16#08#;
   NI_DGRAM : constant := 16#10#;
   NI_MAXHOST : constant := 1025;
   NI_MAXSERV : constant := 32;
   -- #include <Winsock2.h>
   FD_SETSIZE : constant := 64;
   IMPLINK_IP : constant := 155;
   IMPLINK_LOWEXPER : constant := 156;
   IMPLINK_HIGHEXPER : constant := 158;
   WSADESCRIPTION_LEN : constant := 256;
   WSASYS_STATUS_LEN : constant := 128;
   SOCKET_ERROR : constant := -1;
   FROM_PROTOCOL_INFO : constant := -1;
   SO_PROTOCOL_INFOA : constant := 16#2004#;
   SO_PROTOCOL_INFOW : constant := 16#2005#;
   PVD_CONFIG : constant := 16#3001#;
   SOMAXCONN : constant := 16#7fffffff#;
   MSG_OOB : constant := 16#1#;
   MSG_PEEK : constant := 16#2#;
   MSG_DONTROUTE : constant := 16#4#;
   MSG_WAITALL : constant := 16#8#;
   MSG_PUSH_IMMEDIATE : constant := 16#20#;
   MSG_PARTIAL : constant := 16#8000#;
   MSG_INTERRUPT : constant := 16#10#;
   MSG_MAXIOVLEN : constant := 16;
   MAXGETHOSTSTRUCT : constant := 1024;
   FD_READ_BIT : constant := 0;
   FD_WRITE_BIT : constant := 1;
   FD_OOB_BIT : constant := 2;
   FD_ACCEPT_BIT : constant := 3;
   FD_CONNECT_BIT : constant := 4;
   FD_CLOSE_BIT : constant := 5;
   FD_QOS_BIT : constant := 6;
   FD_GROUP_QOS_BIT : constant := 7;
   FD_ROUTING_INTERFACE_CHANGE_BIT : constant := 8;
   FD_ADDRESS_LIST_CHANGE_BIT : constant := 9;
   FD_MAX_EVENTS : constant := 10;
   WSA_IO_PENDING : constant := ERROR_IO_PENDING;
   WSA_IO_INCOMPLETE : constant := ERROR_IO_INCOMPLETE;
   WSA_INVALID_HANDLE : constant := ERROR_INVALID_HANDLE;
   WSA_INVALID_PARAMETER : constant := ERROR_INVALID_PARAMETER;
   WSA_NOT_ENOUGH_MEMORY : constant := ERROR_NOT_ENOUGH_MEMORY;
   WSA_OPERATION_ABORTED : constant := ERROR_OPERATION_ABORTED;
   WSA_MAXIMUM_WAIT_EVENTS : constant := MAXIMUM_WAIT_OBJECTS;
   WSA_WAIT_FAILED : constant := WAIT_FAILED;
   WSA_WAIT_EVENT_0 : constant := WAIT_OBJECT_0;
   WSA_WAIT_TIMEOUT : constant := WAIT_TIMEOUT;
   WSA_INFINITE : constant := INFINITE;
   -- #include <qos.h>
   SERVICETYPE_NOTRAFFIC : constant := 16#00000000#;
   SERVICETYPE_BESTEFFORT : constant := 16#00000001#;
   SERVICETYPE_CONTROLLEDLOAD : constant := 16#00000002#;
   SERVICETYPE_GUARANTEED : constant := 16#00000003#;
   SERVICETYPE_NETWORK_UNAVAILABLE : constant := 16#00000004#;
   SERVICETYPE_GENERAL_INFORMATION : constant := 16#00000005#;
   SERVICETYPE_NOCHANGE : constant := 16#00000006#;
   SERVICETYPE_NONCONFORMING : constant := 16#00000009#;
   SERVICETYPE_NETWORK_CONTROL : constant := 16#0000000A#;
   SERVICETYPE_QUALITATIVE : constant := 16#0000000D#;
   SERVICE_BESTEFFORT : constant := 16#80010000#;
   SERVICE_CONTROLLEDLOAD : constant := 16#80020000#;
   SERVICE_GUARANTEED : constant := 16#80040000#;
   SERVICE_QUALITATIVE : constant := 16#80200000#;
   SERVICE_NO_TRAFFIC_CONTROL : constant := 16#81000000#;
   SERVICE_NO_QOS_SIGNALING : constant := 16#40000000#;
   QOS_NOT_SPECIFIED : constant := 16#FFFFFFFF#;
   POSITIVE_INFINITY_RATE : constant := 16#FFFFFFFE#;
   QOS_GENERAL_ID_BASE : constant := 2000;
   TC_NONCONF_BORROW : constant := 0;
   TC_NONCONF_SHAPE : constant := 1;
   TC_NONCONF_DISCARD : constant := 2;
   TC_NONCONF_BORROW_PLUS : constant := 3;
   -- #include <Winsock2.h>
   CF_ACCEPT : constant := 16#0000#;
   CF_REJECT : constant := 16#0001#;
   CF_DEFER : constant := 16#0002#;
   SD_RECEIVE : constant := 16#00#;
   SD_SEND : constant := 16#01#;
   SD_BOTH : constant := 16#02#;
   SG_UNCONSTRAINED_GROUP : constant := 16#01#;
   SG_CONSTRAINED_GROUP : constant := 16#02#;
   MAX_PROTOCOL_CHAIN : constant := 7;
   BASE_PROTOCOL : constant := 1;
   LAYERED_PROTOCOL : constant := 0;
   WSAPROTOCOL_LEN : constant := 255;
   PFL_MULTIPLE_PROTO_ENTRIES : constant := 16#00000001#;
   PFL_RECOMMENDED_PROTO_ENTRY : constant := 16#00000002#;
   PFL_HIDDEN : constant := 16#00000004#;
   PFL_MATCHES_PROTOCOL_ZERO : constant := 16#00000008#;
   PFL_NETWORKDIRECT_PROVIDER : constant := 16#00000010#;
   XP1_CONNECTIONLESS : constant := 16#00000001#;
   XP1_GUARANTEED_DELIVERY : constant := 16#00000002#;
   XP1_GUARANTEED_ORDER : constant := 16#00000004#;
   XP1_MESSAGE_ORIENTED : constant := 16#00000008#;
   XP1_PSEUDO_STREAM : constant := 16#00000010#;
   XP1_GRACEFUL_CLOSE : constant := 16#00000020#;
   XP1_EXPEDITED_DATA : constant := 16#00000040#;
   XP1_CONNECT_DATA : constant := 16#00000080#;
   XP1_DISCONNECT_DATA : constant := 16#00000100#;
   XP1_SUPPORT_BROADCAST : constant := 16#00000200#;
   XP1_SUPPORT_MULTIPOINT : constant := 16#00000400#;
   XP1_MULTIPOINT_CONTROL_PLANE : constant := 16#00000800#;
   XP1_MULTIPOINT_DATA_PLANE : constant := 16#00001000#;
   XP1_QOS_SUPPORTED : constant := 16#00002000#;
   XP1_INTERRUPT : constant := 16#00004000#;
   XP1_UNI_SEND : constant := 16#00008000#;
   XP1_UNI_RECV : constant := 16#00010000#;
   XP1_IFS_HANDLES : constant := 16#00020000#;
   XP1_PARTIAL_MESSAGE : constant := 16#00040000#;
   XP1_SAN_SUPPORT_SDP : constant := 16#00080000#;
   BIGENDIAN : constant := 16#0000#;
   LITTLEENDIAN : constant := 16#0001#;
   SECURITY_PROTOCOL_NONE : constant := 16#0000#;
   JL_SENDER_ONLY : constant := 16#01#;
   JL_RECEIVER_ONLY : constant := 16#02#;
   JL_BOTH : constant := 16#04#;
   WSA_FLAG_OVERLAPPED : constant := 16#01#;
   WSA_FLAG_MULTIPOINT_C_ROOT : constant := 16#02#;
   WSA_FLAG_MULTIPOINT_C_LEAF : constant := 16#04#;
   WSA_FLAG_MULTIPOINT_D_ROOT : constant := 16#08#;
   WSA_FLAG_MULTIPOINT_D_LEAF : constant := 16#10#;
   WSA_FLAG_ACCESS_SYSTEM_SECURITY : constant := 16#40#;
   WSA_FLAG_NO_HANDLE_INHERIT : constant := 16#80#;
   WSA_FLAG_REGISTERED_IO : constant := 16#100#;
   TH_NETDEV : constant := 16#00000001#;
   TH_TAPI : constant := 16#00000002#;
   SERVICE_MULTIPLE : constant := 16#00000001#;
   NS_LOCALNAME : constant := 19;
   RES_UNUSED_1 : constant := 16#00000001#;
   RES_FLUSH_CACHE : constant := 16#00000002#;
   RES_SERVICE : constant := 16#00000004#;
   LUP_DEEP : constant := 16#0001#;
   LUP_CONTAINERS : constant := 16#0002#;
   LUP_NOCONTAINERS : constant := 16#0004#;
   LUP_NEAREST : constant := 16#0008#;
   LUP_RETURN_NAME : constant := 16#0010#;
   LUP_RETURN_TYPE : constant := 16#0020#;
   LUP_RETURN_VERSION : constant := 16#0040#;
   LUP_RETURN_COMMENT : constant := 16#0080#;
   LUP_RETURN_ADDR : constant := 16#0100#;
   LUP_RETURN_BLOB : constant := 16#0200#;
   LUP_RETURN_ALIASES : constant := 16#0400#;
   LUP_RETURN_QUERY_STRING : constant := 16#0800#;
   LUP_RETURN_ALL : constant := 16#0FF0#;
   LUP_RES_SERVICE : constant := 16#8000#;
   LUP_FLUSHCACHE : constant := 16#1000#;
   LUP_FLUSHPREVIOUS : constant := 16#2000#;
   LUP_NON_AUTHORITATIVE : constant := 16#4000#;
   LUP_SECURE : constant := 16#8000#;
   LUP_RETURN_PREFERRED_NAMES : constant := 16#10000#;
   LUP_DNS_ONLY : constant := 16#20000#;
   LUP_ADDRCONFIG : constant := 16#00100000#;
   LUP_DUAL_ADDR : constant := 16#00200000#;
   LUP_FILESERVER : constant := 16#00400000#;
   LUP_DISABLE_IDN_ENCODING : constant := 16#00800000#;
   LUP_API_ANSI : constant := 16#01000000#;
   LUP_RESOLUTION_HANDLE : constant := 16#80000000#;
   RESULT_IS_ALIAS : constant := 16#0001#;
   RESULT_IS_ADDED : constant := 16#0010#;
   RESULT_IS_CHANGED : constant := 16#0020#;
   RESULT_IS_DELETED : constant := 16#0040#;
   POLLRDNORM : constant := 16#0100#;
   POLLRDBAND : constant := 16#0200#;
   POLLIN : constant := ( Interfaces.C.Unsigned( POLLRDNORM )
       or Interfaces.C.Unsigned( POLLRDBAND ) );
   POLLPRI : constant := 16#0400#;
   POLLWRNORM : constant := 16#0010#;
   POLLOUT : constant := POLLWRNORM;
   POLLWRBAND : constant := 16#0020#;
   POLLERR : constant := 16#0001#;
   POLLHUP : constant := 16#0002#;
   POLLNVAL : constant := 16#0004#;
   -- #include <Win32.hpp>
   -- #include <winspool.h>
   -- #include <prsht.h>
   -- #include <pshpack8.h>
   -- #include <prsht.h>
   MAXPROPPAGES : constant := 100;
   PSP_DEFAULT : constant := 16#00000000#;
   PSP_DLGINDIRECT : constant := 16#00000001#;
   PSP_USEHICON : constant := 16#00000002#;
   PSP_USEICONID : constant := 16#00000004#;
   PSP_USETITLE : constant := 16#00000008#;
   PSP_RTLREADING : constant := 16#00000010#;
   PSP_HASHELP : constant := 16#00000020#;
   PSP_USEREFPARENT : constant := 16#00000040#;
   PSP_USECALLBACK : constant := 16#00000080#;
   PSP_PREMATURE : constant := 16#00000400#;
   PSP_HIDEHEADER : constant := 16#00000800#;
   PSP_USEHEADERTITLE : constant := 16#00001000#;
   PSP_USEHEADERSUBTITLE : constant := 16#00002000#;
   PSP_USEFUSIONCONTEXT : constant := 16#00004000#;
   PSPCB_ADDREF : constant := 0;
   PSPCB_RELEASE : constant := 1;
   PSPCB_CREATE : constant := 2;
   PSH_DEFAULT : constant := 16#00000000#;
   PSH_PROPTITLE : constant := 16#00000001#;
   PSH_USEHICON : constant := 16#00000002#;
   PSH_USEICONID : constant := 16#00000004#;
   PSH_PROPSHEETPAGE : constant := 16#00000008#;
   PSH_WIZARDHASFINISH : constant := 16#00000010#;
   PSH_WIZARD : constant := 16#00000020#;
   PSH_USEPSTARTPAGE : constant := 16#00000040#;
   PSH_NOAPPLYNOW : constant := 16#00000080#;
   PSH_USECALLBACK : constant := 16#00000100#;
   PSH_HASHELP : constant := 16#00000200#;
   PSH_MODELESS : constant := 16#00000400#;
   PSH_RTLREADING : constant := 16#00000800#;
   PSH_WIZARDCONTEXTHELP : constant := 16#00001000#;
   PSH_WIZARD97 : constant := 16#01000000#;
   PSH_WATERMARK : constant := 16#00008000#;
   PSH_USEHBMWATERMARK : constant := 16#00010000#;
   PSH_USEHPLWATERMARK : constant := 16#00020000#;
   PSH_STRETCHWATERMARK : constant := 16#00040000#;
   PSH_HEADER : constant := 16#00080000#;
   PSH_USEHBMHEADER : constant := 16#00100000#;
   PSH_USEPAGELANG : constant := 16#00200000#;
   PSH_WIZARD_LITE : constant := 16#00400000#;
   PSH_NOCONTEXTHELP : constant := 16#02000000#;
   PSH_AEROWIZARD : constant := 16#00004000#;
   PSH_RESIZABLE : constant := 16#04000000#;
   PSH_HEADERBITMAP : constant := 16#08000000#;
   PSH_NOMARGIN : constant := 16#10000000#;
   PSCB_INITIALIZED : constant := 1;
   PSCB_PRECREATE : constant := 2;
   PSCB_BUTTONPRESSED : constant := 3;
   PSNRET_NOERROR : constant := 0;
   PSNRET_INVALID : constant := 1;
   PSNRET_INVALID_NOCHANGEPAGE : constant := 2;
   PSNRET_MESSAGEHANDLED : constant := 3;
   PSM_SETCURSEL : constant := WM_USER + 101;
   PSM_REMOVEPAGE : constant := WM_USER + 102;
   PSM_ADDPAGE : constant := WM_USER + 103;
   PSM_CHANGED : constant := WM_USER + 104;
   PSM_RESTARTWINDOWS : constant := WM_USER + 105;
   PSM_REBOOTSYSTEM : constant := WM_USER + 106;
   PSM_CANCELTOCLOSE : constant := WM_USER + 107;
   PSM_QUERYSIBLINGS : constant := WM_USER + 108;
   PSM_UNCHANGED : constant := WM_USER + 109;
   PSM_APPLY : constant := WM_USER + 110;
   PSM_SETTITLEA : constant := WM_USER + 111;
   PSM_SETTITLEW : constant := WM_USER + 120;
   PSM_SETWIZBUTTONS : constant := WM_USER + 112;
   PSWIZB_BACK : constant := 16#00000001#;
   PSWIZB_NEXT : constant := 16#00000002#;
   PSWIZB_FINISH : constant := 16#00000004#;
   PSWIZB_DISABLEDFINISH : constant := 16#00000008#;
   PSWIZBF_ELEVATIONREQUIRED : constant := 16#00000001#;
   PSWIZB_CANCEL : constant := 16#00000010#;
   PSM_PRESSBUTTON : constant := WM_USER + 113;
   PSBTN_BACK : constant := 0;
   PSBTN_NEXT : constant := 1;
   PSBTN_FINISH : constant := 2;
   PSBTN_OK : constant := 3;
   PSBTN_APPLYNOW : constant := 4;
   PSBTN_CANCEL : constant := 5;
   PSBTN_HELP : constant := 6;
   PSBTN_MAX : constant := 6;
   PSM_SETCURSELID : constant := WM_USER + 114;
   PSM_SETFINISHTEXTA : constant := WM_USER + 115;
   PSM_SETFINISHTEXTW : constant := WM_USER + 121;
   PSM_GETTABCONTROL : constant := WM_USER + 116;
   PSM_ISDIALOGMESSAGE : constant := WM_USER + 117;
   PSM_GETCURRENTPAGEHWND : constant := WM_USER + 118;
   PSM_INSERTPAGE : constant := WM_USER + 119;
   PSM_SETHEADERTITLEA : constant := WM_USER + 125;
   PSM_SETHEADERTITLEW : constant := WM_USER + 126;
   PSM_SETHEADERSUBTITLEA : constant := WM_USER + 127;
   PSM_SETHEADERSUBTITLEW : constant := WM_USER + 128;
   PSM_HWNDTOINDEX : constant := WM_USER + 129;
   PSM_INDEXTOHWND : constant := WM_USER + 130;
   PSM_PAGETOINDEX : constant := WM_USER + 131;
   PSM_INDEXTOPAGE : constant := WM_USER + 132;
   PSM_IDTOINDEX : constant := WM_USER + 133;
   PSM_INDEXTOID : constant := WM_USER + 134;
   PSM_GETRESULT : constant := WM_USER + 135;
   PSM_RECALCPAGESIZES : constant := WM_USER + 136;
   PSM_SETNEXTTEXTW : constant := WM_USER + 137;
   PSWIZB_SHOW : constant := 0;
   PSWIZB_RESTORE : constant := 1;
   PSM_SHOWWIZBUTTONS : constant := WM_USER + 138;
   PSM_ENABLEWIZBUTTONS : constant := WM_USER + 139;
   PSM_SETBUTTONTEXTW : constant := WM_USER + 140;
   ID_PSRESTARTWINDOWS : constant := 16#2#;
   ID_PSREBOOTSYSTEM : constant := ( Interfaces.C.Unsigned( ID_PSRESTARTWINDOWS ) or 16#1# );
   WIZ_CXDLG : constant := 276;
   WIZ_CYDLG : constant := 140;
   WIZ_CXBMP : constant := 80;
   WIZ_BODYX : constant := 92;
   WIZ_BODYCX : constant := 184;
   PROP_SM_CXDLG : constant := 212;
   PROP_SM_CYDLG : constant := 188;
   PROP_MED_CXDLG : constant := 227;
   PROP_MED_CYDLG : constant := 215;
   PROP_LG_CXDLG : constant := 252;
   PROP_LG_CYDLG : constant := 218;
   -- #include <poppack.h>
   -- #include <prsht.h>
   -- #include <winspool.h>
   DSPRINT_PUBLISH : constant := 16#00000001#;
   DSPRINT_UPDATE : constant := 16#00000002#;
   DSPRINT_UNPUBLISH : constant := 16#00000004#;
   DSPRINT_REPUBLISH : constant := 16#00000008#;
   DSPRINT_PENDING : constant := 16#80000000#;
   PRINTER_CONTROL_PAUSE : constant := 1;
   PRINTER_CONTROL_RESUME : constant := 2;
   PRINTER_CONTROL_PURGE : constant := 3;
   PRINTER_CONTROL_SET_STATUS : constant := 4;
   PRINTER_STATUS_PAUSED : constant := 16#00000001#;
   PRINTER_STATUS_ERROR : constant := 16#00000002#;
   PRINTER_STATUS_PENDING_DELETION : constant := 16#00000004#;
   PRINTER_STATUS_PAPER_JAM : constant := 16#00000008#;
   PRINTER_STATUS_PAPER_OUT : constant := 16#00000010#;
   PRINTER_STATUS_MANUAL_FEED : constant := 16#00000020#;
   PRINTER_STATUS_PAPER_PROBLEM : constant := 16#00000040#;
   PRINTER_STATUS_OFFLINE : constant := 16#00000080#;
   PRINTER_STATUS_IO_ACTIVE : constant := 16#00000100#;
   PRINTER_STATUS_BUSY : constant := 16#00000200#;
   PRINTER_STATUS_PRINTING : constant := 16#00000400#;
   PRINTER_STATUS_OUTPUT_BIN_FULL : constant := 16#00000800#;
   PRINTER_STATUS_NOT_AVAILABLE : constant := 16#00001000#;
   PRINTER_STATUS_WAITING : constant := 16#00002000#;
   PRINTER_STATUS_PROCESSING : constant := 16#00004000#;
   PRINTER_STATUS_INITIALIZING : constant := 16#00008000#;
   PRINTER_STATUS_WARMING_UP : constant := 16#00010000#;
   PRINTER_STATUS_TONER_LOW : constant := 16#00020000#;
   PRINTER_STATUS_NO_TONER : constant := 16#00040000#;
   PRINTER_STATUS_PAGE_PUNT : constant := 16#00080000#;
   PRINTER_STATUS_USER_INTERVENTION : constant := 16#00100000#;
   PRINTER_STATUS_OUT_OF_MEMORY : constant := 16#00200000#;
   PRINTER_STATUS_DOOR_OPEN : constant := 16#00400000#;
   PRINTER_STATUS_SERVER_UNKNOWN : constant := 16#00800000#;
   PRINTER_STATUS_POWER_SAVE : constant := 16#01000000#;
   PRINTER_STATUS_SERVER_OFFLINE : constant := 16#02000000#;
   PRINTER_STATUS_DRIVER_UPDATE_NEEDED : constant := 16#04000000#;
   PRINTER_ATTRIBUTE_QUEUED : constant := 16#00000001#;
   PRINTER_ATTRIBUTE_DIRECT : constant := 16#00000002#;
   PRINTER_ATTRIBUTE_DEFAULT : constant := 16#00000004#;
   PRINTER_ATTRIBUTE_SHARED : constant := 16#00000008#;
   PRINTER_ATTRIBUTE_NETWORK : constant := 16#00000010#;
   PRINTER_ATTRIBUTE_HIDDEN : constant := 16#00000020#;
   PRINTER_ATTRIBUTE_LOCAL : constant := 16#00000040#;
   PRINTER_ATTRIBUTE_ENABLE_DEVQ : constant := 16#00000080#;
   PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS : constant := 16#00000100#;
   PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST : constant := 16#00000200#;
   PRINTER_ATTRIBUTE_WORK_OFFLINE : constant := 16#00000400#;
   PRINTER_ATTRIBUTE_ENABLE_BIDI : constant := 16#00000800#;
   PRINTER_ATTRIBUTE_RAW_ONLY : constant := 16#00001000#;
   PRINTER_ATTRIBUTE_PUBLISHED : constant := 16#00002000#;
   PRINTER_ATTRIBUTE_FAX : constant := 16#00004000#;
   PRINTER_ATTRIBUTE_TS : constant := 16#00008000#;
   PRINTER_ATTRIBUTE_PUSHED_USER : constant := 16#00020000#;
   PRINTER_ATTRIBUTE_PUSHED_MACHINE : constant := 16#00040000#;
   PRINTER_ATTRIBUTE_MACHINE : constant := 16#00080000#;
   PRINTER_ATTRIBUTE_FRIENDLY_NAME : constant := 16#00100000#;
   PRINTER_ATTRIBUTE_TS_GENERIC_DRIVER : constant := 16#00200000#;
   PRINTER_ATTRIBUTE_PER_USER : constant := 16#00400000#;
   PRINTER_ATTRIBUTE_ENTERPRISE_CLOUD : constant := 16#00800000#;
   NO_PRIORITY : constant := 0;
   MAX_PRIORITY : constant := 99;
   MIN_PRIORITY : constant := 1;
   DEF_PRIORITY : constant := 1;
   JOB_CONTROL_PAUSE : constant := 1;
   JOB_CONTROL_RESUME : constant := 2;
   JOB_CONTROL_CANCEL : constant := 3;
   JOB_CONTROL_RESTART : constant := 4;
   JOB_CONTROL_DELETE : constant := 5;
   JOB_CONTROL_SENT_TO_PRINTER : constant := 6;
   JOB_CONTROL_LAST_PAGE_EJECTED : constant := 7;
   JOB_CONTROL_RETAIN : constant := 8;
   JOB_CONTROL_RELEASE : constant := 9;
   JOB_STATUS_PAUSED : constant := 16#00000001#;
   JOB_STATUS_ERROR : constant := 16#00000002#;
   JOB_STATUS_DELETING : constant := 16#00000004#;
   JOB_STATUS_SPOOLING : constant := 16#00000008#;
   JOB_STATUS_PRINTING : constant := 16#00000010#;
   JOB_STATUS_OFFLINE : constant := 16#00000020#;
   JOB_STATUS_PAPEROUT : constant := 16#00000040#;
   JOB_STATUS_PRINTED : constant := 16#00000080#;
   JOB_STATUS_DELETED : constant := 16#00000100#;
   JOB_STATUS_BLOCKED_DEVQ : constant := 16#00000200#;
   JOB_STATUS_USER_INTERVENTION : constant := 16#00000400#;
   JOB_STATUS_RESTART : constant := 16#00000800#;
   JOB_STATUS_COMPLETE : constant := 16#00001000#;
   JOB_STATUS_RETAINED : constant := 16#00002000#;
   JOB_STATUS_RENDERING_LOCALLY : constant := 16#00004000#;
   JOB_POSITION_UNSPECIFIED : constant := 0;
   PRINTER_DRIVER_PACKAGE_AWARE : constant := 16#00000001#;
   PRINTER_DRIVER_XPS : constant := 16#00000002#;
   PRINTER_DRIVER_SANDBOX_ENABLED : constant := 16#00000004#;
   PRINTER_DRIVER_CLASS : constant := 16#00000008#;
   PRINTER_DRIVER_DERIVED : constant := 16#00000010#;
   PRINTER_DRIVER_NOT_SHAREABLE : constant := 16#00000020#;
   PRINTER_DRIVER_CATEGORY_FAX : constant := 16#00000040#;
   PRINTER_DRIVER_CATEGORY_FILE : constant := 16#00000080#;
   PRINTER_DRIVER_CATEGORY_VIRTUAL : constant := 16#00000100#;
   PRINTER_DRIVER_CATEGORY_SERVICE : constant := 16#00000200#;
   PRINTER_DRIVER_SOFT_RESET_REQUIRED : constant := 16#00000400#;
   PRINTER_DRIVER_SANDBOX_DISABLED : constant := 16#00000800#;
   PRINTER_DRIVER_CATEGORY_3D : constant := 16#00001000#;
   PRINTER_DRIVER_CATEGORY_CLOUD : constant := 16#00002000#;
   DRIVER_KERNELMODE : constant := 16#00000001#;
   DRIVER_USERMODE : constant := 16#00000002#;
   DPD_DELETE_UNUSED_FILES : constant := 16#00000001#;
   DPD_DELETE_SPECIFIC_VERSION : constant := 16#00000002#;
   DPD_DELETE_ALL_FILES : constant := 16#00000004#;
   APD_STRICT_UPGRADE : constant := 16#00000001#;
   APD_STRICT_DOWNGRADE : constant := 16#00000002#;
   APD_COPY_ALL_FILES : constant := 16#00000004#;
   APD_COPY_NEW_FILES : constant := 16#00000008#;
   APD_COPY_FROM_DIRECTORY : constant := 16#00000010#;
   STRING_NONE : constant := 16#00000001#;
   STRING_MUIDLL : constant := 16#00000002#;
   STRING_LANGPAIR : constant := 16#00000004#;
   DI_CHANNEL : constant := 1;
   DI_READ_SPOOL_JOB : constant := 3;
   DI_MEMORYMAP_WRITE : constant := 16#00000001#;
   FORM_USER : constant := 16#00000000#;
   FORM_BUILTIN : constant := 16#00000001#;
   FORM_PRINTER : constant := 16#00000002#;
   NORMAL_PRINT : constant := 16#00000000#;
   REVERSE_PRINT : constant := 16#00000001#;
   PPCAPS_RIGHT_THEN_DOWN : constant := 16#00000001#;
   -- [Todo] PPCAPS_DOWN_THEN_RIGHT ( 0x00000001 << 1 );
   -- [Todo] PPCAPS_LEFT_THEN_DOWN ( 0x00000001 << 2 );
   -- [Todo] PPCAPS_DOWN_THEN_LEFT ( 0x00000001 << 3 );
   PPCAPS_BORDER_PRINT : constant := 16#00000001#;
   PPCAPS_BOOKLET_EDGE : constant := 16#00000001#;
   PPCAPS_REVERSE_PAGES_FOR_REVERSE_DUPLEX : constant := 16#00000001#;
   -- [Todo] PPCAPS_DONT_SEND_EXTRA_PAGES_FOR_DUPLEX ( 0x00000001 << 1 );
   PPCAPS_SQUARE_SCALING : constant := 16#00000001#;
   PORT_TYPE_WRITE : constant := 16#0001#;
   PORT_TYPE_READ : constant := 16#0002#;
   PORT_TYPE_REDIRECTED : constant := 16#0004#;
   PORT_TYPE_NET_ATTACHED : constant := 16#0008#;
   PORT_STATUS_TYPE_ERROR : constant := 1;
   PORT_STATUS_TYPE_WARNING : constant := 2;
   PORT_STATUS_TYPE_INFO : constant := 3;
   PORT_STATUS_OFFLINE : constant := 1;
   PORT_STATUS_PAPER_JAM : constant := 2;
   PORT_STATUS_PAPER_OUT : constant := 3;
   PORT_STATUS_OUTPUT_BIN_FULL : constant := 4;
   PORT_STATUS_PAPER_PROBLEM : constant := 5;
   PORT_STATUS_NO_TONER : constant := 6;
   PORT_STATUS_DOOR_OPEN : constant := 7;
   PORT_STATUS_USER_INTERVENTION : constant := 8;
   PORT_STATUS_OUT_OF_MEMORY : constant := 9;
   PORT_STATUS_TONER_LOW : constant := 10;
   PORT_STATUS_WARMING_UP : constant := 11;
   PORT_STATUS_POWER_SAVE : constant := 12;
   PRINTER_ENUM_DEFAULT : constant := 16#00000001#;
   PRINTER_ENUM_LOCAL : constant := 16#00000002#;
   PRINTER_ENUM_CONNECTIONS : constant := 16#00000004#;
   PRINTER_ENUM_FAVORITE : constant := 16#00000004#;
   PRINTER_ENUM_NAME : constant := 16#00000008#;
   PRINTER_ENUM_REMOTE : constant := 16#00000010#;
   PRINTER_ENUM_SHARED : constant := 16#00000020#;
   PRINTER_ENUM_NETWORK : constant := 16#00000040#;
   PRINTER_ENUM_EXPAND : constant := 16#00004000#;
   PRINTER_ENUM_CONTAINER : constant := 16#00008000#;
   PRINTER_ENUM_ICONMASK : constant := 16#00ff0000#;
   PRINTER_ENUM_ICON1 : constant := 16#00010000#;
   PRINTER_ENUM_ICON2 : constant := 16#00020000#;
   PRINTER_ENUM_ICON3 : constant := 16#00040000#;
   PRINTER_ENUM_ICON4 : constant := 16#00080000#;
   PRINTER_ENUM_ICON5 : constant := 16#00100000#;
   PRINTER_ENUM_ICON6 : constant := 16#00200000#;
   PRINTER_ENUM_ICON7 : constant := 16#00400000#;
   PRINTER_ENUM_ICON8 : constant := 16#00800000#;
   PRINTER_ENUM_HIDE : constant := 16#01000000#;
   PRINTER_ENUM_CATEGORY_ALL : constant := 16#02000000#;
   PRINTER_ENUM_CATEGORY_3D : constant := 16#04000000#;
   SPOOL_FILE_PERSISTENT : constant := 16#00000001#;
   SPOOL_FILE_TEMPORARY : constant := 16#00000002#;
   PRINTER_NOTIFY_TYPE : constant := 16#00#;
   JOB_NOTIFY_TYPE : constant := 16#01#;
   SERVER_NOTIFY_TYPE : constant := 16#02#;
   PRINTER_NOTIFY_FIELD_SERVER_NAME : constant := 16#00#;
   PRINTER_NOTIFY_FIELD_PRINTER_NAME : constant := 16#01#;
   PRINTER_NOTIFY_FIELD_SHARE_NAME : constant := 16#02#;
   PRINTER_NOTIFY_FIELD_PORT_NAME : constant := 16#03#;
   PRINTER_NOTIFY_FIELD_DRIVER_NAME : constant := 16#04#;
   PRINTER_NOTIFY_FIELD_COMMENT : constant := 16#05#;
   PRINTER_NOTIFY_FIELD_LOCATION : constant := 16#06#;
   PRINTER_NOTIFY_FIELD_DEVMODE : constant := 16#07#;
   PRINTER_NOTIFY_FIELD_SEPFILE : constant := 16#08#;
   PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR : constant := 16#09#;
   PRINTER_NOTIFY_FIELD_PARAMETERS : constant := 16#0A#;
   PRINTER_NOTIFY_FIELD_DATATYPE : constant := 16#0B#;
   PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR : constant := 16#0C#;
   PRINTER_NOTIFY_FIELD_ATTRIBUTES : constant := 16#0D#;
   PRINTER_NOTIFY_FIELD_PRIORITY : constant := 16#0E#;
   PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY : constant := 16#0F#;
   PRINTER_NOTIFY_FIELD_START_TIME : constant := 16#10#;
   PRINTER_NOTIFY_FIELD_UNTIL_TIME : constant := 16#11#;
   PRINTER_NOTIFY_FIELD_STATUS : constant := 16#12#;
   PRINTER_NOTIFY_FIELD_STATUS_STRING : constant := 16#13#;
   PRINTER_NOTIFY_FIELD_CJOBS : constant := 16#14#;
   PRINTER_NOTIFY_FIELD_AVERAGE_PPM : constant := 16#15#;
   PRINTER_NOTIFY_FIELD_TOTAL_PAGES : constant := 16#16#;
   PRINTER_NOTIFY_FIELD_PAGES_PRINTED : constant := 16#17#;
   PRINTER_NOTIFY_FIELD_TOTAL_BYTES : constant := 16#18#;
   PRINTER_NOTIFY_FIELD_BYTES_PRINTED : constant := 16#19#;
   PRINTER_NOTIFY_FIELD_OBJECT_GUID : constant := 16#1A#;
   PRINTER_NOTIFY_FIELD_FRIENDLY_NAME : constant := 16#1B#;
   PRINTER_NOTIFY_FIELD_BRANCH_OFFICE_PRINTING : constant := 16#1C#;
   JOB_NOTIFY_FIELD_PRINTER_NAME : constant := 16#00#;
   JOB_NOTIFY_FIELD_MACHINE_NAME : constant := 16#01#;
   JOB_NOTIFY_FIELD_PORT_NAME : constant := 16#02#;
   JOB_NOTIFY_FIELD_USER_NAME : constant := 16#03#;
   JOB_NOTIFY_FIELD_NOTIFY_NAME : constant := 16#04#;
   JOB_NOTIFY_FIELD_DATATYPE : constant := 16#05#;
   JOB_NOTIFY_FIELD_PRINT_PROCESSOR : constant := 16#06#;
   JOB_NOTIFY_FIELD_PARAMETERS : constant := 16#07#;
   JOB_NOTIFY_FIELD_DRIVER_NAME : constant := 16#08#;
   JOB_NOTIFY_FIELD_DEVMODE : constant := 16#09#;
   JOB_NOTIFY_FIELD_STATUS : constant := 16#0A#;
   JOB_NOTIFY_FIELD_STATUS_STRING : constant := 16#0B#;
   JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR : constant := 16#0C#;
   JOB_NOTIFY_FIELD_DOCUMENT : constant := 16#0D#;
   JOB_NOTIFY_FIELD_PRIORITY : constant := 16#0E#;
   JOB_NOTIFY_FIELD_POSITION : constant := 16#0F#;
   JOB_NOTIFY_FIELD_SUBMITTED : constant := 16#10#;
   JOB_NOTIFY_FIELD_START_TIME : constant := 16#11#;
   JOB_NOTIFY_FIELD_UNTIL_TIME : constant := 16#12#;
   JOB_NOTIFY_FIELD_TIME : constant := 16#13#;
   JOB_NOTIFY_FIELD_TOTAL_PAGES : constant := 16#14#;
   JOB_NOTIFY_FIELD_PAGES_PRINTED : constant := 16#15#;
   JOB_NOTIFY_FIELD_TOTAL_BYTES : constant := 16#16#;
   JOB_NOTIFY_FIELD_BYTES_PRINTED : constant := 16#17#;
   JOB_NOTIFY_FIELD_REMOTE_JOB_ID : constant := 16#18#;
   SERVER_NOTIFY_FIELD_PRINT_DRIVER_ISOLATION_GROUP : constant := 16#00#;
   PRINTER_NOTIFY_CATEGORY_ALL : constant := 16#001000#;
   PRINTER_NOTIFY_CATEGORY_3D : constant := 16#002000#;
   PRINTER_NOTIFY_OPTIONS_REFRESH : constant := 16#01#;
   PRINTER_NOTIFY_INFO_DISCARDED : constant := 16#01#;
   BIDI_ACCESS_ADMINISTRATOR : constant := 16#1#;
   BIDI_ACCESS_USER : constant := 16#2#;
   ERROR_BIDI_STATUS_OK : constant := 0;
   ERROR_BIDI_ERROR_BASE : constant := 13000;
   ERROR_BIDI_STATUS_WARNING : constant := ERROR_BIDI_ERROR_BASE + 1;
   ERROR_BIDI_SCHEMA_READ_ONLY : constant := ERROR_BIDI_ERROR_BASE + 2;
   ERROR_BIDI_SERVER_OFFLINE : constant := ERROR_BIDI_ERROR_BASE + 3;
   ERROR_BIDI_DEVICE_OFFLINE : constant := ERROR_BIDI_ERROR_BASE + 4;
   ERROR_BIDI_SCHEMA_NOT_SUPPORTED : constant := ERROR_BIDI_ERROR_BASE + 5;
   ERROR_BIDI_SET_DIFFERENT_TYPE : constant := ERROR_BIDI_ERROR_BASE + 6;
   ERROR_BIDI_SET_MULTIPLE_SCHEMAPATH : constant := ERROR_BIDI_ERROR_BASE + 7;
   ERROR_BIDI_SET_INVALID_SCHEMAPATH : constant := ERROR_BIDI_ERROR_BASE + 8;
   ERROR_BIDI_SET_UNKNOWN_FAILURE : constant := ERROR_BIDI_ERROR_BASE + 9;
   ERROR_BIDI_SCHEMA_WRITE_ONLY : constant := ERROR_BIDI_ERROR_BASE + 10;
   ERROR_BIDI_GET_REQUIRES_ARGUMENT : constant := ERROR_BIDI_ERROR_BASE + 11;
   ERROR_BIDI_GET_ARGUMENT_NOT_SUPPORTED : constant := ERROR_BIDI_ERROR_BASE + 12;
   ERROR_BIDI_GET_MISSING_ARGUMENT : constant := ERROR_BIDI_ERROR_BASE + 13;
   ERROR_BIDI_DEVICE_CONFIG_UNCHANGED : constant := ERROR_BIDI_ERROR_BASE + 14;
   ERROR_BIDI_NO_LOCALIZED_RESOURCES : constant := ERROR_BIDI_ERROR_BASE + 15;
   ERROR_BIDI_NO_BIDI_SCHEMA_EXTENSIONS : constant := ERROR_BIDI_ERROR_BASE + 16;
   ERROR_BIDI_UNSUPPORTED_CLIENT_LANGUAGE : constant := ERROR_BIDI_ERROR_BASE + 17;
   ERROR_BIDI_UNSUPPORTED_RESOURCE_FORMAT : constant := ERROR_BIDI_ERROR_BASE + 18;
   PRINTER_CHANGE_ADD_PRINTER : constant := 16#00000001#;
   PRINTER_CHANGE_SET_PRINTER : constant := 16#00000002#;
   PRINTER_CHANGE_DELETE_PRINTER : constant := 16#00000004#;
   PRINTER_CHANGE_FAILED_CONNECTION_PRINTER : constant := 16#00000008#;
   PRINTER_CHANGE_PRINTER : constant := 16#000000FF#;
   PRINTER_CHANGE_ADD_JOB : constant := 16#00000100#;
   PRINTER_CHANGE_SET_JOB : constant := 16#00000200#;
   PRINTER_CHANGE_DELETE_JOB : constant := 16#00000400#;
   PRINTER_CHANGE_WRITE_JOB : constant := 16#00000800#;
   PRINTER_CHANGE_JOB : constant := 16#0000FF00#;
   PRINTER_CHANGE_ADD_FORM : constant := 16#00010000#;
   PRINTER_CHANGE_SET_FORM : constant := 16#00020000#;
   PRINTER_CHANGE_DELETE_FORM : constant := 16#00040000#;
   PRINTER_CHANGE_FORM : constant := 16#00070000#;
   PRINTER_CHANGE_ADD_PORT : constant := 16#00100000#;
   PRINTER_CHANGE_CONFIGURE_PORT : constant := 16#00200000#;
   PRINTER_CHANGE_DELETE_PORT : constant := 16#00400000#;
   PRINTER_CHANGE_PORT : constant := 16#00700000#;
   PRINTER_CHANGE_ADD_PRINT_PROCESSOR : constant := 16#01000000#;
   PRINTER_CHANGE_DELETE_PRINT_PROCESSOR : constant := 16#04000000#;
   PRINTER_CHANGE_PRINT_PROCESSOR : constant := 16#07000000#;
   PRINTER_CHANGE_SERVER : constant := 16#08000000#;
   PRINTER_CHANGE_ADD_PRINTER_DRIVER : constant := 16#10000000#;
   PRINTER_CHANGE_SET_PRINTER_DRIVER : constant := 16#20000000#;
   PRINTER_CHANGE_DELETE_PRINTER_DRIVER : constant := 16#40000000#;
   PRINTER_CHANGE_PRINTER_DRIVER : constant := 16#70000000#;
   PRINTER_CHANGE_TIMEOUT : constant := 16#80000000#;
   PRINTER_CHANGE_ALL : constant := 16#7F77FFFF#;
   PRINTER_ERROR_INFORMATION : constant := 16#80000000#;
   PRINTER_ERROR_WARNING : constant := 16#40000000#;
   PRINTER_ERROR_SEVERE : constant := 16#20000000#;
   PRINTER_ERROR_OUTOFPAPER : constant := 16#00000001#;
   PRINTER_ERROR_JAM : constant := 16#00000002#;
   PRINTER_ERROR_OUTOFTONER : constant := 16#00000004#;
   SERVER_ACCESS_ADMINISTER : constant := 16#00000001#;
   SERVER_ACCESS_ENUMERATE : constant := 16#00000002#;
   PRINTER_ACCESS_ADMINISTER : constant := 16#00000004#;
   PRINTER_ACCESS_USE : constant := 16#00000008#;
   JOB_ACCESS_ADMINISTER : constant := 16#00000010#;
   JOB_ACCESS_READ : constant := 16#00000020#;
   PRINTER_ACCESS_MANAGE_LIMITED : constant := 16#00000040#;
   SERVER_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( SERVER_ACCESS_ADMINISTER )
       or Interfaces.C.Unsigned( SERVER_ACCESS_ENUMERATE ) );
   SERVER_READ : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_READ )
       or Interfaces.C.Unsigned( SERVER_ACCESS_ENUMERATE ) );
   SERVER_WRITE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_WRITE )
       or Interfaces.C.Unsigned( SERVER_ACCESS_ADMINISTER )
       or Interfaces.C.Unsigned( SERVER_ACCESS_ENUMERATE ) );
   SERVER_EXECUTE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_EXECUTE )
       or Interfaces.C.Unsigned( SERVER_ACCESS_ENUMERATE ) );
   PRINTER_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( PRINTER_ACCESS_ADMINISTER )
       or Interfaces.C.Unsigned( PRINTER_ACCESS_USE ) );
   PRINTER_READ : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_READ )
       or Interfaces.C.Unsigned( PRINTER_ACCESS_USE ) );
   PRINTER_WRITE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_WRITE )
       or Interfaces.C.Unsigned( PRINTER_ACCESS_USE ) );
   PRINTER_EXECUTE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_EXECUTE )
       or Interfaces.C.Unsigned( PRINTER_ACCESS_USE ) );
   JOB_ALL_ACCESS : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_REQUIRED )
       or Interfaces.C.Unsigned( JOB_ACCESS_ADMINISTER )
       or Interfaces.C.Unsigned( JOB_ACCESS_READ ) );
   JOB_READ : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_READ )
       or Interfaces.C.Unsigned( JOB_ACCESS_READ ) );
   JOB_WRITE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_WRITE )
       or Interfaces.C.Unsigned( JOB_ACCESS_ADMINISTER ) );
   JOB_EXECUTE : constant := ( Interfaces.C.Unsigned( STANDARD_RIGHTS_EXECUTE )
       or Interfaces.C.Unsigned( JOB_ACCESS_ADMINISTER ) );
   PRINTER_CONNECTION_MISMATCH : constant := 16#00000020#;
   PRINTER_CONNECTION_NO_UI : constant := 16#00000040#;
   IPDFP_COPY_ALL_FILES : constant := 16#00000001#;
   UPDP_SILENT_UPLOAD : constant := 16#00000001#;
   UPDP_UPLOAD_ALWAYS : constant := 16#00000002#;
   UPDP_CHECK_DRIVERSTORE : constant := 16#00000004#;
   -- #include <Win32.hpp>
   -- #include <ole2.h>
   -- #include <pshpack8.h>
   -- #include <ole2.h>
   -- #include <objbase.h>
   -- #include <rpc.h>
   -- #include <pshpack8.h>
   -- #include <rpc.h>
   -- #include <rpcdce.h>
   RPC_C_BINDING_INFINITE_TIMEOUT : constant := 10;
   RPC_C_BINDING_MIN_TIMEOUT : constant := 0;
   RPC_C_BINDING_DEFAULT_TIMEOUT : constant := 5;
   RPC_C_BINDING_MAX_TIMEOUT : constant := 9;
   RPC_C_CANCEL_INFINITE_TIMEOUT : constant := -1;
   RPC_C_LISTEN_MAX_CALLS_DEFAULT : constant := 1234;
   RPC_C_PROTSEQ_MAX_REQS_DEFAULT : constant := 10;
   RPC_C_BIND_TO_ALL_NICS : constant := 1;
   RPC_C_USE_INTERNET_PORT : constant := 16#1#;
   RPC_C_USE_INTRANET_PORT : constant := 16#2#;
   RPC_C_DONT_FAIL : constant := 16#4#;
   RPC_C_RPCHTTP_USE_LOAD_BALANCE : constant := 16#8#;
   RPC_C_OPT_BINDING_NONCAUSAL : constant := 9;
   RPC_C_OPT_SECURITY_CALLBACK : constant := 10;
   RPC_C_OPT_UNIQUE_BINDING : constant := 11;
   RPC_C_OPT_TRANS_SEND_BUFFER_SIZE : constant := 5;
   RPC_C_OPT_CALL_TIMEOUT : constant := 12;
   RPC_C_OPT_DONT_LINGER : constant := 13;
   RPC_C_OPT_TRUST_PEER : constant := 14;
   RPC_C_OPT_ASYNC_BLOCK : constant := 15;
   RPC_C_OPT_OPTIMIZE_TIME : constant := 16;
   RPC_C_OPT_MAX_OPTIONS : constant := 17;
   RPC_C_FULL_CERT_CHAIN : constant := 16#0001#;
   RPC_C_STATS_CALLS_IN : constant := 0;
   RPC_C_STATS_CALLS_OUT : constant := 1;
   RPC_C_STATS_PKTS_IN : constant := 2;
   RPC_C_STATS_PKTS_OUT : constant := 3;
   RPC_C_AUTHN_LEVEL_DEFAULT : constant := 0;
   RPC_C_AUTHN_LEVEL_NONE : constant := 1;
   RPC_C_AUTHN_LEVEL_CONNECT : constant := 2;
   RPC_C_AUTHN_LEVEL_CALL : constant := 3;
   RPC_C_AUTHN_LEVEL_PKT : constant := 4;
   RPC_C_AUTHN_LEVEL_PKT_INTEGRITY : constant := 5;
   RPC_C_AUTHN_LEVEL_PKT_PRIVACY : constant := 6;
   RPC_C_IMP_LEVEL_DEFAULT : constant := 0;
   RPC_C_IMP_LEVEL_ANONYMOUS : constant := 1;
   RPC_C_IMP_LEVEL_IDENTIFY : constant := 2;
   RPC_C_IMP_LEVEL_IMPERSONATE : constant := 3;
   RPC_C_IMP_LEVEL_DELEGATE : constant := 4;
   RPC_C_QOS_IDENTITY_STATIC : constant := 0;
   RPC_C_QOS_IDENTITY_DYNAMIC : constant := 1;
   RPC_C_QOS_CAPABILITIES_DEFAULT : constant := 16#0#;
   RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH : constant := 16#1#;
   RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC : constant := 16#2#;
   RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY : constant := 16#4#;
   RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE : constant := 16#8#;
   RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT : constant := 16#10#;
   RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY : constant := 16#20#;
   RPC_C_PROTECT_LEVEL_DEFAULT : constant := RPC_C_AUTHN_LEVEL_DEFAULT;
   RPC_C_PROTECT_LEVEL_NONE : constant := RPC_C_AUTHN_LEVEL_NONE;
   RPC_C_PROTECT_LEVEL_CONNECT : constant := RPC_C_AUTHN_LEVEL_CONNECT;
   RPC_C_PROTECT_LEVEL_CALL : constant := RPC_C_AUTHN_LEVEL_CALL;
   RPC_C_PROTECT_LEVEL_PKT : constant := RPC_C_AUTHN_LEVEL_PKT;
   RPC_C_PROTECT_LEVEL_PKT_INTEGRITY : constant := RPC_C_AUTHN_LEVEL_PKT_INTEGRITY;
   RPC_C_PROTECT_LEVEL_PKT_PRIVACY : constant := RPC_C_AUTHN_LEVEL_PKT_PRIVACY;
   RPC_C_AUTHN_NONE : constant := 0;
   RPC_C_AUTHN_DCE_PRIVATE : constant := 1;
   RPC_C_AUTHN_DCE_PUBLIC : constant := 2;
   RPC_C_AUTHN_DEC_PUBLIC : constant := 4;
   RPC_C_AUTHN_GSS_NEGOTIATE : constant := 9;
   RPC_C_AUTHN_WINNT : constant := 10;
   RPC_C_AUTHN_GSS_SCHANNEL : constant := 14;
   RPC_C_AUTHN_GSS_KERBEROS : constant := 16;
   RPC_C_AUTHN_DPA : constant := 17;
   RPC_C_AUTHN_MSN : constant := 18;
   RPC_C_AUTHN_DIGEST : constant := 21;
   RPC_C_AUTHN_KERNEL : constant := 20;
   RPC_C_AUTHN_NEGO_EXTENDER : constant := 30;
   RPC_C_AUTHN_PKU2U : constant := 31;
   RPC_C_AUTHN_LIVE_SSP : constant := 32;
   RPC_C_AUTHN_LIVEXP_SSP : constant := 35;
   RPC_C_AUTHN_CLOUD_AP : constant := 36;
   RPC_C_AUTHN_MSONLINE : constant := 82;
   RPC_C_AUTHN_MQ : constant := 100;
   RPC_C_AUTHN_DEFAULT : constant := 16#FFFFFFFF#;
   RPC_C_SECURITY_QOS_VERSION : constant := 1;
   RPC_C_SECURITY_QOS_VERSION_1 : constant := 1;
   SEC_WINNT_AUTH_IDENTITY_ANSI : constant := 16#1#;
   SEC_WINNT_AUTH_IDENTITY_UNICODE : constant := 16#2#;
   RPC_C_SECURITY_QOS_VERSION_2 : constant := 2;
   RPC_C_AUTHN_INFO_TYPE_HTTP : constant := 1;
   RPC_C_HTTP_AUTHN_TARGET_SERVER : constant := 1;
   RPC_C_HTTP_AUTHN_TARGET_PROXY : constant := 2;
   RPC_C_HTTP_AUTHN_SCHEME_BASIC : constant := 16#00000001#;
   RPC_C_HTTP_AUTHN_SCHEME_NTLM : constant := 16#00000002#;
   RPC_C_HTTP_AUTHN_SCHEME_PASSPORT : constant := 16#00000004#;
   RPC_C_HTTP_AUTHN_SCHEME_DIGEST : constant := 16#00000008#;
   RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE : constant := 16#00000010#;
   RPC_C_HTTP_AUTHN_SCHEME_CERT : constant := 16#00010000#;
   RPC_C_HTTP_FLAG_USE_SSL : constant := 1;
   RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME : constant := 2;
   RPC_C_HTTP_FLAG_IGNORE_CERT_CN_INVALID : constant := 8;
   RPC_C_HTTP_FLAG_ENABLE_CERT_REVOCATION_CHECK : constant := 16;
   RPC_C_SECURITY_QOS_VERSION_3 : constant := 3;
   RPC_C_SECURITY_QOS_VERSION_4 : constant := 4;
   RPC_C_SECURITY_QOS_VERSION_5 : constant := 5;
   RPC_PROTSEQ_TCP : constant := 16#1#;
   RPC_PROTSEQ_NMP : constant := 16#2#;
   RPC_PROTSEQ_LRPC : constant := 16#3#;
   RPC_PROTSEQ_HTTP : constant := 16#4#;
   RPC_BHT_OBJECT_UUID_VALID : constant := 16#1#;
   RPC_BHO_NONCAUSAL : constant := 16#1#;
   RPC_BHO_DONTLINGER : constant := 16#2#;
   RPC_BHO_EXCLUSIVE_AND_GUARANTEED : constant := 16#4#;
   RPC_C_AUTHZ_NONE : constant := 0;
   RPC_C_AUTHZ_NAME : constant := 1;
   RPC_C_AUTHZ_DCE : constant := 2;
   RPC_C_AUTHZ_DEFAULT : constant := 16#ffffffff#;
   DCE_C_ERROR_STRING_LEN : constant := 256;
   RPC_C_EP_ALL_ELTS : constant := 0;
   RPC_C_EP_MATCH_BY_IF : constant := 1;
   RPC_C_EP_MATCH_BY_OBJ : constant := 2;
   RPC_C_EP_MATCH_BY_BOTH : constant := 3;
   RPC_C_VERS_ALL : constant := 1;
   RPC_C_VERS_COMPATIBLE : constant := 2;
   RPC_C_VERS_EXACT : constant := 3;
   RPC_C_VERS_MAJOR_ONLY : constant := 4;
   RPC_C_VERS_UPTO : constant := 5;
   RPC_C_MGMT_INQ_IF_IDS : constant := 0;
   RPC_C_MGMT_INQ_PRINC_NAME : constant := 1;
   RPC_C_MGMT_INQ_STATS : constant := 2;
   RPC_C_MGMT_IS_SERVER_LISTEN : constant := 3;
   RPC_C_MGMT_STOP_SERVER_LISTEN : constant := 4;
   RPC_C_PARM_MAX_PACKET_LENGTH : constant := 1;
   RPC_C_PARM_BUFFER_LENGTH : constant := 2;
   RPC_IF_AUTOLISTEN : constant := 16#0001#;
   RPC_IF_OLE : constant := 16#0002#;
   RPC_IF_ALLOW_UNKNOWN_AUTHORITY : constant := 16#0004#;
   RPC_IF_ALLOW_SECURE_ONLY : constant := 16#0008#;
   RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH : constant := 16#0010#;
   RPC_IF_ALLOW_LOCAL_ONLY : constant := 16#0020#;
   RPC_IF_SEC_NO_CACHE : constant := 16#0040#;
   RPC_IF_SEC_CACHE_PER_PROC : constant := 16#0080#;
   RPC_IF_ASYNC_CALLBACK : constant := 16#0100#;
   RPC_FW_IF_FLAG_DCOM : constant := 16#0001#;
   -- #include <rpcdcep.h>
   RPC_CONTEXT_HANDLE_DEFAULT_FLAGS : constant := 16#00000000#;
   RPC_CONTEXT_HANDLE_FLAGS : constant := 16#30000000#;
   RPC_CONTEXT_HANDLE_SERIALIZE : constant := 16#10000000#;
   RPC_CONTEXT_HANDLE_DONT_SERIALIZE : constant := 16#20000000#;
   RPC_TYPE_STRICT_CONTEXT_HANDLE : constant := 16#40000000#;
   RPC_TYPE_DISCONNECT_EVENT_CONTEXT_HANDLE : constant := 16#80000000#;
   RPC_NCA_FLAGS_DEFAULT : constant := 16#00000000#;
   RPC_NCA_FLAGS_IDEMPOTENT : constant := 16#00000001#;
   RPC_NCA_FLAGS_BROADCAST : constant := 16#00000002#;
   RPC_NCA_FLAGS_MAYBE : constant := 16#00000004#;
   RPCFLG_HAS_GUARANTEE : constant := 16#00000010#;
   RPCFLG_WINRT_REMOTE_ASYNC : constant := 16#00000020#;
   RPC_BUFFER_COMPLETE : constant := 16#00001000#;
   RPC_BUFFER_PARTIAL : constant := 16#00002000#;
   RPC_BUFFER_EXTRA : constant := 16#00004000#;
   RPC_BUFFER_ASYNC : constant := 16#00008000#;
   RPC_BUFFER_NONOTIFY : constant := 16#00010000#;
   RPCFLG_MESSAGE : constant := 16#01000000#;
   RPCFLG_AUTO_COMPLETE : constant := 16#08000000#;
   RPCFLG_LOCAL_CALL : constant := 16#10000000#;
   RPCFLG_INPUT_SYNCHRONOUS : constant := 16#20000000#;
   RPCFLG_ASYNCHRONOUS : constant := 16#40000000#;
   RPCFLG_NON_NDR : constant := 16#80000000#;
   RPCFLG_HAS_MULTI_SYNTAXES : constant := 16#02000000#;
   RPCFLG_HAS_CALLBACK : constant := 16#04000000#;
   RPCFLG_ACCESSIBILITY_BIT1 : constant := 16#00100000#;
   RPCFLG_ACCESSIBILITY_BIT2 : constant := 16#00200000#;
   RPCFLG_ACCESS_LOCAL : constant := 16#00400000#;
   NDR_CUSTOM_OR_DEFAULT_ALLOCATOR : constant := 16#10000000#;
   NDR_DEFAULT_ALLOCATOR : constant := 16#20000000#;
   RPCFLG_NDR64_CONTAINS_ARM_LAYOUT : constant := 16#04000000#;
   RPCFLG_SENDER_WAITING_FOR_REPLY : constant := 16#00800000#;
   RPC_FLAGS_VALID_BIT : constant := 16#00008000#;
   NT351_INTERFACE_SIZE : constant := 16#40#;
   RPC_INTERFACE_HAS_PIPES : constant := 16#0001#;
   RPC_SYSTEM_HANDLE_FREE_UNRETRIEVED : constant := 1;
   RPC_SYSTEM_HANDLE_FREE_RETRIEVED : constant := 2;
   RPC_SYSTEM_HANDLE_FREE_ALL : constant := 3;
   RPC_SYSTEM_HANDLE_FREE_ERROR_ON_CLOSE : constant := 4;
   TRANSPORT_TYPE_CN : constant := 16#01#;
   TRANSPORT_TYPE_DG : constant := 16#02#;
   TRANSPORT_TYPE_LPC : constant := 16#04#;
   TRANSPORT_TYPE_WMSG : constant := 16#08#;
   RPC_P_ADDR_FORMAT_TCP_IPV4 : constant := 1;
   RPC_P_ADDR_FORMAT_TCP_IPV6 : constant := 2;
   RPC_C_OPT_SESSION_ID : constant := 6;
   RPC_C_OPT_COOKIE_AUTH : constant := 7;
   RPC_C_OPT_RESOURCE_TYPE_UUID : constant := 8;
   RPC_PROXY_CONNECTION_TYPE_IN_PROXY : constant := 0;
   RPC_PROXY_CONNECTION_TYPE_OUT_PROXY : constant := 1;
   RPC_C_OPT_PRIVATE_SUPPRESS_WAKE : constant := 1;
   RPC_C_OPT_PRIVATE_DO_NOT_DISTURB : constant := 2;
   RPC_C_OPT_PRIVATE_BREAK_ON_SUSPEND : constant := 3;
   -- #include <rpcdce.h>
   -- #include <rpc.h>
   -- #include <rpcnsi.h>
   RPC_C_NS_SYNTAX_DEFAULT : constant := 0;
   RPC_C_NS_SYNTAX_DCE : constant := 3;
   RPC_C_PROFILE_DEFAULT_ELT : constant := 0;
   RPC_C_PROFILE_ALL_ELT : constant := 1;
   RPC_C_PROFILE_MATCH_BY_IF : constant := 2;
   RPC_C_PROFILE_MATCH_BY_MBR : constant := 3;
   RPC_C_PROFILE_MATCH_BY_BOTH : constant := 4;
   RPC_C_NS_DEFAULT_EXP_AGE : constant := -1;
   -- #include <rpc.h>
   -- #include <rpcnterr.h>
   -- #include <rpc.h>
   -- #include <rpcasync.h>
   -- #include <pshpack8.h>
   -- #include <rpcasync.h>
   RPC_C_NOTIFY_ON_SEND_COMPLETE : constant := 16#1#;
   MaxNumberOfEEInfoParams : constant := 4;
   RPC_EEINFO_VERSION : constant := 1;
   EEInfoPreviousRecordsMissing : constant := 1;
   EEInfoNextRecordsMissing : constant := 2;
   EEInfoUseFileTime : constant := 4;
   EEInfoGCCOM : constant := 11;
   EEInfoGCFRS : constant := 12;
   RPC_QUERY_SERVER_PRINCIPAL_NAME : constant := 16#02#;
   RPC_QUERY_CLIENT_PRINCIPAL_NAME : constant := 16#04#;
   RPC_QUERY_CALL_LOCAL_ADDRESS : constant := 16#08#;
   RPC_QUERY_CLIENT_PID : constant := 16#10#;
   RPC_QUERY_IS_CLIENT_LOCAL : constant := 16#20#;
   RPC_QUERY_NO_AUTH_REQUIRED : constant := 16#40#;
   RPC_CALL_ATTRIBUTES_VERSION : constant := 3;
   RPC_QUERY_CLIENT_ID : constant := 16#80#;
   RPC_CALL_STATUS_CANCELLED : constant := 16#01#;
   RPC_CALL_STATUS_DISCONNECTED : constant := 16#02#;
   -- #include <poppack.h>
   -- #include <rpc.h>
   -- #include <poppack.h>
   -- #include <rpc.h>
   -- #include <objbase.h>
   -- #include <rpcndr.h>
   -- #include <pshpack8.h>
   -- #include <rpcndr.h>
   -- #include <rpcnsip.h>
   -- #include <rpcndr.h>
   -- #include <rpcsal.h>
   -- #include <rpcndr.h>
   TARGET_IS_NT100_OR_LATER : constant := 1;
   TARGET_IS_NT63_OR_LATER : constant := 1;
   TARGET_IS_NT62_OR_LATER : constant := 1;
   TARGET_IS_NT61_OR_LATER : constant := 1;
   TARGET_IS_NT60_OR_LATER : constant := 1;
   TARGET_IS_NT51_OR_LATER : constant := 1;
   TARGET_IS_NT50_OR_LATER : constant := 1;
   TARGET_IS_NT40_OR_LATER : constant := 1;
   TARGET_IS_NT351_OR_WIN95_OR_LATER : constant := 1;
   cbNDRContext : constant := 20;
   USER_CALL_IS_ASYNC : constant := 16#0100#;
   USER_CALL_NEW_CORRELATION_DESC : constant := 16#0200#;
   USER_MARSHAL_FC_BYTE : constant := 1;
   USER_MARSHAL_FC_CHAR : constant := 2;
   USER_MARSHAL_FC_SMALL : constant := 3;
   USER_MARSHAL_FC_USMALL : constant := 4;
   USER_MARSHAL_FC_WCHAR : constant := 5;
   USER_MARSHAL_FC_SHORT : constant := 6;
   USER_MARSHAL_FC_USHORT : constant := 7;
   USER_MARSHAL_FC_LONG : constant := 8;
   USER_MARSHAL_FC_ULONG : constant := 9;
   USER_MARSHAL_FC_FLOAT : constant := 10;
   USER_MARSHAL_FC_HYPER : constant := 11;
   USER_MARSHAL_FC_DOUBLE : constant := 12;
   -- #include <poppack.h>
   -- #include <rpcndr.h>
   -- #include <objbase.h>
   -- #include <pshpack8.h>
   -- #include <objbase.h>
   -- #include <combaseapi.h>
   -- #include <pshpack8.h>
   -- #include <combaseapi.h>
   PURE : constant := 0;
   -- #include <stdlib.h>
   -- #include <corecrt_malloc.h>
   -- #include <stdlib.h>
   -- #include <corecrt_search.h>
   -- #include <stddef.h>
   -- #include <corecrt_search.h>
   -- #include <stdlib.h>
   -- #include <corecrt_wstdlib.h>
   -- #include <stdlib.h>
   -- #include <limits.h>
   CHAR_BIT : constant := 8;
   SCHAR_MIN : constant := -128;
   SCHAR_MAX : constant := 127;
   UCHAR_MAX : constant := 16#ff#;
   MB_LEN_MAX : constant := 5;
   SHRT_MIN : constant := -32768;
   SHRT_MAX : constant := 32767;
   USHRT_MAX : constant := 16#ffff#;
   INT_MAX : constant := 2147483647;
   UINT_MAX : constant := 16#ffffffff#;
   LONG_MAX : constant := 2147483647;
   ULONG_MAX : constant := 16#ffffffff#;
   ULLONG_MAX : constant := 16#ffffffffffffffff#;
   -- [Todo] RSIZE_MAX ( SIZE_MAX >> 1 );
   -- #include <stdlib.h>
   EXIT_SUCCESS : constant := 0;
   EXIT_FAILURE : constant := 1;
   RAND_MAX : constant := 16#7fff#;
   -- #include <combaseapi.h>
   -- [Todo] CLSCTX_INPROC ( CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER );
   -- [Todo] CLSCTX_ALL ( CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER );
   -- [Todo] CLSCTX_SERVER ( CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER );
   -- #include <wtypesbase.h>
   -- #include <guiddef.h>
   -- #include <wtypesbase.h>
   -- [Todo] OLESTR ( str ) L ## str;
   ROTREGFLAGS_ALLOWANYCLIENT : constant := 16#1#;
   APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP : constant := 16#1#;
   APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND : constant := 16#2#;
   APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY : constant := 16#4#;
   APPIDREGFLAGS_IUSERVER_UNMODIFIED_LOGON_TOKEN : constant := 16#8#;
   APPIDREGFLAGS_IUSERVER_SELF_SID_IN_LAUNCH_PERMISSION : constant := 16#10#;
   APPIDREGFLAGS_IUSERVER_ACTIVATE_IN_CLIENT_SESSION_ONLY : constant := 16#20#;
   APPIDREGFLAGS_RESERVED1 : constant := 16#40#;
   APPIDREGFLAGS_RESERVED2 : constant := 16#80#;
   APPIDREGFLAGS_RESERVED3 : constant := 16#100#;
   APPIDREGFLAGS_RESERVED4 : constant := 16#200#;
   APPIDREGFLAGS_RESERVED5 : constant := 16#400#;
   APPIDREGFLAGS_AAA_NO_IMPLICIT_ACTIVATE_AS_IU : constant := 16#800#;
   APPIDREGFLAGS_RESERVED7 : constant := 16#1000#;
   APPIDREGFLAGS_RESERVED8 : constant := 16#2000#;
   APPIDREGFLAGS_RESERVED9 : constant := 16#4000#;
   DCOMSCM_ACTIVATION_USE_ALL_AUTHNSERVICES : constant := 16#1#;
   DCOMSCM_ACTIVATION_DISALLOW_UNSECURE_CALL : constant := 16#2#;
   DCOMSCM_RESOLVE_USE_ALL_AUTHNSERVICES : constant := 16#4#;
   DCOMSCM_RESOLVE_DISALLOW_UNSECURE_CALL : constant := 16#8#;
   DCOMSCM_PING_USE_MID_AUTHNSERVICE : constant := 16#10#;
   DCOMSCM_PING_DISALLOW_UNSECURE_CALL : constant := 16#20#;
   -- [Todo] CLSCTX_VALID_MASK ( CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_SERVER16 | CLSCTX_REMOTE_SERVER | CLSCTX_NO_CODE_DOWNLOAD | CLSCTX_NO_CUSTOM_MARSHAL | CLSCTX_ENABLE_CODE_DOWNLOAD | CLSCTX_NO_FAILURE_LOG | CLSCTX_DISABLE_AAA | CLSCTX_ENABLE_AAA | CLSCTX_FROM_DEFAULT_CONTEXT | CLSCTX_ACTIVATE_X86_SERVER | CLSCTX_ACTIVATE_64_BIT_SERVER | CLSCTX_ENABLE_CLOAKING | CLSCTX_APPCONTAINER | CLSCTX_ACTIVATE_AAA_AS_IU | CLSCTX_RESERVED6 | CLSCTX_ACTIVATE_ARM32_SERVER | CLSCTX_PS_DLL );
   -- #include <combaseapi.h>
   -- #include <unknwnbase.h>
   -- #include <combaseapi.h>
   -- #include <objidlbase.h>
   -- #include <combaseapi.h>
   -- #include <guiddef.h>
   -- #include <combaseapi.h>
   -- #include <cguid.h>
   -- #include <combaseapi.h>
   COM_RIGHTS_EXECUTE : constant := 1;
   COM_RIGHTS_EXECUTE_LOCAL : constant := 2;
   COM_RIGHTS_EXECUTE_REMOTE : constant := 4;
   COM_RIGHTS_ACTIVATE_LOCAL : constant := 8;
   COM_RIGHTS_ACTIVATE_REMOTE : constant := 16;
   COM_RIGHTS_RESERVED1 : constant := 32;
   COM_RIGHTS_RESERVED2 : constant := 64;
   CWMO_MAX_HANDLES : constant := 56;
   -- #include <poppack.h>
   -- #include <objbase.h>
   -- #include <coml2api.h>
   -- #include <objidl.h>
   -- #include <unknwn.h>
   -- #include <wtypes.h>
   ROTFLAGS_REGISTRATIONKEEPSALIVE : constant := 16#1#;
   ROTFLAGS_ALLOWANYCLIENT : constant := 16#2#;
   ROT_COMPARE_MAX : constant := 2048;
   WDT_INPROC_CALL : constant := 16#48746457#;
   WDT_REMOTE_CALL : constant := 16#52746457#;
   WDT_INPROC64_CALL : constant := 16#50746457#;
   DECIMAL_NEG : constant := 16#80#;
   VARIANT_TRUE : constant := 1;
   VARIANT_FALSE : constant := 0;
   -- #include <unknwn.h>
   -- #include <objidl.h>
   -- #include <coml2api.h>
   -- #include <propidlbase.h>
   -- #include <oaidl.h>
   FADF_AUTO : constant := 16#1#;
   FADF_STATIC : constant := 16#2#;
   FADF_EMBEDDED : constant := 16#4#;
   FADF_FIXEDSIZE : constant := 16#10#;
   FADF_RECORD : constant := 16#20#;
   FADF_HAVEIID : constant := 16#40#;
   FADF_HAVEVARTYPE : constant := 16#80#;
   FADF_BSTR : constant := 16#100#;
   FADF_UNKNOWN : constant := 16#200#;
   FADF_DISPATCH : constant := 16#400#;
   FADF_VARIANT : constant := 16#800#;
   FADF_RESERVED : constant := 16#f008#;
   PARAMFLAG_NONE : constant := 0;
   PARAMFLAG_FIN : constant := 16#1#;
   PARAMFLAG_FOUT : constant := 16#2#;
   PARAMFLAG_FLCID : constant := 16#4#;
   PARAMFLAG_FRETVAL : constant := 16#8#;
   PARAMFLAG_FOPT : constant := 16#10#;
   PARAMFLAG_FHASDEFAULT : constant := 16#20#;
   PARAMFLAG_FHASCUSTDATA : constant := 16#40#;
   IDLFLAG_NONE : constant := PARAMFLAG_NONE;
   IDLFLAG_FIN : constant := PARAMFLAG_FIN;
   IDLFLAG_FOUT : constant := PARAMFLAG_FOUT;
   IDLFLAG_FLCID : constant := PARAMFLAG_FLCID;
   IDLFLAG_FRETVAL : constant := PARAMFLAG_FRETVAL;
   IMPLTYPEFLAG_FDEFAULT : constant := 16#1#;
   IMPLTYPEFLAG_FSOURCE : constant := 16#2#;
   IMPLTYPEFLAG_FRESTRICTED : constant := 16#4#;
   IMPLTYPEFLAG_FDEFAULTVTABLE : constant := 16#8#;
   DISPID_UNKNOWN : constant := -1;
   DISPID_VALUE : constant := 0;
   DISPID_PROPERTYPUT : constant := -3;
   DISPID_NEWENUM : constant := -4;
   DISPID_EVALUATE : constant := -5;
   DISPID_CONSTRUCTOR : constant := -6;
   DISPID_DESTRUCTOR : constant := -7;
   DISPID_COLLECT : constant := -8;
   -- #include <propidlbase.h>
   PROPSETFLAG_DEFAULT : constant := 0;
   PROPSETFLAG_NONSIMPLE : constant := 1;
   PROPSETFLAG_ANSI : constant := 2;
   PROPSETFLAG_UNBUFFERED : constant := 4;
   PROPSETFLAG_CASE_SENSITIVE : constant := 8;
   PROPSET_BEHAVIOR_CASE_SENSITIVE : constant := 1;
   PID_DICTIONARY : constant := 0;
   PID_CODEPAGE : constant := 16#1#;
   PID_FIRST_USABLE : constant := 16#2#;
   PID_FIRST_NAME_DEFAULT : constant := 16#fff#;
   PID_LOCALE : constant := 16#80000000#;
   PID_MODIFY_TIME : constant := 16#80000001#;
   PID_SECURITY : constant := 16#80000002#;
   PID_BEHAVIOR : constant := 16#80000003#;
   PID_ILLEGAL : constant := 16#ffffffff#;
   PID_MIN_READONLY : constant := 16#80000000#;
   PID_MAX_READONLY : constant := 16#bfffffff#;
   PRSPEC_INVALID : constant := 16#ffffffff#;
   PRSPEC_LPWSTR : constant := 0;
   PRSPEC_PROPID : constant := 1;
   PROPSETHDR_OSVERSION_UNKNOWN : constant := 16#FFFFFFFF#;
   -- #include <coml2api.h>
   CWCSTORAGENAME : constant := 32;
   STGM_DIRECT : constant := 16#00000000#;
   STGM_TRANSACTED : constant := 16#00010000#;
   STGM_SIMPLE : constant := 16#08000000#;
   STGM_READ : constant := 16#00000000#;
   STGM_WRITE : constant := 16#00000001#;
   STGM_READWRITE : constant := 16#00000002#;
   STGM_SHARE_DENY_NONE : constant := 16#00000040#;
   STGM_SHARE_DENY_READ : constant := 16#00000030#;
   STGM_SHARE_DENY_WRITE : constant := 16#00000020#;
   STGM_SHARE_EXCLUSIVE : constant := 16#00000010#;
   STGM_PRIORITY : constant := 16#00040000#;
   STGM_DELETEONRELEASE : constant := 16#04000000#;
   STGM_NOSCRATCH : constant := 16#00100000#;
   STGM_CREATE : constant := 16#00001000#;
   STGM_CONVERT : constant := 16#00020000#;
   STGM_FAILIFTHERE : constant := 16#00000000#;
   STGM_NOSNAPSHOT : constant := 16#00200000#;
   STGM_DIRECT_SWMR : constant := 16#00400000#;
   STGFMT_STORAGE : constant := 0;
   STGFMT_NATIVE : constant := 1;
   STGFMT_FILE : constant := 3;
   STGFMT_ANY : constant := 4;
   STGFMT_DOCFILE : constant := 5;
   STGFMT_DOCUMENT : constant := 0;
   STGOPTIONS_VERSION : constant := 2;
   CCH_MAX_PROPSTG_NAME : constant := 31;
   -- #include <objbase.h>
   MARSHALINTERFACE_MIN : constant := 500;
   ASYNC_MODE_COMPATIBILITY : constant := 16#00000001#;
   ASYNC_MODE_DEFAULT : constant := 16#00000000#;
   STGTY_REPEAT : constant := 16#00000100#;
   STG_TOEND : constant := 16#FFFFFFFF#;
   STG_LAYOUT_SEQUENTIAL : constant := 16#00000000#;
   STG_LAYOUT_INTERLEAVED : constant := 16#00000001#;
   -- #include <urlmon.h>
   -- #include <oleidl.h>
   UPDFCACHE_NODATACACHE : constant := 16#1#;
   UPDFCACHE_ONSAVECACHE : constant := 16#2#;
   UPDFCACHE_ONSTOPCACHE : constant := 16#4#;
   UPDFCACHE_NORMALCACHE : constant := 16#8#;
   UPDFCACHE_IFBLANK : constant := 16#10#;
   UPDFCACHE_ONLYIFBLANK : constant := 16#80000000#;
   MK_ALT : constant := 16#20#;
   DROPEFFECT_NONE : constant := 0;
   DROPEFFECT_COPY : constant := 1;
   DROPEFFECT_MOVE : constant := 2;
   DROPEFFECT_LINK : constant := 4;
   DROPEFFECT_SCROLL : constant := 16#80000000#;
   DD_DEFSCROLLINSET : constant := 11;
   DD_DEFSCROLLDELAY : constant := 50;
   DD_DEFSCROLLINTERVAL : constant := 50;
   DD_DEFDRAGDELAY : constant := 200;
   DD_DEFDRAGMINDIST : constant := 2;
   -- #include <urlmon.h>
   -- #include <servprov.h>
   -- #include <urlmon.h>
   -- #include <msxml.h>
   -- #include <urlmon.h>
   INVALID_P_ROOT_SECURITY_ID : constant := 1;
   MKSYS_URLMONIKER : constant := 6;
   URL_MK_LEGACY : constant := 0;
   URL_MK_UNIFORM : constant := 1;
   URL_MK_NO_CANONICALIZE : constant := 2;
   FIEF_FLAG_FORCE_JITUI : constant := 16#1#;
   FIEF_FLAG_PEEK : constant := 16#2#;
   FIEF_FLAG_SKIP_INSTALLED_VERSION_CHECK : constant := 16#4#;
   FIEF_FLAG_RESERVED_0 : constant := 16#8#;
   FMFD_DEFAULT : constant := 16#00000000#;
   FMFD_URLASFILENAME : constant := 16#00000001#;
   FMFD_ENABLEMIMESNIFFING : constant := 16#00000002#;
   FMFD_IGNOREMIMETEXTPLAIN : constant := 16#00000004#;
   FMFD_SERVERMIME : constant := 16#00000008#;
   FMFD_RESPECTTEXTPLAIN : constant := 16#00000010#;
   FMFD_RETURNUPDATEDIMGMIMES : constant := 16#00000020#;
   FMFD_RESERVED_1 : constant := 16#00000040#;
   UAS_EXACTLEGACY : constant := 16#00001000#;
   URLMON_OPTION_USERAGENT : constant := 16#10000001#;
   URLMON_OPTION_USERAGENT_REFRESH : constant := 16#10000002#;
   URLMON_OPTION_URL_ENCODING : constant := 16#10000004#;
   URLMON_OPTION_USE_BINDSTRINGCREDS : constant := 16#10000008#;
   URLMON_OPTION_USE_BROWSERAPPSDOCUMENTS : constant := 16#10000010#;
   CF_NULL : constant := 0;
   MK_S_ASYNCHRONOUS : constant := 16#000401E8#;
   INET_E_CANNOT_LOCK_REQUEST : constant := 16#800C0016#;
   INET_E_USE_EXTEND_BINDING : constant := 16#800C0017#;
   INET_E_TERMINATED_BIND : constant := 16#800C0018#;
   INET_E_RESERVED_1 : constant := 16#800C001A#;
   INET_E_BLOCKED_REDIRECT_XSECURITYID : constant := 16#800C001B#;
   INET_E_DOMINJECTIONVALIDATION : constant := 16#800C001C#;
   INET_E_VTAB_SWITCH_FORCE_ENGINE : constant := 16#800C001D#;
   INET_E_HSTS_CERTIFICATE_ERROR : constant := 16#800C001E#;
   INET_E_RESERVED_2 : constant := 16#800C001F#;
   INET_E_RESERVED_3 : constant := 16#800C0020#;
   INET_E_RESERVED_4 : constant := 16#800C0021#;
   INET_E_RESERVED_5 : constant := 16#800C0022#;
   INET_E_ERROR_FIRST : constant := 16#800C0002#;
   INET_E_CODE_DOWNLOAD_DECLINED : constant := 16#800C0100#;
   INET_E_RESULT_DISPATCHED : constant := 16#800C0200#;
   INET_E_CANNOT_REPLACE_SFP_FILE : constant := 16#800C0300#;
   INET_E_CODE_INSTALL_SUPPRESSED : constant := 16#800C0400#;
   INET_E_CODE_INSTALL_BLOCKED_BY_HASH_POLICY : constant := 16#800C0500#;
   INET_E_DOWNLOAD_BLOCKED_BY_INPRIVATE : constant := 16#800C0501#;
   INET_E_CODE_INSTALL_BLOCKED_IMMERSIVE : constant := 16#800C0502#;
   INET_E_FORBIDFRAMING : constant := 16#800C0503#;
   INET_E_CODE_INSTALL_BLOCKED_ARM : constant := 16#800C0504#;
   INET_E_BLOCKED_PLUGGABLE_PROTOCOL : constant := 16#800C0505#;
   INET_E_BLOCKED_ENHANCEDPROTECTEDMODE : constant := 16#800C0506#;
   INET_E_CODE_INSTALL_BLOCKED_BITNESS : constant := 16#800C0507#;
   INET_E_DOWNLOAD_BLOCKED_BY_CSP : constant := 16#800C0508#;
   Uri_CREATE_ALLOW_RELATIVE : constant := 16#00000001#;
   Uri_CREATE_ALLOW_IMPLICIT_WILDCARD_SCHEME : constant := 16#00000002#;
   Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME : constant := 16#00000004#;
   Uri_CREATE_NOFRAG : constant := 16#00000008#;
   Uri_CREATE_NO_CANONICALIZE : constant := 16#00000010#;
   Uri_CREATE_CANONICALIZE : constant := 16#00000100#;
   Uri_CREATE_FILE_USE_DOS_PATH : constant := 16#00000020#;
   Uri_CREATE_DECODE_EXTRA_INFO : constant := 16#00000040#;
   Uri_CREATE_NO_DECODE_EXTRA_INFO : constant := 16#00000080#;
   Uri_CREATE_CRACK_UNKNOWN_SCHEMES : constant := 16#00000200#;
   Uri_CREATE_NO_CRACK_UNKNOWN_SCHEMES : constant := 16#00000400#;
   Uri_CREATE_PRE_PROCESS_HTML_URI : constant := 16#00000800#;
   Uri_CREATE_NO_PRE_PROCESS_HTML_URI : constant := 16#00001000#;
   Uri_CREATE_IE_SETTINGS : constant := 16#00002000#;
   Uri_CREATE_NO_IE_SETTINGS : constant := 16#00004000#;
   Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS : constant := 16#00008000#;
   Uri_CREATE_NORMALIZE_INTL_CHARACTERS : constant := 16#00010000#;
   Uri_CREATE_CANONICALIZE_ABSOLUTE : constant := 16#00020000#;
   Uri_DISPLAY_NO_FRAGMENT : constant := 16#00000001#;
   Uri_PUNYCODE_IDN_HOST : constant := 16#00000002#;
   Uri_DISPLAY_IDN_HOST : constant := 16#00000004#;
   Uri_DISPLAY_NO_PUNYCODE : constant := 16#00000008#;
   Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 : constant := 16#00000001#;
   Uri_ENCODING_USER_INFO_AND_PATH_IS_CP : constant := 16#00000002#;
   Uri_ENCODING_HOST_IS_IDN : constant := 16#00000004#;
   Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 : constant := 16#00000008#;
   Uri_ENCODING_HOST_IS_PERCENT_ENCODED_CP : constant := 16#00000010#;
   Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8 : constant := 16#00000020#;
   Uri_ENCODING_QUERY_AND_FRAGMENT_IS_CP : constant := 16#00000040#;
   Uri_ENCODING_RFC : constant := ( Interfaces.C.Unsigned( Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 )
       or Interfaces.C.Unsigned( Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 )
       or Interfaces.C.Unsigned( Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8 ) );
   UriBuilder_USE_ORIGINAL_FLAGS : constant := 16#00000001#;
   WININETINFO_OPTION_LOCK_HANDLE : constant := 65534;
   URLOSTRM_USECACHEDCOPY_ONLY : constant := 16#1#;
   URLOSTRM_USECACHEDCOPY : constant := 16#2#;
   URLOSTRM_GETNEWESTVERSION : constant := 16#3#;
   SET_FEATURE_ON_THREAD : constant := 16#00000001#;
   SET_FEATURE_ON_PROCESS : constant := 16#00000002#;
   SET_FEATURE_IN_REGISTRY : constant := 16#00000004#;
   SET_FEATURE_ON_THREAD_LOCALMACHINE : constant := 16#00000008#;
   SET_FEATURE_ON_THREAD_INTRANET : constant := 16#00000010#;
   SET_FEATURE_ON_THREAD_TRUSTED : constant := 16#00000020#;
   SET_FEATURE_ON_THREAD_INTERNET : constant := 16#00000040#;
   SET_FEATURE_ON_THREAD_RESTRICTED : constant := 16#00000080#;
   GET_FEATURE_FROM_THREAD : constant := 16#00000001#;
   GET_FEATURE_FROM_PROCESS : constant := 16#00000002#;
   GET_FEATURE_FROM_REGISTRY : constant := 16#00000004#;
   GET_FEATURE_FROM_THREAD_LOCALMACHINE : constant := 16#00000008#;
   GET_FEATURE_FROM_THREAD_INTRANET : constant := 16#00000010#;
   GET_FEATURE_FROM_THREAD_TRUSTED : constant := 16#00000020#;
   GET_FEATURE_FROM_THREAD_INTERNET : constant := 16#00000040#;
   GET_FEATURE_FROM_THREAD_RESTRICTED : constant := 16#00000080#;
   INET_E_USE_DEFAULT_PROTOCOLHANDLER : constant := 16#800C0011#;
   INET_E_USE_DEFAULT_SETTING : constant := 16#800C0012#;
   INET_E_QUERYOPTION_UNKNOWN : constant := 16#800C0013#;
   INET_E_REDIRECTING : constant := 16#800C0014#;
   PROTOCOLFLAG_NO_PICS_CHECK : constant := 16#00000001#;
   MUTZ_NOSAVEDFILECHECK : constant := 16#00000001#;
   MUTZ_ISFILE : constant := 16#00000002#;
   MUTZ_ACCEPT_WILDCARD_SCHEME : constant := 16#00000080#;
   MUTZ_ENFORCERESTRICTED : constant := 16#00000100#;
   MUTZ_RESERVED : constant := 16#00000200#;
   MUTZ_REQUIRESAVEDFILECHECK : constant := 16#00000400#;
   MUTZ_DONT_UNESCAPE : constant := 16#00000800#;
   MUTZ_DONT_USE_CACHE : constant := 16#00001000#;
   MUTZ_FORCE_INTRANET_FLAGS : constant := 16#00002000#;
   MUTZ_IGNORE_ZONE_MAPPINGS : constant := 16#00004000#;
   MAX_SIZE_SECURITY_ID : constant := 512;
   URLACTION_MIN : constant := 16#00001000#;
   URLACTION_DOWNLOAD_MIN : constant := 16#00001000#;
   URLACTION_DOWNLOAD_SIGNED_ACTIVEX : constant := 16#00001001#;
   URLACTION_DOWNLOAD_UNSIGNED_ACTIVEX : constant := 16#00001004#;
   URLACTION_DOWNLOAD_CURR_MAX : constant := 16#00001004#;
   URLACTION_DOWNLOAD_MAX : constant := 16#000011FF#;
   URLACTION_ACTIVEX_MIN : constant := 16#00001200#;
   URLACTION_ACTIVEX_RUN : constant := 16#00001200#;
   URLPOLICY_ACTIVEX_CHECK_LIST : constant := 16#00010000#;
   URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY : constant := 16#00001201#;
   URLACTION_ACTIVEX_OVERRIDE_DATA_SAFETY : constant := 16#00001202#;
   URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY : constant := 16#00001203#;
   URLACTION_SCRIPT_OVERRIDE_SAFETY : constant := 16#00001401#;
   URLACTION_ACTIVEX_CONFIRM_NOOBJECTSAFETY : constant := 16#00001204#;
   URLACTION_ACTIVEX_TREATASUNTRUSTED : constant := 16#00001205#;
   URLACTION_ACTIVEX_NO_WEBOC_SCRIPT : constant := 16#00001206#;
   URLACTION_ACTIVEX_OVERRIDE_REPURPOSEDETECTION : constant := 16#00001207#;
   URLACTION_ACTIVEX_OVERRIDE_OPTIN : constant := 16#00001208#;
   URLACTION_ACTIVEX_SCRIPTLET_RUN : constant := 16#00001209#;
   URLACTION_ACTIVEX_DYNSRC_VIDEO_AND_ANIMATION : constant := 16#0000120A#;
   URLACTION_ACTIVEX_OVERRIDE_DOMAINLIST : constant := 16#0000120B#;
   URLACTION_ACTIVEX_ALLOW_TDC : constant := 16#0000120C#;
   URLACTION_ACTIVEX_CURR_MAX : constant := 16#0000120C#;
   URLACTION_ACTIVEX_MAX : constant := 16#000013ff#;
   URLACTION_SCRIPT_MIN : constant := 16#00001400#;
   URLACTION_SCRIPT_RUN : constant := 16#00001400#;
   URLACTION_SCRIPT_JAVA_USE : constant := 16#00001402#;
   URLACTION_SCRIPT_SAFE_ACTIVEX : constant := 16#00001405#;
   URLACTION_CROSS_DOMAIN_DATA : constant := 16#00001406#;
   URLACTION_SCRIPT_PASTE : constant := 16#00001407#;
   URLACTION_ALLOW_XDOMAIN_SUBFRAME_RESIZE : constant := 16#00001408#;
   URLACTION_SCRIPT_XSSFILTER : constant := 16#00001409#;
   URLACTION_SCRIPT_NAVIGATE : constant := 16#0000140A#;
   URLACTION_PLUGGABLE_PROTOCOL_XHR : constant := 16#0000140B#;
   URLACTION_ALLOW_VBSCRIPT_IE : constant := 16#0000140C#;
   URLACTION_SCRIPT_CURR_MAX : constant := 16#0000140C#;
   URLACTION_SCRIPT_MAX : constant := 16#000015ff#;
   URLACTION_HTML_MIN : constant := 16#00001600#;
   URLACTION_HTML_SUBMIT_FORMS : constant := 16#00001601#;
   URLACTION_HTML_SUBMIT_FORMS_FROM : constant := 16#00001602#;
   URLACTION_HTML_SUBMIT_FORMS_TO : constant := 16#00001603#;
   URLACTION_HTML_FONT_DOWNLOAD : constant := 16#00001604#;
   URLACTION_HTML_JAVA_RUN : constant := 16#00001605#;
   URLACTION_HTML_USERDATA_SAVE : constant := 16#00001606#;
   URLACTION_HTML_SUBFRAME_NAVIGATE : constant := 16#00001607#;
   URLACTION_HTML_META_REFRESH : constant := 16#00001608#;
   URLACTION_HTML_MIXED_CONTENT : constant := 16#00001609#;
   URLACTION_HTML_INCLUDE_FILE_PATH : constant := 16#0000160A#;
   URLACTION_HTML_ALLOW_INJECTED_DYNAMIC_HTML : constant := 16#0000160B#;
   URLACTION_HTML_REQUIRE_UTF8_DOCUMENT_CODEPAGE : constant := 16#0000160C#;
   URLACTION_HTML_ALLOW_CROSS_DOMAIN_CANVAS : constant := 16#0000160D#;
   URLACTION_HTML_ALLOW_WINDOW_CLOSE : constant := 16#0000160E#;
   URLACTION_HTML_ALLOW_CROSS_DOMAIN_WEBWORKER : constant := 16#0000160F#;
   URLACTION_HTML_ALLOW_CROSS_DOMAIN_TEXTTRACK : constant := 16#00001610#;
   URLACTION_HTML_ALLOW_INDEXEDDB : constant := 16#00001611#;
   URLACTION_HTML_MAX : constant := 16#000017ff#;
   URLACTION_SHELL_MIN : constant := 16#00001800#;
   URLACTION_SHELL_INSTALL_DTITEMS : constant := 16#00001800#;
   URLACTION_SHELL_MOVE_OR_COPY : constant := 16#00001802#;
   URLACTION_SHELL_FILE_DOWNLOAD : constant := 16#00001803#;
   URLACTION_SHELL_VERB : constant := 16#00001804#;
   URLACTION_SHELL_WEBVIEW_VERB : constant := 16#00001805#;
   URLACTION_SHELL_SHELLEXECUTE : constant := 16#00001806#;
   URLACTION_SHELL_EXECUTE_HIGHRISK : constant := 16#00001806#;
   URLACTION_SHELL_EXECUTE_MODRISK : constant := 16#00001807#;
   URLACTION_SHELL_EXECUTE_LOWRISK : constant := 16#00001808#;
   URLACTION_SHELL_POPUPMGR : constant := 16#00001809#;
   URLACTION_SHELL_RTF_OBJECTS_LOAD : constant := 16#0000180A#;
   URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY : constant := 16#0000180B#;
   URLACTION_SHELL_EXTENSIONSECURITY : constant := 16#0000180C#;
   URLACTION_SHELL_SECURE_DRAGSOURCE : constant := 16#0000180D#;
   URLACTION_SHELL_REMOTEQUERY : constant := 16#0000180E#;
   URLACTION_SHELL_PREVIEW : constant := 16#0000180F#;
   URLACTION_SHELL_SHARE : constant := 16#00001810#;
   URLACTION_SHELL_ALLOW_CROSS_SITE_SHARE : constant := 16#00001811#;
   URLACTION_SHELL_TOCTOU_RISK : constant := 16#00001812#;
   URLACTION_SHELL_CURR_MAX : constant := 16#00001812#;
   URLACTION_SHELL_MAX : constant := 16#000019ff#;
   URLACTION_NETWORK_MIN : constant := 16#00001A00#;
   URLACTION_CREDENTIALS_USE : constant := 16#00001A00#;
   URLPOLICY_CREDENTIALS_SILENT_LOGON_OK : constant := 16#00000000#;
   URLPOLICY_CREDENTIALS_MUST_PROMPT_USER : constant := 16#00010000#;
   URLPOLICY_CREDENTIALS_CONDITIONAL_PROMPT : constant := 16#00020000#;
   URLPOLICY_CREDENTIALS_ANONYMOUS_ONLY : constant := 16#00030000#;
   URLACTION_AUTHENTICATE_CLIENT : constant := 16#00001A01#;
   URLPOLICY_AUTHENTICATE_CLEARTEXT_OK : constant := 16#00000000#;
   URLPOLICY_AUTHENTICATE_CHALLENGE_RESPONSE : constant := 16#00010000#;
   URLPOLICY_AUTHENTICATE_MUTUAL_ONLY : constant := 16#00030000#;
   URLACTION_COOKIES : constant := 16#00001A02#;
   URLACTION_COOKIES_SESSION : constant := 16#00001A03#;
   URLACTION_CLIENT_CERT_PROMPT : constant := 16#00001A04#;
   URLACTION_COOKIES_THIRD_PARTY : constant := 16#00001A05#;
   URLACTION_COOKIES_SESSION_THIRD_PARTY : constant := 16#00001A06#;
   URLACTION_COOKIES_ENABLED : constant := 16#00001A10#;
   URLACTION_NETWORK_CURR_MAX : constant := 16#00001A10#;
   URLACTION_NETWORK_MAX : constant := 16#00001Bff#;
   URLACTION_JAVA_MIN : constant := 16#00001C00#;
   URLACTION_JAVA_PERMISSIONS : constant := 16#00001C00#;
   URLPOLICY_JAVA_PROHIBIT : constant := 16#00000000#;
   URLPOLICY_JAVA_HIGH : constant := 16#00010000#;
   URLPOLICY_JAVA_MEDIUM : constant := 16#00020000#;
   URLPOLICY_JAVA_LOW : constant := 16#00030000#;
   URLPOLICY_JAVA_CUSTOM : constant := 16#00800000#;
   URLACTION_JAVA_CURR_MAX : constant := 16#00001C00#;
   URLACTION_JAVA_MAX : constant := 16#00001Cff#;
   URLACTION_INFODELIVERY_MIN : constant := 16#00001D00#;
   URLACTION_INFODELIVERY_NO_ADDING_CHANNELS : constant := 16#00001D00#;
   URLACTION_INFODELIVERY_NO_EDITING_CHANNELS : constant := 16#00001D01#;
   URLACTION_INFODELIVERY_NO_REMOVING_CHANNELS : constant := 16#00001D02#;
   URLACTION_INFODELIVERY_NO_ADDING_SUBSCRIPTIONS : constant := 16#00001D03#;
   URLACTION_INFODELIVERY_NO_EDITING_SUBSCRIPTIONS : constant := 16#00001D04#;
   URLACTION_INFODELIVERY_NO_REMOVING_SUBSCRIPTIONS : constant := 16#00001D05#;
   URLACTION_INFODELIVERY_NO_CHANNEL_LOGGING : constant := 16#00001D06#;
   URLACTION_INFODELIVERY_CURR_MAX : constant := 16#00001D06#;
   URLACTION_INFODELIVERY_MAX : constant := 16#00001Dff#;
   URLACTION_CHANNEL_SOFTDIST_MIN : constant := 16#00001E00#;
   URLACTION_CHANNEL_SOFTDIST_PERMISSIONS : constant := 16#00001E05#;
   URLPOLICY_CHANNEL_SOFTDIST_PROHIBIT : constant := 16#00010000#;
   URLPOLICY_CHANNEL_SOFTDIST_PRECACHE : constant := 16#00020000#;
   URLPOLICY_CHANNEL_SOFTDIST_AUTOINSTALL : constant := 16#00030000#;
   URLACTION_CHANNEL_SOFTDIST_MAX : constant := 16#00001Eff#;
   URLACTION_DOTNET_USERCONTROLS : constant := 16#00002005#;
   URLACTION_BEHAVIOR_MIN : constant := 16#00002000#;
   URLACTION_BEHAVIOR_RUN : constant := 16#00002000#;
   URLPOLICY_BEHAVIOR_CHECK_LIST : constant := 16#00010000#;
   URLACTION_FEATURE_MIN : constant := 16#00002100#;
   URLACTION_FEATURE_MIME_SNIFFING : constant := 16#00002100#;
   URLACTION_FEATURE_ZONE_ELEVATION : constant := 16#00002101#;
   URLACTION_FEATURE_WINDOW_RESTRICTIONS : constant := 16#00002102#;
   URLACTION_FEATURE_SCRIPT_STATUS_BAR : constant := 16#00002103#;
   URLACTION_FEATURE_FORCE_ADDR_AND_STATUS : constant := 16#00002104#;
   URLACTION_FEATURE_BLOCK_INPUT_PROMPTS : constant := 16#00002105#;
   URLACTION_FEATURE_DATA_BINDING : constant := 16#00002106#;
   URLACTION_FEATURE_CROSSDOMAIN_FOCUS_CHANGE : constant := 16#00002107#;
   URLACTION_AUTOMATIC_DOWNLOAD_UI_MIN : constant := 16#00002200#;
   URLACTION_AUTOMATIC_DOWNLOAD_UI : constant := 16#00002200#;
   URLACTION_AUTOMATIC_ACTIVEX_UI : constant := 16#00002201#;
   URLACTION_ALLOW_RESTRICTEDPROTOCOLS : constant := 16#00002300#;
   URLACTION_ALLOW_APEVALUATION : constant := 16#00002301#;
   URLACTION_ALLOW_XHR_EVALUATION : constant := 16#00002302#;
   URLACTION_WINDOWS_BROWSER_APPLICATIONS : constant := 16#00002400#;
   URLACTION_XPS_DOCUMENTS : constant := 16#00002401#;
   URLACTION_LOOSE_XAML : constant := 16#00002402#;
   URLACTION_LOWRIGHTS : constant := 16#00002500#;
   URLACTION_WINFX_SETUP : constant := 16#00002600#;
   URLACTION_INPRIVATE_BLOCKING : constant := 16#00002700#;
   URLACTION_ALLOW_AUDIO_VIDEO : constant := 16#00002701#;
   URLACTION_ALLOW_ACTIVEX_FILTERING : constant := 16#00002702#;
   URLACTION_ALLOW_STRUCTURED_STORAGE_SNIFFING : constant := 16#00002703#;
   URLACTION_ALLOW_AUDIO_VIDEO_PLUGINS : constant := 16#00002704#;
   URLACTION_ALLOW_ZONE_ELEVATION_VIA_OPT_OUT : constant := 16#00002705#;
   URLACTION_ALLOW_ZONE_ELEVATION_OPT_OUT_ADDITION : constant := 16#00002706#;
   URLACTION_ALLOW_CROSSDOMAIN_DROP_WITHIN_WINDOW : constant := 16#00002708#;
   URLACTION_ALLOW_CROSSDOMAIN_DROP_ACROSS_WINDOWS : constant := 16#00002709#;
   URLACTION_ALLOW_CROSSDOMAIN_APPCACHE_MANIFEST : constant := 16#0000270A#;
   URLACTION_ALLOW_RENDER_LEGACY_DXTFILTERS : constant := 16#0000270B#;
   URLACTION_ALLOW_ANTIMALWARE_SCANNING_OF_ACTIVEX : constant := 16#0000270C#;
   URLACTION_ALLOW_CSS_EXPRESSIONS : constant := 16#0000270D#;
   URLPOLICY_ALLOW : constant := 16#00#;
   URLPOLICY_QUERY : constant := 16#01#;
   URLPOLICY_DISALLOW : constant := 16#03#;
   URLPOLICY_NOTIFY_ON_ALLOW : constant := 16#10#;
   URLPOLICY_NOTIFY_ON_DISALLOW : constant := 16#20#;
   URLPOLICY_LOG_ON_ALLOW : constant := 16#40#;
   URLPOLICY_LOG_ON_DISALLOW : constant := 16#80#;
   URLPOLICY_MASK_PERMISSIONS : constant := 16#0f#;
   URLPOLICY_DONTCHECKDLGBOX : constant := 16#100#;
   URLZONE_ESC_FLAG : constant := 16#100#;
   SECURITY_IE_STATE_GREEN : constant := 16#00000000#;
   SECURITY_IE_STATE_RED : constant := 16#00000001#;
   SOFTDIST_FLAG_USAGE_EMAIL : constant := 16#00000001#;
   SOFTDIST_FLAG_USAGE_PRECACHE : constant := 16#00000002#;
   SOFTDIST_FLAG_USAGE_AUTOINSTALL : constant := 16#00000004#;
   SOFTDIST_FLAG_DELETE_SUBSCRIPTION : constant := 16#00000008#;
   SOFTDIST_ADSTATE_NONE : constant := 16#00000000#;
   SOFTDIST_ADSTATE_AVAILABLE : constant := 16#00000001#;
   SOFTDIST_ADSTATE_DOWNLOADED : constant := 16#00000002#;
   SOFTDIST_ADSTATE_INSTALLED : constant := 16#00000003#;
   CONFIRMSAFETYACTION_LOADOBJECT : constant := 16#00000001#;
   -- #include <objbase.h>
   -- #include <propidl.h>
   PIDDI_THUMBNAIL : constant := 16#00000002#;
   PIDSI_TITLE : constant := 16#00000002#;
   PIDSI_SUBJECT : constant := 16#00000003#;
   PIDSI_AUTHOR : constant := 16#00000004#;
   PIDSI_KEYWORDS : constant := 16#00000005#;
   PIDSI_COMMENTS : constant := 16#00000006#;
   PIDSI_TEMPLATE : constant := 16#00000007#;
   PIDSI_LASTAUTHOR : constant := 16#00000008#;
   PIDSI_REVNUMBER : constant := 16#00000009#;
   PIDSI_EDITTIME : constant := 16#0000000a#;
   PIDSI_LASTPRINTED : constant := 16#0000000b#;
   PIDSI_CREATE_DTM : constant := 16#0000000c#;
   PIDSI_LASTSAVE_DTM : constant := 16#0000000d#;
   PIDSI_PAGECOUNT : constant := 16#0000000e#;
   PIDSI_WORDCOUNT : constant := 16#0000000f#;
   PIDSI_CHARCOUNT : constant := 16#00000010#;
   PIDSI_THUMBNAIL : constant := 16#00000011#;
   PIDSI_APPNAME : constant := 16#00000012#;
   PIDSI_DOC_SECURITY : constant := 16#00000013#;
   PIDDSI_CATEGORY : constant := 16#00000002#;
   PIDDSI_PRESFORMAT : constant := 16#00000003#;
   PIDDSI_BYTECOUNT : constant := 16#00000004#;
   PIDDSI_LINECOUNT : constant := 16#00000005#;
   PIDDSI_PARCOUNT : constant := 16#00000006#;
   PIDDSI_SLIDECOUNT : constant := 16#00000007#;
   PIDDSI_NOTECOUNT : constant := 16#00000008#;
   PIDDSI_HIDDENCOUNT : constant := 16#00000009#;
   PIDDSI_MMCLIPCOUNT : constant := 16#0000000A#;
   PIDDSI_SCALE : constant := 16#0000000B#;
   PIDDSI_HEADINGPAIR : constant := 16#0000000C#;
   PIDDSI_DOCPARTS : constant := 16#0000000D#;
   PIDDSI_MANAGER : constant := 16#0000000E#;
   PIDDSI_COMPANY : constant := 16#0000000F#;
   PIDDSI_LINKSDIRTY : constant := 16#00000010#;
   PIDMSI_EDITOR : constant := 16#00000002#;
   PIDMSI_SUPPLIER : constant := 16#00000003#;
   PIDMSI_SOURCE : constant := 16#00000004#;
   PIDMSI_SEQUENCE_NO : constant := 16#00000005#;
   PIDMSI_PROJECT : constant := 16#00000006#;
   PIDMSI_STATUS : constant := 16#00000007#;
   PIDMSI_OWNER : constant := 16#00000008#;
   PIDMSI_RATING : constant := 16#00000009#;
   PIDMSI_PRODUCTION : constant := 16#0000000A#;
   PIDMSI_COPYRIGHT : constant := 16#0000000B#;
   -- #include <objbase.h>
   -- #include <poppack.h>
   -- #include <ole2.h>
   -- #include <oleauto.h>
   -- #include <pshpack8.h>
   -- #include <oleauto.h>
   STDOLE_MAJORVERNUM : constant := 16#1#;
   STDOLE_MINORVERNUM : constant := 16#0#;
   STDOLE_LCID : constant := 16#0000#;
   STDOLE2_MAJORVERNUM : constant := 16#2#;
   STDOLE2_MINORVERNUM : constant := 16#0#;
   STDOLE2_LCID : constant := 16#0000#;
   VARIANT_NOVALUEPROP : constant := 16#01#;
   VARIANT_ALPHABOOL : constant := 16#02#;
   VARIANT_NOUSEROVERRIDE : constant := 16#04#;
   VARIANT_CALENDAR_HIJRI : constant := 16#08#;
   VARIANT_LOCALBOOL : constant := 16#10#;
   VARIANT_CALENDAR_THAI : constant := 16#20#;
   VARIANT_CALENDAR_GREGORIAN : constant := 16#40#;
   VARIANT_USE_NLS : constant := 16#80#;
   VAR_TIMEVALUEONLY : constant := 16#00000001#;
   VAR_DATEVALUEONLY : constant := 16#00000002#;
   VAR_VALIDDATE : constant := 16#00000004#;
   VAR_CALENDAR_HIJRI : constant := 16#00000008#;
   VAR_LOCALBOOL : constant := 16#00000010#;
   VAR_FORMAT_NOSUBSTITUTE : constant := 16#00000020#;
   VAR_FOURDIGITYEARS : constant := 16#00000040#;
   LOCALE_USE_NLS : constant := 16#10000000#;
   VAR_CALENDAR_THAI : constant := 16#00000080#;
   VAR_CALENDAR_GREGORIAN : constant := 16#00000100#;
   VTDATEGRE_MAX : constant := 2958465;
   VTDATEGRE_MIN : constant := -657434;
   NUMPRS_LEADING_WHITE : constant := 16#0001#;
   NUMPRS_TRAILING_WHITE : constant := 16#0002#;
   NUMPRS_LEADING_PLUS : constant := 16#0004#;
   NUMPRS_TRAILING_PLUS : constant := 16#0008#;
   NUMPRS_LEADING_MINUS : constant := 16#0010#;
   NUMPRS_TRAILING_MINUS : constant := 16#0020#;
   NUMPRS_HEX_OCT : constant := 16#0040#;
   NUMPRS_PARENS : constant := 16#0080#;
   NUMPRS_DECIMAL : constant := 16#0100#;
   NUMPRS_THOUSANDS : constant := 16#0200#;
   NUMPRS_CURRENCY : constant := 16#0400#;
   NUMPRS_EXPONENT : constant := 16#0800#;
   NUMPRS_USE_ALL : constant := 16#1000#;
   NUMPRS_STD : constant := 16#1FFF#;
   NUMPRS_NEG : constant := 16#10000#;
   NUMPRS_INEXACT : constant := 16#20000#;
   VARCMP_LT : constant := 0;
   VARCMP_EQ : constant := 1;
   VARCMP_GT : constant := 2;
   VARCMP_NULL : constant := 3;
   ID_DEFAULTINST : constant := -2;
   DISPATCH_METHOD : constant := 16#1#;
   DISPATCH_PROPERTYGET : constant := 16#2#;
   DISPATCH_PROPERTYPUT : constant := 16#4#;
   DISPATCH_PROPERTYPUTREF : constant := 16#8#;
   LOAD_TLB_AS_32BIT : constant := 16#20#;
   LOAD_TLB_AS_64BIT : constant := 16#40#;
   MASK_TO_RESET_TLB_BITS : constant := ( Interfaces.C.Unsigned( LOAD_TLB_AS_32BIT )
       or Interfaces.C.Unsigned( LOAD_TLB_AS_64BIT ) );
   ACTIVEOBJECT_STRONG : constant := 16#0#;
   ACTIVEOBJECT_WEAK : constant := 16#1#;
   -- #include <poppack.h>
   -- #include <oleauto.h>
   -- #include <ole2.h>
   OLEIVERB_PRIMARY : constant := 0;
   OLEIVERB_SHOW : constant := -1;
   OLEIVERB_OPEN : constant := -2;
   OLEIVERB_HIDE : constant := -3;
   OLEIVERB_UIACTIVATE : constant := -4;
   OLEIVERB_INPLACEACTIVATE : constant := -5;
   OLEIVERB_DISCARDUNDOSTATE : constant := -6;
   EMBDHLP_INPROC_HANDLER : constant := 16#0000#;
   EMBDHLP_INPROC_SERVER : constant := 16#0001#;
   EMBDHLP_CREATENOW : constant := 16#00000000#;
   EMBDHLP_DELAYCREATE : constant := 16#00010000#;
   OLECREATE_LEAVERUNNING : constant := 16#00000001#;
   -- #include <poppack.h>
   -- #include <ole2.h>
   -- #include <Win32.hpp>
   -- #include <commdlg.h>
   -- #include <prsht.h>
   -- #include <commdlg.h>
   OFN_READONLY : constant := 16#00000001#;
   OFN_OVERWRITEPROMPT : constant := 16#00000002#;
   OFN_HIDEREADONLY : constant := 16#00000004#;
   OFN_NOCHANGEDIR : constant := 16#00000008#;
   OFN_SHOWHELP : constant := 16#00000010#;
   OFN_ENABLEHOOK : constant := 16#00000020#;
   OFN_ENABLETEMPLATE : constant := 16#00000040#;
   OFN_ENABLETEMPLATEHANDLE : constant := 16#00000080#;
   OFN_NOVALIDATE : constant := 16#00000100#;
   OFN_ALLOWMULTISELECT : constant := 16#00000200#;
   OFN_EXTENSIONDIFFERENT : constant := 16#00000400#;
   OFN_PATHMUSTEXIST : constant := 16#00000800#;
   OFN_FILEMUSTEXIST : constant := 16#00001000#;
   OFN_CREATEPROMPT : constant := 16#00002000#;
   OFN_SHAREAWARE : constant := 16#00004000#;
   OFN_NOREADONLYRETURN : constant := 16#00008000#;
   OFN_NOTESTFILECREATE : constant := 16#00010000#;
   OFN_NONETWORKBUTTON : constant := 16#00020000#;
   OFN_NOLONGNAMES : constant := 16#00040000#;
   OFN_EXPLORER : constant := 16#00080000#;
   OFN_NODEREFERENCELINKS : constant := 16#00100000#;
   OFN_LONGNAMES : constant := 16#00200000#;
   OFN_ENABLEINCLUDENOTIFY : constant := 16#00400000#;
   OFN_ENABLESIZING : constant := 16#00800000#;
   OFN_DONTADDTORECENT : constant := 16#02000000#;
   OFN_FORCESHOWHIDDEN : constant := 16#10000000#;
   OFN_EX_NOPLACESBAR : constant := 16#00000001#;
   OFN_SHAREFALLTHROUGH : constant := 2;
   OFN_SHARENOWARN : constant := 1;
   OFN_SHAREWARN : constant := 0;
   CDM_FIRST : constant := WM_USER + 100;
   CDM_LAST : constant := WM_USER + 200;
   CDM_GETSPEC : constant := CDM_FIRST + 16#0000#;
   CDM_GETFILEPATH : constant := CDM_FIRST + 16#0001#;
   CDM_GETFOLDERPATH : constant := CDM_FIRST + 16#0002#;
   CDM_GETFOLDERIDLIST : constant := CDM_FIRST + 16#0003#;
   CDM_SETCONTROLTEXT : constant := CDM_FIRST + 16#0004#;
   CDM_HIDECONTROL : constant := CDM_FIRST + 16#0005#;
   CDM_SETDEFEXT : constant := CDM_FIRST + 16#0006#;
   CC_RGBINIT : constant := 16#00000001#;
   CC_FULLOPEN : constant := 16#00000002#;
   CC_PREVENTFULLOPEN : constant := 16#00000004#;
   CC_SHOWHELP : constant := 16#00000008#;
   CC_ENABLEHOOK : constant := 16#00000010#;
   CC_ENABLETEMPLATE : constant := 16#00000020#;
   CC_ENABLETEMPLATEHANDLE : constant := 16#00000040#;
   CC_SOLIDCOLOR : constant := 16#00000080#;
   CC_ANYCOLOR : constant := 16#00000100#;
   FR_DOWN : constant := 16#00000001#;
   FR_WHOLEWORD : constant := 16#00000002#;
   FR_MATCHCASE : constant := 16#00000004#;
   FR_FINDNEXT : constant := 16#00000008#;
   FR_REPLACE : constant := 16#00000010#;
   FR_REPLACEALL : constant := 16#00000020#;
   FR_DIALOGTERM : constant := 16#00000040#;
   FR_SHOWHELP : constant := 16#00000080#;
   FR_ENABLEHOOK : constant := 16#00000100#;
   FR_ENABLETEMPLATE : constant := 16#00000200#;
   FR_NOUPDOWN : constant := 16#00000400#;
   FR_NOMATCHCASE : constant := 16#00000800#;
   FR_NOWHOLEWORD : constant := 16#00001000#;
   FR_ENABLETEMPLATEHANDLE : constant := 16#00002000#;
   FR_HIDEUPDOWN : constant := 16#00004000#;
   FR_HIDEMATCHCASE : constant := 16#00008000#;
   FR_HIDEWHOLEWORD : constant := 16#00010000#;
   FR_RAW : constant := 16#00020000#;
   FR_SHOWWRAPAROUND : constant := 16#00040000#;
   FR_NOWRAPAROUND : constant := 16#00080000#;
   FR_WRAPAROUND : constant := 16#00100000#;
   FR_MATCHDIAC : constant := 16#20000000#;
   FR_MATCHKASHIDA : constant := 16#40000000#;
   FR_MATCHALEFHAMZA : constant := 16#80000000#;
   FRM_FIRST : constant := WM_USER + 100;
   FRM_LAST : constant := WM_USER + 200;
   FRM_SETOPERATIONRESULT : constant := FRM_FIRST + 16#0000#;
   FRM_SETOPERATIONRESULTTEXT : constant := FRM_FIRST + 16#0001#;
   CF_SCREENFONTS : constant := 16#00000001#;
   CF_PRINTERFONTS : constant := 16#00000002#;
   CF_BOTH : constant := ( Interfaces.C.Unsigned( CF_SCREENFONTS )
       or Interfaces.C.Unsigned( CF_PRINTERFONTS ) );
   CF_SHOWHELP : constant := 16#00000004#;
   CF_ENABLEHOOK : constant := 16#00000008#;
   CF_ENABLETEMPLATE : constant := 16#00000010#;
   CF_ENABLETEMPLATEHANDLE : constant := 16#00000020#;
   CF_INITTOLOGFONTSTRUCT : constant := 16#00000040#;
   CF_USESTYLE : constant := 16#00000080#;
   CF_EFFECTS : constant := 16#00000100#;
   CF_APPLY : constant := 16#00000200#;
   CF_ANSIONLY : constant := 16#00000400#;
   CF_NOVECTORFONTS : constant := 16#00000800#;
   CF_NOSIMULATIONS : constant := 16#00001000#;
   CF_LIMITSIZE : constant := 16#00002000#;
   CF_FIXEDPITCHONLY : constant := 16#00004000#;
   CF_WYSIWYG : constant := 16#00008000#;
   CF_FORCEFONTEXIST : constant := 16#00010000#;
   CF_SCALABLEONLY : constant := 16#00020000#;
   CF_TTONLY : constant := 16#00040000#;
   CF_NOFACESEL : constant := 16#00080000#;
   CF_NOSTYLESEL : constant := 16#00100000#;
   CF_NOSIZESEL : constant := 16#00200000#;
   CF_SELECTSCRIPT : constant := 16#00400000#;
   CF_NOSCRIPTSEL : constant := 16#00800000#;
   CF_NOVERTFONTS : constant := 16#01000000#;
   CF_INACTIVEFONTS : constant := 16#02000000#;
   SIMULATED_FONTTYPE : constant := 16#8000#;
   PRINTER_FONTTYPE : constant := 16#4000#;
   SCREEN_FONTTYPE : constant := 16#2000#;
   BOLD_FONTTYPE : constant := 16#0100#;
   ITALIC_FONTTYPE : constant := 16#0200#;
   REGULAR_FONTTYPE : constant := 16#0400#;
   PS_OPENTYPE_FONTTYPE : constant := 16#10000#;
   TT_OPENTYPE_FONTTYPE : constant := 16#20000#;
   TYPE1_FONTTYPE : constant := 16#40000#;
   SYMBOL_FONTTYPE : constant := 16#80000#;
   WM_CHOOSEFONT_GETLOGFONT : constant := WM_USER + 1;
   WM_CHOOSEFONT_SETLOGFONT : constant := WM_USER + 101;
   WM_CHOOSEFONT_SETFLAGS : constant := WM_USER + 102;
   CD_LBSELNOITEMS : constant := -1;
   CD_LBSELCHANGE : constant := 0;
   CD_LBSELSUB : constant := 1;
   CD_LBSELADD : constant := 2;
   PD_ALLPAGES : constant := 16#00000000#;
   PD_SELECTION : constant := 16#00000001#;
   PD_PAGENUMS : constant := 16#00000002#;
   PD_NOSELECTION : constant := 16#00000004#;
   PD_NOPAGENUMS : constant := 16#00000008#;
   PD_COLLATE : constant := 16#00000010#;
   PD_PRINTTOFILE : constant := 16#00000020#;
   PD_PRINTSETUP : constant := 16#00000040#;
   PD_NOWARNING : constant := 16#00000080#;
   PD_RETURNDC : constant := 16#00000100#;
   PD_RETURNIC : constant := 16#00000200#;
   PD_RETURNDEFAULT : constant := 16#00000400#;
   PD_SHOWHELP : constant := 16#00000800#;
   PD_ENABLEPRINTHOOK : constant := 16#00001000#;
   PD_ENABLESETUPHOOK : constant := 16#00002000#;
   PD_ENABLEPRINTTEMPLATE : constant := 16#00004000#;
   PD_ENABLESETUPTEMPLATE : constant := 16#00008000#;
   PD_ENABLEPRINTTEMPLATEHANDLE : constant := 16#00010000#;
   PD_ENABLESETUPTEMPLATEHANDLE : constant := 16#00020000#;
   PD_USEDEVMODECOPIES : constant := 16#00040000#;
   PD_USEDEVMODECOPIESANDCOLLATE : constant := 16#00040000#;
   PD_DISABLEPRINTTOFILE : constant := 16#00080000#;
   PD_HIDEPRINTTOFILE : constant := 16#00100000#;
   PD_NONETWORKBUTTON : constant := 16#00200000#;
   PD_CURRENTPAGE : constant := 16#00400000#;
   PD_NOCURRENTPAGE : constant := 16#00800000#;
   PD_EXCLUSIONFLAGS : constant := 16#01000000#;
   PD_USELARGETEMPLATE : constant := 16#10000000#;
   PD_EXCL_COPIESANDCOLLATE : constant := ( Interfaces.C.Unsigned( DM_COPIES )
       or Interfaces.C.Unsigned( DM_COLLATE ) );
   START_PAGE_GENERAL : constant := 16#ffffffff#;
   PD_RESULT_CANCEL : constant := 0;
   PD_RESULT_PRINT : constant := 1;
   PD_RESULT_APPLY : constant := 2;
   DN_DEFAULTPRN : constant := 16#0001#;
   WM_PSD_PAGESETUPDLG : constant := WM_USER;
   WM_PSD_FULLPAGERECT : constant := WM_USER + 1;
   WM_PSD_MINMARGINRECT : constant := WM_USER + 2;
   WM_PSD_MARGINRECT : constant := WM_USER + 3;
   WM_PSD_GREEKTEXTRECT : constant := WM_USER + 4;
   WM_PSD_ENVSTAMPRECT : constant := WM_USER + 5;
   WM_PSD_YAFULLPAGERECT : constant := WM_USER + 6;
   PSD_DEFAULTMINMARGINS : constant := 16#00000000#;
   PSD_INWININIINTLMEASURE : constant := 16#00000000#;
   PSD_MINMARGINS : constant := 16#00000001#;
   PSD_MARGINS : constant := 16#00000002#;
   PSD_INTHOUSANDTHSOFINCHES : constant := 16#00000004#;
   PSD_INHUNDREDTHSOFMILLIMETERS : constant := 16#00000008#;
   PSD_DISABLEMARGINS : constant := 16#00000010#;
   PSD_DISABLEPRINTER : constant := 16#00000020#;
   PSD_NOWARNING : constant := 16#00000080#;
   PSD_DISABLEORIENTATION : constant := 16#00000100#;
   PSD_RETURNDEFAULT : constant := 16#00000400#;
   PSD_DISABLEPAPER : constant := 16#00000200#;
   PSD_SHOWHELP : constant := 16#00000800#;
   PSD_ENABLEPAGESETUPHOOK : constant := 16#00002000#;
   PSD_ENABLEPAGESETUPTEMPLATE : constant := 16#00008000#;
   PSD_ENABLEPAGESETUPTEMPLATEHANDLE : constant := 16#00020000#;
   PSD_ENABLEPAGEPAINTHOOK : constant := 16#00040000#;
   PSD_DISABLEPAGEPAINTING : constant := 16#00080000#;
   PSD_NONETWORKBUTTON : constant := 16#00200000#;
   -- #include <Win32.hpp>
   -- #include <CommCtrl.h>
   -- #include <prsht.h>
   -- #include <CommCtrl.h>
   ICC_LISTVIEW_CLASSES : constant := 16#00000001#;
   ICC_TREEVIEW_CLASSES : constant := 16#00000002#;
   ICC_BAR_CLASSES : constant := 16#00000004#;
   ICC_TAB_CLASSES : constant := 16#00000008#;
   ICC_UPDOWN_CLASS : constant := 16#00000010#;
   ICC_PROGRESS_CLASS : constant := 16#00000020#;
   ICC_HOTKEY_CLASS : constant := 16#00000040#;
   ICC_ANIMATE_CLASS : constant := 16#00000080#;
   ICC_WIN95_CLASSES : constant := 16#000000FF#;
   ICC_DATE_CLASSES : constant := 16#00000100#;
   ICC_USEREX_CLASSES : constant := 16#00000200#;
   ICC_COOL_CLASSES : constant := 16#00000400#;
   ICC_INTERNET_CLASSES : constant := 16#00000800#;
   ICC_PAGESCROLLER_CLASS : constant := 16#00001000#;
   ICC_NATIVEFNTCTL_CLASS : constant := 16#00002000#;
   ICC_STANDARD_CLASSES : constant := 16#00004000#;
   ICC_LINK_CLASS : constant := 16#00008000#;
   ODT_HEADER : constant := 100;
   ODT_TAB : constant := 101;
   ODT_LISTVIEW : constant := 102;
   LVM_FIRST : constant := 16#1000#;
   TV_FIRST : constant := 16#1100#;
   HDM_FIRST : constant := 16#1200#;
   TCM_FIRST : constant := 16#1300#;
   PGM_FIRST : constant := 16#1400#;
   ECM_FIRST : constant := 16#1500#;
   BCM_FIRST : constant := 16#1600#;
   CBM_FIRST : constant := 16#1700#;
   CCM_FIRST : constant := 16#2000#;
   CCM_LAST : constant := CCM_FIRST + 16#200#;
   CCM_SETBKCOLOR : constant := CCM_FIRST + 1;
   CCM_SETCOLORSCHEME : constant := CCM_FIRST + 2;
   CCM_GETCOLORSCHEME : constant := CCM_FIRST + 3;
   CCM_GETDROPTARGET : constant := CCM_FIRST + 4;
   CCM_SETUNICODEFORMAT : constant := CCM_FIRST + 5;
   CCM_GETUNICODEFORMAT : constant := CCM_FIRST + 6;
   COMCTL32_VERSION : constant := 6;
   CCM_SETVERSION : constant := CCM_FIRST + 16#7#;
   CCM_GETVERSION : constant := CCM_FIRST + 16#8#;
   CCM_SETNOTIFYWINDOW : constant := CCM_FIRST + 16#9#;
   CCM_SETWINDOWTHEME : constant := CCM_FIRST + 16#b#;
   CCM_DPISCALE : constant := CCM_FIRST + 16#c#;
   INFOTIPSIZE : constant := 1024;
   MSGF_COMMCTRL_BEGINDRAG : constant := 16#4200#;
   MSGF_COMMCTRL_SIZEHEADER : constant := 16#4201#;
   MSGF_COMMCTRL_DRAGSELECT : constant := 16#4202#;
   MSGF_COMMCTRL_TOOLBARCUST : constant := 16#4203#;
   CDRF_DODEFAULT : constant := 16#00000000#;
   CDRF_NEWFONT : constant := 16#00000002#;
   CDRF_SKIPDEFAULT : constant := 16#00000004#;
   CDRF_DOERASE : constant := 16#00000008#;
   CDRF_SKIPPOSTPAINT : constant := 16#00000100#;
   CDRF_NOTIFYPOSTPAINT : constant := 16#00000010#;
   CDRF_NOTIFYITEMDRAW : constant := 16#00000020#;
   CDRF_NOTIFYSUBITEMDRAW : constant := 16#00000020#;
   CDRF_NOTIFYPOSTERASE : constant := 16#00000040#;
   CDDS_PREPAINT : constant := 16#00000001#;
   CDDS_POSTPAINT : constant := 16#00000002#;
   CDDS_PREERASE : constant := 16#00000003#;
   CDDS_POSTERASE : constant := 16#00000004#;
   CDDS_ITEM : constant := 16#00010000#;
   CDDS_ITEMPREPAINT : constant := ( Interfaces.C.Unsigned( CDDS_ITEM )
       or Interfaces.C.Unsigned( CDDS_PREPAINT ) );
   CDDS_ITEMPOSTPAINT : constant := ( Interfaces.C.Unsigned( CDDS_ITEM )
       or Interfaces.C.Unsigned( CDDS_POSTPAINT ) );
   CDDS_ITEMPREERASE : constant := ( Interfaces.C.Unsigned( CDDS_ITEM )
       or Interfaces.C.Unsigned( CDDS_PREERASE ) );
   CDDS_ITEMPOSTERASE : constant := ( Interfaces.C.Unsigned( CDDS_ITEM )
       or Interfaces.C.Unsigned( CDDS_POSTERASE ) );
   CDDS_SUBITEM : constant := 16#00020000#;
   CDIS_SELECTED : constant := 16#0001#;
   CDIS_GRAYED : constant := 16#0002#;
   CDIS_DISABLED : constant := 16#0004#;
   CDIS_CHECKED : constant := 16#0008#;
   CDIS_FOCUS : constant := 16#0010#;
   CDIS_DEFAULT : constant := 16#0020#;
   CDIS_HOT : constant := 16#0040#;
   CDIS_MARKED : constant := 16#0080#;
   CDIS_INDETERMINATE : constant := 16#0100#;
   CDIS_SHOWKEYBOARDCUES : constant := 16#0200#;
   CDIS_NEARHOT : constant := 16#0400#;
   CDIS_OTHERSIDEHOT : constant := 16#0800#;
   CDIS_DROPHILITED : constant := 16#1000#;
   CLR_NONE : constant := 16#FFFFFFFF#;
   CLR_DEFAULT : constant := 16#FF000000#;
   ILC_MASK : constant := 16#00000001#;
   ILC_COLOR : constant := 16#00000000#;
   ILC_COLORDDB : constant := 16#000000FE#;
   ILC_COLOR4 : constant := 16#00000004#;
   ILC_COLOR8 : constant := 16#00000008#;
   ILC_COLOR16 : constant := 16#00000010#;
   ILC_COLOR24 : constant := 16#00000018#;
   ILC_COLOR32 : constant := 16#00000020#;
   ILC_PALETTE : constant := 16#00000800#;
   ILC_MIRROR : constant := 16#00002000#;
   ILC_PERITEMMIRROR : constant := 16#00008000#;
   ILC_ORIGINALSIZE : constant := 16#00010000#;
   ILC_HIGHQUALITYSCALE : constant := 16#00020000#;
   ILD_NORMAL : constant := 16#00000000#;
   ILD_TRANSPARENT : constant := 16#00000001#;
   ILD_MASK : constant := 16#00000010#;
   ILD_IMAGE : constant := 16#00000020#;
   ILD_ROP : constant := 16#00000040#;
   ILD_BLEND25 : constant := 16#00000002#;
   ILD_BLEND50 : constant := 16#00000004#;
   ILD_OVERLAYMASK : constant := 16#00000F00#;
   ILD_PRESERVEALPHA : constant := 16#00001000#;
   ILD_SCALE : constant := 16#00002000#;
   ILD_DPISCALE : constant := 16#00004000#;
   ILD_ASYNC : constant := 16#00008000#;
   ILS_NORMAL : constant := 16#00000000#;
   ILS_GLOW : constant := 16#00000001#;
   ILS_SHADOW : constant := 16#00000002#;
   ILS_SATURATE : constant := 16#00000004#;
   ILS_ALPHA : constant := 16#00000008#;
   ILGT_NORMAL : constant := 16#00000000#;
   ILGT_ASYNC : constant := 16#00000001#;
   HBITMAP_CALLBACK : constant := 1;
   ILCF_MOVE : constant := 16#00000000#;
   ILCF_SWAP : constant := 16#00000001#;
   ILP_NORMAL : constant := 0;
   ILP_DOWNLEVEL : constant := 1;
   HDS_HORZ : constant := 16#0000#;
   HDS_BUTTONS : constant := 16#0002#;
   HDS_HOTTRACK : constant := 16#0004#;
   HDS_HIDDEN : constant := 16#0008#;
   HDS_DRAGDROP : constant := 16#0040#;
   HDS_FULLDRAG : constant := 16#0080#;
   HDS_FILTERBAR : constant := 16#0100#;
   HDS_FLAT : constant := 16#0200#;
   HDS_CHECKBOXES : constant := 16#0400#;
   HDS_NOSIZING : constant := 16#0800#;
   HDS_OVERFLOW : constant := 16#1000#;
   HDFT_ISSTRING : constant := 16#0000#;
   HDFT_ISNUMBER : constant := 16#0001#;
   HDFT_ISDATE : constant := 16#0002#;
   HDFT_HASNOVALUE : constant := 16#8000#;
   HDI_WIDTH : constant := 16#0001#;
   HDI_TEXT : constant := 16#0002#;
   HDI_FORMAT : constant := 16#0004#;
   HDI_LPARAM : constant := 16#0008#;
   HDI_BITMAP : constant := 16#0010#;
   HDI_IMAGE : constant := 16#0020#;
   HDI_DI_SETITEM : constant := 16#0040#;
   HDI_ORDER : constant := 16#0080#;
   HDI_FILTER : constant := 16#0100#;
   HDI_STATE : constant := 16#0200#;
   HDF_LEFT : constant := 16#0000#;
   HDF_RIGHT : constant := 16#0001#;
   HDF_CENTER : constant := 16#0002#;
   HDF_JUSTIFYMASK : constant := 16#0003#;
   HDF_RTLREADING : constant := 16#0004#;
   HDF_BITMAP : constant := 16#2000#;
   HDF_STRING : constant := 16#4000#;
   HDF_OWNERDRAW : constant := 16#8000#;
   HDF_IMAGE : constant := 16#0800#;
   HDF_BITMAP_ON_RIGHT : constant := 16#1000#;
   HDF_SORTUP : constant := 16#0400#;
   HDF_SORTDOWN : constant := 16#0200#;
   HDF_CHECKBOX : constant := 16#0040#;
   HDF_CHECKED : constant := 16#0080#;
   HDF_FIXEDWIDTH : constant := 16#0100#;
   HDF_SPLITBUTTON : constant := 16#1000000#;
   HDIS_FOCUSED : constant := 16#00000001#;
   HDM_GETITEMCOUNT : constant := HDM_FIRST + 0;
   HDM_INSERTITEMA : constant := HDM_FIRST + 1;
   HDM_INSERTITEMW : constant := HDM_FIRST + 10;
   HDM_DELETEITEM : constant := HDM_FIRST + 2;
   HDM_GETITEMA : constant := HDM_FIRST + 3;
   HDM_GETITEMW : constant := HDM_FIRST + 11;
   HDM_SETITEMA : constant := HDM_FIRST + 4;
   HDM_SETITEMW : constant := HDM_FIRST + 12;
   HDM_LAYOUT : constant := HDM_FIRST + 5;
   HHT_NOWHERE : constant := 16#0001#;
   HHT_ONHEADER : constant := 16#0002#;
   HHT_ONDIVIDER : constant := 16#0004#;
   HHT_ONDIVOPEN : constant := 16#0008#;
   HHT_ONFILTER : constant := 16#0010#;
   HHT_ONFILTERBUTTON : constant := 16#0020#;
   HHT_ABOVE : constant := 16#0100#;
   HHT_BELOW : constant := 16#0200#;
   HHT_TORIGHT : constant := 16#0400#;
   HHT_TOLEFT : constant := 16#0800#;
   HHT_ONITEMSTATEICON : constant := 16#1000#;
   HHT_ONDROPDOWN : constant := 16#2000#;
   HHT_ONOVERFLOW : constant := 16#4000#;
   HDSIL_NORMAL : constant := 0;
   HDSIL_STATE : constant := 1;
   HDM_HITTEST : constant := HDM_FIRST + 6;
   HDM_GETITEMRECT : constant := HDM_FIRST + 7;
   HDM_SETIMAGELIST : constant := HDM_FIRST + 8;
   HDM_GETIMAGELIST : constant := HDM_FIRST + 9;
   HDM_ORDERTOINDEX : constant := HDM_FIRST + 15;
   HDM_CREATEDRAGIMAGE : constant := HDM_FIRST + 16;
   HDM_GETORDERARRAY : constant := HDM_FIRST + 17;
   HDM_SETORDERARRAY : constant := HDM_FIRST + 18;
   HDM_SETHOTDIVIDER : constant := HDM_FIRST + 19;
   HDM_SETBITMAPMARGIN : constant := HDM_FIRST + 20;
   HDM_GETBITMAPMARGIN : constant := HDM_FIRST + 21;
   HDM_SETFILTERCHANGETIMEOUT : constant := HDM_FIRST + 22;
   HDM_EDITFILTER : constant := HDM_FIRST + 23;
   HDM_CLEARFILTER : constant := HDM_FIRST + 24;
   HDM_GETITEMDROPDOWNRECT : constant := HDM_FIRST + 25;
   HDM_GETOVERFLOWRECT : constant := HDM_FIRST + 26;
   HDM_GETFOCUSEDITEM : constant := HDM_FIRST + 27;
   HDM_SETFOCUSEDITEM : constant := HDM_FIRST + 28;
   CMB_MASKED : constant := 16#02#;
   TBSTATE_CHECKED : constant := 16#01#;
   TBSTATE_PRESSED : constant := 16#02#;
   TBSTATE_ENABLED : constant := 16#04#;
   TBSTATE_HIDDEN : constant := 16#08#;
   TBSTATE_INDETERMINATE : constant := 16#10#;
   TBSTATE_WRAP : constant := 16#20#;
   TBSTATE_ELLIPSES : constant := 16#40#;
   TBSTATE_MARKED : constant := 16#80#;
   TBSTYLE_BUTTON : constant := 16#0000#;
   TBSTYLE_SEP : constant := 16#0001#;
   TBSTYLE_CHECK : constant := 16#0002#;
   TBSTYLE_GROUP : constant := 16#0004#;
   TBSTYLE_CHECKGROUP : constant := ( Interfaces.C.Unsigned( TBSTYLE_GROUP )
       or Interfaces.C.Unsigned( TBSTYLE_CHECK ) );
   TBSTYLE_DROPDOWN : constant := 16#0008#;
   TBSTYLE_AUTOSIZE : constant := 16#0010#;
   TBSTYLE_NOPREFIX : constant := 16#0020#;
   TBSTYLE_TOOLTIPS : constant := 16#0100#;
   TBSTYLE_WRAPABLE : constant := 16#0200#;
   TBSTYLE_ALTDRAG : constant := 16#0400#;
   TBSTYLE_FLAT : constant := 16#0800#;
   TBSTYLE_LIST : constant := 16#1000#;
   TBSTYLE_CUSTOMERASE : constant := 16#2000#;
   TBSTYLE_REGISTERDROP : constant := 16#4000#;
   TBSTYLE_TRANSPARENT : constant := 16#8000#;
   TBSTYLE_EX_DRAWDDARROWS : constant := 16#00000001#;
   BTNS_SHOWTEXT : constant := 16#0040#;
   BTNS_WHOLEDROPDOWN : constant := 16#0080#;
   TBSTYLE_EX_MIXEDBUTTONS : constant := 16#00000008#;
   TBSTYLE_EX_HIDECLIPPEDBUTTONS : constant := 16#00000010#;
   TBSTYLE_EX_MULTICOLUMN : constant := 16#00000002#;
   TBSTYLE_EX_VERTICAL : constant := 16#00000004#;
   TBSTYLE_EX_DOUBLEBUFFER : constant := 16#00000080#;
   TBCDRF_NOEDGES : constant := 16#00010000#;
   TBCDRF_HILITEHOTTRACK : constant := 16#00020000#;
   TBCDRF_NOOFFSET : constant := 16#00040000#;
   TBCDRF_NOMARK : constant := 16#00080000#;
   TBCDRF_NOETCHEDEFFECT : constant := 16#00100000#;
   TBCDRF_BLENDICON : constant := 16#00200000#;
   TBCDRF_NOBACKGROUND : constant := 16#00400000#;
   TBCDRF_USECDCOLORS : constant := 16#00800000#;
   TB_ENABLEBUTTON : constant := WM_USER + 1;
   TB_CHECKBUTTON : constant := WM_USER + 2;
   TB_PRESSBUTTON : constant := WM_USER + 3;
   TB_HIDEBUTTON : constant := WM_USER + 4;
   TB_INDETERMINATE : constant := WM_USER + 5;
   TB_MARKBUTTON : constant := WM_USER + 6;
   TB_ISBUTTONENABLED : constant := WM_USER + 9;
   TB_ISBUTTONCHECKED : constant := WM_USER + 10;
   TB_ISBUTTONPRESSED : constant := WM_USER + 11;
   TB_ISBUTTONHIDDEN : constant := WM_USER + 12;
   TB_ISBUTTONINDETERMINATE : constant := WM_USER + 13;
   TB_ISBUTTONHIGHLIGHTED : constant := WM_USER + 14;
   TB_SETSTATE : constant := WM_USER + 17;
   TB_GETSTATE : constant := WM_USER + 18;
   TB_ADDBITMAP : constant := WM_USER + 19;
   HINST_COMMCTRL : constant := 1;
   IDB_STD_SMALL_COLOR : constant := 0;
   IDB_STD_LARGE_COLOR : constant := 1;
   IDB_VIEW_SMALL_COLOR : constant := 4;
   IDB_VIEW_LARGE_COLOR : constant := 5;
   IDB_HIST_SMALL_COLOR : constant := 8;
   IDB_HIST_LARGE_COLOR : constant := 9;
   IDB_HIST_NORMAL : constant := 12;
   IDB_HIST_HOT : constant := 13;
   IDB_HIST_DISABLED : constant := 14;
   IDB_HIST_PRESSED : constant := 15;
   STD_CUT : constant := 0;
   STD_COPY : constant := 1;
   STD_PASTE : constant := 2;
   STD_UNDO : constant := 3;
   STD_REDOW : constant := 4;
   STD_DELETE : constant := 5;
   STD_FILENEW : constant := 6;
   STD_FILEOPEN : constant := 7;
   STD_FILESAVE : constant := 8;
   STD_PRINTPRE : constant := 9;
   STD_PROPERTIES : constant := 10;
   STD_HELP : constant := 11;
   STD_FIND : constant := 12;
   STD_REPLACE : constant := 13;
   STD_PRINT : constant := 14;
   VIEW_LARGEICONS : constant := 0;
   VIEW_SMALLICONS : constant := 1;
   VIEW_LIST : constant := 2;
   VIEW_DETAILS : constant := 3;
   VIEW_SORTNAME : constant := 4;
   VIEW_SORTSIZE : constant := 5;
   VIEW_SORTDATE : constant := 6;
   VIEW_SORTTYPE : constant := 7;
   VIEW_PARENTFOLDER : constant := 8;
   VIEW_NETCONNECT : constant := 9;
   VIEW_NETDISCONNECT : constant := 10;
   VIEW_NEWFOLDER : constant := 11;
   VIEW_VIEWMENU : constant := 12;
   HIST_BACK : constant := 0;
   HIST_FORWARD : constant := 1;
   HIST_FAVORITES : constant := 2;
   HIST_ADDTOFAVORITES : constant := 3;
   HIST_VIEWTREE : constant := 4;
   TB_ADDBUTTONSA : constant := WM_USER + 20;
   TB_INSERTBUTTONA : constant := WM_USER + 21;
   TB_DELETEBUTTON : constant := WM_USER + 22;
   TB_GETBUTTON : constant := WM_USER + 23;
   TB_BUTTONCOUNT : constant := WM_USER + 24;
   TB_COMMANDTOINDEX : constant := WM_USER + 25;
   TB_SAVERESTOREA : constant := WM_USER + 26;
   TB_SAVERESTOREW : constant := WM_USER + 76;
   TB_CUSTOMIZE : constant := WM_USER + 27;
   TB_ADDSTRINGA : constant := WM_USER + 28;
   TB_ADDSTRINGW : constant := WM_USER + 77;
   TB_GETITEMRECT : constant := WM_USER + 29;
   TB_BUTTONSTRUCTSIZE : constant := WM_USER + 30;
   TB_SETBUTTONSIZE : constant := WM_USER + 31;
   TB_SETBITMAPSIZE : constant := WM_USER + 32;
   TB_AUTOSIZE : constant := WM_USER + 33;
   TB_GETTOOLTIPS : constant := WM_USER + 35;
   TB_SETTOOLTIPS : constant := WM_USER + 36;
   TB_SETPARENT : constant := WM_USER + 37;
   TB_SETROWS : constant := WM_USER + 39;
   TB_GETROWS : constant := WM_USER + 40;
   TB_SETCMDID : constant := WM_USER + 42;
   TB_CHANGEBITMAP : constant := WM_USER + 43;
   TB_GETBITMAP : constant := WM_USER + 44;
   TB_GETBUTTONTEXTA : constant := WM_USER + 45;
   TB_GETBUTTONTEXTW : constant := WM_USER + 75;
   TB_REPLACEBITMAP : constant := WM_USER + 46;
   TB_SETINDENT : constant := WM_USER + 47;
   TB_SETIMAGELIST : constant := WM_USER + 48;
   TB_GETIMAGELIST : constant := WM_USER + 49;
   TB_LOADIMAGES : constant := WM_USER + 50;
   TB_GETRECT : constant := WM_USER + 51;
   TB_SETHOTIMAGELIST : constant := WM_USER + 52;
   TB_GETHOTIMAGELIST : constant := WM_USER + 53;
   TB_SETDISABLEDIMAGELIST : constant := WM_USER + 54;
   TB_GETDISABLEDIMAGELIST : constant := WM_USER + 55;
   TB_SETSTYLE : constant := WM_USER + 56;
   TB_GETSTYLE : constant := WM_USER + 57;
   TB_GETBUTTONSIZE : constant := WM_USER + 58;
   TB_SETBUTTONWIDTH : constant := WM_USER + 59;
   TB_SETMAXTEXTROWS : constant := WM_USER + 60;
   TB_GETTEXTROWS : constant := WM_USER + 61;
   TB_GETOBJECT : constant := WM_USER + 62;
   TB_GETHOTITEM : constant := WM_USER + 71;
   TB_SETHOTITEM : constant := WM_USER + 72;
   TB_SETANCHORHIGHLIGHT : constant := WM_USER + 73;
   TB_GETANCHORHIGHLIGHT : constant := WM_USER + 74;
   TB_MAPACCELERATORA : constant := WM_USER + 78;
   TBIMHT_AFTER : constant := 16#00000001#;
   TBIMHT_BACKGROUND : constant := 16#00000002#;
   TB_GETINSERTMARK : constant := WM_USER + 79;
   TB_SETINSERTMARK : constant := WM_USER + 80;
   TB_INSERTMARKHITTEST : constant := WM_USER + 81;
   TB_MOVEBUTTON : constant := WM_USER + 82;
   TB_GETMAXSIZE : constant := WM_USER + 83;
   TB_SETEXTENDEDSTYLE : constant := WM_USER + 84;
   TB_GETEXTENDEDSTYLE : constant := WM_USER + 85;
   TB_GETPADDING : constant := WM_USER + 86;
   TB_SETPADDING : constant := WM_USER + 87;
   TB_SETINSERTMARKCOLOR : constant := WM_USER + 88;
   TB_GETINSERTMARKCOLOR : constant := WM_USER + 89;
   TB_MAPACCELERATORW : constant := WM_USER + 90;
   TBBF_LARGE : constant := 16#0001#;
   TB_GETBITMAPFLAGS : constant := WM_USER + 41;
   TBIF_IMAGE : constant := 16#00000001#;
   TBIF_TEXT : constant := 16#00000002#;
   TBIF_STATE : constant := 16#00000004#;
   TBIF_STYLE : constant := 16#00000008#;
   TBIF_LPARAM : constant := 16#00000010#;
   TBIF_COMMAND : constant := 16#00000020#;
   TBIF_SIZE : constant := 16#00000040#;
   TBIF_BYINDEX : constant := 16#80000000#;
   TB_GETBUTTONINFOW : constant := WM_USER + 63;
   TB_SETBUTTONINFOW : constant := WM_USER + 64;
   TB_GETBUTTONINFOA : constant := WM_USER + 65;
   TB_SETBUTTONINFOA : constant := WM_USER + 66;
   TB_INSERTBUTTONW : constant := WM_USER + 67;
   TB_ADDBUTTONSW : constant := WM_USER + 68;
   TB_HITTEST : constant := WM_USER + 69;
   TB_SETDRAWTEXTFLAGS : constant := WM_USER + 70;
   TB_GETSTRINGW : constant := WM_USER + 91;
   TB_GETSTRINGA : constant := WM_USER + 92;
   TB_SETBOUNDINGSIZE : constant := WM_USER + 93;
   TB_SETHOTITEM2 : constant := WM_USER + 94;
   TB_HASACCELERATOR : constant := WM_USER + 95;
   TB_SETLISTGAP : constant := WM_USER + 96;
   TB_GETIMAGELISTCOUNT : constant := WM_USER + 98;
   TB_GETIDEALSIZE : constant := WM_USER + 99;
   TBMF_PAD : constant := 16#00000001#;
   TBMF_BARPAD : constant := 16#00000002#;
   TBMF_BUTTONSPACING : constant := 16#00000004#;
   TB_GETMETRICS : constant := WM_USER + 101;
   TB_SETMETRICS : constant := WM_USER + 102;
   TB_GETITEMDROPDOWNRECT : constant := WM_USER + 103;
   TB_SETPRESSEDIMAGELIST : constant := WM_USER + 104;
   TB_GETPRESSEDIMAGELIST : constant := WM_USER + 105;
   HICF_OTHER : constant := 16#00000000#;
   HICF_MOUSE : constant := 16#00000001#;
   HICF_ARROWKEYS : constant := 16#00000002#;
   HICF_ACCELERATOR : constant := 16#00000004#;
   HICF_DUPACCEL : constant := 16#00000008#;
   HICF_ENTERING : constant := 16#00000010#;
   HICF_LEAVING : constant := 16#00000020#;
   HICF_RESELECT : constant := 16#00000040#;
   HICF_LMOUSE : constant := 16#00000080#;
   HICF_TOGGLEDROPDOWN : constant := 16#00000100#;
   TBNRF_HIDEHELP : constant := 16#00000001#;
   TBNRF_ENDCUSTOMIZE : constant := 16#00000002#;
   TBNF_IMAGE : constant := 16#00000001#;
   TBNF_TEXT : constant := 16#00000002#;
   TBNF_DI_SETITEM : constant := 16#10000000#;
   TBDDRET_DEFAULT : constant := 0;
   TBDDRET_NODEFAULT : constant := 1;
   TBDDRET_TREATPRESSED : constant := 2;
   RBIM_IMAGELIST : constant := 16#00000001#;
   RBS_TOOLTIPS : constant := 16#00000100#;
   RBS_VARHEIGHT : constant := 16#00000200#;
   RBS_BANDBORDERS : constant := 16#00000400#;
   RBS_FIXEDORDER : constant := 16#00000800#;
   RBS_REGISTERDROP : constant := 16#00001000#;
   RBS_AUTOSIZE : constant := 16#00002000#;
   RBS_VERTICALGRIPPER : constant := 16#00004000#;
   RBS_DBLCLKTOGGLE : constant := 16#00008000#;
   RBBS_BREAK : constant := 16#00000001#;
   RBBS_FIXEDSIZE : constant := 16#00000002#;
   RBBS_CHILDEDGE : constant := 16#00000004#;
   RBBS_HIDDEN : constant := 16#00000008#;
   RBBS_NOVERT : constant := 16#00000010#;
   RBBS_FIXEDBMP : constant := 16#00000020#;
   RBBS_VARIABLEHEIGHT : constant := 16#00000040#;
   RBBS_GRIPPERALWAYS : constant := 16#00000080#;
   RBBS_NOGRIPPER : constant := 16#00000100#;
   RBBS_USECHEVRON : constant := 16#00000200#;
   RBBS_HIDETITLE : constant := 16#00000400#;
   RBBS_TOPALIGN : constant := 16#00000800#;
   RBBIM_STYLE : constant := 16#00000001#;
   RBBIM_COLORS : constant := 16#00000002#;
   RBBIM_TEXT : constant := 16#00000004#;
   RBBIM_IMAGE : constant := 16#00000008#;
   RBBIM_CHILD : constant := 16#00000010#;
   RBBIM_CHILDSIZE : constant := 16#00000020#;
   RBBIM_SIZE : constant := 16#00000040#;
   RBBIM_BACKGROUND : constant := 16#00000080#;
   RBBIM_ID : constant := 16#00000100#;
   RBBIM_IDEALSIZE : constant := 16#00000200#;
   RBBIM_LPARAM : constant := 16#00000400#;
   RBBIM_HEADERSIZE : constant := 16#00000800#;
   RBBIM_CHEVRONLOCATION : constant := 16#00001000#;
   RBBIM_CHEVRONSTATE : constant := 16#00002000#;
   RB_INSERTBANDA : constant := WM_USER + 1;
   RB_DELETEBAND : constant := WM_USER + 2;
   RB_GETBARINFO : constant := WM_USER + 3;
   RB_SETBARINFO : constant := WM_USER + 4;
   RB_SETBANDINFOA : constant := WM_USER + 6;
   RB_SETPARENT : constant := WM_USER + 7;
   RB_HITTEST : constant := WM_USER + 8;
   RB_GETRECT : constant := WM_USER + 9;
   RB_INSERTBANDW : constant := WM_USER + 10;
   RB_SETBANDINFOW : constant := WM_USER + 11;
   RB_GETBANDCOUNT : constant := WM_USER + 12;
   RB_GETROWCOUNT : constant := WM_USER + 13;
   RB_GETROWHEIGHT : constant := WM_USER + 14;
   RB_IDTOINDEX : constant := WM_USER + 16;
   RB_GETTOOLTIPS : constant := WM_USER + 17;
   RB_SETTOOLTIPS : constant := WM_USER + 18;
   RB_SETBKCOLOR : constant := WM_USER + 19;
   RB_GETBKCOLOR : constant := WM_USER + 20;
   RB_SETTEXTCOLOR : constant := WM_USER + 21;
   RB_GETTEXTCOLOR : constant := WM_USER + 22;
   RBSTR_CHANGERECT : constant := 16#0001#;
   RB_SIZETORECT : constant := WM_USER + 23;
   RB_BEGINDRAG : constant := WM_USER + 24;
   RB_ENDDRAG : constant := WM_USER + 25;
   RB_DRAGMOVE : constant := WM_USER + 26;
   RB_GETBARHEIGHT : constant := WM_USER + 27;
   RB_GETBANDINFOW : constant := WM_USER + 28;
   RB_GETBANDINFOA : constant := WM_USER + 29;
   RB_MINIMIZEBAND : constant := WM_USER + 30;
   RB_MAXIMIZEBAND : constant := WM_USER + 31;
   RB_GETDROPTARGET : constant := CCM_GETDROPTARGET;
   RB_GETBANDBORDERS : constant := WM_USER + 34;
   RB_SHOWBAND : constant := WM_USER + 35;
   RB_SETPALETTE : constant := WM_USER + 37;
   RB_GETPALETTE : constant := WM_USER + 38;
   RB_MOVEBAND : constant := WM_USER + 39;
   RB_GETBANDMARGINS : constant := WM_USER + 40;
   RB_SETEXTENDEDSTYLE : constant := WM_USER + 41;
   RB_GETEXTENDEDSTYLE : constant := WM_USER + 42;
   RB_PUSHCHEVRON : constant := WM_USER + 43;
   RB_SETBANDWIDTH : constant := WM_USER + 44;
   RBNM_ID : constant := 16#00000001#;
   RBNM_STYLE : constant := 16#00000002#;
   RBNM_LPARAM : constant := 16#00000004#;
   RBAB_AUTOSIZE : constant := 16#0001#;
   RBAB_ADDBAND : constant := 16#0002#;
   RBHT_NOWHERE : constant := 16#0001#;
   RBHT_CAPTION : constant := 16#0002#;
   RBHT_CLIENT : constant := 16#0003#;
   RBHT_GRABBER : constant := 16#0004#;
   RBHT_CHEVRON : constant := 16#0008#;
   RBHT_SPLITTER : constant := 16#0010#;
   TTS_ALWAYSTIP : constant := 16#01#;
   TTS_NOPREFIX : constant := 16#02#;
   TTS_NOANIMATE : constant := 16#10#;
   TTS_NOFADE : constant := 16#20#;
   TTS_BALLOON : constant := 16#40#;
   TTS_CLOSE : constant := 16#80#;
   TTS_USEVISUALSTYLE : constant := 16#100#;
   TTF_IDISHWND : constant := 16#0001#;
   TTF_CENTERTIP : constant := 16#0002#;
   TTF_RTLREADING : constant := 16#0004#;
   TTF_SUBCLASS : constant := 16#0010#;
   TTF_TRACK : constant := 16#0020#;
   TTF_ABSOLUTE : constant := 16#0080#;
   TTF_TRANSPARENT : constant := 16#0100#;
   TTF_PARSELINKS : constant := 16#1000#;
   TTF_DI_SETITEM : constant := 16#8000#;
   TTDT_AUTOMATIC : constant := 0;
   TTDT_RESHOW : constant := 1;
   TTDT_AUTOPOP : constant := 2;
   TTDT_INITIAL : constant := 3;
   TTI_NONE : constant := 0;
   TTI_INFO : constant := 1;
   TTI_WARNING : constant := 2;
   TTI_ERROR : constant := 3;
   TTI_INFO_LARGE : constant := 4;
   TTI_WARNING_LARGE : constant := 5;
   TTI_ERROR_LARGE : constant := 6;
   TTM_ACTIVATE : constant := WM_USER + 1;
   TTM_SETDELAYTIME : constant := WM_USER + 3;
   TTM_ADDTOOLA : constant := WM_USER + 4;
   TTM_ADDTOOLW : constant := WM_USER + 50;
   TTM_DELTOOLA : constant := WM_USER + 5;
   TTM_DELTOOLW : constant := WM_USER + 51;
   TTM_NEWTOOLRECTA : constant := WM_USER + 6;
   TTM_NEWTOOLRECTW : constant := WM_USER + 52;
   TTM_RELAYEVENT : constant := WM_USER + 7;
   TTM_GETTOOLINFOA : constant := WM_USER + 8;
   TTM_GETTOOLINFOW : constant := WM_USER + 53;
   TTM_SETTOOLINFOA : constant := WM_USER + 9;
   TTM_SETTOOLINFOW : constant := WM_USER + 54;
   TTM_HITTESTA : constant := WM_USER + 10;
   TTM_HITTESTW : constant := WM_USER + 55;
   TTM_GETTEXTA : constant := WM_USER + 11;
   TTM_GETTEXTW : constant := WM_USER + 56;
   TTM_UPDATETIPTEXTA : constant := WM_USER + 12;
   TTM_UPDATETIPTEXTW : constant := WM_USER + 57;
   TTM_GETTOOLCOUNT : constant := WM_USER + 13;
   TTM_ENUMTOOLSA : constant := WM_USER + 14;
   TTM_ENUMTOOLSW : constant := WM_USER + 58;
   TTM_GETCURRENTTOOLA : constant := WM_USER + 15;
   TTM_GETCURRENTTOOLW : constant := WM_USER + 59;
   TTM_WINDOWFROMPOINT : constant := WM_USER + 16;
   TTM_TRACKACTIVATE : constant := WM_USER + 17;
   TTM_TRACKPOSITION : constant := WM_USER + 18;
   TTM_SETTIPBKCOLOR : constant := WM_USER + 19;
   TTM_SETTIPTEXTCOLOR : constant := WM_USER + 20;
   TTM_GETDELAYTIME : constant := WM_USER + 21;
   TTM_GETTIPBKCOLOR : constant := WM_USER + 22;
   TTM_GETTIPTEXTCOLOR : constant := WM_USER + 23;
   TTM_SETMAXTIPWIDTH : constant := WM_USER + 24;
   TTM_GETMAXTIPWIDTH : constant := WM_USER + 25;
   TTM_SETMARGIN : constant := WM_USER + 26;
   TTM_GETMARGIN : constant := WM_USER + 27;
   TTM_POP : constant := WM_USER + 28;
   TTM_UPDATE : constant := WM_USER + 29;
   TTM_GETBUBBLESIZE : constant := WM_USER + 30;
   TTM_ADJUSTRECT : constant := WM_USER + 31;
   TTM_SETTITLEA : constant := WM_USER + 32;
   TTM_SETTITLEW : constant := WM_USER + 33;
   TTM_POPUP : constant := WM_USER + 34;
   TTM_GETTITLE : constant := WM_USER + 35;
   SBARS_SIZEGRIP : constant := 16#0100#;
   SBARS_TOOLTIPS : constant := 16#0800#;
   SBT_TOOLTIPS : constant := 16#0800#;
   SB_SETTEXTA : constant := WM_USER + 1;
   SB_SETTEXTW : constant := WM_USER + 11;
   SB_GETTEXTA : constant := WM_USER + 2;
   SB_GETTEXTW : constant := WM_USER + 13;
   SB_GETTEXTLENGTHA : constant := WM_USER + 3;
   SB_GETTEXTLENGTHW : constant := WM_USER + 12;
   SB_SETPARTS : constant := WM_USER + 4;
   SB_GETPARTS : constant := WM_USER + 6;
   SB_GETBORDERS : constant := WM_USER + 7;
   SB_SETMINHEIGHT : constant := WM_USER + 8;
   SB_SIMPLE : constant := WM_USER + 9;
   SB_GETRECT : constant := WM_USER + 10;
   SB_ISSIMPLE : constant := WM_USER + 14;
   SB_SETICON : constant := WM_USER + 15;
   SB_SETTIPTEXTA : constant := WM_USER + 16;
   SB_SETTIPTEXTW : constant := WM_USER + 17;
   SB_GETTIPTEXTA : constant := WM_USER + 18;
   SB_GETTIPTEXTW : constant := WM_USER + 19;
   SB_GETICON : constant := WM_USER + 20;
   SBT_OWNERDRAW : constant := 16#1000#;
   SBT_NOBORDERS : constant := 16#0100#;
   SBT_POPOUT : constant := 16#0200#;
   SBT_RTLREADING : constant := 16#0400#;
   SBT_NOTABPARSING : constant := 16#0800#;
   SB_SIMPLEID : constant := 16#00ff#;
   TBS_AUTOTICKS : constant := 16#0001#;
   TBS_VERT : constant := 16#0002#;
   TBS_HORZ : constant := 16#0000#;
   TBS_TOP : constant := 16#0004#;
   TBS_BOTTOM : constant := 16#0000#;
   TBS_LEFT : constant := 16#0004#;
   TBS_RIGHT : constant := 16#0000#;
   TBS_BOTH : constant := 16#0008#;
   TBS_NOTICKS : constant := 16#0010#;
   TBS_ENABLESELRANGE : constant := 16#0020#;
   TBS_FIXEDLENGTH : constant := 16#0040#;
   TBS_NOTHUMB : constant := 16#0080#;
   TBS_TOOLTIPS : constant := 16#0100#;
   TBS_REVERSED : constant := 16#0200#;
   TBS_DOWNISLEFT : constant := 16#0400#;
   TBS_NOTIFYBEFOREMOVE : constant := 16#0800#;
   TBS_TRANSPARENTBKGND : constant := 16#1000#;
   TBM_GETPOS : constant := WM_USER;
   TBM_GETRANGEMIN : constant := WM_USER + 1;
   TBM_GETRANGEMAX : constant := WM_USER + 2;
   TBM_GETTIC : constant := WM_USER + 3;
   TBM_SETTIC : constant := WM_USER + 4;
   TBM_SETPOS : constant := WM_USER + 5;
   TBM_SETRANGE : constant := WM_USER + 6;
   TBM_SETRANGEMIN : constant := WM_USER + 7;
   TBM_SETRANGEMAX : constant := WM_USER + 8;
   TBM_CLEARTICS : constant := WM_USER + 9;
   TBM_SETSEL : constant := WM_USER + 10;
   TBM_SETSELSTART : constant := WM_USER + 11;
   TBM_SETSELEND : constant := WM_USER + 12;
   TBM_GETPTICS : constant := WM_USER + 14;
   TBM_GETTICPOS : constant := WM_USER + 15;
   TBM_GETNUMTICS : constant := WM_USER + 16;
   TBM_GETSELSTART : constant := WM_USER + 17;
   TBM_GETSELEND : constant := WM_USER + 18;
   TBM_CLEARSEL : constant := WM_USER + 19;
   TBM_SETTICFREQ : constant := WM_USER + 20;
   TBM_SETPAGESIZE : constant := WM_USER + 21;
   TBM_GETPAGESIZE : constant := WM_USER + 22;
   TBM_SETLINESIZE : constant := WM_USER + 23;
   TBM_GETLINESIZE : constant := WM_USER + 24;
   TBM_GETTHUMBRECT : constant := WM_USER + 25;
   TBM_GETCHANNELRECT : constant := WM_USER + 26;
   TBM_SETTHUMBLENGTH : constant := WM_USER + 27;
   TBM_GETTHUMBLENGTH : constant := WM_USER + 28;
   TBM_SETTOOLTIPS : constant := WM_USER + 29;
   TBM_GETTOOLTIPS : constant := WM_USER + 30;
   TBM_SETTIPSIDE : constant := WM_USER + 31;
   TBTS_TOP : constant := 0;
   TBTS_LEFT : constant := 1;
   TBTS_BOTTOM : constant := 2;
   TBTS_RIGHT : constant := 3;
   TBM_SETBUDDY : constant := WM_USER + 32;
   TBM_GETBUDDY : constant := WM_USER + 33;
   TBM_SETPOSNOTIFY : constant := WM_USER + 34;
   TB_LINEUP : constant := 0;
   TB_LINEDOWN : constant := 1;
   TB_PAGEUP : constant := 2;
   TB_PAGEDOWN : constant := 3;
   TB_THUMBPOSITION : constant := 4;
   TB_THUMBTRACK : constant := 5;
   TB_TOP : constant := 6;
   TB_BOTTOM : constant := 7;
   TB_ENDTRACK : constant := 8;
   TBCD_TICS : constant := 16#0001#;
   TBCD_THUMB : constant := 16#0002#;
   TBCD_CHANNEL : constant := 16#0003#;
   DL_BEGINDRAG : constant := WM_USER + 133;
   DL_DRAGGING : constant := WM_USER + 134;
   DL_DROPPED : constant := WM_USER + 135;
   DL_CANCELDRAG : constant := WM_USER + 136;
   DL_CURSORSET : constant := 0;
   DL_STOPCURSOR : constant := 1;
   DL_COPYCURSOR : constant := 2;
   DL_MOVECURSOR : constant := 3;
   UD_MAXVAL : constant := 16#7fff#;
   UDS_WRAP : constant := 16#0001#;
   UDS_SETBUDDYINT : constant := 16#0002#;
   UDS_ALIGNRIGHT : constant := 16#0004#;
   UDS_ALIGNLEFT : constant := 16#0008#;
   UDS_AUTOBUDDY : constant := 16#0010#;
   UDS_ARROWKEYS : constant := 16#0020#;
   UDS_HORZ : constant := 16#0040#;
   UDS_NOTHOUSANDS : constant := 16#0080#;
   UDS_HOTTRACK : constant := 16#0100#;
   UDM_SETRANGE : constant := WM_USER + 101;
   UDM_GETRANGE : constant := WM_USER + 102;
   UDM_SETPOS : constant := WM_USER + 103;
   UDM_GETPOS : constant := WM_USER + 104;
   UDM_SETBUDDY : constant := WM_USER + 105;
   UDM_GETBUDDY : constant := WM_USER + 106;
   UDM_SETACCEL : constant := WM_USER + 107;
   UDM_GETACCEL : constant := WM_USER + 108;
   UDM_SETBASE : constant := WM_USER + 109;
   UDM_GETBASE : constant := WM_USER + 110;
   UDM_SETRANGE32 : constant := WM_USER + 111;
   UDM_GETRANGE32 : constant := WM_USER + 112;
   UDM_SETPOS32 : constant := WM_USER + 113;
   UDM_GETPOS32 : constant := WM_USER + 114;
   PBS_SMOOTH : constant := 16#01#;
   PBS_VERTICAL : constant := 16#04#;
   PBM_SETRANGE : constant := WM_USER + 1;
   PBM_SETPOS : constant := WM_USER + 2;
   PBM_DELTAPOS : constant := WM_USER + 3;
   PBM_SETSTEP : constant := WM_USER + 4;
   PBM_STEPIT : constant := WM_USER + 5;
   PBM_SETRANGE32 : constant := WM_USER + 6;
   PBM_GETRANGE : constant := WM_USER + 7;
   PBM_GETPOS : constant := WM_USER + 8;
   PBM_SETBARCOLOR : constant := WM_USER + 9;
   PBS_MARQUEE : constant := 16#08#;
   PBM_SETMARQUEE : constant := WM_USER + 10;
   PBS_SMOOTHREVERSE : constant := 16#10#;
   PBM_GETSTEP : constant := WM_USER + 13;
   PBM_GETBKCOLOR : constant := WM_USER + 14;
   PBM_GETBARCOLOR : constant := WM_USER + 15;
   PBM_SETSTATE : constant := WM_USER + 16;
   PBM_GETSTATE : constant := WM_USER + 17;
   PBST_NORMAL : constant := 16#0001#;
   PBST_ERROR : constant := 16#0002#;
   PBST_PAUSED : constant := 16#0003#;
   HOTKEYF_SHIFT : constant := 16#01#;
   HOTKEYF_CONTROL : constant := 16#02#;
   HOTKEYF_ALT : constant := 16#04#;
   HOTKEYF_EXT : constant := 16#08#;
   HKCOMB_NONE : constant := 16#0001#;
   HKCOMB_S : constant := 16#0002#;
   HKCOMB_C : constant := 16#0004#;
   HKCOMB_A : constant := 16#0008#;
   HKCOMB_SC : constant := 16#0010#;
   HKCOMB_SA : constant := 16#0020#;
   HKCOMB_CA : constant := 16#0040#;
   HKCOMB_SCA : constant := 16#0080#;
   HKM_SETHOTKEY : constant := WM_USER + 1;
   HKM_GETHOTKEY : constant := WM_USER + 2;
   HKM_SETRULES : constant := WM_USER + 3;
   CCS_TOP : constant := 16#00000001#;
   CCS_NOMOVEY : constant := 16#00000002#;
   CCS_BOTTOM : constant := 16#00000003#;
   CCS_NORESIZE : constant := 16#00000004#;
   CCS_NOPARENTALIGN : constant := 16#00000008#;
   CCS_ADJUSTABLE : constant := 16#00000020#;
   CCS_NODIVIDER : constant := 16#00000040#;
   CCS_VERT : constant := 16#00000080#;
   CCS_LEFT : constant := ( Interfaces.C.Unsigned( CCS_VERT )
       or Interfaces.C.Unsigned( CCS_TOP ) );
   CCS_RIGHT : constant := ( Interfaces.C.Unsigned( CCS_VERT )
       or Interfaces.C.Unsigned( CCS_BOTTOM ) );
   CCS_NOMOVEX : constant := ( Interfaces.C.Unsigned( CCS_VERT )
       or Interfaces.C.Unsigned( CCS_NOMOVEY ) );
   INVALID_LINK_INDEX : constant := -1;
   MAX_LINKID_TEXT : constant := 48;
   LWS_TRANSPARENT : constant := 16#0001#;
   LWS_IGNORERETURN : constant := 16#0002#;
   LWS_NOPREFIX : constant := 16#0004#;
   LWS_USEVISUALSTYLE : constant := 16#0008#;
   LWS_USECUSTOMTEXT : constant := 16#0010#;
   LWS_RIGHT : constant := 16#0020#;
   LIF_ITEMINDEX : constant := 16#00000001#;
   LIF_STATE : constant := 16#00000002#;
   LIF_ITEMID : constant := 16#00000004#;
   LIF_URL : constant := 16#00000008#;
   LIS_FOCUSED : constant := 16#00000001#;
   LIS_ENABLED : constant := 16#00000002#;
   LIS_VISITED : constant := 16#00000004#;
   LIS_HOTTRACK : constant := 16#00000008#;
   LIS_DEFAULTCOLORS : constant := 16#00000010#;
   LM_HITTEST : constant := WM_USER + 16#300#;
   LM_GETIDEALHEIGHT : constant := WM_USER + 16#301#;
   LM_SETITEM : constant := WM_USER + 16#302#;
   LM_GETITEM : constant := WM_USER + 16#303#;
   LM_GETIDEALSIZE : constant := LM_GETIDEALHEIGHT;
   LVS_ICON : constant := 16#0000#;
   LVS_REPORT : constant := 16#0001#;
   LVS_SMALLICON : constant := 16#0002#;
   LVS_LIST : constant := 16#0003#;
   LVS_TYPEMASK : constant := 16#0003#;
   LVS_SINGLESEL : constant := 16#0004#;
   LVS_SHOWSELALWAYS : constant := 16#0008#;
   LVS_SORTASCENDING : constant := 16#0010#;
   LVS_SORTDESCENDING : constant := 16#0020#;
   LVS_SHAREIMAGELISTS : constant := 16#0040#;
   LVS_NOLABELWRAP : constant := 16#0080#;
   LVS_AUTOARRANGE : constant := 16#0100#;
   LVS_EDITLABELS : constant := 16#0200#;
   LVS_OWNERDATA : constant := 16#1000#;
   LVS_NOSCROLL : constant := 16#2000#;
   LVS_TYPESTYLEMASK : constant := 16#fc00#;
   LVS_ALIGNTOP : constant := 16#0000#;
   LVS_ALIGNLEFT : constant := 16#0800#;
   LVS_ALIGNMASK : constant := 16#0c00#;
   LVS_OWNERDRAWFIXED : constant := 16#0400#;
   LVS_NOCOLUMNHEADER : constant := 16#4000#;
   LVS_NOSORTHEADER : constant := 16#8000#;
   LVM_GETBKCOLOR : constant := LVM_FIRST + 0;
   LVM_SETBKCOLOR : constant := LVM_FIRST + 1;
   LVM_GETIMAGELIST : constant := LVM_FIRST + 2;
   LVSIL_NORMAL : constant := 0;
   LVSIL_SMALL : constant := 1;
   LVSIL_STATE : constant := 2;
   LVSIL_GROUPHEADER : constant := 3;
   LVM_SETIMAGELIST : constant := LVM_FIRST + 3;
   LVM_GETITEMCOUNT : constant := LVM_FIRST + 4;
   LVIF_TEXT : constant := 16#00000001#;
   LVIF_IMAGE : constant := 16#00000002#;
   LVIF_PARAM : constant := 16#00000004#;
   LVIF_STATE : constant := 16#00000008#;
   LVIF_INDENT : constant := 16#00000010#;
   LVIF_NORECOMPUTE : constant := 16#00000800#;
   LVIF_GROUPID : constant := 16#00000100#;
   LVIF_COLUMNS : constant := 16#00000200#;
   LVIF_COLFMT : constant := 16#00010000#;
   LVIS_FOCUSED : constant := 16#0001#;
   LVIS_SELECTED : constant := 16#0002#;
   LVIS_CUT : constant := 16#0004#;
   LVIS_DROPHILITED : constant := 16#0008#;
   LVIS_GLOW : constant := 16#0010#;
   LVIS_ACTIVATING : constant := 16#0020#;
   LVIS_OVERLAYMASK : constant := 16#0F00#;
   LVIS_STATEIMAGEMASK : constant := 16#F000#;
   I_INDENTCALLBACK : constant := -1;
   I_GROUPIDCALLBACK : constant := -1;
   I_GROUPIDNONE : constant := -2;
   LPSTR_TEXTCALLBACKW : constant := 1;
   LPSTR_TEXTCALLBACKA : constant := 1;
   I_IMAGECALLBACK : constant := -1;
   I_IMAGENONE : constant := -2;
   I_COLUMNSCALLBACK : constant := 1;
   LVM_GETITEMA : constant := LVM_FIRST + 5;
   LVM_GETITEMW : constant := LVM_FIRST + 75;
   LVM_SETITEMA : constant := LVM_FIRST + 6;
   LVM_SETITEMW : constant := LVM_FIRST + 76;
   LVM_INSERTITEMA : constant := LVM_FIRST + 7;
   LVM_INSERTITEMW : constant := LVM_FIRST + 77;
   LVM_DELETEITEM : constant := LVM_FIRST + 8;
   LVM_DELETEALLITEMS : constant := LVM_FIRST + 9;
   LVM_GETCALLBACKMASK : constant := LVM_FIRST + 10;
   LVM_SETCALLBACKMASK : constant := LVM_FIRST + 11;
   LVNI_ALL : constant := 16#0000#;
   LVNI_FOCUSED : constant := 16#0001#;
   LVNI_SELECTED : constant := 16#0002#;
   LVNI_CUT : constant := 16#0004#;
   LVNI_DROPHILITED : constant := 16#0008#;
   LVNI_STATEMASK : constant := ( Interfaces.C.Unsigned( LVNI_FOCUSED )
       or Interfaces.C.Unsigned( LVNI_SELECTED )
       or Interfaces.C.Unsigned( LVNI_CUT )
       or Interfaces.C.Unsigned( LVNI_DROPHILITED ) );
   LVNI_VISIBLEORDER : constant := 16#0010#;
   LVNI_PREVIOUS : constant := 16#0020#;
   LVNI_VISIBLEONLY : constant := 16#0040#;
   LVNI_SAMEGROUPONLY : constant := 16#0080#;
   LVNI_ABOVE : constant := 16#0100#;
   LVNI_BELOW : constant := 16#0200#;
   LVNI_TOLEFT : constant := 16#0400#;
   LVNI_TORIGHT : constant := 16#0800#;
   LVNI_DIRECTIONMASK : constant := ( Interfaces.C.Unsigned( LVNI_ABOVE )
       or Interfaces.C.Unsigned( LVNI_BELOW )
       or Interfaces.C.Unsigned( LVNI_TOLEFT )
       or Interfaces.C.Unsigned( LVNI_TORIGHT ) );
   LVM_GETNEXTITEM : constant := LVM_FIRST + 12;
   LVFI_PARAM : constant := 16#0001#;
   LVFI_STRING : constant := 16#0002#;
   LVFI_SUBSTRING : constant := 16#0004#;
   LVFI_PARTIAL : constant := 16#0008#;
   LVFI_WRAP : constant := 16#0020#;
   LVFI_NEARESTXY : constant := 16#0040#;
   LVM_FINDITEMA : constant := LVM_FIRST + 13;
   LVM_FINDITEMW : constant := LVM_FIRST + 83;
   LVIR_BOUNDS : constant := 0;
   LVIR_ICON : constant := 1;
   LVIR_LABEL : constant := 2;
   LVIR_SELECTBOUNDS : constant := 3;
   LVM_GETITEMRECT : constant := LVM_FIRST + 14;
   LVM_SETITEMPOSITION : constant := LVM_FIRST + 15;
   LVM_GETITEMPOSITION : constant := LVM_FIRST + 16;
   LVM_GETSTRINGWIDTHA : constant := LVM_FIRST + 17;
   LVM_GETSTRINGWIDTHW : constant := LVM_FIRST + 87;
   LVHT_NOWHERE : constant := 16#00000001#;
   LVHT_ONITEMICON : constant := 16#00000002#;
   LVHT_ONITEMLABEL : constant := 16#00000004#;
   LVHT_ONITEMSTATEICON : constant := 16#00000008#;
   LVHT_ONITEM : constant := ( Interfaces.C.Unsigned( LVHT_ONITEMICON )
       or Interfaces.C.Unsigned( LVHT_ONITEMLABEL )
       or Interfaces.C.Unsigned( LVHT_ONITEMSTATEICON ) );
   LVHT_ABOVE : constant := 16#00000008#;
   LVHT_BELOW : constant := 16#00000010#;
   LVHT_TORIGHT : constant := 16#00000020#;
   LVHT_TOLEFT : constant := 16#00000040#;
   LVHT_EX_GROUP_HEADER : constant := 16#10000000#;
   LVHT_EX_GROUP_FOOTER : constant := 16#20000000#;
   LVHT_EX_GROUP_COLLAPSE : constant := 16#40000000#;
   LVHT_EX_GROUP_BACKGROUND : constant := 16#80000000#;
   LVHT_EX_GROUP_STATEICON : constant := 16#01000000#;
   LVHT_EX_GROUP_SUBSETLINK : constant := 16#02000000#;
   LVHT_EX_GROUP : constant := ( Interfaces.C.Unsigned( LVHT_EX_GROUP_BACKGROUND )
       or Interfaces.C.Unsigned( LVHT_EX_GROUP_COLLAPSE )
       or Interfaces.C.Unsigned( LVHT_EX_GROUP_FOOTER )
       or Interfaces.C.Unsigned( LVHT_EX_GROUP_HEADER )
       or Interfaces.C.Unsigned( LVHT_EX_GROUP_STATEICON )
       or Interfaces.C.Unsigned( LVHT_EX_GROUP_SUBSETLINK ) );
   LVHT_EX_ONCONTENTS : constant := 16#04000000#;
   LVHT_EX_FOOTER : constant := 16#08000000#;
   LVM_HITTEST : constant := LVM_FIRST + 18;
   LVM_ENSUREVISIBLE : constant := LVM_FIRST + 19;
   LVM_SCROLL : constant := LVM_FIRST + 20;
   LVM_REDRAWITEMS : constant := LVM_FIRST + 21;
   LVA_DEFAULT : constant := 16#0000#;
   LVA_ALIGNLEFT : constant := 16#0001#;
   LVA_ALIGNTOP : constant := 16#0002#;
   LVA_SNAPTOGRID : constant := 16#0005#;
   LVM_ARRANGE : constant := LVM_FIRST + 22;
   LVM_EDITLABELA : constant := LVM_FIRST + 23;
   LVM_EDITLABELW : constant := LVM_FIRST + 118;
   LVM_GETEDITCONTROL : constant := LVM_FIRST + 24;
   LVCF_FMT : constant := 16#0001#;
   LVCF_WIDTH : constant := 16#0002#;
   LVCF_TEXT : constant := 16#0004#;
   LVCF_SUBITEM : constant := 16#0008#;
   LVCF_IMAGE : constant := 16#0010#;
   LVCF_ORDER : constant := 16#0020#;
   LVCF_MINWIDTH : constant := 16#0040#;
   LVCF_DEFAULTWIDTH : constant := 16#0080#;
   LVCF_IDEALWIDTH : constant := 16#0100#;
   LVCFMT_LEFT : constant := 16#0000#;
   LVCFMT_RIGHT : constant := 16#0001#;
   LVCFMT_CENTER : constant := 16#0002#;
   LVCFMT_JUSTIFYMASK : constant := 16#0003#;
   LVCFMT_IMAGE : constant := 16#0800#;
   LVCFMT_BITMAP_ON_RIGHT : constant := 16#1000#;
   LVCFMT_COL_HAS_IMAGES : constant := 16#8000#;
   LVCFMT_FIXED_WIDTH : constant := 16#00100#;
   LVCFMT_NO_DPI_SCALE : constant := 16#40000#;
   LVCFMT_FIXED_RATIO : constant := 16#80000#;
   LVCFMT_LINE_BREAK : constant := 16#100000#;
   LVCFMT_FILL : constant := 16#200000#;
   LVCFMT_WRAP : constant := 16#400000#;
   LVCFMT_NO_TITLE : constant := 16#800000#;
   LVCFMT_TILE_PLACEMENTMASK : constant := ( Interfaces.C.Unsigned( LVCFMT_LINE_BREAK )
       or Interfaces.C.Unsigned( LVCFMT_FILL ) );
   LVCFMT_SPLITBUTTON : constant := 16#1000000#;
   LVM_GETCOLUMNA : constant := LVM_FIRST + 25;
   LVM_GETCOLUMNW : constant := LVM_FIRST + 95;
   LVM_SETCOLUMNA : constant := LVM_FIRST + 26;
   LVM_SETCOLUMNW : constant := LVM_FIRST + 96;
   LVM_INSERTCOLUMNA : constant := LVM_FIRST + 27;
   LVM_INSERTCOLUMNW : constant := LVM_FIRST + 97;
   LVM_DELETECOLUMN : constant := LVM_FIRST + 28;
   LVM_GETCOLUMNWIDTH : constant := LVM_FIRST + 29;
   LVSCW_AUTOSIZE : constant := -1;
   LVSCW_AUTOSIZE_USEHEADER : constant := -2;
   LVM_SETCOLUMNWIDTH : constant := LVM_FIRST + 30;
   LVM_GETHEADER : constant := LVM_FIRST + 31;
   LVM_CREATEDRAGIMAGE : constant := LVM_FIRST + 33;
   LVM_GETVIEWRECT : constant := LVM_FIRST + 34;
   LVM_GETTEXTCOLOR : constant := LVM_FIRST + 35;
   LVM_SETTEXTCOLOR : constant := LVM_FIRST + 36;
   LVM_GETTEXTBKCOLOR : constant := LVM_FIRST + 37;
   LVM_SETTEXTBKCOLOR : constant := LVM_FIRST + 38;
   LVM_GETTOPINDEX : constant := LVM_FIRST + 39;
   LVM_GETCOUNTPERPAGE : constant := LVM_FIRST + 40;
   LVM_GETORIGIN : constant := LVM_FIRST + 41;
   LVM_UPDATE : constant := LVM_FIRST + 42;
   LVM_SETITEMSTATE : constant := LVM_FIRST + 43;
   LVM_GETITEMSTATE : constant := LVM_FIRST + 44;
   LVM_GETITEMTEXTA : constant := LVM_FIRST + 45;
   LVM_GETITEMTEXTW : constant := LVM_FIRST + 115;
   LVM_SETITEMTEXTA : constant := LVM_FIRST + 46;
   LVM_SETITEMTEXTW : constant := LVM_FIRST + 116;
   LVSICF_NOINVALIDATEALL : constant := 16#00000001#;
   LVSICF_NOSCROLL : constant := 16#00000002#;
   LVM_SETITEMCOUNT : constant := LVM_FIRST + 47;
   LVM_SORTITEMS : constant := LVM_FIRST + 48;
   LVM_SETITEMPOSITION32 : constant := LVM_FIRST + 49;
   LVM_GETSELECTEDCOUNT : constant := LVM_FIRST + 50;
   LVM_GETITEMSPACING : constant := LVM_FIRST + 51;
   LVM_GETISEARCHSTRINGA : constant := LVM_FIRST + 52;
   LVM_GETISEARCHSTRINGW : constant := LVM_FIRST + 117;
   LVM_SETICONSPACING : constant := LVM_FIRST + 53;
   LVM_SETEXTENDEDLISTVIEWSTYLE : constant := LVM_FIRST + 54;
   LVM_GETEXTENDEDLISTVIEWSTYLE : constant := LVM_FIRST + 55;
   LVS_EX_GRIDLINES : constant := 16#00000001#;
   LVS_EX_SUBITEMIMAGES : constant := 16#00000002#;
   LVS_EX_CHECKBOXES : constant := 16#00000004#;
   LVS_EX_TRACKSELECT : constant := 16#00000008#;
   LVS_EX_HEADERDRAGDROP : constant := 16#00000010#;
   LVS_EX_FULLROWSELECT : constant := 16#00000020#;
   LVS_EX_ONECLICKACTIVATE : constant := 16#00000040#;
   LVS_EX_TWOCLICKACTIVATE : constant := 16#00000080#;
   LVS_EX_FLATSB : constant := 16#00000100#;
   LVS_EX_REGIONAL : constant := 16#00000200#;
   LVS_EX_INFOTIP : constant := 16#00000400#;
   LVS_EX_UNDERLINEHOT : constant := 16#00000800#;
   LVS_EX_UNDERLINECOLD : constant := 16#00001000#;
   LVS_EX_MULTIWORKAREAS : constant := 16#00002000#;
   LVS_EX_LABELTIP : constant := 16#00004000#;
   LVS_EX_BORDERSELECT : constant := 16#00008000#;
   LVS_EX_DOUBLEBUFFER : constant := 16#00010000#;
   LVS_EX_HIDELABELS : constant := 16#00020000#;
   LVS_EX_SINGLEROW : constant := 16#00040000#;
   LVS_EX_SNAPTOGRID : constant := 16#00080000#;
   LVS_EX_SIMPLESELECT : constant := 16#00100000#;
   LVS_EX_JUSTIFYCOLUMNS : constant := 16#00200000#;
   LVS_EX_TRANSPARENTBKGND : constant := 16#00400000#;
   LVS_EX_TRANSPARENTSHADOWTEXT : constant := 16#00800000#;
   LVS_EX_AUTOAUTOARRANGE : constant := 16#01000000#;
   LVS_EX_HEADERINALLVIEWS : constant := 16#02000000#;
   LVS_EX_AUTOCHECKSELECT : constant := 16#08000000#;
   LVS_EX_AUTOSIZECOLUMNS : constant := 16#10000000#;
   LVS_EX_COLUMNSNAPPOINTS : constant := 16#40000000#;
   LVS_EX_COLUMNOVERFLOW : constant := 16#80000000#;
   LVM_GETSUBITEMRECT : constant := LVM_FIRST + 56;
   LVM_SUBITEMHITTEST : constant := LVM_FIRST + 57;
   LVM_SETCOLUMNORDERARRAY : constant := LVM_FIRST + 58;
   LVM_GETCOLUMNORDERARRAY : constant := LVM_FIRST + 59;
   LVM_SETHOTITEM : constant := LVM_FIRST + 60;
   LVM_GETHOTITEM : constant := LVM_FIRST + 61;
   LVM_SETHOTCURSOR : constant := LVM_FIRST + 62;
   LVM_GETHOTCURSOR : constant := LVM_FIRST + 63;
   LVM_APPROXIMATEVIEWRECT : constant := LVM_FIRST + 64;
   LV_MAX_WORKAREAS : constant := 16;
   LVM_SETWORKAREAS : constant := LVM_FIRST + 65;
   LVM_GETWORKAREAS : constant := LVM_FIRST + 70;
   LVM_GETNUMBEROFWORKAREAS : constant := LVM_FIRST + 73;
   LVM_GETSELECTIONMARK : constant := LVM_FIRST + 66;
   LVM_SETSELECTIONMARK : constant := LVM_FIRST + 67;
   LVM_SETHOVERTIME : constant := LVM_FIRST + 71;
   LVM_GETHOVERTIME : constant := LVM_FIRST + 72;
   LVM_SETTOOLTIPS : constant := LVM_FIRST + 74;
   LVM_GETTOOLTIPS : constant := LVM_FIRST + 78;
   LVM_SORTITEMSEX : constant := LVM_FIRST + 81;
   LVBKIF_SOURCE_NONE : constant := 16#00000000#;
   LVBKIF_SOURCE_HBITMAP : constant := 16#00000001#;
   LVBKIF_SOURCE_URL : constant := 16#00000002#;
   LVBKIF_SOURCE_MASK : constant := 16#00000003#;
   LVBKIF_STYLE_NORMAL : constant := 16#00000000#;
   LVBKIF_STYLE_TILE : constant := 16#00000010#;
   LVBKIF_STYLE_MASK : constant := 16#00000010#;
   LVBKIF_FLAG_TILEOFFSET : constant := 16#00000100#;
   LVBKIF_TYPE_WATERMARK : constant := 16#10000000#;
   LVBKIF_FLAG_ALPHABLEND : constant := 16#20000000#;
   LVM_SETBKIMAGEA : constant := LVM_FIRST + 68;
   LVM_SETBKIMAGEW : constant := LVM_FIRST + 138;
   LVM_GETBKIMAGEA : constant := LVM_FIRST + 69;
   LVM_GETBKIMAGEW : constant := LVM_FIRST + 139;
   LVM_SETSELECTEDCOLUMN : constant := LVM_FIRST + 140;
   LV_VIEW_ICON : constant := 16#0000#;
   LV_VIEW_DETAILS : constant := 16#0001#;
   LV_VIEW_SMALLICON : constant := 16#0002#;
   LV_VIEW_LIST : constant := 16#0003#;
   LV_VIEW_TILE : constant := 16#0004#;
   LV_VIEW_MAX : constant := 16#0004#;
   LVM_SETVIEW : constant := LVM_FIRST + 142;
   LVM_GETVIEW : constant := LVM_FIRST + 143;
   LVGF_NONE : constant := 16#00000000#;
   LVGF_HEADER : constant := 16#00000001#;
   LVGF_FOOTER : constant := 16#00000002#;
   LVGF_STATE : constant := 16#00000004#;
   LVGF_ALIGN : constant := 16#00000008#;
   LVGF_GROUPID : constant := 16#00000010#;
   LVGF_SUBTITLE : constant := 16#00000100#;
   LVGF_TASK : constant := 16#00000200#;
   LVGF_DESCRIPTIONTOP : constant := 16#00000400#;
   LVGF_DESCRIPTIONBOTTOM : constant := 16#00000800#;
   LVGF_TITLEIMAGE : constant := 16#00001000#;
   LVGF_EXTENDEDIMAGE : constant := 16#00002000#;
   LVGF_ITEMS : constant := 16#00004000#;
   LVGF_SUBSET : constant := 16#00008000#;
   LVGF_SUBSETITEMS : constant := 16#00010000#;
   LVGS_NORMAL : constant := 16#00000000#;
   LVGS_COLLAPSED : constant := 16#00000001#;
   LVGS_HIDDEN : constant := 16#00000002#;
   LVGS_NOHEADER : constant := 16#00000004#;
   LVGS_COLLAPSIBLE : constant := 16#00000008#;
   LVGS_FOCUSED : constant := 16#00000010#;
   LVGS_SELECTED : constant := 16#00000020#;
   LVGS_SUBSETED : constant := 16#00000040#;
   LVGS_SUBSETLINKFOCUSED : constant := 16#00000080#;
   LVGA_HEADER_LEFT : constant := 16#00000001#;
   LVGA_HEADER_CENTER : constant := 16#00000002#;
   LVGA_HEADER_RIGHT : constant := 16#00000004#;
   LVGA_FOOTER_LEFT : constant := 16#00000008#;
   LVGA_FOOTER_CENTER : constant := 16#00000010#;
   LVGA_FOOTER_RIGHT : constant := 16#00000020#;
   LVM_INSERTGROUP : constant := LVM_FIRST + 145;
   LVM_SETGROUPINFO : constant := LVM_FIRST + 147;
   LVM_GETGROUPINFO : constant := LVM_FIRST + 149;
   LVM_REMOVEGROUP : constant := LVM_FIRST + 150;
   LVM_MOVEGROUP : constant := LVM_FIRST + 151;
   LVM_GETGROUPCOUNT : constant := LVM_FIRST + 152;
   LVM_GETGROUPINFOBYINDEX : constant := LVM_FIRST + 153;
   LVM_MOVEITEMTOGROUP : constant := LVM_FIRST + 154;
   LVGGR_GROUP : constant := 0;
   LVGGR_HEADER : constant := 1;
   LVGGR_LABEL : constant := 2;
   LVGGR_SUBSETLINK : constant := 3;
   LVM_GETGROUPRECT : constant := LVM_FIRST + 98;
   LVGMF_NONE : constant := 16#00000000#;
   LVGMF_BORDERSIZE : constant := 16#00000001#;
   LVGMF_BORDERCOLOR : constant := 16#00000002#;
   LVGMF_TEXTCOLOR : constant := 16#00000004#;
   LVM_SETGROUPMETRICS : constant := LVM_FIRST + 155;
   LVM_GETGROUPMETRICS : constant := LVM_FIRST + 156;
   LVM_ENABLEGROUPVIEW : constant := LVM_FIRST + 157;
   LVM_SORTGROUPS : constant := LVM_FIRST + 158;
   LVM_INSERTGROUPSORTED : constant := LVM_FIRST + 159;
   LVM_REMOVEALLGROUPS : constant := LVM_FIRST + 160;
   LVM_HASGROUP : constant := LVM_FIRST + 161;
   LVM_GETGROUPSTATE : constant := LVM_FIRST + 92;
   LVM_GETFOCUSEDGROUP : constant := LVM_FIRST + 93;
   LVTVIF_AUTOSIZE : constant := 16#00000000#;
   LVTVIF_FIXEDWIDTH : constant := 16#00000001#;
   LVTVIF_FIXEDHEIGHT : constant := 16#00000002#;
   LVTVIF_FIXEDSIZE : constant := 16#00000003#;
   LVTVIF_EXTENDED : constant := 16#00000004#;
   LVTVIM_TILESIZE : constant := 16#00000001#;
   LVTVIM_COLUMNS : constant := 16#00000002#;
   LVTVIM_LABELMARGIN : constant := 16#00000004#;
   LVM_SETTILEVIEWINFO : constant := LVM_FIRST + 162;
   LVM_GETTILEVIEWINFO : constant := LVM_FIRST + 163;
   LVM_SETTILEINFO : constant := LVM_FIRST + 164;
   LVM_GETTILEINFO : constant := LVM_FIRST + 165;
   LVIM_AFTER : constant := 16#00000001#;
   LVM_SETINSERTMARK : constant := LVM_FIRST + 166;
   LVM_GETINSERTMARK : constant := LVM_FIRST + 167;
   LVM_INSERTMARKHITTEST : constant := LVM_FIRST + 168;
   LVM_GETINSERTMARKRECT : constant := LVM_FIRST + 169;
   LVM_SETINSERTMARKCOLOR : constant := LVM_FIRST + 170;
   LVM_GETINSERTMARKCOLOR : constant := LVM_FIRST + 171;
   LVM_SETINFOTIP : constant := LVM_FIRST + 173;
   LVM_GETSELECTEDCOLUMN : constant := LVM_FIRST + 174;
   LVM_ISGROUPVIEWENABLED : constant := LVM_FIRST + 175;
   LVM_GETOUTLINECOLOR : constant := LVM_FIRST + 176;
   LVM_SETOUTLINECOLOR : constant := LVM_FIRST + 177;
   LVM_CANCELEDITLABEL : constant := LVM_FIRST + 179;
   LVM_MAPINDEXTOID : constant := LVM_FIRST + 180;
   LVM_MAPIDTOINDEX : constant := LVM_FIRST + 181;
   LVM_ISITEMVISIBLE : constant := LVM_FIRST + 182;
   LVM_GETEMPTYTEXT : constant := LVM_FIRST + 204;
   LVM_GETFOOTERRECT : constant := LVM_FIRST + 205;
   LVFF_ITEMCOUNT : constant := 16#00000001#;
   LVM_GETFOOTERINFO : constant := LVM_FIRST + 206;
   LVM_GETFOOTERITEMRECT : constant := LVM_FIRST + 207;
   LVFIF_TEXT : constant := 16#00000001#;
   LVFIF_STATE : constant := 16#00000002#;
   LVFIS_FOCUSED : constant := 16#0001#;
   LVM_GETFOOTERITEM : constant := LVM_FIRST + 208;
   LVM_GETITEMINDEXRECT : constant := LVM_FIRST + 209;
   LVM_SETITEMINDEXSTATE : constant := LVM_FIRST + 210;
   LVM_GETNEXTITEMINDEX : constant := LVM_FIRST + 211;
   LVKF_ALT : constant := 16#0001#;
   LVKF_CONTROL : constant := 16#0002#;
   LVKF_SHIFT : constant := 16#0004#;
   LVCDI_ITEM : constant := 16#00000000#;
   LVCDI_GROUP : constant := 16#00000001#;
   LVCDI_ITEMSLIST : constant := 16#00000002#;
   LVCDRF_NOSELECT : constant := 16#00010000#;
   LVCDRF_NOGROUPFRAME : constant := 16#00020000#;
   LVIF_DI_SETITEM : constant := 16#1000#;
   -- #include <pshpack1.h>
   -- #include <CommCtrl.h>
   -- #include <poppack.h>
   -- #include <CommCtrl.h>
   LVGIT_UNFOLDED : constant := 16#0001#;
   LVNSCH_DEFAULT : constant := -1;
   LVNSCH_ERROR : constant := -2;
   LVNSCH_IGNORE : constant := -3;
   EMF_CENTERED : constant := 16#00000001#;
   TVS_HASBUTTONS : constant := 16#0001#;
   TVS_HASLINES : constant := 16#0002#;
   TVS_LINESATROOT : constant := 16#0004#;
   TVS_EDITLABELS : constant := 16#0008#;
   TVS_DISABLEDRAGDROP : constant := 16#0010#;
   TVS_SHOWSELALWAYS : constant := 16#0020#;
   TVS_RTLREADING : constant := 16#0040#;
   TVS_NOTOOLTIPS : constant := 16#0080#;
   TVS_CHECKBOXES : constant := 16#0100#;
   TVS_TRACKSELECT : constant := 16#0200#;
   TVS_SINGLEEXPAND : constant := 16#0400#;
   TVS_INFOTIP : constant := 16#0800#;
   TVS_FULLROWSELECT : constant := 16#1000#;
   TVS_NOSCROLL : constant := 16#2000#;
   TVS_NONEVENHEIGHT : constant := 16#4000#;
   TVS_NOHSCROLL : constant := 16#8000#;
   TVS_EX_NOSINGLECOLLAPSE : constant := 16#0001#;
   TVS_EX_MULTISELECT : constant := 16#0002#;
   TVS_EX_DOUBLEBUFFER : constant := 16#0004#;
   TVS_EX_NOINDENTSTATE : constant := 16#0008#;
   TVS_EX_RICHTOOLTIP : constant := 16#0010#;
   TVS_EX_AUTOHSCROLL : constant := 16#0020#;
   TVS_EX_FADEINOUTEXPANDOS : constant := 16#0040#;
   TVS_EX_PARTIALCHECKBOXES : constant := 16#0080#;
   TVS_EX_EXCLUSIONCHECKBOXES : constant := 16#0100#;
   TVS_EX_DIMMEDCHECKBOXES : constant := 16#0200#;
   TVS_EX_DRAWIMAGEASYNC : constant := 16#0400#;
   TVIF_TEXT : constant := 16#0001#;
   TVIF_IMAGE : constant := 16#0002#;
   TVIF_PARAM : constant := 16#0004#;
   TVIF_STATE : constant := 16#0008#;
   TVIF_HANDLE : constant := 16#0010#;
   TVIF_SELECTEDIMAGE : constant := 16#0020#;
   TVIF_CHILDREN : constant := 16#0040#;
   TVIF_INTEGRAL : constant := 16#0080#;
   TVIF_STATEEX : constant := 16#0100#;
   TVIF_EXPANDEDIMAGE : constant := 16#0200#;
   TVIS_SELECTED : constant := 16#0002#;
   TVIS_CUT : constant := 16#0004#;
   TVIS_DROPHILITED : constant := 16#0008#;
   TVIS_BOLD : constant := 16#0010#;
   TVIS_EXPANDED : constant := 16#0020#;
   TVIS_EXPANDEDONCE : constant := 16#0040#;
   TVIS_EXPANDPARTIAL : constant := 16#0080#;
   TVIS_OVERLAYMASK : constant := 16#0F00#;
   TVIS_STATEIMAGEMASK : constant := 16#F000#;
   TVIS_USERMASK : constant := 16#F000#;
   TVIS_EX_FLAT : constant := 16#0001#;
   TVIS_EX_DISABLED : constant := 16#0002#;
   TVIS_EX_ALL : constant := 16#0002#;
   I_CHILDRENCALLBACK : constant := -1;
   I_CHILDRENAUTO : constant := -2;
   TVM_INSERTITEMA : constant := TV_FIRST + 0;
   TVM_INSERTITEMW : constant := TV_FIRST + 50;
   TVM_DELETEITEM : constant := TV_FIRST + 1;
   TVM_EXPAND : constant := TV_FIRST + 2;
   TVE_COLLAPSE : constant := 16#0001#;
   TVE_EXPAND : constant := 16#0002#;
   TVE_TOGGLE : constant := 16#0003#;
   TVE_EXPANDPARTIAL : constant := 16#4000#;
   TVE_COLLAPSERESET : constant := 16#8000#;
   TVM_GETITEMRECT : constant := TV_FIRST + 4;
   TVM_GETCOUNT : constant := TV_FIRST + 5;
   TVM_GETINDENT : constant := TV_FIRST + 6;
   TVM_SETINDENT : constant := TV_FIRST + 7;
   TVM_GETIMAGELIST : constant := TV_FIRST + 8;
   TVSIL_NORMAL : constant := 0;
   TVSIL_STATE : constant := 2;
   TVM_SETIMAGELIST : constant := TV_FIRST + 9;
   TVM_GETNEXTITEM : constant := TV_FIRST + 10;
   TVGN_ROOT : constant := 16#0000#;
   TVGN_NEXT : constant := 16#0001#;
   TVGN_PREVIOUS : constant := 16#0002#;
   TVGN_PARENT : constant := 16#0003#;
   TVGN_CHILD : constant := 16#0004#;
   TVGN_FIRSTVISIBLE : constant := 16#0005#;
   TVGN_NEXTVISIBLE : constant := 16#0006#;
   TVGN_PREVIOUSVISIBLE : constant := 16#0007#;
   TVGN_DROPHILITE : constant := 16#0008#;
   TVGN_CARET : constant := 16#0009#;
   TVGN_LASTVISIBLE : constant := 16#000A#;
   TVGN_NEXTSELECTED : constant := 16#000B#;
   TVSI_NOSINGLEEXPAND : constant := 16#8000#;
   TVM_SELECTITEM : constant := TV_FIRST + 11;
   TVM_GETITEMA : constant := TV_FIRST + 12;
   TVM_GETITEMW : constant := TV_FIRST + 62;
   TVM_SETITEMA : constant := TV_FIRST + 13;
   TVM_SETITEMW : constant := TV_FIRST + 63;
   TVM_EDITLABELA : constant := TV_FIRST + 14;
   TVM_EDITLABELW : constant := TV_FIRST + 65;
   TVM_GETEDITCONTROL : constant := TV_FIRST + 15;
   TVM_GETVISIBLECOUNT : constant := TV_FIRST + 16;
   TVM_HITTEST : constant := TV_FIRST + 17;
   TVHT_NOWHERE : constant := 16#0001#;
   TVHT_ONITEMICON : constant := 16#0002#;
   TVHT_ONITEMLABEL : constant := 16#0004#;
   -- [Todo] TVHT_ONITEM ( TVHT_ONITEMICON | TVHT_ONITEMLABEL | TVHT_ONITEMSTATEICON );
   TVHT_ONITEMINDENT : constant := 16#0008#;
   TVHT_ONITEMBUTTON : constant := 16#0010#;
   TVHT_ONITEMRIGHT : constant := 16#0020#;
   TVHT_ONITEMSTATEICON : constant := 16#0040#;
   TVHT_ABOVE : constant := 16#0100#;
   TVHT_BELOW : constant := 16#0200#;
   TVHT_TORIGHT : constant := 16#0400#;
   TVHT_TOLEFT : constant := 16#0800#;
   TVM_CREATEDRAGIMAGE : constant := TV_FIRST + 18;
   TVM_SORTCHILDREN : constant := TV_FIRST + 19;
   TVM_ENSUREVISIBLE : constant := TV_FIRST + 20;
   TVM_SORTCHILDRENCB : constant := TV_FIRST + 21;
   TVM_ENDEDITLABELNOW : constant := TV_FIRST + 22;
   TVM_GETISEARCHSTRINGA : constant := TV_FIRST + 23;
   TVM_GETISEARCHSTRINGW : constant := TV_FIRST + 64;
   TVM_SETTOOLTIPS : constant := TV_FIRST + 24;
   TVM_GETTOOLTIPS : constant := TV_FIRST + 25;
   TVM_SETINSERTMARK : constant := TV_FIRST + 26;
   TVM_SETITEMHEIGHT : constant := TV_FIRST + 27;
   TVM_GETITEMHEIGHT : constant := TV_FIRST + 28;
   TVM_SETBKCOLOR : constant := TV_FIRST + 29;
   TVM_SETTEXTCOLOR : constant := TV_FIRST + 30;
   TVM_GETBKCOLOR : constant := TV_FIRST + 31;
   TVM_GETTEXTCOLOR : constant := TV_FIRST + 32;
   TVM_SETSCROLLTIME : constant := TV_FIRST + 33;
   TVM_GETSCROLLTIME : constant := TV_FIRST + 34;
   TVM_SETINSERTMARKCOLOR : constant := TV_FIRST + 37;
   TVM_GETINSERTMARKCOLOR : constant := TV_FIRST + 38;
   TVM_SETBORDER : constant := TV_FIRST + 35;
   TVSBF_XBORDER : constant := 16#00000001#;
   TVSBF_YBORDER : constant := 16#00000002#;
   TVM_GETITEMSTATE : constant := TV_FIRST + 39;
   TVM_SETLINECOLOR : constant := TV_FIRST + 40;
   TVM_GETLINECOLOR : constant := TV_FIRST + 41;
   TVM_MAPACCIDTOHTREEITEM : constant := TV_FIRST + 42;
   TVM_MAPHTREEITEMTOACCID : constant := TV_FIRST + 43;
   TVM_SETEXTENDEDSTYLE : constant := TV_FIRST + 44;
   TVM_GETEXTENDEDSTYLE : constant := TV_FIRST + 45;
   TVM_SETAUTOSCROLLINFO : constant := TV_FIRST + 59;
   TVM_SETHOT : constant := TV_FIRST + 58;
   TVM_GETSELECTEDCOUNT : constant := TV_FIRST + 70;
   TVM_SHOWINFOTIP : constant := TV_FIRST + 71;
   TVM_GETITEMPARTRECT : constant := TV_FIRST + 72;
   TVC_UNKNOWN : constant := 16#0000#;
   TVC_BYMOUSE : constant := 16#0001#;
   TVC_BYKEYBOARD : constant := 16#0002#;
   TVIF_DI_SETITEM : constant := 16#1000#;
   TVNRET_DEFAULT : constant := 0;
   TVNRET_SKIPOLD : constant := 1;
   TVNRET_SKIPNEW : constant := 2;
   -- #include <pshpack1.h>
   -- #include <CommCtrl.h>
   -- #include <poppack.h>
   -- #include <CommCtrl.h>
   TVCDRF_NOIMAGES : constant := 16#00010000#;
   CBEIF_TEXT : constant := 16#00000001#;
   CBEIF_IMAGE : constant := 16#00000002#;
   CBEIF_SELECTEDIMAGE : constant := 16#00000004#;
   CBEIF_OVERLAY : constant := 16#00000008#;
   CBEIF_INDENT : constant := 16#00000010#;
   CBEIF_LPARAM : constant := 16#00000020#;
   CBEIF_DI_SETITEM : constant := 16#10000000#;
   CBEM_INSERTITEMA : constant := WM_USER + 1;
   CBEM_SETIMAGELIST : constant := WM_USER + 2;
   CBEM_GETIMAGELIST : constant := WM_USER + 3;
   CBEM_GETITEMA : constant := WM_USER + 4;
   CBEM_SETITEMA : constant := WM_USER + 5;
   CBEM_GETCOMBOCONTROL : constant := WM_USER + 6;
   CBEM_GETEDITCONTROL : constant := WM_USER + 7;
   CBEM_SETEXSTYLE : constant := WM_USER + 8;
   CBEM_SETEXTENDEDSTYLE : constant := WM_USER + 14;
   CBEM_GETEXSTYLE : constant := WM_USER + 9;
   CBEM_GETEXTENDEDSTYLE : constant := WM_USER + 9;
   CBEM_HASEDITCHANGED : constant := WM_USER + 10;
   CBEM_INSERTITEMW : constant := WM_USER + 11;
   CBEM_SETITEMW : constant := WM_USER + 12;
   CBEM_GETITEMW : constant := WM_USER + 13;
   CBES_EX_NOEDITIMAGE : constant := 16#00000001#;
   CBES_EX_NOEDITIMAGEINDENT : constant := 16#00000002#;
   CBES_EX_PATHWORDBREAKPROC : constant := 16#00000004#;
   CBES_EX_NOSIZELIMIT : constant := 16#00000008#;
   CBES_EX_CASESENSITIVE : constant := 16#00000010#;
   CBES_EX_TEXTENDELLIPSIS : constant := 16#00000020#;
   CBENF_KILLFOCUS : constant := 1;
   CBENF_RETURN : constant := 2;
   CBENF_ESCAPE : constant := 3;
   CBENF_DROPDOWN : constant := 4;
   CBEMAXSTRLEN : constant := 260;
   TCS_SCROLLOPPOSITE : constant := 16#0001#;
   TCS_BOTTOM : constant := 16#0002#;
   TCS_RIGHT : constant := 16#0002#;
   TCS_MULTISELECT : constant := 16#0004#;
   TCS_FLATBUTTONS : constant := 16#0008#;
   TCS_FORCEICONLEFT : constant := 16#0010#;
   TCS_FORCELABELLEFT : constant := 16#0020#;
   TCS_HOTTRACK : constant := 16#0040#;
   TCS_VERTICAL : constant := 16#0080#;
   TCS_TABS : constant := 16#0000#;
   TCS_BUTTONS : constant := 16#0100#;
   TCS_SINGLELINE : constant := 16#0000#;
   TCS_MULTILINE : constant := 16#0200#;
   TCS_RIGHTJUSTIFY : constant := 16#0000#;
   TCS_FIXEDWIDTH : constant := 16#0400#;
   TCS_RAGGEDRIGHT : constant := 16#0800#;
   TCS_FOCUSONBUTTONDOWN : constant := 16#1000#;
   TCS_OWNERDRAWFIXED : constant := 16#2000#;
   TCS_TOOLTIPS : constant := 16#4000#;
   TCS_FOCUSNEVER : constant := 16#8000#;
   TCS_EX_FLATSEPARATORS : constant := 16#00000001#;
   TCS_EX_REGISTERDROP : constant := 16#00000002#;
   TCM_GETIMAGELIST : constant := TCM_FIRST + 2;
   TCM_SETIMAGELIST : constant := TCM_FIRST + 3;
   TCM_GETITEMCOUNT : constant := TCM_FIRST + 4;
   TCIF_TEXT : constant := 16#0001#;
   TCIF_IMAGE : constant := 16#0002#;
   TCIF_RTLREADING : constant := 16#0004#;
   TCIF_PARAM : constant := 16#0008#;
   TCIF_STATE : constant := 16#0010#;
   TCIS_BUTTONPRESSED : constant := 16#0001#;
   TCIS_HIGHLIGHTED : constant := 16#0002#;
   TCM_GETITEMA : constant := TCM_FIRST + 5;
   TCM_GETITEMW : constant := TCM_FIRST + 60;
   TCM_SETITEMA : constant := TCM_FIRST + 6;
   TCM_SETITEMW : constant := TCM_FIRST + 61;
   TCM_INSERTITEMA : constant := TCM_FIRST + 7;
   TCM_INSERTITEMW : constant := TCM_FIRST + 62;
   TCM_DELETEITEM : constant := TCM_FIRST + 8;
   TCM_DELETEALLITEMS : constant := TCM_FIRST + 9;
   TCM_GETITEMRECT : constant := TCM_FIRST + 10;
   TCM_GETCURSEL : constant := TCM_FIRST + 11;
   TCM_SETCURSEL : constant := TCM_FIRST + 12;
   TCHT_NOWHERE : constant := 16#0001#;
   TCHT_ONITEMICON : constant := 16#0002#;
   TCHT_ONITEMLABEL : constant := 16#0004#;
   TCHT_ONITEM : constant := ( Interfaces.C.Unsigned( TCHT_ONITEMICON )
       or Interfaces.C.Unsigned( TCHT_ONITEMLABEL ) );
   TCM_HITTEST : constant := TCM_FIRST + 13;
   TCM_SETITEMEXTRA : constant := TCM_FIRST + 14;
   TCM_ADJUSTRECT : constant := TCM_FIRST + 40;
   TCM_SETITEMSIZE : constant := TCM_FIRST + 41;
   TCM_REMOVEIMAGE : constant := TCM_FIRST + 42;
   TCM_SETPADDING : constant := TCM_FIRST + 43;
   TCM_GETROWCOUNT : constant := TCM_FIRST + 44;
   TCM_GETTOOLTIPS : constant := TCM_FIRST + 45;
   TCM_SETTOOLTIPS : constant := TCM_FIRST + 46;
   TCM_GETCURFOCUS : constant := TCM_FIRST + 47;
   TCM_SETCURFOCUS : constant := TCM_FIRST + 48;
   TCM_SETMINTABWIDTH : constant := TCM_FIRST + 49;
   TCM_DESELECTALL : constant := TCM_FIRST + 50;
   TCM_HIGHLIGHTITEM : constant := TCM_FIRST + 51;
   TCM_SETEXTENDEDSTYLE : constant := TCM_FIRST + 52;
   TCM_GETEXTENDEDSTYLE : constant := TCM_FIRST + 53;
   -- #include <pshpack1.h>
   -- #include <CommCtrl.h>
   -- #include <poppack.h>
   -- #include <CommCtrl.h>
   ACS_CENTER : constant := 16#0001#;
   ACS_TRANSPARENT : constant := 16#0002#;
   ACS_AUTOPLAY : constant := 16#0004#;
   ACS_TIMER : constant := 16#0008#;
   ACM_OPENA : constant := WM_USER + 100;
   ACM_OPENW : constant := WM_USER + 103;
   ACM_PLAY : constant := WM_USER + 101;
   ACM_STOP : constant := WM_USER + 102;
   ACM_ISPLAYING : constant := WM_USER + 104;
   ACN_START : constant := 1;
   ACN_STOP : constant := 2;
   MCM_FIRST : constant := 16#1000#;
   MCM_GETCURSEL : constant := MCM_FIRST + 1;
   MCM_SETCURSEL : constant := MCM_FIRST + 2;
   MCM_GETMAXSELCOUNT : constant := MCM_FIRST + 3;
   MCM_SETMAXSELCOUNT : constant := MCM_FIRST + 4;
   MCM_GETSELRANGE : constant := MCM_FIRST + 5;
   MCM_SETSELRANGE : constant := MCM_FIRST + 6;
   MCM_GETMONTHRANGE : constant := MCM_FIRST + 7;
   MCM_SETDAYSTATE : constant := MCM_FIRST + 8;
   MCM_GETMINREQRECT : constant := MCM_FIRST + 9;
   MCM_SETCOLOR : constant := MCM_FIRST + 10;
   MCM_GETCOLOR : constant := MCM_FIRST + 11;
   MCSC_BACKGROUND : constant := 0;
   MCSC_TEXT : constant := 1;
   MCSC_TITLEBK : constant := 2;
   MCSC_TITLETEXT : constant := 3;
   MCSC_MONTHBK : constant := 4;
   MCSC_TRAILINGTEXT : constant := 5;
   MCM_SETTODAY : constant := MCM_FIRST + 12;
   MCM_GETTODAY : constant := MCM_FIRST + 13;
   MCM_HITTEST : constant := MCM_FIRST + 14;
   MCHT_TITLE : constant := 16#00010000#;
   MCHT_CALENDAR : constant := 16#00020000#;
   MCHT_TODAYLINK : constant := 16#00030000#;
   MCHT_CALENDARCONTROL : constant := 16#00100000#;
   MCHT_NEXT : constant := 16#01000000#;
   MCHT_PREV : constant := 16#02000000#;
   MCHT_NOWHERE : constant := 16#00000000#;
   MCHT_TITLEBK : constant := MCHT_TITLE;
   MCHT_TITLEMONTH : constant := ( Interfaces.C.Unsigned( MCHT_TITLE ) or 16#0001# );
   MCHT_TITLEYEAR : constant := ( Interfaces.C.Unsigned( MCHT_TITLE ) or 16#0002# );
   MCHT_TITLEBTNNEXT : constant := ( Interfaces.C.Unsigned( MCHT_TITLE )
       or Interfaces.C.Unsigned( MCHT_NEXT )
       or 16#0003# );
   MCHT_TITLEBTNPREV : constant := ( Interfaces.C.Unsigned( MCHT_TITLE )
       or Interfaces.C.Unsigned( MCHT_PREV )
       or 16#0003# );
   MCHT_CALENDARBK : constant := MCHT_CALENDAR;
   MCHT_CALENDARDATE : constant := ( Interfaces.C.Unsigned( MCHT_CALENDAR ) or 16#0001# );
   MCHT_CALENDARDATENEXT : constant := ( Interfaces.C.Unsigned( MCHT_CALENDARDATE )
       or Interfaces.C.Unsigned( MCHT_NEXT ) );
   MCHT_CALENDARDATEPREV : constant := ( Interfaces.C.Unsigned( MCHT_CALENDARDATE )
       or Interfaces.C.Unsigned( MCHT_PREV ) );
   MCHT_CALENDARDAY : constant := ( Interfaces.C.Unsigned( MCHT_CALENDAR ) or 16#0002# );
   MCHT_CALENDARWEEKNUM : constant := ( Interfaces.C.Unsigned( MCHT_CALENDAR ) or 16#0003# );
   MCHT_CALENDARDATEMIN : constant := ( Interfaces.C.Unsigned( MCHT_CALENDAR ) or 16#0004# );
   MCHT_CALENDARDATEMAX : constant := ( Interfaces.C.Unsigned( MCHT_CALENDAR ) or 16#0005# );
   MCM_SETFIRSTDAYOFWEEK : constant := MCM_FIRST + 15;
   MCM_GETFIRSTDAYOFWEEK : constant := MCM_FIRST + 16;
   MCM_GETRANGE : constant := MCM_FIRST + 17;
   MCM_SETRANGE : constant := MCM_FIRST + 18;
   MCM_GETMONTHDELTA : constant := MCM_FIRST + 19;
   MCM_SETMONTHDELTA : constant := MCM_FIRST + 20;
   MCM_GETMAXTODAYWIDTH : constant := MCM_FIRST + 21;
   MCMV_MONTH : constant := 0;
   MCMV_YEAR : constant := 1;
   MCMV_DECADE : constant := 2;
   MCMV_CENTURY : constant := 3;
   MCM_GETCURRENTVIEW : constant := MCM_FIRST + 22;
   MCM_GETCALENDARCOUNT : constant := MCM_FIRST + 23;
   MCGIP_CALENDARCONTROL : constant := 0;
   MCGIP_NEXT : constant := 1;
   MCGIP_PREV : constant := 2;
   MCGIP_FOOTER : constant := 3;
   MCGIP_CALENDAR : constant := 4;
   MCGIP_CALENDARHEADER : constant := 5;
   MCGIP_CALENDARBODY : constant := 6;
   MCGIP_CALENDARROW : constant := 7;
   MCGIP_CALENDARCELL : constant := 8;
   MCGIF_DATE : constant := 16#00000001#;
   MCGIF_RECT : constant := 16#00000002#;
   MCGIF_NAME : constant := 16#00000004#;
   MCM_GETCALENDARGRIDINFO : constant := MCM_FIRST + 24;
   MCM_GETCALID : constant := MCM_FIRST + 27;
   MCM_SETCALID : constant := MCM_FIRST + 28;
   MCM_SIZERECTTOMIN : constant := MCM_FIRST + 29;
   MCM_SETCALENDARBORDER : constant := MCM_FIRST + 30;
   MCM_GETCALENDARBORDER : constant := MCM_FIRST + 31;
   MCM_SETCURRENTVIEW : constant := MCM_FIRST + 32;
   MCS_DAYSTATE : constant := 16#0001#;
   MCS_MULTISELECT : constant := 16#0002#;
   MCS_WEEKNUMBERS : constant := 16#0004#;
   MCS_NOTODAYCIRCLE : constant := 16#0008#;
   MCS_NOTODAY : constant := 16#0010#;
   MCS_NOTRAILINGDATES : constant := 16#0040#;
   MCS_SHORTDAYSOFWEEK : constant := 16#0080#;
   MCS_NOSELCHANGEONNAV : constant := 16#0100#;
   GMR_VISIBLE : constant := 0;
   GMR_DAYSTATE : constant := 1;
   DTM_FIRST : constant := 16#1000#;
   DTM_GETSYSTEMTIME : constant := DTM_FIRST + 1;
   DTM_SETSYSTEMTIME : constant := DTM_FIRST + 2;
   DTM_GETRANGE : constant := DTM_FIRST + 3;
   DTM_SETRANGE : constant := DTM_FIRST + 4;
   DTM_SETFORMATA : constant := DTM_FIRST + 5;
   DTM_SETFORMATW : constant := DTM_FIRST + 50;
   DTM_SETMCCOLOR : constant := DTM_FIRST + 6;
   DTM_GETMCCOLOR : constant := DTM_FIRST + 7;
   DTM_GETMONTHCAL : constant := DTM_FIRST + 8;
   DTM_SETMCFONT : constant := DTM_FIRST + 9;
   DTM_GETMCFONT : constant := DTM_FIRST + 10;
   DTM_SETMCSTYLE : constant := DTM_FIRST + 11;
   DTM_GETMCSTYLE : constant := DTM_FIRST + 12;
   DTM_CLOSEMONTHCAL : constant := DTM_FIRST + 13;
   DTM_GETDATETIMEPICKERINFO : constant := DTM_FIRST + 14;
   DTM_GETIDEALSIZE : constant := DTM_FIRST + 15;
   DTS_UPDOWN : constant := 16#0001#;
   DTS_SHOWNONE : constant := 16#0002#;
   DTS_SHORTDATEFORMAT : constant := 16#0000#;
   DTS_LONGDATEFORMAT : constant := 16#0004#;
   DTS_SHORTDATECENTURYFORMAT : constant := 16#000C#;
   DTS_TIMEFORMAT : constant := 16#0009#;
   DTS_APPCANPARSE : constant := 16#0010#;
   DTS_RIGHTALIGN : constant := 16#0020#;
   GDTR_MIN : constant := 16#0001#;
   GDTR_MAX : constant := 16#0002#;
   GDT_ERROR : constant := -1;
   GDT_VALID : constant := 0;
   GDT_NONE : constant := 1;
   IPM_CLEARADDRESS : constant := WM_USER + 100;
   IPM_SETADDRESS : constant := WM_USER + 101;
   IPM_GETADDRESS : constant := WM_USER + 102;
   IPM_SETRANGE : constant := WM_USER + 103;
   IPM_SETFOCUS : constant := WM_USER + 104;
   IPM_ISBLANK : constant := WM_USER + 105;
   PGS_VERT : constant := 16#00000000#;
   PGS_HORZ : constant := 16#00000001#;
   PGS_AUTOSCROLL : constant := 16#00000002#;
   PGS_DRAGNDROP : constant := 16#00000004#;
   PGF_INVISIBLE : constant := 0;
   PGF_NORMAL : constant := 1;
   PGF_GRAYED : constant := 2;
   PGF_DEPRESSED : constant := 4;
   PGF_HOT : constant := 8;
   PGB_TOPORLEFT : constant := 0;
   PGB_BOTTOMORRIGHT : constant := 1;
   PGM_SETCHILD : constant := PGM_FIRST + 1;
   PGM_RECALCSIZE : constant := PGM_FIRST + 2;
   PGM_FORWARDMOUSE : constant := PGM_FIRST + 3;
   PGM_SETBKCOLOR : constant := PGM_FIRST + 4;
   PGM_GETBKCOLOR : constant := PGM_FIRST + 5;
   PGM_SETBORDER : constant := PGM_FIRST + 6;
   PGM_GETBORDER : constant := PGM_FIRST + 7;
   PGM_SETPOS : constant := PGM_FIRST + 8;
   PGM_GETPOS : constant := PGM_FIRST + 9;
   PGM_SETBUTTONSIZE : constant := PGM_FIRST + 10;
   PGM_GETBUTTONSIZE : constant := PGM_FIRST + 11;
   PGM_GETBUTTONSTATE : constant := PGM_FIRST + 12;
   PGM_SETSCROLLINFO : constant := PGM_FIRST + 13;
   PGF_SCROLLUP : constant := 1;
   PGF_SCROLLDOWN : constant := 2;
   PGF_SCROLLLEFT : constant := 4;
   PGF_SCROLLRIGHT : constant := 8;
   PGK_SHIFT : constant := 1;
   PGK_CONTROL : constant := 2;
   PGK_MENU : constant := 4;
   -- #include <pshpack1.h>
   -- #include <CommCtrl.h>
   -- #include <poppack.h>
   -- #include <CommCtrl.h>
   PGF_CALCWIDTH : constant := 1;
   PGF_CALCHEIGHT : constant := 2;
   NFS_EDIT : constant := 16#0001#;
   NFS_STATIC : constant := 16#0002#;
   NFS_LISTCOMBO : constant := 16#0004#;
   NFS_BUTTON : constant := 16#0008#;
   NFS_ALL : constant := 16#0010#;
   NFS_USEFONTASSOC : constant := 16#0020#;
   BUTTON_IMAGELIST_ALIGN_LEFT : constant := 0;
   BUTTON_IMAGELIST_ALIGN_RIGHT : constant := 1;
   BUTTON_IMAGELIST_ALIGN_TOP : constant := 2;
   BUTTON_IMAGELIST_ALIGN_BOTTOM : constant := 3;
   BUTTON_IMAGELIST_ALIGN_CENTER : constant := 4;
   BCM_GETIDEALSIZE : constant := BCM_FIRST + 16#0001#;
   BCM_SETIMAGELIST : constant := BCM_FIRST + 16#0002#;
   BCM_GETIMAGELIST : constant := BCM_FIRST + 16#0003#;
   BCM_SETTEXTMARGIN : constant := BCM_FIRST + 16#0004#;
   BCM_GETTEXTMARGIN : constant := BCM_FIRST + 16#0005#;
   BST_HOT : constant := 16#0200#;
   BST_DROPDOWNPUSHED : constant := 16#0400#;
   BS_SPLITBUTTON : constant := 16#0000000C#;
   BS_DEFSPLITBUTTON : constant := 16#0000000D#;
   BS_COMMANDLINK : constant := 16#0000000E#;
   BS_DEFCOMMANDLINK : constant := 16#0000000F#;
   BCSIF_GLYPH : constant := 16#0001#;
   BCSIF_IMAGE : constant := 16#0002#;
   BCSIF_STYLE : constant := 16#0004#;
   BCSIF_SIZE : constant := 16#0008#;
   BCSS_NOSPLIT : constant := 16#0001#;
   BCSS_STRETCH : constant := 16#0002#;
   BCSS_ALIGNLEFT : constant := 16#0004#;
   BCSS_IMAGE : constant := 16#0008#;
   BCM_SETDROPDOWNSTATE : constant := BCM_FIRST + 16#0006#;
   BCM_SETSPLITINFO : constant := BCM_FIRST + 16#0007#;
   BCM_GETSPLITINFO : constant := BCM_FIRST + 16#0008#;
   BCM_SETNOTE : constant := BCM_FIRST + 16#0009#;
   BCM_GETNOTE : constant := BCM_FIRST + 16#000A#;
   BCM_GETNOTELENGTH : constant := BCM_FIRST + 16#000B#;
   BCM_SETSHIELD : constant := BCM_FIRST + 16#000C#;
   ES_EX_ALLOWEOL_CR : constant := 16#0001#;
   ES_EX_ALLOWEOL_LF : constant := 16#0002#;
   ES_EX_ALLOWEOL_ALL : constant := ( Interfaces.C.Unsigned( ES_EX_ALLOWEOL_CR )
       or Interfaces.C.Unsigned( ES_EX_ALLOWEOL_LF ) );
   ES_EX_CONVERT_EOL_ON_PASTE : constant := 16#0004#;
   ES_EX_ZOOMABLE : constant := 16#0010#;
   EM_SETCUEBANNER : constant := ECM_FIRST + 1;
   EM_GETCUEBANNER : constant := ECM_FIRST + 2;
   EM_SHOWBALLOONTIP : constant := ECM_FIRST + 3;
   EM_HIDEBALLOONTIP : constant := ECM_FIRST + 4;
   EM_SETHILITE : constant := ECM_FIRST + 5;
   EM_GETHILITE : constant := ECM_FIRST + 6;
   EM_NOSETFOCUS : constant := ECM_FIRST + 7;
   EM_TAKEFOCUS : constant := ECM_FIRST + 8;
   EM_SETEXTENDEDSTYLE : constant := ECM_FIRST + 10;
   EM_GETEXTENDEDSTYLE : constant := ECM_FIRST + 11;
   EM_SETENDOFLINE : constant := ECM_FIRST + 12;
   EM_GETENDOFLINE : constant := ECM_FIRST + 13;
   EM_ENABLESEARCHWEB : constant := ECM_FIRST + 14;
   EM_SEARCHWEB : constant := ECM_FIRST + 15;
   EM_SETCARETINDEX : constant := ECM_FIRST + 17;
   EM_GETCARETINDEX : constant := ECM_FIRST + 18;
   EM_GETZOOM : constant := WM_USER + 224;
   EM_SETZOOM : constant := WM_USER + 225;
   EM_FILELINEFROMCHAR : constant := ECM_FIRST + 19;
   EM_FILELINEINDEX : constant := ECM_FIRST + 20;
   EM_FILELINELENGTH : constant := ECM_FIRST + 21;
   EM_GETFILELINE : constant := ECM_FIRST + 22;
   EM_GETFILELINECOUNT : constant := ECM_FIRST + 23;
   CB_SETMINVISIBLE : constant := CBM_FIRST + 1;
   CB_GETMINVISIBLE : constant := CBM_FIRST + 2;
   CB_SETCUEBANNER : constant := CBM_FIRST + 3;
   CB_GETCUEBANNER : constant := CBM_FIRST + 4;
   -- #include <pshpack1.h>
   -- #include <CommCtrl.h>
   TD_WARNING_ICON : constant := -1;
   TD_ERROR_ICON : constant := -2;
   TD_INFORMATION_ICON : constant := -3;
   TD_SHIELD_ICON : constant := -4;
   -- #include <poppack.h>
   -- #include <CommCtrl.h>
   -- #include <dpa_dsa.h>
   DA_LAST : constant := 16#7FFFFFFF#;
   DA_ERR : constant := -1;
   DPAM_SORTED : constant := 16#00000001#;
   DPAM_NORMAL : constant := 16#00000002#;
   DPAM_UNION : constant := 16#00000004#;
   DPAM_INTERSECT : constant := 16#00000008#;
   DPAMM_MERGE : constant := 1;
   DPAMM_DELETE : constant := 2;
   DPAMM_INSERT : constant := 3;
   DPAS_SORTED : constant := 16#0001#;
   DPAS_INSERTBEFORE : constant := 16#0002#;
   DPAS_INSERTAFTER : constant := 16#0004#;
   -- #include <CommCtrl.h>
   WSB_PROP_CYVSCROLL : constant := 16#00000001#;
   WSB_PROP_CXHSCROLL : constant := 16#00000002#;
   WSB_PROP_CYHSCROLL : constant := 16#00000004#;
   WSB_PROP_CXVSCROLL : constant := 16#00000008#;
   WSB_PROP_CXHTHUMB : constant := 16#00000010#;
   WSB_PROP_CYVTHUMB : constant := 16#00000020#;
   WSB_PROP_VBKGCOLOR : constant := 16#00000040#;
   WSB_PROP_HBKGCOLOR : constant := 16#00000080#;
   WSB_PROP_VSTYLE : constant := 16#00000100#;
   WSB_PROP_HSTYLE : constant := 16#00000200#;
   WSB_PROP_WINSTYLE : constant := 16#00000400#;
   WSB_PROP_PALETTE : constant := 16#00000800#;
   WSB_PROP_MASK : constant := 16#00000FFF#;
   FSB_FLAT_MODE : constant := 2;
   FSB_ENCARTA_MODE : constant := 1;
   FSB_REGULAR_MODE : constant := 0;
   -- #include <Win32.hpp>
   -- #include <ComSvcs.h>
   -- #include <ocidl.h>
   MULTICLASSINFO_GETTYPEINFO : constant := 16#00000001#;
   MULTICLASSINFO_GETNUMRESERVEDDISPIDS : constant := 16#00000002#;
   MULTICLASSINFO_GETIIDPRIMARY : constant := 16#00000004#;
   MULTICLASSINFO_GETIIDSOURCE : constant := 16#00000008#;
   TIFLAGS_EXTENDDISPATCHONLY : constant := 16#00000001#;
   -- #include <ComSvcs.h>
   -- #include <comadmin.h>
   -- #include <ComSvcs.h>
   -- #include <transact.h>
   -- #include <ComSvcs.h>
   -- #include <txdtc.h>
   -- #include <txcoord.h>
   -- #include <txdtc.h>
   -- #include <ComSvcs.h>
   GUID_STRING_SIZE : constant := 40;
   DATA_NOT_AVAILABLE : constant := 16#ffffffff#;
   MTXDM_E_ENLISTRESOURCEFAILED : constant := 16#8004E100#;
   CRR_NO_REASON_SUPPLIED : constant := 16#00000000#;
   CRR_LIFETIME_LIMIT : constant := 16#FFFFFFFF#;
   CRR_ACTIVATION_LIMIT : constant := 16#FFFFFFFE#;
   CRR_CALL_LIMIT : constant := 16#FFFFFFFD#;
   CRR_MEMORY_LIMIT : constant := 16#FFFFFFFC#;
   CRR_RECYCLED_FROM_UI : constant := 16#FFFFFFFB#;
   -- #include <Win32.hpp>
   -- #include <roapi.h>
   -- #include <inspectable.h>
   -- #include <hstring.h>
   -- #include <inspectable.h>
   -- #include <roapi.h>
   -- #include <activation.h>
   -- #include <roapi.h>
   -- #include <Win32.hpp>
   -- #include <winstring.h>
   -- #include <Win32.hpp>
   -- #include <roerrorapi.h>
   -- #include <restrictedErrorInfo.h>
   -- #include <roerrorapi.h>
   MAX_ERROR_MESSAGE_CHARS : constant := 512;
   -- #include <Win32.hpp>
   -- #include <metahost.h>
   -- #include <mscoree.h>
   -- #include <gchost.h>
   -- #include <mscoree.h>
   -- #include <ivalidator.h>
   -- #include <ivehandler.h>
   -- #include <ivalidator.h>
   -- #include <mscoree.h>
   CLR_MAJOR_VERSION : constant := 4;
   CLR_MINOR_VERSION : constant := 0;
   CLR_BUILD_VERSION : constant := 30319;
   CLR_ASSEMBLY_MAJOR_VERSION : constant := 4;
   CLR_ASSEMBLY_MINOR_VERSION : constant := 0;
   CLR_ASSEMBLY_BUILD_VERSION : constant := 0;
   BucketParamsCount : constant := 10;
   BucketParamLength : constant := 255;
   -- #include <metahost.h>
   -- #include <Win32.hpp>
   -- #include <windows.ui.xaml.hosting.desktopwindowxamlsource.h>
   -- #include <sal.h>
   -- #include <concurrencysal.h>
   -- #include <vadefs.h>
   subtype uintptr_t is Interfaces.C.Extensions.unsigned_long_long;
   type va_list is access all Character;
   -- va_start(...); -- variadic function not supported
   -- #include <vcruntime.h>
   subtype size_t is Interfaces.C.Extensions.unsigned_long_long;
   subtype ptrdiff_t is Interfaces.C.Extensions.long_long;
   subtype intptr_t is Interfaces.C.Extensions.long_long;
   subtype vcrt_bool_x is Boolean;
   procedure security_init_cookie;
   pragma import (Cpp,security_init_cookie,"__security_init_cookie");
   procedure security_check_cookie(
      StackCookie : uintptr_t
   );
   pragma import (Cpp,security_check_cookie,"__security_check_cookie");
   procedure report_gsfailure(
      StackCookie : uintptr_t
   );
   pragma import (Cpp,report_gsfailure,"__report_gsfailure");
   -- #include <excpt.h>
   type EXCEPTION_DISPOSITION_x is (
      ExceptionContinueExecution,
      ExceptionContinueSearch,
      ExceptionNestedException,
      ExceptionCollidedUnwind
   );
   for EXCEPTION_DISPOSITION_x use (
      ExceptionContinueExecution => 0,
      ExceptionContinueSearch => 1,
      ExceptionNestedException => 2,
      ExceptionCollidedUnwind => 3
   );
   for EXCEPTION_DISPOSITION_x'Size use 32;
   subtype EXCEPTION_DISPOSITION is EXCEPTION_DISPOSITION_x;
   type EXCEPTION_RECORD_x;
   type CONTEXT_x;
   type DISPATCHER_CONTEXT_x;
   function C_specific_handler(
      ExceptionRecord : access EXCEPTION_RECORD_x;
      EstablisherFrame : access Void;
      ContextRecord : access CONTEXT_x;
      DispatcherContext : access DISPATCHER_CONTEXT_x
   ) return EXCEPTION_DISPOSITION;
   pragma import (Cpp,C_specific_handler,"__C_specific_handler");
   function exception_code return Interfaces.C.unsigned_long;
   pragma import (Cpp,exception_code,"_exception_code");
   procedure exception_info;
   pragma import (Cpp,exception_info,"_exception_info");
   function abnormal_termination return Interfaces.C.Int;
   pragma import (Cpp,abnormal_termination,"_abnormal_termination");
   -- #include <stdarg.h>
   -- #include <windef.h>
   -- #include <SpecStrings.h>
   -- #include <DriverSpecs.h>
   -- #include <minwindef.h>
   subtype ULONG is Interfaces.C.unsigned_long;
   type PULONG is access all ULONG;
   subtype USHORT is Interfaces.C.unsigned_short;
   type PUSHORT is access all USHORT;
   subtype UCHAR is Interfaces.C.unsigned_char;
   type PUCHAR is access all UCHAR;
   type PSZ is access all Character;
   subtype DWORD is Interfaces.C.unsigned_long;
   subtype BOOL is Interfaces.C.Int;
   subtype BYTE is Interfaces.C.unsigned_char;
   subtype WORD is Interfaces.C.unsigned_short;
   subtype FLOAT is Standard.Float;
   type PFLOAT is access all FLOAT;
   type PBOOL is access all BOOL;
   type LPBOOL is access all BOOL;
   type PBYTE is access all BYTE;
   type LPBYTE is access all BYTE;
   type PINT is access all Interfaces.C.Int;
   type LPINT is access all Interfaces.C.Int;
   type PWORD is access all WORD;
   type LPWORD is access all WORD;
   type LPLONG is access all Interfaces.C.Long;
   type PDWORD is access all DWORD;
   type LPDWORD is access all DWORD;
   type LPVOID is access all Void;
   type LPCVOID is access constant Void;
   subtype INT is Interfaces.C.Int;
   subtype UINT is Interfaces.C.unsigned;
   type PUINT is access all Interfaces.C.unsigned;
   -- #include <winnt.h>
   -- #include <corecrt.h>
   -- type Type_x is System.Address; -- [Note - CXType_Unexposed] Ignored type - _Type
   subtype crt_bool_x is Boolean;
   procedure invalid_parameter_noinfo;
   pragma import (Cpp,invalid_parameter_noinfo,"_invalid_parameter_noinfo");
   procedure invalid_parameter_noinfo_noreturn;
   pragma import (Cpp,invalid_parameter_noinfo_noreturn,"_invalid_parameter_noinfo_noreturn");
   procedure invoke_watson(
      Expression : access Wide_Character;
      FunctionName : access Wide_Character;
      FileName : access Wide_Character;
      LineNo : Interfaces.C.unsigned;
      Reserved : uintptr_t
   );
   pragma import (Cpp,invoke_watson,"_invoke_watson");
   subtype errno_t is Interfaces.C.Int;
   subtype wint_t is Interfaces.C.unsigned_short;
   subtype wctype_t is Interfaces.C.unsigned_short;
   subtype time32_t_x is Interfaces.C.Long;
   subtype time64_t_x is Interfaces.C.Extensions.long_long;
   type crt_locale_data_public_x is record
      locale_pctype : access Interfaces.C.unsigned_short;
      locale_mb_cur_max : Interfaces.C.Int;
      locale_lc_codepage : Interfaces.C.unsigned;
   end record;
   pragma Convention (C_Pass_By_Copy,crt_locale_data_public_x);
   for crt_locale_data_public_x use record
      locale_pctype at 0 range 0..63;
      locale_mb_cur_max at 0 range 64..95;
      locale_lc_codepage at 0 range 96..127;
   end record;
   for crt_locale_data_public_x'Size use 128;
   for crt_locale_data_public_x'Alignment use 8;
   type crt_locale_data_x;
   type crt_multibyte_data_x;
   type crt_locale_pointers_x is record
      locinfo : access crt_locale_data_x;
      mbcinfo : access crt_multibyte_data_x;
   end record;
   pragma Convention (C_Pass_By_Copy,crt_locale_pointers_x);
   for crt_locale_pointers_x use record
      locinfo at 0 range 0..63;
      mbcinfo at 0 range 64..127;
   end record;
   for crt_locale_pointers_x'Size use 128;
   for crt_locale_pointers_x'Alignment use 8;
   type locale_t_x is access all crt_locale_pointers_x;
   type Mbstatet_x is record
      Wchar : Interfaces.C.unsigned_long;
      Byte_x : Interfaces.C.unsigned_short;
      State : Interfaces.C.unsigned_short;
   end record;
   pragma Convention (C_Pass_By_Copy,Mbstatet_x);
   for Mbstatet_x use record
      Wchar at 0 range 0..31;
      Byte_x at 0 range 32..47;
      State at 0 range 48..63;
   end record;
   for Mbstatet_x'Size use 64;
   for Mbstatet_x'Alignment use 4;
   subtype mbstate_t is Mbstatet_x;
   subtype time_t is time64_t_x;
   subtype rsize_t is size_t;
   -- #include <corecrt_wctype.h>
   function pctype_func return PUSHORT;
   pragma import (Cpp,pctype_func,"__pctype_func");
   function pwctype_func return PUSHORT;
   pragma import (Cpp,pwctype_func,"__pwctype_func");
   function iswalnum(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswalnum,"iswalnum");
   function iswalpha(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswalpha,"iswalpha");
   function iswascii(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswascii,"iswascii");
   function iswblank(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswblank,"iswblank");
   function iswcntrl(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswcntrl,"iswcntrl");
   function iswdigit(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswdigit,"iswdigit");
   function iswgraph(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswgraph,"iswgraph");
   function iswlower(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswlower,"iswlower");
   function iswprint(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswprint,"iswprint");
   function iswpunct(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswpunct,"iswpunct");
   function iswspace(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswspace,"iswspace");
   function iswupper(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswupper,"iswupper");
   function iswxdigit(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswxdigit,"iswxdigit");
   function iswcsymf(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswcsymf,"__iswcsymf");
   function iswcsym(
      C : wint_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswcsym,"__iswcsym");
   function iswalnum_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswalnum_l,"_iswalnum_l");
   function iswalpha_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswalpha_l,"_iswalpha_l");
   function iswblank_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswblank_l,"_iswblank_l");
   function iswcntrl_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswcntrl_l,"_iswcntrl_l");
   function iswdigit_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswdigit_l,"_iswdigit_l");
   function iswgraph_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswgraph_l,"_iswgraph_l");
   function iswlower_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswlower_l,"_iswlower_l");
   function iswprint_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswprint_l,"_iswprint_l");
   function iswpunct_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswpunct_l,"_iswpunct_l");
   function iswspace_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswspace_l,"_iswspace_l");
   function iswupper_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswupper_l,"_iswupper_l");
   function iswxdigit_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswxdigit_l,"_iswxdigit_l");
   function iswcsymf_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswcsymf_l,"_iswcsymf_l");
   function iswcsym_l(
      C : wint_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswcsym_l,"_iswcsym_l");
   function towupper(
      C : wint_t
   ) return wint_t;
   pragma import (Cpp,towupper,"towupper");
   function towlower(
      C : wint_t
   ) return wint_t;
   pragma import (Cpp,towlower,"towlower");
   function iswctype(
      C : wint_t;
      type_x : wctype_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswctype,"iswctype");
   function towupper_l(
      C : wint_t;
      Locale : locale_t_x
   ) return wint_t;
   pragma import (Cpp,towupper_l,"_towupper_l");
   function towlower_l(
      C : wint_t;
      Locale : locale_t_x
   ) return wint_t;
   pragma import (Cpp,towlower_l,"_towlower_l");
   function iswctype_l(
      C : wint_t;
      type_x : wctype_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iswctype_l,"_iswctype_l");
   function isleadbyte(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,isleadbyte,"isleadbyte");
   function isleadbyte_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,isleadbyte_l,"_isleadbyte_l");
   function is_wctype(
      C : wint_t;
      type_x : wctype_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,is_wctype,"is_wctype");
   -- #include <ctype.h>
   function isctype(
      C : Interfaces.C.Int;
      type_x : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,isctype,"_isctype");
   function isctype_l(
      C : Interfaces.C.Int;
      type_x : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,isctype_l,"_isctype_l");
   function isalpha(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,isalpha,"isalpha");
   function isalpha_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,isalpha_l,"_isalpha_l");
   function isupper(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,isupper,"isupper");
   function isupper_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,isupper_l,"_isupper_l");
   function islower(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,islower,"islower");
   function islower_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,islower_l,"_islower_l");
   function isdigit(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,isdigit,"isdigit");
   function isdigit_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,isdigit_l,"_isdigit_l");
   function isxdigit(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,isxdigit,"isxdigit");
   function isxdigit_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,isxdigit_l,"_isxdigit_l");
   function isspace(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,isspace,"isspace");
   function isspace_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,isspace_l,"_isspace_l");
   function ispunct(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,ispunct,"ispunct");
   function ispunct_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,ispunct_l,"_ispunct_l");
   function isblank(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,isblank,"isblank");
   function isblank_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,isblank_l,"_isblank_l");
   function isalnum(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,isalnum,"isalnum");
   function isalnum_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,isalnum_l,"_isalnum_l");
   function isprint(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,isprint,"isprint");
   function isprint_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,isprint_l,"_isprint_l");
   function isgraph(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,isgraph,"isgraph");
   function isgraph_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,isgraph_l,"_isgraph_l");
   function iscntrl(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,iscntrl,"iscntrl");
   function iscntrl_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,iscntrl_l,"_iscntrl_l");
   function toupper(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,toupper,"toupper");
   function tolower(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,tolower,"tolower");
   function tolower_x(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,tolower_x,"_tolower");
   function tolower_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,tolower_l,"_tolower_l");
   function toupper_x(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,toupper_x,"_toupper");
   function toupper_l(
      C : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,toupper_l,"_toupper_l");
   function isascii(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,isascii,"__isascii");
   function toascii(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,toascii,"__toascii");
   function iscsymf(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,iscsymf,"__iscsymf");
   function iscsym(
      C : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,iscsym,"__iscsym");
   -- acrt_locale_get_ctype_array_value(); -- inlined function not supported
   function mb_cur_max_func return Interfaces.C.Int;
   pragma import (Cpp,mb_cur_max_func,"___mb_cur_max_func");
   function mb_cur_max_l_func(
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,mb_cur_max_l_func,"___mb_cur_max_l_func");
   -- ascii_tolower(); -- inlined function not supported
   -- ascii_toupper(); -- inlined function not supported
   -- ascii_iswalpha(); -- inlined function not supported
   -- ascii_iswdigit(); -- inlined function not supported
   -- ascii_towlower(); -- inlined function not supported
   -- ascii_towupper(); -- inlined function not supported
   -- acrt_get_locale_data_prefix(); -- inlined function not supported
   -- chvalidchk_l(); -- inlined function not supported
   -- ischartype_l(); -- inlined function not supported
   -- #include <kernelspecs.h>
   -- #include <basetsd.h>
   subtype POINTER_64_INT is Interfaces.C.Extensions.unsigned_long_long;
   subtype INT8 is Interfaces.C.signed_char;
   type PINT8 is access all Interfaces.C.signed_char;
   subtype INT16 is Interfaces.C.Short;
   type PINT16 is access all Interfaces.C.Short;
   subtype INT32 is Interfaces.C.Int;
   type PINT32 is access all Interfaces.C.Int;
   subtype INT64 is Interfaces.C.Extensions.long_long;
   type PINT64 is access all Interfaces.C.Extensions.long_long;
   subtype UINT8 is Interfaces.C.unsigned_char;
   type PUINT8 is access all Interfaces.C.unsigned_char;
   subtype UINT16 is Interfaces.C.unsigned_short;
   type PUINT16 is access all Interfaces.C.unsigned_short;
   subtype UINT32 is Interfaces.C.unsigned;
   type PUINT32 is access all Interfaces.C.unsigned;
   subtype UINT64 is Interfaces.C.Extensions.unsigned_long_long;
   type PUINT64 is access all Interfaces.C.Extensions.unsigned_long_long;
   subtype LONG32 is Interfaces.C.Int;
   type PLONG32 is access all Interfaces.C.Int;
   subtype ULONG32 is Interfaces.C.unsigned;
   type PULONG32 is access all Interfaces.C.unsigned;
   subtype DWORD32 is Interfaces.C.unsigned;
   type PDWORD32 is access all Interfaces.C.unsigned;
   subtype INT_PTR is Interfaces.C.Extensions.long_long;
   type PINT_PTR is access all Interfaces.C.Extensions.long_long;
   subtype UINT_PTR is Interfaces.C.Extensions.unsigned_long_long;
   type PUINT_PTR is access all Interfaces.C.Extensions.unsigned_long_long;
   subtype LONG_PTR is Interfaces.C.Extensions.long_long;
   type PLONG_PTR is access all Interfaces.C.Extensions.long_long;
   subtype ULONG_PTR is Interfaces.C.Extensions.unsigned_long_long;
   type PULONG_PTR is access all Interfaces.C.Extensions.unsigned_long_long;
   subtype SHANDLE_PTR is Interfaces.C.Extensions.long_long;
   subtype HANDLE_PTR is Interfaces.C.Extensions.unsigned_long_long;
   subtype UHALF_PTR is Interfaces.C.unsigned;
   type PUHALF_PTR is access all Interfaces.C.unsigned;
   subtype HALF_PTR is Interfaces.C.Int;
   type PHALF_PTR is access all Interfaces.C.Int;
   -- HandleToULong(); -- inlined function not supported
   -- HandleToLong(); -- inlined function not supported
   -- ULongToHandle(); -- inlined function not supported
   -- LongToHandle(); -- inlined function not supported
   -- PtrToUlong(); -- inlined function not supported
   -- PtrToUint(); -- inlined function not supported
   -- PtrToUshort(); -- inlined function not supported
   -- PtrToLong(); -- inlined function not supported
   -- PtrToInt(); -- inlined function not supported
   -- PtrToShort(); -- inlined function not supported
   -- IntToPtr(); -- inlined function not supported
   -- UIntToPtr(); -- inlined function not supported
   -- LongToPtr(); -- inlined function not supported
   -- ULongToPtr(); -- inlined function not supported
   -- Ptr32ToPtr(); -- inlined function not supported
   -- Handle32ToHandle(); -- inlined function not supported
   -- PtrToPtr32(); -- inlined function not supported
   -- subtype SIZE_T is ULONG_PTR; --  [Note: Type already defined (case sensitive issue)]
   type PSIZE_T is access all ULONG_PTR;
   subtype SSIZE_T is LONG_PTR;
   type PSSIZE_T is access all LONG_PTR;
   subtype DWORD_PTR is ULONG_PTR;
   type PDWORD_PTR is access all ULONG_PTR;
   subtype LONG64 is Interfaces.C.Extensions.long_long;
   type PLONG64 is access all Interfaces.C.Extensions.long_long;
   subtype ULONG64 is Interfaces.C.Extensions.unsigned_long_long;
   type PULONG64 is access all Interfaces.C.Extensions.unsigned_long_long;
   subtype DWORD64 is Interfaces.C.Extensions.unsigned_long_long;
   type PDWORD64 is access all Interfaces.C.Extensions.unsigned_long_long;
   subtype KAFFINITY is ULONG_PTR;
   type PKAFFINITY is access all KAFFINITY;
   -- #include <winnt.h>
   type PVOID is access all Void;
   type PVOID64 is access all Void;
   subtype CHAR is Character;
   subtype SHORT is Interfaces.C.Short;
   subtype LONG is Interfaces.C.Long;
   subtype WCHAR is Wide_Character;
   type PWCHAR is access all WCHAR;
   type LPWCH is access all WCHAR;
   type PWCH is access all WCHAR;
   type LPCWCH is access constant WCHAR;
   type PCWCH is access constant WCHAR;
   type NWPSTR is access all WCHAR;
   type LPWSTR is access all WCHAR;
   type PWSTR is access all WCHAR;
   type PZPWSTR is access all PWSTR;
   type PCZPWSTR is access constant PWSTR;
   type LPUWSTR is access all WCHAR;
   type PUWSTR is access all WCHAR;
   type LPCWSTR is access constant WCHAR;
   type PCWSTR is access constant WCHAR;
   type PZPCWSTR is access all PCWSTR;
   type PCZPCWSTR is access constant PCWSTR;
   type LPCUWSTR is access constant WCHAR;
   type PCUWSTR is access constant WCHAR;
   type PZZWSTR is access all WCHAR;
   type PCZZWSTR is access constant WCHAR;
   type PUZZWSTR is access all WCHAR;
   type PCUZZWSTR is access constant WCHAR;
   type PNZWCH is access all WCHAR;
   type PCNZWCH is access constant WCHAR;
   type PUNZWCH is access all WCHAR;
   type PCUNZWCH is access constant WCHAR;
   type LPCWCHAR is access constant WCHAR;
   type PCWCHAR is access constant WCHAR;
   type LPCUWCHAR is access constant WCHAR;
   type PCUWCHAR is access constant WCHAR;
   subtype UCSCHAR is Interfaces.C.unsigned_long;
   type PUCSCHAR is access all UCSCHAR;
   type PCUCSCHAR is access constant UCSCHAR;
   type PUCSSTR is access all UCSCHAR;
   type PUUCSSTR is access all UCSCHAR;
   type PCUCSSTR is access constant UCSCHAR;
   type PCUUCSSTR is access constant UCSCHAR;
   type PUUCSCHAR is access all UCSCHAR;
   type PCUUCSCHAR is access constant UCSCHAR;
   type PCHAR is access all CHAR;
   type LPCH is access all CHAR;
   type PCH is access all CHAR;
   type LPCCH is access constant CHAR;
   type PCCH is access constant CHAR;
   type NPSTR is access all CHAR;
   type LPSTR is access all CHAR;
   type PSTR is access all CHAR;
   type PZPSTR is access all PSTR;
   type PCZPSTR is access constant PSTR;
   type LPCSTR is access constant CHAR;
   type PCSTR is access constant CHAR;
   type PZPCSTR is access all PCSTR;
   type PCZPCSTR is access constant PCSTR;
   type PZZSTR is access all CHAR;
   type PCZZSTR is access constant CHAR;
   type PNZCH is access all CHAR;
   type PCNZCH is access constant CHAR;
   subtype TCHAR is Character;
   type PTCHAR is access all Character;
   subtype TBYTE is Interfaces.C.unsigned_char;
   type PTBYTE is access all Interfaces.C.unsigned_char;
   subtype LPTCH is LPCH;
   subtype PTCH is LPCH;
   subtype LPCTCH is LPCCH;
   subtype PCTCH is LPCCH;
   subtype PTSTR is LPSTR;
   subtype LPTSTR is LPSTR;
   subtype PUTSTR is LPSTR;
   subtype LPUTSTR is LPSTR;
   subtype PCTSTR is LPCSTR;
   subtype LPCTSTR is LPCSTR;
   subtype PCUTSTR is LPCSTR;
   subtype LPCUTSTR is LPCSTR;
   subtype PZZTSTR is PZZSTR;
   subtype PUZZTSTR is PZZSTR;
   subtype PCZZTSTR is PCZZSTR;
   subtype PCUZZTSTR is PCZZSTR;
   subtype PZPTSTR is PZPSTR;
   subtype PNZTCH is PNZCH;
   subtype PUNZTCH is PNZCH;
   subtype PCNZTCH is PCNZCH;
   subtype PCUNZTCH is PCNZCH;
   type PSHORT is access all SHORT;
   type PLONG is access all LONG;
   type PROCESSOR_NUMBER_x is record
      Group : WORD;
      Number : BYTE;
      Reserved : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESSOR_NUMBER_x);
   for PROCESSOR_NUMBER_x use record
      Group at 0 range 0..15;
      Number at 0 range 16..23;
      Reserved at 0 range 24..31;
   end record;
   for PROCESSOR_NUMBER_x'Size use 32;
   for PROCESSOR_NUMBER_x'Alignment use 2;
   subtype PROCESSOR_NUMBER is PROCESSOR_NUMBER_x;
   type PPROCESSOR_NUMBER is access all PROCESSOR_NUMBER_x;
   type GROUP_AFFINITY_x_Reserved_Array is array(1..3) of WORD; -- Auto Generated Dependancy
   type GROUP_AFFINITY_x is record
      Mask : KAFFINITY;
      Group : WORD;
      Reserved : GROUP_AFFINITY_x_Reserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,GROUP_AFFINITY_x);
   for GROUP_AFFINITY_x use record
      Mask at 0 range 0..63;
      Group at 0 range 64..79;
      Reserved at 0 range 80..127;
   end record;
   for GROUP_AFFINITY_x'Size use 128;
   for GROUP_AFFINITY_x'Alignment use 8;
   subtype GROUP_AFFINITY is GROUP_AFFINITY_x;
   type PGROUP_AFFINITY is access all GROUP_AFFINITY_x;
   type HANDLE is access all Void;
   type PHANDLE is access all HANDLE;
   subtype FCHAR is BYTE;
   subtype FSHORT is WORD;
   subtype FLONG is DWORD;
   subtype HRESULT is Interfaces.C.Long;
   subtype CCHAR is Character;
   subtype LCID is DWORD;
   subtype PLCID is PDWORD;
   subtype LANGID is WORD;
   type COMPARTMENT_ID is (
      UNSPECIFIED_COMPARTMENT_ID,
      DEFAULT_COMPARTMENT_ID
   );
   for COMPARTMENT_ID use (
      UNSPECIFIED_COMPARTMENT_ID => 0,
      DEFAULT_COMPARTMENT_ID => 1
   );
   for COMPARTMENT_ID'Size use 32;
   type PCOMPARTMENT_ID is access all COMPARTMENT_ID;
   type FLOAT128_x is record
      LowPart : Interfaces.C.Extensions.long_long;
      HighPart : Interfaces.C.Extensions.long_long;
   end record;
   pragma Convention (C_Pass_By_Copy,FLOAT128_x);
   for FLOAT128_x use record
      LowPart at 0 range 0..63;
      HighPart at 0 range 64..127;
   end record;
   for FLOAT128_x'Size use 128;
   for FLOAT128_x'Alignment use 8;
   subtype FLOAT128 is FLOAT128_x;
   type PFLOAT128 is access all FLOAT128;
   subtype LONGLONG is Interfaces.C.Extensions.long_long;
   subtype ULONGLONG is Interfaces.C.Extensions.unsigned_long_long;
   type PLONGLONG is access all LONGLONG;
   type PULONGLONG is access all ULONGLONG;
   subtype USN is LONGLONG;
   type Anonymous_Record_1 is record
      LowPart : DWORD;
      HighPart : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_1);
   for Anonymous_Record_1 use record
      LowPart at 0 range 0..31;
      HighPart at 0 range 32..63;
   end record;
   for Anonymous_Record_1'Size use 64;
   for Anonymous_Record_1'Alignment use 4;
   type Anonymous_Record_2 is record
      LowPart : DWORD;
      HighPart : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_2);
   for Anonymous_Record_2 use record
      LowPart at 0 range 0..31;
      HighPart at 0 range 32..63;
   end record;
   for Anonymous_Record_2'Size use 64;
   for Anonymous_Record_2'Alignment use 4;
   type LARGE_INTEGER_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_1;
         when 1 =>
            field_2 : Anonymous_Record_2;
         when others => 
            QuadPart : LONGLONG;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,LARGE_INTEGER_x);
   pragma Unchecked_Union (LARGE_INTEGER_x);
   for LARGE_INTEGER_x'Size use 64;
   for LARGE_INTEGER_x'Alignment use 8;
   subtype LARGE_INTEGER is LARGE_INTEGER_x;
   type PLARGE_INTEGER is access all LARGE_INTEGER;
   type Anonymous_Record_3 is record
      LowPart : DWORD;
      HighPart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_3);
   for Anonymous_Record_3 use record
      LowPart at 0 range 0..31;
      HighPart at 0 range 32..63;
   end record;
   for Anonymous_Record_3'Size use 64;
   for Anonymous_Record_3'Alignment use 4;
   type Anonymous_Record_4 is record
      LowPart : DWORD;
      HighPart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_4);
   for Anonymous_Record_4 use record
      LowPart at 0 range 0..31;
      HighPart at 0 range 32..63;
   end record;
   for Anonymous_Record_4'Size use 64;
   for Anonymous_Record_4'Alignment use 4;
   type ULARGE_INTEGER_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_3;
         when 1 =>
            field_2 : Anonymous_Record_4;
         when others => 
            QuadPart : ULONGLONG;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,ULARGE_INTEGER_x);
   pragma Unchecked_Union (ULARGE_INTEGER_x);
   for ULARGE_INTEGER_x'Size use 64;
   for ULARGE_INTEGER_x'Alignment use 8;
   subtype ULARGE_INTEGER is ULARGE_INTEGER_x;
   type PULARGE_INTEGER is access all ULARGE_INTEGER;
   subtype RTL_REFERENCE_COUNT is LONG_PTR;
   type PRTL_REFERENCE_COUNT is access all LONG_PTR;
   subtype RTL_REFERENCE_COUNT32 is LONG;
   type PRTL_REFERENCE_COUNT32 is access all LONG;
   type LUID_x is record
      LowPart : DWORD;
      HighPart : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,LUID_x);
   for LUID_x use record
      LowPart at 0 range 0..31;
      HighPart at 0 range 32..63;
   end record;
   for LUID_x'Size use 64;
   for LUID_x'Alignment use 4;
   subtype LUID is LUID_x;
   type PLUID is access all LUID_x;
   subtype DWORDLONG is ULONGLONG;
   type PDWORDLONG is access all DWORDLONG;
   function rotl8(
      Value : Interfaces.C.unsigned_char;
      Shift : Interfaces.C.unsigned_char
   ) return Interfaces.C.unsigned_char;
   pragma import (Cpp,rotl8,"_rotl8");
   function rotl16(
      Value : Interfaces.C.unsigned_short;
      Shift : Interfaces.C.unsigned_char
   ) return Interfaces.C.unsigned_short;
   pragma import (Cpp,rotl16,"_rotl16");
   function rotr8(
      Value : Interfaces.C.unsigned_char;
      Shift : Interfaces.C.unsigned_char
   ) return Interfaces.C.unsigned_char;
   pragma import (Cpp,rotr8,"_rotr8");
   function rotr16(
      Value : Interfaces.C.unsigned_short;
      Shift : Interfaces.C.unsigned_char
   ) return Interfaces.C.unsigned_short;
   pragma import (Cpp,rotr16,"_rotr16");
   function rotl(
      Value : Interfaces.C.unsigned;
      Shift : Interfaces.C.Int
   ) return Interfaces.C.unsigned;
   pragma import (Cpp,rotl,"_rotl");
   function rotl64(
      Value : Interfaces.C.Extensions.unsigned_long_long;
      Shift : Interfaces.C.Int
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,rotl64,"_rotl64");
   function rotr(
      Value : Interfaces.C.unsigned;
      Shift : Interfaces.C.Int
   ) return Interfaces.C.unsigned;
   pragma import (Cpp,rotr,"_rotr");
   function rotr64(
      Value : Interfaces.C.Extensions.unsigned_long_long;
      Shift : Interfaces.C.Int
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,rotr64,"_rotr64");
   subtype BOOLEAN is BYTE;
   type PBOOLEAN is access all BOOLEAN;
   type LIST_ENTRY_x;
   subtype LIST_ENTRY is LIST_ENTRY_x;
   type LIST_ENTRY_x is record
      Flink : access LIST_ENTRY_x;
      Blink : access LIST_ENTRY_x;
   end record;
   pragma Convention (C_Pass_By_Copy,LIST_ENTRY_x);
   for LIST_ENTRY_x use record
      Flink at 0 range 0..63;
      Blink at 0 range 64..127;
   end record;
   for LIST_ENTRY_x'Size use 128;
   for LIST_ENTRY_x'Alignment use 8;
   type PLIST_ENTRY is access all LIST_ENTRY_x;
   type PRLIST_ENTRY is access all LIST_ENTRY_x;
   type SINGLE_LIST_ENTRY_x;
   subtype SINGLE_LIST_ENTRY is SINGLE_LIST_ENTRY_x;
   type SINGLE_LIST_ENTRY_x is record
      Next : access SINGLE_LIST_ENTRY_x;
   end record;
   pragma Convention (C_Pass_By_Copy,SINGLE_LIST_ENTRY_x);
   for SINGLE_LIST_ENTRY_x use record
      Next at 0 range 0..63;
   end record;
   for SINGLE_LIST_ENTRY_x'Size use 64;
   for SINGLE_LIST_ENTRY_x'Alignment use 8;
   type PSINGLE_LIST_ENTRY is access all SINGLE_LIST_ENTRY_x;
   type LIST_ENTRY32 is record
      Flink : DWORD;
      Blink : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,LIST_ENTRY32);
   for LIST_ENTRY32 use record
      Flink at 0 range 0..31;
      Blink at 0 range 32..63;
   end record;
   for LIST_ENTRY32'Size use 64;
   for LIST_ENTRY32'Alignment use 4;
   type PLIST_ENTRY32 is access all LIST_ENTRY32;
   type LIST_ENTRY64 is record
      Flink : ULONGLONG;
      Blink : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,LIST_ENTRY64);
   for LIST_ENTRY64 use record
      Flink at 0 range 0..63;
      Blink at 0 range 64..127;
   end record;
   for LIST_ENTRY64'Size use 128;
   for LIST_ENTRY64'Alignment use 8;
   type PLIST_ENTRY64 is access all LIST_ENTRY64;
   -- #include <guiddef.h>
   type GUID_x_Data4_Array is array(1..8) of Interfaces.C.unsigned_char; -- Auto Generated Dependancy
   type GUID_x is record
      Data1 : Interfaces.C.unsigned_long;
      Data2 : Interfaces.C.unsigned_short;
      Data3 : Interfaces.C.unsigned_short;
      Data4 : GUID_x_Data4_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,GUID_x);
   for GUID_x use record
      Data1 at 0 range 0..31;
      Data2 at 0 range 32..47;
      Data3 at 0 range 48..63;
      Data4 at 0 range 64..127;
   end record;
   for GUID_x'Size use 128;
   for GUID_x'Alignment use 4;
   subtype GUID is GUID_x;
   type LPGUID is access all GUID;
   type LPCGUID is access constant GUID;
   subtype IID is GUID;
   type LPIID is access all IID;
   subtype CLSID is GUID;
   type LPCLSID is access all CLSID;
   subtype FMTID is GUID;
   type LPFMTID is access all FMTID;
   -- #include <errno.h>
   function errno return PINT;
   pragma import (Cpp,errno,"_errno");
   function set_errno(
      Value : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,set_errno,"_set_errno");
   function get_errno(
      Value : access Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,get_errno,"_get_errno");
   function doserrno return PULONG;
   pragma import (Cpp,doserrno,"__doserrno");
   function set_doserrno(
      Value : Interfaces.C.unsigned_long
   ) return errno_t;
   pragma import (Cpp,set_doserrno,"_set_doserrno");
   function get_doserrno(
      Value : access Interfaces.C.unsigned_long
   ) return errno_t;
   pragma import (Cpp,get_doserrno,"_get_doserrno");
   -- #include <vcruntime_string.h>
   procedure memchr(
      Buf : access Void;
      Val : Interfaces.C.Int;
      MaxCount : size_t
   );
   pragma import (Cpp,memchr,"memchr");
   function memcmp(
      Buf1 : access Void;
      Buf2 : access Void;
      Size : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,memcmp,"memcmp");
   procedure memcpy(
      Dst : access Void;
      Src : access Void;
      Size : size_t
   );
   pragma import (Cpp,memcpy,"memcpy");
   procedure memmove(
      Dst : access Void;
      Src : access Void;
      Size : size_t
   );
   pragma import (Cpp,memmove,"memmove");
   procedure memset(
      Dst : access Void;
      Val : Interfaces.C.Int;
      Size : size_t
   );
   pragma import (Cpp,memset,"memset");
   function strchr(
      Str : access Character;
      Val : Interfaces.C.Int
   ) return LPCSTR;
   pragma import (Cpp,strchr,"strchr");
   function strrchr(
      Str : access Character;
      Ch : Interfaces.C.Int
   ) return LPCSTR;
   pragma import (Cpp,strrchr,"strrchr");
   function strstr(
      Str : access Character;
      SubStr : access Character
   ) return LPCSTR;
   pragma import (Cpp,strstr,"strstr");
   function wcschr(
      Str : access Wide_Character;
      Ch : Wide_Character
   ) return LPCWSTR;
   pragma import (Cpp,wcschr,"wcschr");
   function wcsrchr(
      Str : access Wide_Character;
      Ch : Wide_Character
   ) return LPCWSTR;
   pragma import (Cpp,wcsrchr,"wcsrchr");
   function wcsstr(
      Str : access Wide_Character;
      SubStr : access Wide_Character
   ) return LPCWSTR;
   pragma import (Cpp,wcsstr,"wcsstr");
   -- #include <corecrt_memcpy_s.h>
   -- memcpy_s(); -- inlined function not supported
   -- memmove_s(); -- inlined function not supported
   -- #include <corecrt_memory.h>
   function memicmp(
      Buf1 : access Void;
      Buf2 : access Void;
      Size : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,memicmp,"_memicmp");
   function memicmp_l(
      Buf1 : access Void;
      Buf2 : access Void;
      Size : size_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,memicmp_l,"_memicmp_l");
   procedure memccpy(
      Dst : access Void;
      Src : access Void;
      Val : Interfaces.C.Int;
      Size : size_t
   );
   pragma import (Cpp,memccpy,"memccpy");
   function memicmp_x(
      Buf1 : access Void;
      Buf2 : access Void;
      Size : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,memicmp_x,"memicmp");
   -- memchr_x(); -- inlined function not supported
   -- #include <corecrt_wstring.h>
   function wcscat_s(
      Destination : access Wide_Character;
      SizeInWords : rsize_t;
      Source : access Wide_Character
   ) return errno_t;
   pragma import (Cpp,wcscat_s,"wcscat_s");
   function wcscpy_s(
      Destination : access Wide_Character;
      SizeInWords : rsize_t;
      Source : access Wide_Character
   ) return errno_t;
   pragma import (Cpp,wcscpy_s,"wcscpy_s");
   function wcsncat_s(
      Destination : access Wide_Character;
      SizeInWords : rsize_t;
      Source : access Wide_Character;
      MaxCount : rsize_t
   ) return errno_t;
   pragma import (Cpp,wcsncat_s,"wcsncat_s");
   function wcsncpy_s(
      Destination : access Wide_Character;
      SizeInWords : rsize_t;
      Source : access Wide_Character;
      MaxCount : rsize_t
   ) return errno_t;
   pragma import (Cpp,wcsncpy_s,"wcsncpy_s");
   type Wide_Character_Ptr is access all Wide_Character; -- Auto Generated Dependancy
   function wcstok_s(
      String : access Wide_Character;
      Delimiter : access Wide_Character;
      Context : access Wide_Character_Ptr
   ) return LPWSTR;
   pragma import (Cpp,wcstok_s,"wcstok_s");
   function wcsdup(
      String : access Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcsdup,"_wcsdup");
   function wcscat(
      Destination : access Wide_Character;
      Source : access Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcscat,"wcscat");
   function wcscmp(
      String1 : access Wide_Character;
      String2 : access Wide_Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcscmp,"wcscmp");
   function wcscpy(
      Destination : access Wide_Character;
      Source : access Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcscpy,"wcscpy");
   function wcscspn(
      String : access Wide_Character;
      Control : access Wide_Character
   ) return size_t;
   pragma import (Cpp,wcscspn,"wcscspn");
   function wcslen(
      String : access Wide_Character
   ) return size_t;
   pragma import (Cpp,wcslen,"wcslen");
   function wcsnlen(
      Source : access Wide_Character;
      MaxCount : size_t
   ) return size_t;
   pragma import (Cpp,wcsnlen,"wcsnlen");
   -- wcsnlen_s(); -- inlined function not supported
   function wcsncat(
      Destination : access Wide_Character;
      Source : access Wide_Character;
      Count : size_t
   ) return LPWSTR;
   pragma import (Cpp,wcsncat,"wcsncat");
   function wcsncmp(
      String1 : access Wide_Character;
      String2 : access Wide_Character;
      MaxCount : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsncmp,"wcsncmp");
   function wcsncpy(
      Destination : access Wide_Character;
      Source : access Wide_Character;
      Count : size_t
   ) return LPWSTR;
   pragma import (Cpp,wcsncpy,"wcsncpy");
   function wcspbrk(
      String : access Wide_Character;
      Control : access Wide_Character
   ) return LPCWSTR;
   pragma import (Cpp,wcspbrk,"wcspbrk");
   function wcsspn(
      String : access Wide_Character;
      Control : access Wide_Character
   ) return size_t;
   pragma import (Cpp,wcsspn,"wcsspn");
   function wcstok(
      String : access Wide_Character;
      Delimiter : access Wide_Character;
      Context : access Wide_Character_Ptr
   ) return LPWSTR;
   pragma import (Cpp,wcstok,"wcstok");
   -- wcstok_x(); -- inlined function not supported
   -- wcstok_x(); -- inlined function not supported
   function wcserror(
      ErrorNumber : Interfaces.C.Int
   ) return LPWSTR;
   pragma import (Cpp,wcserror,"_wcserror");
   function wcserror_s(
      Buffer : access Wide_Character;
      SizeInWords : size_t;
      ErrorNumber : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,wcserror_s,"_wcserror_s");
   function wcserror_x(
      String : access Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcserror_x,"__wcserror");
   function wcserror_s_x(
      Buffer : access Wide_Character;
      SizeInWords : size_t;
      ErrorMessage : access Wide_Character
   ) return errno_t;
   pragma import (Cpp,wcserror_s_x,"__wcserror_s");
   function wcsicmp(
      String1 : access Wide_Character;
      String2 : access Wide_Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsicmp,"_wcsicmp");
   function wcsicmp_l(
      String1 : access Wide_Character;
      String2 : access Wide_Character;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsicmp_l,"_wcsicmp_l");
   function wcsnicmp(
      String1 : access Wide_Character;
      String2 : access Wide_Character;
      MaxCount : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsnicmp,"_wcsnicmp");
   function wcsnicmp_l(
      String1 : access Wide_Character;
      String2 : access Wide_Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsnicmp_l,"_wcsnicmp_l");
   function wcsnset_s(
      Destination : access Wide_Character;
      SizeInWords : size_t;
      Value : Wide_Character;
      MaxCount : size_t
   ) return errno_t;
   pragma import (Cpp,wcsnset_s,"_wcsnset_s");
   function wcsnset(
      String : access Wide_Character;
      Value : Wide_Character;
      MaxCount : size_t
   ) return LPWSTR;
   pragma import (Cpp,wcsnset,"_wcsnset");
   function wcsrev(
      String : access Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcsrev,"_wcsrev");
   function wcsset_s(
      Destination : access Wide_Character;
      SizeInWords : size_t;
      Value : Wide_Character
   ) return errno_t;
   pragma import (Cpp,wcsset_s,"_wcsset_s");
   function wcsset(
      String : access Wide_Character;
      Value : Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcsset,"_wcsset");
   function wcslwr_s(
      String : access Wide_Character;
      SizeInWords : size_t
   ) return errno_t;
   pragma import (Cpp,wcslwr_s,"_wcslwr_s");
   function wcslwr(
      String : access Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcslwr,"_wcslwr");
   function wcslwr_s_l(
      String : access Wide_Character;
      SizeInWords : size_t;
      Locale : locale_t_x
   ) return errno_t;
   pragma import (Cpp,wcslwr_s_l,"_wcslwr_s_l");
   function wcslwr_l(
      String : access Wide_Character;
      Locale : locale_t_x
   ) return LPWSTR;
   pragma import (Cpp,wcslwr_l,"_wcslwr_l");
   function wcsupr_s(
      String : access Wide_Character;
      Size : size_t
   ) return errno_t;
   pragma import (Cpp,wcsupr_s,"_wcsupr_s");
   function wcsupr(
      String : access Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcsupr,"_wcsupr");
   function wcsupr_s_l(
      String : access Wide_Character;
      Size : size_t;
      Locale : locale_t_x
   ) return errno_t;
   pragma import (Cpp,wcsupr_s_l,"_wcsupr_s_l");
   function wcsupr_l(
      String : access Wide_Character;
      Locale : locale_t_x
   ) return LPWSTR;
   pragma import (Cpp,wcsupr_l,"_wcsupr_l");
   function wcsxfrm(
      Destination : access Wide_Character;
      Source : access Wide_Character;
      MaxCount : size_t
   ) return size_t;
   pragma import (Cpp,wcsxfrm,"wcsxfrm");
   function wcsxfrm_l(
      Destination : access Wide_Character;
      Source : access Wide_Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return size_t;
   pragma import (Cpp,wcsxfrm_l,"_wcsxfrm_l");
   function wcscoll(
      String1 : access Wide_Character;
      String2 : access Wide_Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcscoll,"wcscoll");
   function wcscoll_l(
      String1 : access Wide_Character;
      String2 : access Wide_Character;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcscoll_l,"_wcscoll_l");
   function wcsicoll(
      String1 : access Wide_Character;
      String2 : access Wide_Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsicoll,"_wcsicoll");
   function wcsicoll_l(
      String1 : access Wide_Character;
      String2 : access Wide_Character;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsicoll_l,"_wcsicoll_l");
   function wcsncoll(
      String1 : access Wide_Character;
      String2 : access Wide_Character;
      MaxCount : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsncoll,"_wcsncoll");
   function wcsncoll_l(
      String1 : access Wide_Character;
      String2 : access Wide_Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsncoll_l,"_wcsncoll_l");
   function wcsnicoll(
      String1 : access Wide_Character;
      String2 : access Wide_Character;
      MaxCount : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsnicoll,"_wcsnicoll");
   function wcsnicoll_l(
      String1 : access Wide_Character;
      String2 : access Wide_Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsnicoll_l,"_wcsnicoll_l");
   -- wcschr_x(); -- inlined function not supported
   -- wcspbrk_x(); -- inlined function not supported
   -- wcsrchr_x(); -- inlined function not supported
   -- wcsstr_x(); -- inlined function not supported
   function wcsdup_x(
      String : access Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcsdup_x,"wcsdup");
   function wcsicmp_x(
      String1 : access Wide_Character;
      String2 : access Wide_Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsicmp_x,"wcsicmp");
   function wcsnicmp_x(
      String1 : access Wide_Character;
      String2 : access Wide_Character;
      MaxCount : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsnicmp_x,"wcsnicmp");
   function wcsnset_x(
      String : access Wide_Character;
      Value : Wide_Character;
      MaxCount : size_t
   ) return LPWSTR;
   pragma import (Cpp,wcsnset_x,"wcsnset");
   function wcsrev_x(
      String : access Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcsrev_x,"wcsrev");
   function wcsset_x(
      String : access Wide_Character;
      Value : Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcsset_x,"wcsset");
   function wcslwr_x(
      String : access Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcslwr_x,"wcslwr");
   function wcsupr_x(
      String : access Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wcsupr_x,"wcsupr");
   function wcsicoll_x(
      String1 : access Wide_Character;
      String2 : access Wide_Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,wcsicoll_x,"wcsicoll");
   -- #include <string.h>
   function strcpy_s(
      Destination : access Character;
      SizeInBytes : rsize_t;
      Source : access Character
   ) return errno_t;
   pragma import (Cpp,strcpy_s,"strcpy_s");
   function strcat_s(
      Destination : access Character;
      SizeInBytes : rsize_t;
      Source : access Character
   ) return errno_t;
   pragma import (Cpp,strcat_s,"strcat_s");
   function strerror_s(
      Buffer : access Character;
      SizeInBytes : size_t;
      ErrorNumber : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,strerror_s,"strerror_s");
   function strncat_s(
      Destination : access Character;
      SizeInBytes : rsize_t;
      Source : access Character;
      MaxCount : rsize_t
   ) return errno_t;
   pragma import (Cpp,strncat_s,"strncat_s");
   function strncpy_s(
      Destination : access Character;
      SizeInBytes : rsize_t;
      Source : access Character;
      MaxCount : rsize_t
   ) return errno_t;
   pragma import (Cpp,strncpy_s,"strncpy_s");
   function strtok_s(
      String : access Character;
      Delimiter : access Character;
      Context : access va_list
   ) return LPSTR;
   pragma import (Cpp,strtok_s,"strtok_s");
   procedure memccpy_x(
      Dst : access Void;
      Src : access Void;
      Val : Interfaces.C.Int;
      MaxCount : size_t
   );
   pragma import (Cpp,memccpy_x,"_memccpy");
   function strcat(
      Destination : access Character;
      Source : access Character
   ) return LPSTR;
   pragma import (Cpp,strcat,"strcat");
   function strcmp(
      Str1 : access Character;
      Str2 : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,strcmp,"strcmp");
   function strcmpi(
      String1 : access Character;
      String2 : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,strcmpi,"_strcmpi");
   function strcoll(
      String1 : access Character;
      String2 : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,strcoll,"strcoll");
   function strcoll_l(
      String1 : access Character;
      String2 : access Character;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,strcoll_l,"_strcoll_l");
   function strcpy(
      Destination : access Character;
      Source : access Character
   ) return LPSTR;
   pragma import (Cpp,strcpy,"strcpy");
   function strcspn(
      Str : access Character;
      Control : access Character
   ) return size_t;
   pragma import (Cpp,strcspn,"strcspn");
   function strdup(
      Source : access Character
   ) return LPSTR;
   pragma import (Cpp,strdup,"_strdup");
   function strerror(
      ErrorMessage : access Character
   ) return LPSTR;
   pragma import (Cpp,strerror,"_strerror");
   function strerror_s_x(
      Buffer : access Character;
      SizeInBytes : size_t;
      ErrorMessage : access Character
   ) return errno_t;
   pragma import (Cpp,strerror_s_x,"_strerror_s");
   function strerror_x(
      ErrorMessage : Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,strerror_x,"strerror");
   function stricmp(
      String1 : access Character;
      String2 : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,stricmp,"_stricmp");
   function stricoll(
      String1 : access Character;
      String2 : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,stricoll,"_stricoll");
   function stricoll_l(
      String1 : access Character;
      String2 : access Character;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,stricoll_l,"_stricoll_l");
   function stricmp_l(
      String1 : access Character;
      String2 : access Character;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,stricmp_l,"_stricmp_l");
   function strlen(
      Str : access Character
   ) return size_t;
   pragma import (Cpp,strlen,"strlen");
   function strlwr_s(
      String : access Character;
      Size : size_t
   ) return errno_t;
   pragma import (Cpp,strlwr_s,"_strlwr_s");
   function strlwr(
      String : access Character
   ) return LPSTR;
   pragma import (Cpp,strlwr,"_strlwr");
   function strlwr_s_l(
      String : access Character;
      Size : size_t;
      Locale : locale_t_x
   ) return errno_t;
   pragma import (Cpp,strlwr_s_l,"_strlwr_s_l");
   function strlwr_l(
      String : access Character;
      Locale : locale_t_x
   ) return LPSTR;
   pragma import (Cpp,strlwr_l,"_strlwr_l");
   function strncat(
      Destination : access Character;
      Source : access Character;
      Count : size_t
   ) return LPSTR;
   pragma import (Cpp,strncat,"strncat");
   function strncmp(
      Str1 : access Character;
      Str2 : access Character;
      MaxCount : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,strncmp,"strncmp");
   function strnicmp(
      String1 : access Character;
      String2 : access Character;
      MaxCount : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,strnicmp,"_strnicmp");
   function strnicmp_l(
      String1 : access Character;
      String2 : access Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,strnicmp_l,"_strnicmp_l");
   function strnicoll(
      String1 : access Character;
      String2 : access Character;
      MaxCount : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,strnicoll,"_strnicoll");
   function strnicoll_l(
      String1 : access Character;
      String2 : access Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,strnicoll_l,"_strnicoll_l");
   function strncoll(
      String1 : access Character;
      String2 : access Character;
      MaxCount : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,strncoll,"_strncoll");
   function strncoll_l(
      String1 : access Character;
      String2 : access Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,strncoll_l,"_strncoll_l");
   function strncnt(
      String : access Character;
      Count : size_t
   ) return size_t;
   pragma import (Cpp,strncnt,"__strncnt");
   function strncpy(
      Destination : access Character;
      Source : access Character;
      Count : size_t
   ) return LPSTR;
   pragma import (Cpp,strncpy,"strncpy");
   function strnlen(
      String : access Character;
      MaxCount : size_t
   ) return size_t;
   pragma import (Cpp,strnlen,"strnlen");
   -- strnlen_s(); -- inlined function not supported
   function strnset_s(
      String : access Character;
      SizeInBytes : size_t;
      Value : Interfaces.C.Int;
      MaxCount : size_t
   ) return errno_t;
   pragma import (Cpp,strnset_s,"_strnset_s");
   function strnset(
      Destination : access Character;
      Value : Interfaces.C.Int;
      Count : size_t
   ) return LPSTR;
   pragma import (Cpp,strnset,"_strnset");
   function strpbrk(
      Str : access Character;
      Control : access Character
   ) return LPCSTR;
   pragma import (Cpp,strpbrk,"strpbrk");
   function strrev(
      Str : access Character
   ) return LPSTR;
   pragma import (Cpp,strrev,"_strrev");
   function strset_s(
      Destination : access Character;
      DestinationSize : size_t;
      Value : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,strset_s,"_strset_s");
   function strset(
      Destination : access Character;
      Value : Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,strset,"_strset");
   function strspn(
      Str : access Character;
      Control : access Character
   ) return size_t;
   pragma import (Cpp,strspn,"strspn");
   function strtok(
      String : access Character;
      Delimiter : access Character
   ) return LPSTR;
   pragma import (Cpp,strtok,"strtok");
   function strupr_s(
      String : access Character;
      Size : size_t
   ) return errno_t;
   pragma import (Cpp,strupr_s,"_strupr_s");
   function strupr(
      String : access Character
   ) return LPSTR;
   pragma import (Cpp,strupr,"_strupr");
   function strupr_s_l(
      String : access Character;
      Size : size_t;
      Locale : locale_t_x
   ) return errno_t;
   pragma import (Cpp,strupr_s_l,"_strupr_s_l");
   function strupr_l(
      String : access Character;
      Locale : locale_t_x
   ) return LPSTR;
   pragma import (Cpp,strupr_l,"_strupr_l");
   function strxfrm(
      Destination : access Character;
      Source : access Character;
      MaxCount : size_t
   ) return size_t;
   pragma import (Cpp,strxfrm,"strxfrm");
   function strxfrm_l(
      Destination : access Character;
      Source : access Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return size_t;
   pragma import (Cpp,strxfrm_l,"_strxfrm_l");
   -- strchr_x(); -- inlined function not supported
   -- strpbrk_x(); -- inlined function not supported
   -- strrchr_x(); -- inlined function not supported
   -- strstr_x(); -- inlined function not supported
   function strdup_x(
      String : access Character
   ) return LPSTR;
   pragma import (Cpp,strdup_x,"strdup");
   function strcmpi_x(
      String1 : access Character;
      String2 : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,strcmpi_x,"strcmpi");
   function stricmp_x(
      String1 : access Character;
      String2 : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,stricmp_x,"stricmp");
   function strlwr_x(
      String : access Character
   ) return LPSTR;
   pragma import (Cpp,strlwr_x,"strlwr");
   function strnicmp_x(
      String1 : access Character;
      String2 : access Character;
      MaxCount : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,strnicmp_x,"strnicmp");
   function strnset_x(
      String : access Character;
      Value : Interfaces.C.Int;
      MaxCount : size_t
   ) return LPSTR;
   pragma import (Cpp,strnset_x,"strnset");
   function strrev_x(
      String : access Character
   ) return LPSTR;
   pragma import (Cpp,strrev_x,"strrev");
   function strset_x(
      String : access Character;
      Value : Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,strset_x,"strset");
   function strupr_x(
      String : access Character
   ) return LPSTR;
   pragma import (Cpp,strupr_x,"strupr");
   -- #include <guiddef.h>
   -- InlineIsEqualGUID(); -- inlined function not supported
   -- IsEqualGUID(); -- inlined function not supported
   -- operator==(); -- inlined function not supported
   -- operator!=(); -- inlined function not supported
   -- #include <winnt.h>
   type OBJECTID_x is record
      Lineage : GUID;
      Uniquifier : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,OBJECTID_x);
   for OBJECTID_x use record
      Lineage at 0 range 0..127;
      Uniquifier at 0 range 128..159;
   end record;
   for OBJECTID_x'Size use 160;
   for OBJECTID_x'Alignment use 4;
   subtype OBJECTID is OBJECTID_x;
   subtype EXCEPTION_ROUTINE is System.Address; -- [Note - CXType_FunctionProto] Profile - EXCEPTION_DISPOSITION (struct _EXCEPTION_RECORD *, PVOID, struct _CONTEXT *, PVOID)
   type PEXCEPTION_ROUTINE is access function (p1 : access EXCEPTION_RECORD_x ; p2 : PVOID ; p3 : access CONTEXT_x ; p4 : PVOID) return EXCEPTION_DISPOSITION; -- EXCEPTION_DISPOSITION (struct _EXCEPTION_RECORD *, PVOID, struct _CONTEXT *, PVOID)
   pragma Convention(C,PEXCEPTION_ROUTINE);
   type ENUM_FLAG_INTEGER_FOR_SIZE_x is null record;
   pragma Convention (C_Pass_By_Copy,ENUM_FLAG_INTEGER_FOR_SIZE_x);
   subtype type_x is INT8;
   subtype KSPIN_LOCK is ULONG_PTR;
   type PKSPIN_LOCK is access all KSPIN_LOCK;
   type M128A_x is record
      Low : ULONGLONG;
      High : LONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,M128A_x);
   for M128A_x use record
      Low at 0 range 0..63;
      High at 0 range 64..127;
   end record;
   for M128A_x'Size use 128;
   for M128A_x'Alignment use 16;
   subtype M128A is M128A_x;
   type PM128A is access all M128A_x;
   type XSAVE_FORMAT_x_FloatRegisters_Array is array(1..8) of M128A; -- Auto Generated Dependancy
   type XSAVE_FORMAT_x_XmmRegisters_Array is array(1..16) of M128A; -- Auto Generated Dependancy
   type XSAVE_FORMAT_x_Reserved4_Array is array(1..96) of BYTE; -- Auto Generated Dependancy
   type XSAVE_FORMAT_x is record
      ControlWord : WORD;
      StatusWord : WORD;
      TagWord : BYTE;
      Reserved1 : BYTE;
      ErrorOpcode : WORD;
      ErrorOffset : DWORD;
      ErrorSelector : WORD;
      Reserved2 : WORD;
      DataOffset : DWORD;
      DataSelector : WORD;
      Reserved3 : WORD;
      MxCsr : DWORD;
      MxCsr_Mask : DWORD;
      FloatRegisters : XSAVE_FORMAT_x_FloatRegisters_Array;
      XmmRegisters : XSAVE_FORMAT_x_XmmRegisters_Array;
      Reserved4 : XSAVE_FORMAT_x_Reserved4_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,XSAVE_FORMAT_x);
   for XSAVE_FORMAT_x use record
      ControlWord at 0 range 0..15;
      StatusWord at 0 range 16..31;
      TagWord at 0 range 32..39;
      Reserved1 at 0 range 40..47;
      ErrorOpcode at 0 range 48..63;
      ErrorOffset at 0 range 64..95;
      ErrorSelector at 0 range 96..111;
      Reserved2 at 0 range 112..127;
      DataOffset at 0 range 128..159;
      DataSelector at 0 range 160..175;
      Reserved3 at 0 range 176..191;
      MxCsr at 0 range 192..223;
      MxCsr_Mask at 0 range 224..255;
      FloatRegisters at 0 range 256..1279;
      XmmRegisters at 0 range 1280..3327;
      Reserved4 at 0 range 3328..4095;
   end record;
   for XSAVE_FORMAT_x'Size use 4096;
   for XSAVE_FORMAT_x'Alignment use 16;
   subtype XSAVE_FORMAT is XSAVE_FORMAT_x;
   type PXSAVE_FORMAT is access all XSAVE_FORMAT_x;
   type XSAVE_CET_U_FORMAT_x is record
      Ia32CetUMsr : DWORD64;
      Ia32Pl3SspMsr : DWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,XSAVE_CET_U_FORMAT_x);
   for XSAVE_CET_U_FORMAT_x use record
      Ia32CetUMsr at 0 range 0..63;
      Ia32Pl3SspMsr at 0 range 64..127;
   end record;
   for XSAVE_CET_U_FORMAT_x'Size use 128;
   for XSAVE_CET_U_FORMAT_x'Alignment use 8;
   subtype XSAVE_CET_U_FORMAT is XSAVE_CET_U_FORMAT_x;
   type PXSAVE_CET_U_FORMAT is access all XSAVE_CET_U_FORMAT_x;
   type XSAVE_AREA_HEADER_x_Reserved2_Array is array(1..6) of DWORD64; -- Auto Generated Dependancy
   type XSAVE_AREA_HEADER_x is record
      Mask : DWORD64;
      CompactionMask : DWORD64;
      Reserved2 : XSAVE_AREA_HEADER_x_Reserved2_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,XSAVE_AREA_HEADER_x);
   for XSAVE_AREA_HEADER_x use record
      Mask at 0 range 0..63;
      CompactionMask at 0 range 64..127;
      Reserved2 at 0 range 128..511;
   end record;
   for XSAVE_AREA_HEADER_x'Size use 512;
   for XSAVE_AREA_HEADER_x'Alignment use 8;
   subtype XSAVE_AREA_HEADER is XSAVE_AREA_HEADER_x;
   type PXSAVE_AREA_HEADER is access all XSAVE_AREA_HEADER_x;
   type XSAVE_AREA_x is record
      LegacyState : XSAVE_FORMAT;
      Header : XSAVE_AREA_HEADER;
   end record;
   pragma Convention (C_Pass_By_Copy,XSAVE_AREA_x);
   for XSAVE_AREA_x use record
      LegacyState at 0 range 0..4095;
      Header at 0 range 4096..4607;
   end record;
   for XSAVE_AREA_x'Size use 4608;
   for XSAVE_AREA_x'Alignment use 16;
   subtype XSAVE_AREA is XSAVE_AREA_x;
   type PXSAVE_AREA is access all XSAVE_AREA_x;
   type XSTATE_CONTEXT_x is record
      Mask : DWORD64;
      Length : DWORD;
      Reserved1 : DWORD;
      Area : PXSAVE_AREA;
      Buffer : PVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,XSTATE_CONTEXT_x);
   for XSTATE_CONTEXT_x use record
      Mask at 0 range 0..63;
      Length at 0 range 64..95;
      Reserved1 at 0 range 96..127;
      Area at 0 range 128..191;
      Buffer at 0 range 192..255;
   end record;
   for XSTATE_CONTEXT_x'Size use 256;
   for XSTATE_CONTEXT_x'Alignment use 8;
   subtype XSTATE_CONTEXT is XSTATE_CONTEXT_x;
   type PXSTATE_CONTEXT is access all XSTATE_CONTEXT_x;
   type Anonymous_Record_5 is record
      BeginAddress : DWORD;
      EndAddress : DWORD;
      HandlerAddress : DWORD;
      JumpTarget : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_5);
   for Anonymous_Record_5 use record
      BeginAddress at 0 range 0..31;
      EndAddress at 0 range 32..63;
      HandlerAddress at 0 range 64..95;
      JumpTarget at 0 range 96..127;
   end record;
   for Anonymous_Record_5'Size use 128;
   for Anonymous_Record_5'Alignment use 4;
   type SCOPE_TABLE_AMD64_x_ScopeRecord_Array is array(1..1) of Anonymous_Record_5; -- Auto Generated Dependancy
   type SCOPE_TABLE_AMD64_x is record
      Count : DWORD;
      ScopeRecord : SCOPE_TABLE_AMD64_x_ScopeRecord_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SCOPE_TABLE_AMD64_x);
   for SCOPE_TABLE_AMD64_x use record
      Count at 0 range 0..31;
      ScopeRecord at 0 range 32..159;
   end record;
   for SCOPE_TABLE_AMD64_x'Size use 160;
   for SCOPE_TABLE_AMD64_x'Alignment use 4;
   subtype SCOPE_TABLE_AMD64 is SCOPE_TABLE_AMD64_x;
   type PSCOPE_TABLE_AMD64 is access all SCOPE_TABLE_AMD64_x;
   function bittest(
      Base : access constant LONG;
      Offset : LONG
   ) return BOOLEAN;
   pragma import (Cpp,bittest,"_bittest");
   function bittestandcomplement(
      Base : access LONG;
      Offset : LONG
   ) return BOOLEAN;
   pragma import (Cpp,bittestandcomplement,"_bittestandcomplement");
   function bittestandset(
      Base : access LONG;
      Offset : LONG
   ) return BOOLEAN;
   pragma import (Cpp,bittestandset,"_bittestandset");
   function bittestandreset(
      Base : access LONG;
      Offset : LONG
   ) return BOOLEAN;
   pragma import (Cpp,bittestandreset,"_bittestandreset");
   function interlockedbittestandset(
      Base : access LONG;
      Offset : LONG
   ) return BOOLEAN;
   pragma import (Cpp,interlockedbittestandset,"_interlockedbittestandset");
   function interlockedbittestandreset(
      Base : access LONG;
      Offset : LONG
   ) return BOOLEAN;
   pragma import (Cpp,interlockedbittestandreset,"_interlockedbittestandreset");
   function bittest64(
      Base : access constant LONG64;
      Offset : LONG64
   ) return BOOLEAN;
   pragma import (Cpp,bittest64,"_bittest64");
   function bittestandcomplement64(
      Base : access LONG64;
      Offset : LONG64
   ) return BOOLEAN;
   pragma import (Cpp,bittestandcomplement64,"_bittestandcomplement64");
   function bittestandset64(
      Base : access LONG64;
      Offset : LONG64
   ) return BOOLEAN;
   pragma import (Cpp,bittestandset64,"_bittestandset64");
   function bittestandreset64(
      Base : access LONG64;
      Offset : LONG64
   ) return BOOLEAN;
   pragma import (Cpp,bittestandreset64,"_bittestandreset64");
   function interlockedbittestandset64(
      Base : access LONG64;
      Offset : LONG64
   ) return BOOLEAN;
   pragma import (Cpp,interlockedbittestandset64,"_interlockedbittestandset64");
   function interlockedbittestandreset64(
      Base : access LONG64;
      Offset : LONG64
   ) return BOOLEAN;
   pragma import (Cpp,interlockedbittestandreset64,"_interlockedbittestandreset64");
   function BitScanForward(
      Index : access DWORD;
      Mask : DWORD
   ) return BOOLEAN;
   pragma import (Cpp,BitScanForward,"_BitScanForward");
   function BitScanReverse(
      Index : access DWORD;
      Mask : DWORD
   ) return BOOLEAN;
   pragma import (Cpp,BitScanReverse,"_BitScanReverse");
   function BitScanForward64(
      Index : access DWORD;
      Mask : DWORD64
   ) return BOOLEAN;
   pragma import (Cpp,BitScanForward64,"_BitScanForward64");
   function BitScanReverse64(
      Index : access DWORD;
      Mask : DWORD64
   ) return BOOLEAN;
   pragma import (Cpp,BitScanReverse64,"_BitScanReverse64");
   function InterlockedIncrement16(
      Addend : access SHORT
   ) return SHORT;
   pragma import (Cpp,InterlockedIncrement16,"_InterlockedIncrement16");
   function InterlockedDecrement16(
      Addend : access SHORT
   ) return SHORT;
   pragma import (Cpp,InterlockedDecrement16,"_InterlockedDecrement16");
   function InterlockedCompareExchange16(
      Destination : access SHORT;
      ExChange : SHORT;
      Comperand : SHORT
   ) return SHORT;
   pragma import (Cpp,InterlockedCompareExchange16,"_InterlockedCompareExchange16");
   function InterlockedAnd(
      Destination : access LONG;
      Value : LONG
   ) return LONG;
   pragma import (Cpp,InterlockedAnd,"_InterlockedAnd");
   function InterlockedOr(
      Destination : access LONG;
      Value : LONG
   ) return LONG;
   pragma import (Cpp,InterlockedOr,"_InterlockedOr");
   function InterlockedXor(
      Destination : access LONG;
      Value : LONG
   ) return LONG;
   pragma import (Cpp,InterlockedXor,"_InterlockedXor");
   function InterlockedAnd64(
      Destination : access LONG64;
      Value : LONG64
   ) return LONG64;
   pragma import (Cpp,InterlockedAnd64,"_InterlockedAnd64");
   function InterlockedOr64(
      Destination : access LONG64;
      Value : LONG64
   ) return LONG64;
   pragma import (Cpp,InterlockedOr64,"_InterlockedOr64");
   function InterlockedXor64(
      Destination : access LONG64;
      Value : LONG64
   ) return LONG64;
   pragma import (Cpp,InterlockedXor64,"_InterlockedXor64");
   function InterlockedIncrement(
      Addend : access LONG
   ) return LONG;
   pragma import (Cpp,InterlockedIncrement,"_InterlockedIncrement");
   function InterlockedDecrement(
      Addend : access LONG
   ) return LONG;
   pragma import (Cpp,InterlockedDecrement,"_InterlockedDecrement");
   function InterlockedExchange(
      Target : access LONG;
      Value : LONG
   ) return LONG;
   pragma import (Cpp,InterlockedExchange,"_InterlockedExchange");
   function InterlockedExchangeAdd(
      Addend : access LONG;
      Value : LONG
   ) return LONG;
   pragma import (Cpp,InterlockedExchangeAdd,"_InterlockedExchangeAdd");
   -- InlineInterlockedAdd(); -- inlined function not supported
   function InterlockedCompareExchange(
      Destination : access LONG;
      ExChange : LONG;
      Comperand : LONG
   ) return LONG;
   pragma import (Cpp,InterlockedCompareExchange,"_InterlockedCompareExchange");
   function InterlockedIncrement64(
      Addend : access LONG64
   ) return LONG64;
   pragma import (Cpp,InterlockedIncrement64,"_InterlockedIncrement64");
   function InterlockedDecrement64(
      Addend : access LONG64
   ) return LONG64;
   pragma import (Cpp,InterlockedDecrement64,"_InterlockedDecrement64");
   function InterlockedExchange64(
      Target : access LONG64;
      Value : LONG64
   ) return LONG64;
   pragma import (Cpp,InterlockedExchange64,"_InterlockedExchange64");
   function InterlockedExchangeAdd64(
      Addend : access LONG64;
      Value : LONG64
   ) return LONG64;
   pragma import (Cpp,InterlockedExchangeAdd64,"_InterlockedExchangeAdd64");
   -- InlineInterlockedAdd64(); -- inlined function not supported
   function InterlockedCompareExchange64(
      Destination : access LONG64;
      ExChange : LONG64;
      Comperand : LONG64
   ) return LONG64;
   pragma import (Cpp,InterlockedCompareExchange64,"_InterlockedCompareExchange64");
   function InterlockedCompareExchange128(
      Destination : access LONG64;
      ExchangeHigh : LONG64;
      ExchangeLow : LONG64;
      ComparandResult : access LONG64
   ) return BOOLEAN;
   pragma import (Cpp,InterlockedCompareExchange128,"_InterlockedCompareExchange128");
   procedure InterlockedCompareExchangePointer(
      Destination : access PVOID;
      Exchange : PVOID;
      Comperand : PVOID
   );
   pragma import (Cpp,InterlockedCompareExchangePointer,"_InterlockedCompareExchangePointer");
   procedure InterlockedExchangePointer(
      Target : access PVOID;
      Value : PVOID
   );
   pragma import (Cpp,InterlockedExchangePointer,"_InterlockedExchangePointer");
   function InterlockedExchange8(
      Target : access CHAR;
      Value : CHAR
   ) return CHAR;
   pragma import (Cpp,InterlockedExchange8,"_InterlockedExchange8");
   function InterlockedExchange16(
      Destination : access SHORT;
      ExChange : SHORT
   ) return SHORT;
   pragma import (Cpp,InterlockedExchange16,"_InterlockedExchange16");
   function InterlockedExchangeAdd8(
      Addend : access Character;
      Value : Character
   ) return Character;
   pragma import (Cpp,InterlockedExchangeAdd8,"_InterlockedExchangeAdd8");
   function InterlockedAnd8(
      Destination : access Character;
      Value : Character
   ) return Character;
   pragma import (Cpp,InterlockedAnd8,"_InterlockedAnd8");
   function InterlockedOr8(
      Destination : access Character;
      Value : Character
   ) return Character;
   pragma import (Cpp,InterlockedOr8,"_InterlockedOr8");
   function InterlockedXor8(
      Destination : access Character;
      Value : Character
   ) return Character;
   pragma import (Cpp,InterlockedXor8,"_InterlockedXor8");
   function InterlockedAnd16(
      Destination : access SHORT;
      Value : SHORT
   ) return SHORT;
   pragma import (Cpp,InterlockedAnd16,"_InterlockedAnd16");
   function InterlockedOr16(
      Destination : access SHORT;
      Value : SHORT
   ) return SHORT;
   pragma import (Cpp,InterlockedOr16,"_InterlockedOr16");
   function InterlockedXor16(
      Destination : access SHORT;
      Value : SHORT
   ) return SHORT;
   pragma import (Cpp,InterlockedXor16,"_InterlockedXor16");
   type cpuidex_CPUInfo_Array is array(1..4) of Interfaces.C.Int; -- Auto Generated Dependancy
   procedure cpuidex(
      CPUInfo : cpuidex_CPUInfo_Array;
      function_x : Interfaces.C.Int;
      SubLeaf : Interfaces.C.Int
   );
   pragma import (Cpp,cpuidex,"__cpuidex");
   procedure mm_clflush(
      Address : access Void
   );
   pragma import (Cpp,mm_clflush,"_mm_clflush");
   procedure ReadWriteBarrier;
   pragma import (Cpp,ReadWriteBarrier,"_ReadWriteBarrier");
   procedure faststorefence;
   pragma import (Cpp,faststorefence,"__faststorefence");
   procedure mm_lfence;
   pragma import (Cpp,mm_lfence,"_mm_lfence");
   procedure mm_mfence;
   pragma import (Cpp,mm_mfence,"_mm_mfence");
   procedure mm_sfence;
   pragma import (Cpp,mm_sfence,"_mm_sfence");
   procedure mm_pause;
   pragma import (Cpp,mm_pause,"_mm_pause");
   procedure mm_prefetch(
      a : access constant CHAR;
      sel : Interfaces.C.Int
   );
   pragma import (Cpp,mm_prefetch,"_mm_prefetch");
   procedure m_prefetchw(
      Source : access Void
   );
   pragma import (Cpp,m_prefetchw,"_m_prefetchw");
   function mm_getcsr return Interfaces.C.unsigned;
   pragma import (Cpp,mm_getcsr,"_mm_getcsr");
   procedure mm_setcsr(
      MxCsr : Interfaces.C.unsigned
   );
   pragma import (Cpp,mm_setcsr,"_mm_setcsr");
   function getcallerseflags return Interfaces.C.unsigned;
   pragma import (Cpp,getcallerseflags,"__getcallerseflags");
   function segmentlimit(
      Selector : DWORD
   ) return DWORD;
   pragma import (Cpp,segmentlimit,"__segmentlimit");
   function readpmc(
      Counter : DWORD
   ) return DWORD64;
   pragma import (Cpp,readpmc,"__readpmc");
   function rdtsc return DWORD64;
   pragma import (Cpp,rdtsc,"__rdtsc");
   procedure movsb(
      Destination : PBYTE;
      Source : access constant BYTE;
      Count : SIZE_T
   );
   pragma import (Cpp,movsb,"__movsb");
   procedure movsw(
      Destination : PWORD;
      Source : access constant WORD;
      Count : SIZE_T
   );
   pragma import (Cpp,movsw,"__movsw");
   procedure movsd(
      Destination : PDWORD;
      Source : access constant DWORD;
      Count : SIZE_T
   );
   pragma import (Cpp,movsd,"__movsd");
   procedure movsq(
      Destination : PDWORD64;
      Source : access constant DWORD64;
      Count : SIZE_T
   );
   pragma import (Cpp,movsq,"__movsq");
   procedure stosb(
      Destination : PBYTE;
      Value : BYTE;
      Count : SIZE_T
   );
   pragma import (Cpp,stosb,"__stosb");
   procedure stosw(
      Destination : PWORD;
      Value : WORD;
      Count : SIZE_T
   );
   pragma import (Cpp,stosw,"__stosw");
   procedure stosd(
      Destination : PDWORD;
      Value : DWORD;
      Count : SIZE_T
   );
   pragma import (Cpp,stosd,"__stosd");
   procedure stosq(
      Destination : PDWORD64;
      Value : DWORD64;
      Count : SIZE_T
   );
   pragma import (Cpp,stosq,"__stosq");
   function mulh(
      Multiplier : LONG64;
      Multiplicand : LONG64
   ) return LONGLONG;
   pragma import (Cpp,mulh,"__mulh");
   function umulh(
      Multiplier : DWORD64;
      Multiplicand : DWORD64
   ) return ULONGLONG;
   pragma import (Cpp,umulh,"__umulh");
   function popcnt64(
      operand : DWORD64
   ) return DWORD64;
   pragma import (Cpp,popcnt64,"__popcnt64");
   function shiftleft128(
      LowPart : DWORD64;
      HighPart : DWORD64;
      Shift : BYTE
   ) return DWORD64;
   pragma import (Cpp,shiftleft128,"__shiftleft128");
   function shiftright128(
      LowPart : DWORD64;
      HighPart : DWORD64;
      Shift : BYTE
   ) return DWORD64;
   pragma import (Cpp,shiftright128,"__shiftright128");
   function mul128(
      Multiplier : LONG64;
      Multiplicand : LONG64;
      HighProduct : access LONG64
   ) return LONG64;
   pragma import (Cpp,mul128,"_mul128");
   function umul128(
      Multiplier : DWORD64;
      Multiplicand : DWORD64;
      HighProduct : access DWORD64
   ) return DWORD64;
   pragma import (Cpp,umul128,"_umul128");
   -- MultiplyExtract128(); -- inlined function not supported
   -- UnsignedMultiplyExtract128(); -- inlined function not supported
   function readgsbyte(
      Offset : DWORD
   ) return BYTE;
   pragma import (Cpp,readgsbyte,"__readgsbyte");
   function readgsword(
      Offset : DWORD
   ) return WORD;
   pragma import (Cpp,readgsword,"__readgsword");
   function readgsdword(
      Offset : DWORD
   ) return DWORD;
   pragma import (Cpp,readgsdword,"__readgsdword");
   function readgsqword(
      Offset : DWORD
   ) return DWORD64;
   pragma import (Cpp,readgsqword,"__readgsqword");
   procedure writegsbyte(
      Offset : DWORD;
      Data : BYTE
   );
   pragma import (Cpp,writegsbyte,"__writegsbyte");
   procedure writegsword(
      Offset : DWORD;
      Data : WORD
   );
   pragma import (Cpp,writegsword,"__writegsword");
   procedure writegsdword(
      Offset : DWORD;
      Data : DWORD
   );
   pragma import (Cpp,writegsdword,"__writegsdword");
   procedure writegsqword(
      Offset : DWORD;
      Data : DWORD64
   );
   pragma import (Cpp,writegsqword,"__writegsqword");
   procedure incgsbyte(
      Offset : DWORD
   );
   pragma import (Cpp,incgsbyte,"__incgsbyte");
   procedure addgsbyte(
      Offset : DWORD;
      Value : BYTE
   );
   pragma import (Cpp,addgsbyte,"__addgsbyte");
   procedure incgsword(
      Offset : DWORD
   );
   pragma import (Cpp,incgsword,"__incgsword");
   procedure addgsword(
      Offset : DWORD;
      Value : WORD
   );
   pragma import (Cpp,addgsword,"__addgsword");
   procedure incgsdword(
      Offset : DWORD
   );
   pragma import (Cpp,incgsdword,"__incgsdword");
   procedure addgsdword(
      Offset : DWORD;
      Value : DWORD
   );
   pragma import (Cpp,addgsdword,"__addgsdword");
   procedure incgsqword(
      Offset : DWORD
   );
   pragma import (Cpp,incgsqword,"__incgsqword");
   procedure addgsqword(
      Offset : DWORD;
      Value : DWORD64
   );
   pragma import (Cpp,addgsqword,"__addgsqword");
   subtype XMM_SAVE_AREA32 is XSAVE_FORMAT;
   type PXMM_SAVE_AREA32 is access all XSAVE_FORMAT;
   type Anonymous_Record_7_Header_Array is array(1..2) of M128A; -- Auto Generated Dependancy
   type Anonymous_Record_7_Legacy_Array is array(1..8) of M128A; -- Auto Generated Dependancy
   type Anonymous_Record_7 is record
      Header : Anonymous_Record_7_Header_Array;
      Legacy : Anonymous_Record_7_Legacy_Array;
      Xmm0 : M128A;
      Xmm1 : M128A;
      Xmm2 : M128A;
      Xmm3 : M128A;
      Xmm4 : M128A;
      Xmm5 : M128A;
      Xmm6 : M128A;
      Xmm7 : M128A;
      Xmm8 : M128A;
      Xmm9 : M128A;
      Xmm10 : M128A;
      Xmm11 : M128A;
      Xmm12 : M128A;
      Xmm13 : M128A;
      Xmm14 : M128A;
      Xmm15 : M128A;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_7);
   for Anonymous_Record_7 use record
      Header at 0 range 0..255;
      Legacy at 0 range 256..1279;
      Xmm0 at 0 range 1280..1407;
      Xmm1 at 0 range 1408..1535;
      Xmm2 at 0 range 1536..1663;
      Xmm3 at 0 range 1664..1791;
      Xmm4 at 0 range 1792..1919;
      Xmm5 at 0 range 1920..2047;
      Xmm6 at 0 range 2048..2175;
      Xmm7 at 0 range 2176..2303;
      Xmm8 at 0 range 2304..2431;
      Xmm9 at 0 range 2432..2559;
      Xmm10 at 0 range 2560..2687;
      Xmm11 at 0 range 2688..2815;
      Xmm12 at 0 range 2816..2943;
      Xmm13 at 0 range 2944..3071;
      Xmm14 at 0 range 3072..3199;
      Xmm15 at 0 range 3200..3327;
   end record;
   for Anonymous_Record_7'Size use 3328;
   for Anonymous_Record_7'Alignment use 16;
   type Anonymous_Record_6 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            FltSave : XMM_SAVE_AREA32;
         when others => 
            field_1 : Anonymous_Record_7;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_6);
   pragma Unchecked_Union (Anonymous_Record_6);
   for Anonymous_Record_6'Size use 4096;
   for Anonymous_Record_6'Alignment use 16;
   type CONTEXT_x_VectorRegister_Array is array(1..26) of M128A; -- Auto Generated Dependancy
   type CONTEXT_x is record
      P1Home : DWORD64;
      P2Home : DWORD64;
      P3Home : DWORD64;
      P4Home : DWORD64;
      P5Home : DWORD64;
      P6Home : DWORD64;
      ContextFlags : DWORD;
      MxCsr : DWORD;
      SegCs : WORD;
      SegDs : WORD;
      SegEs : WORD;
      SegFs : WORD;
      SegGs : WORD;
      SegSs : WORD;
      EFlags : DWORD;
      Dr0 : DWORD64;
      Dr1 : DWORD64;
      Dr2 : DWORD64;
      Dr3 : DWORD64;
      Dr6 : DWORD64;
      Dr7 : DWORD64;
      Rax : DWORD64;
      Rcx : DWORD64;
      Rdx : DWORD64;
      Rbx : DWORD64;
      Rsp : DWORD64;
      Rbp : DWORD64;
      Rsi : DWORD64;
      Rdi : DWORD64;
      R8 : DWORD64;
      R9 : DWORD64;
      R10 : DWORD64;
      R11 : DWORD64;
      R12 : DWORD64;
      R13 : DWORD64;
      R14 : DWORD64;
      R15 : DWORD64;
      Rip : DWORD64;
      field_1 : Anonymous_Record_6;
      VectorRegister : CONTEXT_x_VectorRegister_Array;
      VectorControl : DWORD64;
      DebugControl : DWORD64;
      LastBranchToRip : DWORD64;
      LastBranchFromRip : DWORD64;
      LastExceptionToRip : DWORD64;
      LastExceptionFromRip : DWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,CONTEXT_x);
   for CONTEXT_x use record
      P1Home at 0 range 0..63;
      P2Home at 0 range 64..127;
      P3Home at 0 range 128..191;
      P4Home at 0 range 192..255;
      P5Home at 0 range 256..319;
      P6Home at 0 range 320..383;
      ContextFlags at 0 range 384..415;
      MxCsr at 0 range 416..447;
      SegCs at 0 range 448..463;
      SegDs at 0 range 464..479;
      SegEs at 0 range 480..495;
      SegFs at 0 range 496..511;
      SegGs at 0 range 512..527;
      SegSs at 0 range 528..543;
      EFlags at 0 range 544..575;
      Dr0 at 0 range 576..639;
      Dr1 at 0 range 640..703;
      Dr2 at 0 range 704..767;
      Dr3 at 0 range 768..831;
      Dr6 at 0 range 832..895;
      Dr7 at 0 range 896..959;
      Rax at 0 range 960..1023;
      Rcx at 0 range 1024..1087;
      Rdx at 0 range 1088..1151;
      Rbx at 0 range 1152..1215;
      Rsp at 0 range 1216..1279;
      Rbp at 0 range 1280..1343;
      Rsi at 0 range 1344..1407;
      Rdi at 0 range 1408..1471;
      R8 at 0 range 1472..1535;
      R9 at 0 range 1536..1599;
      R10 at 0 range 1600..1663;
      R11 at 0 range 1664..1727;
      R12 at 0 range 1728..1791;
      R13 at 0 range 1792..1855;
      R14 at 0 range 1856..1919;
      R15 at 0 range 1920..1983;
      Rip at 0 range 1984..2047;
      field_1 at 0 range 2048..6143;
      VectorRegister at 0 range 6144..9471;
      VectorControl at 0 range 9472..9535;
      DebugControl at 0 range 9536..9599;
      LastBranchToRip at 0 range 9600..9663;
      LastBranchFromRip at 0 range 9664..9727;
      LastExceptionToRip at 0 range 9728..9791;
      LastExceptionFromRip at 0 range 9792..9855;
   end record;
   for CONTEXT_x'Size use 9856;
   for CONTEXT_x'Alignment use 16;
   subtype CONTEXT is CONTEXT_x;
   type PCONTEXT is access all CONTEXT_x;
   type IMAGE_RUNTIME_FUNCTION_ENTRY_x;
   subtype RUNTIME_FUNCTION is IMAGE_RUNTIME_FUNCTION_ENTRY_x;
   type PRUNTIME_FUNCTION is access all IMAGE_RUNTIME_FUNCTION_ENTRY_x;
   subtype SCOPE_TABLE is SCOPE_TABLE_AMD64;
   type PSCOPE_TABLE is access all SCOPE_TABLE_AMD64;
   type UNWIND_HISTORY_TABLE_ENTRY_x is record
      ImageBase : DWORD64;
      FunctionEntry : PRUNTIME_FUNCTION;
   end record;
   pragma Convention (C_Pass_By_Copy,UNWIND_HISTORY_TABLE_ENTRY_x);
   for UNWIND_HISTORY_TABLE_ENTRY_x use record
      ImageBase at 0 range 0..63;
      FunctionEntry at 0 range 64..127;
   end record;
   for UNWIND_HISTORY_TABLE_ENTRY_x'Size use 128;
   for UNWIND_HISTORY_TABLE_ENTRY_x'Alignment use 8;
   subtype UNWIND_HISTORY_TABLE_ENTRY is UNWIND_HISTORY_TABLE_ENTRY_x;
   type PUNWIND_HISTORY_TABLE_ENTRY is access all UNWIND_HISTORY_TABLE_ENTRY_x;
   type UNWIND_HISTORY_TABLE_x_Entry_Array is array(1..12) of UNWIND_HISTORY_TABLE_ENTRY; -- Auto Generated Dependancy
   type UNWIND_HISTORY_TABLE_x is record
      Count : DWORD;
      LocalHint : BYTE;
      GlobalHint : BYTE;
      Search : BYTE;
      Once : BYTE;
      LowAddress : DWORD64;
      HighAddress : DWORD64;
      entry_x : UNWIND_HISTORY_TABLE_x_Entry_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,UNWIND_HISTORY_TABLE_x);
   for UNWIND_HISTORY_TABLE_x use record
      Count at 0 range 0..31;
      LocalHint at 0 range 32..39;
      GlobalHint at 0 range 40..47;
      Search at 0 range 48..55;
      Once at 0 range 56..63;
      LowAddress at 0 range 64..127;
      HighAddress at 0 range 128..191;
      entry_x at 0 range 192..1727;
   end record;
   for UNWIND_HISTORY_TABLE_x'Size use 1728;
   for UNWIND_HISTORY_TABLE_x'Alignment use 8;
   subtype UNWIND_HISTORY_TABLE is UNWIND_HISTORY_TABLE_x;
   type PUNWIND_HISTORY_TABLE is access all UNWIND_HISTORY_TABLE_x;
   subtype GET_RUNTIME_FUNCTION_CALLBACK is System.Address; -- [Note - CXType_FunctionProto] Profile - PRUNTIME_FUNCTION (DWORD64, PVOID)
   type PGET_RUNTIME_FUNCTION_CALLBACK is access all GET_RUNTIME_FUNCTION_CALLBACK;
   subtype OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK is System.Address; -- [Note - CXType_FunctionProto] Profile - DWORD (HANDLE, PVOID, PDWORD, PRUNTIME_FUNCTION *)
   type POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK is access all OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK;
   type DISPATCHER_CONTEXT_x is record
      ControlPc : DWORD64;
      ImageBase : DWORD64;
      FunctionEntry : PRUNTIME_FUNCTION;
      EstablisherFrame : DWORD64;
      TargetIp : DWORD64;
      ContextRecord : PCONTEXT;
      LanguageHandler : PEXCEPTION_ROUTINE;
      HandlerData : PVOID;
      HistoryTable : PUNWIND_HISTORY_TABLE;
      ScopeIndex : DWORD;
      Fill0 : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPATCHER_CONTEXT_x);
   for DISPATCHER_CONTEXT_x use record
      ControlPc at 0 range 0..63;
      ImageBase at 0 range 64..127;
      FunctionEntry at 0 range 128..191;
      EstablisherFrame at 0 range 192..255;
      TargetIp at 0 range 256..319;
      ContextRecord at 0 range 320..383;
      LanguageHandler at 0 range 384..447;
      HandlerData at 0 range 448..511;
      HistoryTable at 0 range 512..575;
      ScopeIndex at 0 range 576..607;
      Fill0 at 0 range 608..639;
   end record;
   for DISPATCHER_CONTEXT_x'Size use 640;
   for DISPATCHER_CONTEXT_x'Alignment use 8;
   subtype DISPATCHER_CONTEXT is DISPATCHER_CONTEXT_x;
   type PDISPATCHER_CONTEXT is access all DISPATCHER_CONTEXT_x;
   type EXCEPTION_POINTERS_x;
   type PEXCEPTION_FILTER is access function (p1 : access EXCEPTION_POINTERS_x ; p2 : PVOID) return LONG; -- LONG (struct _EXCEPTION_POINTERS *, PVOID)
   pragma Convention(C,PEXCEPTION_FILTER);
   type PTERMINATION_HANDLER is access procedure (p1 : BOOLEAN ; p2 : PVOID); -- void (BOOLEAN, PVOID)
   pragma Convention(C,PTERMINATION_HANDLER);
   type Anonymous_Record_9 is record
      Xmm0 : PM128A;
      Xmm1 : PM128A;
      Xmm2 : PM128A;
      Xmm3 : PM128A;
      Xmm4 : PM128A;
      Xmm5 : PM128A;
      Xmm6 : PM128A;
      Xmm7 : PM128A;
      Xmm8 : PM128A;
      Xmm9 : PM128A;
      Xmm10 : PM128A;
      Xmm11 : PM128A;
      Xmm12 : PM128A;
      Xmm13 : PM128A;
      Xmm14 : PM128A;
      Xmm15 : PM128A;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_9);
   for Anonymous_Record_9 use record
      Xmm0 at 0 range 0..63;
      Xmm1 at 0 range 64..127;
      Xmm2 at 0 range 128..191;
      Xmm3 at 0 range 192..255;
      Xmm4 at 0 range 256..319;
      Xmm5 at 0 range 320..383;
      Xmm6 at 0 range 384..447;
      Xmm7 at 0 range 448..511;
      Xmm8 at 0 range 512..575;
      Xmm9 at 0 range 576..639;
      Xmm10 at 0 range 640..703;
      Xmm11 at 0 range 704..767;
      Xmm12 at 0 range 768..831;
      Xmm13 at 0 range 832..895;
      Xmm14 at 0 range 896..959;
      Xmm15 at 0 range 960..1023;
   end record;
   for Anonymous_Record_9'Size use 1024;
   for Anonymous_Record_9'Alignment use 8;
   type Anonymous_Record_8_FloatingContext_Array is array(1..16) of PM128A; -- Auto Generated Dependancy
   type Anonymous_Record_8 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            FloatingContext : Anonymous_Record_8_FloatingContext_Array;
         when others => 
            field_1 : Anonymous_Record_9;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_8);
   pragma Unchecked_Union (Anonymous_Record_8);
   for Anonymous_Record_8'Size use 1024;
   for Anonymous_Record_8'Alignment use 8;
   type Anonymous_Record_11 is record
      Rax : PDWORD64;
      Rcx : PDWORD64;
      Rdx : PDWORD64;
      Rbx : PDWORD64;
      Rsp : PDWORD64;
      Rbp : PDWORD64;
      Rsi : PDWORD64;
      Rdi : PDWORD64;
      R8 : PDWORD64;
      R9 : PDWORD64;
      R10 : PDWORD64;
      R11 : PDWORD64;
      R12 : PDWORD64;
      R13 : PDWORD64;
      R14 : PDWORD64;
      R15 : PDWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_11);
   for Anonymous_Record_11 use record
      Rax at 0 range 0..63;
      Rcx at 0 range 64..127;
      Rdx at 0 range 128..191;
      Rbx at 0 range 192..255;
      Rsp at 0 range 256..319;
      Rbp at 0 range 320..383;
      Rsi at 0 range 384..447;
      Rdi at 0 range 448..511;
      R8 at 0 range 512..575;
      R9 at 0 range 576..639;
      R10 at 0 range 640..703;
      R11 at 0 range 704..767;
      R12 at 0 range 768..831;
      R13 at 0 range 832..895;
      R14 at 0 range 896..959;
      R15 at 0 range 960..1023;
   end record;
   for Anonymous_Record_11'Size use 1024;
   for Anonymous_Record_11'Alignment use 8;
   type Anonymous_Record_10_IntegerContext_Array is array(1..16) of PDWORD64; -- Auto Generated Dependancy
   type Anonymous_Record_10 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            IntegerContext : Anonymous_Record_10_IntegerContext_Array;
         when others => 
            field_1 : Anonymous_Record_11;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_10);
   pragma Unchecked_Union (Anonymous_Record_10);
   for Anonymous_Record_10'Size use 1024;
   for Anonymous_Record_10'Alignment use 8;
   type KNONVOLATILE_CONTEXT_POINTERS_x is record
      field_1 : Anonymous_Record_8;
      field_2 : Anonymous_Record_10;
   end record;
   pragma Convention (C_Pass_By_Copy,KNONVOLATILE_CONTEXT_POINTERS_x);
   for KNONVOLATILE_CONTEXT_POINTERS_x use record
      field_1 at 0 range 0..1023;
      field_2 at 0 range 1024..2047;
   end record;
   for KNONVOLATILE_CONTEXT_POINTERS_x'Size use 2048;
   for KNONVOLATILE_CONTEXT_POINTERS_x'Alignment use 8;
   subtype KNONVOLATILE_CONTEXT_POINTERS is KNONVOLATILE_CONTEXT_POINTERS_x;
   type PKNONVOLATILE_CONTEXT_POINTERS is access all KNONVOLATILE_CONTEXT_POINTERS_x;
   type Anonymous_Record_12 is record
      BeginAddress : DWORD;
      EndAddress : DWORD;
      HandlerAddress : DWORD;
      JumpTarget : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_12);
   for Anonymous_Record_12 use record
      BeginAddress at 0 range 0..31;
      EndAddress at 0 range 32..63;
      HandlerAddress at 0 range 64..95;
      JumpTarget at 0 range 96..127;
   end record;
   for Anonymous_Record_12'Size use 128;
   for Anonymous_Record_12'Alignment use 4;
   type SCOPE_TABLE_ARM_x_ScopeRecord_Array is array(1..1) of Anonymous_Record_12; -- Auto Generated Dependancy
   type SCOPE_TABLE_ARM_x is record
      Count : DWORD;
      ScopeRecord : SCOPE_TABLE_ARM_x_ScopeRecord_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SCOPE_TABLE_ARM_x);
   for SCOPE_TABLE_ARM_x use record
      Count at 0 range 0..31;
      ScopeRecord at 0 range 32..159;
   end record;
   for SCOPE_TABLE_ARM_x'Size use 160;
   for SCOPE_TABLE_ARM_x'Alignment use 4;
   subtype SCOPE_TABLE_ARM is SCOPE_TABLE_ARM_x;
   type PSCOPE_TABLE_ARM is access all SCOPE_TABLE_ARM_x;
   type Anonymous_Record_13 is record
      BeginAddress : DWORD;
      EndAddress : DWORD;
      HandlerAddress : DWORD;
      JumpTarget : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_13);
   for Anonymous_Record_13 use record
      BeginAddress at 0 range 0..31;
      EndAddress at 0 range 32..63;
      HandlerAddress at 0 range 64..95;
      JumpTarget at 0 range 96..127;
   end record;
   for Anonymous_Record_13'Size use 128;
   for Anonymous_Record_13'Alignment use 4;
   type SCOPE_TABLE_ARM64_x_ScopeRecord_Array is array(1..1) of Anonymous_Record_13; -- Auto Generated Dependancy
   type SCOPE_TABLE_ARM64_x is record
      Count : DWORD;
      ScopeRecord : SCOPE_TABLE_ARM64_x_ScopeRecord_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SCOPE_TABLE_ARM64_x);
   for SCOPE_TABLE_ARM64_x use record
      Count at 0 range 0..31;
      ScopeRecord at 0 range 32..159;
   end record;
   for SCOPE_TABLE_ARM64_x'Size use 160;
   for SCOPE_TABLE_ARM64_x'Alignment use 4;
   subtype SCOPE_TABLE_ARM64 is SCOPE_TABLE_ARM64_x;
   type PSCOPE_TABLE_ARM64 is access all SCOPE_TABLE_ARM64_x;
   type KNONVOLATILE_CONTEXT_POINTERS_ARM64_x is record
      X19 : PDWORD64;
      X20 : PDWORD64;
      X21 : PDWORD64;
      X22 : PDWORD64;
      X23 : PDWORD64;
      X24 : PDWORD64;
      X25 : PDWORD64;
      X26 : PDWORD64;
      X27 : PDWORD64;
      X28 : PDWORD64;
      Fp : PDWORD64;
      Lr : PDWORD64;
      D8 : PDWORD64;
      D9 : PDWORD64;
      D10 : PDWORD64;
      D11 : PDWORD64;
      D12 : PDWORD64;
      D13 : PDWORD64;
      D14 : PDWORD64;
      D15 : PDWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,KNONVOLATILE_CONTEXT_POINTERS_ARM64_x);
   for KNONVOLATILE_CONTEXT_POINTERS_ARM64_x use record
      X19 at 0 range 0..63;
      X20 at 0 range 64..127;
      X21 at 0 range 128..191;
      X22 at 0 range 192..255;
      X23 at 0 range 256..319;
      X24 at 0 range 320..383;
      X25 at 0 range 384..447;
      X26 at 0 range 448..511;
      X27 at 0 range 512..575;
      X28 at 0 range 576..639;
      Fp at 0 range 640..703;
      Lr at 0 range 704..767;
      D8 at 0 range 768..831;
      D9 at 0 range 832..895;
      D10 at 0 range 896..959;
      D11 at 0 range 960..1023;
      D12 at 0 range 1024..1087;
      D13 at 0 range 1088..1151;
      D14 at 0 range 1152..1215;
      D15 at 0 range 1216..1279;
   end record;
   for KNONVOLATILE_CONTEXT_POINTERS_ARM64_x'Size use 1280;
   for KNONVOLATILE_CONTEXT_POINTERS_ARM64_x'Alignment use 8;
   subtype KNONVOLATILE_CONTEXT_POINTERS_ARM64 is KNONVOLATILE_CONTEXT_POINTERS_ARM64_x;
   type PKNONVOLATILE_CONTEXT_POINTERS_ARM64 is access all KNONVOLATILE_CONTEXT_POINTERS_ARM64_x;
   procedure int2c;
   pragma import (Cpp,int2c,"__int2c");
   type Anonymous_Record_15 is record
      BaseMid : BYTE;
      Flags1 : BYTE;
      Flags2 : BYTE;
      BaseHi : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_15);
   for Anonymous_Record_15 use record
      BaseMid at 0 range 0..7;
      Flags1 at 0 range 8..15;
      Flags2 at 0 range 16..23;
      BaseHi at 0 range 24..31;
   end record;
   for Anonymous_Record_15'Size use 32;
   for Anonymous_Record_15'Alignment use 1;
   type Anonymous_Record_16 is record
      BaseMid : Interfaces.C.Extensions.Unsigned_8; -- bit field
      type_x : Interfaces.C.Extensions.Unsigned_5; -- bit field
      Dpl : Interfaces.C.Extensions.Unsigned_2; -- bit field
      Pres : Interfaces.C.Extensions.Unsigned_1; -- bit field
      LimitHi : Interfaces.C.Extensions.Unsigned_4; -- bit field
      Sys : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Reserved_0 : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Default_Big : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Granularity : Interfaces.C.Extensions.Unsigned_1; -- bit field
      BaseHi : Interfaces.C.Extensions.Unsigned_8; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_16);
   for Anonymous_Record_16 use record
      BaseMid at 0 range 0..7;
      type_x at 0 range 8..12;
      Dpl at 0 range 13..14;
      Pres at 0 range 15..15;
      LimitHi at 0 range 16..19;
      Sys at 0 range 20..20;
      Reserved_0 at 0 range 21..21;
      Default_Big at 0 range 22..22;
      Granularity at 0 range 23..23;
      BaseHi at 0 range 24..31;
   end record;
   for Anonymous_Record_16'Size use 32;
   for Anonymous_Record_16'Alignment use 4;
   type Anonymous_Record_14 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_15;
         when others => 
            field_2 : Anonymous_Record_16;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_14);
   pragma Unchecked_Union (Anonymous_Record_14);
   for Anonymous_Record_14'Size use 32;
   for Anonymous_Record_14'Alignment use 4;
   type LDT_ENTRY_x is record
      LimitLow : WORD;
      BaseLow : WORD;
      field_1 : Anonymous_Record_14;
   end record;
   pragma Convention (C_Pass_By_Copy,LDT_ENTRY_x);
   for LDT_ENTRY_x use record
      LimitLow at 0 range 0..15;
      BaseLow at 0 range 16..31;
      field_1 at 0 range 32..63;
   end record;
   for LDT_ENTRY_x'Size use 64;
   for LDT_ENTRY_x'Alignment use 4;
   subtype LDT_ENTRY is LDT_ENTRY_x;
   type PLDT_ENTRY is access all LDT_ENTRY_x;
   -- ReadAcquire8(); -- inlined function not supported
   -- ReadNoFence8(); -- inlined function not supported
   -- WriteRelease8(); -- inlined function not supported
   -- WriteNoFence8(); -- inlined function not supported
   -- ReadAcquire16(); -- inlined function not supported
   -- ReadNoFence16(); -- inlined function not supported
   -- WriteRelease16(); -- inlined function not supported
   -- WriteNoFence16(); -- inlined function not supported
   -- ReadAcquire(); -- inlined function not supported
   -- ReadNoFence(); -- inlined function not supported
   -- WriteRelease(); -- inlined function not supported
   -- WriteNoFence(); -- inlined function not supported
   -- ReadAcquire64(); -- inlined function not supported
   -- ReadNoFence64(); -- inlined function not supported
   -- WriteRelease64(); -- inlined function not supported
   -- WriteNoFence64(); -- inlined function not supported
   -- ReadRaw8(); -- inlined function not supported
   -- WriteRaw8(); -- inlined function not supported
   -- ReadRaw16(); -- inlined function not supported
   -- WriteRaw16(); -- inlined function not supported
   -- ReadRaw(); -- inlined function not supported
   -- WriteRaw(); -- inlined function not supported
   -- ReadRaw64(); -- inlined function not supported
   -- WriteRaw64(); -- inlined function not supported
   -- ReadUCharAcquire(); -- inlined function not supported
   -- ReadUCharNoFence(); -- inlined function not supported
   -- ReadBooleanAcquire(); -- inlined function not supported
   -- ReadBooleanNoFence(); -- inlined function not supported
   -- ReadUCharRaw(); -- inlined function not supported
   -- WriteUCharRelease(); -- inlined function not supported
   -- WriteUCharNoFence(); -- inlined function not supported
   -- WriteBooleanRelease(); -- inlined function not supported
   -- WriteBooleanNoFence(); -- inlined function not supported
   -- WriteUCharRaw(); -- inlined function not supported
   -- ReadUShortAcquire(); -- inlined function not supported
   -- ReadUShortNoFence(); -- inlined function not supported
   -- ReadUShortRaw(); -- inlined function not supported
   -- WriteUShortRelease(); -- inlined function not supported
   -- WriteUShortNoFence(); -- inlined function not supported
   -- WriteUShortRaw(); -- inlined function not supported
   -- ReadULongAcquire(); -- inlined function not supported
   -- ReadULongNoFence(); -- inlined function not supported
   -- ReadULongRaw(); -- inlined function not supported
   -- WriteULongRelease(); -- inlined function not supported
   -- WriteULongNoFence(); -- inlined function not supported
   -- WriteULongRaw(); -- inlined function not supported
   -- ReadULong64Acquire(); -- inlined function not supported
   -- ReadULong64NoFence(); -- inlined function not supported
   -- ReadULong64Raw(); -- inlined function not supported
   -- WriteULong64Release(); -- inlined function not supported
   -- WriteULong64NoFence(); -- inlined function not supported
   -- WriteULong64Raw(); -- inlined function not supported
   -- ReadPointerAcquire(); -- inlined function not supported
   -- ReadPointerNoFence(); -- inlined function not supported
   -- ReadPointerRaw(); -- inlined function not supported
   -- WritePointerRelease(); -- inlined function not supported
   -- WritePointerNoFence(); -- inlined function not supported
   -- WritePointerRaw(); -- inlined function not supported
   type WOW64_FLOATING_SAVE_AREA_x_RegisterArea_Array is array(1..80) of BYTE; -- Auto Generated Dependancy
   type WOW64_FLOATING_SAVE_AREA_x is record
      ControlWord : DWORD;
      StatusWord : DWORD;
      TagWord : DWORD;
      ErrorOffset : DWORD;
      ErrorSelector : DWORD;
      DataOffset : DWORD;
      DataSelector : DWORD;
      RegisterArea : WOW64_FLOATING_SAVE_AREA_x_RegisterArea_Array;
      Cr0NpxState : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,WOW64_FLOATING_SAVE_AREA_x);
   for WOW64_FLOATING_SAVE_AREA_x use record
      ControlWord at 0 range 0..31;
      StatusWord at 0 range 32..63;
      TagWord at 0 range 64..95;
      ErrorOffset at 0 range 96..127;
      ErrorSelector at 0 range 128..159;
      DataOffset at 0 range 160..191;
      DataSelector at 0 range 192..223;
      RegisterArea at 0 range 224..863;
      Cr0NpxState at 0 range 864..895;
   end record;
   for WOW64_FLOATING_SAVE_AREA_x'Size use 896;
   for WOW64_FLOATING_SAVE_AREA_x'Alignment use 4;
   subtype WOW64_FLOATING_SAVE_AREA is WOW64_FLOATING_SAVE_AREA_x;
   type PWOW64_FLOATING_SAVE_AREA is access all WOW64_FLOATING_SAVE_AREA;
   type WOW64_CONTEXT_x_ExtendedRegisters_Array is array(1..512) of BYTE; -- Auto Generated Dependancy
   type WOW64_CONTEXT_x is record
      ContextFlags : DWORD;
      Dr0 : DWORD;
      Dr1 : DWORD;
      Dr2 : DWORD;
      Dr3 : DWORD;
      Dr6 : DWORD;
      Dr7 : DWORD;
      FloatSave : WOW64_FLOATING_SAVE_AREA;
      SegGs : DWORD;
      SegFs : DWORD;
      SegEs : DWORD;
      SegDs : DWORD;
      Edi : DWORD;
      Esi : DWORD;
      Ebx : DWORD;
      Edx : DWORD;
      Ecx : DWORD;
      Eax : DWORD;
      Ebp : DWORD;
      Eip : DWORD;
      SegCs : DWORD;
      EFlags : DWORD;
      Esp : DWORD;
      SegSs : DWORD;
      ExtendedRegisters : WOW64_CONTEXT_x_ExtendedRegisters_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,WOW64_CONTEXT_x);
   for WOW64_CONTEXT_x use record
      ContextFlags at 0 range 0..31;
      Dr0 at 0 range 32..63;
      Dr1 at 0 range 64..95;
      Dr2 at 0 range 96..127;
      Dr3 at 0 range 128..159;
      Dr6 at 0 range 160..191;
      Dr7 at 0 range 192..223;
      FloatSave at 0 range 224..1119;
      SegGs at 0 range 1120..1151;
      SegFs at 0 range 1152..1183;
      SegEs at 0 range 1184..1215;
      SegDs at 0 range 1216..1247;
      Edi at 0 range 1248..1279;
      Esi at 0 range 1280..1311;
      Ebx at 0 range 1312..1343;
      Edx at 0 range 1344..1375;
      Ecx at 0 range 1376..1407;
      Eax at 0 range 1408..1439;
      Ebp at 0 range 1440..1471;
      Eip at 0 range 1472..1503;
      SegCs at 0 range 1504..1535;
      EFlags at 0 range 1536..1567;
      Esp at 0 range 1568..1599;
      SegSs at 0 range 1600..1631;
      ExtendedRegisters at 0 range 1632..5727;
   end record;
   for WOW64_CONTEXT_x'Size use 5728;
   for WOW64_CONTEXT_x'Alignment use 4;
   subtype WOW64_CONTEXT is WOW64_CONTEXT_x;
   type PWOW64_CONTEXT is access all WOW64_CONTEXT;
   type Anonymous_Record_18 is record
      BaseMid : BYTE;
      Flags1 : BYTE;
      Flags2 : BYTE;
      BaseHi : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_18);
   for Anonymous_Record_18 use record
      BaseMid at 0 range 0..7;
      Flags1 at 0 range 8..15;
      Flags2 at 0 range 16..23;
      BaseHi at 0 range 24..31;
   end record;
   for Anonymous_Record_18'Size use 32;
   for Anonymous_Record_18'Alignment use 1;
   type Anonymous_Record_19 is record
      BaseMid : Interfaces.C.Extensions.Unsigned_8; -- bit field
      type_x : Interfaces.C.Extensions.Unsigned_5; -- bit field
      Dpl : Interfaces.C.Extensions.Unsigned_2; -- bit field
      Pres : Interfaces.C.Extensions.Unsigned_1; -- bit field
      LimitHi : Interfaces.C.Extensions.Unsigned_4; -- bit field
      Sys : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Reserved_0 : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Default_Big : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Granularity : Interfaces.C.Extensions.Unsigned_1; -- bit field
      BaseHi : Interfaces.C.Extensions.Unsigned_8; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_19);
   for Anonymous_Record_19 use record
      BaseMid at 0 range 0..7;
      type_x at 0 range 8..12;
      Dpl at 0 range 13..14;
      Pres at 0 range 15..15;
      LimitHi at 0 range 16..19;
      Sys at 0 range 20..20;
      Reserved_0 at 0 range 21..21;
      Default_Big at 0 range 22..22;
      Granularity at 0 range 23..23;
      BaseHi at 0 range 24..31;
   end record;
   for Anonymous_Record_19'Size use 32;
   for Anonymous_Record_19'Alignment use 4;
   type Anonymous_Record_17 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_18;
         when others => 
            field_2 : Anonymous_Record_19;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_17);
   pragma Unchecked_Union (Anonymous_Record_17);
   for Anonymous_Record_17'Size use 32;
   for Anonymous_Record_17'Alignment use 4;
   type WOW64_LDT_ENTRY_x is record
      LimitLow : WORD;
      BaseLow : WORD;
      field_1 : Anonymous_Record_17;
   end record;
   pragma Convention (C_Pass_By_Copy,WOW64_LDT_ENTRY_x);
   for WOW64_LDT_ENTRY_x use record
      LimitLow at 0 range 0..15;
      BaseLow at 0 range 16..31;
      field_1 at 0 range 32..63;
   end record;
   for WOW64_LDT_ENTRY_x'Size use 64;
   for WOW64_LDT_ENTRY_x'Alignment use 4;
   subtype WOW64_LDT_ENTRY is WOW64_LDT_ENTRY_x;
   type PWOW64_LDT_ENTRY is access all WOW64_LDT_ENTRY_x;
   type WOW64_DESCRIPTOR_TABLE_ENTRY_x is record
      Selector : DWORD;
      Descriptor : WOW64_LDT_ENTRY;
   end record;
   pragma Convention (C_Pass_By_Copy,WOW64_DESCRIPTOR_TABLE_ENTRY_x);
   for WOW64_DESCRIPTOR_TABLE_ENTRY_x use record
      Selector at 0 range 0..31;
      Descriptor at 0 range 32..95;
   end record;
   for WOW64_DESCRIPTOR_TABLE_ENTRY_x'Size use 96;
   for WOW64_DESCRIPTOR_TABLE_ENTRY_x'Alignment use 4;
   subtype WOW64_DESCRIPTOR_TABLE_ENTRY is WOW64_DESCRIPTOR_TABLE_ENTRY_x;
   type PWOW64_DESCRIPTOR_TABLE_ENTRY is access all WOW64_DESCRIPTOR_TABLE_ENTRY_x;
   type EXCEPTION_RECORD_x_ExceptionInformation_Array is array(1..15) of ULONG_PTR; -- Auto Generated Dependancy
   type EXCEPTION_RECORD_x is record
      ExceptionCode : DWORD;
      ExceptionFlags : DWORD;
      ExceptionRecord : access EXCEPTION_RECORD_x;
      ExceptionAddress : PVOID;
      NumberParameters : DWORD;
      ExceptionInformation : EXCEPTION_RECORD_x_ExceptionInformation_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,EXCEPTION_RECORD_x);
   for EXCEPTION_RECORD_x use record
      ExceptionCode at 0 range 0..31;
      ExceptionFlags at 0 range 32..63;
      ExceptionRecord at 0 range 64..127;
      ExceptionAddress at 0 range 128..191;
      NumberParameters at 0 range 192..223;
      ExceptionInformation at 0 range 256..1215;
   end record;
   for EXCEPTION_RECORD_x'Size use 1216;
   for EXCEPTION_RECORD_x'Alignment use 8;
   subtype EXCEPTION_RECORD is EXCEPTION_RECORD_x;
   type PEXCEPTION_RECORD is access all EXCEPTION_RECORD;
   type EXCEPTION_RECORD32_x_ExceptionInformation_Array is array(1..15) of DWORD; -- Auto Generated Dependancy
   type EXCEPTION_RECORD32_x is record
      ExceptionCode : DWORD;
      ExceptionFlags : DWORD;
      ExceptionRecord : DWORD;
      ExceptionAddress : DWORD;
      NumberParameters : DWORD;
      ExceptionInformation : EXCEPTION_RECORD32_x_ExceptionInformation_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,EXCEPTION_RECORD32_x);
   for EXCEPTION_RECORD32_x use record
      ExceptionCode at 0 range 0..31;
      ExceptionFlags at 0 range 32..63;
      ExceptionRecord at 0 range 64..95;
      ExceptionAddress at 0 range 96..127;
      NumberParameters at 0 range 128..159;
      ExceptionInformation at 0 range 160..639;
   end record;
   for EXCEPTION_RECORD32_x'Size use 640;
   for EXCEPTION_RECORD32_x'Alignment use 4;
   subtype EXCEPTION_RECORD32 is EXCEPTION_RECORD32_x;
   type PEXCEPTION_RECORD32 is access all EXCEPTION_RECORD32_x;
   type EXCEPTION_RECORD64_x_ExceptionInformation_Array is array(1..15) of DWORD64; -- Auto Generated Dependancy
   type EXCEPTION_RECORD64_x is record
      ExceptionCode : DWORD;
      ExceptionFlags : DWORD;
      ExceptionRecord : DWORD64;
      ExceptionAddress : DWORD64;
      NumberParameters : DWORD;
      unusedAlignment : DWORD;
      ExceptionInformation : EXCEPTION_RECORD64_x_ExceptionInformation_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,EXCEPTION_RECORD64_x);
   for EXCEPTION_RECORD64_x use record
      ExceptionCode at 0 range 0..31;
      ExceptionFlags at 0 range 32..63;
      ExceptionRecord at 0 range 64..127;
      ExceptionAddress at 0 range 128..191;
      NumberParameters at 0 range 192..223;
      unusedAlignment at 0 range 224..255;
      ExceptionInformation at 0 range 256..1215;
   end record;
   for EXCEPTION_RECORD64_x'Size use 1216;
   for EXCEPTION_RECORD64_x'Alignment use 8;
   subtype EXCEPTION_RECORD64 is EXCEPTION_RECORD64_x;
   type PEXCEPTION_RECORD64 is access all EXCEPTION_RECORD64_x;
   type EXCEPTION_POINTERS_x is record
      ExceptionRecord : PEXCEPTION_RECORD;
      ContextRecord : PCONTEXT;
   end record;
   pragma Convention (C_Pass_By_Copy,EXCEPTION_POINTERS_x);
   for EXCEPTION_POINTERS_x use record
      ExceptionRecord at 0 range 0..63;
      ContextRecord at 0 range 64..127;
   end record;
   for EXCEPTION_POINTERS_x'Size use 128;
   for EXCEPTION_POINTERS_x'Alignment use 8;
   subtype EXCEPTION_POINTERS is EXCEPTION_POINTERS_x;
   type PEXCEPTION_POINTERS is access all EXCEPTION_POINTERS_x;
   subtype PACCESS_TOKEN is PVOID;
   subtype PSECURITY_DESCRIPTOR is PVOID;
   subtype PSID is PVOID;
   subtype PCLAIMS_BLOB is PVOID;
   subtype ACCESS_MASK is DWORD;
   type PACCESS_MASK is access all ACCESS_MASK;
   type GENERIC_MAPPING_x is record
      GenericRead : ACCESS_MASK;
      GenericWrite : ACCESS_MASK;
      GenericExecute : ACCESS_MASK;
      GenericAll : ACCESS_MASK;
   end record;
   pragma Convention (C_Pass_By_Copy,GENERIC_MAPPING_x);
   for GENERIC_MAPPING_x use record
      GenericRead at 0 range 0..31;
      GenericWrite at 0 range 32..63;
      GenericExecute at 0 range 64..95;
      GenericAll at 0 range 96..127;
   end record;
   for GENERIC_MAPPING_x'Size use 128;
   for GENERIC_MAPPING_x'Alignment use 4;
   subtype GENERIC_MAPPING is GENERIC_MAPPING_x;
   type PGENERIC_MAPPING is access all GENERIC_MAPPING;
   type LUID_AND_ATTRIBUTES_x is record
      Luid_x : LUID;
      Attributes : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,LUID_AND_ATTRIBUTES_x);
   for LUID_AND_ATTRIBUTES_x use record
      Luid_x at 0 range 0..63;
      Attributes at 0 range 64..95;
   end record;
   for LUID_AND_ATTRIBUTES_x'Size use 96;
   for LUID_AND_ATTRIBUTES_x'Alignment use 4;
   subtype LUID_AND_ATTRIBUTES is LUID_AND_ATTRIBUTES_x;
   type PLUID_AND_ATTRIBUTES is access all LUID_AND_ATTRIBUTES_x;
   type LUID_AND_ATTRIBUTES_ARRAY is array(1..1) of LUID_AND_ATTRIBUTES;
   type PLUID_AND_ATTRIBUTES_ARRAY is access all LUID_AND_ATTRIBUTES_ARRAY;
   type SID_IDENTIFIER_AUTHORITY_x_Value_Array is array(1..6) of BYTE; -- Auto Generated Dependancy
   type SID_IDENTIFIER_AUTHORITY_x is record
      Value : SID_IDENTIFIER_AUTHORITY_x_Value_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SID_IDENTIFIER_AUTHORITY_x);
   for SID_IDENTIFIER_AUTHORITY_x use record
      Value at 0 range 0..47;
   end record;
   for SID_IDENTIFIER_AUTHORITY_x'Size use 48;
   for SID_IDENTIFIER_AUTHORITY_x'Alignment use 1;
   subtype SID_IDENTIFIER_AUTHORITY is SID_IDENTIFIER_AUTHORITY_x;
   type PSID_IDENTIFIER_AUTHORITY is access all SID_IDENTIFIER_AUTHORITY_x;
   type SID_x_SubAuthority_Array is array(1..1) of DWORD; -- Auto Generated Dependancy
   type SID_x is record
      Revision : BYTE;
      SubAuthorityCount : BYTE;
      IdentifierAuthority : SID_IDENTIFIER_AUTHORITY;
      SubAuthority : SID_x_SubAuthority_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SID_x);
   for SID_x use record
      Revision at 0 range 0..7;
      SubAuthorityCount at 0 range 8..15;
      IdentifierAuthority at 0 range 16..63;
      SubAuthority at 0 range 64..95;
   end record;
   for SID_x'Size use 96;
   for SID_x'Alignment use 4;
   subtype SID is SID_x;
   type PISID is access all SID_x;
   type SE_SID_x_Buffer_Array is array(1..68) of BYTE; -- Auto Generated Dependancy
   type SE_SID_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Sid_x : SID;
         when others => 
            Buffer : SE_SID_x_Buffer_Array;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,SE_SID_x);
   pragma Unchecked_Union (SE_SID_x);
   for SE_SID_x'Size use 544;
   for SE_SID_x'Alignment use 4;
   subtype SE_SID is SE_SID_x;
   type PSE_SID is access all SE_SID_x;
   type SID_NAME_USE_x is (
      SidTypeUser,
      SidTypeGroup,
      SidTypeDomain,
      SidTypeAlias,
      SidTypeWellKnownGroup,
      SidTypeDeletedAccount,
      SidTypeInvalid,
      SidTypeUnknown,
      SidTypeComputer,
      SidTypeLabel,
      SidTypeLogonSession
   );
   for SID_NAME_USE_x use (
      SidTypeUser => 1,
      SidTypeGroup => 2,
      SidTypeDomain => 3,
      SidTypeAlias => 4,
      SidTypeWellKnownGroup => 5,
      SidTypeDeletedAccount => 6,
      SidTypeInvalid => 7,
      SidTypeUnknown => 8,
      SidTypeComputer => 9,
      SidTypeLabel => 10,
      SidTypeLogonSession => 11
   );
   for SID_NAME_USE_x'Size use 32;
   subtype SID_NAME_USE is SID_NAME_USE_x;
   type PSID_NAME_USE is access all SID_NAME_USE_x;
   type SID_AND_ATTRIBUTES_x is record
      Sid_x : PSID;
      Attributes : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SID_AND_ATTRIBUTES_x);
   for SID_AND_ATTRIBUTES_x use record
      Sid_x at 0 range 0..63;
      Attributes at 0 range 64..95;
   end record;
   for SID_AND_ATTRIBUTES_x'Size use 128;
   for SID_AND_ATTRIBUTES_x'Alignment use 8;
   subtype SID_AND_ATTRIBUTES is SID_AND_ATTRIBUTES_x;
   type PSID_AND_ATTRIBUTES is access all SID_AND_ATTRIBUTES_x;
   type SID_AND_ATTRIBUTES_ARRAY is array(1..1) of SID_AND_ATTRIBUTES;
   type PSID_AND_ATTRIBUTES_ARRAY is access all SID_AND_ATTRIBUTES_ARRAY;
   subtype SID_HASH_ENTRY is ULONG_PTR;
   type PSID_HASH_ENTRY is access all ULONG_PTR;
   type SID_AND_ATTRIBUTES_HASH_x_Hash_Array is array(1..32) of SID_HASH_ENTRY; -- Auto Generated Dependancy
   type SID_AND_ATTRIBUTES_HASH_x is record
      SidCount : DWORD;
      SidAttr : PSID_AND_ATTRIBUTES;
      Hash : SID_AND_ATTRIBUTES_HASH_x_Hash_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SID_AND_ATTRIBUTES_HASH_x);
   for SID_AND_ATTRIBUTES_HASH_x use record
      SidCount at 0 range 0..31;
      SidAttr at 0 range 64..127;
      Hash at 0 range 128..2175;
   end record;
   for SID_AND_ATTRIBUTES_HASH_x'Size use 2176;
   for SID_AND_ATTRIBUTES_HASH_x'Alignment use 8;
   subtype SID_AND_ATTRIBUTES_HASH is SID_AND_ATTRIBUTES_HASH_x;
   type PSID_AND_ATTRIBUTES_HASH is access all SID_AND_ATTRIBUTES_HASH_x;
   type WELL_KNOWN_SID_TYPE is (
      WinNullSid,
      WinWorldSid,
      WinLocalSid,
      WinCreatorOwnerSid,
      WinCreatorGroupSid,
      WinCreatorOwnerServerSid,
      WinCreatorGroupServerSid,
      WinNtAuthoritySid,
      WinDialupSid,
      WinNetworkSid,
      WinBatchSid,
      WinInteractiveSid,
      WinServiceSid,
      WinAnonymousSid,
      WinProxySid,
      WinEnterpriseControllersSid,
      WinSelfSid,
      WinAuthenticatedUserSid,
      WinRestrictedCodeSid,
      WinTerminalServerSid,
      WinRemoteLogonIdSid,
      WinLogonIdsSid,
      WinLocalSystemSid,
      WinLocalServiceSid,
      WinNetworkServiceSid,
      WinBuiltinDomainSid,
      WinBuiltinAdministratorsSid,
      WinBuiltinUsersSid,
      WinBuiltinGuestsSid,
      WinBuiltinPowerUsersSid,
      WinBuiltinAccountOperatorsSid,
      WinBuiltinSystemOperatorsSid,
      WinBuiltinPrintOperatorsSid,
      WinBuiltinBackupOperatorsSid,
      WinBuiltinReplicatorSid,
      WinBuiltinPreWindows2000CompatibleAccessSid,
      WinBuiltinRemoteDesktopUsersSid,
      WinBuiltinNetworkConfigurationOperatorsSid,
      WinAccountAdministratorSid,
      WinAccountGuestSid,
      WinAccountKrbtgtSid,
      WinAccountDomainAdminsSid,
      WinAccountDomainUsersSid,
      WinAccountDomainGuestsSid,
      WinAccountComputersSid,
      WinAccountControllersSid,
      WinAccountCertAdminsSid,
      WinAccountSchemaAdminsSid,
      WinAccountEnterpriseAdminsSid,
      WinAccountPolicyAdminsSid,
      WinAccountRasAndIasServersSid,
      WinNTLMAuthenticationSid,
      WinDigestAuthenticationSid,
      WinSChannelAuthenticationSid,
      WinThisOrganizationSid,
      WinOtherOrganizationSid,
      WinBuiltinIncomingForestTrustBuildersSid,
      WinBuiltinPerfMonitoringUsersSid,
      WinBuiltinPerfLoggingUsersSid,
      WinBuiltinAuthorizationAccessSid,
      WinBuiltinTerminalServerLicenseServersSid,
      WinBuiltinDCOMUsersSid,
      WinBuiltinIUsersSid,
      WinIUserSid,
      WinBuiltinCryptoOperatorsSid,
      WinUntrustedLabelSid,
      WinLowLabelSid,
      WinMediumLabelSid,
      WinHighLabelSid,
      WinSystemLabelSid,
      WinWriteRestrictedCodeSid,
      WinCreatorOwnerRightsSid,
      WinCacheablePrincipalsGroupSid,
      WinNonCacheablePrincipalsGroupSid,
      WinEnterpriseReadonlyControllersSid,
      WinAccountReadonlyControllersSid,
      WinBuiltinEventLogReadersGroup,
      WinNewEnterpriseReadonlyControllersSid,
      WinBuiltinCertSvcDComAccessGroup,
      WinMediumPlusLabelSid,
      WinLocalLogonSid,
      WinConsoleLogonSid,
      WinThisOrganizationCertificateSid,
      WinApplicationPackageAuthoritySid,
      WinBuiltinAnyPackageSid,
      WinCapabilityInternetClientSid,
      WinCapabilityInternetClientServerSid,
      WinCapabilityPrivateNetworkClientServerSid,
      WinCapabilityPicturesLibrarySid,
      WinCapabilityVideosLibrarySid,
      WinCapabilityMusicLibrarySid,
      WinCapabilityDocumentsLibrarySid,
      WinCapabilitySharedUserCertificatesSid,
      WinCapabilityEnterpriseAuthenticationSid,
      WinCapabilityRemovableStorageSid,
      WinBuiltinRDSRemoteAccessServersSid,
      WinBuiltinRDSEndpointServersSid,
      WinBuiltinRDSManagementServersSid,
      WinUserModeDriversSid,
      WinBuiltinHyperVAdminsSid,
      WinAccountCloneableControllersSid,
      WinBuiltinAccessControlAssistanceOperatorsSid,
      WinBuiltinRemoteManagementUsersSid,
      WinAuthenticationAuthorityAssertedSid,
      WinAuthenticationServiceAssertedSid,
      WinLocalAccountSid,
      WinLocalAccountAndAdministratorSid,
      WinAccountProtectedUsersSid,
      WinCapabilityAppointmentsSid,
      WinCapabilityContactsSid,
      WinAccountDefaultSystemManagedSid,
      WinBuiltinDefaultSystemManagedGroupSid,
      WinBuiltinStorageReplicaAdminsSid,
      WinAccountKeyAdminsSid,
      WinAccountEnterpriseKeyAdminsSid,
      WinAuthenticationKeyTrustSid,
      WinAuthenticationKeyPropertyMFASid,
      WinAuthenticationKeyPropertyAttestationSid,
      WinAuthenticationFreshKeyAuthSid,
      WinBuiltinDeviceOwnersSid
   );
   for WELL_KNOWN_SID_TYPE use (
      WinNullSid => 0,
      WinWorldSid => 1,
      WinLocalSid => 2,
      WinCreatorOwnerSid => 3,
      WinCreatorGroupSid => 4,
      WinCreatorOwnerServerSid => 5,
      WinCreatorGroupServerSid => 6,
      WinNtAuthoritySid => 7,
      WinDialupSid => 8,
      WinNetworkSid => 9,
      WinBatchSid => 10,
      WinInteractiveSid => 11,
      WinServiceSid => 12,
      WinAnonymousSid => 13,
      WinProxySid => 14,
      WinEnterpriseControllersSid => 15,
      WinSelfSid => 16,
      WinAuthenticatedUserSid => 17,
      WinRestrictedCodeSid => 18,
      WinTerminalServerSid => 19,
      WinRemoteLogonIdSid => 20,
      WinLogonIdsSid => 21,
      WinLocalSystemSid => 22,
      WinLocalServiceSid => 23,
      WinNetworkServiceSid => 24,
      WinBuiltinDomainSid => 25,
      WinBuiltinAdministratorsSid => 26,
      WinBuiltinUsersSid => 27,
      WinBuiltinGuestsSid => 28,
      WinBuiltinPowerUsersSid => 29,
      WinBuiltinAccountOperatorsSid => 30,
      WinBuiltinSystemOperatorsSid => 31,
      WinBuiltinPrintOperatorsSid => 32,
      WinBuiltinBackupOperatorsSid => 33,
      WinBuiltinReplicatorSid => 34,
      WinBuiltinPreWindows2000CompatibleAccessSid => 35,
      WinBuiltinRemoteDesktopUsersSid => 36,
      WinBuiltinNetworkConfigurationOperatorsSid => 37,
      WinAccountAdministratorSid => 38,
      WinAccountGuestSid => 39,
      WinAccountKrbtgtSid => 40,
      WinAccountDomainAdminsSid => 41,
      WinAccountDomainUsersSid => 42,
      WinAccountDomainGuestsSid => 43,
      WinAccountComputersSid => 44,
      WinAccountControllersSid => 45,
      WinAccountCertAdminsSid => 46,
      WinAccountSchemaAdminsSid => 47,
      WinAccountEnterpriseAdminsSid => 48,
      WinAccountPolicyAdminsSid => 49,
      WinAccountRasAndIasServersSid => 50,
      WinNTLMAuthenticationSid => 51,
      WinDigestAuthenticationSid => 52,
      WinSChannelAuthenticationSid => 53,
      WinThisOrganizationSid => 54,
      WinOtherOrganizationSid => 55,
      WinBuiltinIncomingForestTrustBuildersSid => 56,
      WinBuiltinPerfMonitoringUsersSid => 57,
      WinBuiltinPerfLoggingUsersSid => 58,
      WinBuiltinAuthorizationAccessSid => 59,
      WinBuiltinTerminalServerLicenseServersSid => 60,
      WinBuiltinDCOMUsersSid => 61,
      WinBuiltinIUsersSid => 62,
      WinIUserSid => 63,
      WinBuiltinCryptoOperatorsSid => 64,
      WinUntrustedLabelSid => 65,
      WinLowLabelSid => 66,
      WinMediumLabelSid => 67,
      WinHighLabelSid => 68,
      WinSystemLabelSid => 69,
      WinWriteRestrictedCodeSid => 70,
      WinCreatorOwnerRightsSid => 71,
      WinCacheablePrincipalsGroupSid => 72,
      WinNonCacheablePrincipalsGroupSid => 73,
      WinEnterpriseReadonlyControllersSid => 74,
      WinAccountReadonlyControllersSid => 75,
      WinBuiltinEventLogReadersGroup => 76,
      WinNewEnterpriseReadonlyControllersSid => 77,
      WinBuiltinCertSvcDComAccessGroup => 78,
      WinMediumPlusLabelSid => 79,
      WinLocalLogonSid => 80,
      WinConsoleLogonSid => 81,
      WinThisOrganizationCertificateSid => 82,
      WinApplicationPackageAuthoritySid => 83,
      WinBuiltinAnyPackageSid => 84,
      WinCapabilityInternetClientSid => 85,
      WinCapabilityInternetClientServerSid => 86,
      WinCapabilityPrivateNetworkClientServerSid => 87,
      WinCapabilityPicturesLibrarySid => 88,
      WinCapabilityVideosLibrarySid => 89,
      WinCapabilityMusicLibrarySid => 90,
      WinCapabilityDocumentsLibrarySid => 91,
      WinCapabilitySharedUserCertificatesSid => 92,
      WinCapabilityEnterpriseAuthenticationSid => 93,
      WinCapabilityRemovableStorageSid => 94,
      WinBuiltinRDSRemoteAccessServersSid => 95,
      WinBuiltinRDSEndpointServersSid => 96,
      WinBuiltinRDSManagementServersSid => 97,
      WinUserModeDriversSid => 98,
      WinBuiltinHyperVAdminsSid => 99,
      WinAccountCloneableControllersSid => 100,
      WinBuiltinAccessControlAssistanceOperatorsSid => 101,
      WinBuiltinRemoteManagementUsersSid => 102,
      WinAuthenticationAuthorityAssertedSid => 103,
      WinAuthenticationServiceAssertedSid => 104,
      WinLocalAccountSid => 105,
      WinLocalAccountAndAdministratorSid => 106,
      WinAccountProtectedUsersSid => 107,
      WinCapabilityAppointmentsSid => 108,
      WinCapabilityContactsSid => 109,
      WinAccountDefaultSystemManagedSid => 110,
      WinBuiltinDefaultSystemManagedGroupSid => 111,
      WinBuiltinStorageReplicaAdminsSid => 112,
      WinAccountKeyAdminsSid => 113,
      WinAccountEnterpriseKeyAdminsSid => 114,
      WinAuthenticationKeyTrustSid => 115,
      WinAuthenticationKeyPropertyMFASid => 116,
      WinAuthenticationKeyPropertyAttestationSid => 117,
      WinAuthenticationFreshKeyAuthSid => 118,
      WinBuiltinDeviceOwnersSid => 119
   );
   for WELL_KNOWN_SID_TYPE'Size use 32;
   type ACL_x is record
      AclRevision : BYTE;
      Sbz1 : BYTE;
      AclSize : WORD;
      AceCount : WORD;
      Sbz2 : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACL_x);
   for ACL_x use record
      AclRevision at 0 range 0..7;
      Sbz1 at 0 range 8..15;
      AclSize at 0 range 16..31;
      AceCount at 0 range 32..47;
      Sbz2 at 0 range 48..63;
   end record;
   for ACL_x'Size use 64;
   for ACL_x'Alignment use 2;
   subtype ACL is ACL_x;
   type PACL is access all ACL;
   type ACE_HEADER_x is record
      AceType : BYTE;
      AceFlags : BYTE;
      AceSize : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACE_HEADER_x);
   for ACE_HEADER_x use record
      AceType at 0 range 0..7;
      AceFlags at 0 range 8..15;
      AceSize at 0 range 16..31;
   end record;
   for ACE_HEADER_x'Size use 32;
   for ACE_HEADER_x'Alignment use 2;
   subtype ACE_HEADER is ACE_HEADER_x;
   type PACE_HEADER is access all ACE_HEADER;
   type ACCESS_ALLOWED_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACCESS_ALLOWED_ACE_x);
   for ACCESS_ALLOWED_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for ACCESS_ALLOWED_ACE_x'Size use 96;
   for ACCESS_ALLOWED_ACE_x'Alignment use 4;
   subtype ACCESS_ALLOWED_ACE is ACCESS_ALLOWED_ACE_x;
   type PACCESS_ALLOWED_ACE is access all ACCESS_ALLOWED_ACE;
   type ACCESS_DENIED_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACCESS_DENIED_ACE_x);
   for ACCESS_DENIED_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for ACCESS_DENIED_ACE_x'Size use 96;
   for ACCESS_DENIED_ACE_x'Alignment use 4;
   subtype ACCESS_DENIED_ACE is ACCESS_DENIED_ACE_x;
   type PACCESS_DENIED_ACE is access all ACCESS_DENIED_ACE;
   type SYSTEM_AUDIT_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_AUDIT_ACE_x);
   for SYSTEM_AUDIT_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for SYSTEM_AUDIT_ACE_x'Size use 96;
   for SYSTEM_AUDIT_ACE_x'Alignment use 4;
   subtype SYSTEM_AUDIT_ACE is SYSTEM_AUDIT_ACE_x;
   type PSYSTEM_AUDIT_ACE is access all SYSTEM_AUDIT_ACE;
   type SYSTEM_ALARM_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_ALARM_ACE_x);
   for SYSTEM_ALARM_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for SYSTEM_ALARM_ACE_x'Size use 96;
   for SYSTEM_ALARM_ACE_x'Alignment use 4;
   subtype SYSTEM_ALARM_ACE is SYSTEM_ALARM_ACE_x;
   type PSYSTEM_ALARM_ACE is access all SYSTEM_ALARM_ACE;
   type SYSTEM_RESOURCE_ATTRIBUTE_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_RESOURCE_ATTRIBUTE_ACE_x);
   for SYSTEM_RESOURCE_ATTRIBUTE_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for SYSTEM_RESOURCE_ATTRIBUTE_ACE_x'Size use 96;
   for SYSTEM_RESOURCE_ATTRIBUTE_ACE_x'Alignment use 4;
   subtype SYSTEM_RESOURCE_ATTRIBUTE_ACE is SYSTEM_RESOURCE_ATTRIBUTE_ACE_x;
   type PSYSTEM_RESOURCE_ATTRIBUTE_ACE is access all SYSTEM_RESOURCE_ATTRIBUTE_ACE_x;
   type SYSTEM_SCOPED_POLICY_ID_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_SCOPED_POLICY_ID_ACE_x);
   for SYSTEM_SCOPED_POLICY_ID_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for SYSTEM_SCOPED_POLICY_ID_ACE_x'Size use 96;
   for SYSTEM_SCOPED_POLICY_ID_ACE_x'Alignment use 4;
   subtype SYSTEM_SCOPED_POLICY_ID_ACE is SYSTEM_SCOPED_POLICY_ID_ACE_x;
   type PSYSTEM_SCOPED_POLICY_ID_ACE is access all SYSTEM_SCOPED_POLICY_ID_ACE_x;
   type SYSTEM_MANDATORY_LABEL_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_MANDATORY_LABEL_ACE_x);
   for SYSTEM_MANDATORY_LABEL_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for SYSTEM_MANDATORY_LABEL_ACE_x'Size use 96;
   for SYSTEM_MANDATORY_LABEL_ACE_x'Alignment use 4;
   subtype SYSTEM_MANDATORY_LABEL_ACE is SYSTEM_MANDATORY_LABEL_ACE_x;
   type PSYSTEM_MANDATORY_LABEL_ACE is access all SYSTEM_MANDATORY_LABEL_ACE_x;
   type SYSTEM_PROCESS_TRUST_LABEL_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_PROCESS_TRUST_LABEL_ACE_x);
   for SYSTEM_PROCESS_TRUST_LABEL_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for SYSTEM_PROCESS_TRUST_LABEL_ACE_x'Size use 96;
   for SYSTEM_PROCESS_TRUST_LABEL_ACE_x'Alignment use 4;
   subtype SYSTEM_PROCESS_TRUST_LABEL_ACE is SYSTEM_PROCESS_TRUST_LABEL_ACE_x;
   type PSYSTEM_PROCESS_TRUST_LABEL_ACE is access all SYSTEM_PROCESS_TRUST_LABEL_ACE_x;
   type SYSTEM_ACCESS_FILTER_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_ACCESS_FILTER_ACE_x);
   for SYSTEM_ACCESS_FILTER_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for SYSTEM_ACCESS_FILTER_ACE_x'Size use 96;
   for SYSTEM_ACCESS_FILTER_ACE_x'Alignment use 4;
   subtype SYSTEM_ACCESS_FILTER_ACE is SYSTEM_ACCESS_FILTER_ACE_x;
   type PSYSTEM_ACCESS_FILTER_ACE is access all SYSTEM_ACCESS_FILTER_ACE_x;
   type ACCESS_ALLOWED_OBJECT_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      Flags : DWORD;
      ObjectType : GUID;
      InheritedObjectType : GUID;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACCESS_ALLOWED_OBJECT_ACE_x);
   for ACCESS_ALLOWED_OBJECT_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      Flags at 0 range 64..95;
      ObjectType at 0 range 96..223;
      InheritedObjectType at 0 range 224..351;
      SidStart at 0 range 352..383;
   end record;
   for ACCESS_ALLOWED_OBJECT_ACE_x'Size use 384;
   for ACCESS_ALLOWED_OBJECT_ACE_x'Alignment use 4;
   subtype ACCESS_ALLOWED_OBJECT_ACE is ACCESS_ALLOWED_OBJECT_ACE_x;
   type PACCESS_ALLOWED_OBJECT_ACE is access all ACCESS_ALLOWED_OBJECT_ACE_x;
   type ACCESS_DENIED_OBJECT_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      Flags : DWORD;
      ObjectType : GUID;
      InheritedObjectType : GUID;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACCESS_DENIED_OBJECT_ACE_x);
   for ACCESS_DENIED_OBJECT_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      Flags at 0 range 64..95;
      ObjectType at 0 range 96..223;
      InheritedObjectType at 0 range 224..351;
      SidStart at 0 range 352..383;
   end record;
   for ACCESS_DENIED_OBJECT_ACE_x'Size use 384;
   for ACCESS_DENIED_OBJECT_ACE_x'Alignment use 4;
   subtype ACCESS_DENIED_OBJECT_ACE is ACCESS_DENIED_OBJECT_ACE_x;
   type PACCESS_DENIED_OBJECT_ACE is access all ACCESS_DENIED_OBJECT_ACE_x;
   type SYSTEM_AUDIT_OBJECT_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      Flags : DWORD;
      ObjectType : GUID;
      InheritedObjectType : GUID;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_AUDIT_OBJECT_ACE_x);
   for SYSTEM_AUDIT_OBJECT_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      Flags at 0 range 64..95;
      ObjectType at 0 range 96..223;
      InheritedObjectType at 0 range 224..351;
      SidStart at 0 range 352..383;
   end record;
   for SYSTEM_AUDIT_OBJECT_ACE_x'Size use 384;
   for SYSTEM_AUDIT_OBJECT_ACE_x'Alignment use 4;
   subtype SYSTEM_AUDIT_OBJECT_ACE is SYSTEM_AUDIT_OBJECT_ACE_x;
   type PSYSTEM_AUDIT_OBJECT_ACE is access all SYSTEM_AUDIT_OBJECT_ACE_x;
   type SYSTEM_ALARM_OBJECT_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      Flags : DWORD;
      ObjectType : GUID;
      InheritedObjectType : GUID;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_ALARM_OBJECT_ACE_x);
   for SYSTEM_ALARM_OBJECT_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      Flags at 0 range 64..95;
      ObjectType at 0 range 96..223;
      InheritedObjectType at 0 range 224..351;
      SidStart at 0 range 352..383;
   end record;
   for SYSTEM_ALARM_OBJECT_ACE_x'Size use 384;
   for SYSTEM_ALARM_OBJECT_ACE_x'Alignment use 4;
   subtype SYSTEM_ALARM_OBJECT_ACE is SYSTEM_ALARM_OBJECT_ACE_x;
   type PSYSTEM_ALARM_OBJECT_ACE is access all SYSTEM_ALARM_OBJECT_ACE_x;
   type ACCESS_ALLOWED_CALLBACK_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACCESS_ALLOWED_CALLBACK_ACE_x);
   for ACCESS_ALLOWED_CALLBACK_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for ACCESS_ALLOWED_CALLBACK_ACE_x'Size use 96;
   for ACCESS_ALLOWED_CALLBACK_ACE_x'Alignment use 4;
   subtype ACCESS_ALLOWED_CALLBACK_ACE is ACCESS_ALLOWED_CALLBACK_ACE_x;
   type PACCESS_ALLOWED_CALLBACK_ACE is access all ACCESS_ALLOWED_CALLBACK_ACE_x;
   type ACCESS_DENIED_CALLBACK_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACCESS_DENIED_CALLBACK_ACE_x);
   for ACCESS_DENIED_CALLBACK_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for ACCESS_DENIED_CALLBACK_ACE_x'Size use 96;
   for ACCESS_DENIED_CALLBACK_ACE_x'Alignment use 4;
   subtype ACCESS_DENIED_CALLBACK_ACE is ACCESS_DENIED_CALLBACK_ACE_x;
   type PACCESS_DENIED_CALLBACK_ACE is access all ACCESS_DENIED_CALLBACK_ACE_x;
   type SYSTEM_AUDIT_CALLBACK_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_AUDIT_CALLBACK_ACE_x);
   for SYSTEM_AUDIT_CALLBACK_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for SYSTEM_AUDIT_CALLBACK_ACE_x'Size use 96;
   for SYSTEM_AUDIT_CALLBACK_ACE_x'Alignment use 4;
   subtype SYSTEM_AUDIT_CALLBACK_ACE is SYSTEM_AUDIT_CALLBACK_ACE_x;
   type PSYSTEM_AUDIT_CALLBACK_ACE is access all SYSTEM_AUDIT_CALLBACK_ACE_x;
   type SYSTEM_ALARM_CALLBACK_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_ALARM_CALLBACK_ACE_x);
   for SYSTEM_ALARM_CALLBACK_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      SidStart at 0 range 64..95;
   end record;
   for SYSTEM_ALARM_CALLBACK_ACE_x'Size use 96;
   for SYSTEM_ALARM_CALLBACK_ACE_x'Alignment use 4;
   subtype SYSTEM_ALARM_CALLBACK_ACE is SYSTEM_ALARM_CALLBACK_ACE_x;
   type PSYSTEM_ALARM_CALLBACK_ACE is access all SYSTEM_ALARM_CALLBACK_ACE_x;
   type ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      Flags : DWORD;
      ObjectType : GUID;
      InheritedObjectType : GUID;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_x);
   for ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      Flags at 0 range 64..95;
      ObjectType at 0 range 96..223;
      InheritedObjectType at 0 range 224..351;
      SidStart at 0 range 352..383;
   end record;
   for ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_x'Size use 384;
   for ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_x'Alignment use 4;
   subtype ACCESS_ALLOWED_CALLBACK_OBJECT_ACE is ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_x;
   type PACCESS_ALLOWED_CALLBACK_OBJECT_ACE is access all ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_x;
   type ACCESS_DENIED_CALLBACK_OBJECT_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      Flags : DWORD;
      ObjectType : GUID;
      InheritedObjectType : GUID;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACCESS_DENIED_CALLBACK_OBJECT_ACE_x);
   for ACCESS_DENIED_CALLBACK_OBJECT_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      Flags at 0 range 64..95;
      ObjectType at 0 range 96..223;
      InheritedObjectType at 0 range 224..351;
      SidStart at 0 range 352..383;
   end record;
   for ACCESS_DENIED_CALLBACK_OBJECT_ACE_x'Size use 384;
   for ACCESS_DENIED_CALLBACK_OBJECT_ACE_x'Alignment use 4;
   subtype ACCESS_DENIED_CALLBACK_OBJECT_ACE is ACCESS_DENIED_CALLBACK_OBJECT_ACE_x;
   type PACCESS_DENIED_CALLBACK_OBJECT_ACE is access all ACCESS_DENIED_CALLBACK_OBJECT_ACE_x;
   type SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      Flags : DWORD;
      ObjectType : GUID;
      InheritedObjectType : GUID;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_x);
   for SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      Flags at 0 range 64..95;
      ObjectType at 0 range 96..223;
      InheritedObjectType at 0 range 224..351;
      SidStart at 0 range 352..383;
   end record;
   for SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_x'Size use 384;
   for SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_x'Alignment use 4;
   subtype SYSTEM_AUDIT_CALLBACK_OBJECT_ACE is SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_x;
   type PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE is access all SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_x;
   type SYSTEM_ALARM_CALLBACK_OBJECT_ACE_x is record
      Header : ACE_HEADER;
      Mask : ACCESS_MASK;
      Flags : DWORD;
      ObjectType : GUID;
      InheritedObjectType : GUID;
      SidStart : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_ALARM_CALLBACK_OBJECT_ACE_x);
   for SYSTEM_ALARM_CALLBACK_OBJECT_ACE_x use record
      Header at 0 range 0..31;
      Mask at 0 range 32..63;
      Flags at 0 range 64..95;
      ObjectType at 0 range 96..223;
      InheritedObjectType at 0 range 224..351;
      SidStart at 0 range 352..383;
   end record;
   for SYSTEM_ALARM_CALLBACK_OBJECT_ACE_x'Size use 384;
   for SYSTEM_ALARM_CALLBACK_OBJECT_ACE_x'Alignment use 4;
   subtype SYSTEM_ALARM_CALLBACK_OBJECT_ACE is SYSTEM_ALARM_CALLBACK_OBJECT_ACE_x;
   type PSYSTEM_ALARM_CALLBACK_OBJECT_ACE is access all SYSTEM_ALARM_CALLBACK_OBJECT_ACE_x;
   type ACL_INFORMATION_CLASS_x is (
      AclRevisionInformation,
      AclSizeInformation
   );
   for ACL_INFORMATION_CLASS_x use (
      AclRevisionInformation => 1,
      AclSizeInformation => 2
   );
   for ACL_INFORMATION_CLASS_x'Size use 32;
   subtype ACL_INFORMATION_CLASS is ACL_INFORMATION_CLASS_x;
   type ACL_REVISION_INFORMATION_x is record
      AclRevision : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACL_REVISION_INFORMATION_x);
   for ACL_REVISION_INFORMATION_x use record
      AclRevision at 0 range 0..31;
   end record;
   for ACL_REVISION_INFORMATION_x'Size use 32;
   for ACL_REVISION_INFORMATION_x'Alignment use 4;
   subtype ACL_REVISION_INFORMATION is ACL_REVISION_INFORMATION_x;
   type PACL_REVISION_INFORMATION is access all ACL_REVISION_INFORMATION;
   type ACL_SIZE_INFORMATION_x is record
      AceCount : DWORD;
      AclBytesInUse : DWORD;
      AclBytesFree : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACL_SIZE_INFORMATION_x);
   for ACL_SIZE_INFORMATION_x use record
      AceCount at 0 range 0..31;
      AclBytesInUse at 0 range 32..63;
      AclBytesFree at 0 range 64..95;
   end record;
   for ACL_SIZE_INFORMATION_x'Size use 96;
   for ACL_SIZE_INFORMATION_x'Alignment use 4;
   subtype ACL_SIZE_INFORMATION is ACL_SIZE_INFORMATION_x;
   type PACL_SIZE_INFORMATION is access all ACL_SIZE_INFORMATION;
   subtype SECURITY_DESCRIPTOR_CONTROL is WORD;
   type PSECURITY_DESCRIPTOR_CONTROL is access all WORD;
   type SECURITY_DESCRIPTOR_RELATIVE_x is record
      Revision : BYTE;
      Sbz1 : BYTE;
      Control : SECURITY_DESCRIPTOR_CONTROL;
      Owner : DWORD;
      Group : DWORD;
      Sacl : DWORD;
      Dacl : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SECURITY_DESCRIPTOR_RELATIVE_x);
   for SECURITY_DESCRIPTOR_RELATIVE_x use record
      Revision at 0 range 0..7;
      Sbz1 at 0 range 8..15;
      Control at 0 range 16..31;
      Owner at 0 range 32..63;
      Group at 0 range 64..95;
      Sacl at 0 range 96..127;
      Dacl at 0 range 128..159;
   end record;
   for SECURITY_DESCRIPTOR_RELATIVE_x'Size use 160;
   for SECURITY_DESCRIPTOR_RELATIVE_x'Alignment use 4;
   subtype SECURITY_DESCRIPTOR_RELATIVE is SECURITY_DESCRIPTOR_RELATIVE_x;
   type PISECURITY_DESCRIPTOR_RELATIVE is access all SECURITY_DESCRIPTOR_RELATIVE_x;
   type SECURITY_DESCRIPTOR_x is record
      Revision : BYTE;
      Sbz1 : BYTE;
      Control : SECURITY_DESCRIPTOR_CONTROL;
      Owner : PSID;
      Group : PSID;
      Sacl : PACL;
      Dacl : PACL;
   end record;
   pragma Convention (C_Pass_By_Copy,SECURITY_DESCRIPTOR_x);
   for SECURITY_DESCRIPTOR_x use record
      Revision at 0 range 0..7;
      Sbz1 at 0 range 8..15;
      Control at 0 range 16..31;
      Owner at 0 range 64..127;
      Group at 0 range 128..191;
      Sacl at 0 range 192..255;
      Dacl at 0 range 256..319;
   end record;
   for SECURITY_DESCRIPTOR_x'Size use 320;
   for SECURITY_DESCRIPTOR_x'Alignment use 8;
   subtype SECURITY_DESCRIPTOR is SECURITY_DESCRIPTOR_x;
   type PISECURITY_DESCRIPTOR is access all SECURITY_DESCRIPTOR_x;
   type SECURITY_OBJECT_AI_PARAMS_x is record
      Size : DWORD;
      ConstraintMask : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SECURITY_OBJECT_AI_PARAMS_x);
   for SECURITY_OBJECT_AI_PARAMS_x use record
      Size at 0 range 0..31;
      ConstraintMask at 0 range 32..63;
   end record;
   for SECURITY_OBJECT_AI_PARAMS_x'Size use 64;
   for SECURITY_OBJECT_AI_PARAMS_x'Alignment use 4;
   subtype SECURITY_OBJECT_AI_PARAMS is SECURITY_OBJECT_AI_PARAMS_x;
   type PSECURITY_OBJECT_AI_PARAMS is access all SECURITY_OBJECT_AI_PARAMS_x;
   type OBJECT_TYPE_LIST_x is record
      Level : WORD;
      Sbz : WORD;
      ObjectType : access GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,OBJECT_TYPE_LIST_x);
   for OBJECT_TYPE_LIST_x use record
      Level at 0 range 0..15;
      Sbz at 0 range 16..31;
      ObjectType at 0 range 64..127;
   end record;
   for OBJECT_TYPE_LIST_x'Size use 128;
   for OBJECT_TYPE_LIST_x'Alignment use 8;
   subtype OBJECT_TYPE_LIST is OBJECT_TYPE_LIST_x;
   type POBJECT_TYPE_LIST is access all OBJECT_TYPE_LIST_x;
   type AUDIT_EVENT_TYPE_x is (
      AuditEventObjectAccess,
      AuditEventDirectoryServiceAccess
   );
   for AUDIT_EVENT_TYPE_x use (
      AuditEventObjectAccess => 0,
      AuditEventDirectoryServiceAccess => 1
   );
   for AUDIT_EVENT_TYPE_x'Size use 32;
   subtype AUDIT_EVENT_TYPE is AUDIT_EVENT_TYPE_x;
   type PAUDIT_EVENT_TYPE is access all AUDIT_EVENT_TYPE_x;
   type PRIVILEGE_SET_x_Privilege_Array is array(1..1) of LUID_AND_ATTRIBUTES; -- Auto Generated Dependancy
   type PRIVILEGE_SET_x is record
      PrivilegeCount : DWORD;
      Control : DWORD;
      Privilege : PRIVILEGE_SET_x_Privilege_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PRIVILEGE_SET_x);
   for PRIVILEGE_SET_x use record
      PrivilegeCount at 0 range 0..31;
      Control at 0 range 32..63;
      Privilege at 0 range 64..159;
   end record;
   for PRIVILEGE_SET_x'Size use 160;
   for PRIVILEGE_SET_x'Alignment use 4;
   subtype PRIVILEGE_SET is PRIVILEGE_SET_x;
   type PPRIVILEGE_SET is access all PRIVILEGE_SET_x;
   type ACCESS_REASON_TYPE_x is (
      AccessReasonNone,
      AccessReasonAllowedAce,
      AccessReasonDeniedAce,
      AccessReasonAllowedParentAce,
      AccessReasonDeniedParentAce,
      AccessReasonNotGrantedByCape,
      AccessReasonNotGrantedByParentCape,
      AccessReasonNotGrantedToAppContainer,
      AccessReasonMissingPrivilege,
      AccessReasonFromPrivilege,
      AccessReasonIntegrityLevel,
      AccessReasonOwnership,
      AccessReasonNullDacl,
      AccessReasonEmptyDacl,
      AccessReasonNoSD,
      AccessReasonNoGrant,
      AccessReasonTrustLabel,
      AccessReasonFilterAce
   );
   for ACCESS_REASON_TYPE_x use (
      AccessReasonNone => 0,
      AccessReasonAllowedAce => 65536,
      AccessReasonDeniedAce => 131072,
      AccessReasonAllowedParentAce => 196608,
      AccessReasonDeniedParentAce => 262144,
      AccessReasonNotGrantedByCape => 327680,
      AccessReasonNotGrantedByParentCape => 393216,
      AccessReasonNotGrantedToAppContainer => 458752,
      AccessReasonMissingPrivilege => 1048576,
      AccessReasonFromPrivilege => 2097152,
      AccessReasonIntegrityLevel => 3145728,
      AccessReasonOwnership => 4194304,
      AccessReasonNullDacl => 5242880,
      AccessReasonEmptyDacl => 6291456,
      AccessReasonNoSD => 7340032,
      AccessReasonNoGrant => 8388608,
      AccessReasonTrustLabel => 9437184,
      AccessReasonFilterAce => 10485760
   );
   for ACCESS_REASON_TYPE_x'Size use 32;
   subtype ACCESS_REASON_TYPE is ACCESS_REASON_TYPE_x;
   subtype ACCESS_REASON is DWORD;
   type ACCESS_REASONS_x_Data_Array is array(1..32) of ACCESS_REASON; -- Auto Generated Dependancy
   type ACCESS_REASONS_x is record
      Data : ACCESS_REASONS_x_Data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,ACCESS_REASONS_x);
   for ACCESS_REASONS_x use record
      Data at 0 range 0..1023;
   end record;
   for ACCESS_REASONS_x'Size use 1024;
   for ACCESS_REASONS_x'Alignment use 4;
   subtype ACCESS_REASONS is ACCESS_REASONS_x;
   type PACCESS_REASONS is access all ACCESS_REASONS_x;
   type SE_SECURITY_DESCRIPTOR_x is record
      Size : DWORD;
      Flags : DWORD;
      SecurityDescriptor : PSECURITY_DESCRIPTOR;
   end record;
   pragma Convention (C_Pass_By_Copy,SE_SECURITY_DESCRIPTOR_x);
   for SE_SECURITY_DESCRIPTOR_x use record
      Size at 0 range 0..31;
      Flags at 0 range 32..63;
      SecurityDescriptor at 0 range 64..127;
   end record;
   for SE_SECURITY_DESCRIPTOR_x'Size use 128;
   for SE_SECURITY_DESCRIPTOR_x'Alignment use 8;
   subtype SE_SECURITY_DESCRIPTOR is SE_SECURITY_DESCRIPTOR_x;
   type PSE_SECURITY_DESCRIPTOR is access all SE_SECURITY_DESCRIPTOR_x;
   type SE_ACCESS_REQUEST_x is record
      Size : DWORD;
      SeSecurityDescriptor : PSE_SECURITY_DESCRIPTOR;
      DesiredAccess : ACCESS_MASK;
      PreviouslyGrantedAccess : ACCESS_MASK;
      PrincipalSelfSid : PSID;
      GenericMapping : PGENERIC_MAPPING;
      ObjectTypeListCount : DWORD;
      ObjectTypeList : POBJECT_TYPE_LIST;
   end record;
   pragma Convention (C_Pass_By_Copy,SE_ACCESS_REQUEST_x);
   for SE_ACCESS_REQUEST_x use record
      Size at 0 range 0..31;
      SeSecurityDescriptor at 0 range 64..127;
      DesiredAccess at 0 range 128..159;
      PreviouslyGrantedAccess at 0 range 160..191;
      PrincipalSelfSid at 0 range 192..255;
      GenericMapping at 0 range 256..319;
      ObjectTypeListCount at 0 range 320..351;
      ObjectTypeList at 0 range 384..447;
   end record;
   for SE_ACCESS_REQUEST_x'Size use 448;
   for SE_ACCESS_REQUEST_x'Alignment use 8;
   subtype SE_ACCESS_REQUEST is SE_ACCESS_REQUEST_x;
   type PSE_ACCESS_REQUEST is access all SE_ACCESS_REQUEST_x;
   type SE_ACCESS_REPLY_x is record
      Size : DWORD;
      ResultListCount : DWORD;
      GrantedAccess : PACCESS_MASK;
      AccessStatus : PDWORD;
      AccessReason : PACCESS_REASONS;
      Privileges : access PPRIVILEGE_SET;
   end record;
   pragma Convention (C_Pass_By_Copy,SE_ACCESS_REPLY_x);
   for SE_ACCESS_REPLY_x use record
      Size at 0 range 0..31;
      ResultListCount at 0 range 32..63;
      GrantedAccess at 0 range 64..127;
      AccessStatus at 0 range 128..191;
      AccessReason at 0 range 192..255;
      Privileges at 0 range 256..319;
   end record;
   for SE_ACCESS_REPLY_x'Size use 320;
   for SE_ACCESS_REPLY_x'Alignment use 8;
   subtype SE_ACCESS_REPLY is SE_ACCESS_REPLY_x;
   type PSE_ACCESS_REPLY is access all SE_ACCESS_REPLY_x;
   type SECURITY_IMPERSONATION_LEVEL_x is (
      SecurityAnonymous,
      SecurityIdentification,
      SecurityImpersonation,
      SecurityDelegation
   );
   for SECURITY_IMPERSONATION_LEVEL_x use (
      SecurityAnonymous => 0,
      SecurityIdentification => 1,
      SecurityImpersonation => 2,
      SecurityDelegation => 3
   );
   for SECURITY_IMPERSONATION_LEVEL_x'Size use 32;
   subtype SECURITY_IMPERSONATION_LEVEL is SECURITY_IMPERSONATION_LEVEL_x;
   type PSECURITY_IMPERSONATION_LEVEL is access all SECURITY_IMPERSONATION_LEVEL_x;
   type TOKEN_TYPE_x is (
      TokenPrimary,
      TokenImpersonation
   );
   for TOKEN_TYPE_x use (
      TokenPrimary => 1,
      TokenImpersonation => 2
   );
   for TOKEN_TYPE_x'Size use 32;
   subtype TOKEN_TYPE is TOKEN_TYPE_x;
   type PTOKEN_TYPE is access all TOKEN_TYPE;
   type TOKEN_ELEVATION_TYPE_x is (
      TokenElevationTypeDefault,
      TokenElevationTypeFull,
      TokenElevationTypeLimited
   );
   for TOKEN_ELEVATION_TYPE_x use (
      TokenElevationTypeDefault => 1,
      TokenElevationTypeFull => 2,
      TokenElevationTypeLimited => 3
   );
   for TOKEN_ELEVATION_TYPE_x'Size use 32;
   subtype TOKEN_ELEVATION_TYPE is TOKEN_ELEVATION_TYPE_x;
   type PTOKEN_ELEVATION_TYPE is access all TOKEN_ELEVATION_TYPE_x;
   type TOKEN_INFORMATION_CLASS_x is (
      TokenUser,
      TokenGroups,
      TokenPrivileges,
      TokenOwner,
      TokenPrimaryGroup,
      TokenDefaultDacl,
      TokenSource,
      TokenType,
      TokenImpersonationLevel,
      TokenStatistics,
      TokenRestrictedSids,
      TokenSessionId,
      TokenGroupsAndPrivileges,
      TokenSessionReference,
      TokenSandBoxInert,
      TokenAuditPolicy,
      TokenOrigin,
      TokenElevationType,
      TokenLinkedToken,
      TokenElevation,
      TokenHasRestrictions,
      TokenAccessInformation,
      TokenVirtualizationAllowed,
      TokenVirtualizationEnabled,
      TokenIntegrityLevel,
      TokenUIAccess,
      TokenMandatoryPolicy,
      TokenLogonSid,
      TokenIsAppContainer,
      TokenCapabilities,
      TokenAppContainerSid,
      TokenAppContainerNumber,
      TokenUserClaimAttributes,
      TokenDeviceClaimAttributes,
      TokenRestrictedUserClaimAttributes,
      TokenRestrictedDeviceClaimAttributes,
      TokenDeviceGroups,
      TokenRestrictedDeviceGroups,
      TokenSecurityAttributes,
      TokenIsRestricted,
      TokenProcessTrustLevel,
      TokenPrivateNameSpace,
      TokenSingletonAttributes,
      TokenBnoIsolation,
      TokenChildProcessFlags,
      TokenIsLessPrivilegedAppContainer,
      TokenIsSandboxed,
      TokenOriginatingProcessTrustLevel,
      MaxTokenInfoClass
   );
   for TOKEN_INFORMATION_CLASS_x use (
      TokenUser => 1,
      TokenGroups => 2,
      TokenPrivileges => 3,
      TokenOwner => 4,
      TokenPrimaryGroup => 5,
      TokenDefaultDacl => 6,
      TokenSource => 7,
      TokenType => 8,
      TokenImpersonationLevel => 9,
      TokenStatistics => 10,
      TokenRestrictedSids => 11,
      TokenSessionId => 12,
      TokenGroupsAndPrivileges => 13,
      TokenSessionReference => 14,
      TokenSandBoxInert => 15,
      TokenAuditPolicy => 16,
      TokenOrigin => 17,
      TokenElevationType => 18,
      TokenLinkedToken => 19,
      TokenElevation => 20,
      TokenHasRestrictions => 21,
      TokenAccessInformation => 22,
      TokenVirtualizationAllowed => 23,
      TokenVirtualizationEnabled => 24,
      TokenIntegrityLevel => 25,
      TokenUIAccess => 26,
      TokenMandatoryPolicy => 27,
      TokenLogonSid => 28,
      TokenIsAppContainer => 29,
      TokenCapabilities => 30,
      TokenAppContainerSid => 31,
      TokenAppContainerNumber => 32,
      TokenUserClaimAttributes => 33,
      TokenDeviceClaimAttributes => 34,
      TokenRestrictedUserClaimAttributes => 35,
      TokenRestrictedDeviceClaimAttributes => 36,
      TokenDeviceGroups => 37,
      TokenRestrictedDeviceGroups => 38,
      TokenSecurityAttributes => 39,
      TokenIsRestricted => 40,
      TokenProcessTrustLevel => 41,
      TokenPrivateNameSpace => 42,
      TokenSingletonAttributes => 43,
      TokenBnoIsolation => 44,
      TokenChildProcessFlags => 45,
      TokenIsLessPrivilegedAppContainer => 46,
      TokenIsSandboxed => 47,
      TokenOriginatingProcessTrustLevel => 48,
      MaxTokenInfoClass => 49
   );
   for TOKEN_INFORMATION_CLASS_x'Size use 32;
   subtype TOKEN_INFORMATION_CLASS is TOKEN_INFORMATION_CLASS_x;
   type PTOKEN_INFORMATION_CLASS is access all TOKEN_INFORMATION_CLASS_x;
   type TOKEN_USER_x is record
      User : SID_AND_ATTRIBUTES;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_USER_x);
   for TOKEN_USER_x use record
      User at 0 range 0..127;
   end record;
   for TOKEN_USER_x'Size use 128;
   for TOKEN_USER_x'Alignment use 8;
   subtype TOKEN_USER is TOKEN_USER_x;
   type PTOKEN_USER is access all TOKEN_USER_x;
   type Anonymous_Record_20 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            TokenUser : TOKEN_USER;
         when others => 
            User : SID_AND_ATTRIBUTES;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_20);
   pragma Unchecked_Union (Anonymous_Record_20);
   for Anonymous_Record_20'Size use 128;
   for Anonymous_Record_20'Alignment use 8;
   type Anonymous_Record_21_Buffer_Array is array(1..68) of BYTE; -- Auto Generated Dependancy
   type Anonymous_Record_21 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Sid_x : SID;
         when others => 
            Buffer : Anonymous_Record_21_Buffer_Array;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_21);
   pragma Unchecked_Union (Anonymous_Record_21);
   for Anonymous_Record_21'Size use 544;
   for Anonymous_Record_21'Alignment use 4;
   type SE_TOKEN_USER_x is record
      field_1 : Anonymous_Record_20;
      field_2 : Anonymous_Record_21;
   end record;
   pragma Convention (C_Pass_By_Copy,SE_TOKEN_USER_x);
   for SE_TOKEN_USER_x use record
      field_1 at 0 range 0..127;
      field_2 at 0 range 128..671;
   end record;
   for SE_TOKEN_USER_x'Size use 704;
   for SE_TOKEN_USER_x'Alignment use 8;
   subtype SE_TOKEN_USER is SE_TOKEN_USER_x;
   subtype PSE_TOKEN_USER is SE_TOKEN_USER_x;
   type TOKEN_GROUPS_x_Groups_Array is array(1..1) of SID_AND_ATTRIBUTES; -- Auto Generated Dependancy
   type TOKEN_GROUPS_x is record
      GroupCount : DWORD;
      Groups : TOKEN_GROUPS_x_Groups_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_GROUPS_x);
   for TOKEN_GROUPS_x use record
      GroupCount at 0 range 0..31;
      Groups at 0 range 64..191;
   end record;
   for TOKEN_GROUPS_x'Size use 192;
   for TOKEN_GROUPS_x'Alignment use 8;
   subtype TOKEN_GROUPS is TOKEN_GROUPS_x;
   type PTOKEN_GROUPS is access all TOKEN_GROUPS_x;
   type TOKEN_PRIVILEGES_x_Privileges_Array is array(1..1) of LUID_AND_ATTRIBUTES; -- Auto Generated Dependancy
   type TOKEN_PRIVILEGES_x is record
      PrivilegeCount : DWORD;
      Privileges : TOKEN_PRIVILEGES_x_Privileges_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_PRIVILEGES_x);
   for TOKEN_PRIVILEGES_x use record
      PrivilegeCount at 0 range 0..31;
      Privileges at 0 range 32..127;
   end record;
   for TOKEN_PRIVILEGES_x'Size use 128;
   for TOKEN_PRIVILEGES_x'Alignment use 4;
   subtype TOKEN_PRIVILEGES is TOKEN_PRIVILEGES_x;
   type PTOKEN_PRIVILEGES is access all TOKEN_PRIVILEGES_x;
   type TOKEN_OWNER_x is record
      Owner : PSID;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_OWNER_x);
   for TOKEN_OWNER_x use record
      Owner at 0 range 0..63;
   end record;
   for TOKEN_OWNER_x'Size use 64;
   for TOKEN_OWNER_x'Alignment use 8;
   subtype TOKEN_OWNER is TOKEN_OWNER_x;
   type PTOKEN_OWNER is access all TOKEN_OWNER_x;
   type TOKEN_PRIMARY_GROUP_x is record
      PrimaryGroup : PSID;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_PRIMARY_GROUP_x);
   for TOKEN_PRIMARY_GROUP_x use record
      PrimaryGroup at 0 range 0..63;
   end record;
   for TOKEN_PRIMARY_GROUP_x'Size use 64;
   for TOKEN_PRIMARY_GROUP_x'Alignment use 8;
   subtype TOKEN_PRIMARY_GROUP is TOKEN_PRIMARY_GROUP_x;
   type PTOKEN_PRIMARY_GROUP is access all TOKEN_PRIMARY_GROUP_x;
   type TOKEN_DEFAULT_DACL_x is record
      DefaultDacl : PACL;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_DEFAULT_DACL_x);
   for TOKEN_DEFAULT_DACL_x use record
      DefaultDacl at 0 range 0..63;
   end record;
   for TOKEN_DEFAULT_DACL_x'Size use 64;
   for TOKEN_DEFAULT_DACL_x'Alignment use 8;
   subtype TOKEN_DEFAULT_DACL is TOKEN_DEFAULT_DACL_x;
   type PTOKEN_DEFAULT_DACL is access all TOKEN_DEFAULT_DACL_x;
   type TOKEN_USER_CLAIMS_x is record
      UserClaims : PCLAIMS_BLOB;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_USER_CLAIMS_x);
   for TOKEN_USER_CLAIMS_x use record
      UserClaims at 0 range 0..63;
   end record;
   for TOKEN_USER_CLAIMS_x'Size use 64;
   for TOKEN_USER_CLAIMS_x'Alignment use 8;
   subtype TOKEN_USER_CLAIMS is TOKEN_USER_CLAIMS_x;
   type PTOKEN_USER_CLAIMS is access all TOKEN_USER_CLAIMS_x;
   type TOKEN_DEVICE_CLAIMS_x is record
      DeviceClaims : PCLAIMS_BLOB;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_DEVICE_CLAIMS_x);
   for TOKEN_DEVICE_CLAIMS_x use record
      DeviceClaims at 0 range 0..63;
   end record;
   for TOKEN_DEVICE_CLAIMS_x'Size use 64;
   for TOKEN_DEVICE_CLAIMS_x'Alignment use 8;
   subtype TOKEN_DEVICE_CLAIMS is TOKEN_DEVICE_CLAIMS_x;
   type PTOKEN_DEVICE_CLAIMS is access all TOKEN_DEVICE_CLAIMS_x;
   type TOKEN_GROUPS_AND_PRIVILEGES_x is record
      SidCount : DWORD;
      SidLength : DWORD;
      Sids : PSID_AND_ATTRIBUTES;
      RestrictedSidCount : DWORD;
      RestrictedSidLength : DWORD;
      RestrictedSids : PSID_AND_ATTRIBUTES;
      PrivilegeCount : DWORD;
      PrivilegeLength : DWORD;
      Privileges : PLUID_AND_ATTRIBUTES;
      AuthenticationId : LUID;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_GROUPS_AND_PRIVILEGES_x);
   for TOKEN_GROUPS_AND_PRIVILEGES_x use record
      SidCount at 0 range 0..31;
      SidLength at 0 range 32..63;
      Sids at 0 range 64..127;
      RestrictedSidCount at 0 range 128..159;
      RestrictedSidLength at 0 range 160..191;
      RestrictedSids at 0 range 192..255;
      PrivilegeCount at 0 range 256..287;
      PrivilegeLength at 0 range 288..319;
      Privileges at 0 range 320..383;
      AuthenticationId at 0 range 384..447;
   end record;
   for TOKEN_GROUPS_AND_PRIVILEGES_x'Size use 448;
   for TOKEN_GROUPS_AND_PRIVILEGES_x'Alignment use 8;
   subtype TOKEN_GROUPS_AND_PRIVILEGES is TOKEN_GROUPS_AND_PRIVILEGES_x;
   type PTOKEN_GROUPS_AND_PRIVILEGES is access all TOKEN_GROUPS_AND_PRIVILEGES_x;
   type TOKEN_LINKED_TOKEN_x is record
      LinkedToken : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_LINKED_TOKEN_x);
   for TOKEN_LINKED_TOKEN_x use record
      LinkedToken at 0 range 0..63;
   end record;
   for TOKEN_LINKED_TOKEN_x'Size use 64;
   for TOKEN_LINKED_TOKEN_x'Alignment use 8;
   subtype TOKEN_LINKED_TOKEN is TOKEN_LINKED_TOKEN_x;
   type PTOKEN_LINKED_TOKEN is access all TOKEN_LINKED_TOKEN_x;
   type TOKEN_ELEVATION_x is record
      TokenIsElevated : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_ELEVATION_x);
   for TOKEN_ELEVATION_x use record
      TokenIsElevated at 0 range 0..31;
   end record;
   for TOKEN_ELEVATION_x'Size use 32;
   for TOKEN_ELEVATION_x'Alignment use 4;
   subtype TOKEN_ELEVATION is TOKEN_ELEVATION_x;
   type PTOKEN_ELEVATION is access all TOKEN_ELEVATION_x;
   type TOKEN_MANDATORY_LABEL_x is record
      Label : SID_AND_ATTRIBUTES;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_MANDATORY_LABEL_x);
   for TOKEN_MANDATORY_LABEL_x use record
      Label at 0 range 0..127;
   end record;
   for TOKEN_MANDATORY_LABEL_x'Size use 128;
   for TOKEN_MANDATORY_LABEL_x'Alignment use 8;
   subtype TOKEN_MANDATORY_LABEL is TOKEN_MANDATORY_LABEL_x;
   type PTOKEN_MANDATORY_LABEL is access all TOKEN_MANDATORY_LABEL_x;
   type TOKEN_MANDATORY_POLICY_x is record
      Policy : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_MANDATORY_POLICY_x);
   for TOKEN_MANDATORY_POLICY_x use record
      Policy at 0 range 0..31;
   end record;
   for TOKEN_MANDATORY_POLICY_x'Size use 32;
   for TOKEN_MANDATORY_POLICY_x'Alignment use 4;
   subtype TOKEN_MANDATORY_POLICY is TOKEN_MANDATORY_POLICY_x;
   type PTOKEN_MANDATORY_POLICY is access all TOKEN_MANDATORY_POLICY_x;
   subtype PSECURITY_ATTRIBUTES_OPAQUE is PVOID;
   type TOKEN_ACCESS_INFORMATION_x is record
      SidHash : PSID_AND_ATTRIBUTES_HASH;
      RestrictedSidHash : PSID_AND_ATTRIBUTES_HASH;
      Privileges : PTOKEN_PRIVILEGES;
      AuthenticationId : LUID;
      TokenType : TOKEN_TYPE;
      ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
      MandatoryPolicy : TOKEN_MANDATORY_POLICY;
      Flags : DWORD;
      AppContainerNumber : DWORD;
      PackageSid : PSID;
      CapabilitiesHash : PSID_AND_ATTRIBUTES_HASH;
      TrustLevelSid : PSID;
      SecurityAttributes : PSECURITY_ATTRIBUTES_OPAQUE;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_ACCESS_INFORMATION_x);
   for TOKEN_ACCESS_INFORMATION_x use record
      SidHash at 0 range 0..63;
      RestrictedSidHash at 0 range 64..127;
      Privileges at 0 range 128..191;
      AuthenticationId at 0 range 192..255;
      TokenType at 0 range 256..287;
      ImpersonationLevel at 0 range 288..319;
      MandatoryPolicy at 0 range 320..351;
      Flags at 0 range 352..383;
      AppContainerNumber at 0 range 384..415;
      PackageSid at 0 range 448..511;
      CapabilitiesHash at 0 range 512..575;
      TrustLevelSid at 0 range 576..639;
      SecurityAttributes at 0 range 640..703;
   end record;
   for TOKEN_ACCESS_INFORMATION_x'Size use 704;
   for TOKEN_ACCESS_INFORMATION_x'Alignment use 8;
   subtype TOKEN_ACCESS_INFORMATION is TOKEN_ACCESS_INFORMATION_x;
   type PTOKEN_ACCESS_INFORMATION is access all TOKEN_ACCESS_INFORMATION_x;
   type TOKEN_AUDIT_POLICY_x_PerUserPolicy_Array is array(1..30) of BYTE; -- Auto Generated Dependancy
   type TOKEN_AUDIT_POLICY_x is record
      PerUserPolicy : TOKEN_AUDIT_POLICY_x_PerUserPolicy_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_AUDIT_POLICY_x);
   for TOKEN_AUDIT_POLICY_x use record
      PerUserPolicy at 0 range 0..239;
   end record;
   for TOKEN_AUDIT_POLICY_x'Size use 240;
   for TOKEN_AUDIT_POLICY_x'Alignment use 1;
   subtype TOKEN_AUDIT_POLICY is TOKEN_AUDIT_POLICY_x;
   type PTOKEN_AUDIT_POLICY is access all TOKEN_AUDIT_POLICY_x;
   type TOKEN_SOURCE_x_SourceName_Array is array(1..8) of CHAR; -- Auto Generated Dependancy
   type TOKEN_SOURCE_x is record
      SourceName : TOKEN_SOURCE_x_SourceName_Array;
      SourceIdentifier : LUID;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_SOURCE_x);
   for TOKEN_SOURCE_x use record
      SourceName at 0 range 0..63;
      SourceIdentifier at 0 range 64..127;
   end record;
   for TOKEN_SOURCE_x'Size use 128;
   for TOKEN_SOURCE_x'Alignment use 4;
   subtype TOKEN_SOURCE is TOKEN_SOURCE_x;
   type PTOKEN_SOURCE is access all TOKEN_SOURCE_x;
   type TOKEN_STATISTICS_x is record
      TokenId : LUID;
      AuthenticationId : LUID;
      ExpirationTime : LARGE_INTEGER;
      TokenType : TOKEN_TYPE;
      ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
      DynamicCharged : DWORD;
      DynamicAvailable : DWORD;
      GroupCount : DWORD;
      PrivilegeCount : DWORD;
      ModifiedId : LUID;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_STATISTICS_x);
   for TOKEN_STATISTICS_x use record
      TokenId at 0 range 0..63;
      AuthenticationId at 0 range 64..127;
      ExpirationTime at 0 range 128..191;
      TokenType at 0 range 192..223;
      ImpersonationLevel at 0 range 224..255;
      DynamicCharged at 0 range 256..287;
      DynamicAvailable at 0 range 288..319;
      GroupCount at 0 range 320..351;
      PrivilegeCount at 0 range 352..383;
      ModifiedId at 0 range 384..447;
   end record;
   for TOKEN_STATISTICS_x'Size use 448;
   for TOKEN_STATISTICS_x'Alignment use 8;
   subtype TOKEN_STATISTICS is TOKEN_STATISTICS_x;
   type PTOKEN_STATISTICS is access all TOKEN_STATISTICS_x;
   type TOKEN_CONTROL_x is record
      TokenId : LUID;
      AuthenticationId : LUID;
      ModifiedId : LUID;
      TokenSource : TOKEN_SOURCE;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_CONTROL_x);
   for TOKEN_CONTROL_x use record
      TokenId at 0 range 0..63;
      AuthenticationId at 0 range 64..127;
      ModifiedId at 0 range 128..191;
      TokenSource at 0 range 192..319;
   end record;
   for TOKEN_CONTROL_x'Size use 320;
   for TOKEN_CONTROL_x'Alignment use 4;
   subtype TOKEN_CONTROL is TOKEN_CONTROL_x;
   type PTOKEN_CONTROL is access all TOKEN_CONTROL_x;
   type TOKEN_ORIGIN_x is record
      OriginatingLogonSession : LUID;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_ORIGIN_x);
   for TOKEN_ORIGIN_x use record
      OriginatingLogonSession at 0 range 0..63;
   end record;
   for TOKEN_ORIGIN_x'Size use 64;
   for TOKEN_ORIGIN_x'Alignment use 4;
   subtype TOKEN_ORIGIN is TOKEN_ORIGIN_x;
   type PTOKEN_ORIGIN is access all TOKEN_ORIGIN_x;
   type MANDATORY_LEVEL_x is (
      MandatoryLevelUntrusted,
      MandatoryLevelLow,
      MandatoryLevelMedium,
      MandatoryLevelHigh,
      MandatoryLevelSystem,
      MandatoryLevelSecureProcess,
      MandatoryLevelCount
   );
   for MANDATORY_LEVEL_x use (
      MandatoryLevelUntrusted => 0,
      MandatoryLevelLow => 1,
      MandatoryLevelMedium => 2,
      MandatoryLevelHigh => 3,
      MandatoryLevelSystem => 4,
      MandatoryLevelSecureProcess => 5,
      MandatoryLevelCount => 6
   );
   for MANDATORY_LEVEL_x'Size use 32;
   subtype MANDATORY_LEVEL is MANDATORY_LEVEL_x;
   type PMANDATORY_LEVEL is access all MANDATORY_LEVEL_x;
   type TOKEN_APPCONTAINER_INFORMATION_x is record
      TokenAppContainer : PSID;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_APPCONTAINER_INFORMATION_x);
   for TOKEN_APPCONTAINER_INFORMATION_x use record
      TokenAppContainer at 0 range 0..63;
   end record;
   for TOKEN_APPCONTAINER_INFORMATION_x'Size use 64;
   for TOKEN_APPCONTAINER_INFORMATION_x'Alignment use 8;
   subtype TOKEN_APPCONTAINER_INFORMATION is TOKEN_APPCONTAINER_INFORMATION_x;
   type PTOKEN_APPCONTAINER_INFORMATION is access all TOKEN_APPCONTAINER_INFORMATION_x;
   type TOKEN_SID_INFORMATION_x is record
      Sid_x : PSID;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_SID_INFORMATION_x);
   for TOKEN_SID_INFORMATION_x use record
      Sid_x at 0 range 0..63;
   end record;
   for TOKEN_SID_INFORMATION_x'Size use 64;
   for TOKEN_SID_INFORMATION_x'Alignment use 8;
   subtype TOKEN_SID_INFORMATION is TOKEN_SID_INFORMATION_x;
   type PTOKEN_SID_INFORMATION is access all TOKEN_SID_INFORMATION_x;
   type TOKEN_BNO_ISOLATION_INFORMATION_x is record
      IsolationPrefix : PWSTR;
      IsolationEnabled : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,TOKEN_BNO_ISOLATION_INFORMATION_x);
   for TOKEN_BNO_ISOLATION_INFORMATION_x use record
      IsolationPrefix at 0 range 0..63;
      IsolationEnabled at 0 range 64..71;
   end record;
   for TOKEN_BNO_ISOLATION_INFORMATION_x'Size use 128;
   for TOKEN_BNO_ISOLATION_INFORMATION_x'Alignment use 8;
   subtype TOKEN_BNO_ISOLATION_INFORMATION is TOKEN_BNO_ISOLATION_INFORMATION_x;
   type PTOKEN_BNO_ISOLATION_INFORMATION is access all TOKEN_BNO_ISOLATION_INFORMATION_x;
   type CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE_x is record
      Version : DWORD64;
      Name : PWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE_x);
   for CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE_x use record
      Version at 0 range 0..63;
      Name at 0 range 64..127;
   end record;
   for CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE_x'Size use 128;
   for CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE_x'Alignment use 8;
   subtype CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE is CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE_x;
   type PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE is access all CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE_x;
   type CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE_x is record
      pValue : PVOID;
      ValueLength : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE_x);
   for CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE_x use record
      pValue at 0 range 0..63;
      ValueLength at 0 range 64..95;
   end record;
   for CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE_x'Size use 128;
   for CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE_x'Alignment use 8;
   subtype CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE is CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE_x;
   type PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE is access all CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE_x;
   type Anonymous_Record_22 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            pInt64_x : PLONG64;
         when 1 =>
            pUint64_x : PDWORD64;
         when 2 =>
            ppString : access PWSTR;
         when 3 =>
            pFqbn : PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE;
         when others => 
            pOctetString : PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_22);
   pragma Unchecked_Union (Anonymous_Record_22);
   for Anonymous_Record_22'Size use 64;
   for Anonymous_Record_22'Alignment use 8;
   type CLAIM_SECURITY_ATTRIBUTE_V1_x is record
      Name : PWSTR;
      ValueType : WORD;
      Reserved : WORD;
      Flags : DWORD;
      ValueCount : DWORD;
      field_1 : Anonymous_Record_22;
   end record;
   pragma Convention (C_Pass_By_Copy,CLAIM_SECURITY_ATTRIBUTE_V1_x);
   for CLAIM_SECURITY_ATTRIBUTE_V1_x use record
      Name at 0 range 0..63;
      ValueType at 0 range 64..79;
      Reserved at 0 range 80..95;
      Flags at 0 range 96..127;
      ValueCount at 0 range 128..159;
      field_1 at 0 range 160..223;
   end record;
   for CLAIM_SECURITY_ATTRIBUTE_V1_x'Size use 256;
   for CLAIM_SECURITY_ATTRIBUTE_V1_x'Alignment use 8;
   subtype CLAIM_SECURITY_ATTRIBUTE_V1 is CLAIM_SECURITY_ATTRIBUTE_V1_x;
   type PCLAIM_SECURITY_ATTRIBUTE_V1 is access all CLAIM_SECURITY_ATTRIBUTE_V1_x;
   type Anonymous_Record_23_pInt64_Array is array(1..1) of DWORD; -- Auto Generated Dependancy
   type Anonymous_Record_23_pUint64_Array is array(1..1) of DWORD; -- Auto Generated Dependancy
   type Anonymous_Record_23_ppString_Array is array(1..1) of DWORD; -- Auto Generated Dependancy
   type Anonymous_Record_23_pFqbn_Array is array(1..1) of DWORD; -- Auto Generated Dependancy
   type Anonymous_Record_23_pOctetString_Array is array(1..1) of DWORD; -- Auto Generated Dependancy
   type Anonymous_Record_23 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            pInt64_x : Anonymous_Record_23_pInt64_Array;
         when 1 =>
            pUint64_x : Anonymous_Record_23_pUint64_Array;
         when 2 =>
            ppString : Anonymous_Record_23_ppString_Array;
         when 3 =>
            pFqbn : Anonymous_Record_23_pFqbn_Array;
         when others => 
            pOctetString : Anonymous_Record_23_pOctetString_Array;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_23);
   pragma Unchecked_Union (Anonymous_Record_23);
   for Anonymous_Record_23'Size use 32;
   for Anonymous_Record_23'Alignment use 4;
   type CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1_x is record
      Name : DWORD;
      ValueType : WORD;
      Reserved : WORD;
      Flags : DWORD;
      ValueCount : DWORD;
      field_1 : Anonymous_Record_23;
   end record;
   pragma Convention (C_Pass_By_Copy,CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1_x);
   for CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1_x use record
      Name at 0 range 0..31;
      ValueType at 0 range 32..47;
      Reserved at 0 range 48..63;
      Flags at 0 range 64..95;
      ValueCount at 0 range 96..127;
      field_1 at 0 range 128..159;
   end record;
   for CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1_x'Size use 160;
   for CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1_x'Alignment use 4;
   subtype CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 is CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1_x;
   type PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 is access all CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1_x;
   type Anonymous_Record_24 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            pAttributeV1 : PCLAIM_SECURITY_ATTRIBUTE_V1;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_24);
   pragma Unchecked_Union (Anonymous_Record_24);
   for Anonymous_Record_24'Size use 64;
   for Anonymous_Record_24'Alignment use 8;
   type CLAIM_SECURITY_ATTRIBUTES_INFORMATION_x is record
      Version : WORD;
      Reserved : WORD;
      AttributeCount : DWORD;
      field_1 : Anonymous_Record_24;
   end record;
   pragma Convention (C_Pass_By_Copy,CLAIM_SECURITY_ATTRIBUTES_INFORMATION_x);
   for CLAIM_SECURITY_ATTRIBUTES_INFORMATION_x use record
      Version at 0 range 0..15;
      Reserved at 0 range 16..31;
      AttributeCount at 0 range 32..63;
      field_1 at 0 range 64..127;
   end record;
   for CLAIM_SECURITY_ATTRIBUTES_INFORMATION_x'Size use 128;
   for CLAIM_SECURITY_ATTRIBUTES_INFORMATION_x'Alignment use 8;
   subtype CLAIM_SECURITY_ATTRIBUTES_INFORMATION is CLAIM_SECURITY_ATTRIBUTES_INFORMATION_x;
   type PCLAIM_SECURITY_ATTRIBUTES_INFORMATION is access all CLAIM_SECURITY_ATTRIBUTES_INFORMATION_x;
   subtype SECURITY_CONTEXT_TRACKING_MODE is BOOLEAN;
   type PSECURITY_CONTEXT_TRACKING_MODE is access all BOOLEAN;
   type SECURITY_QUALITY_OF_SERVICE_x is record
      Length : DWORD;
      ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
      ContextTrackingMode : SECURITY_CONTEXT_TRACKING_MODE;
      EffectiveOnly : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,SECURITY_QUALITY_OF_SERVICE_x);
   for SECURITY_QUALITY_OF_SERVICE_x use record
      Length at 0 range 0..31;
      ImpersonationLevel at 0 range 32..63;
      ContextTrackingMode at 0 range 64..71;
      EffectiveOnly at 0 range 72..79;
   end record;
   for SECURITY_QUALITY_OF_SERVICE_x'Size use 96;
   for SECURITY_QUALITY_OF_SERVICE_x'Alignment use 4;
   subtype SECURITY_QUALITY_OF_SERVICE is SECURITY_QUALITY_OF_SERVICE_x;
   type PSECURITY_QUALITY_OF_SERVICE is access all SECURITY_QUALITY_OF_SERVICE_x;
   type SE_IMPERSONATION_STATE_x is record
      Token : PACCESS_TOKEN;
      CopyOnOpen : BOOLEAN;
      EffectiveOnly : BOOLEAN;
      Level : SECURITY_IMPERSONATION_LEVEL;
   end record;
   pragma Convention (C_Pass_By_Copy,SE_IMPERSONATION_STATE_x);
   for SE_IMPERSONATION_STATE_x use record
      Token at 0 range 0..63;
      CopyOnOpen at 0 range 64..71;
      EffectiveOnly at 0 range 72..79;
      Level at 0 range 96..127;
   end record;
   for SE_IMPERSONATION_STATE_x'Size use 128;
   for SE_IMPERSONATION_STATE_x'Alignment use 8;
   subtype SE_IMPERSONATION_STATE is SE_IMPERSONATION_STATE_x;
   type PSE_IMPERSONATION_STATE is access all SE_IMPERSONATION_STATE_x;
   subtype SECURITY_INFORMATION is DWORD;
   type PSECURITY_INFORMATION is access all DWORD;
   subtype SE_SIGNING_LEVEL is BYTE;
   type PSE_SIGNING_LEVEL is access all BYTE;
   type SE_IMAGE_SIGNATURE_TYPE_x is (
      SeImageSignatureNone,
      SeImageSignatureEmbedded,
      SeImageSignatureCache,
      SeImageSignatureCatalogCached,
      SeImageSignatureCatalogNotCached,
      SeImageSignatureCatalogHint,
      SeImageSignaturePackageCatalog
   );
   for SE_IMAGE_SIGNATURE_TYPE_x use (
      SeImageSignatureNone => 0,
      SeImageSignatureEmbedded => 1,
      SeImageSignatureCache => 2,
      SeImageSignatureCatalogCached => 3,
      SeImageSignatureCatalogNotCached => 4,
      SeImageSignatureCatalogHint => 5,
      SeImageSignaturePackageCatalog => 6
   );
   for SE_IMAGE_SIGNATURE_TYPE_x'Size use 32;
   subtype SE_IMAGE_SIGNATURE_TYPE is SE_IMAGE_SIGNATURE_TYPE_x;
   type PSE_IMAGE_SIGNATURE_TYPE is access all SE_IMAGE_SIGNATURE_TYPE_x;
   type SE_LEARNING_MODE_DATA_TYPE_x is (
      SeLearningModeInvalidType,
      SeLearningModeSettings,
      SeLearningModeMax
   );
   for SE_LEARNING_MODE_DATA_TYPE_x use (
      SeLearningModeInvalidType => 0,
      SeLearningModeSettings => 1,
      SeLearningModeMax => 2
   );
   for SE_LEARNING_MODE_DATA_TYPE_x'Size use 32;
   subtype SE_LEARNING_MODE_DATA_TYPE is SE_LEARNING_MODE_DATA_TYPE_x;
   type SECURITY_CAPABILITIES_x is record
      AppContainerSid : PSID;
      Capabilities : PSID_AND_ATTRIBUTES;
      CapabilityCount : DWORD;
      Reserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SECURITY_CAPABILITIES_x);
   for SECURITY_CAPABILITIES_x use record
      AppContainerSid at 0 range 0..63;
      Capabilities at 0 range 64..127;
      CapabilityCount at 0 range 128..159;
      Reserved at 0 range 160..191;
   end record;
   for SECURITY_CAPABILITIES_x'Size use 192;
   for SECURITY_CAPABILITIES_x'Alignment use 8;
   subtype SECURITY_CAPABILITIES is SECURITY_CAPABILITIES_x;
   type PSECURITY_CAPABILITIES is access all SECURITY_CAPABILITIES_x;
   type LPSECURITY_CAPABILITIES is access all SECURITY_CAPABILITIES_x;
   type JOB_SET_ARRAY_x is record
      JobHandle : HANDLE;
      MemberLevel : DWORD;
      Flags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,JOB_SET_ARRAY_x);
   for JOB_SET_ARRAY_x use record
      JobHandle at 0 range 0..63;
      MemberLevel at 0 range 64..95;
      Flags at 0 range 96..127;
   end record;
   for JOB_SET_ARRAY_x'Size use 128;
   for JOB_SET_ARRAY_x'Alignment use 8;
   subtype JOB_SET_ARRAY is JOB_SET_ARRAY_x;
   type PJOB_SET_ARRAY is access all JOB_SET_ARRAY_x;
   type EXCEPTION_REGISTRATION_RECORD_x;
   subtype EXCEPTION_REGISTRATION_RECORD is EXCEPTION_REGISTRATION_RECORD_x;
   type EXCEPTION_REGISTRATION_RECORD_x is record
      Next : access EXCEPTION_REGISTRATION_RECORD_x;
      Handler : PEXCEPTION_ROUTINE;
   end record;
   pragma Convention (C_Pass_By_Copy,EXCEPTION_REGISTRATION_RECORD_x);
   for EXCEPTION_REGISTRATION_RECORD_x use record
      Next at 0 range 0..63;
      Handler at 0 range 64..127;
   end record;
   for EXCEPTION_REGISTRATION_RECORD_x'Size use 128;
   for EXCEPTION_REGISTRATION_RECORD_x'Alignment use 8;
   type PEXCEPTION_REGISTRATION_RECORD is access all EXCEPTION_REGISTRATION_RECORD;
   type Anonymous_Record_25 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            FiberData : PVOID;
         when others => 
            Version : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_25);
   pragma Unchecked_Union (Anonymous_Record_25);
   for Anonymous_Record_25'Size use 64;
   for Anonymous_Record_25'Alignment use 8;
   type NT_TIB_x;
   subtype NT_TIB is NT_TIB_x;
   type Anonymous_Record_26 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            FiberData : PVOID;
         when others => 
            Version : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_26);
   pragma Unchecked_Union (Anonymous_Record_26);
   for Anonymous_Record_26'Size use 64;
   for Anonymous_Record_26'Alignment use 8;
   type NT_TIB_x is record
      ExceptionList : access EXCEPTION_REGISTRATION_RECORD_x;
      StackBase : PVOID;
      StackLimit : PVOID;
      SubSystemTib : PVOID;
      field_1 : Anonymous_Record_26;
      ArbitraryUserPointer : PVOID;
      Self : access NT_TIB_x;
   end record;
   pragma Convention (C_Pass_By_Copy,NT_TIB_x);
   for NT_TIB_x use record
      ExceptionList at 0 range 0..63;
      StackBase at 0 range 64..127;
      StackLimit at 0 range 128..191;
      SubSystemTib at 0 range 192..255;
      field_1 at 0 range 256..319;
      ArbitraryUserPointer at 0 range 320..383;
      Self at 0 range 384..447;
   end record;
   for NT_TIB_x'Size use 448;
   for NT_TIB_x'Alignment use 8;
   type PNT_TIB is access all NT_TIB;
   type Anonymous_Record_27 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            FiberData : DWORD;
         when others => 
            Version : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_27);
   pragma Unchecked_Union (Anonymous_Record_27);
   for Anonymous_Record_27'Size use 32;
   for Anonymous_Record_27'Alignment use 4;
   type NT_TIB32_x is record
      ExceptionList : DWORD;
      StackBase : DWORD;
      StackLimit : DWORD;
      SubSystemTib : DWORD;
      field_1 : Anonymous_Record_27;
      ArbitraryUserPointer : DWORD;
      Self : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,NT_TIB32_x);
   for NT_TIB32_x use record
      ExceptionList at 0 range 0..31;
      StackBase at 0 range 32..63;
      StackLimit at 0 range 64..95;
      SubSystemTib at 0 range 96..127;
      field_1 at 0 range 128..159;
      ArbitraryUserPointer at 0 range 160..191;
      Self at 0 range 192..223;
   end record;
   for NT_TIB32_x'Size use 224;
   for NT_TIB32_x'Alignment use 4;
   subtype NT_TIB32 is NT_TIB32_x;
   type PNT_TIB32 is access all NT_TIB32_x;
   type Anonymous_Record_28 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            FiberData : DWORD64;
         when others => 
            Version : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_28);
   pragma Unchecked_Union (Anonymous_Record_28);
   for Anonymous_Record_28'Size use 64;
   for Anonymous_Record_28'Alignment use 8;
   type NT_TIB64_x is record
      ExceptionList : DWORD64;
      StackBase : DWORD64;
      StackLimit : DWORD64;
      SubSystemTib : DWORD64;
      field_1 : Anonymous_Record_28;
      ArbitraryUserPointer : DWORD64;
      Self : DWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,NT_TIB64_x);
   for NT_TIB64_x use record
      ExceptionList at 0 range 0..63;
      StackBase at 0 range 64..127;
      StackLimit at 0 range 128..191;
      SubSystemTib at 0 range 192..255;
      field_1 at 0 range 256..319;
      ArbitraryUserPointer at 0 range 320..383;
      Self at 0 range 384..447;
   end record;
   for NT_TIB64_x'Size use 448;
   for NT_TIB64_x'Alignment use 8;
   subtype NT_TIB64 is NT_TIB64_x;
   type PNT_TIB64 is access all NT_TIB64_x;
   type UMS_CREATE_THREAD_ATTRIBUTES_x is record
      UmsVersion : DWORD;
      UmsContext : PVOID;
      UmsCompletionList : PVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,UMS_CREATE_THREAD_ATTRIBUTES_x);
   for UMS_CREATE_THREAD_ATTRIBUTES_x use record
      UmsVersion at 0 range 0..31;
      UmsContext at 0 range 64..127;
      UmsCompletionList at 0 range 128..191;
   end record;
   for UMS_CREATE_THREAD_ATTRIBUTES_x'Size use 192;
   for UMS_CREATE_THREAD_ATTRIBUTES_x'Alignment use 8;
   subtype UMS_CREATE_THREAD_ATTRIBUTES is UMS_CREATE_THREAD_ATTRIBUTES_x;
   type PUMS_CREATE_THREAD_ATTRIBUTES is access all UMS_CREATE_THREAD_ATTRIBUTES_x;
   type WOW64_ARCHITECTURE_INFORMATION_x is record
      Machine : Interfaces.C.Extensions.Unsigned_16; -- bit field
      KernelMode : Interfaces.C.Extensions.Unsigned_1; -- bit field
      UserMode : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Native : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Process : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedZero0 : Interfaces.C.Extensions.Unsigned_12; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,WOW64_ARCHITECTURE_INFORMATION_x);
   for WOW64_ARCHITECTURE_INFORMATION_x use record
      Machine at 0 range 0..15;
      KernelMode at 0 range 16..16;
      UserMode at 0 range 17..17;
      Native at 0 range 18..18;
      Process at 0 range 19..19;
      ReservedZero0 at 0 range 20..31;
   end record;
   for WOW64_ARCHITECTURE_INFORMATION_x'Size use 32;
   for WOW64_ARCHITECTURE_INFORMATION_x'Alignment use 4;
   subtype WOW64_ARCHITECTURE_INFORMATION is WOW64_ARCHITECTURE_INFORMATION_x;
   type PROCESS_DYNAMIC_EH_CONTINUATION_TARGET_x is record
      TargetAddress : ULONG_PTR;
      Flags : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_DYNAMIC_EH_CONTINUATION_TARGET_x);
   for PROCESS_DYNAMIC_EH_CONTINUATION_TARGET_x use record
      TargetAddress at 0 range 0..63;
      Flags at 0 range 64..127;
   end record;
   for PROCESS_DYNAMIC_EH_CONTINUATION_TARGET_x'Size use 128;
   for PROCESS_DYNAMIC_EH_CONTINUATION_TARGET_x'Alignment use 8;
   subtype PROCESS_DYNAMIC_EH_CONTINUATION_TARGET is PROCESS_DYNAMIC_EH_CONTINUATION_TARGET_x;
   type PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET is access all PROCESS_DYNAMIC_EH_CONTINUATION_TARGET_x;
   type PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION_x is record
      NumberOfTargets : WORD;
      Reserved : WORD;
      Reserved2 : DWORD;
      Targets : PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION_x);
   for PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION_x use record
      NumberOfTargets at 0 range 0..15;
      Reserved at 0 range 16..31;
      Reserved2 at 0 range 32..63;
      Targets at 0 range 64..127;
   end record;
   for PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION_x'Size use 128;
   for PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION_x'Alignment use 8;
   subtype PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION is PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION_x;
   type PPROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION is access all PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION_x;
   type QUOTA_LIMITS_x is record
      PagedPoolLimit : SIZE_T;
      NonPagedPoolLimit : SIZE_T;
      MinimumWorkingSetSize : SIZE_T;
      MaximumWorkingSetSize : SIZE_T;
      PagefileLimit : SIZE_T;
      TimeLimit : LARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,QUOTA_LIMITS_x);
   for QUOTA_LIMITS_x use record
      PagedPoolLimit at 0 range 0..63;
      NonPagedPoolLimit at 0 range 64..127;
      MinimumWorkingSetSize at 0 range 128..191;
      MaximumWorkingSetSize at 0 range 192..255;
      PagefileLimit at 0 range 256..319;
      TimeLimit at 0 range 320..383;
   end record;
   for QUOTA_LIMITS_x'Size use 384;
   for QUOTA_LIMITS_x'Alignment use 8;
   subtype QUOTA_LIMITS is QUOTA_LIMITS_x;
   type PQUOTA_LIMITS is access all QUOTA_LIMITS_x;
   type Anonymous_Record_29 is record
      RatePercent : Interfaces.C.Extensions.Unsigned_7; -- bit field
      Reserved0 : Interfaces.C.Extensions.Unsigned_25; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_29);
   for Anonymous_Record_29 use record
      RatePercent at 0 range 0..6;
      Reserved0 at 0 range 7..31;
   end record;
   for Anonymous_Record_29'Size use 32;
   for Anonymous_Record_29'Alignment use 4;
   type RATE_QUOTA_LIMIT_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            RateData : DWORD;
         when others => 
            field_1 : Anonymous_Record_29;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,RATE_QUOTA_LIMIT_x);
   pragma Unchecked_Union (RATE_QUOTA_LIMIT_x);
   for RATE_QUOTA_LIMIT_x'Size use 32;
   for RATE_QUOTA_LIMIT_x'Alignment use 4;
   subtype RATE_QUOTA_LIMIT is RATE_QUOTA_LIMIT_x;
   type PRATE_QUOTA_LIMIT is access all RATE_QUOTA_LIMIT_x;
   type QUOTA_LIMITS_EX_x is record
      PagedPoolLimit : SIZE_T;
      NonPagedPoolLimit : SIZE_T;
      MinimumWorkingSetSize : SIZE_T;
      MaximumWorkingSetSize : SIZE_T;
      PagefileLimit : SIZE_T;
      TimeLimit : LARGE_INTEGER;
      WorkingSetLimit : SIZE_T;
      Reserved2 : SIZE_T;
      Reserved3 : SIZE_T;
      Reserved4 : SIZE_T;
      Flags : DWORD;
      CpuRateLimit : RATE_QUOTA_LIMIT;
   end record;
   pragma Convention (C_Pass_By_Copy,QUOTA_LIMITS_EX_x);
   for QUOTA_LIMITS_EX_x use record
      PagedPoolLimit at 0 range 0..63;
      NonPagedPoolLimit at 0 range 64..127;
      MinimumWorkingSetSize at 0 range 128..191;
      MaximumWorkingSetSize at 0 range 192..255;
      PagefileLimit at 0 range 256..319;
      TimeLimit at 0 range 320..383;
      WorkingSetLimit at 0 range 384..447;
      Reserved2 at 0 range 448..511;
      Reserved3 at 0 range 512..575;
      Reserved4 at 0 range 576..639;
      Flags at 0 range 640..671;
      CpuRateLimit at 0 range 672..703;
   end record;
   for QUOTA_LIMITS_EX_x'Size use 704;
   for QUOTA_LIMITS_EX_x'Alignment use 8;
   subtype QUOTA_LIMITS_EX is QUOTA_LIMITS_EX_x;
   type PQUOTA_LIMITS_EX is access all QUOTA_LIMITS_EX_x;
   type IO_COUNTERS_x is record
      ReadOperationCount : ULONGLONG;
      WriteOperationCount : ULONGLONG;
      OtherOperationCount : ULONGLONG;
      ReadTransferCount : ULONGLONG;
      WriteTransferCount : ULONGLONG;
      OtherTransferCount : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,IO_COUNTERS_x);
   for IO_COUNTERS_x use record
      ReadOperationCount at 0 range 0..63;
      WriteOperationCount at 0 range 64..127;
      OtherOperationCount at 0 range 128..191;
      ReadTransferCount at 0 range 192..255;
      WriteTransferCount at 0 range 256..319;
      OtherTransferCount at 0 range 320..383;
   end record;
   for IO_COUNTERS_x'Size use 384;
   for IO_COUNTERS_x'Alignment use 8;
   subtype IO_COUNTERS is IO_COUNTERS_x;
   type PIO_COUNTERS is access all IO_COUNTERS;
   type HARDWARE_COUNTER_TYPE_x is (
      PMCCounter,
      MaxHardwareCounterType
   );
   for HARDWARE_COUNTER_TYPE_x use (
      PMCCounter => 0,
      MaxHardwareCounterType => 1
   );
   for HARDWARE_COUNTER_TYPE_x'Size use 32;
   subtype HARDWARE_COUNTER_TYPE is HARDWARE_COUNTER_TYPE_x;
   type PHARDWARE_COUNTER_TYPE is access all HARDWARE_COUNTER_TYPE_x;
   type PROCESS_MITIGATION_POLICY_x is (
      ProcessDEPPolicy,
      ProcessASLRPolicy,
      ProcessDynamicCodePolicy,
      ProcessStrictHandleCheckPolicy,
      ProcessSystemCallDisablePolicy,
      ProcessMitigationOptionsMask,
      ProcessExtensionPointDisablePolicy,
      ProcessControlFlowGuardPolicy,
      ProcessSignaturePolicy,
      ProcessFontDisablePolicy,
      ProcessImageLoadPolicy,
      ProcessSystemCallFilterPolicy,
      ProcessPayloadRestrictionPolicy,
      ProcessChildProcessPolicy,
      ProcessSideChannelIsolationPolicy,
      ProcessUserShadowStackPolicy,
      MaxProcessMitigationPolicy
   );
   for PROCESS_MITIGATION_POLICY_x use (
      ProcessDEPPolicy => 0,
      ProcessASLRPolicy => 1,
      ProcessDynamicCodePolicy => 2,
      ProcessStrictHandleCheckPolicy => 3,
      ProcessSystemCallDisablePolicy => 4,
      ProcessMitigationOptionsMask => 5,
      ProcessExtensionPointDisablePolicy => 6,
      ProcessControlFlowGuardPolicy => 7,
      ProcessSignaturePolicy => 8,
      ProcessFontDisablePolicy => 9,
      ProcessImageLoadPolicy => 10,
      ProcessSystemCallFilterPolicy => 11,
      ProcessPayloadRestrictionPolicy => 12,
      ProcessChildProcessPolicy => 13,
      ProcessSideChannelIsolationPolicy => 14,
      ProcessUserShadowStackPolicy => 15,
      MaxProcessMitigationPolicy => 16
   );
   for PROCESS_MITIGATION_POLICY_x'Size use 32;
   subtype PROCESS_MITIGATION_POLICY is PROCESS_MITIGATION_POLICY_x;
   type PPROCESS_MITIGATION_POLICY is access all PROCESS_MITIGATION_POLICY_x;
   type Anonymous_Record_31 is record
      EnableBottomUpRandomization : Interfaces.C.Extensions.Unsigned_1; -- bit field
      EnableForceRelocateImages : Interfaces.C.Extensions.Unsigned_1; -- bit field
      EnableHighEntropy : Interfaces.C.Extensions.Unsigned_1; -- bit field
      DisallowStrippedImages : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_28; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_31);
   for Anonymous_Record_31 use record
      EnableBottomUpRandomization at 0 range 0..0;
      EnableForceRelocateImages at 0 range 1..1;
      EnableHighEntropy at 0 range 2..2;
      DisallowStrippedImages at 0 range 3..3;
      ReservedFlags at 0 range 4..31;
   end record;
   for Anonymous_Record_31'Size use 32;
   for Anonymous_Record_31'Alignment use 4;
   type Anonymous_Record_30 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_31;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_30);
   pragma Unchecked_Union (Anonymous_Record_30);
   for Anonymous_Record_30'Size use 32;
   for Anonymous_Record_30'Alignment use 4;
   type PROCESS_MITIGATION_ASLR_POLICY_x is record
      field_1 : Anonymous_Record_30;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_ASLR_POLICY_x);
   for PROCESS_MITIGATION_ASLR_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_ASLR_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_ASLR_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_ASLR_POLICY is PROCESS_MITIGATION_ASLR_POLICY_x;
   type PPROCESS_MITIGATION_ASLR_POLICY is access all PROCESS_MITIGATION_ASLR_POLICY_x;
   type Anonymous_Record_33 is record
      Enable : Interfaces.C.Extensions.Unsigned_1; -- bit field
      DisableAtlThunkEmulation : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_30; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_33);
   for Anonymous_Record_33 use record
      Enable at 0 range 0..0;
      DisableAtlThunkEmulation at 0 range 1..1;
      ReservedFlags at 0 range 2..31;
   end record;
   for Anonymous_Record_33'Size use 32;
   for Anonymous_Record_33'Alignment use 4;
   type Anonymous_Record_32 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_33;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_32);
   pragma Unchecked_Union (Anonymous_Record_32);
   for Anonymous_Record_32'Size use 32;
   for Anonymous_Record_32'Alignment use 4;
   type PROCESS_MITIGATION_DEP_POLICY_x is record
      field_1 : Anonymous_Record_32;
      Permanent : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_DEP_POLICY_x);
   for PROCESS_MITIGATION_DEP_POLICY_x use record
      field_1 at 0 range 0..31;
      Permanent at 0 range 32..39;
   end record;
   for PROCESS_MITIGATION_DEP_POLICY_x'Size use 64;
   for PROCESS_MITIGATION_DEP_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_DEP_POLICY is PROCESS_MITIGATION_DEP_POLICY_x;
   type PPROCESS_MITIGATION_DEP_POLICY is access all PROCESS_MITIGATION_DEP_POLICY_x;
   type Anonymous_Record_35 is record
      RaiseExceptionOnInvalidHandleReference : Interfaces.C.Extensions.Unsigned_1; -- bit field
      HandleExceptionsPermanentlyEnabled : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_30; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_35);
   for Anonymous_Record_35 use record
      RaiseExceptionOnInvalidHandleReference at 0 range 0..0;
      HandleExceptionsPermanentlyEnabled at 0 range 1..1;
      ReservedFlags at 0 range 2..31;
   end record;
   for Anonymous_Record_35'Size use 32;
   for Anonymous_Record_35'Alignment use 4;
   type Anonymous_Record_34 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_35;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_34);
   pragma Unchecked_Union (Anonymous_Record_34);
   for Anonymous_Record_34'Size use 32;
   for Anonymous_Record_34'Alignment use 4;
   type PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY_x is record
      field_1 : Anonymous_Record_34;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY_x);
   for PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY is PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY_x;
   type PPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY is access all PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY_x;
   type Anonymous_Record_37 is record
      DisallowWin32kSystemCalls : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditDisallowWin32kSystemCalls : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_30; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_37);
   for Anonymous_Record_37 use record
      DisallowWin32kSystemCalls at 0 range 0..0;
      AuditDisallowWin32kSystemCalls at 0 range 1..1;
      ReservedFlags at 0 range 2..31;
   end record;
   for Anonymous_Record_37'Size use 32;
   for Anonymous_Record_37'Alignment use 4;
   type Anonymous_Record_36 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_37;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_36);
   pragma Unchecked_Union (Anonymous_Record_36);
   for Anonymous_Record_36'Size use 32;
   for Anonymous_Record_36'Alignment use 4;
   type PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY_x is record
      field_1 : Anonymous_Record_36;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY_x);
   for PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY is PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY_x;
   type PPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY is access all PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY_x;
   type Anonymous_Record_39 is record
      DisableExtensionPoints : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_31; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_39);
   for Anonymous_Record_39 use record
      DisableExtensionPoints at 0 range 0..0;
      ReservedFlags at 0 range 1..31;
   end record;
   for Anonymous_Record_39'Size use 32;
   for Anonymous_Record_39'Alignment use 4;
   type Anonymous_Record_38 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_39;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_38);
   pragma Unchecked_Union (Anonymous_Record_38);
   for Anonymous_Record_38'Size use 32;
   for Anonymous_Record_38'Alignment use 4;
   type PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY_x is record
      field_1 : Anonymous_Record_38;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY_x);
   for PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY is PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY_x;
   type PPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY is access all PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY_x;
   type Anonymous_Record_41 is record
      ProhibitDynamicCode : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AllowThreadOptOut : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AllowRemoteDowngrade : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditProhibitDynamicCode : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_28; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_41);
   for Anonymous_Record_41 use record
      ProhibitDynamicCode at 0 range 0..0;
      AllowThreadOptOut at 0 range 1..1;
      AllowRemoteDowngrade at 0 range 2..2;
      AuditProhibitDynamicCode at 0 range 3..3;
      ReservedFlags at 0 range 4..31;
   end record;
   for Anonymous_Record_41'Size use 32;
   for Anonymous_Record_41'Alignment use 4;
   type Anonymous_Record_40 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_41;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_40);
   pragma Unchecked_Union (Anonymous_Record_40);
   for Anonymous_Record_40'Size use 32;
   for Anonymous_Record_40'Alignment use 4;
   type PROCESS_MITIGATION_DYNAMIC_CODE_POLICY_x is record
      field_1 : Anonymous_Record_40;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_DYNAMIC_CODE_POLICY_x);
   for PROCESS_MITIGATION_DYNAMIC_CODE_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_DYNAMIC_CODE_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_DYNAMIC_CODE_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_DYNAMIC_CODE_POLICY is PROCESS_MITIGATION_DYNAMIC_CODE_POLICY_x;
   type PPROCESS_MITIGATION_DYNAMIC_CODE_POLICY is access all PROCESS_MITIGATION_DYNAMIC_CODE_POLICY_x;
   type Anonymous_Record_43 is record
      EnableControlFlowGuard : Interfaces.C.Extensions.Unsigned_1; -- bit field
      EnableExportSuppression : Interfaces.C.Extensions.Unsigned_1; -- bit field
      StrictMode : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_29; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_43);
   for Anonymous_Record_43 use record
      EnableControlFlowGuard at 0 range 0..0;
      EnableExportSuppression at 0 range 1..1;
      StrictMode at 0 range 2..2;
      ReservedFlags at 0 range 3..31;
   end record;
   for Anonymous_Record_43'Size use 32;
   for Anonymous_Record_43'Alignment use 4;
   type Anonymous_Record_42 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_43;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_42);
   pragma Unchecked_Union (Anonymous_Record_42);
   for Anonymous_Record_42'Size use 32;
   for Anonymous_Record_42'Alignment use 4;
   type PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY_x is record
      field_1 : Anonymous_Record_42;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY_x);
   for PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY is PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY_x;
   type PPROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY is access all PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY_x;
   type Anonymous_Record_45 is record
      MicrosoftSignedOnly : Interfaces.C.Extensions.Unsigned_1; -- bit field
      StoreSignedOnly : Interfaces.C.Extensions.Unsigned_1; -- bit field
      MitigationOptIn : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditMicrosoftSignedOnly : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditStoreSignedOnly : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_27; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_45);
   for Anonymous_Record_45 use record
      MicrosoftSignedOnly at 0 range 0..0;
      StoreSignedOnly at 0 range 1..1;
      MitigationOptIn at 0 range 2..2;
      AuditMicrosoftSignedOnly at 0 range 3..3;
      AuditStoreSignedOnly at 0 range 4..4;
      ReservedFlags at 0 range 5..31;
   end record;
   for Anonymous_Record_45'Size use 32;
   for Anonymous_Record_45'Alignment use 4;
   type Anonymous_Record_44 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_45;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_44);
   pragma Unchecked_Union (Anonymous_Record_44);
   for Anonymous_Record_44'Size use 32;
   for Anonymous_Record_44'Alignment use 4;
   type PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY_x is record
      field_1 : Anonymous_Record_44;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY_x);
   for PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY is PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY_x;
   type PPROCESS_MITIGATION_BINARY_SIGNATURE_POLICY is access all PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY_x;
   type Anonymous_Record_47 is record
      DisableNonSystemFonts : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditNonSystemFontLoading : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_30; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_47);
   for Anonymous_Record_47 use record
      DisableNonSystemFonts at 0 range 0..0;
      AuditNonSystemFontLoading at 0 range 1..1;
      ReservedFlags at 0 range 2..31;
   end record;
   for Anonymous_Record_47'Size use 32;
   for Anonymous_Record_47'Alignment use 4;
   type Anonymous_Record_46 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_47;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_46);
   pragma Unchecked_Union (Anonymous_Record_46);
   for Anonymous_Record_46'Size use 32;
   for Anonymous_Record_46'Alignment use 4;
   type PROCESS_MITIGATION_FONT_DISABLE_POLICY_x is record
      field_1 : Anonymous_Record_46;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_FONT_DISABLE_POLICY_x);
   for PROCESS_MITIGATION_FONT_DISABLE_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_FONT_DISABLE_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_FONT_DISABLE_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_FONT_DISABLE_POLICY is PROCESS_MITIGATION_FONT_DISABLE_POLICY_x;
   type PPROCESS_MITIGATION_FONT_DISABLE_POLICY is access all PROCESS_MITIGATION_FONT_DISABLE_POLICY_x;
   type Anonymous_Record_49 is record
      NoRemoteImages : Interfaces.C.Extensions.Unsigned_1; -- bit field
      NoLowMandatoryLabelImages : Interfaces.C.Extensions.Unsigned_1; -- bit field
      PreferSystem32Images : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditNoRemoteImages : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditNoLowMandatoryLabelImages : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_27; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_49);
   for Anonymous_Record_49 use record
      NoRemoteImages at 0 range 0..0;
      NoLowMandatoryLabelImages at 0 range 1..1;
      PreferSystem32Images at 0 range 2..2;
      AuditNoRemoteImages at 0 range 3..3;
      AuditNoLowMandatoryLabelImages at 0 range 4..4;
      ReservedFlags at 0 range 5..31;
   end record;
   for Anonymous_Record_49'Size use 32;
   for Anonymous_Record_49'Alignment use 4;
   type Anonymous_Record_48 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_49;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_48);
   pragma Unchecked_Union (Anonymous_Record_48);
   for Anonymous_Record_48'Size use 32;
   for Anonymous_Record_48'Alignment use 4;
   type PROCESS_MITIGATION_IMAGE_LOAD_POLICY_x is record
      field_1 : Anonymous_Record_48;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_IMAGE_LOAD_POLICY_x);
   for PROCESS_MITIGATION_IMAGE_LOAD_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_IMAGE_LOAD_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_IMAGE_LOAD_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_IMAGE_LOAD_POLICY is PROCESS_MITIGATION_IMAGE_LOAD_POLICY_x;
   type PPROCESS_MITIGATION_IMAGE_LOAD_POLICY is access all PROCESS_MITIGATION_IMAGE_LOAD_POLICY_x;
   type Anonymous_Record_51 is record
      FilterId : Interfaces.C.Extensions.Unsigned_4; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_28; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_51);
   for Anonymous_Record_51 use record
      FilterId at 0 range 0..3;
      ReservedFlags at 0 range 4..31;
   end record;
   for Anonymous_Record_51'Size use 32;
   for Anonymous_Record_51'Alignment use 4;
   type Anonymous_Record_50 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_51;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_50);
   pragma Unchecked_Union (Anonymous_Record_50);
   for Anonymous_Record_50'Size use 32;
   for Anonymous_Record_50'Alignment use 4;
   type PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY_x is record
      field_1 : Anonymous_Record_50;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY_x);
   for PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY is PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY_x;
   type PPROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY is access all PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY_x;
   type Anonymous_Record_53 is record
      EnableExportAddressFilter : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditExportAddressFilter : Interfaces.C.Extensions.Unsigned_1; -- bit field
      EnableExportAddressFilterPlus : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditExportAddressFilterPlus : Interfaces.C.Extensions.Unsigned_1; -- bit field
      EnableImportAddressFilter : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditImportAddressFilter : Interfaces.C.Extensions.Unsigned_1; -- bit field
      EnableRopStackPivot : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditRopStackPivot : Interfaces.C.Extensions.Unsigned_1; -- bit field
      EnableRopCallerCheck : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditRopCallerCheck : Interfaces.C.Extensions.Unsigned_1; -- bit field
      EnableRopSimExec : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditRopSimExec : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_20; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_53);
   for Anonymous_Record_53 use record
      EnableExportAddressFilter at 0 range 0..0;
      AuditExportAddressFilter at 0 range 1..1;
      EnableExportAddressFilterPlus at 0 range 2..2;
      AuditExportAddressFilterPlus at 0 range 3..3;
      EnableImportAddressFilter at 0 range 4..4;
      AuditImportAddressFilter at 0 range 5..5;
      EnableRopStackPivot at 0 range 6..6;
      AuditRopStackPivot at 0 range 7..7;
      EnableRopCallerCheck at 0 range 8..8;
      AuditRopCallerCheck at 0 range 9..9;
      EnableRopSimExec at 0 range 10..10;
      AuditRopSimExec at 0 range 11..11;
      ReservedFlags at 0 range 12..31;
   end record;
   for Anonymous_Record_53'Size use 32;
   for Anonymous_Record_53'Alignment use 4;
   type Anonymous_Record_52 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_53;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_52);
   pragma Unchecked_Union (Anonymous_Record_52);
   for Anonymous_Record_52'Size use 32;
   for Anonymous_Record_52'Alignment use 4;
   type PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY_x is record
      field_1 : Anonymous_Record_52;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY_x);
   for PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY is PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY_x;
   type PPROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY is access all PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY_x;
   type Anonymous_Record_55 is record
      NoChildProcessCreation : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AuditNoChildProcessCreation : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AllowSecureProcessCreation : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_29; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_55);
   for Anonymous_Record_55 use record
      NoChildProcessCreation at 0 range 0..0;
      AuditNoChildProcessCreation at 0 range 1..1;
      AllowSecureProcessCreation at 0 range 2..2;
      ReservedFlags at 0 range 3..31;
   end record;
   for Anonymous_Record_55'Size use 32;
   for Anonymous_Record_55'Alignment use 4;
   type Anonymous_Record_54 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_55;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_54);
   pragma Unchecked_Union (Anonymous_Record_54);
   for Anonymous_Record_54'Size use 32;
   for Anonymous_Record_54'Alignment use 4;
   type PROCESS_MITIGATION_CHILD_PROCESS_POLICY_x is record
      field_1 : Anonymous_Record_54;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_CHILD_PROCESS_POLICY_x);
   for PROCESS_MITIGATION_CHILD_PROCESS_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_CHILD_PROCESS_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_CHILD_PROCESS_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_CHILD_PROCESS_POLICY is PROCESS_MITIGATION_CHILD_PROCESS_POLICY_x;
   type PPROCESS_MITIGATION_CHILD_PROCESS_POLICY is access all PROCESS_MITIGATION_CHILD_PROCESS_POLICY_x;
   type Anonymous_Record_57 is record
      SmtBranchTargetIsolation : Interfaces.C.Extensions.Unsigned_1; -- bit field
      IsolateSecurityDomain : Interfaces.C.Extensions.Unsigned_1; -- bit field
      DisablePageCombine : Interfaces.C.Extensions.Unsigned_1; -- bit field
      SpeculativeStoreBypassDisable : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_28; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_57);
   for Anonymous_Record_57 use record
      SmtBranchTargetIsolation at 0 range 0..0;
      IsolateSecurityDomain at 0 range 1..1;
      DisablePageCombine at 0 range 2..2;
      SpeculativeStoreBypassDisable at 0 range 3..3;
      ReservedFlags at 0 range 4..31;
   end record;
   for Anonymous_Record_57'Size use 32;
   for Anonymous_Record_57'Alignment use 4;
   type Anonymous_Record_56 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_57;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_56);
   pragma Unchecked_Union (Anonymous_Record_56);
   for Anonymous_Record_56'Size use 32;
   for Anonymous_Record_56'Alignment use 4;
   type PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY_x is record
      field_1 : Anonymous_Record_56;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY_x);
   for PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY is PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY_x;
   type PPROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY is access all PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY_x;
   type Anonymous_Record_59 is record
      EnableUserShadowStack : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_31; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_59);
   for Anonymous_Record_59 use record
      EnableUserShadowStack at 0 range 0..0;
      ReservedFlags at 0 range 1..31;
   end record;
   for Anonymous_Record_59'Size use 32;
   for Anonymous_Record_59'Alignment use 4;
   type Anonymous_Record_58 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_59;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_58);
   pragma Unchecked_Union (Anonymous_Record_58);
   for Anonymous_Record_58'Size use 32;
   for Anonymous_Record_58'Alignment use 4;
   type PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY_x is record
      field_1 : Anonymous_Record_58;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY_x);
   for PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY_x use record
      field_1 at 0 range 0..31;
   end record;
   for PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY_x'Size use 32;
   for PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY_x'Alignment use 4;
   subtype PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY is PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY_x;
   type PPROCESS_MITIGATION_USER_SHADOW_STACK_POLICY is access all PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY_x;
   type JOBOBJECT_BASIC_ACCOUNTING_INFORMATION_x is record
      TotalUserTime : LARGE_INTEGER;
      TotalKernelTime : LARGE_INTEGER;
      ThisPeriodTotalUserTime : LARGE_INTEGER;
      ThisPeriodTotalKernelTime : LARGE_INTEGER;
      TotalPageFaultCount : DWORD;
      TotalProcesses : DWORD;
      ActiveProcesses : DWORD;
      TotalTerminatedProcesses : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_BASIC_ACCOUNTING_INFORMATION_x);
   for JOBOBJECT_BASIC_ACCOUNTING_INFORMATION_x use record
      TotalUserTime at 0 range 0..63;
      TotalKernelTime at 0 range 64..127;
      ThisPeriodTotalUserTime at 0 range 128..191;
      ThisPeriodTotalKernelTime at 0 range 192..255;
      TotalPageFaultCount at 0 range 256..287;
      TotalProcesses at 0 range 288..319;
      ActiveProcesses at 0 range 320..351;
      TotalTerminatedProcesses at 0 range 352..383;
   end record;
   for JOBOBJECT_BASIC_ACCOUNTING_INFORMATION_x'Size use 384;
   for JOBOBJECT_BASIC_ACCOUNTING_INFORMATION_x'Alignment use 8;
   subtype JOBOBJECT_BASIC_ACCOUNTING_INFORMATION is JOBOBJECT_BASIC_ACCOUNTING_INFORMATION_x;
   type PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION is access all JOBOBJECT_BASIC_ACCOUNTING_INFORMATION_x;
   type JOBOBJECT_BASIC_LIMIT_INFORMATION_x is record
      PerProcessUserTimeLimit : LARGE_INTEGER;
      PerJobUserTimeLimit : LARGE_INTEGER;
      LimitFlags : DWORD;
      MinimumWorkingSetSize : SIZE_T;
      MaximumWorkingSetSize : SIZE_T;
      ActiveProcessLimit : DWORD;
      Affinity : ULONG_PTR;
      PriorityClass : DWORD;
      SchedulingClass : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_BASIC_LIMIT_INFORMATION_x);
   for JOBOBJECT_BASIC_LIMIT_INFORMATION_x use record
      PerProcessUserTimeLimit at 0 range 0..63;
      PerJobUserTimeLimit at 0 range 64..127;
      LimitFlags at 0 range 128..159;
      MinimumWorkingSetSize at 0 range 192..255;
      MaximumWorkingSetSize at 0 range 256..319;
      ActiveProcessLimit at 0 range 320..351;
      Affinity at 0 range 384..447;
      PriorityClass at 0 range 448..479;
      SchedulingClass at 0 range 480..511;
   end record;
   for JOBOBJECT_BASIC_LIMIT_INFORMATION_x'Size use 512;
   for JOBOBJECT_BASIC_LIMIT_INFORMATION_x'Alignment use 8;
   subtype JOBOBJECT_BASIC_LIMIT_INFORMATION is JOBOBJECT_BASIC_LIMIT_INFORMATION_x;
   type PJOBOBJECT_BASIC_LIMIT_INFORMATION is access all JOBOBJECT_BASIC_LIMIT_INFORMATION_x;
   type JOBOBJECT_EXTENDED_LIMIT_INFORMATION_x is record
      BasicLimitInformation : JOBOBJECT_BASIC_LIMIT_INFORMATION;
      IoInfo : IO_COUNTERS;
      ProcessMemoryLimit : SIZE_T;
      JobMemoryLimit : SIZE_T;
      PeakProcessMemoryUsed : SIZE_T;
      PeakJobMemoryUsed : SIZE_T;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_EXTENDED_LIMIT_INFORMATION_x);
   for JOBOBJECT_EXTENDED_LIMIT_INFORMATION_x use record
      BasicLimitInformation at 0 range 0..511;
      IoInfo at 0 range 512..895;
      ProcessMemoryLimit at 0 range 896..959;
      JobMemoryLimit at 0 range 960..1023;
      PeakProcessMemoryUsed at 0 range 1024..1087;
      PeakJobMemoryUsed at 0 range 1088..1151;
   end record;
   for JOBOBJECT_EXTENDED_LIMIT_INFORMATION_x'Size use 1152;
   for JOBOBJECT_EXTENDED_LIMIT_INFORMATION_x'Alignment use 8;
   subtype JOBOBJECT_EXTENDED_LIMIT_INFORMATION is JOBOBJECT_EXTENDED_LIMIT_INFORMATION_x;
   type PJOBOBJECT_EXTENDED_LIMIT_INFORMATION is access all JOBOBJECT_EXTENDED_LIMIT_INFORMATION_x;
   type JOBOBJECT_BASIC_PROCESS_ID_LIST_x_ProcessIdList_Array is array(1..1) of ULONG_PTR; -- Auto Generated Dependancy
   type JOBOBJECT_BASIC_PROCESS_ID_LIST_x is record
      NumberOfAssignedProcesses : DWORD;
      NumberOfProcessIdsInList : DWORD;
      ProcessIdList : JOBOBJECT_BASIC_PROCESS_ID_LIST_x_ProcessIdList_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_BASIC_PROCESS_ID_LIST_x);
   for JOBOBJECT_BASIC_PROCESS_ID_LIST_x use record
      NumberOfAssignedProcesses at 0 range 0..31;
      NumberOfProcessIdsInList at 0 range 32..63;
      ProcessIdList at 0 range 64..127;
   end record;
   for JOBOBJECT_BASIC_PROCESS_ID_LIST_x'Size use 128;
   for JOBOBJECT_BASIC_PROCESS_ID_LIST_x'Alignment use 8;
   subtype JOBOBJECT_BASIC_PROCESS_ID_LIST is JOBOBJECT_BASIC_PROCESS_ID_LIST_x;
   type PJOBOBJECT_BASIC_PROCESS_ID_LIST is access all JOBOBJECT_BASIC_PROCESS_ID_LIST_x;
   type JOBOBJECT_BASIC_UI_RESTRICTIONS_x is record
      UIRestrictionsClass : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_BASIC_UI_RESTRICTIONS_x);
   for JOBOBJECT_BASIC_UI_RESTRICTIONS_x use record
      UIRestrictionsClass at 0 range 0..31;
   end record;
   for JOBOBJECT_BASIC_UI_RESTRICTIONS_x'Size use 32;
   for JOBOBJECT_BASIC_UI_RESTRICTIONS_x'Alignment use 4;
   subtype JOBOBJECT_BASIC_UI_RESTRICTIONS is JOBOBJECT_BASIC_UI_RESTRICTIONS_x;
   type PJOBOBJECT_BASIC_UI_RESTRICTIONS is access all JOBOBJECT_BASIC_UI_RESTRICTIONS_x;
   type JOBOBJECT_SECURITY_LIMIT_INFORMATION_x is record
      SecurityLimitFlags : DWORD;
      JobToken : HANDLE;
      SidsToDisable : PTOKEN_GROUPS;
      PrivilegesToDelete : PTOKEN_PRIVILEGES;
      RestrictedSids : PTOKEN_GROUPS;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_SECURITY_LIMIT_INFORMATION_x);
   for JOBOBJECT_SECURITY_LIMIT_INFORMATION_x use record
      SecurityLimitFlags at 0 range 0..31;
      JobToken at 0 range 64..127;
      SidsToDisable at 0 range 128..191;
      PrivilegesToDelete at 0 range 192..255;
      RestrictedSids at 0 range 256..319;
   end record;
   for JOBOBJECT_SECURITY_LIMIT_INFORMATION_x'Size use 320;
   for JOBOBJECT_SECURITY_LIMIT_INFORMATION_x'Alignment use 8;
   subtype JOBOBJECT_SECURITY_LIMIT_INFORMATION is JOBOBJECT_SECURITY_LIMIT_INFORMATION_x;
   type PJOBOBJECT_SECURITY_LIMIT_INFORMATION is access all JOBOBJECT_SECURITY_LIMIT_INFORMATION_x;
   type JOBOBJECT_END_OF_JOB_TIME_INFORMATION_x is record
      EndOfJobTimeAction : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_END_OF_JOB_TIME_INFORMATION_x);
   for JOBOBJECT_END_OF_JOB_TIME_INFORMATION_x use record
      EndOfJobTimeAction at 0 range 0..31;
   end record;
   for JOBOBJECT_END_OF_JOB_TIME_INFORMATION_x'Size use 32;
   for JOBOBJECT_END_OF_JOB_TIME_INFORMATION_x'Alignment use 4;
   subtype JOBOBJECT_END_OF_JOB_TIME_INFORMATION is JOBOBJECT_END_OF_JOB_TIME_INFORMATION_x;
   type PJOBOBJECT_END_OF_JOB_TIME_INFORMATION is access all JOBOBJECT_END_OF_JOB_TIME_INFORMATION_x;
   type JOBOBJECT_ASSOCIATE_COMPLETION_PORT_x is record
      CompletionKey : PVOID;
      CompletionPort : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_ASSOCIATE_COMPLETION_PORT_x);
   for JOBOBJECT_ASSOCIATE_COMPLETION_PORT_x use record
      CompletionKey at 0 range 0..63;
      CompletionPort at 0 range 64..127;
   end record;
   for JOBOBJECT_ASSOCIATE_COMPLETION_PORT_x'Size use 128;
   for JOBOBJECT_ASSOCIATE_COMPLETION_PORT_x'Alignment use 8;
   subtype JOBOBJECT_ASSOCIATE_COMPLETION_PORT is JOBOBJECT_ASSOCIATE_COMPLETION_PORT_x;
   type PJOBOBJECT_ASSOCIATE_COMPLETION_PORT is access all JOBOBJECT_ASSOCIATE_COMPLETION_PORT_x;
   type JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION_x is record
      BasicInfo : JOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
      IoInfo : IO_COUNTERS;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION_x);
   for JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION_x use record
      BasicInfo at 0 range 0..383;
      IoInfo at 0 range 384..767;
   end record;
   for JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION_x'Size use 768;
   for JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION_x'Alignment use 8;
   subtype JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION is JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION_x;
   type PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION is access all JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION_x;
   type JOBOBJECT_JOBSET_INFORMATION_x is record
      MemberLevel : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_JOBSET_INFORMATION_x);
   for JOBOBJECT_JOBSET_INFORMATION_x use record
      MemberLevel at 0 range 0..31;
   end record;
   for JOBOBJECT_JOBSET_INFORMATION_x'Size use 32;
   for JOBOBJECT_JOBSET_INFORMATION_x'Alignment use 4;
   subtype JOBOBJECT_JOBSET_INFORMATION is JOBOBJECT_JOBSET_INFORMATION_x;
   type PJOBOBJECT_JOBSET_INFORMATION is access all JOBOBJECT_JOBSET_INFORMATION_x;
   type JOBOBJECT_RATE_CONTROL_TOLERANCE_x is (
      ToleranceLow,
      ToleranceMedium,
      ToleranceHigh
   );
   for JOBOBJECT_RATE_CONTROL_TOLERANCE_x use (
      ToleranceLow => 1,
      ToleranceMedium => 2,
      ToleranceHigh => 3
   );
   for JOBOBJECT_RATE_CONTROL_TOLERANCE_x'Size use 32;
   subtype JOBOBJECT_RATE_CONTROL_TOLERANCE is JOBOBJECT_RATE_CONTROL_TOLERANCE_x;
   type PJOBOBJECT_RATE_CONTROL_TOLERANCE is access all JOBOBJECT_RATE_CONTROL_TOLERANCE_x;
   type JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL_x is (
      ToleranceIntervalShort,
      ToleranceIntervalMedium,
      ToleranceIntervalLong
   );
   for JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL_x use (
      ToleranceIntervalShort => 1,
      ToleranceIntervalMedium => 2,
      ToleranceIntervalLong => 3
   );
   for JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL_x'Size use 32;
   subtype JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL is JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL_x;
   type PJOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL is access all JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL_x;
   type JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_x is record
      IoReadBytesLimit : DWORD64;
      IoWriteBytesLimit : DWORD64;
      PerJobUserTimeLimit : LARGE_INTEGER;
      JobMemoryLimit : DWORD64;
      RateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE;
      RateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL;
      LimitFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_x);
   for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_x use record
      IoReadBytesLimit at 0 range 0..63;
      IoWriteBytesLimit at 0 range 64..127;
      PerJobUserTimeLimit at 0 range 128..191;
      JobMemoryLimit at 0 range 192..255;
      RateControlTolerance at 0 range 256..287;
      RateControlToleranceInterval at 0 range 288..319;
      LimitFlags at 0 range 320..351;
   end record;
   for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_x'Size use 384;
   for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_x'Alignment use 8;
   subtype JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION is JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_x;
   type PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION is access all JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_x;
   type Anonymous_Record_60 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            JobHighMemoryLimit : DWORD64;
         when others => 
            JobMemoryLimit : DWORD64;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_60);
   pragma Unchecked_Union (Anonymous_Record_60);
   for Anonymous_Record_60'Size use 64;
   for Anonymous_Record_60'Alignment use 8;
   type Anonymous_Record_61 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            RateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE;
         when others => 
            CpuRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_61);
   pragma Unchecked_Union (Anonymous_Record_61);
   for Anonymous_Record_61'Size use 32;
   for Anonymous_Record_61'Alignment use 4;
   type Anonymous_Record_62 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            RateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL;
         when others => 
            CpuRateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_62);
   pragma Unchecked_Union (Anonymous_Record_62);
   for Anonymous_Record_62'Size use 32;
   for Anonymous_Record_62'Alignment use 4;
   type JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 is record
      IoReadBytesLimit : DWORD64;
      IoWriteBytesLimit : DWORD64;
      PerJobUserTimeLimit : LARGE_INTEGER;
      field_1 : Anonymous_Record_60;
      field_2 : Anonymous_Record_61;
      field_3 : Anonymous_Record_62;
      LimitFlags : DWORD;
      IoRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE;
      JobLowMemoryLimit : DWORD64;
      IoRateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL;
      NetRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE;
      NetRateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2);
   for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 use record
      IoReadBytesLimit at 0 range 0..63;
      IoWriteBytesLimit at 0 range 64..127;
      PerJobUserTimeLimit at 0 range 128..191;
      field_1 at 0 range 192..255;
      field_2 at 0 range 256..287;
      field_3 at 0 range 288..319;
      LimitFlags at 0 range 320..351;
      IoRateControlTolerance at 0 range 352..383;
      JobLowMemoryLimit at 0 range 384..447;
      IoRateControlToleranceInterval at 0 range 448..479;
      NetRateControlTolerance at 0 range 480..511;
      NetRateControlToleranceInterval at 0 range 512..543;
   end record;
   for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2'Size use 576;
   for JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2'Alignment use 8;
   type JOBOBJECT_LIMIT_VIOLATION_INFORMATION_x is record
      LimitFlags : DWORD;
      ViolationLimitFlags : DWORD;
      IoReadBytes : DWORD64;
      IoReadBytesLimit : DWORD64;
      IoWriteBytes : DWORD64;
      IoWriteBytesLimit : DWORD64;
      PerJobUserTime : LARGE_INTEGER;
      PerJobUserTimeLimit : LARGE_INTEGER;
      JobMemory : DWORD64;
      JobMemoryLimit : DWORD64;
      RateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE;
      RateControlToleranceLimit : JOBOBJECT_RATE_CONTROL_TOLERANCE;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_LIMIT_VIOLATION_INFORMATION_x);
   for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_x use record
      LimitFlags at 0 range 0..31;
      ViolationLimitFlags at 0 range 32..63;
      IoReadBytes at 0 range 64..127;
      IoReadBytesLimit at 0 range 128..191;
      IoWriteBytes at 0 range 192..255;
      IoWriteBytesLimit at 0 range 256..319;
      PerJobUserTime at 0 range 320..383;
      PerJobUserTimeLimit at 0 range 384..447;
      JobMemory at 0 range 448..511;
      JobMemoryLimit at 0 range 512..575;
      RateControlTolerance at 0 range 576..607;
      RateControlToleranceLimit at 0 range 608..639;
   end record;
   for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_x'Size use 640;
   for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_x'Alignment use 8;
   subtype JOBOBJECT_LIMIT_VIOLATION_INFORMATION is JOBOBJECT_LIMIT_VIOLATION_INFORMATION_x;
   type PJOBOBJECT_LIMIT_VIOLATION_INFORMATION is access all JOBOBJECT_LIMIT_VIOLATION_INFORMATION_x;
   type Anonymous_Record_63 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            JobHighMemoryLimit : DWORD64;
         when others => 
            JobMemoryLimit : DWORD64;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_63);
   pragma Unchecked_Union (Anonymous_Record_63);
   for Anonymous_Record_63'Size use 64;
   for Anonymous_Record_63'Alignment use 8;
   type Anonymous_Record_64 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            RateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE;
         when others => 
            CpuRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_64);
   pragma Unchecked_Union (Anonymous_Record_64);
   for Anonymous_Record_64'Size use 32;
   for Anonymous_Record_64'Alignment use 4;
   type Anonymous_Record_65 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            RateControlToleranceLimit : JOBOBJECT_RATE_CONTROL_TOLERANCE;
         when others => 
            CpuRateControlToleranceLimit : JOBOBJECT_RATE_CONTROL_TOLERANCE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_65);
   pragma Unchecked_Union (Anonymous_Record_65);
   for Anonymous_Record_65'Size use 32;
   for Anonymous_Record_65'Alignment use 4;
   type JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 is record
      LimitFlags : DWORD;
      ViolationLimitFlags : DWORD;
      IoReadBytes : DWORD64;
      IoReadBytesLimit : DWORD64;
      IoWriteBytes : DWORD64;
      IoWriteBytesLimit : DWORD64;
      PerJobUserTime : LARGE_INTEGER;
      PerJobUserTimeLimit : LARGE_INTEGER;
      JobMemory : DWORD64;
      field_1 : Anonymous_Record_63;
      field_2 : Anonymous_Record_64;
      field_3 : Anonymous_Record_65;
      JobLowMemoryLimit : DWORD64;
      IoRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE;
      IoRateControlToleranceLimit : JOBOBJECT_RATE_CONTROL_TOLERANCE;
      NetRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE;
      NetRateControlToleranceLimit : JOBOBJECT_RATE_CONTROL_TOLERANCE;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2);
   for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 use record
      LimitFlags at 0 range 0..31;
      ViolationLimitFlags at 0 range 32..63;
      IoReadBytes at 0 range 64..127;
      IoReadBytesLimit at 0 range 128..191;
      IoWriteBytes at 0 range 192..255;
      IoWriteBytesLimit at 0 range 256..319;
      PerJobUserTime at 0 range 320..383;
      PerJobUserTimeLimit at 0 range 384..447;
      JobMemory at 0 range 448..511;
      field_1 at 0 range 512..575;
      field_2 at 0 range 576..607;
      field_3 at 0 range 608..639;
      JobLowMemoryLimit at 0 range 640..703;
      IoRateControlTolerance at 0 range 704..735;
      IoRateControlToleranceLimit at 0 range 736..767;
      NetRateControlTolerance at 0 range 768..799;
      NetRateControlToleranceLimit at 0 range 800..831;
   end record;
   for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2'Size use 832;
   for JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2'Alignment use 8;
   type Anonymous_Record_67 is record
      MinRate : WORD;
      MaxRate : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_67);
   for Anonymous_Record_67 use record
      MinRate at 0 range 0..15;
      MaxRate at 0 range 16..31;
   end record;
   for Anonymous_Record_67'Size use 32;
   for Anonymous_Record_67'Alignment use 2;
   type Anonymous_Record_66 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            CpuRate : DWORD;
         when 1 =>
            Weight : DWORD;
         when others => 
            field_1 : Anonymous_Record_67;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_66);
   pragma Unchecked_Union (Anonymous_Record_66);
   for Anonymous_Record_66'Size use 32;
   for Anonymous_Record_66'Alignment use 4;
   type JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_x is record
      ControlFlags : DWORD;
      field_1 : Anonymous_Record_66;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_x);
   for JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_x use record
      ControlFlags at 0 range 0..31;
      field_1 at 0 range 32..63;
   end record;
   for JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_x'Size use 64;
   for JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_x'Alignment use 4;
   subtype JOBOBJECT_CPU_RATE_CONTROL_INFORMATION is JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_x;
   type PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION is access all JOBOBJECT_CPU_RATE_CONTROL_INFORMATION_x;
   type JOB_OBJECT_NET_RATE_CONTROL_FLAGS is (
      JOB_OBJECT_NET_RATE_CONTROL_ENABLE,
      JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH,
      JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG,
      JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS
   );
   for JOB_OBJECT_NET_RATE_CONTROL_FLAGS use (
      JOB_OBJECT_NET_RATE_CONTROL_ENABLE => 1,
      JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH => 2,
      JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG => 4,
      JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS => 7
   );
   for JOB_OBJECT_NET_RATE_CONTROL_FLAGS'Size use 32;
   -- operator|(); -- inlined function not supported
   -- operator|=(); -- inlined function not supported
   -- operator&(); -- inlined function not supported
   -- operator&=(); -- inlined function not supported
   -- operator~(); -- inlined function not supported
   -- operator^(); -- inlined function not supported
   -- operator^=(); -- inlined function not supported
   type C_ASSERT_x_x is array(1..1) of Character;
   type JOBOBJECT_NET_RATE_CONTROL_INFORMATION is record
      MaxBandwidth : DWORD64;
      ControlFlags : JOB_OBJECT_NET_RATE_CONTROL_FLAGS;
      DscpTag : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_NET_RATE_CONTROL_INFORMATION);
   for JOBOBJECT_NET_RATE_CONTROL_INFORMATION use record
      MaxBandwidth at 0 range 0..63;
      ControlFlags at 0 range 64..95;
      DscpTag at 0 range 96..103;
   end record;
   for JOBOBJECT_NET_RATE_CONTROL_INFORMATION'Size use 128;
   for JOBOBJECT_NET_RATE_CONTROL_INFORMATION'Alignment use 8;
   type JOB_OBJECT_IO_RATE_CONTROL_FLAGS is (
      JOB_OBJECT_IO_RATE_CONTROL_ENABLE,
      JOB_OBJECT_IO_RATE_CONTROL_STANDALONE_VOLUME,
      JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ALL,
      JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ON_SOFT_CAP,
      JOB_OBJECT_IO_RATE_CONTROL_VALID_FLAGS
   );
   for JOB_OBJECT_IO_RATE_CONTROL_FLAGS use (
      JOB_OBJECT_IO_RATE_CONTROL_ENABLE => 1,
      JOB_OBJECT_IO_RATE_CONTROL_STANDALONE_VOLUME => 2,
      JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ALL => 4,
      JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ON_SOFT_CAP => 8,
      JOB_OBJECT_IO_RATE_CONTROL_VALID_FLAGS => 15
   );
   for JOB_OBJECT_IO_RATE_CONTROL_FLAGS'Size use 32;
   -- operator|(); -- inlined function not supported
   -- operator|=(); -- inlined function not supported
   -- operator&(); -- inlined function not supported
   -- operator&=(); -- inlined function not supported
   -- operator~(); -- inlined function not supported
   -- operator^(); -- inlined function not supported
   -- operator^=(); -- inlined function not supported
   type JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE is record
      MaxIops : LONG64;
      MaxBandwidth : LONG64;
      ReservationIops : LONG64;
      VolumeName : PWSTR;
      BaseIoSize : DWORD;
      ControlFlags : JOB_OBJECT_IO_RATE_CONTROL_FLAGS;
      VolumeNameLength : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE);
   for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE use record
      MaxIops at 0 range 0..63;
      MaxBandwidth at 0 range 64..127;
      ReservationIops at 0 range 128..191;
      VolumeName at 0 range 192..255;
      BaseIoSize at 0 range 256..287;
      ControlFlags at 0 range 288..319;
      VolumeNameLength at 0 range 320..335;
   end record;
   for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE'Size use 384;
   for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE'Alignment use 8;
   subtype JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V1 is JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE;
   type JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2 is record
      MaxIops : LONG64;
      MaxBandwidth : LONG64;
      ReservationIops : LONG64;
      VolumeName : PWSTR;
      BaseIoSize : DWORD;
      ControlFlags : JOB_OBJECT_IO_RATE_CONTROL_FLAGS;
      VolumeNameLength : WORD;
      CriticalReservationIops : LONG64;
      ReservationBandwidth : LONG64;
      CriticalReservationBandwidth : LONG64;
      MaxTimePercent : LONG64;
      ReservationTimePercent : LONG64;
      CriticalReservationTimePercent : LONG64;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2);
   for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2 use record
      MaxIops at 0 range 0..63;
      MaxBandwidth at 0 range 64..127;
      ReservationIops at 0 range 128..191;
      VolumeName at 0 range 192..255;
      BaseIoSize at 0 range 256..287;
      ControlFlags at 0 range 288..319;
      VolumeNameLength at 0 range 320..335;
      CriticalReservationIops at 0 range 384..447;
      ReservationBandwidth at 0 range 448..511;
      CriticalReservationBandwidth at 0 range 512..575;
      MaxTimePercent at 0 range 576..639;
      ReservationTimePercent at 0 range 640..703;
      CriticalReservationTimePercent at 0 range 704..767;
   end record;
   for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2'Size use 768;
   for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2'Alignment use 8;
   type JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3 is record
      MaxIops : LONG64;
      MaxBandwidth : LONG64;
      ReservationIops : LONG64;
      VolumeName : PWSTR;
      BaseIoSize : DWORD;
      ControlFlags : JOB_OBJECT_IO_RATE_CONTROL_FLAGS;
      VolumeNameLength : WORD;
      CriticalReservationIops : LONG64;
      ReservationBandwidth : LONG64;
      CriticalReservationBandwidth : LONG64;
      MaxTimePercent : LONG64;
      ReservationTimePercent : LONG64;
      CriticalReservationTimePercent : LONG64;
      SoftMaxIops : LONG64;
      SoftMaxBandwidth : LONG64;
      SoftMaxTimePercent : LONG64;
      LimitExcessNotifyIops : LONG64;
      LimitExcessNotifyBandwidth : LONG64;
      LimitExcessNotifyTimePercent : LONG64;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3);
   for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3 use record
      MaxIops at 0 range 0..63;
      MaxBandwidth at 0 range 64..127;
      ReservationIops at 0 range 128..191;
      VolumeName at 0 range 192..255;
      BaseIoSize at 0 range 256..287;
      ControlFlags at 0 range 288..319;
      VolumeNameLength at 0 range 320..335;
      CriticalReservationIops at 0 range 384..447;
      ReservationBandwidth at 0 range 448..511;
      CriticalReservationBandwidth at 0 range 512..575;
      MaxTimePercent at 0 range 576..639;
      ReservationTimePercent at 0 range 640..703;
      CriticalReservationTimePercent at 0 range 704..767;
      SoftMaxIops at 0 range 768..831;
      SoftMaxBandwidth at 0 range 832..895;
      SoftMaxTimePercent at 0 range 896..959;
      LimitExcessNotifyIops at 0 range 960..1023;
      LimitExcessNotifyBandwidth at 0 range 1024..1087;
      LimitExcessNotifyTimePercent at 0 range 1088..1151;
   end record;
   for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3'Size use 1152;
   for JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3'Alignment use 8;
   type JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS is (
      JOBOBJECT_IO_ATTRIBUTION_CONTROL_ENABLE,
      JOBOBJECT_IO_ATTRIBUTION_CONTROL_DISABLE,
      JOBOBJECT_IO_ATTRIBUTION_CONTROL_VALID_FLAGS
   );
   for JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS use (
      JOBOBJECT_IO_ATTRIBUTION_CONTROL_ENABLE => 1,
      JOBOBJECT_IO_ATTRIBUTION_CONTROL_DISABLE => 2,
      JOBOBJECT_IO_ATTRIBUTION_CONTROL_VALID_FLAGS => 3
   );
   for JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS'Size use 32;
   type JOBOBJECT_IO_ATTRIBUTION_STATS_x is record
      IoCount : ULONG_PTR;
      TotalNonOverlappedQueueTime : ULONGLONG;
      TotalNonOverlappedServiceTime : ULONGLONG;
      TotalSize : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_IO_ATTRIBUTION_STATS_x);
   for JOBOBJECT_IO_ATTRIBUTION_STATS_x use record
      IoCount at 0 range 0..63;
      TotalNonOverlappedQueueTime at 0 range 64..127;
      TotalNonOverlappedServiceTime at 0 range 128..191;
      TotalSize at 0 range 192..255;
   end record;
   for JOBOBJECT_IO_ATTRIBUTION_STATS_x'Size use 256;
   for JOBOBJECT_IO_ATTRIBUTION_STATS_x'Alignment use 8;
   subtype JOBOBJECT_IO_ATTRIBUTION_STATS is JOBOBJECT_IO_ATTRIBUTION_STATS_x;
   type PJOBOBJECT_IO_ATTRIBUTION_STATS is access all JOBOBJECT_IO_ATTRIBUTION_STATS_x;
   type JOBOBJECT_IO_ATTRIBUTION_INFORMATION_x is record
      ControlFlags : DWORD;
      ReadStats : JOBOBJECT_IO_ATTRIBUTION_STATS;
      WriteStats : JOBOBJECT_IO_ATTRIBUTION_STATS;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_IO_ATTRIBUTION_INFORMATION_x);
   for JOBOBJECT_IO_ATTRIBUTION_INFORMATION_x use record
      ControlFlags at 0 range 0..31;
      ReadStats at 0 range 64..319;
      WriteStats at 0 range 320..575;
   end record;
   for JOBOBJECT_IO_ATTRIBUTION_INFORMATION_x'Size use 576;
   for JOBOBJECT_IO_ATTRIBUTION_INFORMATION_x'Alignment use 8;
   subtype JOBOBJECT_IO_ATTRIBUTION_INFORMATION is JOBOBJECT_IO_ATTRIBUTION_INFORMATION_x;
   type PJOBOBJECT_IO_ATTRIBUTION_INFORMATION is access all JOBOBJECT_IO_ATTRIBUTION_INFORMATION_x;
   type JOBOBJECTINFOCLASS_x is (
      JobObjectBasicAccountingInformation,
      JobObjectBasicLimitInformation,
      JobObjectBasicProcessIdList,
      JobObjectBasicUIRestrictions,
      JobObjectSecurityLimitInformation,
      JobObjectEndOfJobTimeInformation,
      JobObjectAssociateCompletionPortInformation,
      JobObjectBasicAndIoAccountingInformation,
      JobObjectExtendedLimitInformation,
      JobObjectJobSetInformation,
      JobObjectGroupInformation,
      JobObjectNotificationLimitInformation,
      JobObjectLimitViolationInformation,
      JobObjectGroupInformationEx,
      JobObjectCpuRateControlInformation,
      JobObjectCompletionFilter,
      JobObjectCompletionCounter,
      JobObjectReserved1Information,
      JobObjectReserved2Information,
      JobObjectReserved3Information,
      JobObjectReserved4Information,
      JobObjectReserved5Information,
      JobObjectReserved6Information,
      JobObjectReserved7Information,
      JobObjectReserved8Information,
      JobObjectReserved9Information,
      JobObjectReserved10Information,
      JobObjectReserved11Information,
      JobObjectReserved12Information,
      JobObjectReserved13Information,
      JobObjectReserved14Information,
      JobObjectNetRateControlInformation,
      JobObjectNotificationLimitInformation2,
      JobObjectLimitViolationInformation2,
      JobObjectCreateSilo,
      JobObjectSiloBasicInformation,
      JobObjectReserved15Information,
      JobObjectReserved16Information,
      JobObjectReserved17Information,
      JobObjectReserved18Information,
      JobObjectReserved19Information,
      JobObjectReserved20Information,
      JobObjectReserved21Information,
      JobObjectReserved22Information,
      JobObjectReserved23Information,
      JobObjectReserved24Information,
      JobObjectReserved25Information,
      MaxJobObjectInfoClass
   );
   for JOBOBJECTINFOCLASS_x use (
      JobObjectBasicAccountingInformation => 1,
      JobObjectBasicLimitInformation => 2,
      JobObjectBasicProcessIdList => 3,
      JobObjectBasicUIRestrictions => 4,
      JobObjectSecurityLimitInformation => 5,
      JobObjectEndOfJobTimeInformation => 6,
      JobObjectAssociateCompletionPortInformation => 7,
      JobObjectBasicAndIoAccountingInformation => 8,
      JobObjectExtendedLimitInformation => 9,
      JobObjectJobSetInformation => 10,
      JobObjectGroupInformation => 11,
      JobObjectNotificationLimitInformation => 12,
      JobObjectLimitViolationInformation => 13,
      JobObjectGroupInformationEx => 14,
      JobObjectCpuRateControlInformation => 15,
      JobObjectCompletionFilter => 16,
      JobObjectCompletionCounter => 17,
      JobObjectReserved1Information => 18,
      JobObjectReserved2Information => 19,
      JobObjectReserved3Information => 20,
      JobObjectReserved4Information => 21,
      JobObjectReserved5Information => 22,
      JobObjectReserved6Information => 23,
      JobObjectReserved7Information => 24,
      JobObjectReserved8Information => 25,
      JobObjectReserved9Information => 26,
      JobObjectReserved10Information => 27,
      JobObjectReserved11Information => 28,
      JobObjectReserved12Information => 29,
      JobObjectReserved13Information => 30,
      JobObjectReserved14Information => 31,
      JobObjectNetRateControlInformation => 32,
      JobObjectNotificationLimitInformation2 => 33,
      JobObjectLimitViolationInformation2 => 34,
      JobObjectCreateSilo => 35,
      JobObjectSiloBasicInformation => 36,
      JobObjectReserved15Information => 37,
      JobObjectReserved16Information => 38,
      JobObjectReserved17Information => 39,
      JobObjectReserved18Information => 40,
      JobObjectReserved19Information => 41,
      JobObjectReserved20Information => 42,
      JobObjectReserved21Information => 43,
      JobObjectReserved22Information => 44,
      JobObjectReserved23Information => 45,
      JobObjectReserved24Information => 46,
      JobObjectReserved25Information => 47,
      MaxJobObjectInfoClass => 48
   );
   for JOBOBJECTINFOCLASS_x'Size use 32;
   subtype JOBOBJECTINFOCLASS is JOBOBJECTINFOCLASS_x;
   type SILOOBJECT_BASIC_INFORMATION_x_Reserved_Array is array(1..3) of BYTE; -- Auto Generated Dependancy
   type SILOOBJECT_BASIC_INFORMATION_x is record
      SiloId : DWORD;
      SiloParentId : DWORD;
      NumberOfProcesses : DWORD;
      IsInServerSilo : BOOLEAN;
      Reserved : SILOOBJECT_BASIC_INFORMATION_x_Reserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SILOOBJECT_BASIC_INFORMATION_x);
   for SILOOBJECT_BASIC_INFORMATION_x use record
      SiloId at 0 range 0..31;
      SiloParentId at 0 range 32..63;
      NumberOfProcesses at 0 range 64..95;
      IsInServerSilo at 0 range 96..103;
      Reserved at 0 range 104..127;
   end record;
   for SILOOBJECT_BASIC_INFORMATION_x'Size use 128;
   for SILOOBJECT_BASIC_INFORMATION_x'Alignment use 4;
   subtype SILOOBJECT_BASIC_INFORMATION is SILOOBJECT_BASIC_INFORMATION_x;
   type PSILOOBJECT_BASIC_INFORMATION is access all SILOOBJECT_BASIC_INFORMATION_x;
   type SERVERSILO_STATE_x is (
      SERVERSILO_INITING,
      SERVERSILO_STARTED,
      SERVERSILO_SHUTTING_DOWN,
      SERVERSILO_TERMINATING,
      SERVERSILO_TERMINATED
   );
   for SERVERSILO_STATE_x use (
      SERVERSILO_INITING => 0,
      SERVERSILO_STARTED => 1,
      SERVERSILO_SHUTTING_DOWN => 2,
      SERVERSILO_TERMINATING => 3,
      SERVERSILO_TERMINATED => 4
   );
   for SERVERSILO_STATE_x'Size use 32;
   subtype SERVERSILO_STATE is SERVERSILO_STATE_x;
   type PSERVERSILO_STATE is access all SERVERSILO_STATE_x;
   type SERVERSILO_BASIC_INFORMATION_x is record
      ServiceSessionId : DWORD;
      State : SERVERSILO_STATE;
      ExitStatus : DWORD;
      IsDownlevelContainer : BOOLEAN;
      ApiSetSchema : PVOID;
      HostApiSetSchema : PVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVERSILO_BASIC_INFORMATION_x);
   for SERVERSILO_BASIC_INFORMATION_x use record
      ServiceSessionId at 0 range 0..31;
      State at 0 range 32..63;
      ExitStatus at 0 range 64..95;
      IsDownlevelContainer at 0 range 96..103;
      ApiSetSchema at 0 range 128..191;
      HostApiSetSchema at 0 range 192..255;
   end record;
   for SERVERSILO_BASIC_INFORMATION_x'Size use 256;
   for SERVERSILO_BASIC_INFORMATION_x'Alignment use 8;
   subtype SERVERSILO_BASIC_INFORMATION is SERVERSILO_BASIC_INFORMATION_x;
   type PSERVERSILO_BASIC_INFORMATION is access all SERVERSILO_BASIC_INFORMATION_x;
   type FIRMWARE_TYPE_x is (
      FirmwareTypeUnknown,
      FirmwareTypeBios,
      FirmwareTypeUefi,
      FirmwareTypeMax
   );
   for FIRMWARE_TYPE_x use (
      FirmwareTypeUnknown => 0,
      FirmwareTypeBios => 1,
      FirmwareTypeUefi => 2,
      FirmwareTypeMax => 3
   );
   for FIRMWARE_TYPE_x'Size use 32;
   subtype FIRMWARE_TYPE is FIRMWARE_TYPE_x;
   type PFIRMWARE_TYPE is access all FIRMWARE_TYPE_x;
   type LOGICAL_PROCESSOR_RELATIONSHIP_x is (
      RelationProcessorCore,
      RelationNumaNode,
      RelationCache,
      RelationProcessorPackage,
      RelationGroup,
      RelationAll
   );
   for LOGICAL_PROCESSOR_RELATIONSHIP_x use (
      RelationProcessorCore => 0,
      RelationNumaNode => 1,
      RelationCache => 2,
      RelationProcessorPackage => 3,
      RelationGroup => 4,
      RelationAll => 65535
   );
   for LOGICAL_PROCESSOR_RELATIONSHIP_x'Size use 32;
   subtype LOGICAL_PROCESSOR_RELATIONSHIP is LOGICAL_PROCESSOR_RELATIONSHIP_x;
   type PROCESSOR_CACHE_TYPE_x is (
      CacheUnified,
      CacheInstruction,
      CacheData,
      CacheTrace
   );
   for PROCESSOR_CACHE_TYPE_x use (
      CacheUnified => 0,
      CacheInstruction => 1,
      CacheData => 2,
      CacheTrace => 3
   );
   for PROCESSOR_CACHE_TYPE_x'Size use 32;
   subtype PROCESSOR_CACHE_TYPE is PROCESSOR_CACHE_TYPE_x;
   type CACHE_DESCRIPTOR_x is record
      Level : BYTE;
      Associativity : BYTE;
      LineSize : WORD;
      Size : DWORD;
      type_x : PROCESSOR_CACHE_TYPE;
   end record;
   pragma Convention (C_Pass_By_Copy,CACHE_DESCRIPTOR_x);
   for CACHE_DESCRIPTOR_x use record
      Level at 0 range 0..7;
      Associativity at 0 range 8..15;
      LineSize at 0 range 16..31;
      Size at 0 range 32..63;
      type_x at 0 range 64..95;
   end record;
   for CACHE_DESCRIPTOR_x'Size use 96;
   for CACHE_DESCRIPTOR_x'Alignment use 4;
   subtype CACHE_DESCRIPTOR is CACHE_DESCRIPTOR_x;
   type PCACHE_DESCRIPTOR is access all CACHE_DESCRIPTOR_x;
   type Anonymous_Record_69 is record
      Flags : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_69);
   for Anonymous_Record_69 use record
      Flags at 0 range 0..7;
   end record;
   for Anonymous_Record_69'Size use 8;
   for Anonymous_Record_69'Alignment use 1;
   type Anonymous_Record_70 is record
      NodeNumber : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_70);
   for Anonymous_Record_70 use record
      NodeNumber at 0 range 0..31;
   end record;
   for Anonymous_Record_70'Size use 32;
   for Anonymous_Record_70'Alignment use 4;
   type Anonymous_Record_68_Reserved_Array is array(1..2) of ULONGLONG; -- Auto Generated Dependancy
   type Anonymous_Record_68 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_69;
         when 1 =>
            field_2 : Anonymous_Record_70;
         when 2 =>
            Cache : CACHE_DESCRIPTOR;
         when others => 
            Reserved : Anonymous_Record_68_Reserved_Array;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_68);
   pragma Unchecked_Union (Anonymous_Record_68);
   for Anonymous_Record_68'Size use 128;
   for Anonymous_Record_68'Alignment use 8;
   type SYSTEM_LOGICAL_PROCESSOR_INFORMATION_x is record
      ProcessorMask : ULONG_PTR;
      Relationship : LOGICAL_PROCESSOR_RELATIONSHIP;
      field_1 : Anonymous_Record_68;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_LOGICAL_PROCESSOR_INFORMATION_x);
   for SYSTEM_LOGICAL_PROCESSOR_INFORMATION_x use record
      ProcessorMask at 0 range 0..63;
      Relationship at 0 range 64..95;
      field_1 at 0 range 96..223;
   end record;
   for SYSTEM_LOGICAL_PROCESSOR_INFORMATION_x'Size use 256;
   for SYSTEM_LOGICAL_PROCESSOR_INFORMATION_x'Alignment use 8;
   subtype SYSTEM_LOGICAL_PROCESSOR_INFORMATION is SYSTEM_LOGICAL_PROCESSOR_INFORMATION_x;
   type PSYSTEM_LOGICAL_PROCESSOR_INFORMATION is access all SYSTEM_LOGICAL_PROCESSOR_INFORMATION_x;
   type PROCESSOR_RELATIONSHIP_x_Reserved_Array is array(1..20) of BYTE; -- Auto Generated Dependancy
   type PROCESSOR_RELATIONSHIP_x_GroupMask_Array is array(1..1) of GROUP_AFFINITY; -- Auto Generated Dependancy
   type PROCESSOR_RELATIONSHIP_x is record
      Flags : BYTE;
      EfficiencyClass : BYTE;
      Reserved : PROCESSOR_RELATIONSHIP_x_Reserved_Array;
      GroupCount : WORD;
      GroupMask : PROCESSOR_RELATIONSHIP_x_GroupMask_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESSOR_RELATIONSHIP_x);
   for PROCESSOR_RELATIONSHIP_x use record
      Flags at 0 range 0..7;
      EfficiencyClass at 0 range 8..15;
      Reserved at 0 range 16..175;
      GroupCount at 0 range 176..191;
      GroupMask at 0 range 192..319;
   end record;
   for PROCESSOR_RELATIONSHIP_x'Size use 320;
   for PROCESSOR_RELATIONSHIP_x'Alignment use 8;
   subtype PROCESSOR_RELATIONSHIP is PROCESSOR_RELATIONSHIP_x;
   type PPROCESSOR_RELATIONSHIP is access all PROCESSOR_RELATIONSHIP_x;
   type NUMA_NODE_RELATIONSHIP_x_Reserved_Array is array(1..20) of BYTE; -- Auto Generated Dependancy
   type NUMA_NODE_RELATIONSHIP_x is record
      NodeNumber : DWORD;
      Reserved : NUMA_NODE_RELATIONSHIP_x_Reserved_Array;
      GroupMask : GROUP_AFFINITY;
   end record;
   pragma Convention (C_Pass_By_Copy,NUMA_NODE_RELATIONSHIP_x);
   for NUMA_NODE_RELATIONSHIP_x use record
      NodeNumber at 0 range 0..31;
      Reserved at 0 range 32..191;
      GroupMask at 0 range 192..319;
   end record;
   for NUMA_NODE_RELATIONSHIP_x'Size use 320;
   for NUMA_NODE_RELATIONSHIP_x'Alignment use 8;
   subtype NUMA_NODE_RELATIONSHIP is NUMA_NODE_RELATIONSHIP_x;
   type PNUMA_NODE_RELATIONSHIP is access all NUMA_NODE_RELATIONSHIP_x;
   type CACHE_RELATIONSHIP_x_Reserved_Array is array(1..20) of BYTE; -- Auto Generated Dependancy
   type CACHE_RELATIONSHIP_x is record
      Level : BYTE;
      Associativity : BYTE;
      LineSize : WORD;
      CacheSize : DWORD;
      type_x : PROCESSOR_CACHE_TYPE;
      Reserved : CACHE_RELATIONSHIP_x_Reserved_Array;
      GroupMask : GROUP_AFFINITY;
   end record;
   pragma Convention (C_Pass_By_Copy,CACHE_RELATIONSHIP_x);
   for CACHE_RELATIONSHIP_x use record
      Level at 0 range 0..7;
      Associativity at 0 range 8..15;
      LineSize at 0 range 16..31;
      CacheSize at 0 range 32..63;
      type_x at 0 range 64..95;
      Reserved at 0 range 96..255;
      GroupMask at 0 range 256..383;
   end record;
   for CACHE_RELATIONSHIP_x'Size use 384;
   for CACHE_RELATIONSHIP_x'Alignment use 8;
   subtype CACHE_RELATIONSHIP is CACHE_RELATIONSHIP_x;
   type PCACHE_RELATIONSHIP is access all CACHE_RELATIONSHIP_x;
   type PROCESSOR_GROUP_INFO_x_Reserved_Array is array(1..38) of BYTE; -- Auto Generated Dependancy
   type PROCESSOR_GROUP_INFO_x is record
      MaximumProcessorCount : BYTE;
      ActiveProcessorCount : BYTE;
      Reserved : PROCESSOR_GROUP_INFO_x_Reserved_Array;
      ActiveProcessorMask : KAFFINITY;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESSOR_GROUP_INFO_x);
   for PROCESSOR_GROUP_INFO_x use record
      MaximumProcessorCount at 0 range 0..7;
      ActiveProcessorCount at 0 range 8..15;
      Reserved at 0 range 16..319;
      ActiveProcessorMask at 0 range 320..383;
   end record;
   for PROCESSOR_GROUP_INFO_x'Size use 384;
   for PROCESSOR_GROUP_INFO_x'Alignment use 8;
   subtype PROCESSOR_GROUP_INFO is PROCESSOR_GROUP_INFO_x;
   type PPROCESSOR_GROUP_INFO is access all PROCESSOR_GROUP_INFO_x;
   type GROUP_RELATIONSHIP_x_Reserved_Array is array(1..20) of BYTE; -- Auto Generated Dependancy
   type GROUP_RELATIONSHIP_x_GroupInfo_Array is array(1..1) of PROCESSOR_GROUP_INFO; -- Auto Generated Dependancy
   type GROUP_RELATIONSHIP_x is record
      MaximumGroupCount : WORD;
      ActiveGroupCount : WORD;
      Reserved : GROUP_RELATIONSHIP_x_Reserved_Array;
      GroupInfo : GROUP_RELATIONSHIP_x_GroupInfo_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,GROUP_RELATIONSHIP_x);
   for GROUP_RELATIONSHIP_x use record
      MaximumGroupCount at 0 range 0..15;
      ActiveGroupCount at 0 range 16..31;
      Reserved at 0 range 32..191;
      GroupInfo at 0 range 192..575;
   end record;
   for GROUP_RELATIONSHIP_x'Size use 576;
   for GROUP_RELATIONSHIP_x'Alignment use 8;
   subtype GROUP_RELATIONSHIP is GROUP_RELATIONSHIP_x;
   type PGROUP_RELATIONSHIP is access all GROUP_RELATIONSHIP_x;
   type Anonymous_Record_71 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Processor : PROCESSOR_RELATIONSHIP;
         when 1 =>
            NumaNode : NUMA_NODE_RELATIONSHIP;
         when 2 =>
            Cache : CACHE_RELATIONSHIP;
         when others => 
            Group : GROUP_RELATIONSHIP;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_71);
   pragma Unchecked_Union (Anonymous_Record_71);
   for Anonymous_Record_71'Size use 576;
   for Anonymous_Record_71'Alignment use 8;
   type SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX_x is record
      Relationship : LOGICAL_PROCESSOR_RELATIONSHIP;
      Size : DWORD;
      field_1 : Anonymous_Record_71;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX_x);
   for SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX_x use record
      Relationship at 0 range 0..31;
      Size at 0 range 32..63;
      field_1 at 0 range 64..639;
   end record;
   for SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX_x'Size use 640;
   for SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX_x'Alignment use 8;
   subtype SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX is SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX_x;
   type PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX is access all SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX_x;
   type CPU_SET_INFORMATION_TYPE_x is (
      CpuSetInformation
   );
   for CPU_SET_INFORMATION_TYPE_x use (
      CpuSetInformation => 0
   );
   for CPU_SET_INFORMATION_TYPE_x'Size use 32;
   subtype CPU_SET_INFORMATION_TYPE is CPU_SET_INFORMATION_TYPE_x;
   type PCPU_SET_INFORMATION_TYPE is access all CPU_SET_INFORMATION_TYPE_x;
   type Anonymous_Record_75 is record
      Parked : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Allocated : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AllocatedToTargetProcess : Interfaces.C.Extensions.Unsigned_1; -- bit field
      RealTime : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedFlags : Interfaces.C.Extensions.Unsigned_4; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_75);
   for Anonymous_Record_75 use record
      Parked at 0 range 0..0;
      Allocated at 0 range 1..1;
      AllocatedToTargetProcess at 0 range 2..2;
      RealTime at 0 range 3..3;
      ReservedFlags at 0 range 4..7;
   end record;
   for Anonymous_Record_75'Size use 8;
   for Anonymous_Record_75'Alignment use 1;
   type Anonymous_Record_74 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            AllFlags : BYTE;
         when others => 
            field_1 : Anonymous_Record_75;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_74);
   pragma Unchecked_Union (Anonymous_Record_74);
   for Anonymous_Record_74'Size use 8;
   for Anonymous_Record_74'Alignment use 1;
   type Anonymous_Record_76 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Reserved : DWORD;
         when others => 
            SchedulingClass : BYTE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_76);
   pragma Unchecked_Union (Anonymous_Record_76);
   for Anonymous_Record_76'Size use 32;
   for Anonymous_Record_76'Alignment use 4;
   type Anonymous_Record_73 is record
      Id : DWORD;
      Group : WORD;
      LogicalProcessorIndex : BYTE;
      CoreIndex : BYTE;
      LastLevelCacheIndex : BYTE;
      NumaNodeIndex : BYTE;
      EfficiencyClass : BYTE;
      field_1 : Anonymous_Record_74;
      field_2 : Anonymous_Record_76;
      AllocationTag : DWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_73);
   for Anonymous_Record_73 use record
      Id at 0 range 0..31;
      Group at 0 range 32..47;
      LogicalProcessorIndex at 0 range 48..55;
      CoreIndex at 0 range 56..63;
      LastLevelCacheIndex at 0 range 64..71;
      NumaNodeIndex at 0 range 72..79;
      EfficiencyClass at 0 range 80..87;
      field_1 at 0 range 88..95;
      field_2 at 0 range 96..127;
      AllocationTag at 0 range 128..191;
   end record;
   for Anonymous_Record_73'Size use 192;
   for Anonymous_Record_73'Alignment use 8;
   type Anonymous_Record_72 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            field_1 : Anonymous_Record_73;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_72);
   pragma Unchecked_Union (Anonymous_Record_72);
   for Anonymous_Record_72'Size use 192;
   for Anonymous_Record_72'Alignment use 8;
   type SYSTEM_CPU_SET_INFORMATION_x is record
      Size : DWORD;
      type_x : CPU_SET_INFORMATION_TYPE;
      field_1 : Anonymous_Record_72;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_CPU_SET_INFORMATION_x);
   for SYSTEM_CPU_SET_INFORMATION_x use record
      Size at 0 range 0..31;
      type_x at 0 range 32..63;
      field_1 at 0 range 64..255;
   end record;
   for SYSTEM_CPU_SET_INFORMATION_x'Size use 256;
   for SYSTEM_CPU_SET_INFORMATION_x'Alignment use 8;
   subtype SYSTEM_CPU_SET_INFORMATION is SYSTEM_CPU_SET_INFORMATION_x;
   type PSYSTEM_CPU_SET_INFORMATION is access all SYSTEM_CPU_SET_INFORMATION_x;
   type SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION_x is record
      CycleTime : DWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION_x);
   for SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION_x use record
      CycleTime at 0 range 0..63;
   end record;
   for SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION_x'Size use 64;
   for SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION_x'Alignment use 8;
   subtype SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION is SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION_x;
   type PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION is access all SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION_x;
   type XSTATE_FEATURE_x is record
      Offset : DWORD;
      Size : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,XSTATE_FEATURE_x);
   for XSTATE_FEATURE_x use record
      Offset at 0 range 0..31;
      Size at 0 range 32..63;
   end record;
   for XSTATE_FEATURE_x'Size use 64;
   for XSTATE_FEATURE_x'Alignment use 4;
   subtype XSTATE_FEATURE is XSTATE_FEATURE_x;
   type PXSTATE_FEATURE is access all XSTATE_FEATURE_x;
   type Anonymous_Record_78 is record
      OptimizedSave : Interfaces.C.Extensions.Unsigned_1; -- bit field
      CompactionEnabled : Interfaces.C.Extensions.Unsigned_31; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_78);
   for Anonymous_Record_78 use record
      OptimizedSave at 0 range 0..0;
      CompactionEnabled at 0 range 1..31;
   end record;
   for Anonymous_Record_78'Size use 32;
   for Anonymous_Record_78'Alignment use 4;
   type Anonymous_Record_77 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            ControlFlags : DWORD;
         when others => 
            field_1 : Anonymous_Record_78;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_77);
   pragma Unchecked_Union (Anonymous_Record_77);
   for Anonymous_Record_77'Size use 32;
   for Anonymous_Record_77'Alignment use 4;
   type XSTATE_CONFIGURATION_x_Features_Array is array(1..64) of XSTATE_FEATURE; -- Auto Generated Dependancy
   type XSTATE_CONFIGURATION_x_AllFeatures_Array is array(1..64) of DWORD; -- Auto Generated Dependancy
   type XSTATE_CONFIGURATION_x is record
      EnabledFeatures : DWORD64;
      EnabledVolatileFeatures : DWORD64;
      Size : DWORD;
      field_1 : Anonymous_Record_77;
      Features : XSTATE_CONFIGURATION_x_Features_Array;
      EnabledSupervisorFeatures : DWORD64;
      AlignedFeatures : DWORD64;
      AllFeatureSize : DWORD;
      AllFeatures : XSTATE_CONFIGURATION_x_AllFeatures_Array;
      EnabledUserVisibleSupervisorFeatures : DWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,XSTATE_CONFIGURATION_x);
   for XSTATE_CONFIGURATION_x use record
      EnabledFeatures at 0 range 0..63;
      EnabledVolatileFeatures at 0 range 64..127;
      Size at 0 range 128..159;
      field_1 at 0 range 160..191;
      Features at 0 range 192..4287;
      EnabledSupervisorFeatures at 0 range 4288..4351;
      AlignedFeatures at 0 range 4352..4415;
      AllFeatureSize at 0 range 4416..4447;
      AllFeatures at 0 range 4448..6495;
      EnabledUserVisibleSupervisorFeatures at 0 range 6528..6591;
   end record;
   for XSTATE_CONFIGURATION_x'Size use 6592;
   for XSTATE_CONFIGURATION_x'Alignment use 8;
   subtype XSTATE_CONFIGURATION is XSTATE_CONFIGURATION_x;
   type PXSTATE_CONFIGURATION is access all XSTATE_CONFIGURATION_x;
   type MEMORY_BASIC_INFORMATION_x is record
      BaseAddress : PVOID;
      AllocationBase : PVOID;
      AllocationProtect : DWORD;
      PartitionId : WORD;
      RegionSize : SIZE_T;
      State : DWORD;
      Protect : DWORD;
      type_x : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,MEMORY_BASIC_INFORMATION_x);
   for MEMORY_BASIC_INFORMATION_x use record
      BaseAddress at 0 range 0..63;
      AllocationBase at 0 range 64..127;
      AllocationProtect at 0 range 128..159;
      PartitionId at 0 range 160..175;
      RegionSize at 0 range 192..255;
      State at 0 range 256..287;
      Protect at 0 range 288..319;
      type_x at 0 range 320..351;
   end record;
   for MEMORY_BASIC_INFORMATION_x'Size use 384;
   for MEMORY_BASIC_INFORMATION_x'Alignment use 8;
   subtype MEMORY_BASIC_INFORMATION is MEMORY_BASIC_INFORMATION_x;
   type PMEMORY_BASIC_INFORMATION is access all MEMORY_BASIC_INFORMATION_x;
   type MEMORY_BASIC_INFORMATION32_x is record
      BaseAddress : DWORD;
      AllocationBase : DWORD;
      AllocationProtect : DWORD;
      RegionSize : DWORD;
      State : DWORD;
      Protect : DWORD;
      type_x : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,MEMORY_BASIC_INFORMATION32_x);
   for MEMORY_BASIC_INFORMATION32_x use record
      BaseAddress at 0 range 0..31;
      AllocationBase at 0 range 32..63;
      AllocationProtect at 0 range 64..95;
      RegionSize at 0 range 96..127;
      State at 0 range 128..159;
      Protect at 0 range 160..191;
      type_x at 0 range 192..223;
   end record;
   for MEMORY_BASIC_INFORMATION32_x'Size use 224;
   for MEMORY_BASIC_INFORMATION32_x'Alignment use 4;
   subtype MEMORY_BASIC_INFORMATION32 is MEMORY_BASIC_INFORMATION32_x;
   type PMEMORY_BASIC_INFORMATION32 is access all MEMORY_BASIC_INFORMATION32_x;
   type MEMORY_BASIC_INFORMATION64_x is record
      BaseAddress : ULONGLONG;
      AllocationBase : ULONGLONG;
      AllocationProtect : DWORD;
      alignment1 : DWORD;
      RegionSize : ULONGLONG;
      State : DWORD;
      Protect : DWORD;
      type_x : DWORD;
      alignment2 : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,MEMORY_BASIC_INFORMATION64_x);
   for MEMORY_BASIC_INFORMATION64_x use record
      BaseAddress at 0 range 0..63;
      AllocationBase at 0 range 64..127;
      AllocationProtect at 0 range 128..159;
      alignment1 at 0 range 160..191;
      RegionSize at 0 range 192..255;
      State at 0 range 256..287;
      Protect at 0 range 288..319;
      type_x at 0 range 320..351;
      alignment2 at 0 range 352..383;
   end record;
   for MEMORY_BASIC_INFORMATION64_x'Size use 384;
   for MEMORY_BASIC_INFORMATION64_x'Alignment use 16;
   subtype MEMORY_BASIC_INFORMATION64 is MEMORY_BASIC_INFORMATION64_x;
   type PMEMORY_BASIC_INFORMATION64 is access all MEMORY_BASIC_INFORMATION64_x;
   type CFG_CALL_TARGET_INFO_x is record
      Offset : ULONG_PTR;
      Flags : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,CFG_CALL_TARGET_INFO_x);
   for CFG_CALL_TARGET_INFO_x use record
      Offset at 0 range 0..63;
      Flags at 0 range 64..127;
   end record;
   for CFG_CALL_TARGET_INFO_x'Size use 128;
   for CFG_CALL_TARGET_INFO_x'Alignment use 8;
   subtype CFG_CALL_TARGET_INFO is CFG_CALL_TARGET_INFO_x;
   type PCFG_CALL_TARGET_INFO is access all CFG_CALL_TARGET_INFO_x;
   type MEM_ADDRESS_REQUIREMENTS_x is record
      LowestStartingAddress : PVOID;
      HighestEndingAddress : PVOID;
      Alignment : SIZE_T;
   end record;
   pragma Convention (C_Pass_By_Copy,MEM_ADDRESS_REQUIREMENTS_x);
   for MEM_ADDRESS_REQUIREMENTS_x use record
      LowestStartingAddress at 0 range 0..63;
      HighestEndingAddress at 0 range 64..127;
      Alignment at 0 range 128..191;
   end record;
   for MEM_ADDRESS_REQUIREMENTS_x'Size use 192;
   for MEM_ADDRESS_REQUIREMENTS_x'Alignment use 8;
   subtype MEM_ADDRESS_REQUIREMENTS is MEM_ADDRESS_REQUIREMENTS_x;
   type PMEM_ADDRESS_REQUIREMENTS is access all MEM_ADDRESS_REQUIREMENTS_x;
   type MEM_EXTENDED_PARAMETER_TYPE is (
      MemExtendedParameterInvalidType,
      MemExtendedParameterAddressRequirements,
      MemExtendedParameterNumaNode,
      MemExtendedParameterPartitionHandle,
      MemExtendedParameterUserPhysicalHandle,
      MemExtendedParameterAttributeFlags,
      MemExtendedParameterMax
   );
   for MEM_EXTENDED_PARAMETER_TYPE use (
      MemExtendedParameterInvalidType => 0,
      MemExtendedParameterAddressRequirements => 1,
      MemExtendedParameterNumaNode => 2,
      MemExtendedParameterPartitionHandle => 3,
      MemExtendedParameterUserPhysicalHandle => 4,
      MemExtendedParameterAttributeFlags => 5,
      MemExtendedParameterMax => 6
   );
   for MEM_EXTENDED_PARAMETER_TYPE'Size use 32;
   type PMEM_EXTENDED_PARAMETER_TYPE is access all MEM_EXTENDED_PARAMETER_TYPE;
   type Anonymous_Record_79 is record
      type_x : Interfaces.C.Extensions.Unsigned_8; -- bit field
      Reserved : Interfaces.C.Extensions.Unsigned_56; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_79);
   for Anonymous_Record_79 use record
      type_x at 0 range 0..7;
      Reserved at 0 range 8..63;
   end record;
   for Anonymous_Record_79'Size use 64;
   for Anonymous_Record_79'Alignment use 8;
   type Anonymous_Record_80 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            ULong64_x : DWORD64;
         when 1 =>
            Pointer : PVOID;
         when 2 =>
            Size : SIZE_T;
         when 3 =>
            Handle_x : HANDLE;
         when others => 
            ULong_x : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_80);
   pragma Unchecked_Union (Anonymous_Record_80);
   for Anonymous_Record_80'Size use 64;
   for Anonymous_Record_80'Alignment use 8;
   type MEM_EXTENDED_PARAMETER is record
      field_1 : Anonymous_Record_79;
      field_2 : Anonymous_Record_80;
   end record;
   pragma Convention (C_Pass_By_Copy,MEM_EXTENDED_PARAMETER);
   for MEM_EXTENDED_PARAMETER use record
      field_1 at 0 range 0..63;
      field_2 at 0 range 64..127;
   end record;
   for MEM_EXTENDED_PARAMETER'Size use 128;
   for MEM_EXTENDED_PARAMETER'Alignment use 8;
   type PMEM_EXTENDED_PARAMETER is access all MEM_EXTENDED_PARAMETER;
   type MEM_SECTION_EXTENDED_PARAMETER_TYPE is (
      MemSectionExtendedParameterInvalidType,
      MemSectionExtendedParameterUserPhysicalFlags,
      MemSectionExtendedParameterNumaNode,
      MemSectionExtendedParameterMax
   );
   for MEM_SECTION_EXTENDED_PARAMETER_TYPE use (
      MemSectionExtendedParameterInvalidType => 0,
      MemSectionExtendedParameterUserPhysicalFlags => 1,
      MemSectionExtendedParameterNumaNode => 2,
      MemSectionExtendedParameterMax => 3
   );
   for MEM_SECTION_EXTENDED_PARAMETER_TYPE'Size use 32;
   type PMEM_SECTION_EXTENDED_PARAMETER_TYPE is access all MEM_SECTION_EXTENDED_PARAMETER_TYPE;
   type ENCLAVE_CREATE_INFO_SGX_x_Secs_Array is array(1..4096) of BYTE; -- Auto Generated Dependancy
   type ENCLAVE_CREATE_INFO_SGX_x is record
      Secs : ENCLAVE_CREATE_INFO_SGX_x_Secs_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,ENCLAVE_CREATE_INFO_SGX_x);
   for ENCLAVE_CREATE_INFO_SGX_x use record
      Secs at 0 range 0..32767;
   end record;
   for ENCLAVE_CREATE_INFO_SGX_x'Size use 32768;
   for ENCLAVE_CREATE_INFO_SGX_x'Alignment use 1;
   subtype ENCLAVE_CREATE_INFO_SGX is ENCLAVE_CREATE_INFO_SGX_x;
   type PENCLAVE_CREATE_INFO_SGX is access all ENCLAVE_CREATE_INFO_SGX_x;
   type ENCLAVE_INIT_INFO_SGX_x_SigStruct_Array is array(1..1808) of BYTE; -- Auto Generated Dependancy
   type ENCLAVE_INIT_INFO_SGX_x_Reserved1_Array is array(1..240) of BYTE; -- Auto Generated Dependancy
   type ENCLAVE_INIT_INFO_SGX_x_EInitToken_Array is array(1..304) of BYTE; -- Auto Generated Dependancy
   type ENCLAVE_INIT_INFO_SGX_x_Reserved2_Array is array(1..1744) of BYTE; -- Auto Generated Dependancy
   type ENCLAVE_INIT_INFO_SGX_x is record
      SigStruct : ENCLAVE_INIT_INFO_SGX_x_SigStruct_Array;
      Reserved1 : ENCLAVE_INIT_INFO_SGX_x_Reserved1_Array;
      EInitToken : ENCLAVE_INIT_INFO_SGX_x_EInitToken_Array;
      Reserved2 : ENCLAVE_INIT_INFO_SGX_x_Reserved2_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,ENCLAVE_INIT_INFO_SGX_x);
   for ENCLAVE_INIT_INFO_SGX_x use record
      SigStruct at 0 range 0..14463;
      Reserved1 at 0 range 14464..16383;
      EInitToken at 0 range 16384..18815;
      Reserved2 at 0 range 18816..32767;
   end record;
   for ENCLAVE_INIT_INFO_SGX_x'Size use 32768;
   for ENCLAVE_INIT_INFO_SGX_x'Alignment use 1;
   subtype ENCLAVE_INIT_INFO_SGX is ENCLAVE_INIT_INFO_SGX_x;
   type PENCLAVE_INIT_INFO_SGX is access all ENCLAVE_INIT_INFO_SGX_x;
   type ENCLAVE_CREATE_INFO_VBS_x_OwnerID_Array is array(1..32) of BYTE; -- Auto Generated Dependancy
   type ENCLAVE_CREATE_INFO_VBS_x is record
      Flags : DWORD;
      OwnerID : ENCLAVE_CREATE_INFO_VBS_x_OwnerID_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,ENCLAVE_CREATE_INFO_VBS_x);
   for ENCLAVE_CREATE_INFO_VBS_x use record
      Flags at 0 range 0..31;
      OwnerID at 0 range 32..287;
   end record;
   for ENCLAVE_CREATE_INFO_VBS_x'Size use 288;
   for ENCLAVE_CREATE_INFO_VBS_x'Alignment use 4;
   subtype ENCLAVE_CREATE_INFO_VBS is ENCLAVE_CREATE_INFO_VBS_x;
   type PENCLAVE_CREATE_INFO_VBS is access all ENCLAVE_CREATE_INFO_VBS_x;
   type ENCLAVE_CREATE_INFO_VBS_BASIC_x_OwnerID_Array is array(1..32) of BYTE; -- Auto Generated Dependancy
   type ENCLAVE_CREATE_INFO_VBS_BASIC_x is record
      Flags : DWORD;
      OwnerID : ENCLAVE_CREATE_INFO_VBS_BASIC_x_OwnerID_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,ENCLAVE_CREATE_INFO_VBS_BASIC_x);
   for ENCLAVE_CREATE_INFO_VBS_BASIC_x use record
      Flags at 0 range 0..31;
      OwnerID at 0 range 32..287;
   end record;
   for ENCLAVE_CREATE_INFO_VBS_BASIC_x'Size use 288;
   for ENCLAVE_CREATE_INFO_VBS_BASIC_x'Alignment use 4;
   subtype ENCLAVE_CREATE_INFO_VBS_BASIC is ENCLAVE_CREATE_INFO_VBS_BASIC_x;
   type PENCLAVE_CREATE_INFO_VBS_BASIC is access all ENCLAVE_CREATE_INFO_VBS_BASIC_x;
   type ENCLAVE_LOAD_DATA_VBS_BASIC_x is record
      PageType : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ENCLAVE_LOAD_DATA_VBS_BASIC_x);
   for ENCLAVE_LOAD_DATA_VBS_BASIC_x use record
      PageType at 0 range 0..31;
   end record;
   for ENCLAVE_LOAD_DATA_VBS_BASIC_x'Size use 32;
   for ENCLAVE_LOAD_DATA_VBS_BASIC_x'Alignment use 4;
   subtype ENCLAVE_LOAD_DATA_VBS_BASIC is ENCLAVE_LOAD_DATA_VBS_BASIC_x;
   type PENCLAVE_LOAD_DATA_VBS_BASIC is access all ENCLAVE_LOAD_DATA_VBS_BASIC_x;
   type Anonymous_Record_81 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            SignatureInfoHandle : HANDLE;
         when others => 
            Unused : ULONGLONG;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_81);
   pragma Unchecked_Union (Anonymous_Record_81);
   for Anonymous_Record_81'Size use 64;
   for Anonymous_Record_81'Alignment use 8;
   type ENCLAVE_INIT_INFO_VBS_BASIC_x_FamilyId_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type ENCLAVE_INIT_INFO_VBS_BASIC_x_ImageId_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type ENCLAVE_INIT_INFO_VBS_BASIC_x is record
      FamilyId : ENCLAVE_INIT_INFO_VBS_BASIC_x_FamilyId_Array;
      ImageId : ENCLAVE_INIT_INFO_VBS_BASIC_x_ImageId_Array;
      EnclaveSize : ULONGLONG;
      EnclaveSvn : DWORD;
      Reserved : DWORD;
      field_1 : Anonymous_Record_81;
   end record;
   pragma Convention (C_Pass_By_Copy,ENCLAVE_INIT_INFO_VBS_BASIC_x);
   for ENCLAVE_INIT_INFO_VBS_BASIC_x use record
      FamilyId at 0 range 0..127;
      ImageId at 0 range 128..255;
      EnclaveSize at 0 range 256..319;
      EnclaveSvn at 0 range 320..351;
      Reserved at 0 range 352..383;
      field_1 at 0 range 384..447;
   end record;
   for ENCLAVE_INIT_INFO_VBS_BASIC_x'Size use 448;
   for ENCLAVE_INIT_INFO_VBS_BASIC_x'Alignment use 8;
   subtype ENCLAVE_INIT_INFO_VBS_BASIC is ENCLAVE_INIT_INFO_VBS_BASIC_x;
   type PENCLAVE_INIT_INFO_VBS_BASIC is access all ENCLAVE_INIT_INFO_VBS_BASIC_x;
   type ENCLAVE_INIT_INFO_VBS_x is record
      Length : DWORD;
      ThreadCount : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ENCLAVE_INIT_INFO_VBS_x);
   for ENCLAVE_INIT_INFO_VBS_x use record
      Length at 0 range 0..31;
      ThreadCount at 0 range 32..63;
   end record;
   for ENCLAVE_INIT_INFO_VBS_x'Size use 64;
   for ENCLAVE_INIT_INFO_VBS_x'Alignment use 4;
   subtype ENCLAVE_INIT_INFO_VBS is ENCLAVE_INIT_INFO_VBS_x;
   type PENCLAVE_INIT_INFO_VBS is access all ENCLAVE_INIT_INFO_VBS_x;
   subtype ENCLAVE_TARGET_FUNCTION is System.Address; -- [FIXME - CXType_Unexposed]
   type PENCLAVE_TARGET_FUNCTION is access all ENCLAVE_TARGET_FUNCTION;
   subtype LPENCLAVE_TARGET_FUNCTION is PENCLAVE_TARGET_FUNCTION;
   type FILE_ID_128_x_Identifier_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type FILE_ID_128_x is record
      Identifier : FILE_ID_128_x_Identifier_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_ID_128_x);
   for FILE_ID_128_x use record
      Identifier at 0 range 0..127;
   end record;
   for FILE_ID_128_x'Size use 128;
   for FILE_ID_128_x'Alignment use 1;
   subtype FILE_ID_128 is FILE_ID_128_x;
   type PFILE_ID_128 is access all FILE_ID_128_x;
   type FILE_NOTIFY_INFORMATION_x_FileName_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type FILE_NOTIFY_INFORMATION_x is record
      NextEntryOffset : DWORD;
      Action : DWORD;
      FileNameLength : DWORD;
      FileName : FILE_NOTIFY_INFORMATION_x_FileName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_NOTIFY_INFORMATION_x);
   for FILE_NOTIFY_INFORMATION_x use record
      NextEntryOffset at 0 range 0..31;
      Action at 0 range 32..63;
      FileNameLength at 0 range 64..95;
      FileName at 0 range 96..111;
   end record;
   for FILE_NOTIFY_INFORMATION_x'Size use 128;
   for FILE_NOTIFY_INFORMATION_x'Alignment use 4;
   subtype FILE_NOTIFY_INFORMATION is FILE_NOTIFY_INFORMATION_x;
   type PFILE_NOTIFY_INFORMATION is access all FILE_NOTIFY_INFORMATION_x;
   type FILE_NOTIFY_EXTENDED_INFORMATION_x_FileName_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type FILE_NOTIFY_EXTENDED_INFORMATION_x is record
      NextEntryOffset : DWORD;
      Action : DWORD;
      CreationTime : LARGE_INTEGER;
      LastModificationTime : LARGE_INTEGER;
      LastChangeTime : LARGE_INTEGER;
      LastAccessTime : LARGE_INTEGER;
      AllocatedLength : LARGE_INTEGER;
      FileSize : LARGE_INTEGER;
      FileAttributes : DWORD;
      ReparsePointTag : DWORD;
      FileId : LARGE_INTEGER;
      ParentFileId : LARGE_INTEGER;
      FileNameLength : DWORD;
      FileName : FILE_NOTIFY_EXTENDED_INFORMATION_x_FileName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_NOTIFY_EXTENDED_INFORMATION_x);
   for FILE_NOTIFY_EXTENDED_INFORMATION_x use record
      NextEntryOffset at 0 range 0..31;
      Action at 0 range 32..63;
      CreationTime at 0 range 64..127;
      LastModificationTime at 0 range 128..191;
      LastChangeTime at 0 range 192..255;
      LastAccessTime at 0 range 256..319;
      AllocatedLength at 0 range 320..383;
      FileSize at 0 range 384..447;
      FileAttributes at 0 range 448..479;
      ReparsePointTag at 0 range 480..511;
      FileId at 0 range 512..575;
      ParentFileId at 0 range 576..639;
      FileNameLength at 0 range 640..671;
      FileName at 0 range 672..687;
   end record;
   for FILE_NOTIFY_EXTENDED_INFORMATION_x'Size use 704;
   for FILE_NOTIFY_EXTENDED_INFORMATION_x'Alignment use 8;
   subtype FILE_NOTIFY_EXTENDED_INFORMATION is FILE_NOTIFY_EXTENDED_INFORMATION_x;
   type PFILE_NOTIFY_EXTENDED_INFORMATION is access all FILE_NOTIFY_EXTENDED_INFORMATION_x;
   type FILE_SEGMENT_ELEMENT_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Buffer : access Void;
         when others => 
            Alignment : ULONGLONG;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_SEGMENT_ELEMENT_x);
   pragma Unchecked_Union (FILE_SEGMENT_ELEMENT_x);
   for FILE_SEGMENT_ELEMENT_x'Size use 64;
   for FILE_SEGMENT_ELEMENT_x'Alignment use 8;
   subtype FILE_SEGMENT_ELEMENT is FILE_SEGMENT_ELEMENT_x;
   type PFILE_SEGMENT_ELEMENT is access all FILE_SEGMENT_ELEMENT_x;
   type Anonymous_Record_82_DataBuffer_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type Anonymous_Record_82 is record
      DataBuffer : Anonymous_Record_82_DataBuffer_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_82);
   for Anonymous_Record_82 use record
      DataBuffer at 0 range 0..7;
   end record;
   for Anonymous_Record_82'Size use 8;
   for Anonymous_Record_82'Alignment use 1;
   type REPARSE_GUID_DATA_BUFFER_x is record
      ReparseTag : DWORD;
      ReparseDataLength : WORD;
      Reserved : WORD;
      ReparseGuid : GUID;
      field_1 : Anonymous_Record_82;
   end record;
   pragma Convention (C_Pass_By_Copy,REPARSE_GUID_DATA_BUFFER_x);
   for REPARSE_GUID_DATA_BUFFER_x use record
      ReparseTag at 0 range 0..31;
      ReparseDataLength at 0 range 32..47;
      Reserved at 0 range 48..63;
      ReparseGuid at 0 range 64..191;
      field_1 at 0 range 192..199;
   end record;
   for REPARSE_GUID_DATA_BUFFER_x'Size use 224;
   for REPARSE_GUID_DATA_BUFFER_x'Alignment use 4;
   subtype REPARSE_GUID_DATA_BUFFER is REPARSE_GUID_DATA_BUFFER_x;
   type PREPARSE_GUID_DATA_BUFFER is access all REPARSE_GUID_DATA_BUFFER_x;
   type SCRUB_DATA_INPUT_x_ObjectId_Array is array(1..4) of DWORD; -- Auto Generated Dependancy
   type SCRUB_DATA_INPUT_x_Reserved_Array is array(1..25) of DWORD; -- Auto Generated Dependancy
   type SCRUB_DATA_INPUT_x_ResumeContext_Array is array(1..816) of BYTE; -- Auto Generated Dependancy
   type SCRUB_DATA_INPUT_x is record
      Size : DWORD;
      Flags : DWORD;
      MaximumIos : DWORD;
      ObjectId_x : SCRUB_DATA_INPUT_x_ObjectId_Array;
      Reserved : SCRUB_DATA_INPUT_x_Reserved_Array;
      ResumeContext : SCRUB_DATA_INPUT_x_ResumeContext_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SCRUB_DATA_INPUT_x);
   for SCRUB_DATA_INPUT_x use record
      Size at 0 range 0..31;
      Flags at 0 range 32..63;
      MaximumIos at 0 range 64..95;
      ObjectId_x at 0 range 96..223;
      Reserved at 0 range 224..1023;
      ResumeContext at 0 range 1024..7551;
   end record;
   for SCRUB_DATA_INPUT_x'Size use 7552;
   for SCRUB_DATA_INPUT_x'Alignment use 4;
   subtype SCRUB_DATA_INPUT is SCRUB_DATA_INPUT_x;
   type PSCRUB_DATA_INPUT is access all SCRUB_DATA_INPUT_x;
   type SCRUB_PARITY_EXTENT_x is record
      Offset : LONGLONG;
      Length : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,SCRUB_PARITY_EXTENT_x);
   for SCRUB_PARITY_EXTENT_x use record
      Offset at 0 range 0..63;
      Length at 0 range 64..127;
   end record;
   for SCRUB_PARITY_EXTENT_x'Size use 128;
   for SCRUB_PARITY_EXTENT_x'Alignment use 8;
   subtype SCRUB_PARITY_EXTENT is SCRUB_PARITY_EXTENT_x;
   type PSCRUB_PARITY_EXTENT is access all SCRUB_PARITY_EXTENT_x;
   type SCRUB_PARITY_EXTENT_DATA_x_ParityExtents_Array is array(1..1) of SCRUB_PARITY_EXTENT; -- Auto Generated Dependancy
   type SCRUB_PARITY_EXTENT_DATA_x is record
      Size : WORD;
      Flags : WORD;
      NumberOfParityExtents : WORD;
      MaximumNumberOfParityExtents : WORD;
      ParityExtents : SCRUB_PARITY_EXTENT_DATA_x_ParityExtents_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SCRUB_PARITY_EXTENT_DATA_x);
   for SCRUB_PARITY_EXTENT_DATA_x use record
      Size at 0 range 0..15;
      Flags at 0 range 16..31;
      NumberOfParityExtents at 0 range 32..47;
      MaximumNumberOfParityExtents at 0 range 48..63;
      ParityExtents at 0 range 64..191;
   end record;
   for SCRUB_PARITY_EXTENT_DATA_x'Size use 192;
   for SCRUB_PARITY_EXTENT_DATA_x'Alignment use 8;
   subtype SCRUB_PARITY_EXTENT_DATA is SCRUB_PARITY_EXTENT_DATA_x;
   type PSCRUB_PARITY_EXTENT_DATA is access all SCRUB_PARITY_EXTENT_DATA_x;
   type SCRUB_DATA_OUTPUT_x_Reserved_Array is array(1..9) of DWORD; -- Auto Generated Dependancy
   type SCRUB_DATA_OUTPUT_x_ResumeContext_Array is array(1..816) of BYTE; -- Auto Generated Dependancy
   type SCRUB_DATA_OUTPUT_x is record
      Size : DWORD;
      Flags : DWORD;
      Status : DWORD;
      ErrorFileOffset : ULONGLONG;
      ErrorLength : ULONGLONG;
      NumberOfBytesRepaired : ULONGLONG;
      NumberOfBytesFailed : ULONGLONG;
      InternalFileReference : ULONGLONG;
      ResumeContextLength : WORD;
      ParityExtentDataOffset : WORD;
      Reserved : SCRUB_DATA_OUTPUT_x_Reserved_Array;
      NumberOfMetadataBytesProcessed : ULONGLONG;
      NumberOfDataBytesProcessed : ULONGLONG;
      TotalNumberOfMetadataBytesInUse : ULONGLONG;
      TotalNumberOfDataBytesInUse : ULONGLONG;
      ResumeContext : SCRUB_DATA_OUTPUT_x_ResumeContext_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SCRUB_DATA_OUTPUT_x);
   for SCRUB_DATA_OUTPUT_x use record
      Size at 0 range 0..31;
      Flags at 0 range 32..63;
      Status at 0 range 64..95;
      ErrorFileOffset at 0 range 128..191;
      ErrorLength at 0 range 192..255;
      NumberOfBytesRepaired at 0 range 256..319;
      NumberOfBytesFailed at 0 range 320..383;
      InternalFileReference at 0 range 384..447;
      ResumeContextLength at 0 range 448..463;
      ParityExtentDataOffset at 0 range 464..479;
      Reserved at 0 range 480..767;
      NumberOfMetadataBytesProcessed at 0 range 768..831;
      NumberOfDataBytesProcessed at 0 range 832..895;
      TotalNumberOfMetadataBytesInUse at 0 range 896..959;
      TotalNumberOfDataBytesInUse at 0 range 960..1023;
      ResumeContext at 0 range 1024..7551;
   end record;
   for SCRUB_DATA_OUTPUT_x'Size use 7552;
   for SCRUB_DATA_OUTPUT_x'Alignment use 8;
   subtype SCRUB_DATA_OUTPUT is SCRUB_DATA_OUTPUT_x;
   type PSCRUB_DATA_OUTPUT is access all SCRUB_DATA_OUTPUT_x;
   type SharedVirtualDiskSupportType_x is (
      SharedVirtualDisksUnsupported,
      SharedVirtualDisksSupported,
      SharedVirtualDiskSnapshotsSupported,
      SharedVirtualDiskCDPSnapshotsSupported
   );
   for SharedVirtualDiskSupportType_x use (
      SharedVirtualDisksUnsupported => 0,
      SharedVirtualDisksSupported => 1,
      SharedVirtualDiskSnapshotsSupported => 3,
      SharedVirtualDiskCDPSnapshotsSupported => 7
   );
   for SharedVirtualDiskSupportType_x'Size use 32;
   subtype SharedVirtualDiskSupportType is SharedVirtualDiskSupportType_x;
   type SharedVirtualDiskHandleState_x is (
      SharedVirtualDiskHandleStateNone,
      SharedVirtualDiskHandleStateFileShared,
      SharedVirtualDiskHandleStateHandleShared
   );
   for SharedVirtualDiskHandleState_x use (
      SharedVirtualDiskHandleStateNone => 0,
      SharedVirtualDiskHandleStateFileShared => 1,
      SharedVirtualDiskHandleStateHandleShared => 3
   );
   for SharedVirtualDiskHandleState_x'Size use 32;
   subtype SharedVirtualDiskHandleState is SharedVirtualDiskHandleState_x;
   type SHARED_VIRTUAL_DISK_SUPPORT_x is record
      SharedVirtualDiskSupport : SharedVirtualDiskSupportType;
      HandleState : SharedVirtualDiskHandleState;
   end record;
   pragma Convention (C_Pass_By_Copy,SHARED_VIRTUAL_DISK_SUPPORT_x);
   for SHARED_VIRTUAL_DISK_SUPPORT_x use record
      SharedVirtualDiskSupport at 0 range 0..31;
      HandleState at 0 range 32..63;
   end record;
   for SHARED_VIRTUAL_DISK_SUPPORT_x'Size use 64;
   for SHARED_VIRTUAL_DISK_SUPPORT_x'Alignment use 4;
   subtype SHARED_VIRTUAL_DISK_SUPPORT is SHARED_VIRTUAL_DISK_SUPPORT_x;
   type PSHARED_VIRTUAL_DISK_SUPPORT is access all SHARED_VIRTUAL_DISK_SUPPORT_x;
   type REARRANGE_FILE_DATA_x is record
      SourceStartingOffset : ULONGLONG;
      TargetOffset : ULONGLONG;
      SourceFileHandle : HANDLE;
      Length : DWORD;
      Flags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,REARRANGE_FILE_DATA_x);
   for REARRANGE_FILE_DATA_x use record
      SourceStartingOffset at 0 range 0..63;
      TargetOffset at 0 range 64..127;
      SourceFileHandle at 0 range 128..191;
      Length at 0 range 192..223;
      Flags at 0 range 224..255;
   end record;
   for REARRANGE_FILE_DATA_x'Size use 256;
   for REARRANGE_FILE_DATA_x'Alignment use 8;
   subtype REARRANGE_FILE_DATA is REARRANGE_FILE_DATA_x;
   type PREARRANGE_FILE_DATA is access all REARRANGE_FILE_DATA_x;
   type REARRANGE_FILE_DATA32_x is record
      SourceStartingOffset : ULONGLONG;
      TargetOffset : ULONGLONG;
      SourceFileHandle : UINT32;
      Length : DWORD;
      Flags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,REARRANGE_FILE_DATA32_x);
   for REARRANGE_FILE_DATA32_x use record
      SourceStartingOffset at 0 range 0..63;
      TargetOffset at 0 range 64..127;
      SourceFileHandle at 0 range 128..159;
      Length at 0 range 160..191;
      Flags at 0 range 192..223;
   end record;
   for REARRANGE_FILE_DATA32_x'Size use 256;
   for REARRANGE_FILE_DATA32_x'Alignment use 8;
   subtype REARRANGE_FILE_DATA32 is REARRANGE_FILE_DATA32_x;
   type PREARRANGE_FILE_DATA32 is access all REARRANGE_FILE_DATA32_x;
   type SHUFFLE_FILE_DATA_x is record
      StartingOffset : LONGLONG;
      Length : LONGLONG;
      Flags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SHUFFLE_FILE_DATA_x);
   for SHUFFLE_FILE_DATA_x use record
      StartingOffset at 0 range 0..63;
      Length at 0 range 64..127;
      Flags at 0 range 128..159;
   end record;
   for SHUFFLE_FILE_DATA_x'Size use 192;
   for SHUFFLE_FILE_DATA_x'Alignment use 8;
   subtype SHUFFLE_FILE_DATA is SHUFFLE_FILE_DATA_x;
   type PSHUFFLE_FILE_DATA is access all SHUFFLE_FILE_DATA_x;
   type NETWORK_APP_INSTANCE_EA_x is record
      AppInstanceID : GUID;
      CsvFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,NETWORK_APP_INSTANCE_EA_x);
   for NETWORK_APP_INSTANCE_EA_x use record
      AppInstanceID at 0 range 0..127;
      CsvFlags at 0 range 128..159;
   end record;
   for NETWORK_APP_INSTANCE_EA_x'Size use 160;
   for NETWORK_APP_INSTANCE_EA_x'Alignment use 4;
   subtype NETWORK_APP_INSTANCE_EA is NETWORK_APP_INSTANCE_EA_x;
   type PNETWORK_APP_INSTANCE_EA is access all NETWORK_APP_INSTANCE_EA_x;
   type SYSTEM_POWER_STATE_x is (
      PowerSystemUnspecified,
      PowerSystemWorking,
      PowerSystemSleeping1,
      PowerSystemSleeping2,
      PowerSystemSleeping3,
      PowerSystemHibernate,
      PowerSystemShutdown,
      PowerSystemMaximum
   );
   for SYSTEM_POWER_STATE_x use (
      PowerSystemUnspecified => 0,
      PowerSystemWorking => 1,
      PowerSystemSleeping1 => 2,
      PowerSystemSleeping2 => 3,
      PowerSystemSleeping3 => 4,
      PowerSystemHibernate => 5,
      PowerSystemShutdown => 6,
      PowerSystemMaximum => 7
   );
   for SYSTEM_POWER_STATE_x'Size use 32;
   subtype SYSTEM_POWER_STATE is SYSTEM_POWER_STATE_x;
   type PSYSTEM_POWER_STATE is access all SYSTEM_POWER_STATE_x;
   type POWER_ACTION is (
      PowerActionNone,
      PowerActionReserved,
      PowerActionSleep,
      PowerActionHibernate,
      PowerActionShutdown,
      PowerActionShutdownReset,
      PowerActionShutdownOff,
      PowerActionWarmEject,
      PowerActionDisplayOff
   );
   for POWER_ACTION use (
      PowerActionNone => 0,
      PowerActionReserved => 1,
      PowerActionSleep => 2,
      PowerActionHibernate => 3,
      PowerActionShutdown => 4,
      PowerActionShutdownReset => 5,
      PowerActionShutdownOff => 6,
      PowerActionWarmEject => 7,
      PowerActionDisplayOff => 8
   );
   for POWER_ACTION'Size use 32;
   type PPOWER_ACTION is access all POWER_ACTION;
   type DEVICE_POWER_STATE_x is (
      PowerDeviceUnspecified,
      PowerDeviceD0,
      PowerDeviceD1,
      PowerDeviceD2,
      PowerDeviceD3,
      PowerDeviceMaximum
   );
   for DEVICE_POWER_STATE_x use (
      PowerDeviceUnspecified => 0,
      PowerDeviceD0 => 1,
      PowerDeviceD1 => 2,
      PowerDeviceD2 => 3,
      PowerDeviceD3 => 4,
      PowerDeviceMaximum => 5
   );
   for DEVICE_POWER_STATE_x'Size use 32;
   subtype DEVICE_POWER_STATE is DEVICE_POWER_STATE_x;
   type PDEVICE_POWER_STATE is access all DEVICE_POWER_STATE_x;
   type MONITOR_DISPLAY_STATE_x is (
      PowerMonitorOff,
      PowerMonitorOn,
      PowerMonitorDim
   );
   for MONITOR_DISPLAY_STATE_x use (
      PowerMonitorOff => 0,
      PowerMonitorOn => 1,
      PowerMonitorDim => 2
   );
   for MONITOR_DISPLAY_STATE_x'Size use 32;
   subtype MONITOR_DISPLAY_STATE is MONITOR_DISPLAY_STATE_x;
   type PMONITOR_DISPLAY_STATE is access all MONITOR_DISPLAY_STATE_x;
   type USER_ACTIVITY_PRESENCE_x is (
      PowerUserPresent,
      PowerUserNotPresent,
      PowerUserInactive,
      PowerUserMaximum
   );
   for USER_ACTIVITY_PRESENCE_x use (
      PowerUserPresent => 0,
      PowerUserNotPresent => 1,
      PowerUserInactive => 2,
      PowerUserMaximum => 3
   );
   for USER_ACTIVITY_PRESENCE_x'Size use 32;
   subtype USER_ACTIVITY_PRESENCE is USER_ACTIVITY_PRESENCE_x;
   type PUSER_ACTIVITY_PRESENCE is access all USER_ACTIVITY_PRESENCE_x;
   subtype EXECUTION_STATE is DWORD;
   type PEXECUTION_STATE is access all DWORD;
   type LATENCY_TIME is (
      LT_DONT_CARE,
      LT_LOWEST_LATENCY
   );
   for LATENCY_TIME use (
      LT_DONT_CARE => 0,
      LT_LOWEST_LATENCY => 1
   );
   for LATENCY_TIME'Size use 32;
   type POWER_REQUEST_TYPE_x is (
      PowerRequestDisplayRequired,
      PowerRequestSystemRequired,
      PowerRequestAwayModeRequired,
      PowerRequestExecutionRequired
   );
   for POWER_REQUEST_TYPE_x use (
      PowerRequestDisplayRequired => 0,
      PowerRequestSystemRequired => 1,
      PowerRequestAwayModeRequired => 2,
      PowerRequestExecutionRequired => 3
   );
   for POWER_REQUEST_TYPE_x'Size use 32;
   subtype POWER_REQUEST_TYPE is POWER_REQUEST_TYPE_x;
   type PPOWER_REQUEST_TYPE is access all POWER_REQUEST_TYPE_x;
   type CM_Power_Data_s_PD_PowerStateMapping_Array is array(1..7) of DEVICE_POWER_STATE; -- Auto Generated Dependancy
   type CM_Power_Data_s is record
      PD_Size : DWORD;
      PD_MostRecentPowerState : DEVICE_POWER_STATE;
      PD_Capabilities : DWORD;
      PD_D1Latency : DWORD;
      PD_D2Latency : DWORD;
      PD_D3Latency : DWORD;
      PD_PowerStateMapping : CM_Power_Data_s_PD_PowerStateMapping_Array;
      PD_DeepestSystemWake : SYSTEM_POWER_STATE;
   end record;
   pragma Convention (C_Pass_By_Copy,CM_Power_Data_s);
   for CM_Power_Data_s use record
      PD_Size at 0 range 0..31;
      PD_MostRecentPowerState at 0 range 32..63;
      PD_Capabilities at 0 range 64..95;
      PD_D1Latency at 0 range 96..127;
      PD_D2Latency at 0 range 128..159;
      PD_D3Latency at 0 range 160..191;
      PD_PowerStateMapping at 0 range 192..415;
      PD_DeepestSystemWake at 0 range 416..447;
   end record;
   for CM_Power_Data_s'Size use 448;
   for CM_Power_Data_s'Alignment use 4;
   subtype CM_POWER_DATA is CM_Power_Data_s;
   type PCM_POWER_DATA is access all CM_Power_Data_s;
   type POWER_INFORMATION_LEVEL is (
      SystemPowerPolicyAc,
      SystemPowerPolicyDc,
      VerifySystemPolicyAc,
      VerifySystemPolicyDc,
      SystemPowerCapabilities,
      SystemBatteryState,
      SystemPowerStateHandler,
      ProcessorStateHandler,
      SystemPowerPolicyCurrent,
      AdministratorPowerPolicy,
      SystemReserveHiberFile,
      ProcessorInformation,
      SystemPowerInformation,
      ProcessorStateHandler2,
      LastWakeTime,
      LastSleepTime,
      SystemExecutionState,
      SystemPowerStateNotifyHandler,
      ProcessorPowerPolicyAc,
      ProcessorPowerPolicyDc,
      VerifyProcessorPowerPolicyAc,
      VerifyProcessorPowerPolicyDc,
      ProcessorPowerPolicyCurrent,
      SystemPowerStateLogging,
      SystemPowerLoggingEntry,
      SetPowerSettingValue,
      NotifyUserPowerSetting,
      PowerInformationLevelUnused0,
      SystemMonitorHiberBootPowerOff,
      SystemVideoState,
      TraceApplicationPowerMessage,
      TraceApplicationPowerMessageEnd,
      ProcessorPerfStates,
      ProcessorIdleStates,
      ProcessorCap,
      SystemWakeSource,
      SystemHiberFileInformation,
      TraceServicePowerMessage,
      ProcessorLoad,
      PowerShutdownNotification,
      MonitorCapabilities,
      SessionPowerInit,
      SessionDisplayState,
      PowerRequestCreate,
      PowerRequestAction,
      GetPowerRequestList,
      ProcessorInformationEx,
      NotifyUserModeLegacyPowerEvent,
      GroupPark,
      ProcessorIdleDomains,
      WakeTimerList,
      SystemHiberFileSize,
      ProcessorIdleStatesHv,
      ProcessorPerfStatesHv,
      ProcessorPerfCapHv,
      ProcessorSetIdle,
      LogicalProcessorIdling,
      UserPresence,
      PowerSettingNotificationName,
      GetPowerSettingValue,
      IdleResiliency,
      SessionRITState,
      SessionConnectNotification,
      SessionPowerCleanup,
      SessionLockState,
      SystemHiberbootState,
      PlatformInformation,
      PdcInvocation,
      MonitorInvocation,
      FirmwareTableInformationRegistered,
      SetShutdownSelectedTime,
      SuspendResumeInvocation,
      PlmPowerRequestCreate,
      ScreenOff,
      CsDeviceNotification,
      PlatformRole,
      LastResumePerformance,
      DisplayBurst,
      ExitLatencySamplingPercentage,
      RegisterSpmPowerSettings,
      PlatformIdleStates,
      ProcessorIdleVeto,
      PlatformIdleVeto,
      SystemBatteryStatePrecise,
      ThermalEvent,
      PowerRequestActionInternal,
      BatteryDeviceState,
      PowerInformationInternal,
      ThermalStandby,
      SystemHiberFileType,
      PhysicalPowerButtonPress,
      QueryPotentialDripsConstraint,
      EnergyTrackerCreate,
      EnergyTrackerQuery,
      UpdateBlackBoxRecorder,
      SessionAllowExternalDmaDevices,
      PowerInformationLevelMaximum
   );
   for POWER_INFORMATION_LEVEL use (
      SystemPowerPolicyAc => 0,
      SystemPowerPolicyDc => 1,
      VerifySystemPolicyAc => 2,
      VerifySystemPolicyDc => 3,
      SystemPowerCapabilities => 4,
      SystemBatteryState => 5,
      SystemPowerStateHandler => 6,
      ProcessorStateHandler => 7,
      SystemPowerPolicyCurrent => 8,
      AdministratorPowerPolicy => 9,
      SystemReserveHiberFile => 10,
      ProcessorInformation => 11,
      SystemPowerInformation => 12,
      ProcessorStateHandler2 => 13,
      LastWakeTime => 14,
      LastSleepTime => 15,
      SystemExecutionState => 16,
      SystemPowerStateNotifyHandler => 17,
      ProcessorPowerPolicyAc => 18,
      ProcessorPowerPolicyDc => 19,
      VerifyProcessorPowerPolicyAc => 20,
      VerifyProcessorPowerPolicyDc => 21,
      ProcessorPowerPolicyCurrent => 22,
      SystemPowerStateLogging => 23,
      SystemPowerLoggingEntry => 24,
      SetPowerSettingValue => 25,
      NotifyUserPowerSetting => 26,
      PowerInformationLevelUnused0 => 27,
      SystemMonitorHiberBootPowerOff => 28,
      SystemVideoState => 29,
      TraceApplicationPowerMessage => 30,
      TraceApplicationPowerMessageEnd => 31,
      ProcessorPerfStates => 32,
      ProcessorIdleStates => 33,
      ProcessorCap => 34,
      SystemWakeSource => 35,
      SystemHiberFileInformation => 36,
      TraceServicePowerMessage => 37,
      ProcessorLoad => 38,
      PowerShutdownNotification => 39,
      MonitorCapabilities => 40,
      SessionPowerInit => 41,
      SessionDisplayState => 42,
      PowerRequestCreate => 43,
      PowerRequestAction => 44,
      GetPowerRequestList => 45,
      ProcessorInformationEx => 46,
      NotifyUserModeLegacyPowerEvent => 47,
      GroupPark => 48,
      ProcessorIdleDomains => 49,
      WakeTimerList => 50,
      SystemHiberFileSize => 51,
      ProcessorIdleStatesHv => 52,
      ProcessorPerfStatesHv => 53,
      ProcessorPerfCapHv => 54,
      ProcessorSetIdle => 55,
      LogicalProcessorIdling => 56,
      UserPresence => 57,
      PowerSettingNotificationName => 58,
      GetPowerSettingValue => 59,
      IdleResiliency => 60,
      SessionRITState => 61,
      SessionConnectNotification => 62,
      SessionPowerCleanup => 63,
      SessionLockState => 64,
      SystemHiberbootState => 65,
      PlatformInformation => 66,
      PdcInvocation => 67,
      MonitorInvocation => 68,
      FirmwareTableInformationRegistered => 69,
      SetShutdownSelectedTime => 70,
      SuspendResumeInvocation => 71,
      PlmPowerRequestCreate => 72,
      ScreenOff => 73,
      CsDeviceNotification => 74,
      PlatformRole => 75,
      LastResumePerformance => 76,
      DisplayBurst => 77,
      ExitLatencySamplingPercentage => 78,
      RegisterSpmPowerSettings => 79,
      PlatformIdleStates => 80,
      ProcessorIdleVeto => 81,
      PlatformIdleVeto => 82,
      SystemBatteryStatePrecise => 83,
      ThermalEvent => 84,
      PowerRequestActionInternal => 85,
      BatteryDeviceState => 86,
      PowerInformationInternal => 87,
      ThermalStandby => 88,
      SystemHiberFileType => 89,
      PhysicalPowerButtonPress => 90,
      QueryPotentialDripsConstraint => 91,
      EnergyTrackerCreate => 92,
      EnergyTrackerQuery => 93,
      UpdateBlackBoxRecorder => 94,
      SessionAllowExternalDmaDevices => 95,
      PowerInformationLevelMaximum => 96
   );
   for POWER_INFORMATION_LEVEL'Size use 32;
   type POWER_USER_PRESENCE_TYPE is (
      UserNotPresent,
      UserPresent,
      UserUnknown
   );
   for POWER_USER_PRESENCE_TYPE use (
      UserNotPresent => 0,
      UserPresent => 1,
      UserUnknown => 255
   );
   for POWER_USER_PRESENCE_TYPE'Size use 32;
   type PPOWER_USER_PRESENCE_TYPE is access all POWER_USER_PRESENCE_TYPE;
   type POWER_USER_PRESENCE_x is record
      UserPresence : POWER_USER_PRESENCE_TYPE;
   end record;
   pragma Convention (C_Pass_By_Copy,POWER_USER_PRESENCE_x);
   for POWER_USER_PRESENCE_x use record
      UserPresence at 0 range 0..31;
   end record;
   for POWER_USER_PRESENCE_x'Size use 32;
   for POWER_USER_PRESENCE_x'Alignment use 4;
   subtype POWER_USER_PRESENCE is POWER_USER_PRESENCE_x;
   type PPOWER_USER_PRESENCE is access all POWER_USER_PRESENCE_x;
   type POWER_SESSION_CONNECT_x is record
      Connected : BOOLEAN;
      Console : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,POWER_SESSION_CONNECT_x);
   for POWER_SESSION_CONNECT_x use record
      Connected at 0 range 0..7;
      Console at 0 range 8..15;
   end record;
   for POWER_SESSION_CONNECT_x'Size use 16;
   for POWER_SESSION_CONNECT_x'Alignment use 1;
   subtype POWER_SESSION_CONNECT is POWER_SESSION_CONNECT_x;
   type PPOWER_SESSION_CONNECT is access all POWER_SESSION_CONNECT_x;
   type POWER_SESSION_TIMEOUTS_x is record
      InputTimeout : DWORD;
      DisplayTimeout : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,POWER_SESSION_TIMEOUTS_x);
   for POWER_SESSION_TIMEOUTS_x use record
      InputTimeout at 0 range 0..31;
      DisplayTimeout at 0 range 32..63;
   end record;
   for POWER_SESSION_TIMEOUTS_x'Size use 64;
   for POWER_SESSION_TIMEOUTS_x'Alignment use 4;
   subtype POWER_SESSION_TIMEOUTS is POWER_SESSION_TIMEOUTS_x;
   type PPOWER_SESSION_TIMEOUTS is access all POWER_SESSION_TIMEOUTS_x;
   type POWER_SESSION_RIT_STATE_x is record
      Active : BOOLEAN;
      LastInputTime : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,POWER_SESSION_RIT_STATE_x);
   for POWER_SESSION_RIT_STATE_x use record
      Active at 0 range 0..7;
      LastInputTime at 0 range 32..63;
   end record;
   for POWER_SESSION_RIT_STATE_x'Size use 64;
   for POWER_SESSION_RIT_STATE_x'Alignment use 4;
   subtype POWER_SESSION_RIT_STATE is POWER_SESSION_RIT_STATE_x;
   type PPOWER_SESSION_RIT_STATE is access all POWER_SESSION_RIT_STATE_x;
   type POWER_SESSION_WINLOGON_x is record
      SessionId : DWORD;
      Console : BOOLEAN;
      Locked : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,POWER_SESSION_WINLOGON_x);
   for POWER_SESSION_WINLOGON_x use record
      SessionId at 0 range 0..31;
      Console at 0 range 32..39;
      Locked at 0 range 40..47;
   end record;
   for POWER_SESSION_WINLOGON_x'Size use 64;
   for POWER_SESSION_WINLOGON_x'Alignment use 4;
   subtype POWER_SESSION_WINLOGON is POWER_SESSION_WINLOGON_x;
   type PPOWER_SESSION_WINLOGON is access all POWER_SESSION_WINLOGON_x;
   type POWER_SESSION_ALLOW_EXTERNAL_DMA_DEVICES_x is record
      IsAllowed : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,POWER_SESSION_ALLOW_EXTERNAL_DMA_DEVICES_x);
   for POWER_SESSION_ALLOW_EXTERNAL_DMA_DEVICES_x use record
      IsAllowed at 0 range 0..7;
   end record;
   for POWER_SESSION_ALLOW_EXTERNAL_DMA_DEVICES_x'Size use 8;
   for POWER_SESSION_ALLOW_EXTERNAL_DMA_DEVICES_x'Alignment use 1;
   subtype POWER_SESSION_ALLOW_EXTERNAL_DMA_DEVICES is POWER_SESSION_ALLOW_EXTERNAL_DMA_DEVICES_x;
   type PPOWER_SESSION_ALLOW_EXTERNAL_DMA_DEVICES is access all POWER_SESSION_ALLOW_EXTERNAL_DMA_DEVICES_x;
   type POWER_IDLE_RESILIENCY_x is record
      CoalescingTimeout : DWORD;
      IdleResiliencyPeriod : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,POWER_IDLE_RESILIENCY_x);
   for POWER_IDLE_RESILIENCY_x use record
      CoalescingTimeout at 0 range 0..31;
      IdleResiliencyPeriod at 0 range 32..63;
   end record;
   for POWER_IDLE_RESILIENCY_x'Size use 64;
   for POWER_IDLE_RESILIENCY_x'Alignment use 4;
   subtype POWER_IDLE_RESILIENCY is POWER_IDLE_RESILIENCY_x;
   type PPOWER_IDLE_RESILIENCY is access all POWER_IDLE_RESILIENCY_x;
   type POWER_MONITOR_REQUEST_REASON is (
      MonitorRequestReasonUnknown,
      MonitorRequestReasonPowerButton,
      MonitorRequestReasonRemoteConnection,
      MonitorRequestReasonScMonitorpower,
      MonitorRequestReasonUserInput,
      MonitorRequestReasonAcDcDisplayBurst,
      MonitorRequestReasonUserDisplayBurst,
      MonitorRequestReasonPoSetSystemState,
      MonitorRequestReasonSetThreadExecutionState,
      MonitorRequestReasonFullWake,
      MonitorRequestReasonSessionUnlock,
      MonitorRequestReasonScreenOffRequest,
      MonitorRequestReasonIdleTimeout,
      MonitorRequestReasonPolicyChange,
      MonitorRequestReasonSleepButton,
      MonitorRequestReasonLid,
      MonitorRequestReasonBatteryCountChange,
      MonitorRequestReasonGracePeriod,
      MonitorRequestReasonPnP,
      MonitorRequestReasonDP,
      MonitorRequestReasonSxTransition,
      MonitorRequestReasonSystemIdle,
      MonitorRequestReasonNearProximity,
      MonitorRequestReasonThermalStandby,
      MonitorRequestReasonResumePdc,
      MonitorRequestReasonResumeS4,
      MonitorRequestReasonTerminal,
      MonitorRequestReasonPdcSignal,
      MonitorRequestReasonAcDcDisplayBurstSuppressed,
      MonitorRequestReasonSystemStateEntered,
      MonitorRequestReasonWinrt,
      MonitorRequestReasonUserInputKeyboard,
      MonitorRequestReasonUserInputMouse,
      MonitorRequestReasonUserInputTouch,
      MonitorRequestReasonUserInputPen,
      MonitorRequestReasonUserInputAccelerometer,
      MonitorRequestReasonUserInputHid,
      MonitorRequestReasonUserInputPoUserPresent,
      MonitorRequestReasonUserInputSessionSwitch,
      MonitorRequestReasonUserInputInitialization,
      MonitorRequestReasonPdcSignalWindowsMobilePwrNotif,
      MonitorRequestReasonPdcSignalWindowsMobileShell,
      MonitorRequestReasonPdcSignalHeyCortana,
      MonitorRequestReasonPdcSignalHolographicShell,
      MonitorRequestReasonPdcSignalFingerprint,
      MonitorRequestReasonDirectedDrips,
      MonitorRequestReasonDim,
      MonitorRequestReasonBuiltinPanel,
      MonitorRequestReasonDisplayRequiredUnDim,
      MonitorRequestReasonBatteryCountChangeSuppressed,
      MonitorRequestReasonResumeModernStandby,
      MonitorRequestReasonMax
   );
   for POWER_MONITOR_REQUEST_REASON use (
      MonitorRequestReasonUnknown => 0,
      MonitorRequestReasonPowerButton => 1,
      MonitorRequestReasonRemoteConnection => 2,
      MonitorRequestReasonScMonitorpower => 3,
      MonitorRequestReasonUserInput => 4,
      MonitorRequestReasonAcDcDisplayBurst => 5,
      MonitorRequestReasonUserDisplayBurst => 6,
      MonitorRequestReasonPoSetSystemState => 7,
      MonitorRequestReasonSetThreadExecutionState => 8,
      MonitorRequestReasonFullWake => 9,
      MonitorRequestReasonSessionUnlock => 10,
      MonitorRequestReasonScreenOffRequest => 11,
      MonitorRequestReasonIdleTimeout => 12,
      MonitorRequestReasonPolicyChange => 13,
      MonitorRequestReasonSleepButton => 14,
      MonitorRequestReasonLid => 15,
      MonitorRequestReasonBatteryCountChange => 16,
      MonitorRequestReasonGracePeriod => 17,
      MonitorRequestReasonPnP => 18,
      MonitorRequestReasonDP => 19,
      MonitorRequestReasonSxTransition => 20,
      MonitorRequestReasonSystemIdle => 21,
      MonitorRequestReasonNearProximity => 22,
      MonitorRequestReasonThermalStandby => 23,
      MonitorRequestReasonResumePdc => 24,
      MonitorRequestReasonResumeS4 => 25,
      MonitorRequestReasonTerminal => 26,
      MonitorRequestReasonPdcSignal => 27,
      MonitorRequestReasonAcDcDisplayBurstSuppressed => 28,
      MonitorRequestReasonSystemStateEntered => 29,
      MonitorRequestReasonWinrt => 30,
      MonitorRequestReasonUserInputKeyboard => 31,
      MonitorRequestReasonUserInputMouse => 32,
      MonitorRequestReasonUserInputTouch => 33,
      MonitorRequestReasonUserInputPen => 34,
      MonitorRequestReasonUserInputAccelerometer => 35,
      MonitorRequestReasonUserInputHid => 36,
      MonitorRequestReasonUserInputPoUserPresent => 37,
      MonitorRequestReasonUserInputSessionSwitch => 38,
      MonitorRequestReasonUserInputInitialization => 39,
      MonitorRequestReasonPdcSignalWindowsMobilePwrNotif => 40,
      MonitorRequestReasonPdcSignalWindowsMobileShell => 41,
      MonitorRequestReasonPdcSignalHeyCortana => 42,
      MonitorRequestReasonPdcSignalHolographicShell => 43,
      MonitorRequestReasonPdcSignalFingerprint => 44,
      MonitorRequestReasonDirectedDrips => 45,
      MonitorRequestReasonDim => 46,
      MonitorRequestReasonBuiltinPanel => 47,
      MonitorRequestReasonDisplayRequiredUnDim => 48,
      MonitorRequestReasonBatteryCountChangeSuppressed => 49,
      MonitorRequestReasonResumeModernStandby => 50,
      MonitorRequestReasonMax => 51
   );
   for POWER_MONITOR_REQUEST_REASON'Size use 32;
   type POWER_MONITOR_REQUEST_TYPE_x is (
      MonitorRequestTypeOff,
      MonitorRequestTypeOnAndPresent,
      MonitorRequestTypeToggleOn
   );
   for POWER_MONITOR_REQUEST_TYPE_x use (
      MonitorRequestTypeOff => 0,
      MonitorRequestTypeOnAndPresent => 1,
      MonitorRequestTypeToggleOn => 2
   );
   for POWER_MONITOR_REQUEST_TYPE_x'Size use 32;
   subtype POWER_MONITOR_REQUEST_TYPE is POWER_MONITOR_REQUEST_TYPE_x;
   type POWER_MONITOR_INVOCATION_x is record
      Console : BOOLEAN;
      RequestReason : POWER_MONITOR_REQUEST_REASON;
   end record;
   pragma Convention (C_Pass_By_Copy,POWER_MONITOR_INVOCATION_x);
   for POWER_MONITOR_INVOCATION_x use record
      Console at 0 range 0..7;
      RequestReason at 0 range 32..63;
   end record;
   for POWER_MONITOR_INVOCATION_x'Size use 64;
   for POWER_MONITOR_INVOCATION_x'Alignment use 4;
   subtype POWER_MONITOR_INVOCATION is POWER_MONITOR_INVOCATION_x;
   type PPOWER_MONITOR_INVOCATION is access all POWER_MONITOR_INVOCATION_x;
   type RESUME_PERFORMANCE_x is record
      PostTimeMs : DWORD;
      TotalResumeTimeMs : ULONGLONG;
      ResumeCompleteTimestamp : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,RESUME_PERFORMANCE_x);
   for RESUME_PERFORMANCE_x use record
      PostTimeMs at 0 range 0..31;
      TotalResumeTimeMs at 0 range 64..127;
      ResumeCompleteTimestamp at 0 range 128..191;
   end record;
   for RESUME_PERFORMANCE_x'Size use 192;
   for RESUME_PERFORMANCE_x'Alignment use 8;
   subtype RESUME_PERFORMANCE is RESUME_PERFORMANCE_x;
   type PRESUME_PERFORMANCE is access all RESUME_PERFORMANCE_x;
   type SYSTEM_POWER_CONDITION is (
      PoAc,
      PoDc,
      PoHot,
      PoConditionMaximum
   );
   for SYSTEM_POWER_CONDITION use (
      PoAc => 0,
      PoDc => 1,
      PoHot => 2,
      PoConditionMaximum => 3
   );
   for SYSTEM_POWER_CONDITION'Size use 32;
   type SET_POWER_SETTING_VALUE_Data_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type SET_POWER_SETTING_VALUE is record
      Version : DWORD;
      Guid_x : GUID;
      PowerCondition : SYSTEM_POWER_CONDITION;
      DataLength : DWORD;
      Data : SET_POWER_SETTING_VALUE_Data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SET_POWER_SETTING_VALUE);
   for SET_POWER_SETTING_VALUE use record
      Version at 0 range 0..31;
      Guid_x at 0 range 32..159;
      PowerCondition at 0 range 160..191;
      DataLength at 0 range 192..223;
      Data at 0 range 224..231;
   end record;
   for SET_POWER_SETTING_VALUE'Size use 256;
   for SET_POWER_SETTING_VALUE'Alignment use 4;
   type PSET_POWER_SETTING_VALUE is access all SET_POWER_SETTING_VALUE;
   type NOTIFY_USER_POWER_SETTING is record
      Guid_x : GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,NOTIFY_USER_POWER_SETTING);
   for NOTIFY_USER_POWER_SETTING use record
      Guid_x at 0 range 0..127;
   end record;
   for NOTIFY_USER_POWER_SETTING'Size use 128;
   for NOTIFY_USER_POWER_SETTING'Alignment use 4;
   type PNOTIFY_USER_POWER_SETTING is access all NOTIFY_USER_POWER_SETTING;
   type APPLICATIONLAUNCH_SETTING_VALUE_x is record
      ActivationTime : LARGE_INTEGER;
      Flags : DWORD;
      ButtonInstanceID : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,APPLICATIONLAUNCH_SETTING_VALUE_x);
   for APPLICATIONLAUNCH_SETTING_VALUE_x use record
      ActivationTime at 0 range 0..63;
      Flags at 0 range 64..95;
      ButtonInstanceID at 0 range 96..127;
   end record;
   for APPLICATIONLAUNCH_SETTING_VALUE_x'Size use 128;
   for APPLICATIONLAUNCH_SETTING_VALUE_x'Alignment use 8;
   subtype APPLICATIONLAUNCH_SETTING_VALUE is APPLICATIONLAUNCH_SETTING_VALUE_x;
   type PAPPLICATIONLAUNCH_SETTING_VALUE is access all APPLICATIONLAUNCH_SETTING_VALUE_x;
   type POWER_PLATFORM_ROLE_x is (
      PlatformRoleUnspecified,
      PlatformRoleDesktop,
      PlatformRoleMobile,
      PlatformRoleWorkstation,
      PlatformRoleEnterpriseServer,
      PlatformRoleSOHOServer,
      PlatformRoleAppliancePC,
      PlatformRolePerformanceServer,
      PlatformRoleSlate,
      PlatformRoleMaximum
   );
   for POWER_PLATFORM_ROLE_x use (
      PlatformRoleUnspecified => 0,
      PlatformRoleDesktop => 1,
      PlatformRoleMobile => 2,
      PlatformRoleWorkstation => 3,
      PlatformRoleEnterpriseServer => 4,
      PlatformRoleSOHOServer => 5,
      PlatformRoleAppliancePC => 6,
      PlatformRolePerformanceServer => 7,
      PlatformRoleSlate => 8,
      PlatformRoleMaximum => 9
   );
   for POWER_PLATFORM_ROLE_x'Size use 32;
   subtype POWER_PLATFORM_ROLE is POWER_PLATFORM_ROLE_x;
   type PPOWER_PLATFORM_ROLE is access all POWER_PLATFORM_ROLE_x;
   type POWER_PLATFORM_INFORMATION_x is record
      AoAc : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,POWER_PLATFORM_INFORMATION_x);
   for POWER_PLATFORM_INFORMATION_x use record
      AoAc at 0 range 0..7;
   end record;
   for POWER_PLATFORM_INFORMATION_x'Size use 8;
   for POWER_PLATFORM_INFORMATION_x'Alignment use 1;
   subtype POWER_PLATFORM_INFORMATION is POWER_PLATFORM_INFORMATION_x;
   type PPOWER_PLATFORM_INFORMATION is access all POWER_PLATFORM_INFORMATION_x;
   type BATTERY_REPORTING_SCALE is record
      Granularity : DWORD;
      Capacity : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,BATTERY_REPORTING_SCALE);
   for BATTERY_REPORTING_SCALE use record
      Granularity at 0 range 0..31;
      Capacity at 0 range 32..63;
   end record;
   for BATTERY_REPORTING_SCALE'Size use 64;
   for BATTERY_REPORTING_SCALE'Alignment use 4;
   type PBATTERY_REPORTING_SCALE is access all BATTERY_REPORTING_SCALE;
   type PPM_WMI_LEGACY_PERFSTATE is record
      Frequency : DWORD;
      Flags : DWORD;
      PercentFrequency : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_WMI_LEGACY_PERFSTATE);
   for PPM_WMI_LEGACY_PERFSTATE use record
      Frequency at 0 range 0..31;
      Flags at 0 range 32..63;
      PercentFrequency at 0 range 64..95;
   end record;
   for PPM_WMI_LEGACY_PERFSTATE'Size use 96;
   for PPM_WMI_LEGACY_PERFSTATE'Alignment use 4;
   type PPPM_WMI_LEGACY_PERFSTATE is access all PPM_WMI_LEGACY_PERFSTATE;
   type PPM_WMI_IDLE_STATE is record
      Latency : DWORD;
      Power : DWORD;
      TimeCheck : DWORD;
      PromotePercent : BYTE;
      DemotePercent : BYTE;
      StateType : BYTE;
      Reserved : BYTE;
      StateFlags : DWORD;
      Context_x : DWORD;
      IdleHandler : DWORD;
      Reserved1 : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_WMI_IDLE_STATE);
   for PPM_WMI_IDLE_STATE use record
      Latency at 0 range 0..31;
      Power at 0 range 32..63;
      TimeCheck at 0 range 64..95;
      PromotePercent at 0 range 96..103;
      DemotePercent at 0 range 104..111;
      StateType at 0 range 112..119;
      Reserved at 0 range 120..127;
      StateFlags at 0 range 128..159;
      Context_x at 0 range 160..191;
      IdleHandler at 0 range 192..223;
      Reserved1 at 0 range 224..255;
   end record;
   for PPM_WMI_IDLE_STATE'Size use 256;
   for PPM_WMI_IDLE_STATE'Alignment use 4;
   type PPPM_WMI_IDLE_STATE is access all PPM_WMI_IDLE_STATE;
   type PPM_WMI_IDLE_STATES_State_Array is array(1..1) of PPM_WMI_IDLE_STATE; -- Auto Generated Dependancy
   type PPM_WMI_IDLE_STATES is record
      type_x : DWORD;
      Count : DWORD;
      TargetState : DWORD;
      OldState : DWORD;
      TargetProcessors : DWORD64;
      State : PPM_WMI_IDLE_STATES_State_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_WMI_IDLE_STATES);
   for PPM_WMI_IDLE_STATES use record
      type_x at 0 range 0..31;
      Count at 0 range 32..63;
      TargetState at 0 range 64..95;
      OldState at 0 range 96..127;
      TargetProcessors at 0 range 128..191;
      State at 0 range 192..447;
   end record;
   for PPM_WMI_IDLE_STATES'Size use 448;
   for PPM_WMI_IDLE_STATES'Alignment use 8;
   type PPPM_WMI_IDLE_STATES is access all PPM_WMI_IDLE_STATES;
   type PPM_WMI_IDLE_STATES_EX_State_Array is array(1..1) of PPM_WMI_IDLE_STATE; -- Auto Generated Dependancy
   type PPM_WMI_IDLE_STATES_EX is record
      type_x : DWORD;
      Count : DWORD;
      TargetState : DWORD;
      OldState : DWORD;
      TargetProcessors : PVOID;
      State : PPM_WMI_IDLE_STATES_EX_State_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_WMI_IDLE_STATES_EX);
   for PPM_WMI_IDLE_STATES_EX use record
      type_x at 0 range 0..31;
      Count at 0 range 32..63;
      TargetState at 0 range 64..95;
      OldState at 0 range 96..127;
      TargetProcessors at 0 range 128..191;
      State at 0 range 192..447;
   end record;
   for PPM_WMI_IDLE_STATES_EX'Size use 448;
   for PPM_WMI_IDLE_STATES_EX'Alignment use 8;
   type PPPM_WMI_IDLE_STATES_EX is access all PPM_WMI_IDLE_STATES_EX;
   type PPM_WMI_PERF_STATE is record
      Frequency : DWORD;
      Power : DWORD;
      PercentFrequency : BYTE;
      IncreaseLevel : BYTE;
      DecreaseLevel : BYTE;
      type_x : BYTE;
      IncreaseTime : DWORD;
      DecreaseTime : DWORD;
      Control : DWORD64;
      Status : DWORD64;
      HitCount : DWORD;
      Reserved1 : DWORD;
      Reserved2 : DWORD64;
      Reserved3 : DWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_WMI_PERF_STATE);
   for PPM_WMI_PERF_STATE use record
      Frequency at 0 range 0..31;
      Power at 0 range 32..63;
      PercentFrequency at 0 range 64..71;
      IncreaseLevel at 0 range 72..79;
      DecreaseLevel at 0 range 80..87;
      type_x at 0 range 88..95;
      IncreaseTime at 0 range 96..127;
      DecreaseTime at 0 range 128..159;
      Control at 0 range 192..255;
      Status at 0 range 256..319;
      HitCount at 0 range 320..351;
      Reserved1 at 0 range 352..383;
      Reserved2 at 0 range 384..447;
      Reserved3 at 0 range 448..511;
   end record;
   for PPM_WMI_PERF_STATE'Size use 512;
   for PPM_WMI_PERF_STATE'Alignment use 8;
   type PPPM_WMI_PERF_STATE is access all PPM_WMI_PERF_STATE;
   type PPM_WMI_PERF_STATES_State_Array is array(1..1) of PPM_WMI_PERF_STATE; -- Auto Generated Dependancy
   type PPM_WMI_PERF_STATES is record
      Count : DWORD;
      MaxFrequency : DWORD;
      CurrentState : DWORD;
      MaxPerfState : DWORD;
      MinPerfState : DWORD;
      LowestPerfState : DWORD;
      ThermalConstraint : DWORD;
      BusyAdjThreshold : BYTE;
      PolicyType : BYTE;
      type_x : BYTE;
      Reserved : BYTE;
      TimerInterval : DWORD;
      TargetProcessors : DWORD64;
      PStateHandler : DWORD;
      PStateContext : DWORD;
      TStateHandler : DWORD;
      TStateContext : DWORD;
      FeedbackHandler : DWORD;
      Reserved1 : DWORD;
      Reserved2 : DWORD64;
      State : PPM_WMI_PERF_STATES_State_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_WMI_PERF_STATES);
   for PPM_WMI_PERF_STATES use record
      Count at 0 range 0..31;
      MaxFrequency at 0 range 32..63;
      CurrentState at 0 range 64..95;
      MaxPerfState at 0 range 96..127;
      MinPerfState at 0 range 128..159;
      LowestPerfState at 0 range 160..191;
      ThermalConstraint at 0 range 192..223;
      BusyAdjThreshold at 0 range 224..231;
      PolicyType at 0 range 232..239;
      type_x at 0 range 240..247;
      Reserved at 0 range 248..255;
      TimerInterval at 0 range 256..287;
      TargetProcessors at 0 range 320..383;
      PStateHandler at 0 range 384..415;
      PStateContext at 0 range 416..447;
      TStateHandler at 0 range 448..479;
      TStateContext at 0 range 480..511;
      FeedbackHandler at 0 range 512..543;
      Reserved1 at 0 range 544..575;
      Reserved2 at 0 range 576..639;
      State at 0 range 640..1151;
   end record;
   for PPM_WMI_PERF_STATES'Size use 1152;
   for PPM_WMI_PERF_STATES'Alignment use 8;
   type PPPM_WMI_PERF_STATES is access all PPM_WMI_PERF_STATES;
   type PPM_WMI_PERF_STATES_EX_State_Array is array(1..1) of PPM_WMI_PERF_STATE; -- Auto Generated Dependancy
   type PPM_WMI_PERF_STATES_EX is record
      Count : DWORD;
      MaxFrequency : DWORD;
      CurrentState : DWORD;
      MaxPerfState : DWORD;
      MinPerfState : DWORD;
      LowestPerfState : DWORD;
      ThermalConstraint : DWORD;
      BusyAdjThreshold : BYTE;
      PolicyType : BYTE;
      type_x : BYTE;
      Reserved : BYTE;
      TimerInterval : DWORD;
      TargetProcessors : PVOID;
      PStateHandler : DWORD;
      PStateContext : DWORD;
      TStateHandler : DWORD;
      TStateContext : DWORD;
      FeedbackHandler : DWORD;
      Reserved1 : DWORD;
      Reserved2 : DWORD64;
      State : PPM_WMI_PERF_STATES_EX_State_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_WMI_PERF_STATES_EX);
   for PPM_WMI_PERF_STATES_EX use record
      Count at 0 range 0..31;
      MaxFrequency at 0 range 32..63;
      CurrentState at 0 range 64..95;
      MaxPerfState at 0 range 96..127;
      MinPerfState at 0 range 128..159;
      LowestPerfState at 0 range 160..191;
      ThermalConstraint at 0 range 192..223;
      BusyAdjThreshold at 0 range 224..231;
      PolicyType at 0 range 232..239;
      type_x at 0 range 240..247;
      Reserved at 0 range 248..255;
      TimerInterval at 0 range 256..287;
      TargetProcessors at 0 range 320..383;
      PStateHandler at 0 range 384..415;
      PStateContext at 0 range 416..447;
      TStateHandler at 0 range 448..479;
      TStateContext at 0 range 480..511;
      FeedbackHandler at 0 range 512..543;
      Reserved1 at 0 range 544..575;
      Reserved2 at 0 range 576..639;
      State at 0 range 640..1151;
   end record;
   for PPM_WMI_PERF_STATES_EX'Size use 1152;
   for PPM_WMI_PERF_STATES_EX'Alignment use 8;
   type PPPM_WMI_PERF_STATES_EX is access all PPM_WMI_PERF_STATES_EX;
   type PPM_IDLE_STATE_ACCOUNTING_IdleTimeBuckets_Array is array(1..6) of DWORD; -- Auto Generated Dependancy
   type PPM_IDLE_STATE_ACCOUNTING is record
      IdleTransitions : DWORD;
      FailedTransitions : DWORD;
      InvalidBucketIndex : DWORD;
      TotalTime : DWORD64;
      IdleTimeBuckets : PPM_IDLE_STATE_ACCOUNTING_IdleTimeBuckets_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_IDLE_STATE_ACCOUNTING);
   for PPM_IDLE_STATE_ACCOUNTING use record
      IdleTransitions at 0 range 0..31;
      FailedTransitions at 0 range 32..63;
      InvalidBucketIndex at 0 range 64..95;
      TotalTime at 0 range 128..191;
      IdleTimeBuckets at 0 range 192..383;
   end record;
   for PPM_IDLE_STATE_ACCOUNTING'Size use 384;
   for PPM_IDLE_STATE_ACCOUNTING'Alignment use 8;
   type PPPM_IDLE_STATE_ACCOUNTING is access all PPM_IDLE_STATE_ACCOUNTING;
   type PPM_IDLE_ACCOUNTING_State_Array is array(1..1) of PPM_IDLE_STATE_ACCOUNTING; -- Auto Generated Dependancy
   type PPM_IDLE_ACCOUNTING is record
      StateCount : DWORD;
      TotalTransitions : DWORD;
      ResetCount : DWORD;
      StartTime : DWORD64;
      State : PPM_IDLE_ACCOUNTING_State_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_IDLE_ACCOUNTING);
   for PPM_IDLE_ACCOUNTING use record
      StateCount at 0 range 0..31;
      TotalTransitions at 0 range 32..63;
      ResetCount at 0 range 64..95;
      StartTime at 0 range 128..191;
      State at 0 range 192..575;
   end record;
   for PPM_IDLE_ACCOUNTING'Size use 576;
   for PPM_IDLE_ACCOUNTING'Alignment use 8;
   type PPPM_IDLE_ACCOUNTING is access all PPM_IDLE_ACCOUNTING;
   type PPM_IDLE_STATE_BUCKET_EX is record
      TotalTimeUs : DWORD64;
      MinTimeUs : DWORD;
      MaxTimeUs : DWORD;
      Count : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_IDLE_STATE_BUCKET_EX);
   for PPM_IDLE_STATE_BUCKET_EX use record
      TotalTimeUs at 0 range 0..63;
      MinTimeUs at 0 range 64..95;
      MaxTimeUs at 0 range 96..127;
      Count at 0 range 128..159;
   end record;
   for PPM_IDLE_STATE_BUCKET_EX'Size use 192;
   for PPM_IDLE_STATE_BUCKET_EX'Alignment use 8;
   type PPPM_IDLE_STATE_BUCKET_EX is access all PPM_IDLE_STATE_BUCKET_EX;
   type PPM_IDLE_STATE_ACCOUNTING_EX_IdleTimeBuckets_Array is array(1..16) of PPM_IDLE_STATE_BUCKET_EX; -- Auto Generated Dependancy
   type PPM_IDLE_STATE_ACCOUNTING_EX is record
      TotalTime : DWORD64;
      IdleTransitions : DWORD;
      FailedTransitions : DWORD;
      InvalidBucketIndex : DWORD;
      MinTimeUs : DWORD;
      MaxTimeUs : DWORD;
      CancelledTransitions : DWORD;
      IdleTimeBuckets : PPM_IDLE_STATE_ACCOUNTING_EX_IdleTimeBuckets_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_IDLE_STATE_ACCOUNTING_EX);
   for PPM_IDLE_STATE_ACCOUNTING_EX use record
      TotalTime at 0 range 0..63;
      IdleTransitions at 0 range 64..95;
      FailedTransitions at 0 range 96..127;
      InvalidBucketIndex at 0 range 128..159;
      MinTimeUs at 0 range 160..191;
      MaxTimeUs at 0 range 192..223;
      CancelledTransitions at 0 range 224..255;
      IdleTimeBuckets at 0 range 256..3327;
   end record;
   for PPM_IDLE_STATE_ACCOUNTING_EX'Size use 3328;
   for PPM_IDLE_STATE_ACCOUNTING_EX'Alignment use 8;
   type PPPM_IDLE_STATE_ACCOUNTING_EX is access all PPM_IDLE_STATE_ACCOUNTING_EX;
   type PPM_IDLE_ACCOUNTING_EX_State_Array is array(1..1) of PPM_IDLE_STATE_ACCOUNTING_EX; -- Auto Generated Dependancy
   type PPM_IDLE_ACCOUNTING_EX is record
      StateCount : DWORD;
      TotalTransitions : DWORD;
      ResetCount : DWORD;
      AbortCount : DWORD;
      StartTime : DWORD64;
      State : PPM_IDLE_ACCOUNTING_EX_State_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_IDLE_ACCOUNTING_EX);
   for PPM_IDLE_ACCOUNTING_EX use record
      StateCount at 0 range 0..31;
      TotalTransitions at 0 range 32..63;
      ResetCount at 0 range 64..95;
      AbortCount at 0 range 96..127;
      StartTime at 0 range 128..191;
      State at 0 range 192..3519;
   end record;
   for PPM_IDLE_ACCOUNTING_EX'Size use 3520;
   for PPM_IDLE_ACCOUNTING_EX'Alignment use 8;
   type PPPM_IDLE_ACCOUNTING_EX is access all PPM_IDLE_ACCOUNTING_EX;
   type PPM_PERFSTATE_EVENT is record
      State : DWORD;
      Status : DWORD;
      Latency : DWORD;
      Speed : DWORD;
      Processor : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_PERFSTATE_EVENT);
   for PPM_PERFSTATE_EVENT use record
      State at 0 range 0..31;
      Status at 0 range 32..63;
      Latency at 0 range 64..95;
      Speed at 0 range 96..127;
      Processor at 0 range 128..159;
   end record;
   for PPM_PERFSTATE_EVENT'Size use 160;
   for PPM_PERFSTATE_EVENT'Alignment use 4;
   type PPPM_PERFSTATE_EVENT is access all PPM_PERFSTATE_EVENT;
   type PPM_PERFSTATE_DOMAIN_EVENT is record
      State : DWORD;
      Latency : DWORD;
      Speed : DWORD;
      Processors : DWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_PERFSTATE_DOMAIN_EVENT);
   for PPM_PERFSTATE_DOMAIN_EVENT use record
      State at 0 range 0..31;
      Latency at 0 range 32..63;
      Speed at 0 range 64..95;
      Processors at 0 range 128..191;
   end record;
   for PPM_PERFSTATE_DOMAIN_EVENT'Size use 192;
   for PPM_PERFSTATE_DOMAIN_EVENT'Alignment use 8;
   type PPPM_PERFSTATE_DOMAIN_EVENT is access all PPM_PERFSTATE_DOMAIN_EVENT;
   type PPM_IDLESTATE_EVENT is record
      NewState : DWORD;
      OldState : DWORD;
      Processors : DWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_IDLESTATE_EVENT);
   for PPM_IDLESTATE_EVENT use record
      NewState at 0 range 0..31;
      OldState at 0 range 32..63;
      Processors at 0 range 64..127;
   end record;
   for PPM_IDLESTATE_EVENT'Size use 128;
   for PPM_IDLESTATE_EVENT'Alignment use 8;
   type PPPM_IDLESTATE_EVENT is access all PPM_IDLESTATE_EVENT;
   type PPM_THERMALCHANGE_EVENT is record
      ThermalConstraint : DWORD;
      Processors : DWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_THERMALCHANGE_EVENT);
   for PPM_THERMALCHANGE_EVENT use record
      ThermalConstraint at 0 range 0..31;
      Processors at 0 range 64..127;
   end record;
   for PPM_THERMALCHANGE_EVENT'Size use 128;
   for PPM_THERMALCHANGE_EVENT'Alignment use 8;
   type PPPM_THERMALCHANGE_EVENT is access all PPM_THERMALCHANGE_EVENT;
   type PPM_THERMAL_POLICY_EVENT is record
      Mode : BYTE;
      Processors : DWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,PPM_THERMAL_POLICY_EVENT);
   for PPM_THERMAL_POLICY_EVENT use record
      Mode at 0 range 0..7;
      Processors at 0 range 64..127;
   end record;
   for PPM_THERMAL_POLICY_EVENT'Size use 128;
   for PPM_THERMAL_POLICY_EVENT'Alignment use 8;
   type PPPM_THERMAL_POLICY_EVENT is access all PPM_THERMAL_POLICY_EVENT;
   type POWER_ACTION_POLICY is record
      Action : POWER_ACTION;
      Flags : DWORD;
      EventCode : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,POWER_ACTION_POLICY);
   for POWER_ACTION_POLICY use record
      Action at 0 range 0..31;
      Flags at 0 range 32..63;
      EventCode at 0 range 64..95;
   end record;
   for POWER_ACTION_POLICY'Size use 96;
   for POWER_ACTION_POLICY'Alignment use 4;
   type PPOWER_ACTION_POLICY is access all POWER_ACTION_POLICY;
   type SYSTEM_POWER_LEVEL_Spare_Array is array(1..3) of BYTE; -- Auto Generated Dependancy
   type SYSTEM_POWER_LEVEL is record
      Enable : BOOLEAN;
      Spare : SYSTEM_POWER_LEVEL_Spare_Array;
      BatteryLevel : DWORD;
      PowerPolicy : POWER_ACTION_POLICY;
      MinSystemState : SYSTEM_POWER_STATE;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_POWER_LEVEL);
   for SYSTEM_POWER_LEVEL use record
      Enable at 0 range 0..7;
      Spare at 0 range 8..31;
      BatteryLevel at 0 range 32..63;
      PowerPolicy at 0 range 64..159;
      MinSystemState at 0 range 160..191;
   end record;
   for SYSTEM_POWER_LEVEL'Size use 192;
   for SYSTEM_POWER_LEVEL'Alignment use 4;
   type PSYSTEM_POWER_LEVEL is access all SYSTEM_POWER_LEVEL;
   type SYSTEM_POWER_POLICY_x_Spare2_Array is array(1..2) of BYTE; -- Auto Generated Dependancy
   type SYSTEM_POWER_POLICY_x_DischargePolicy_Array is array(1..4) of SYSTEM_POWER_LEVEL; -- Auto Generated Dependancy
   type SYSTEM_POWER_POLICY_x_VideoReserved_Array is array(1..3) of DWORD; -- Auto Generated Dependancy
   type SYSTEM_POWER_POLICY_x is record
      Revision : DWORD;
      PowerButton : POWER_ACTION_POLICY;
      SleepButton : POWER_ACTION_POLICY;
      LidClose : POWER_ACTION_POLICY;
      LidOpenWake : SYSTEM_POWER_STATE;
      Reserved : DWORD;
      Idle : POWER_ACTION_POLICY;
      IdleTimeout : DWORD;
      IdleSensitivity : BYTE;
      DynamicThrottle : BYTE;
      Spare2 : SYSTEM_POWER_POLICY_x_Spare2_Array;
      MinSleep : SYSTEM_POWER_STATE;
      MaxSleep : SYSTEM_POWER_STATE;
      ReducedLatencySleep : SYSTEM_POWER_STATE;
      WinLogonFlags : DWORD;
      Spare3 : DWORD;
      DozeS4Timeout : DWORD;
      BroadcastCapacityResolution : DWORD;
      DischargePolicy : SYSTEM_POWER_POLICY_x_DischargePolicy_Array;
      VideoTimeout : DWORD;
      VideoDimDisplay : BOOLEAN;
      VideoReserved : SYSTEM_POWER_POLICY_x_VideoReserved_Array;
      SpindownTimeout : DWORD;
      OptimizeForPower : BOOLEAN;
      FanThrottleTolerance : BYTE;
      ForcedThrottle : BYTE;
      MinThrottle : BYTE;
      OverThrottled : POWER_ACTION_POLICY;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_POWER_POLICY_x);
   for SYSTEM_POWER_POLICY_x use record
      Revision at 0 range 0..31;
      PowerButton at 0 range 32..127;
      SleepButton at 0 range 128..223;
      LidClose at 0 range 224..319;
      LidOpenWake at 0 range 320..351;
      Reserved at 0 range 352..383;
      Idle at 0 range 384..479;
      IdleTimeout at 0 range 480..511;
      IdleSensitivity at 0 range 512..519;
      DynamicThrottle at 0 range 520..527;
      Spare2 at 0 range 528..543;
      MinSleep at 0 range 544..575;
      MaxSleep at 0 range 576..607;
      ReducedLatencySleep at 0 range 608..639;
      WinLogonFlags at 0 range 640..671;
      Spare3 at 0 range 672..703;
      DozeS4Timeout at 0 range 704..735;
      BroadcastCapacityResolution at 0 range 736..767;
      DischargePolicy at 0 range 768..1535;
      VideoTimeout at 0 range 1536..1567;
      VideoDimDisplay at 0 range 1568..1575;
      VideoReserved at 0 range 1600..1695;
      SpindownTimeout at 0 range 1696..1727;
      OptimizeForPower at 0 range 1728..1735;
      FanThrottleTolerance at 0 range 1736..1743;
      ForcedThrottle at 0 range 1744..1751;
      MinThrottle at 0 range 1752..1759;
      OverThrottled at 0 range 1760..1855;
   end record;
   for SYSTEM_POWER_POLICY_x'Size use 1856;
   for SYSTEM_POWER_POLICY_x'Alignment use 4;
   subtype SYSTEM_POWER_POLICY is SYSTEM_POWER_POLICY_x;
   type PSYSTEM_POWER_POLICY is access all SYSTEM_POWER_POLICY_x;
   type PROCESSOR_IDLESTATE_INFO_Spare_Array is array(1..2) of BYTE; -- Auto Generated Dependancy
   type PROCESSOR_IDLESTATE_INFO is record
      TimeCheck : DWORD;
      DemotePercent : BYTE;
      PromotePercent : BYTE;
      Spare : PROCESSOR_IDLESTATE_INFO_Spare_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESSOR_IDLESTATE_INFO);
   for PROCESSOR_IDLESTATE_INFO use record
      TimeCheck at 0 range 0..31;
      DemotePercent at 0 range 32..39;
      PromotePercent at 0 range 40..47;
      Spare at 0 range 48..63;
   end record;
   for PROCESSOR_IDLESTATE_INFO'Size use 64;
   for PROCESSOR_IDLESTATE_INFO'Alignment use 4;
   type PPROCESSOR_IDLESTATE_INFO is access all PROCESSOR_IDLESTATE_INFO;
   type Anonymous_Record_84 is record
      AllowScaling : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Disabled : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Reserved : Interfaces.C.Extensions.Unsigned_14; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_84);
   for Anonymous_Record_84 use record
      AllowScaling at 0 range 0..0;
      Disabled at 0 range 1..1;
      Reserved at 0 range 2..15;
   end record;
   for Anonymous_Record_84'Size use 16;
   for Anonymous_Record_84'Alignment use 2;
   type Anonymous_Record_83 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            AsWORD : WORD;
         when others => 
            field_1 : Anonymous_Record_84;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_83);
   pragma Unchecked_Union (Anonymous_Record_83);
   for Anonymous_Record_83'Size use 16;
   for Anonymous_Record_83'Alignment use 2;
   type PROCESSOR_IDLESTATE_POLICY_Policy_Array is array(1..3) of PROCESSOR_IDLESTATE_INFO; -- Auto Generated Dependancy
   type PROCESSOR_IDLESTATE_POLICY is record
      Revision : WORD;
      field_1 : Anonymous_Record_83;
      PolicyCount : DWORD;
      Policy : PROCESSOR_IDLESTATE_POLICY_Policy_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESSOR_IDLESTATE_POLICY);
   for PROCESSOR_IDLESTATE_POLICY use record
      Revision at 0 range 0..15;
      field_1 at 0 range 16..31;
      PolicyCount at 0 range 32..63;
      Policy at 0 range 64..255;
   end record;
   for PROCESSOR_IDLESTATE_POLICY'Size use 256;
   for PROCESSOR_IDLESTATE_POLICY'Alignment use 4;
   type PPROCESSOR_IDLESTATE_POLICY is access all PROCESSOR_IDLESTATE_POLICY;
   type PROCESSOR_POWER_POLICY_INFO_x_Spare_Array is array(1..2) of BYTE; -- Auto Generated Dependancy
   type PROCESSOR_POWER_POLICY_INFO_x is record
      TimeCheck : DWORD;
      DemoteLimit : DWORD;
      PromoteLimit : DWORD;
      DemotePercent : BYTE;
      PromotePercent : BYTE;
      Spare : PROCESSOR_POWER_POLICY_INFO_x_Spare_Array;
      AllowDemotion : Interfaces.C.Extensions.Unsigned_1; -- bit field
      AllowPromotion : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Reserved : Interfaces.C.Extensions.Unsigned_30; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESSOR_POWER_POLICY_INFO_x);
   for PROCESSOR_POWER_POLICY_INFO_x use record
      TimeCheck at 0 range 0..31;
      DemoteLimit at 0 range 32..63;
      PromoteLimit at 0 range 64..95;
      DemotePercent at 0 range 96..103;
      PromotePercent at 0 range 104..111;
      Spare at 0 range 112..127;
      AllowDemotion at 0 range 128..128;
      AllowPromotion at 0 range 129..129;
      Reserved at 0 range 130..159;
   end record;
   for PROCESSOR_POWER_POLICY_INFO_x'Size use 160;
   for PROCESSOR_POWER_POLICY_INFO_x'Alignment use 4;
   subtype PROCESSOR_POWER_POLICY_INFO is PROCESSOR_POWER_POLICY_INFO_x;
   type PPROCESSOR_POWER_POLICY_INFO is access all PROCESSOR_POWER_POLICY_INFO_x;
   type PROCESSOR_POWER_POLICY_x_Spare_Array is array(1..3) of BYTE; -- Auto Generated Dependancy
   type PROCESSOR_POWER_POLICY_x_Policy_Array is array(1..3) of PROCESSOR_POWER_POLICY_INFO; -- Auto Generated Dependancy
   type PROCESSOR_POWER_POLICY_x is record
      Revision : DWORD;
      DynamicThrottle : BYTE;
      Spare : PROCESSOR_POWER_POLICY_x_Spare_Array;
      DisableCStates : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Reserved : Interfaces.C.Extensions.Unsigned_31; -- bit field
      PolicyCount : DWORD;
      Policy : PROCESSOR_POWER_POLICY_x_Policy_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESSOR_POWER_POLICY_x);
   for PROCESSOR_POWER_POLICY_x use record
      Revision at 0 range 0..31;
      DynamicThrottle at 0 range 32..39;
      Spare at 0 range 40..63;
      DisableCStates at 0 range 64..64;
      Reserved at 0 range 65..95;
      PolicyCount at 0 range 96..127;
      Policy at 0 range 128..607;
   end record;
   for PROCESSOR_POWER_POLICY_x'Size use 608;
   for PROCESSOR_POWER_POLICY_x'Alignment use 4;
   subtype PROCESSOR_POWER_POLICY is PROCESSOR_POWER_POLICY_x;
   type PPROCESSOR_POWER_POLICY is access all PROCESSOR_POWER_POLICY_x;
   type Anonymous_Record_87 is record
      NoDomainAccounting : Interfaces.C.Extensions.Unsigned_1; -- bit field
      IncreasePolicy : Interfaces.C.Extensions.Unsigned_2; -- bit field
      DecreasePolicy : Interfaces.C.Extensions.Unsigned_2; -- bit field
      Reserved : Interfaces.C.Extensions.Unsigned_3; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_87);
   for Anonymous_Record_87 use record
      NoDomainAccounting at 0 range 0..0;
      IncreasePolicy at 0 range 1..2;
      DecreasePolicy at 0 range 3..4;
      Reserved at 0 range 5..7;
   end record;
   for Anonymous_Record_87'Size use 8;
   for Anonymous_Record_87'Alignment use 1;
   type Anonymous_Record_86 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            AsBYTE : BYTE;
         when others => 
            field_1 : Anonymous_Record_87;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_86);
   pragma Unchecked_Union (Anonymous_Record_86);
   for Anonymous_Record_86'Size use 8;
   for Anonymous_Record_86'Alignment use 1;
   type Anonymous_Record_85 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Spare : BYTE;
         when others => 
            field_1 : Anonymous_Record_86;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_85);
   pragma Unchecked_Union (Anonymous_Record_85);
   for Anonymous_Record_85'Size use 8;
   for Anonymous_Record_85'Alignment use 1;
   type PROCESSOR_PERFSTATE_POLICY is record
      Revision : DWORD;
      MaxThrottle : BYTE;
      MinThrottle : BYTE;
      BusyAdjThreshold : BYTE;
      field_1 : Anonymous_Record_85;
      TimeCheck : DWORD;
      IncreaseTime : DWORD;
      DecreaseTime : DWORD;
      IncreasePercent : DWORD;
      DecreasePercent : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESSOR_PERFSTATE_POLICY);
   for PROCESSOR_PERFSTATE_POLICY use record
      Revision at 0 range 0..31;
      MaxThrottle at 0 range 32..39;
      MinThrottle at 0 range 40..47;
      BusyAdjThreshold at 0 range 48..55;
      field_1 at 0 range 56..63;
      TimeCheck at 0 range 64..95;
      IncreaseTime at 0 range 96..127;
      DecreaseTime at 0 range 128..159;
      IncreasePercent at 0 range 160..191;
      DecreasePercent at 0 range 192..223;
   end record;
   for PROCESSOR_PERFSTATE_POLICY'Size use 224;
   for PROCESSOR_PERFSTATE_POLICY'Alignment use 4;
   type PPROCESSOR_PERFSTATE_POLICY is access all PROCESSOR_PERFSTATE_POLICY;
   type ADMINISTRATOR_POWER_POLICY_x is record
      MinSleep : SYSTEM_POWER_STATE;
      MaxSleep : SYSTEM_POWER_STATE;
      MinVideoTimeout : DWORD;
      MaxVideoTimeout : DWORD;
      MinSpindownTimeout : DWORD;
      MaxSpindownTimeout : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ADMINISTRATOR_POWER_POLICY_x);
   for ADMINISTRATOR_POWER_POLICY_x use record
      MinSleep at 0 range 0..31;
      MaxSleep at 0 range 32..63;
      MinVideoTimeout at 0 range 64..95;
      MaxVideoTimeout at 0 range 96..127;
      MinSpindownTimeout at 0 range 128..159;
      MaxSpindownTimeout at 0 range 160..191;
   end record;
   for ADMINISTRATOR_POWER_POLICY_x'Size use 192;
   for ADMINISTRATOR_POWER_POLICY_x'Alignment use 4;
   subtype ADMINISTRATOR_POWER_POLICY is ADMINISTRATOR_POWER_POLICY_x;
   type PADMINISTRATOR_POWER_POLICY is access all ADMINISTRATOR_POWER_POLICY_x;
   type HIBERFILE_BUCKET_SIZE_x is (
      HiberFileBucket1GB,
      HiberFileBucket2GB,
      HiberFileBucket4GB,
      HiberFileBucket8GB,
      HiberFileBucket16GB,
      HiberFileBucket32GB,
      HiberFileBucketUnlimited,
      HiberFileBucketMax
   );
   for HIBERFILE_BUCKET_SIZE_x use (
      HiberFileBucket1GB => 0,
      HiberFileBucket2GB => 1,
      HiberFileBucket4GB => 2,
      HiberFileBucket8GB => 3,
      HiberFileBucket16GB => 4,
      HiberFileBucket32GB => 5,
      HiberFileBucketUnlimited => 6,
      HiberFileBucketMax => 7
   );
   for HIBERFILE_BUCKET_SIZE_x'Size use 32;
   subtype HIBERFILE_BUCKET_SIZE is HIBERFILE_BUCKET_SIZE_x;
   type PHIBERFILE_BUCKET_SIZE is access all HIBERFILE_BUCKET_SIZE_x;
   type HIBERFILE_BUCKET_x_PhysicalMemoryPercent_Array is array(1..3) of DWORD; -- Auto Generated Dependancy
   type HIBERFILE_BUCKET_x is record
      MaxPhysicalMemory : DWORD64;
      PhysicalMemoryPercent : HIBERFILE_BUCKET_x_PhysicalMemoryPercent_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,HIBERFILE_BUCKET_x);
   for HIBERFILE_BUCKET_x use record
      MaxPhysicalMemory at 0 range 0..63;
      PhysicalMemoryPercent at 0 range 64..159;
   end record;
   for HIBERFILE_BUCKET_x'Size use 192;
   for HIBERFILE_BUCKET_x'Alignment use 8;
   subtype HIBERFILE_BUCKET is HIBERFILE_BUCKET_x;
   type PHIBERFILE_BUCKET is access all HIBERFILE_BUCKET_x;
   type SYSTEM_POWER_CAPABILITIES_spare3_Array is array(1..6) of BYTE; -- Auto Generated Dependancy
   type SYSTEM_POWER_CAPABILITIES_BatteryScale_Array is array(1..3) of BATTERY_REPORTING_SCALE; -- Auto Generated Dependancy
   type SYSTEM_POWER_CAPABILITIES is record
      PowerButtonPresent : BOOLEAN;
      SleepButtonPresent : BOOLEAN;
      LidPresent : BOOLEAN;
      SystemS1 : BOOLEAN;
      SystemS2 : BOOLEAN;
      SystemS3 : BOOLEAN;
      SystemS4 : BOOLEAN;
      SystemS5 : BOOLEAN;
      HiberFilePresent : BOOLEAN;
      FullWake : BOOLEAN;
      VideoDimPresent : BOOLEAN;
      ApmPresent : BOOLEAN;
      UpsPresent : BOOLEAN;
      ThermalControl : BOOLEAN;
      ProcessorThrottle : BOOLEAN;
      ProcessorMinThrottle : BYTE;
      ProcessorMaxThrottle : BYTE;
      FastSystemS4 : BOOLEAN;
      Hiberboot : BOOLEAN;
      WakeAlarmPresent : BOOLEAN;
      AoAc : BOOLEAN;
      DiskSpinDown : BOOLEAN;
      HiberFileType : BYTE;
      AoAcConnectivitySupported : BOOLEAN;
      spare3 : SYSTEM_POWER_CAPABILITIES_spare3_Array;
      SystemBatteriesPresent : BOOLEAN;
      BatteriesAreShortTerm : BOOLEAN;
      BatteryScale : SYSTEM_POWER_CAPABILITIES_BatteryScale_Array;
      AcOnLineWake : SYSTEM_POWER_STATE;
      SoftLidWake : SYSTEM_POWER_STATE;
      RtcWake : SYSTEM_POWER_STATE;
      MinDeviceWakeState : SYSTEM_POWER_STATE;
      DefaultLowLatencyWake : SYSTEM_POWER_STATE;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_POWER_CAPABILITIES);
   for SYSTEM_POWER_CAPABILITIES use record
      PowerButtonPresent at 0 range 0..7;
      SleepButtonPresent at 0 range 8..15;
      LidPresent at 0 range 16..23;
      SystemS1 at 0 range 24..31;
      SystemS2 at 0 range 32..39;
      SystemS3 at 0 range 40..47;
      SystemS4 at 0 range 48..55;
      SystemS5 at 0 range 56..63;
      HiberFilePresent at 0 range 64..71;
      FullWake at 0 range 72..79;
      VideoDimPresent at 0 range 80..87;
      ApmPresent at 0 range 88..95;
      UpsPresent at 0 range 96..103;
      ThermalControl at 0 range 104..111;
      ProcessorThrottle at 0 range 112..119;
      ProcessorMinThrottle at 0 range 120..127;
      ProcessorMaxThrottle at 0 range 128..135;
      FastSystemS4 at 0 range 136..143;
      Hiberboot at 0 range 144..151;
      WakeAlarmPresent at 0 range 152..159;
      AoAc at 0 range 160..167;
      DiskSpinDown at 0 range 168..175;
      HiberFileType at 0 range 176..183;
      AoAcConnectivitySupported at 0 range 184..191;
      spare3 at 0 range 192..239;
      SystemBatteriesPresent at 0 range 240..247;
      BatteriesAreShortTerm at 0 range 248..255;
      BatteryScale at 0 range 256..447;
      AcOnLineWake at 0 range 448..479;
      SoftLidWake at 0 range 480..511;
      RtcWake at 0 range 512..543;
      MinDeviceWakeState at 0 range 544..575;
      DefaultLowLatencyWake at 0 range 576..607;
   end record;
   for SYSTEM_POWER_CAPABILITIES'Size use 608;
   for SYSTEM_POWER_CAPABILITIES'Alignment use 4;
   type PSYSTEM_POWER_CAPABILITIES is access all SYSTEM_POWER_CAPABILITIES;
   type SYSTEM_BATTERY_STATE_Spare1_Array is array(1..3) of BOOLEAN; -- Auto Generated Dependancy
   type SYSTEM_BATTERY_STATE is record
      AcOnLine : BOOLEAN;
      BatteryPresent : BOOLEAN;
      Charging : BOOLEAN;
      Discharging : BOOLEAN;
      Spare1 : SYSTEM_BATTERY_STATE_Spare1_Array;
      Tag : BYTE;
      MaxCapacity : DWORD;
      RemainingCapacity : DWORD;
      Rate : DWORD;
      EstimatedTime : DWORD;
      DefaultAlert1 : DWORD;
      DefaultAlert2 : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_BATTERY_STATE);
   for SYSTEM_BATTERY_STATE use record
      AcOnLine at 0 range 0..7;
      BatteryPresent at 0 range 8..15;
      Charging at 0 range 16..23;
      Discharging at 0 range 24..31;
      Spare1 at 0 range 32..55;
      Tag at 0 range 56..63;
      MaxCapacity at 0 range 64..95;
      RemainingCapacity at 0 range 96..127;
      Rate at 0 range 128..159;
      EstimatedTime at 0 range 160..191;
      DefaultAlert1 at 0 range 192..223;
      DefaultAlert2 at 0 range 224..255;
   end record;
   for SYSTEM_BATTERY_STATE'Size use 256;
   for SYSTEM_BATTERY_STATE'Alignment use 4;
   type PSYSTEM_BATTERY_STATE is access all SYSTEM_BATTERY_STATE;
   type IMAGE_DOS_HEADER_x_e_res_Array is array(1..4) of WORD; -- Auto Generated Dependancy
   type IMAGE_DOS_HEADER_x_e_res2_Array is array(1..10) of WORD; -- Auto Generated Dependancy
   type IMAGE_DOS_HEADER_x is record
      e_magic : WORD;
      e_cblp : WORD;
      e_cp : WORD;
      e_crlc : WORD;
      e_cparhdr : WORD;
      e_minalloc : WORD;
      e_maxalloc : WORD;
      e_ss : WORD;
      e_sp : WORD;
      e_csum : WORD;
      e_ip : WORD;
      e_cs : WORD;
      e_lfarlc : WORD;
      e_ovno : WORD;
      e_res : IMAGE_DOS_HEADER_x_e_res_Array;
      e_oemid : WORD;
      e_oeminfo : WORD;
      e_res2 : IMAGE_DOS_HEADER_x_e_res2_Array;
      e_lfanew : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_DOS_HEADER_x);
   for IMAGE_DOS_HEADER_x use record
      e_magic at 0 range 0..15;
      e_cblp at 0 range 16..31;
      e_cp at 0 range 32..47;
      e_crlc at 0 range 48..63;
      e_cparhdr at 0 range 64..79;
      e_minalloc at 0 range 80..95;
      e_maxalloc at 0 range 96..111;
      e_ss at 0 range 112..127;
      e_sp at 0 range 128..143;
      e_csum at 0 range 144..159;
      e_ip at 0 range 160..175;
      e_cs at 0 range 176..191;
      e_lfarlc at 0 range 192..207;
      e_ovno at 0 range 208..223;
      e_res at 0 range 224..287;
      e_oemid at 0 range 288..303;
      e_oeminfo at 0 range 304..319;
      e_res2 at 0 range 320..479;
      e_lfanew at 0 range 480..511;
   end record;
   for IMAGE_DOS_HEADER_x'Size use 512;
   for IMAGE_DOS_HEADER_x'Alignment use 2;
   subtype IMAGE_DOS_HEADER is IMAGE_DOS_HEADER_x;
   type PIMAGE_DOS_HEADER is access all IMAGE_DOS_HEADER_x;
   type IMAGE_OS2_HEADER_x is record
      ne_magic : WORD;
      ne_ver : CHAR;
      ne_rev : CHAR;
      ne_enttab : WORD;
      ne_cbenttab : WORD;
      ne_crc : LONG;
      ne_flags : WORD;
      ne_autodata : WORD;
      ne_heap : WORD;
      ne_stack : WORD;
      ne_csip : LONG;
      ne_sssp : LONG;
      ne_cseg : WORD;
      ne_cmod : WORD;
      ne_cbnrestab : WORD;
      ne_segtab : WORD;
      ne_rsrctab : WORD;
      ne_restab : WORD;
      ne_modtab : WORD;
      ne_imptab : WORD;
      ne_nrestab : LONG;
      ne_cmovent : WORD;
      ne_align : WORD;
      ne_cres : WORD;
      ne_exetyp : BYTE;
      ne_flagsothers : BYTE;
      ne_pretthunks : WORD;
      ne_psegrefbytes : WORD;
      ne_swaparea : WORD;
      ne_expver : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_OS2_HEADER_x);
   for IMAGE_OS2_HEADER_x use record
      ne_magic at 0 range 0..15;
      ne_ver at 0 range 16..23;
      ne_rev at 0 range 24..31;
      ne_enttab at 0 range 32..47;
      ne_cbenttab at 0 range 48..63;
      ne_crc at 0 range 64..95;
      ne_flags at 0 range 96..111;
      ne_autodata at 0 range 112..127;
      ne_heap at 0 range 128..143;
      ne_stack at 0 range 144..159;
      ne_csip at 0 range 160..191;
      ne_sssp at 0 range 192..223;
      ne_cseg at 0 range 224..239;
      ne_cmod at 0 range 240..255;
      ne_cbnrestab at 0 range 256..271;
      ne_segtab at 0 range 272..287;
      ne_rsrctab at 0 range 288..303;
      ne_restab at 0 range 304..319;
      ne_modtab at 0 range 320..335;
      ne_imptab at 0 range 336..351;
      ne_nrestab at 0 range 352..383;
      ne_cmovent at 0 range 384..399;
      ne_align at 0 range 400..415;
      ne_cres at 0 range 416..431;
      ne_exetyp at 0 range 432..439;
      ne_flagsothers at 0 range 440..447;
      ne_pretthunks at 0 range 448..463;
      ne_psegrefbytes at 0 range 464..479;
      ne_swaparea at 0 range 480..495;
      ne_expver at 0 range 496..511;
   end record;
   for IMAGE_OS2_HEADER_x'Size use 512;
   for IMAGE_OS2_HEADER_x'Alignment use 2;
   subtype IMAGE_OS2_HEADER is IMAGE_OS2_HEADER_x;
   type PIMAGE_OS2_HEADER is access all IMAGE_OS2_HEADER_x;
   type IMAGE_VXD_HEADER_x_e32_res3_Array is array(1..12) of BYTE; -- Auto Generated Dependancy
   type IMAGE_VXD_HEADER_x is record
      e32_magic : WORD;
      e32_border : BYTE;
      e32_worder : BYTE;
      e32_level : DWORD;
      e32_cpu : WORD;
      e32_os : WORD;
      e32_ver : DWORD;
      e32_mflags : DWORD;
      e32_mpages : DWORD;
      e32_startobj : DWORD;
      e32_eip : DWORD;
      e32_stackobj : DWORD;
      e32_esp : DWORD;
      e32_pagesize : DWORD;
      e32_lastpagesize : DWORD;
      e32_fixupsize : DWORD;
      e32_fixupsum : DWORD;
      e32_ldrsize : DWORD;
      e32_ldrsum : DWORD;
      e32_objtab : DWORD;
      e32_objcnt : DWORD;
      e32_objmap : DWORD;
      e32_itermap : DWORD;
      e32_rsrctab : DWORD;
      e32_rsrccnt : DWORD;
      e32_restab : DWORD;
      e32_enttab : DWORD;
      e32_dirtab : DWORD;
      e32_dircnt : DWORD;
      e32_fpagetab : DWORD;
      e32_frectab : DWORD;
      e32_impmod : DWORD;
      e32_impmodcnt : DWORD;
      e32_impproc : DWORD;
      e32_pagesum : DWORD;
      e32_datapage : DWORD;
      e32_preload : DWORD;
      e32_nrestab : DWORD;
      e32_cbnrestab : DWORD;
      e32_nressum : DWORD;
      e32_autodata : DWORD;
      e32_debuginfo : DWORD;
      e32_debuglen : DWORD;
      e32_instpreload : DWORD;
      e32_instdemand : DWORD;
      e32_heapsize : DWORD;
      e32_res3 : IMAGE_VXD_HEADER_x_e32_res3_Array;
      e32_winresoff : DWORD;
      e32_winreslen : DWORD;
      e32_devid : WORD;
      e32_ddkver : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_VXD_HEADER_x);
   for IMAGE_VXD_HEADER_x use record
      e32_magic at 0 range 0..15;
      e32_border at 0 range 16..23;
      e32_worder at 0 range 24..31;
      e32_level at 0 range 32..63;
      e32_cpu at 0 range 64..79;
      e32_os at 0 range 80..95;
      e32_ver at 0 range 96..127;
      e32_mflags at 0 range 128..159;
      e32_mpages at 0 range 160..191;
      e32_startobj at 0 range 192..223;
      e32_eip at 0 range 224..255;
      e32_stackobj at 0 range 256..287;
      e32_esp at 0 range 288..319;
      e32_pagesize at 0 range 320..351;
      e32_lastpagesize at 0 range 352..383;
      e32_fixupsize at 0 range 384..415;
      e32_fixupsum at 0 range 416..447;
      e32_ldrsize at 0 range 448..479;
      e32_ldrsum at 0 range 480..511;
      e32_objtab at 0 range 512..543;
      e32_objcnt at 0 range 544..575;
      e32_objmap at 0 range 576..607;
      e32_itermap at 0 range 608..639;
      e32_rsrctab at 0 range 640..671;
      e32_rsrccnt at 0 range 672..703;
      e32_restab at 0 range 704..735;
      e32_enttab at 0 range 736..767;
      e32_dirtab at 0 range 768..799;
      e32_dircnt at 0 range 800..831;
      e32_fpagetab at 0 range 832..863;
      e32_frectab at 0 range 864..895;
      e32_impmod at 0 range 896..927;
      e32_impmodcnt at 0 range 928..959;
      e32_impproc at 0 range 960..991;
      e32_pagesum at 0 range 992..1023;
      e32_datapage at 0 range 1024..1055;
      e32_preload at 0 range 1056..1087;
      e32_nrestab at 0 range 1088..1119;
      e32_cbnrestab at 0 range 1120..1151;
      e32_nressum at 0 range 1152..1183;
      e32_autodata at 0 range 1184..1215;
      e32_debuginfo at 0 range 1216..1247;
      e32_debuglen at 0 range 1248..1279;
      e32_instpreload at 0 range 1280..1311;
      e32_instdemand at 0 range 1312..1343;
      e32_heapsize at 0 range 1344..1375;
      e32_res3 at 0 range 1376..1471;
      e32_winresoff at 0 range 1472..1503;
      e32_winreslen at 0 range 1504..1535;
      e32_devid at 0 range 1536..1551;
      e32_ddkver at 0 range 1552..1567;
   end record;
   for IMAGE_VXD_HEADER_x'Size use 1568;
   for IMAGE_VXD_HEADER_x'Alignment use 2;
   subtype IMAGE_VXD_HEADER is IMAGE_VXD_HEADER_x;
   type PIMAGE_VXD_HEADER is access all IMAGE_VXD_HEADER_x;
   type IMAGE_FILE_HEADER_x is record
      Machine : WORD;
      NumberOfSections : WORD;
      TimeDateStamp : DWORD;
      PointerToSymbolTable : DWORD;
      NumberOfSymbols : DWORD;
      SizeOfOptionalHeader : WORD;
      Characteristics : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_FILE_HEADER_x);
   for IMAGE_FILE_HEADER_x use record
      Machine at 0 range 0..15;
      NumberOfSections at 0 range 16..31;
      TimeDateStamp at 0 range 32..63;
      PointerToSymbolTable at 0 range 64..95;
      NumberOfSymbols at 0 range 96..127;
      SizeOfOptionalHeader at 0 range 128..143;
      Characteristics at 0 range 144..159;
   end record;
   for IMAGE_FILE_HEADER_x'Size use 160;
   for IMAGE_FILE_HEADER_x'Alignment use 4;
   subtype IMAGE_FILE_HEADER is IMAGE_FILE_HEADER_x;
   type PIMAGE_FILE_HEADER is access all IMAGE_FILE_HEADER_x;
   type IMAGE_DATA_DIRECTORY_x is record
      VirtualAddress : DWORD;
      Size : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_DATA_DIRECTORY_x);
   for IMAGE_DATA_DIRECTORY_x use record
      VirtualAddress at 0 range 0..31;
      Size at 0 range 32..63;
   end record;
   for IMAGE_DATA_DIRECTORY_x'Size use 64;
   for IMAGE_DATA_DIRECTORY_x'Alignment use 4;
   subtype IMAGE_DATA_DIRECTORY is IMAGE_DATA_DIRECTORY_x;
   type PIMAGE_DATA_DIRECTORY is access all IMAGE_DATA_DIRECTORY_x;
   type IMAGE_OPTIONAL_HEADER_x_DataDirectory_Array is array(1..16) of IMAGE_DATA_DIRECTORY; -- Auto Generated Dependancy
   type IMAGE_OPTIONAL_HEADER_x is record
      Magic : WORD;
      MajorLinkerVersion : BYTE;
      MinorLinkerVersion : BYTE;
      SizeOfCode : DWORD;
      SizeOfInitializedData : DWORD;
      SizeOfUninitializedData : DWORD;
      AddressOfEntryPoint : DWORD;
      BaseOfCode : DWORD;
      BaseOfData : DWORD;
      ImageBase : DWORD;
      SectionAlignment : DWORD;
      FileAlignment : DWORD;
      MajorOperatingSystemVersion : WORD;
      MinorOperatingSystemVersion : WORD;
      MajorImageVersion : WORD;
      MinorImageVersion : WORD;
      MajorSubsystemVersion : WORD;
      MinorSubsystemVersion : WORD;
      Win32VersionValue : DWORD;
      SizeOfImage : DWORD;
      SizeOfHeaders : DWORD;
      CheckSum : DWORD;
      Subsystem : WORD;
      DllCharacteristics : WORD;
      SizeOfStackReserve : DWORD;
      SizeOfStackCommit : DWORD;
      SizeOfHeapReserve : DWORD;
      SizeOfHeapCommit : DWORD;
      LoaderFlags : DWORD;
      NumberOfRvaAndSizes : DWORD;
      DataDirectory : IMAGE_OPTIONAL_HEADER_x_DataDirectory_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_OPTIONAL_HEADER_x);
   for IMAGE_OPTIONAL_HEADER_x use record
      Magic at 0 range 0..15;
      MajorLinkerVersion at 0 range 16..23;
      MinorLinkerVersion at 0 range 24..31;
      SizeOfCode at 0 range 32..63;
      SizeOfInitializedData at 0 range 64..95;
      SizeOfUninitializedData at 0 range 96..127;
      AddressOfEntryPoint at 0 range 128..159;
      BaseOfCode at 0 range 160..191;
      BaseOfData at 0 range 192..223;
      ImageBase at 0 range 224..255;
      SectionAlignment at 0 range 256..287;
      FileAlignment at 0 range 288..319;
      MajorOperatingSystemVersion at 0 range 320..335;
      MinorOperatingSystemVersion at 0 range 336..351;
      MajorImageVersion at 0 range 352..367;
      MinorImageVersion at 0 range 368..383;
      MajorSubsystemVersion at 0 range 384..399;
      MinorSubsystemVersion at 0 range 400..415;
      Win32VersionValue at 0 range 416..447;
      SizeOfImage at 0 range 448..479;
      SizeOfHeaders at 0 range 480..511;
      CheckSum at 0 range 512..543;
      Subsystem at 0 range 544..559;
      DllCharacteristics at 0 range 560..575;
      SizeOfStackReserve at 0 range 576..607;
      SizeOfStackCommit at 0 range 608..639;
      SizeOfHeapReserve at 0 range 640..671;
      SizeOfHeapCommit at 0 range 672..703;
      LoaderFlags at 0 range 704..735;
      NumberOfRvaAndSizes at 0 range 736..767;
      DataDirectory at 0 range 768..1791;
   end record;
   for IMAGE_OPTIONAL_HEADER_x'Size use 1792;
   for IMAGE_OPTIONAL_HEADER_x'Alignment use 4;
   subtype IMAGE_OPTIONAL_HEADER32 is IMAGE_OPTIONAL_HEADER_x;
   type PIMAGE_OPTIONAL_HEADER32 is access all IMAGE_OPTIONAL_HEADER_x;
   type IMAGE_ROM_OPTIONAL_HEADER_x_CprMask_Array is array(1..4) of DWORD; -- Auto Generated Dependancy
   type IMAGE_ROM_OPTIONAL_HEADER_x is record
      Magic : WORD;
      MajorLinkerVersion : BYTE;
      MinorLinkerVersion : BYTE;
      SizeOfCode : DWORD;
      SizeOfInitializedData : DWORD;
      SizeOfUninitializedData : DWORD;
      AddressOfEntryPoint : DWORD;
      BaseOfCode : DWORD;
      BaseOfData : DWORD;
      BaseOfBss : DWORD;
      GprMask : DWORD;
      CprMask : IMAGE_ROM_OPTIONAL_HEADER_x_CprMask_Array;
      GpValue : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_ROM_OPTIONAL_HEADER_x);
   for IMAGE_ROM_OPTIONAL_HEADER_x use record
      Magic at 0 range 0..15;
      MajorLinkerVersion at 0 range 16..23;
      MinorLinkerVersion at 0 range 24..31;
      SizeOfCode at 0 range 32..63;
      SizeOfInitializedData at 0 range 64..95;
      SizeOfUninitializedData at 0 range 96..127;
      AddressOfEntryPoint at 0 range 128..159;
      BaseOfCode at 0 range 160..191;
      BaseOfData at 0 range 192..223;
      BaseOfBss at 0 range 224..255;
      GprMask at 0 range 256..287;
      CprMask at 0 range 288..415;
      GpValue at 0 range 416..447;
   end record;
   for IMAGE_ROM_OPTIONAL_HEADER_x'Size use 448;
   for IMAGE_ROM_OPTIONAL_HEADER_x'Alignment use 4;
   subtype IMAGE_ROM_OPTIONAL_HEADER is IMAGE_ROM_OPTIONAL_HEADER_x;
   type PIMAGE_ROM_OPTIONAL_HEADER is access all IMAGE_ROM_OPTIONAL_HEADER_x;
   type IMAGE_OPTIONAL_HEADER64_x_DataDirectory_Array is array(1..16) of IMAGE_DATA_DIRECTORY; -- Auto Generated Dependancy
   type IMAGE_OPTIONAL_HEADER64_x is record
      Magic : WORD;
      MajorLinkerVersion : BYTE;
      MinorLinkerVersion : BYTE;
      SizeOfCode : DWORD;
      SizeOfInitializedData : DWORD;
      SizeOfUninitializedData : DWORD;
      AddressOfEntryPoint : DWORD;
      BaseOfCode : DWORD;
      ImageBase : ULONGLONG;
      SectionAlignment : DWORD;
      FileAlignment : DWORD;
      MajorOperatingSystemVersion : WORD;
      MinorOperatingSystemVersion : WORD;
      MajorImageVersion : WORD;
      MinorImageVersion : WORD;
      MajorSubsystemVersion : WORD;
      MinorSubsystemVersion : WORD;
      Win32VersionValue : DWORD;
      SizeOfImage : DWORD;
      SizeOfHeaders : DWORD;
      CheckSum : DWORD;
      Subsystem : WORD;
      DllCharacteristics : WORD;
      SizeOfStackReserve : ULONGLONG;
      SizeOfStackCommit : ULONGLONG;
      SizeOfHeapReserve : ULONGLONG;
      SizeOfHeapCommit : ULONGLONG;
      LoaderFlags : DWORD;
      NumberOfRvaAndSizes : DWORD;
      DataDirectory : IMAGE_OPTIONAL_HEADER64_x_DataDirectory_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_OPTIONAL_HEADER64_x);
   for IMAGE_OPTIONAL_HEADER64_x use record
      Magic at 0 range 0..15;
      MajorLinkerVersion at 0 range 16..23;
      MinorLinkerVersion at 0 range 24..31;
      SizeOfCode at 0 range 32..63;
      SizeOfInitializedData at 0 range 64..95;
      SizeOfUninitializedData at 0 range 96..127;
      AddressOfEntryPoint at 0 range 128..159;
      BaseOfCode at 0 range 160..191;
      ImageBase at 0 range 192..255;
      SectionAlignment at 0 range 256..287;
      FileAlignment at 0 range 288..319;
      MajorOperatingSystemVersion at 0 range 320..335;
      MinorOperatingSystemVersion at 0 range 336..351;
      MajorImageVersion at 0 range 352..367;
      MinorImageVersion at 0 range 368..383;
      MajorSubsystemVersion at 0 range 384..399;
      MinorSubsystemVersion at 0 range 400..415;
      Win32VersionValue at 0 range 416..447;
      SizeOfImage at 0 range 448..479;
      SizeOfHeaders at 0 range 480..511;
      CheckSum at 0 range 512..543;
      Subsystem at 0 range 544..559;
      DllCharacteristics at 0 range 560..575;
      SizeOfStackReserve at 0 range 576..639;
      SizeOfStackCommit at 0 range 640..703;
      SizeOfHeapReserve at 0 range 704..767;
      SizeOfHeapCommit at 0 range 768..831;
      LoaderFlags at 0 range 832..863;
      NumberOfRvaAndSizes at 0 range 864..895;
      DataDirectory at 0 range 896..1919;
   end record;
   for IMAGE_OPTIONAL_HEADER64_x'Size use 1920;
   for IMAGE_OPTIONAL_HEADER64_x'Alignment use 4;
   subtype IMAGE_OPTIONAL_HEADER64 is IMAGE_OPTIONAL_HEADER64_x;
   type PIMAGE_OPTIONAL_HEADER64 is access all IMAGE_OPTIONAL_HEADER64_x;
   subtype IMAGE_OPTIONAL_HEADER is IMAGE_OPTIONAL_HEADER64;
   subtype PIMAGE_OPTIONAL_HEADER is PIMAGE_OPTIONAL_HEADER64;
   type IMAGE_NT_HEADERS64_x is record
      Signature : DWORD;
      FileHeader : IMAGE_FILE_HEADER;
      OptionalHeader : IMAGE_OPTIONAL_HEADER64;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_NT_HEADERS64_x);
   for IMAGE_NT_HEADERS64_x use record
      Signature at 0 range 0..31;
      FileHeader at 0 range 32..191;
      OptionalHeader at 0 range 192..2111;
   end record;
   for IMAGE_NT_HEADERS64_x'Size use 2112;
   for IMAGE_NT_HEADERS64_x'Alignment use 4;
   subtype IMAGE_NT_HEADERS64 is IMAGE_NT_HEADERS64_x;
   type PIMAGE_NT_HEADERS64 is access all IMAGE_NT_HEADERS64_x;
   type IMAGE_NT_HEADERS_x is record
      Signature : DWORD;
      FileHeader : IMAGE_FILE_HEADER;
      OptionalHeader : IMAGE_OPTIONAL_HEADER32;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_NT_HEADERS_x);
   for IMAGE_NT_HEADERS_x use record
      Signature at 0 range 0..31;
      FileHeader at 0 range 32..191;
      OptionalHeader at 0 range 192..1983;
   end record;
   for IMAGE_NT_HEADERS_x'Size use 1984;
   for IMAGE_NT_HEADERS_x'Alignment use 4;
   subtype IMAGE_NT_HEADERS32 is IMAGE_NT_HEADERS_x;
   type PIMAGE_NT_HEADERS32 is access all IMAGE_NT_HEADERS_x;
   type IMAGE_ROM_HEADERS_x is record
      FileHeader : IMAGE_FILE_HEADER;
      OptionalHeader : IMAGE_ROM_OPTIONAL_HEADER;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_ROM_HEADERS_x);
   for IMAGE_ROM_HEADERS_x use record
      FileHeader at 0 range 0..159;
      OptionalHeader at 0 range 160..607;
   end record;
   for IMAGE_ROM_HEADERS_x'Size use 608;
   for IMAGE_ROM_HEADERS_x'Alignment use 4;
   subtype IMAGE_ROM_HEADERS is IMAGE_ROM_HEADERS_x;
   type PIMAGE_ROM_HEADERS is access all IMAGE_ROM_HEADERS_x;
   subtype IMAGE_NT_HEADERS is IMAGE_NT_HEADERS64;
   subtype PIMAGE_NT_HEADERS is PIMAGE_NT_HEADERS64;
   type ANON_OBJECT_HEADER is record
      Sig1 : WORD;
      Sig2 : WORD;
      Version : WORD;
      Machine : WORD;
      TimeDateStamp : DWORD;
      ClassID : CLSID;
      SizeOfData : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ANON_OBJECT_HEADER);
   for ANON_OBJECT_HEADER use record
      Sig1 at 0 range 0..15;
      Sig2 at 0 range 16..31;
      Version at 0 range 32..47;
      Machine at 0 range 48..63;
      TimeDateStamp at 0 range 64..95;
      ClassID at 0 range 96..223;
      SizeOfData at 0 range 224..255;
   end record;
   for ANON_OBJECT_HEADER'Size use 256;
   for ANON_OBJECT_HEADER'Alignment use 4;
   type ANON_OBJECT_HEADER_V2 is record
      Sig1 : WORD;
      Sig2 : WORD;
      Version : WORD;
      Machine : WORD;
      TimeDateStamp : DWORD;
      ClassID : CLSID;
      SizeOfData : DWORD;
      Flags : DWORD;
      MetaDataSize : DWORD;
      MetaDataOffset : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ANON_OBJECT_HEADER_V2);
   for ANON_OBJECT_HEADER_V2 use record
      Sig1 at 0 range 0..15;
      Sig2 at 0 range 16..31;
      Version at 0 range 32..47;
      Machine at 0 range 48..63;
      TimeDateStamp at 0 range 64..95;
      ClassID at 0 range 96..223;
      SizeOfData at 0 range 224..255;
      Flags at 0 range 256..287;
      MetaDataSize at 0 range 288..319;
      MetaDataOffset at 0 range 320..351;
   end record;
   for ANON_OBJECT_HEADER_V2'Size use 352;
   for ANON_OBJECT_HEADER_V2'Alignment use 4;
   type ANON_OBJECT_HEADER_BIGOBJ is record
      Sig1 : WORD;
      Sig2 : WORD;
      Version : WORD;
      Machine : WORD;
      TimeDateStamp : DWORD;
      ClassID : CLSID;
      SizeOfData : DWORD;
      Flags : DWORD;
      MetaDataSize : DWORD;
      MetaDataOffset : DWORD;
      NumberOfSections : DWORD;
      PointerToSymbolTable : DWORD;
      NumberOfSymbols : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ANON_OBJECT_HEADER_BIGOBJ);
   for ANON_OBJECT_HEADER_BIGOBJ use record
      Sig1 at 0 range 0..15;
      Sig2 at 0 range 16..31;
      Version at 0 range 32..47;
      Machine at 0 range 48..63;
      TimeDateStamp at 0 range 64..95;
      ClassID at 0 range 96..223;
      SizeOfData at 0 range 224..255;
      Flags at 0 range 256..287;
      MetaDataSize at 0 range 288..319;
      MetaDataOffset at 0 range 320..351;
      NumberOfSections at 0 range 352..383;
      PointerToSymbolTable at 0 range 384..415;
      NumberOfSymbols at 0 range 416..447;
   end record;
   for ANON_OBJECT_HEADER_BIGOBJ'Size use 448;
   for ANON_OBJECT_HEADER_BIGOBJ'Alignment use 4;
   type Anonymous_Record_88 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            PhysicalAddress : DWORD;
         when others => 
            VirtualSize : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_88);
   pragma Unchecked_Union (Anonymous_Record_88);
   for Anonymous_Record_88'Size use 32;
   for Anonymous_Record_88'Alignment use 4;
   type IMAGE_SECTION_HEADER_x_Name_Array is array(1..8) of BYTE; -- Auto Generated Dependancy
   type IMAGE_SECTION_HEADER_x is record
      Name : IMAGE_SECTION_HEADER_x_Name_Array;
      field_1 : Anonymous_Record_88;
      VirtualAddress : DWORD;
      SizeOfRawData : DWORD;
      PointerToRawData : DWORD;
      PointerToRelocations : DWORD;
      PointerToLinenumbers : DWORD;
      NumberOfRelocations : WORD;
      NumberOfLinenumbers : WORD;
      Characteristics : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_SECTION_HEADER_x);
   for IMAGE_SECTION_HEADER_x use record
      Name at 0 range 0..63;
      field_1 at 0 range 64..95;
      VirtualAddress at 0 range 96..127;
      SizeOfRawData at 0 range 128..159;
      PointerToRawData at 0 range 160..191;
      PointerToRelocations at 0 range 192..223;
      PointerToLinenumbers at 0 range 224..255;
      NumberOfRelocations at 0 range 256..271;
      NumberOfLinenumbers at 0 range 272..287;
      Characteristics at 0 range 288..319;
   end record;
   for IMAGE_SECTION_HEADER_x'Size use 320;
   for IMAGE_SECTION_HEADER_x'Alignment use 4;
   subtype IMAGE_SECTION_HEADER is IMAGE_SECTION_HEADER_x;
   type PIMAGE_SECTION_HEADER is access all IMAGE_SECTION_HEADER_x;
   type Anonymous_Record_90 is record
      Short_x : DWORD;
      Long_x : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_90);
   for Anonymous_Record_90 use record
      Short_x at 0 range 0..31;
      Long_x at 0 range 32..63;
   end record;
   for Anonymous_Record_90'Size use 64;
   for Anonymous_Record_90'Alignment use 2;
   type Anonymous_Record_89_ShortName_Array is array(1..8) of BYTE; -- Auto Generated Dependancy
   type Anonymous_Record_89_LongName_Array is array(1..2) of DWORD; -- Auto Generated Dependancy
   type Anonymous_Record_89 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            ShortName : Anonymous_Record_89_ShortName_Array;
         when 1 =>
            field_1 : Anonymous_Record_90;
         when others => 
            LongName : Anonymous_Record_89_LongName_Array;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_89);
   pragma Unchecked_Union (Anonymous_Record_89);
   for Anonymous_Record_89'Size use 64;
   for Anonymous_Record_89'Alignment use 2;
   type IMAGE_SYMBOL_x is record
      field_1 : Anonymous_Record_89;
      Value : DWORD;
      SectionNumber : SHORT;
      type_x : WORD;
      StorageClass : BYTE;
      NumberOfAuxSymbols : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_SYMBOL_x);
   for IMAGE_SYMBOL_x use record
      field_1 at 0 range 0..63;
      Value at 0 range 64..95;
      SectionNumber at 0 range 96..111;
      type_x at 0 range 112..127;
      StorageClass at 0 range 128..135;
      NumberOfAuxSymbols at 0 range 136..143;
   end record;
   for IMAGE_SYMBOL_x'Size use 144;
   for IMAGE_SYMBOL_x'Alignment use 2;
   subtype IMAGE_SYMBOL is IMAGE_SYMBOL_x;
   type PIMAGE_SYMBOL is access all IMAGE_SYMBOL;
   type Anonymous_Record_92 is record
      Short_x : DWORD;
      Long_x : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_92);
   for Anonymous_Record_92 use record
      Short_x at 0 range 0..31;
      Long_x at 0 range 32..63;
   end record;
   for Anonymous_Record_92'Size use 64;
   for Anonymous_Record_92'Alignment use 2;
   type Anonymous_Record_91_ShortName_Array is array(1..8) of BYTE; -- Auto Generated Dependancy
   type Anonymous_Record_91_LongName_Array is array(1..2) of DWORD; -- Auto Generated Dependancy
   type Anonymous_Record_91 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            ShortName : Anonymous_Record_91_ShortName_Array;
         when 1 =>
            field_1 : Anonymous_Record_92;
         when others => 
            LongName : Anonymous_Record_91_LongName_Array;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_91);
   pragma Unchecked_Union (Anonymous_Record_91);
   for Anonymous_Record_91'Size use 64;
   for Anonymous_Record_91'Alignment use 2;
   type IMAGE_SYMBOL_EX_x is record
      field_1 : Anonymous_Record_91;
      Value : DWORD;
      SectionNumber : LONG;
      type_x : WORD;
      StorageClass : BYTE;
      NumberOfAuxSymbols : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_SYMBOL_EX_x);
   for IMAGE_SYMBOL_EX_x use record
      field_1 at 0 range 0..63;
      Value at 0 range 64..95;
      SectionNumber at 0 range 96..127;
      type_x at 0 range 128..143;
      StorageClass at 0 range 144..151;
      NumberOfAuxSymbols at 0 range 152..159;
   end record;
   for IMAGE_SYMBOL_EX_x'Size use 160;
   for IMAGE_SYMBOL_EX_x'Alignment use 2;
   subtype IMAGE_SYMBOL_EX is IMAGE_SYMBOL_EX_x;
   type PIMAGE_SYMBOL_EX is access all IMAGE_SYMBOL_EX;
   type IMAGE_AUX_SYMBOL_TOKEN_DEF_rgbReserved_Array is array(1..12) of BYTE; -- Auto Generated Dependancy
   type IMAGE_AUX_SYMBOL_TOKEN_DEF is record
      bAuxType : BYTE;
      bReserved : BYTE;
      SymbolTableIndex : DWORD;
      rgbReserved : IMAGE_AUX_SYMBOL_TOKEN_DEF_rgbReserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_AUX_SYMBOL_TOKEN_DEF);
   for IMAGE_AUX_SYMBOL_TOKEN_DEF use record
      bAuxType at 0 range 0..7;
      bReserved at 0 range 8..15;
      SymbolTableIndex at 0 range 16..47;
      rgbReserved at 0 range 48..143;
   end record;
   for IMAGE_AUX_SYMBOL_TOKEN_DEF'Size use 144;
   for IMAGE_AUX_SYMBOL_TOKEN_DEF'Alignment use 2;
   type PIMAGE_AUX_SYMBOL_TOKEN_DEF is access all IMAGE_AUX_SYMBOL_TOKEN_DEF;
   type Anonymous_Record_95 is record
      Linenumber : WORD;
      Size : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_95);
   for Anonymous_Record_95 use record
      Linenumber at 0 range 0..15;
      Size at 0 range 16..31;
   end record;
   for Anonymous_Record_95'Size use 32;
   for Anonymous_Record_95'Alignment use 2;
   type Anonymous_Record_94 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_95;
         when others => 
            TotalSize : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_94);
   pragma Unchecked_Union (Anonymous_Record_94);
   for Anonymous_Record_94'Size use 32;
   for Anonymous_Record_94'Alignment use 2;
   type Anonymous_Record_97 is record
      PointerToLinenumber : DWORD;
      PointerToNextFunction : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_97);
   for Anonymous_Record_97 use record
      PointerToLinenumber at 0 range 0..31;
      PointerToNextFunction at 0 range 32..63;
   end record;
   for Anonymous_Record_97'Size use 64;
   for Anonymous_Record_97'Alignment use 2;
   type Anonymous_Record_98_Dimension_Array is array(1..4) of WORD; -- Auto Generated Dependancy
   type Anonymous_Record_98 is record
      Dimension : Anonymous_Record_98_Dimension_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_98);
   for Anonymous_Record_98 use record
      Dimension at 0 range 0..63;
   end record;
   for Anonymous_Record_98'Size use 64;
   for Anonymous_Record_98'Alignment use 2;
   type Anonymous_Record_96 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_97;
         when others => 
            field_2 : Anonymous_Record_98;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_96);
   pragma Unchecked_Union (Anonymous_Record_96);
   for Anonymous_Record_96'Size use 64;
   for Anonymous_Record_96'Alignment use 2;
   type Anonymous_Record_93 is record
      TagIndex : DWORD;
      field_1 : Anonymous_Record_94;
      field_2 : Anonymous_Record_96;
      TvIndex : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_93);
   for Anonymous_Record_93 use record
      TagIndex at 0 range 0..31;
      field_1 at 0 range 32..63;
      field_2 at 0 range 64..127;
      TvIndex at 0 range 128..143;
   end record;
   for Anonymous_Record_93'Size use 144;
   for Anonymous_Record_93'Alignment use 2;
   type Anonymous_Record_99_Name_Array is array(1..18) of BYTE; -- Auto Generated Dependancy
   type Anonymous_Record_99 is record
      Name : Anonymous_Record_99_Name_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_99);
   for Anonymous_Record_99 use record
      Name at 0 range 0..143;
   end record;
   for Anonymous_Record_99'Size use 144;
   for Anonymous_Record_99'Alignment use 1;
   type Anonymous_Record_100 is record
      Length : DWORD;
      NumberOfRelocations : WORD;
      NumberOfLinenumbers : WORD;
      CheckSum : DWORD;
      Number : SHORT;
      Selection : BYTE;
      bReserved : BYTE;
      HighNumber : SHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_100);
   for Anonymous_Record_100 use record
      Length at 0 range 0..31;
      NumberOfRelocations at 0 range 32..47;
      NumberOfLinenumbers at 0 range 48..63;
      CheckSum at 0 range 64..95;
      Number at 0 range 96..111;
      Selection at 0 range 112..119;
      bReserved at 0 range 120..127;
      HighNumber at 0 range 128..143;
   end record;
   for Anonymous_Record_100'Size use 144;
   for Anonymous_Record_100'Alignment use 2;
   type Anonymous_Record_101_rgbReserved_Array is array(1..14) of BYTE; -- Auto Generated Dependancy
   type Anonymous_Record_101 is record
      crc : DWORD;
      rgbReserved : Anonymous_Record_101_rgbReserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_101);
   for Anonymous_Record_101 use record
      crc at 0 range 0..31;
      rgbReserved at 0 range 32..143;
   end record;
   for Anonymous_Record_101'Size use 144;
   for Anonymous_Record_101'Alignment use 2;
   type IMAGE_AUX_SYMBOL_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_93;
         when 1 =>
            field_2 : Anonymous_Record_99;
         when 2 =>
            field_3 : Anonymous_Record_100;
         when 3 =>
            TokenDef : IMAGE_AUX_SYMBOL_TOKEN_DEF;
         when others => 
            field_4 : Anonymous_Record_101;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_AUX_SYMBOL_x);
   pragma Unchecked_Union (IMAGE_AUX_SYMBOL_x);
   for IMAGE_AUX_SYMBOL_x'Size use 144;
   for IMAGE_AUX_SYMBOL_x'Alignment use 2;
   subtype IMAGE_AUX_SYMBOL is IMAGE_AUX_SYMBOL_x;
   type PIMAGE_AUX_SYMBOL is access all IMAGE_AUX_SYMBOL;
   type Anonymous_Record_102_rgbReserved_Array is array(1..12) of BYTE; -- Auto Generated Dependancy
   type Anonymous_Record_102 is record
      WeakDefaultSymIndex : DWORD;
      WeakSearchType : DWORD;
      rgbReserved : Anonymous_Record_102_rgbReserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_102);
   for Anonymous_Record_102 use record
      WeakDefaultSymIndex at 0 range 0..31;
      WeakSearchType at 0 range 32..63;
      rgbReserved at 0 range 64..159;
   end record;
   for Anonymous_Record_102'Size use 160;
   for Anonymous_Record_102'Alignment use 2;
   type Anonymous_Record_103_Name_Array is array(1..20) of BYTE; -- Auto Generated Dependancy
   type Anonymous_Record_103 is record
      Name : Anonymous_Record_103_Name_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_103);
   for Anonymous_Record_103 use record
      Name at 0 range 0..159;
   end record;
   for Anonymous_Record_103'Size use 160;
   for Anonymous_Record_103'Alignment use 1;
   type Anonymous_Record_104_rgbReserved_Array is array(1..2) of BYTE; -- Auto Generated Dependancy
   type Anonymous_Record_104 is record
      Length : DWORD;
      NumberOfRelocations : WORD;
      NumberOfLinenumbers : WORD;
      CheckSum : DWORD;
      Number : SHORT;
      Selection : BYTE;
      bReserved : BYTE;
      HighNumber : SHORT;
      rgbReserved : Anonymous_Record_104_rgbReserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_104);
   for Anonymous_Record_104 use record
      Length at 0 range 0..31;
      NumberOfRelocations at 0 range 32..47;
      NumberOfLinenumbers at 0 range 48..63;
      CheckSum at 0 range 64..95;
      Number at 0 range 96..111;
      Selection at 0 range 112..119;
      bReserved at 0 range 120..127;
      HighNumber at 0 range 128..143;
      rgbReserved at 0 range 144..159;
   end record;
   for Anonymous_Record_104'Size use 160;
   for Anonymous_Record_104'Alignment use 2;
   type Anonymous_Record_105_rgbReserved_Array is array(1..2) of BYTE; -- Auto Generated Dependancy
   type Anonymous_Record_105 is record
      TokenDef : IMAGE_AUX_SYMBOL_TOKEN_DEF;
      rgbReserved : Anonymous_Record_105_rgbReserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_105);
   for Anonymous_Record_105 use record
      TokenDef at 0 range 0..143;
      rgbReserved at 0 range 144..159;
   end record;
   for Anonymous_Record_105'Size use 160;
   for Anonymous_Record_105'Alignment use 2;
   type Anonymous_Record_106_rgbReserved_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type Anonymous_Record_106 is record
      crc : DWORD;
      rgbReserved : Anonymous_Record_106_rgbReserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_106);
   for Anonymous_Record_106 use record
      crc at 0 range 0..31;
      rgbReserved at 0 range 32..159;
   end record;
   for Anonymous_Record_106'Size use 160;
   for Anonymous_Record_106'Alignment use 2;
   type IMAGE_AUX_SYMBOL_EX_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_102;
         when 1 =>
            field_2 : Anonymous_Record_103;
         when 2 =>
            field_3 : Anonymous_Record_104;
         when 3 =>
            field_4 : Anonymous_Record_105;
         when others => 
            field_5 : Anonymous_Record_106;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_AUX_SYMBOL_EX_x);
   pragma Unchecked_Union (IMAGE_AUX_SYMBOL_EX_x);
   for IMAGE_AUX_SYMBOL_EX_x'Size use 160;
   for IMAGE_AUX_SYMBOL_EX_x'Alignment use 2;
   subtype IMAGE_AUX_SYMBOL_EX is IMAGE_AUX_SYMBOL_EX_x;
   type PIMAGE_AUX_SYMBOL_EX is access all IMAGE_AUX_SYMBOL_EX;
   type IMAGE_AUX_SYMBOL_TYPE is (
      IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF
   );
   for IMAGE_AUX_SYMBOL_TYPE use (
      IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF => 1
   );
   for IMAGE_AUX_SYMBOL_TYPE'Size use 32;
   type Anonymous_Record_107 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            VirtualAddress : DWORD;
         when others => 
            RelocCount : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_107);
   pragma Unchecked_Union (Anonymous_Record_107);
   for Anonymous_Record_107'Size use 32;
   for Anonymous_Record_107'Alignment use 2;
   type IMAGE_RELOCATION_x is record
      field_1 : Anonymous_Record_107;
      SymbolTableIndex : DWORD;
      type_x : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_RELOCATION_x);
   for IMAGE_RELOCATION_x use record
      field_1 at 0 range 0..31;
      SymbolTableIndex at 0 range 32..63;
      type_x at 0 range 64..79;
   end record;
   for IMAGE_RELOCATION_x'Size use 80;
   for IMAGE_RELOCATION_x'Alignment use 2;
   subtype IMAGE_RELOCATION is IMAGE_RELOCATION_x;
   type PIMAGE_RELOCATION is access all IMAGE_RELOCATION;
   type Anonymous_Record_108 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            SymbolTableIndex : DWORD;
         when others => 
            VirtualAddress : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_108);
   pragma Unchecked_Union (Anonymous_Record_108);
   for Anonymous_Record_108'Size use 32;
   for Anonymous_Record_108'Alignment use 2;
   type IMAGE_LINENUMBER_x is record
      field_1 : Anonymous_Record_108;
      Linenumber : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_LINENUMBER_x);
   for IMAGE_LINENUMBER_x use record
      field_1 at 0 range 0..31;
      Linenumber at 0 range 32..47;
   end record;
   for IMAGE_LINENUMBER_x'Size use 48;
   for IMAGE_LINENUMBER_x'Alignment use 2;
   subtype IMAGE_LINENUMBER is IMAGE_LINENUMBER_x;
   type PIMAGE_LINENUMBER is access all IMAGE_LINENUMBER;
   type IMAGE_BASE_RELOCATION_x is record
      VirtualAddress : DWORD;
      SizeOfBlock : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_BASE_RELOCATION_x);
   for IMAGE_BASE_RELOCATION_x use record
      VirtualAddress at 0 range 0..31;
      SizeOfBlock at 0 range 32..63;
   end record;
   for IMAGE_BASE_RELOCATION_x'Size use 64;
   for IMAGE_BASE_RELOCATION_x'Alignment use 4;
   subtype IMAGE_BASE_RELOCATION is IMAGE_BASE_RELOCATION_x;
   type PIMAGE_BASE_RELOCATION is access all IMAGE_BASE_RELOCATION;
   type IMAGE_ARCHIVE_MEMBER_HEADER_x_Name_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ARCHIVE_MEMBER_HEADER_x_Date_Array is array(1..12) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ARCHIVE_MEMBER_HEADER_x_UserID_Array is array(1..6) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ARCHIVE_MEMBER_HEADER_x_GroupID_Array is array(1..6) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ARCHIVE_MEMBER_HEADER_x_Mode_Array is array(1..8) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ARCHIVE_MEMBER_HEADER_x_Size_Array is array(1..10) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ARCHIVE_MEMBER_HEADER_x_EndHeader_Array is array(1..2) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ARCHIVE_MEMBER_HEADER_x is record
      Name : IMAGE_ARCHIVE_MEMBER_HEADER_x_Name_Array;
      Date : IMAGE_ARCHIVE_MEMBER_HEADER_x_Date_Array;
      UserID : IMAGE_ARCHIVE_MEMBER_HEADER_x_UserID_Array;
      GroupID : IMAGE_ARCHIVE_MEMBER_HEADER_x_GroupID_Array;
      Mode : IMAGE_ARCHIVE_MEMBER_HEADER_x_Mode_Array;
      Size : IMAGE_ARCHIVE_MEMBER_HEADER_x_Size_Array;
      EndHeader : IMAGE_ARCHIVE_MEMBER_HEADER_x_EndHeader_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_ARCHIVE_MEMBER_HEADER_x);
   for IMAGE_ARCHIVE_MEMBER_HEADER_x use record
      Name at 0 range 0..127;
      Date at 0 range 128..223;
      UserID at 0 range 224..271;
      GroupID at 0 range 272..319;
      Mode at 0 range 320..383;
      Size at 0 range 384..463;
      EndHeader at 0 range 464..479;
   end record;
   for IMAGE_ARCHIVE_MEMBER_HEADER_x'Size use 480;
   for IMAGE_ARCHIVE_MEMBER_HEADER_x'Alignment use 1;
   subtype IMAGE_ARCHIVE_MEMBER_HEADER is IMAGE_ARCHIVE_MEMBER_HEADER_x;
   type PIMAGE_ARCHIVE_MEMBER_HEADER is access all IMAGE_ARCHIVE_MEMBER_HEADER_x;
   type IMAGE_EXPORT_DIRECTORY_x is record
      Characteristics : DWORD;
      TimeDateStamp : DWORD;
      MajorVersion : WORD;
      MinorVersion : WORD;
      Name : DWORD;
      Base : DWORD;
      NumberOfFunctions : DWORD;
      NumberOfNames : DWORD;
      AddressOfFunctions : DWORD;
      AddressOfNames : DWORD;
      AddressOfNameOrdinals : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_EXPORT_DIRECTORY_x);
   for IMAGE_EXPORT_DIRECTORY_x use record
      Characteristics at 0 range 0..31;
      TimeDateStamp at 0 range 32..63;
      MajorVersion at 0 range 64..79;
      MinorVersion at 0 range 80..95;
      Name at 0 range 96..127;
      Base at 0 range 128..159;
      NumberOfFunctions at 0 range 160..191;
      NumberOfNames at 0 range 192..223;
      AddressOfFunctions at 0 range 224..255;
      AddressOfNames at 0 range 256..287;
      AddressOfNameOrdinals at 0 range 288..319;
   end record;
   for IMAGE_EXPORT_DIRECTORY_x'Size use 320;
   for IMAGE_EXPORT_DIRECTORY_x'Alignment use 4;
   subtype IMAGE_EXPORT_DIRECTORY is IMAGE_EXPORT_DIRECTORY_x;
   type PIMAGE_EXPORT_DIRECTORY is access all IMAGE_EXPORT_DIRECTORY_x;
   type IMAGE_IMPORT_BY_NAME_x_Name_Array is array(1..1) of CHAR; -- Auto Generated Dependancy
   type IMAGE_IMPORT_BY_NAME_x is record
      Hint : WORD;
      Name : IMAGE_IMPORT_BY_NAME_x_Name_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_IMPORT_BY_NAME_x);
   for IMAGE_IMPORT_BY_NAME_x use record
      Hint at 0 range 0..15;
      Name at 0 range 16..23;
   end record;
   for IMAGE_IMPORT_BY_NAME_x'Size use 32;
   for IMAGE_IMPORT_BY_NAME_x'Alignment use 2;
   subtype IMAGE_IMPORT_BY_NAME is IMAGE_IMPORT_BY_NAME_x;
   type PIMAGE_IMPORT_BY_NAME is access all IMAGE_IMPORT_BY_NAME_x;
   type Anonymous_Record_109 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            ForwarderString : ULONGLONG;
         when 1 =>
            function_x : ULONGLONG;
         when 2 =>
            Ordinal : ULONGLONG;
         when others => 
            AddressOfData : ULONGLONG;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_109);
   pragma Unchecked_Union (Anonymous_Record_109);
   for Anonymous_Record_109'Size use 64;
   for Anonymous_Record_109'Alignment use 8;
   type IMAGE_THUNK_DATA64_x is record
      field_1 : Anonymous_Record_109;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_THUNK_DATA64_x);
   for IMAGE_THUNK_DATA64_x use record
      field_1 at 0 range 0..63;
   end record;
   for IMAGE_THUNK_DATA64_x'Size use 64;
   for IMAGE_THUNK_DATA64_x'Alignment use 8;
   subtype IMAGE_THUNK_DATA64 is IMAGE_THUNK_DATA64_x;
   type PIMAGE_THUNK_DATA64 is access all IMAGE_THUNK_DATA64;
   type Anonymous_Record_110 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            ForwarderString : DWORD;
         when 1 =>
            function_x : DWORD;
         when 2 =>
            Ordinal : DWORD;
         when others => 
            AddressOfData : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_110);
   pragma Unchecked_Union (Anonymous_Record_110);
   for Anonymous_Record_110'Size use 32;
   for Anonymous_Record_110'Alignment use 4;
   type IMAGE_THUNK_DATA32_x is record
      field_1 : Anonymous_Record_110;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_THUNK_DATA32_x);
   for IMAGE_THUNK_DATA32_x use record
      field_1 at 0 range 0..31;
   end record;
   for IMAGE_THUNK_DATA32_x'Size use 32;
   for IMAGE_THUNK_DATA32_x'Alignment use 4;
   subtype IMAGE_THUNK_DATA32 is IMAGE_THUNK_DATA32_x;
   type PIMAGE_THUNK_DATA32 is access all IMAGE_THUNK_DATA32;
   type PIMAGE_TLS_CALLBACK is access procedure (p1 : PVOID ; p2 : DWORD ; p3 : PVOID); -- void (PVOID, DWORD, PVOID)
   pragma Convention(C,PIMAGE_TLS_CALLBACK);
   type Anonymous_Record_112 is record
      Reserved0 : Interfaces.C.Extensions.Unsigned_20; -- bit field
      Alignment : Interfaces.C.Extensions.Unsigned_4; -- bit field
      Reserved1 : Interfaces.C.Extensions.Unsigned_8; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_112);
   for Anonymous_Record_112 use record
      Reserved0 at 0 range 0..19;
      Alignment at 0 range 20..23;
      Reserved1 at 0 range 24..31;
   end record;
   for Anonymous_Record_112'Size use 32;
   for Anonymous_Record_112'Alignment use 4;
   type Anonymous_Record_111 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Characteristics : DWORD;
         when others => 
            field_1 : Anonymous_Record_112;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_111);
   pragma Unchecked_Union (Anonymous_Record_111);
   for Anonymous_Record_111'Size use 32;
   for Anonymous_Record_111'Alignment use 4;
   type IMAGE_TLS_DIRECTORY64_x is record
      StartAddressOfRawData : ULONGLONG;
      EndAddressOfRawData : ULONGLONG;
      AddressOfIndex : ULONGLONG;
      AddressOfCallBacks : ULONGLONG;
      SizeOfZeroFill : DWORD;
      field_1 : Anonymous_Record_111;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_TLS_DIRECTORY64_x);
   for IMAGE_TLS_DIRECTORY64_x use record
      StartAddressOfRawData at 0 range 0..63;
      EndAddressOfRawData at 0 range 64..127;
      AddressOfIndex at 0 range 128..191;
      AddressOfCallBacks at 0 range 192..255;
      SizeOfZeroFill at 0 range 256..287;
      field_1 at 0 range 288..319;
   end record;
   for IMAGE_TLS_DIRECTORY64_x'Size use 320;
   for IMAGE_TLS_DIRECTORY64_x'Alignment use 4;
   subtype IMAGE_TLS_DIRECTORY64 is IMAGE_TLS_DIRECTORY64_x;
   type PIMAGE_TLS_DIRECTORY64 is access all IMAGE_TLS_DIRECTORY64;
   type Anonymous_Record_114 is record
      Reserved0 : Interfaces.C.Extensions.Unsigned_20; -- bit field
      Alignment : Interfaces.C.Extensions.Unsigned_4; -- bit field
      Reserved1 : Interfaces.C.Extensions.Unsigned_8; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_114);
   for Anonymous_Record_114 use record
      Reserved0 at 0 range 0..19;
      Alignment at 0 range 20..23;
      Reserved1 at 0 range 24..31;
   end record;
   for Anonymous_Record_114'Size use 32;
   for Anonymous_Record_114'Alignment use 4;
   type Anonymous_Record_113 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Characteristics : DWORD;
         when others => 
            field_1 : Anonymous_Record_114;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_113);
   pragma Unchecked_Union (Anonymous_Record_113);
   for Anonymous_Record_113'Size use 32;
   for Anonymous_Record_113'Alignment use 4;
   type IMAGE_TLS_DIRECTORY32_x is record
      StartAddressOfRawData : DWORD;
      EndAddressOfRawData : DWORD;
      AddressOfIndex : DWORD;
      AddressOfCallBacks : DWORD;
      SizeOfZeroFill : DWORD;
      field_1 : Anonymous_Record_113;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_TLS_DIRECTORY32_x);
   for IMAGE_TLS_DIRECTORY32_x use record
      StartAddressOfRawData at 0 range 0..31;
      EndAddressOfRawData at 0 range 32..63;
      AddressOfIndex at 0 range 64..95;
      AddressOfCallBacks at 0 range 96..127;
      SizeOfZeroFill at 0 range 128..159;
      field_1 at 0 range 160..191;
   end record;
   for IMAGE_TLS_DIRECTORY32_x'Size use 192;
   for IMAGE_TLS_DIRECTORY32_x'Alignment use 4;
   subtype IMAGE_TLS_DIRECTORY32 is IMAGE_TLS_DIRECTORY32_x;
   type PIMAGE_TLS_DIRECTORY32 is access all IMAGE_TLS_DIRECTORY32;
   subtype IMAGE_THUNK_DATA is IMAGE_THUNK_DATA64;
   subtype PIMAGE_THUNK_DATA is PIMAGE_THUNK_DATA64;
   subtype IMAGE_TLS_DIRECTORY is IMAGE_TLS_DIRECTORY64;
   subtype PIMAGE_TLS_DIRECTORY is PIMAGE_TLS_DIRECTORY64;
   type Anonymous_Record_115 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Characteristics : DWORD;
         when others => 
            OriginalFirstThunk : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_115);
   pragma Unchecked_Union (Anonymous_Record_115);
   for Anonymous_Record_115'Size use 32;
   for Anonymous_Record_115'Alignment use 4;
   type IMAGE_IMPORT_DESCRIPTOR_x is record
      field_1 : Anonymous_Record_115;
      TimeDateStamp : DWORD;
      ForwarderChain : DWORD;
      Name : DWORD;
      FirstThunk : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_IMPORT_DESCRIPTOR_x);
   for IMAGE_IMPORT_DESCRIPTOR_x use record
      field_1 at 0 range 0..31;
      TimeDateStamp at 0 range 32..63;
      ForwarderChain at 0 range 64..95;
      Name at 0 range 96..127;
      FirstThunk at 0 range 128..159;
   end record;
   for IMAGE_IMPORT_DESCRIPTOR_x'Size use 160;
   for IMAGE_IMPORT_DESCRIPTOR_x'Alignment use 4;
   subtype IMAGE_IMPORT_DESCRIPTOR is IMAGE_IMPORT_DESCRIPTOR_x;
   type PIMAGE_IMPORT_DESCRIPTOR is access all IMAGE_IMPORT_DESCRIPTOR;
   type IMAGE_BOUND_IMPORT_DESCRIPTOR_x is record
      TimeDateStamp : DWORD;
      OffsetModuleName : WORD;
      NumberOfModuleForwarderRefs : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_BOUND_IMPORT_DESCRIPTOR_x);
   for IMAGE_BOUND_IMPORT_DESCRIPTOR_x use record
      TimeDateStamp at 0 range 0..31;
      OffsetModuleName at 0 range 32..47;
      NumberOfModuleForwarderRefs at 0 range 48..63;
   end record;
   for IMAGE_BOUND_IMPORT_DESCRIPTOR_x'Size use 64;
   for IMAGE_BOUND_IMPORT_DESCRIPTOR_x'Alignment use 4;
   subtype IMAGE_BOUND_IMPORT_DESCRIPTOR is IMAGE_BOUND_IMPORT_DESCRIPTOR_x;
   type PIMAGE_BOUND_IMPORT_DESCRIPTOR is access all IMAGE_BOUND_IMPORT_DESCRIPTOR_x;
   type IMAGE_BOUND_FORWARDER_REF_x is record
      TimeDateStamp : DWORD;
      OffsetModuleName : WORD;
      Reserved : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_BOUND_FORWARDER_REF_x);
   for IMAGE_BOUND_FORWARDER_REF_x use record
      TimeDateStamp at 0 range 0..31;
      OffsetModuleName at 0 range 32..47;
      Reserved at 0 range 48..63;
   end record;
   for IMAGE_BOUND_FORWARDER_REF_x'Size use 64;
   for IMAGE_BOUND_FORWARDER_REF_x'Alignment use 4;
   subtype IMAGE_BOUND_FORWARDER_REF is IMAGE_BOUND_FORWARDER_REF_x;
   type PIMAGE_BOUND_FORWARDER_REF is access all IMAGE_BOUND_FORWARDER_REF_x;
   type Anonymous_Record_117 is record
      RvaBased : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ReservedAttributes : Interfaces.C.Extensions.Unsigned_31; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_117);
   for Anonymous_Record_117 use record
      RvaBased at 0 range 0..0;
      ReservedAttributes at 0 range 1..31;
   end record;
   for Anonymous_Record_117'Size use 32;
   for Anonymous_Record_117'Alignment use 4;
   type Anonymous_Record_116 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            AllAttributes : DWORD;
         when others => 
            field_1 : Anonymous_Record_117;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_116);
   pragma Unchecked_Union (Anonymous_Record_116);
   for Anonymous_Record_116'Size use 32;
   for Anonymous_Record_116'Alignment use 4;
   type IMAGE_DELAYLOAD_DESCRIPTOR_x is record
      field_1 : Anonymous_Record_116;
      DllNameRVA : DWORD;
      ModuleHandleRVA : DWORD;
      ImportAddressTableRVA : DWORD;
      ImportNameTableRVA : DWORD;
      BoundImportAddressTableRVA : DWORD;
      UnloadInformationTableRVA : DWORD;
      TimeDateStamp : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_DELAYLOAD_DESCRIPTOR_x);
   for IMAGE_DELAYLOAD_DESCRIPTOR_x use record
      field_1 at 0 range 0..31;
      DllNameRVA at 0 range 32..63;
      ModuleHandleRVA at 0 range 64..95;
      ImportAddressTableRVA at 0 range 96..127;
      ImportNameTableRVA at 0 range 128..159;
      BoundImportAddressTableRVA at 0 range 160..191;
      UnloadInformationTableRVA at 0 range 192..223;
      TimeDateStamp at 0 range 224..255;
   end record;
   for IMAGE_DELAYLOAD_DESCRIPTOR_x'Size use 256;
   for IMAGE_DELAYLOAD_DESCRIPTOR_x'Alignment use 4;
   subtype IMAGE_DELAYLOAD_DESCRIPTOR is IMAGE_DELAYLOAD_DESCRIPTOR_x;
   type PIMAGE_DELAYLOAD_DESCRIPTOR is access all IMAGE_DELAYLOAD_DESCRIPTOR_x;
   type PCIMAGE_DELAYLOAD_DESCRIPTOR is access constant IMAGE_DELAYLOAD_DESCRIPTOR;
   type IMAGE_RESOURCE_DIRECTORY_x is record
      Characteristics : DWORD;
      TimeDateStamp : DWORD;
      MajorVersion : WORD;
      MinorVersion : WORD;
      NumberOfNamedEntries : WORD;
      NumberOfIdEntries : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_RESOURCE_DIRECTORY_x);
   for IMAGE_RESOURCE_DIRECTORY_x use record
      Characteristics at 0 range 0..31;
      TimeDateStamp at 0 range 32..63;
      MajorVersion at 0 range 64..79;
      MinorVersion at 0 range 80..95;
      NumberOfNamedEntries at 0 range 96..111;
      NumberOfIdEntries at 0 range 112..127;
   end record;
   for IMAGE_RESOURCE_DIRECTORY_x'Size use 128;
   for IMAGE_RESOURCE_DIRECTORY_x'Alignment use 4;
   subtype IMAGE_RESOURCE_DIRECTORY is IMAGE_RESOURCE_DIRECTORY_x;
   type PIMAGE_RESOURCE_DIRECTORY is access all IMAGE_RESOURCE_DIRECTORY_x;
   type Anonymous_Record_119 is record
      NameOffset : Interfaces.C.Extensions.Unsigned_31; -- bit field
      NameIsString : Interfaces.C.Extensions.Unsigned_1; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_119);
   for Anonymous_Record_119 use record
      NameOffset at 0 range 0..30;
      NameIsString at 0 range 31..31;
   end record;
   for Anonymous_Record_119'Size use 32;
   for Anonymous_Record_119'Alignment use 4;
   type Anonymous_Record_118 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_119;
         when 1 =>
            Name : DWORD;
         when others => 
            Id : WORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_118);
   pragma Unchecked_Union (Anonymous_Record_118);
   for Anonymous_Record_118'Size use 32;
   for Anonymous_Record_118'Alignment use 4;
   type Anonymous_Record_121 is record
      OffsetToDirectory : Interfaces.C.Extensions.Unsigned_31; -- bit field
      DataIsDirectory : Interfaces.C.Extensions.Unsigned_1; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_121);
   for Anonymous_Record_121 use record
      OffsetToDirectory at 0 range 0..30;
      DataIsDirectory at 0 range 31..31;
   end record;
   for Anonymous_Record_121'Size use 32;
   for Anonymous_Record_121'Alignment use 4;
   type Anonymous_Record_120 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            OffsetToData : DWORD;
         when others => 
            field_1 : Anonymous_Record_121;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_120);
   pragma Unchecked_Union (Anonymous_Record_120);
   for Anonymous_Record_120'Size use 32;
   for Anonymous_Record_120'Alignment use 4;
   type IMAGE_RESOURCE_DIRECTORY_ENTRY_x is record
      field_1 : Anonymous_Record_118;
      field_2 : Anonymous_Record_120;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_RESOURCE_DIRECTORY_ENTRY_x);
   for IMAGE_RESOURCE_DIRECTORY_ENTRY_x use record
      field_1 at 0 range 0..31;
      field_2 at 0 range 32..63;
   end record;
   for IMAGE_RESOURCE_DIRECTORY_ENTRY_x'Size use 64;
   for IMAGE_RESOURCE_DIRECTORY_ENTRY_x'Alignment use 4;
   subtype IMAGE_RESOURCE_DIRECTORY_ENTRY is IMAGE_RESOURCE_DIRECTORY_ENTRY_x;
   type PIMAGE_RESOURCE_DIRECTORY_ENTRY is access all IMAGE_RESOURCE_DIRECTORY_ENTRY_x;
   type IMAGE_RESOURCE_DIRECTORY_STRING_x_NameString_Array is array(1..1) of CHAR; -- Auto Generated Dependancy
   type IMAGE_RESOURCE_DIRECTORY_STRING_x is record
      Length : WORD;
      NameString : IMAGE_RESOURCE_DIRECTORY_STRING_x_NameString_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_RESOURCE_DIRECTORY_STRING_x);
   for IMAGE_RESOURCE_DIRECTORY_STRING_x use record
      Length at 0 range 0..15;
      NameString at 0 range 16..23;
   end record;
   for IMAGE_RESOURCE_DIRECTORY_STRING_x'Size use 32;
   for IMAGE_RESOURCE_DIRECTORY_STRING_x'Alignment use 2;
   subtype IMAGE_RESOURCE_DIRECTORY_STRING is IMAGE_RESOURCE_DIRECTORY_STRING_x;
   type PIMAGE_RESOURCE_DIRECTORY_STRING is access all IMAGE_RESOURCE_DIRECTORY_STRING_x;
   type IMAGE_RESOURCE_DIR_STRING_U_x_NameString_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type IMAGE_RESOURCE_DIR_STRING_U_x is record
      Length : WORD;
      NameString : IMAGE_RESOURCE_DIR_STRING_U_x_NameString_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_RESOURCE_DIR_STRING_U_x);
   for IMAGE_RESOURCE_DIR_STRING_U_x use record
      Length at 0 range 0..15;
      NameString at 0 range 16..31;
   end record;
   for IMAGE_RESOURCE_DIR_STRING_U_x'Size use 32;
   for IMAGE_RESOURCE_DIR_STRING_U_x'Alignment use 2;
   subtype IMAGE_RESOURCE_DIR_STRING_U is IMAGE_RESOURCE_DIR_STRING_U_x;
   type PIMAGE_RESOURCE_DIR_STRING_U is access all IMAGE_RESOURCE_DIR_STRING_U_x;
   type IMAGE_RESOURCE_DATA_ENTRY_x is record
      OffsetToData : DWORD;
      Size : DWORD;
      CodePage : DWORD;
      Reserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_RESOURCE_DATA_ENTRY_x);
   for IMAGE_RESOURCE_DATA_ENTRY_x use record
      OffsetToData at 0 range 0..31;
      Size at 0 range 32..63;
      CodePage at 0 range 64..95;
      Reserved at 0 range 96..127;
   end record;
   for IMAGE_RESOURCE_DATA_ENTRY_x'Size use 128;
   for IMAGE_RESOURCE_DATA_ENTRY_x'Alignment use 4;
   subtype IMAGE_RESOURCE_DATA_ENTRY is IMAGE_RESOURCE_DATA_ENTRY_x;
   type PIMAGE_RESOURCE_DATA_ENTRY is access all IMAGE_RESOURCE_DATA_ENTRY_x;
   type IMAGE_LOAD_CONFIG_CODE_INTEGRITY_x is record
      Flags : WORD;
      Catalog : WORD;
      CatalogOffset : DWORD;
      Reserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_LOAD_CONFIG_CODE_INTEGRITY_x);
   for IMAGE_LOAD_CONFIG_CODE_INTEGRITY_x use record
      Flags at 0 range 0..15;
      Catalog at 0 range 16..31;
      CatalogOffset at 0 range 32..63;
      Reserved at 0 range 64..95;
   end record;
   for IMAGE_LOAD_CONFIG_CODE_INTEGRITY_x'Size use 96;
   for IMAGE_LOAD_CONFIG_CODE_INTEGRITY_x'Alignment use 4;
   subtype IMAGE_LOAD_CONFIG_CODE_INTEGRITY is IMAGE_LOAD_CONFIG_CODE_INTEGRITY_x;
   type PIMAGE_LOAD_CONFIG_CODE_INTEGRITY is access all IMAGE_LOAD_CONFIG_CODE_INTEGRITY_x;
   type IMAGE_DYNAMIC_RELOCATION_TABLE_x is record
      Version : DWORD;
      Size : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_DYNAMIC_RELOCATION_TABLE_x);
   for IMAGE_DYNAMIC_RELOCATION_TABLE_x use record
      Version at 0 range 0..31;
      Size at 0 range 32..63;
   end record;
   for IMAGE_DYNAMIC_RELOCATION_TABLE_x'Size use 64;
   for IMAGE_DYNAMIC_RELOCATION_TABLE_x'Alignment use 4;
   subtype IMAGE_DYNAMIC_RELOCATION_TABLE is IMAGE_DYNAMIC_RELOCATION_TABLE_x;
   type PIMAGE_DYNAMIC_RELOCATION_TABLE is access all IMAGE_DYNAMIC_RELOCATION_TABLE_x;
   type IMAGE_DYNAMIC_RELOCATION32_x is record
      Symbol : DWORD;
      BaseRelocSize : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_DYNAMIC_RELOCATION32_x);
   for IMAGE_DYNAMIC_RELOCATION32_x use record
      Symbol at 0 range 0..31;
      BaseRelocSize at 0 range 32..63;
   end record;
   for IMAGE_DYNAMIC_RELOCATION32_x'Size use 64;
   for IMAGE_DYNAMIC_RELOCATION32_x'Alignment use 1;
   subtype IMAGE_DYNAMIC_RELOCATION32 is IMAGE_DYNAMIC_RELOCATION32_x;
   type PIMAGE_DYNAMIC_RELOCATION32 is access all IMAGE_DYNAMIC_RELOCATION32_x;
   type IMAGE_DYNAMIC_RELOCATION64_x is record
      Symbol : ULONGLONG;
      BaseRelocSize : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_DYNAMIC_RELOCATION64_x);
   for IMAGE_DYNAMIC_RELOCATION64_x use record
      Symbol at 0 range 0..63;
      BaseRelocSize at 0 range 64..95;
   end record;
   for IMAGE_DYNAMIC_RELOCATION64_x'Size use 96;
   for IMAGE_DYNAMIC_RELOCATION64_x'Alignment use 1;
   subtype IMAGE_DYNAMIC_RELOCATION64 is IMAGE_DYNAMIC_RELOCATION64_x;
   type PIMAGE_DYNAMIC_RELOCATION64 is access all IMAGE_DYNAMIC_RELOCATION64_x;
   type IMAGE_DYNAMIC_RELOCATION32_V2_x is record
      HeaderSize : DWORD;
      FixupInfoSize : DWORD;
      Symbol : DWORD;
      SymbolGroup : DWORD;
      Flags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_DYNAMIC_RELOCATION32_V2_x);
   for IMAGE_DYNAMIC_RELOCATION32_V2_x use record
      HeaderSize at 0 range 0..31;
      FixupInfoSize at 0 range 32..63;
      Symbol at 0 range 64..95;
      SymbolGroup at 0 range 96..127;
      Flags at 0 range 128..159;
   end record;
   for IMAGE_DYNAMIC_RELOCATION32_V2_x'Size use 160;
   for IMAGE_DYNAMIC_RELOCATION32_V2_x'Alignment use 1;
   subtype IMAGE_DYNAMIC_RELOCATION32_V2 is IMAGE_DYNAMIC_RELOCATION32_V2_x;
   type PIMAGE_DYNAMIC_RELOCATION32_V2 is access all IMAGE_DYNAMIC_RELOCATION32_V2_x;
   type IMAGE_DYNAMIC_RELOCATION64_V2_x is record
      HeaderSize : DWORD;
      FixupInfoSize : DWORD;
      Symbol : ULONGLONG;
      SymbolGroup : DWORD;
      Flags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_DYNAMIC_RELOCATION64_V2_x);
   for IMAGE_DYNAMIC_RELOCATION64_V2_x use record
      HeaderSize at 0 range 0..31;
      FixupInfoSize at 0 range 32..63;
      Symbol at 0 range 64..127;
      SymbolGroup at 0 range 128..159;
      Flags at 0 range 160..191;
   end record;
   for IMAGE_DYNAMIC_RELOCATION64_V2_x'Size use 192;
   for IMAGE_DYNAMIC_RELOCATION64_V2_x'Alignment use 1;
   subtype IMAGE_DYNAMIC_RELOCATION64_V2 is IMAGE_DYNAMIC_RELOCATION64_V2_x;
   type PIMAGE_DYNAMIC_RELOCATION64_V2 is access all IMAGE_DYNAMIC_RELOCATION64_V2_x;
   subtype IMAGE_DYNAMIC_RELOCATION is IMAGE_DYNAMIC_RELOCATION64;
   subtype PIMAGE_DYNAMIC_RELOCATION is PIMAGE_DYNAMIC_RELOCATION64;
   subtype IMAGE_DYNAMIC_RELOCATION_V2 is IMAGE_DYNAMIC_RELOCATION64_V2;
   subtype PIMAGE_DYNAMIC_RELOCATION_V2 is PIMAGE_DYNAMIC_RELOCATION64_V2;
   type IMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER_x is record
      PrologueByteCount : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER_x);
   for IMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER_x use record
      PrologueByteCount at 0 range 0..7;
   end record;
   for IMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER_x'Size use 8;
   for IMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER_x'Alignment use 1;
   subtype IMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER is IMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER_x;
   type PIMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER is access all IMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER;
   type IMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER_x is record
      EpilogueCount : DWORD;
      EpilogueByteCount : BYTE;
      BranchDescriptorElementSize : BYTE;
      BranchDescriptorCount : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER_x);
   for IMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER_x use record
      EpilogueCount at 0 range 0..31;
      EpilogueByteCount at 0 range 32..39;
      BranchDescriptorElementSize at 0 range 40..47;
      BranchDescriptorCount at 0 range 48..63;
   end record;
   for IMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER_x'Size use 64;
   for IMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER_x'Alignment use 1;
   subtype IMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER is IMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER_x;
   type PIMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER is access all IMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER;
   type IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION_x is record
      PageRelativeOffset : Interfaces.C.Extensions.Unsigned_12; -- bit field
      IndirectCall : Interfaces.C.Extensions.Unsigned_1; -- bit field
      IATIndex : Interfaces.C.Extensions.Unsigned_19; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION_x);
   for IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION_x use record
      PageRelativeOffset at 0 range 0..11;
      IndirectCall at 0 range 12..12;
      IATIndex at 0 range 13..31;
   end record;
   for IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION_x'Size use 32;
   for IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION_x'Alignment use 1;
   subtype IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION is IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION_x;
   type PIMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION is access all IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION;
   type IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION_x is record
      PageRelativeOffset : Interfaces.C.Extensions.Unsigned_12; -- bit field
      IndirectCall : Interfaces.C.Extensions.Unsigned_1; -- bit field
      RexWPrefix : Interfaces.C.Extensions.Unsigned_1; -- bit field
      CfgCheck : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Reserved : Interfaces.C.Extensions.Unsigned_1; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION_x);
   for IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION_x use record
      PageRelativeOffset at 0 range 0..11;
      IndirectCall at 0 range 12..12;
      RexWPrefix at 0 range 13..13;
      CfgCheck at 0 range 14..14;
      Reserved at 0 range 15..15;
   end record;
   for IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION_x'Size use 16;
   for IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION_x'Alignment use 1;
   subtype IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION is IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION_x;
   type PIMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION is access all IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION;
   type IMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION_x is record
      PageRelativeOffset : Interfaces.C.Extensions.Unsigned_12; -- bit field
      RegisterNumber : Interfaces.C.Extensions.Unsigned_4; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION_x);
   for IMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION_x use record
      PageRelativeOffset at 0 range 0..11;
      RegisterNumber at 0 range 12..15;
   end record;
   for IMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION_x'Size use 16;
   for IMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION_x'Alignment use 1;
   subtype IMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION is IMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION_x;
   type PIMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION is access all IMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION;
   type IMAGE_LOAD_CONFIG_DIRECTORY32_x is record
      Size : DWORD;
      TimeDateStamp : DWORD;
      MajorVersion : WORD;
      MinorVersion : WORD;
      GlobalFlagsClear : DWORD;
      GlobalFlagsSet : DWORD;
      CriticalSectionDefaultTimeout : DWORD;
      DeCommitFreeBlockThreshold : DWORD;
      DeCommitTotalFreeThreshold : DWORD;
      LockPrefixTable : DWORD;
      MaximumAllocationSize : DWORD;
      VirtualMemoryThreshold : DWORD;
      ProcessHeapFlags : DWORD;
      ProcessAffinityMask : DWORD;
      CSDVersion : WORD;
      DependentLoadFlags : WORD;
      EditList : DWORD;
      SecurityCookie : DWORD;
      SEHandlerTable : DWORD;
      SEHandlerCount : DWORD;
      GuardCFCheckFunctionPointer : DWORD;
      GuardCFDispatchFunctionPointer : DWORD;
      GuardCFFunctionTable : DWORD;
      GuardCFFunctionCount : DWORD;
      GuardFlags : DWORD;
      CodeIntegrity : IMAGE_LOAD_CONFIG_CODE_INTEGRITY;
      GuardAddressTakenIatEntryTable : DWORD;
      GuardAddressTakenIatEntryCount : DWORD;
      GuardLongJumpTargetTable : DWORD;
      GuardLongJumpTargetCount : DWORD;
      DynamicValueRelocTable : DWORD;
      CHPEMetadataPointer : DWORD;
      GuardRFFailureRoutine : DWORD;
      GuardRFFailureRoutineFunctionPointer : DWORD;
      DynamicValueRelocTableOffset : DWORD;
      DynamicValueRelocTableSection : WORD;
      Reserved2 : WORD;
      GuardRFVerifyStackPointerFunctionPointer : DWORD;
      HotPatchTableOffset : DWORD;
      Reserved3 : DWORD;
      EnclaveConfigurationPointer : DWORD;
      VolatileMetadataPointer : DWORD;
      GuardEHContinuationTable : DWORD;
      GuardEHContinuationCount : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_LOAD_CONFIG_DIRECTORY32_x);
   for IMAGE_LOAD_CONFIG_DIRECTORY32_x use record
      Size at 0 range 0..31;
      TimeDateStamp at 0 range 32..63;
      MajorVersion at 0 range 64..79;
      MinorVersion at 0 range 80..95;
      GlobalFlagsClear at 0 range 96..127;
      GlobalFlagsSet at 0 range 128..159;
      CriticalSectionDefaultTimeout at 0 range 160..191;
      DeCommitFreeBlockThreshold at 0 range 192..223;
      DeCommitTotalFreeThreshold at 0 range 224..255;
      LockPrefixTable at 0 range 256..287;
      MaximumAllocationSize at 0 range 288..319;
      VirtualMemoryThreshold at 0 range 320..351;
      ProcessHeapFlags at 0 range 352..383;
      ProcessAffinityMask at 0 range 384..415;
      CSDVersion at 0 range 416..431;
      DependentLoadFlags at 0 range 432..447;
      EditList at 0 range 448..479;
      SecurityCookie at 0 range 480..511;
      SEHandlerTable at 0 range 512..543;
      SEHandlerCount at 0 range 544..575;
      GuardCFCheckFunctionPointer at 0 range 576..607;
      GuardCFDispatchFunctionPointer at 0 range 608..639;
      GuardCFFunctionTable at 0 range 640..671;
      GuardCFFunctionCount at 0 range 672..703;
      GuardFlags at 0 range 704..735;
      CodeIntegrity at 0 range 736..831;
      GuardAddressTakenIatEntryTable at 0 range 832..863;
      GuardAddressTakenIatEntryCount at 0 range 864..895;
      GuardLongJumpTargetTable at 0 range 896..927;
      GuardLongJumpTargetCount at 0 range 928..959;
      DynamicValueRelocTable at 0 range 960..991;
      CHPEMetadataPointer at 0 range 992..1023;
      GuardRFFailureRoutine at 0 range 1024..1055;
      GuardRFFailureRoutineFunctionPointer at 0 range 1056..1087;
      DynamicValueRelocTableOffset at 0 range 1088..1119;
      DynamicValueRelocTableSection at 0 range 1120..1135;
      Reserved2 at 0 range 1136..1151;
      GuardRFVerifyStackPointerFunctionPointer at 0 range 1152..1183;
      HotPatchTableOffset at 0 range 1184..1215;
      Reserved3 at 0 range 1216..1247;
      EnclaveConfigurationPointer at 0 range 1248..1279;
      VolatileMetadataPointer at 0 range 1280..1311;
      GuardEHContinuationTable at 0 range 1312..1343;
      GuardEHContinuationCount at 0 range 1344..1375;
   end record;
   for IMAGE_LOAD_CONFIG_DIRECTORY32_x'Size use 1376;
   for IMAGE_LOAD_CONFIG_DIRECTORY32_x'Alignment use 4;
   subtype IMAGE_LOAD_CONFIG_DIRECTORY32 is IMAGE_LOAD_CONFIG_DIRECTORY32_x;
   type PIMAGE_LOAD_CONFIG_DIRECTORY32 is access all IMAGE_LOAD_CONFIG_DIRECTORY32_x;
   type IMAGE_LOAD_CONFIG_DIRECTORY64_x is record
      Size : DWORD;
      TimeDateStamp : DWORD;
      MajorVersion : WORD;
      MinorVersion : WORD;
      GlobalFlagsClear : DWORD;
      GlobalFlagsSet : DWORD;
      CriticalSectionDefaultTimeout : DWORD;
      DeCommitFreeBlockThreshold : ULONGLONG;
      DeCommitTotalFreeThreshold : ULONGLONG;
      LockPrefixTable : ULONGLONG;
      MaximumAllocationSize : ULONGLONG;
      VirtualMemoryThreshold : ULONGLONG;
      ProcessAffinityMask : ULONGLONG;
      ProcessHeapFlags : DWORD;
      CSDVersion : WORD;
      DependentLoadFlags : WORD;
      EditList : ULONGLONG;
      SecurityCookie : ULONGLONG;
      SEHandlerTable : ULONGLONG;
      SEHandlerCount : ULONGLONG;
      GuardCFCheckFunctionPointer : ULONGLONG;
      GuardCFDispatchFunctionPointer : ULONGLONG;
      GuardCFFunctionTable : ULONGLONG;
      GuardCFFunctionCount : ULONGLONG;
      GuardFlags : DWORD;
      CodeIntegrity : IMAGE_LOAD_CONFIG_CODE_INTEGRITY;
      GuardAddressTakenIatEntryTable : ULONGLONG;
      GuardAddressTakenIatEntryCount : ULONGLONG;
      GuardLongJumpTargetTable : ULONGLONG;
      GuardLongJumpTargetCount : ULONGLONG;
      DynamicValueRelocTable : ULONGLONG;
      CHPEMetadataPointer : ULONGLONG;
      GuardRFFailureRoutine : ULONGLONG;
      GuardRFFailureRoutineFunctionPointer : ULONGLONG;
      DynamicValueRelocTableOffset : DWORD;
      DynamicValueRelocTableSection : WORD;
      Reserved2 : WORD;
      GuardRFVerifyStackPointerFunctionPointer : ULONGLONG;
      HotPatchTableOffset : DWORD;
      Reserved3 : DWORD;
      EnclaveConfigurationPointer : ULONGLONG;
      VolatileMetadataPointer : ULONGLONG;
      GuardEHContinuationTable : ULONGLONG;
      GuardEHContinuationCount : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_LOAD_CONFIG_DIRECTORY64_x);
   for IMAGE_LOAD_CONFIG_DIRECTORY64_x use record
      Size at 0 range 0..31;
      TimeDateStamp at 0 range 32..63;
      MajorVersion at 0 range 64..79;
      MinorVersion at 0 range 80..95;
      GlobalFlagsClear at 0 range 96..127;
      GlobalFlagsSet at 0 range 128..159;
      CriticalSectionDefaultTimeout at 0 range 160..191;
      DeCommitFreeBlockThreshold at 0 range 192..255;
      DeCommitTotalFreeThreshold at 0 range 256..319;
      LockPrefixTable at 0 range 320..383;
      MaximumAllocationSize at 0 range 384..447;
      VirtualMemoryThreshold at 0 range 448..511;
      ProcessAffinityMask at 0 range 512..575;
      ProcessHeapFlags at 0 range 576..607;
      CSDVersion at 0 range 608..623;
      DependentLoadFlags at 0 range 624..639;
      EditList at 0 range 640..703;
      SecurityCookie at 0 range 704..767;
      SEHandlerTable at 0 range 768..831;
      SEHandlerCount at 0 range 832..895;
      GuardCFCheckFunctionPointer at 0 range 896..959;
      GuardCFDispatchFunctionPointer at 0 range 960..1023;
      GuardCFFunctionTable at 0 range 1024..1087;
      GuardCFFunctionCount at 0 range 1088..1151;
      GuardFlags at 0 range 1152..1183;
      CodeIntegrity at 0 range 1184..1279;
      GuardAddressTakenIatEntryTable at 0 range 1280..1343;
      GuardAddressTakenIatEntryCount at 0 range 1344..1407;
      GuardLongJumpTargetTable at 0 range 1408..1471;
      GuardLongJumpTargetCount at 0 range 1472..1535;
      DynamicValueRelocTable at 0 range 1536..1599;
      CHPEMetadataPointer at 0 range 1600..1663;
      GuardRFFailureRoutine at 0 range 1664..1727;
      GuardRFFailureRoutineFunctionPointer at 0 range 1728..1791;
      DynamicValueRelocTableOffset at 0 range 1792..1823;
      DynamicValueRelocTableSection at 0 range 1824..1839;
      Reserved2 at 0 range 1840..1855;
      GuardRFVerifyStackPointerFunctionPointer at 0 range 1856..1919;
      HotPatchTableOffset at 0 range 1920..1951;
      Reserved3 at 0 range 1952..1983;
      EnclaveConfigurationPointer at 0 range 1984..2047;
      VolatileMetadataPointer at 0 range 2048..2111;
      GuardEHContinuationTable at 0 range 2112..2175;
      GuardEHContinuationCount at 0 range 2176..2239;
   end record;
   for IMAGE_LOAD_CONFIG_DIRECTORY64_x'Size use 2240;
   for IMAGE_LOAD_CONFIG_DIRECTORY64_x'Alignment use 4;
   subtype IMAGE_LOAD_CONFIG_DIRECTORY64 is IMAGE_LOAD_CONFIG_DIRECTORY64_x;
   type PIMAGE_LOAD_CONFIG_DIRECTORY64 is access all IMAGE_LOAD_CONFIG_DIRECTORY64_x;
   subtype IMAGE_LOAD_CONFIG_DIRECTORY is IMAGE_LOAD_CONFIG_DIRECTORY64;
   subtype PIMAGE_LOAD_CONFIG_DIRECTORY is PIMAGE_LOAD_CONFIG_DIRECTORY64;
   type IMAGE_HOT_PATCH_INFO_x is record
      Version : DWORD;
      Size : DWORD;
      SequenceNumber : DWORD;
      BaseImageList : DWORD;
      BaseImageCount : DWORD;
      BufferOffset : DWORD;
      ExtraPatchSize : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_HOT_PATCH_INFO_x);
   for IMAGE_HOT_PATCH_INFO_x use record
      Version at 0 range 0..31;
      Size at 0 range 32..63;
      SequenceNumber at 0 range 64..95;
      BaseImageList at 0 range 96..127;
      BaseImageCount at 0 range 128..159;
      BufferOffset at 0 range 160..191;
      ExtraPatchSize at 0 range 192..223;
   end record;
   for IMAGE_HOT_PATCH_INFO_x'Size use 224;
   for IMAGE_HOT_PATCH_INFO_x'Alignment use 4;
   subtype IMAGE_HOT_PATCH_INFO is IMAGE_HOT_PATCH_INFO_x;
   type PIMAGE_HOT_PATCH_INFO is access all IMAGE_HOT_PATCH_INFO_x;
   type IMAGE_HOT_PATCH_BASE_x is record
      SequenceNumber : DWORD;
      Flags : DWORD;
      OriginalTimeDateStamp : DWORD;
      OriginalCheckSum : DWORD;
      CodeIntegrityInfo : DWORD;
      CodeIntegritySize : DWORD;
      PatchTable : DWORD;
      BufferOffset : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_HOT_PATCH_BASE_x);
   for IMAGE_HOT_PATCH_BASE_x use record
      SequenceNumber at 0 range 0..31;
      Flags at 0 range 32..63;
      OriginalTimeDateStamp at 0 range 64..95;
      OriginalCheckSum at 0 range 96..127;
      CodeIntegrityInfo at 0 range 128..159;
      CodeIntegritySize at 0 range 160..191;
      PatchTable at 0 range 192..223;
      BufferOffset at 0 range 224..255;
   end record;
   for IMAGE_HOT_PATCH_BASE_x'Size use 256;
   for IMAGE_HOT_PATCH_BASE_x'Alignment use 4;
   subtype IMAGE_HOT_PATCH_BASE is IMAGE_HOT_PATCH_BASE_x;
   type PIMAGE_HOT_PATCH_BASE is access all IMAGE_HOT_PATCH_BASE_x;
   type IMAGE_HOT_PATCH_HASHES_x_SHA256_Array is array(1..32) of BYTE; -- Auto Generated Dependancy
   type IMAGE_HOT_PATCH_HASHES_x_SHA1_Array is array(1..20) of BYTE; -- Auto Generated Dependancy
   type IMAGE_HOT_PATCH_HASHES_x is record
      SHA256 : IMAGE_HOT_PATCH_HASHES_x_SHA256_Array;
      SHA1 : IMAGE_HOT_PATCH_HASHES_x_SHA1_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_HOT_PATCH_HASHES_x);
   for IMAGE_HOT_PATCH_HASHES_x use record
      SHA256 at 0 range 0..255;
      SHA1 at 0 range 256..415;
   end record;
   for IMAGE_HOT_PATCH_HASHES_x'Size use 416;
   for IMAGE_HOT_PATCH_HASHES_x'Alignment use 1;
   subtype IMAGE_HOT_PATCH_HASHES is IMAGE_HOT_PATCH_HASHES_x;
   type PIMAGE_HOT_PATCH_HASHES is access all IMAGE_HOT_PATCH_HASHES_x;
   type IMAGE_CE_RUNTIME_FUNCTION_ENTRY_x is record
      FuncStart : DWORD;
      PrologLen : Interfaces.C.Extensions.Unsigned_8; -- bit field
      FuncLen : Interfaces.C.Extensions.Unsigned_22; -- bit field
      ThirtyTwoBit : Interfaces.C.Extensions.Unsigned_1; -- bit field
      ExceptionFlag : Interfaces.C.Extensions.Unsigned_1; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_CE_RUNTIME_FUNCTION_ENTRY_x);
   for IMAGE_CE_RUNTIME_FUNCTION_ENTRY_x use record
      FuncStart at 0 range 0..31;
      PrologLen at 0 range 32..39;
      FuncLen at 0 range 40..61;
      ThirtyTwoBit at 0 range 62..62;
      ExceptionFlag at 0 range 63..63;
   end record;
   for IMAGE_CE_RUNTIME_FUNCTION_ENTRY_x'Size use 64;
   for IMAGE_CE_RUNTIME_FUNCTION_ENTRY_x'Alignment use 4;
   subtype IMAGE_CE_RUNTIME_FUNCTION_ENTRY is IMAGE_CE_RUNTIME_FUNCTION_ENTRY_x;
   type PIMAGE_CE_RUNTIME_FUNCTION_ENTRY is access all IMAGE_CE_RUNTIME_FUNCTION_ENTRY_x;
   type Anonymous_Record_123 is record
      Flag : Interfaces.C.Extensions.Unsigned_2; -- bit field
      FunctionLength : Interfaces.C.Extensions.Unsigned_11; -- bit field
      Ret : Interfaces.C.Extensions.Unsigned_2; -- bit field
      H : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Reg : Interfaces.C.Extensions.Unsigned_3; -- bit field
      R : Interfaces.C.Extensions.Unsigned_1; -- bit field
      L : Interfaces.C.Extensions.Unsigned_1; -- bit field
      C : Interfaces.C.Extensions.Unsigned_1; -- bit field
      StackAdjust : Interfaces.C.Extensions.Unsigned_10; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_123);
   for Anonymous_Record_123 use record
      Flag at 0 range 0..1;
      FunctionLength at 0 range 2..12;
      Ret at 0 range 13..14;
      H at 0 range 15..15;
      Reg at 0 range 16..18;
      R at 0 range 19..19;
      L at 0 range 20..20;
      C at 0 range 21..21;
      StackAdjust at 0 range 22..31;
   end record;
   for Anonymous_Record_123'Size use 32;
   for Anonymous_Record_123'Alignment use 4;
   type Anonymous_Record_122 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            UnwindData : DWORD;
         when others => 
            field_1 : Anonymous_Record_123;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_122);
   pragma Unchecked_Union (Anonymous_Record_122);
   for Anonymous_Record_122'Size use 32;
   for Anonymous_Record_122'Alignment use 4;
   type IMAGE_ARM_RUNTIME_FUNCTION_ENTRY_x is record
      BeginAddress : DWORD;
      field_1 : Anonymous_Record_122;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_ARM_RUNTIME_FUNCTION_ENTRY_x);
   for IMAGE_ARM_RUNTIME_FUNCTION_ENTRY_x use record
      BeginAddress at 0 range 0..31;
      field_1 at 0 range 32..63;
   end record;
   for IMAGE_ARM_RUNTIME_FUNCTION_ENTRY_x'Size use 64;
   for IMAGE_ARM_RUNTIME_FUNCTION_ENTRY_x'Alignment use 4;
   subtype IMAGE_ARM_RUNTIME_FUNCTION_ENTRY is IMAGE_ARM_RUNTIME_FUNCTION_ENTRY_x;
   type PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY is access all IMAGE_ARM_RUNTIME_FUNCTION_ENTRY_x;
   type ARM64_FNPDATA_FLAGS is (
      PdataRefToFullXdata,
      PdataPackedUnwindFunction,
      PdataPackedUnwindFragment
   );
   for ARM64_FNPDATA_FLAGS use (
      PdataRefToFullXdata => 0,
      PdataPackedUnwindFunction => 1,
      PdataPackedUnwindFragment => 2
   );
   for ARM64_FNPDATA_FLAGS'Size use 32;
   type ARM64_FNPDATA_CR is (
      PdataCrUnchained,
      PdataCrUnchainedSavedLr,
      PdataCrChained
   );
   for ARM64_FNPDATA_CR use (
      PdataCrUnchained => 0,
      PdataCrUnchainedSavedLr => 1,
      PdataCrChained => 3
   );
   for ARM64_FNPDATA_CR'Size use 32;
   type Anonymous_Record_125 is record
      Flag : Interfaces.C.Extensions.Unsigned_2; -- bit field
      FunctionLength : Interfaces.C.Extensions.Unsigned_11; -- bit field
      RegF : Interfaces.C.Extensions.Unsigned_3; -- bit field
      RegI : Interfaces.C.Extensions.Unsigned_4; -- bit field
      H : Interfaces.C.Extensions.Unsigned_1; -- bit field
      CR : Interfaces.C.Extensions.Unsigned_2; -- bit field
      FrameSize : Interfaces.C.Extensions.Unsigned_9; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_125);
   for Anonymous_Record_125 use record
      Flag at 0 range 0..1;
      FunctionLength at 0 range 2..12;
      RegF at 0 range 13..15;
      RegI at 0 range 16..19;
      H at 0 range 20..20;
      CR at 0 range 21..22;
      FrameSize at 0 range 23..31;
   end record;
   for Anonymous_Record_125'Size use 32;
   for Anonymous_Record_125'Alignment use 4;
   type Anonymous_Record_124 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            UnwindData : DWORD;
         when others => 
            field_1 : Anonymous_Record_125;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_124);
   pragma Unchecked_Union (Anonymous_Record_124);
   for Anonymous_Record_124'Size use 32;
   for Anonymous_Record_124'Alignment use 4;
   type IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_x is record
      BeginAddress : DWORD;
      field_1 : Anonymous_Record_124;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_x);
   for IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_x use record
      BeginAddress at 0 range 0..31;
      field_1 at 0 range 32..63;
   end record;
   for IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_x'Size use 64;
   for IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_x'Alignment use 4;
   subtype IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY is IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_x;
   type PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY is access all IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_x;
   type Anonymous_Record_126 is record
      FunctionLength : Interfaces.C.Extensions.Unsigned_18; -- bit field
      Version : Interfaces.C.Extensions.Unsigned_2; -- bit field
      ExceptionDataPresent : Interfaces.C.Extensions.Unsigned_1; -- bit field
      EpilogInHeader : Interfaces.C.Extensions.Unsigned_1; -- bit field
      EpilogCount : Interfaces.C.Extensions.Unsigned_5; -- bit field
      CodeWords : Interfaces.C.Extensions.Unsigned_5; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_126);
   for Anonymous_Record_126 use record
      FunctionLength at 0 range 0..17;
      Version at 0 range 18..19;
      ExceptionDataPresent at 0 range 20..20;
      EpilogInHeader at 0 range 21..21;
      EpilogCount at 0 range 22..26;
      CodeWords at 0 range 27..31;
   end record;
   for Anonymous_Record_126'Size use 32;
   for Anonymous_Record_126'Alignment use 4;
   type IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            HeaderData : DWORD;
         when others => 
            field_1 : Anonymous_Record_126;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA);
   pragma Unchecked_Union (IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA);
   for IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA'Size use 32;
   for IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY_XDATA'Alignment use 4;
   type IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY_x is record
      BeginAddress : ULONGLONG;
      EndAddress : ULONGLONG;
      ExceptionHandler : ULONGLONG;
      HandlerData : ULONGLONG;
      PrologEndAddress : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY_x);
   for IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY_x use record
      BeginAddress at 0 range 0..63;
      EndAddress at 0 range 64..127;
      ExceptionHandler at 0 range 128..191;
      HandlerData at 0 range 192..255;
      PrologEndAddress at 0 range 256..319;
   end record;
   for IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY_x'Size use 320;
   for IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY_x'Alignment use 4;
   subtype IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY is IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY_x;
   type PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY is access all IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY_x;
   type IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY_x is record
      BeginAddress : DWORD;
      EndAddress : DWORD;
      ExceptionHandler : DWORD;
      HandlerData : DWORD;
      PrologEndAddress : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY_x);
   for IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY_x use record
      BeginAddress at 0 range 0..31;
      EndAddress at 0 range 32..63;
      ExceptionHandler at 0 range 64..95;
      HandlerData at 0 range 96..127;
      PrologEndAddress at 0 range 128..159;
   end record;
   for IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY_x'Size use 160;
   for IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY_x'Alignment use 4;
   subtype IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY is IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY_x;
   type PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY is access all IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY_x;
   type Anonymous_Record_127 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            UnwindInfoAddress : DWORD;
         when others => 
            UnwindData : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_127);
   pragma Unchecked_Union (Anonymous_Record_127);
   for Anonymous_Record_127'Size use 32;
   for Anonymous_Record_127'Alignment use 4;
   type IMAGE_RUNTIME_FUNCTION_ENTRY_x is record
      BeginAddress : DWORD;
      EndAddress : DWORD;
      field_1 : Anonymous_Record_127;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_RUNTIME_FUNCTION_ENTRY_x);
   for IMAGE_RUNTIME_FUNCTION_ENTRY_x use record
      BeginAddress at 0 range 0..31;
      EndAddress at 0 range 32..63;
      field_1 at 0 range 64..95;
   end record;
   for IMAGE_RUNTIME_FUNCTION_ENTRY_x'Size use 96;
   for IMAGE_RUNTIME_FUNCTION_ENTRY_x'Alignment use 4;
   type PIMAGE_RUNTIME_FUNCTION_ENTRY_x is access all IMAGE_RUNTIME_FUNCTION_ENTRY_x;
   subtype IMAGE_IA64_RUNTIME_FUNCTION_ENTRY is IMAGE_RUNTIME_FUNCTION_ENTRY_x;
   subtype PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY is PIMAGE_RUNTIME_FUNCTION_ENTRY_x;
   subtype IMAGE_RUNTIME_FUNCTION_ENTRY is IMAGE_RUNTIME_FUNCTION_ENTRY_x;
   subtype PIMAGE_RUNTIME_FUNCTION_ENTRY is PIMAGE_RUNTIME_FUNCTION_ENTRY_x;
   type IMAGE_ENCLAVE_CONFIG32_x_FamilyID_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ENCLAVE_CONFIG32_x_ImageID_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ENCLAVE_CONFIG32_x is record
      Size : DWORD;
      MinimumRequiredConfigSize : DWORD;
      PolicyFlags : DWORD;
      NumberOfImports : DWORD;
      ImportList : DWORD;
      ImportEntrySize : DWORD;
      FamilyID : IMAGE_ENCLAVE_CONFIG32_x_FamilyID_Array;
      ImageID : IMAGE_ENCLAVE_CONFIG32_x_ImageID_Array;
      ImageVersion : DWORD;
      SecurityVersion : DWORD;
      EnclaveSize : DWORD;
      NumberOfThreads : DWORD;
      EnclaveFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_ENCLAVE_CONFIG32_x);
   for IMAGE_ENCLAVE_CONFIG32_x use record
      Size at 0 range 0..31;
      MinimumRequiredConfigSize at 0 range 32..63;
      PolicyFlags at 0 range 64..95;
      NumberOfImports at 0 range 96..127;
      ImportList at 0 range 128..159;
      ImportEntrySize at 0 range 160..191;
      FamilyID at 0 range 192..319;
      ImageID at 0 range 320..447;
      ImageVersion at 0 range 448..479;
      SecurityVersion at 0 range 480..511;
      EnclaveSize at 0 range 512..543;
      NumberOfThreads at 0 range 544..575;
      EnclaveFlags at 0 range 576..607;
   end record;
   for IMAGE_ENCLAVE_CONFIG32_x'Size use 608;
   for IMAGE_ENCLAVE_CONFIG32_x'Alignment use 4;
   subtype IMAGE_ENCLAVE_CONFIG32 is IMAGE_ENCLAVE_CONFIG32_x;
   type PIMAGE_ENCLAVE_CONFIG32 is access all IMAGE_ENCLAVE_CONFIG32_x;
   type IMAGE_ENCLAVE_CONFIG64_x_FamilyID_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ENCLAVE_CONFIG64_x_ImageID_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ENCLAVE_CONFIG64_x is record
      Size : DWORD;
      MinimumRequiredConfigSize : DWORD;
      PolicyFlags : DWORD;
      NumberOfImports : DWORD;
      ImportList : DWORD;
      ImportEntrySize : DWORD;
      FamilyID : IMAGE_ENCLAVE_CONFIG64_x_FamilyID_Array;
      ImageID : IMAGE_ENCLAVE_CONFIG64_x_ImageID_Array;
      ImageVersion : DWORD;
      SecurityVersion : DWORD;
      EnclaveSize : ULONGLONG;
      NumberOfThreads : DWORD;
      EnclaveFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_ENCLAVE_CONFIG64_x);
   for IMAGE_ENCLAVE_CONFIG64_x use record
      Size at 0 range 0..31;
      MinimumRequiredConfigSize at 0 range 32..63;
      PolicyFlags at 0 range 64..95;
      NumberOfImports at 0 range 96..127;
      ImportList at 0 range 128..159;
      ImportEntrySize at 0 range 160..191;
      FamilyID at 0 range 192..319;
      ImageID at 0 range 320..447;
      ImageVersion at 0 range 448..479;
      SecurityVersion at 0 range 480..511;
      EnclaveSize at 0 range 512..575;
      NumberOfThreads at 0 range 576..607;
      EnclaveFlags at 0 range 608..639;
   end record;
   for IMAGE_ENCLAVE_CONFIG64_x'Size use 640;
   for IMAGE_ENCLAVE_CONFIG64_x'Alignment use 4;
   subtype IMAGE_ENCLAVE_CONFIG64 is IMAGE_ENCLAVE_CONFIG64_x;
   type PIMAGE_ENCLAVE_CONFIG64 is access all IMAGE_ENCLAVE_CONFIG64_x;
   subtype IMAGE_ENCLAVE_CONFIG is IMAGE_ENCLAVE_CONFIG64;
   subtype PIMAGE_ENCLAVE_CONFIG is PIMAGE_ENCLAVE_CONFIG64;
   type IMAGE_ENCLAVE_IMPORT_x_UniqueOrAuthorID_Array is array(1..32) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ENCLAVE_IMPORT_x_FamilyID_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ENCLAVE_IMPORT_x_ImageID_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type IMAGE_ENCLAVE_IMPORT_x is record
      MatchType : DWORD;
      MinimumSecurityVersion : DWORD;
      UniqueOrAuthorID : IMAGE_ENCLAVE_IMPORT_x_UniqueOrAuthorID_Array;
      FamilyID : IMAGE_ENCLAVE_IMPORT_x_FamilyID_Array;
      ImageID : IMAGE_ENCLAVE_IMPORT_x_ImageID_Array;
      ImportName : DWORD;
      Reserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_ENCLAVE_IMPORT_x);
   for IMAGE_ENCLAVE_IMPORT_x use record
      MatchType at 0 range 0..31;
      MinimumSecurityVersion at 0 range 32..63;
      UniqueOrAuthorID at 0 range 64..319;
      FamilyID at 0 range 320..447;
      ImageID at 0 range 448..575;
      ImportName at 0 range 576..607;
      Reserved at 0 range 608..639;
   end record;
   for IMAGE_ENCLAVE_IMPORT_x'Size use 640;
   for IMAGE_ENCLAVE_IMPORT_x'Alignment use 4;
   subtype IMAGE_ENCLAVE_IMPORT is IMAGE_ENCLAVE_IMPORT_x;
   type PIMAGE_ENCLAVE_IMPORT is access all IMAGE_ENCLAVE_IMPORT_x;
   type IMAGE_DEBUG_DIRECTORY_x is record
      Characteristics : DWORD;
      TimeDateStamp : DWORD;
      MajorVersion : WORD;
      MinorVersion : WORD;
      type_x : DWORD;
      SizeOfData : DWORD;
      AddressOfRawData : DWORD;
      PointerToRawData : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_DEBUG_DIRECTORY_x);
   for IMAGE_DEBUG_DIRECTORY_x use record
      Characteristics at 0 range 0..31;
      TimeDateStamp at 0 range 32..63;
      MajorVersion at 0 range 64..79;
      MinorVersion at 0 range 80..95;
      type_x at 0 range 96..127;
      SizeOfData at 0 range 128..159;
      AddressOfRawData at 0 range 160..191;
      PointerToRawData at 0 range 192..223;
   end record;
   for IMAGE_DEBUG_DIRECTORY_x'Size use 224;
   for IMAGE_DEBUG_DIRECTORY_x'Alignment use 4;
   subtype IMAGE_DEBUG_DIRECTORY is IMAGE_DEBUG_DIRECTORY_x;
   type PIMAGE_DEBUG_DIRECTORY is access all IMAGE_DEBUG_DIRECTORY_x;
   type IMAGE_COFF_SYMBOLS_HEADER_x is record
      NumberOfSymbols : DWORD;
      LvaToFirstSymbol : DWORD;
      NumberOfLinenumbers : DWORD;
      LvaToFirstLinenumber : DWORD;
      RvaToFirstByteOfCode : DWORD;
      RvaToLastByteOfCode : DWORD;
      RvaToFirstByteOfData : DWORD;
      RvaToLastByteOfData : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_COFF_SYMBOLS_HEADER_x);
   for IMAGE_COFF_SYMBOLS_HEADER_x use record
      NumberOfSymbols at 0 range 0..31;
      LvaToFirstSymbol at 0 range 32..63;
      NumberOfLinenumbers at 0 range 64..95;
      LvaToFirstLinenumber at 0 range 96..127;
      RvaToFirstByteOfCode at 0 range 128..159;
      RvaToLastByteOfCode at 0 range 160..191;
      RvaToFirstByteOfData at 0 range 192..223;
      RvaToLastByteOfData at 0 range 224..255;
   end record;
   for IMAGE_COFF_SYMBOLS_HEADER_x'Size use 256;
   for IMAGE_COFF_SYMBOLS_HEADER_x'Alignment use 4;
   subtype IMAGE_COFF_SYMBOLS_HEADER is IMAGE_COFF_SYMBOLS_HEADER_x;
   type PIMAGE_COFF_SYMBOLS_HEADER is access all IMAGE_COFF_SYMBOLS_HEADER_x;
   type FPO_DATA_x is record
      ulOffStart : DWORD;
      cbProcSize : DWORD;
      cdwLocals : DWORD;
      cdwParams : WORD;
      cbProlog : Interfaces.C.Extensions.Unsigned_8; -- bit field
      cbRegs : Interfaces.C.Extensions.Unsigned_3; -- bit field
      fHasSEH : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fUseBP : Interfaces.C.Extensions.Unsigned_1; -- bit field
      reserved : Interfaces.C.Extensions.Unsigned_1; -- bit field
      cbFrame : Interfaces.C.Extensions.Unsigned_2; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,FPO_DATA_x);
   for FPO_DATA_x use record
      ulOffStart at 0 range 0..31;
      cbProcSize at 0 range 32..63;
      cdwLocals at 0 range 64..95;
      cdwParams at 0 range 96..111;
      cbProlog at 0 range 112..119;
      cbRegs at 0 range 120..122;
      fHasSEH at 0 range 123..123;
      fUseBP at 0 range 124..124;
      reserved at 0 range 125..125;
      cbFrame at 0 range 126..127;
   end record;
   for FPO_DATA_x'Size use 128;
   for FPO_DATA_x'Alignment use 4;
   subtype FPO_DATA is FPO_DATA_x;
   type PFPO_DATA is access all FPO_DATA_x;
   type IMAGE_DEBUG_MISC_x_Reserved_Array is array(1..3) of BYTE; -- Auto Generated Dependancy
   type IMAGE_DEBUG_MISC_x_Data_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type IMAGE_DEBUG_MISC_x is record
      DataType : DWORD;
      Length : DWORD;
      Unicode : BOOLEAN;
      Reserved : IMAGE_DEBUG_MISC_x_Reserved_Array;
      Data : IMAGE_DEBUG_MISC_x_Data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_DEBUG_MISC_x);
   for IMAGE_DEBUG_MISC_x use record
      DataType at 0 range 0..31;
      Length at 0 range 32..63;
      Unicode at 0 range 64..71;
      Reserved at 0 range 72..95;
      Data at 0 range 96..103;
   end record;
   for IMAGE_DEBUG_MISC_x'Size use 128;
   for IMAGE_DEBUG_MISC_x'Alignment use 4;
   subtype IMAGE_DEBUG_MISC is IMAGE_DEBUG_MISC_x;
   type PIMAGE_DEBUG_MISC is access all IMAGE_DEBUG_MISC_x;
   type IMAGE_FUNCTION_ENTRY_x is record
      StartingAddress : DWORD;
      EndingAddress : DWORD;
      EndOfPrologue : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_FUNCTION_ENTRY_x);
   for IMAGE_FUNCTION_ENTRY_x use record
      StartingAddress at 0 range 0..31;
      EndingAddress at 0 range 32..63;
      EndOfPrologue at 0 range 64..95;
   end record;
   for IMAGE_FUNCTION_ENTRY_x'Size use 96;
   for IMAGE_FUNCTION_ENTRY_x'Alignment use 4;
   subtype IMAGE_FUNCTION_ENTRY is IMAGE_FUNCTION_ENTRY_x;
   type PIMAGE_FUNCTION_ENTRY is access all IMAGE_FUNCTION_ENTRY_x;
   type Anonymous_Record_128 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            EndOfPrologue : ULONGLONG;
         when others => 
            UnwindInfoAddress : ULONGLONG;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_128);
   pragma Unchecked_Union (Anonymous_Record_128);
   for Anonymous_Record_128'Size use 64;
   for Anonymous_Record_128'Alignment use 4;
   type IMAGE_FUNCTION_ENTRY64_x is record
      StartingAddress : ULONGLONG;
      EndingAddress : ULONGLONG;
      field_1 : Anonymous_Record_128;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_FUNCTION_ENTRY64_x);
   for IMAGE_FUNCTION_ENTRY64_x use record
      StartingAddress at 0 range 0..63;
      EndingAddress at 0 range 64..127;
      field_1 at 0 range 128..191;
   end record;
   for IMAGE_FUNCTION_ENTRY64_x'Size use 192;
   for IMAGE_FUNCTION_ENTRY64_x'Alignment use 4;
   subtype IMAGE_FUNCTION_ENTRY64 is IMAGE_FUNCTION_ENTRY64_x;
   type PIMAGE_FUNCTION_ENTRY64 is access all IMAGE_FUNCTION_ENTRY64_x;
   type IMAGE_SEPARATE_DEBUG_HEADER_x_Reserved_Array is array(1..2) of DWORD; -- Auto Generated Dependancy
   type IMAGE_SEPARATE_DEBUG_HEADER_x is record
      Signature : WORD;
      Flags : WORD;
      Machine : WORD;
      Characteristics : WORD;
      TimeDateStamp : DWORD;
      CheckSum : DWORD;
      ImageBase : DWORD;
      SizeOfImage : DWORD;
      NumberOfSections : DWORD;
      ExportedNamesSize : DWORD;
      DebugDirectorySize : DWORD;
      SectionAlignment : DWORD;
      Reserved : IMAGE_SEPARATE_DEBUG_HEADER_x_Reserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_SEPARATE_DEBUG_HEADER_x);
   for IMAGE_SEPARATE_DEBUG_HEADER_x use record
      Signature at 0 range 0..15;
      Flags at 0 range 16..31;
      Machine at 0 range 32..47;
      Characteristics at 0 range 48..63;
      TimeDateStamp at 0 range 64..95;
      CheckSum at 0 range 96..127;
      ImageBase at 0 range 128..159;
      SizeOfImage at 0 range 160..191;
      NumberOfSections at 0 range 192..223;
      ExportedNamesSize at 0 range 224..255;
      DebugDirectorySize at 0 range 256..287;
      SectionAlignment at 0 range 288..319;
      Reserved at 0 range 320..383;
   end record;
   for IMAGE_SEPARATE_DEBUG_HEADER_x'Size use 384;
   for IMAGE_SEPARATE_DEBUG_HEADER_x'Alignment use 4;
   subtype IMAGE_SEPARATE_DEBUG_HEADER is IMAGE_SEPARATE_DEBUG_HEADER_x;
   type PIMAGE_SEPARATE_DEBUG_HEADER is access all IMAGE_SEPARATE_DEBUG_HEADER_x;
   type NON_PAGED_DEBUG_INFO_x is record
      Signature : WORD;
      Flags : WORD;
      Size : DWORD;
      Machine : WORD;
      Characteristics : WORD;
      TimeDateStamp : DWORD;
      CheckSum : DWORD;
      SizeOfImage : DWORD;
      ImageBase : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,NON_PAGED_DEBUG_INFO_x);
   for NON_PAGED_DEBUG_INFO_x use record
      Signature at 0 range 0..15;
      Flags at 0 range 16..31;
      Size at 0 range 32..63;
      Machine at 0 range 64..79;
      Characteristics at 0 range 80..95;
      TimeDateStamp at 0 range 96..127;
      CheckSum at 0 range 128..159;
      SizeOfImage at 0 range 160..191;
      ImageBase at 0 range 192..255;
   end record;
   for NON_PAGED_DEBUG_INFO_x'Size use 256;
   for NON_PAGED_DEBUG_INFO_x'Alignment use 4;
   subtype NON_PAGED_DEBUG_INFO is NON_PAGED_DEBUG_INFO_x;
   type PNON_PAGED_DEBUG_INFO is access all NON_PAGED_DEBUG_INFO_x;
   type ImageArchitectureHeader_x is record
      AmaskValue : Interfaces.C.Extensions.Unsigned_1; -- bit field
      field_1 : Interfaces.C.Extensions.Unsigned_7; -- bit field
      AmaskShift : Interfaces.C.Extensions.Unsigned_8; -- bit field
      field_2 : Interfaces.C.Extensions.Unsigned_16; -- bit field
      FirstEntryRVA : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ImageArchitectureHeader_x);
   for ImageArchitectureHeader_x use record
      AmaskValue at 0 range 0..0;
      field_1 at 0 range 1..7;
      AmaskShift at 0 range 8..15;
      field_2 at 0 range 16..31;
      FirstEntryRVA at 0 range 32..63;
   end record;
   for ImageArchitectureHeader_x'Size use 64;
   for ImageArchitectureHeader_x'Alignment use 4;
   subtype IMAGE_ARCHITECTURE_HEADER is ImageArchitectureHeader_x;
   type PIMAGE_ARCHITECTURE_HEADER is access all ImageArchitectureHeader_x;
   type ImageArchitectureEntry_x is record
      FixupInstRVA : DWORD;
      NewInst : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ImageArchitectureEntry_x);
   for ImageArchitectureEntry_x use record
      FixupInstRVA at 0 range 0..31;
      NewInst at 0 range 32..63;
   end record;
   for ImageArchitectureEntry_x'Size use 64;
   for ImageArchitectureEntry_x'Alignment use 4;
   subtype IMAGE_ARCHITECTURE_ENTRY is ImageArchitectureEntry_x;
   type PIMAGE_ARCHITECTURE_ENTRY is access all ImageArchitectureEntry_x;
   type Anonymous_Record_129 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Ordinal : WORD;
         when others => 
            Hint : WORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_129);
   pragma Unchecked_Union (Anonymous_Record_129);
   for Anonymous_Record_129'Size use 16;
   for Anonymous_Record_129'Alignment use 2;
   type IMPORT_OBJECT_HEADER is record
      Sig1 : WORD;
      Sig2 : WORD;
      Version : WORD;
      Machine : WORD;
      TimeDateStamp : DWORD;
      SizeOfData : DWORD;
      field_1 : Anonymous_Record_129;
      type_x : Interfaces.C.Extensions.Unsigned_2; -- bit field
      NameType : Interfaces.C.Extensions.Unsigned_3; -- bit field
      Reserved : Interfaces.C.Extensions.Unsigned_11; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,IMPORT_OBJECT_HEADER);
   for IMPORT_OBJECT_HEADER use record
      Sig1 at 0 range 0..15;
      Sig2 at 0 range 16..31;
      Version at 0 range 32..47;
      Machine at 0 range 48..63;
      TimeDateStamp at 0 range 64..95;
      SizeOfData at 0 range 96..127;
      field_1 at 0 range 128..143;
      type_x at 0 range 144..145;
      NameType at 0 range 146..148;
      Reserved at 0 range 149..159;
   end record;
   for IMPORT_OBJECT_HEADER'Size use 160;
   for IMPORT_OBJECT_HEADER'Alignment use 4;
   type IMPORT_OBJECT_TYPE is (
      IMPORT_OBJECT_CODE,
      IMPORT_OBJECT_DATA,
      IMPORT_OBJECT_CONST
   );
   for IMPORT_OBJECT_TYPE use (
      IMPORT_OBJECT_CODE => 0,
      IMPORT_OBJECT_DATA => 1,
      IMPORT_OBJECT_CONST => 2
   );
   for IMPORT_OBJECT_TYPE'Size use 32;
   type IMPORT_OBJECT_NAME_TYPE is (
      IMPORT_OBJECT_ORDINAL,
      IMPORT_OBJECT_NAME,
      IMPORT_OBJECT_NAME_NO_PREFIX,
      IMPORT_OBJECT_NAME_UNDECORATE,
      IMPORT_OBJECT_NAME_EXPORTAS
   );
   for IMPORT_OBJECT_NAME_TYPE use (
      IMPORT_OBJECT_ORDINAL => 0,
      IMPORT_OBJECT_NAME => 1,
      IMPORT_OBJECT_NAME_NO_PREFIX => 2,
      IMPORT_OBJECT_NAME_UNDECORATE => 3,
      IMPORT_OBJECT_NAME_EXPORTAS => 4
   );
   for IMPORT_OBJECT_NAME_TYPE'Size use 32;
   type ReplacesCorHdrNumericDefines is (
      COMIMAGE_FLAGS_ILONLY,
      COR_VERSION_MAJOR_V2,
      COMIMAGE_FLAGS_IL_LIBRARY,
      COR_VERSION_MINOR,
      COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN,
      COR_VTABLE_CALL_MOST_DERIVED,
      IMAGE_COR_EATJ_THUNK_SIZE,
      COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE,
      MAX_CLASS_NAME,
      COMIMAGE_FLAGS_TRACKDEBUGDATA,
      COMIMAGE_FLAGS_32BITPREFERRED
   );
   for ReplacesCorHdrNumericDefines use (
      COMIMAGE_FLAGS_ILONLY => 1,
      COR_VERSION_MAJOR_V2 => 2,
      COMIMAGE_FLAGS_IL_LIBRARY => 4,
      COR_VERSION_MINOR => 5,
      COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN => 8,
      COR_VTABLE_CALL_MOST_DERIVED => 16,
      IMAGE_COR_EATJ_THUNK_SIZE => 32,
      COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE => 255,
      MAX_CLASS_NAME => 1024,
      COMIMAGE_FLAGS_TRACKDEBUGDATA => 65536,
      COMIMAGE_FLAGS_32BITPREFERRED => 131072
   );
   for ReplacesCorHdrNumericDefines'Size use 32;
   type Anonymous_Record_130 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            EntryPointToken : DWORD;
         when others => 
            EntryPointRVA : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_130);
   pragma Unchecked_Union (Anonymous_Record_130);
   for Anonymous_Record_130'Size use 32;
   for Anonymous_Record_130'Alignment use 4;
   type IMAGE_COR20_HEADER is record
      cb : DWORD;
      MajorRuntimeVersion : WORD;
      MinorRuntimeVersion : WORD;
      MetaData : IMAGE_DATA_DIRECTORY;
      Flags : DWORD;
      field_1 : Anonymous_Record_130;
      Resources : IMAGE_DATA_DIRECTORY;
      StrongNameSignature : IMAGE_DATA_DIRECTORY;
      CodeManagerTable : IMAGE_DATA_DIRECTORY;
      VTableFixups : IMAGE_DATA_DIRECTORY;
      ExportAddressTableJumps : IMAGE_DATA_DIRECTORY;
      ManagedNativeHeader : IMAGE_DATA_DIRECTORY;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_COR20_HEADER);
   for IMAGE_COR20_HEADER use record
      cb at 0 range 0..31;
      MajorRuntimeVersion at 0 range 32..47;
      MinorRuntimeVersion at 0 range 48..63;
      MetaData at 0 range 64..127;
      Flags at 0 range 128..159;
      field_1 at 0 range 160..191;
      Resources at 0 range 192..255;
      StrongNameSignature at 0 range 256..319;
      CodeManagerTable at 0 range 320..383;
      VTableFixups at 0 range 384..447;
      ExportAddressTableJumps at 0 range 448..511;
      ManagedNativeHeader at 0 range 512..575;
   end record;
   for IMAGE_COR20_HEADER'Size use 576;
   for IMAGE_COR20_HEADER'Alignment use 4;
   type PIMAGE_COR20_HEADER is access all IMAGE_COR20_HEADER;
   function RtlCaptureStackBackTrace(
      FramesToSkip : DWORD;
      FramesToCapture : DWORD;
      BackTrace : access PVOID;
      BackTraceHash : PDWORD
   ) return WORD;
   pragma import (Cpp,RtlCaptureStackBackTrace,"RtlCaptureStackBackTrace");
   procedure RtlCaptureContext(
      ContextRecord : PCONTEXT
   );
   pragma import (Cpp,RtlCaptureContext,"RtlCaptureContext");
   procedure RtlCaptureContext2(
      ContextRecord : PCONTEXT
   );
   pragma import (Cpp,RtlCaptureContext2,"RtlCaptureContext2");
   procedure RtlUnwind(
      TargetFrame : PVOID;
      TargetIp : PVOID;
      ExceptionRecord : PEXCEPTION_RECORD;
      ReturnValue : PVOID
   );
   pragma import (Cpp,RtlUnwind,"RtlUnwind");
   function RtlAddFunctionTable(
      FunctionTable : PRUNTIME_FUNCTION;
      EntryCount : DWORD;
      BaseAddress : DWORD64
   ) return BOOLEAN;
   pragma import (Cpp,RtlAddFunctionTable,"RtlAddFunctionTable");
   function RtlDeleteFunctionTable(
      FunctionTable : PRUNTIME_FUNCTION
   ) return BOOLEAN;
   pragma import (Cpp,RtlDeleteFunctionTable,"RtlDeleteFunctionTable");
   function RtlInstallFunctionTableCallback(
      TableIdentifier : DWORD64;
      BaseAddress : DWORD64;
      Length : DWORD;
      Callback : PGET_RUNTIME_FUNCTION_CALLBACK;
      Context_x : PVOID;
      OutOfProcessCallbackDll : PCWSTR
   ) return BOOLEAN;
   pragma import (Cpp,RtlInstallFunctionTableCallback,"RtlInstallFunctionTableCallback");
   function RtlAddGrowableFunctionTable(
      DynamicTable : access PVOID;
      FunctionTable : PRUNTIME_FUNCTION;
      EntryCount : DWORD;
      MaximumEntryCount : DWORD;
      RangeBase : ULONG_PTR;
      RangeEnd : ULONG_PTR
   ) return DWORD;
   pragma import (Cpp,RtlAddGrowableFunctionTable,"RtlAddGrowableFunctionTable");
   procedure RtlGrowFunctionTable(
      DynamicTable : PVOID;
      NewEntryCount : DWORD
   );
   pragma import (Cpp,RtlGrowFunctionTable,"RtlGrowFunctionTable");
   procedure RtlDeleteGrowableFunctionTable(
      DynamicTable : PVOID
   );
   pragma import (Cpp,RtlDeleteGrowableFunctionTable,"RtlDeleteGrowableFunctionTable");
   function RtlLookupFunctionEntry(
      ControlPc : DWORD64;
      ImageBase : PDWORD64;
      HistoryTable : PUNWIND_HISTORY_TABLE
   ) return PRUNTIME_FUNCTION;
   pragma import (Cpp,RtlLookupFunctionEntry,"RtlLookupFunctionEntry");
   procedure RtlRestoreContext(
      ContextRecord : PCONTEXT;
      ExceptionRecord : access EXCEPTION_RECORD_x
   );
   pragma import (Cpp,RtlRestoreContext,"RtlRestoreContext");
   procedure RtlUnwindEx(
      TargetFrame : PVOID;
      TargetIp : PVOID;
      ExceptionRecord : PEXCEPTION_RECORD;
      ReturnValue : PVOID;
      ContextRecord : PCONTEXT;
      HistoryTable : PUNWIND_HISTORY_TABLE
   );
   pragma import (Cpp,RtlUnwindEx,"RtlUnwindEx");
   function RtlVirtualUnwind(
      HandlerType : DWORD;
      ImageBase : DWORD64;
      ControlPc : DWORD64;
      FunctionEntry : PRUNTIME_FUNCTION;
      ContextRecord : PCONTEXT;
      HandlerData : access PVOID;
      EstablisherFrame : PDWORD64;
      ContextPointers : PKNONVOLATILE_CONTEXT_POINTERS
   ) return PEXCEPTION_ROUTINE;
   pragma import (Cpp,RtlVirtualUnwind,"RtlVirtualUnwind");
   procedure RtlRaiseException(
      ExceptionRecord : PEXCEPTION_RECORD
   );
   pragma import (Cpp,RtlRaiseException,"RtlRaiseException");
   procedure RtlPcToFileHeader(
      PcValue : PVOID;
      BaseOfImage : access PVOID
   );
   pragma import (Cpp,RtlPcToFileHeader,"RtlPcToFileHeader");
   function RtlCompareMemory(
      Source1 : access Void;
      Source2 : access Void;
      Length : SIZE_T
   ) return SIZE_T;
   pragma import (Cpp,RtlCompareMemory,"RtlCompareMemory");
   type SLIST_ENTRY_x;
   subtype SLIST_ENTRY is SLIST_ENTRY_x;
   type SLIST_ENTRY_x is record
      Next : access SLIST_ENTRY_x;
   end record;
   pragma Convention (C_Pass_By_Copy,SLIST_ENTRY_x);
   for SLIST_ENTRY_x use record
      Next at 0 range 0..63;
   end record;
   for SLIST_ENTRY_x'Size use 128;
   for SLIST_ENTRY_x'Alignment use 16;
   type PSLIST_ENTRY is access all SLIST_ENTRY_x;
   type Anonymous_Record_131 is record
      Alignment : ULONGLONG;
      Region : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_131);
   for Anonymous_Record_131 use record
      Alignment at 0 range 0..63;
      Region at 0 range 64..127;
   end record;
   for Anonymous_Record_131'Size use 128;
   for Anonymous_Record_131'Alignment use 8;
   type Anonymous_Record_132 is record
      Depth : Interfaces.C.Extensions.Unsigned_16; -- bit field
      Sequence : Interfaces.C.Extensions.Unsigned_48; -- bit field
      Reserved : Interfaces.C.Extensions.Unsigned_4; -- bit field
      NextEntry : Interfaces.C.Extensions.Unsigned_60; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_132);
   for Anonymous_Record_132 use record
      Depth at 0 range 0..15;
      Sequence at 0 range 16..63;
      Reserved at 0 range 64..67;
      NextEntry at 0 range 68..127;
   end record;
   for Anonymous_Record_132'Size use 128;
   for Anonymous_Record_132'Alignment use 8;
   type SLIST_HEADER_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_131;
         when others => 
            field_2 : Anonymous_Record_132;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,SLIST_HEADER_x);
   pragma Unchecked_Union (SLIST_HEADER_x);
   for SLIST_HEADER_x'Size use 128;
   for SLIST_HEADER_x'Alignment use 16;
   subtype SLIST_HEADER is SLIST_HEADER_x;
   type PSLIST_HEADER is access all SLIST_HEADER_x;
   procedure RtlInitializeSListHead(
      ListHead : PSLIST_HEADER
   );
   pragma import (Cpp,RtlInitializeSListHead,"RtlInitializeSListHead");
   function RtlFirstEntrySList(
      ListHead : access constant SLIST_HEADER
   ) return PSLIST_ENTRY;
   pragma import (Cpp,RtlFirstEntrySList,"RtlFirstEntrySList");
   function RtlInterlockedPopEntrySList(
      ListHead : PSLIST_HEADER
   ) return PSLIST_ENTRY;
   pragma import (Cpp,RtlInterlockedPopEntrySList,"RtlInterlockedPopEntrySList");
   function RtlInterlockedPushEntrySList(
      ListHead : PSLIST_HEADER;
      ListEntry : PSLIST_ENTRY
   ) return PSLIST_ENTRY;
   pragma import (Cpp,RtlInterlockedPushEntrySList,"RtlInterlockedPushEntrySList");
   function RtlInterlockedPushListSListEx(
      ListHead : PSLIST_HEADER;
      List : PSLIST_ENTRY;
      ListEnd : PSLIST_ENTRY;
      Count : DWORD
   ) return PSLIST_ENTRY;
   pragma import (Cpp,RtlInterlockedPushListSListEx,"RtlInterlockedPushListSListEx");
   function RtlInterlockedFlushSList(
      ListHead : PSLIST_HEADER
   ) return PSLIST_ENTRY;
   pragma import (Cpp,RtlInterlockedFlushSList,"RtlInterlockedFlushSList");
   function RtlQueryDepthSList(
      ListHead : PSLIST_HEADER
   ) return WORD;
   pragma import (Cpp,RtlQueryDepthSList,"RtlQueryDepthSList");
   function RtlGetReturnAddressHijackTarget return ULONG_PTR;
   pragma import (Cpp,RtlGetReturnAddressHijackTarget,"RtlGetReturnAddressHijackTarget");
   type RTL_RUN_ONCE_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            Ptr : PVOID;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,RTL_RUN_ONCE_x);
   pragma Unchecked_Union (RTL_RUN_ONCE_x);
   for RTL_RUN_ONCE_x'Size use 64;
   for RTL_RUN_ONCE_x'Alignment use 8;
   subtype RTL_RUN_ONCE is RTL_RUN_ONCE_x;
   type PRTL_RUN_ONCE is access all RTL_RUN_ONCE_x;
   type RTL_BARRIER_x_Reserved3_Array is array(1..2) of ULONG_PTR; -- Auto Generated Dependancy
   type RTL_BARRIER_x is record
      Reserved1 : DWORD;
      Reserved2 : DWORD;
      Reserved3 : RTL_BARRIER_x_Reserved3_Array;
      Reserved4 : DWORD;
      Reserved5 : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,RTL_BARRIER_x);
   for RTL_BARRIER_x use record
      Reserved1 at 0 range 0..31;
      Reserved2 at 0 range 32..63;
      Reserved3 at 0 range 64..191;
      Reserved4 at 0 range 192..223;
      Reserved5 at 0 range 224..255;
   end record;
   for RTL_BARRIER_x'Size use 256;
   for RTL_BARRIER_x'Alignment use 8;
   subtype RTL_BARRIER is RTL_BARRIER_x;
   type PRTL_BARRIER is access all RTL_BARRIER_x;
   procedure fastfail(
      Code : Interfaces.C.unsigned
   );
   pragma import (Cpp,fastfail,"__fastfail");
   -- HEAP_MAKE_TAG_FLAGS(); -- inlined function not supported
   -- RtlSecureZeroMemory(); -- inlined function not supported
   type MESSAGE_RESOURCE_ENTRY_x_Text_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type MESSAGE_RESOURCE_ENTRY_x is record
      Length : WORD;
      Flags : WORD;
      Text : MESSAGE_RESOURCE_ENTRY_x_Text_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,MESSAGE_RESOURCE_ENTRY_x);
   for MESSAGE_RESOURCE_ENTRY_x use record
      Length at 0 range 0..15;
      Flags at 0 range 16..31;
      Text at 0 range 32..39;
   end record;
   for MESSAGE_RESOURCE_ENTRY_x'Size use 48;
   for MESSAGE_RESOURCE_ENTRY_x'Alignment use 2;
   subtype MESSAGE_RESOURCE_ENTRY is MESSAGE_RESOURCE_ENTRY_x;
   type PMESSAGE_RESOURCE_ENTRY is access all MESSAGE_RESOURCE_ENTRY_x;
   type MESSAGE_RESOURCE_BLOCK_x is record
      LowId : DWORD;
      HighId : DWORD;
      OffsetToEntries : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,MESSAGE_RESOURCE_BLOCK_x);
   for MESSAGE_RESOURCE_BLOCK_x use record
      LowId at 0 range 0..31;
      HighId at 0 range 32..63;
      OffsetToEntries at 0 range 64..95;
   end record;
   for MESSAGE_RESOURCE_BLOCK_x'Size use 96;
   for MESSAGE_RESOURCE_BLOCK_x'Alignment use 4;
   subtype MESSAGE_RESOURCE_BLOCK is MESSAGE_RESOURCE_BLOCK_x;
   type PMESSAGE_RESOURCE_BLOCK is access all MESSAGE_RESOURCE_BLOCK_x;
   type MESSAGE_RESOURCE_DATA_x_Blocks_Array is array(1..1) of MESSAGE_RESOURCE_BLOCK; -- Auto Generated Dependancy
   type MESSAGE_RESOURCE_DATA_x is record
      NumberOfBlocks : DWORD;
      Blocks : MESSAGE_RESOURCE_DATA_x_Blocks_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,MESSAGE_RESOURCE_DATA_x);
   for MESSAGE_RESOURCE_DATA_x use record
      NumberOfBlocks at 0 range 0..31;
      Blocks at 0 range 32..127;
   end record;
   for MESSAGE_RESOURCE_DATA_x'Size use 128;
   for MESSAGE_RESOURCE_DATA_x'Alignment use 4;
   subtype MESSAGE_RESOURCE_DATA is MESSAGE_RESOURCE_DATA_x;
   type PMESSAGE_RESOURCE_DATA is access all MESSAGE_RESOURCE_DATA_x;
   type OSVERSIONINFOA_x_szCSDVersion_Array is array(1..128) of CHAR; -- Auto Generated Dependancy
   type OSVERSIONINFOA_x is record
      dwOSVersionInfoSize : DWORD;
      dwMajorVersion : DWORD;
      dwMinorVersion : DWORD;
      dwBuildNumber : DWORD;
      dwPlatformId : DWORD;
      szCSDVersion : OSVERSIONINFOA_x_szCSDVersion_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,OSVERSIONINFOA_x);
   for OSVERSIONINFOA_x use record
      dwOSVersionInfoSize at 0 range 0..31;
      dwMajorVersion at 0 range 32..63;
      dwMinorVersion at 0 range 64..95;
      dwBuildNumber at 0 range 96..127;
      dwPlatformId at 0 range 128..159;
      szCSDVersion at 0 range 160..1183;
   end record;
   for OSVERSIONINFOA_x'Size use 1184;
   for OSVERSIONINFOA_x'Alignment use 4;
   subtype OSVERSIONINFOA is OSVERSIONINFOA_x;
   type POSVERSIONINFOA is access all OSVERSIONINFOA_x;
   type LPOSVERSIONINFOA is access all OSVERSIONINFOA_x;
   type OSVERSIONINFOW_x_szCSDVersion_Array is array(1..128) of WCHAR; -- Auto Generated Dependancy
   type OSVERSIONINFOW_x is record
      dwOSVersionInfoSize : DWORD;
      dwMajorVersion : DWORD;
      dwMinorVersion : DWORD;
      dwBuildNumber : DWORD;
      dwPlatformId : DWORD;
      szCSDVersion : OSVERSIONINFOW_x_szCSDVersion_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,OSVERSIONINFOW_x);
   for OSVERSIONINFOW_x use record
      dwOSVersionInfoSize at 0 range 0..31;
      dwMajorVersion at 0 range 32..63;
      dwMinorVersion at 0 range 64..95;
      dwBuildNumber at 0 range 96..127;
      dwPlatformId at 0 range 128..159;
      szCSDVersion at 0 range 160..2207;
   end record;
   for OSVERSIONINFOW_x'Size use 2208;
   for OSVERSIONINFOW_x'Alignment use 4;
   subtype OSVERSIONINFOW is OSVERSIONINFOW_x;
   type POSVERSIONINFOW is access all OSVERSIONINFOW_x;
   type LPOSVERSIONINFOW is access all OSVERSIONINFOW_x;
   subtype RTL_OSVERSIONINFOW is OSVERSIONINFOW_x;
   type PRTL_OSVERSIONINFOW is access all OSVERSIONINFOW_x;
   subtype OSVERSIONINFO is OSVERSIONINFOA;
   subtype POSVERSIONINFO is POSVERSIONINFOA;
   subtype LPOSVERSIONINFO is LPOSVERSIONINFOA;
   type OSVERSIONINFOEXA_x_szCSDVersion_Array is array(1..128) of CHAR; -- Auto Generated Dependancy
   type OSVERSIONINFOEXA_x is record
      dwOSVersionInfoSize : DWORD;
      dwMajorVersion : DWORD;
      dwMinorVersion : DWORD;
      dwBuildNumber : DWORD;
      dwPlatformId : DWORD;
      szCSDVersion : OSVERSIONINFOEXA_x_szCSDVersion_Array;
      wServicePackMajor : WORD;
      wServicePackMinor : WORD;
      wSuiteMask : WORD;
      wProductType : BYTE;
      wReserved : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,OSVERSIONINFOEXA_x);
   for OSVERSIONINFOEXA_x use record
      dwOSVersionInfoSize at 0 range 0..31;
      dwMajorVersion at 0 range 32..63;
      dwMinorVersion at 0 range 64..95;
      dwBuildNumber at 0 range 96..127;
      dwPlatformId at 0 range 128..159;
      szCSDVersion at 0 range 160..1183;
      wServicePackMajor at 0 range 1184..1199;
      wServicePackMinor at 0 range 1200..1215;
      wSuiteMask at 0 range 1216..1231;
      wProductType at 0 range 1232..1239;
      wReserved at 0 range 1240..1247;
   end record;
   for OSVERSIONINFOEXA_x'Size use 1248;
   for OSVERSIONINFOEXA_x'Alignment use 4;
   subtype OSVERSIONINFOEXA is OSVERSIONINFOEXA_x;
   type POSVERSIONINFOEXA is access all OSVERSIONINFOEXA_x;
   type LPOSVERSIONINFOEXA is access all OSVERSIONINFOEXA_x;
   type OSVERSIONINFOEXW_x_szCSDVersion_Array is array(1..128) of WCHAR; -- Auto Generated Dependancy
   type OSVERSIONINFOEXW_x is record
      dwOSVersionInfoSize : DWORD;
      dwMajorVersion : DWORD;
      dwMinorVersion : DWORD;
      dwBuildNumber : DWORD;
      dwPlatformId : DWORD;
      szCSDVersion : OSVERSIONINFOEXW_x_szCSDVersion_Array;
      wServicePackMajor : WORD;
      wServicePackMinor : WORD;
      wSuiteMask : WORD;
      wProductType : BYTE;
      wReserved : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,OSVERSIONINFOEXW_x);
   for OSVERSIONINFOEXW_x use record
      dwOSVersionInfoSize at 0 range 0..31;
      dwMajorVersion at 0 range 32..63;
      dwMinorVersion at 0 range 64..95;
      dwBuildNumber at 0 range 96..127;
      dwPlatformId at 0 range 128..159;
      szCSDVersion at 0 range 160..2207;
      wServicePackMajor at 0 range 2208..2223;
      wServicePackMinor at 0 range 2224..2239;
      wSuiteMask at 0 range 2240..2255;
      wProductType at 0 range 2256..2263;
      wReserved at 0 range 2264..2271;
   end record;
   for OSVERSIONINFOEXW_x'Size use 2272;
   for OSVERSIONINFOEXW_x'Alignment use 4;
   subtype OSVERSIONINFOEXW is OSVERSIONINFOEXW_x;
   type POSVERSIONINFOEXW is access all OSVERSIONINFOEXW_x;
   type LPOSVERSIONINFOEXW is access all OSVERSIONINFOEXW_x;
   subtype RTL_OSVERSIONINFOEXW is OSVERSIONINFOEXW_x;
   type PRTL_OSVERSIONINFOEXW is access all OSVERSIONINFOEXW_x;
   subtype OSVERSIONINFOEX is OSVERSIONINFOEXA;
   subtype POSVERSIONINFOEX is POSVERSIONINFOEXA;
   subtype LPOSVERSIONINFOEX is LPOSVERSIONINFOEXA;
   function VerSetConditionMask(
      ConditionMask : ULONGLONG;
      TypeMask : DWORD;
      Condition : BYTE
   ) return ULONGLONG;
   pragma import (Cpp,VerSetConditionMask,"VerSetConditionMask");
   function RtlGetProductInfo(
      OSMajorVersion : DWORD;
      OSMinorVersion : DWORD;
      SpMajorVersion : DWORD;
      SpMinorVersion : DWORD;
      ReturnedProductType : PDWORD
   ) return BOOLEAN;
   pragma import (Cpp,RtlGetProductInfo,"RtlGetProductInfo");
   type RTL_UMS_THREAD_INFO_CLASS_x is (
      UmsThreadInvalidInfoClass,
      UmsThreadUserContext,
      UmsThreadPriority,
      UmsThreadAffinity,
      UmsThreadTeb,
      UmsThreadIsSuspended,
      UmsThreadIsTerminated,
      UmsThreadMaxInfoClass
   );
   for RTL_UMS_THREAD_INFO_CLASS_x use (
      UmsThreadInvalidInfoClass => 0,
      UmsThreadUserContext => 1,
      UmsThreadPriority => 2,
      UmsThreadAffinity => 3,
      UmsThreadTeb => 4,
      UmsThreadIsSuspended => 5,
      UmsThreadIsTerminated => 6,
      UmsThreadMaxInfoClass => 7
   );
   for RTL_UMS_THREAD_INFO_CLASS_x'Size use 32;
   subtype RTL_UMS_THREAD_INFO_CLASS is RTL_UMS_THREAD_INFO_CLASS_x;
   type PRTL_UMS_THREAD_INFO_CLASS is access all RTL_UMS_THREAD_INFO_CLASS_x;
   type RTL_UMS_SCHEDULER_REASON_x is (
      UmsSchedulerStartup,
      UmsSchedulerThreadBlocked,
      UmsSchedulerThreadYield
   );
   for RTL_UMS_SCHEDULER_REASON_x use (
      UmsSchedulerStartup => 0,
      UmsSchedulerThreadBlocked => 1,
      UmsSchedulerThreadYield => 2
   );
   for RTL_UMS_SCHEDULER_REASON_x'Size use 32;
   subtype RTL_UMS_SCHEDULER_REASON is RTL_UMS_SCHEDULER_REASON_x;
   type PRTL_UMS_SCHEDULER_REASON is access all RTL_UMS_SCHEDULER_REASON_x;
   subtype RTL_UMS_SCHEDULER_ENTRY_POINT is System.Address; -- [Note - CXType_FunctionProto] Profile - void (RTL_UMS_SCHEDULER_REASON, ULONG_PTR, PVOID)
   type PRTL_UMS_SCHEDULER_ENTRY_POINT is access procedure (p1 : RTL_UMS_SCHEDULER_REASON ; p2 : ULONG_PTR ; p3 : PVOID); -- void (RTL_UMS_SCHEDULER_REASON, ULONG_PTR, PVOID)
   pragma Convention(C,PRTL_UMS_SCHEDULER_ENTRY_POINT);
   function RtlCrc32(
      Buffer : access Void;
      Size : size_t;
      InitialCrc : DWORD
   ) return DWORD;
   pragma import (Cpp,RtlCrc32,"RtlCrc32");
   function RtlCrc64(
      Buffer : access Void;
      Size : size_t;
      InitialCrc : ULONGLONG
   ) return ULONGLONG;
   pragma import (Cpp,RtlCrc64,"RtlCrc64");
   type OS_DEPLOYEMENT_STATE_VALUES_x is (
      OS_DEPLOYMENT_STANDARD,
      OS_DEPLOYMENT_COMPACT
   );
   for OS_DEPLOYEMENT_STATE_VALUES_x use (
      OS_DEPLOYMENT_STANDARD => 1,
      OS_DEPLOYMENT_COMPACT => 2
   );
   for OS_DEPLOYEMENT_STATE_VALUES_x'Size use 32;
   subtype OS_DEPLOYEMENT_STATE_VALUES is OS_DEPLOYEMENT_STATE_VALUES_x;
   function RtlOsDeploymentState(
      Flags : DWORD
   ) return OS_DEPLOYEMENT_STATE_VALUES;
   pragma import (Cpp,RtlOsDeploymentState,"RtlOsDeploymentState");
   type NV_MEMORY_RANGE_x is record
      BaseAddress : access Void;
      Length : SIZE_T;
   end record;
   pragma Convention (C_Pass_By_Copy,NV_MEMORY_RANGE_x);
   for NV_MEMORY_RANGE_x use record
      BaseAddress at 0 range 0..63;
      Length at 0 range 64..127;
   end record;
   for NV_MEMORY_RANGE_x'Size use 128;
   for NV_MEMORY_RANGE_x'Alignment use 8;
   subtype NV_MEMORY_RANGE is NV_MEMORY_RANGE_x;
   type PNV_MEMORY_RANGE is access all NV_MEMORY_RANGE_x;
   function RtlGetNonVolatileToken(
      NvBuffer : PVOID;
      Size : SIZE_T;
      NvToken : access PVOID
   ) return DWORD;
   pragma import (Cpp,RtlGetNonVolatileToken,"RtlGetNonVolatileToken");
   function RtlFreeNonVolatileToken(
      NvToken : PVOID
   ) return DWORD;
   pragma import (Cpp,RtlFreeNonVolatileToken,"RtlFreeNonVolatileToken");
   function RtlFlushNonVolatileMemory(
      NvToken : PVOID;
      NvBuffer : PVOID;
      Size : SIZE_T;
      Flags : DWORD
   ) return DWORD;
   pragma import (Cpp,RtlFlushNonVolatileMemory,"RtlFlushNonVolatileMemory");
   function RtlDrainNonVolatileFlush(
      NvToken : PVOID
   ) return DWORD;
   pragma import (Cpp,RtlDrainNonVolatileFlush,"RtlDrainNonVolatileFlush");
   function RtlWriteNonVolatileMemory(
      NvToken : PVOID;
      NvDestination : access Void;
      Source : access Void;
      Size : SIZE_T;
      Flags : DWORD
   ) return DWORD;
   pragma import (Cpp,RtlWriteNonVolatileMemory,"RtlWriteNonVolatileMemory");
   function RtlFillNonVolatileMemory(
      NvToken : PVOID;
      NvDestination : access Void;
      Size : SIZE_T;
      Value : BYTE;
      Flags : DWORD
   ) return DWORD;
   pragma import (Cpp,RtlFillNonVolatileMemory,"RtlFillNonVolatileMemory");
   function RtlFlushNonVolatileMemoryRanges(
      NvToken : PVOID;
      NvRanges : PNV_MEMORY_RANGE;
      NumRanges : SIZE_T;
      Flags : DWORD
   ) return DWORD;
   pragma import (Cpp,RtlFlushNonVolatileMemoryRanges,"RtlFlushNonVolatileMemoryRanges");
   type CORRELATION_VECTOR_Vector_Array is array(1..129) of CHAR; -- Auto Generated Dependancy
   type CORRELATION_VECTOR is record
      Version : CHAR;
      Vector : CORRELATION_VECTOR_Vector_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,CORRELATION_VECTOR);
   for CORRELATION_VECTOR use record
      Version at 0 range 0..7;
      Vector at 0 range 8..1039;
   end record;
   for CORRELATION_VECTOR'Size use 1040;
   for CORRELATION_VECTOR'Alignment use 1;
   type PCORRELATION_VECTOR is access all CORRELATION_VECTOR;
   function RtlInitializeCorrelationVector(
      CorrelationVector : PCORRELATION_VECTOR;
      Version : Interfaces.C.Int;
      Guid_x : access constant GUID
   ) return DWORD;
   pragma import (Cpp,RtlInitializeCorrelationVector,"RtlInitializeCorrelationVector");
   function RtlIncrementCorrelationVector(
      CorrelationVector : PCORRELATION_VECTOR
   ) return DWORD;
   pragma import (Cpp,RtlIncrementCorrelationVector,"RtlIncrementCorrelationVector");
   function RtlExtendCorrelationVector(
      CorrelationVector : PCORRELATION_VECTOR
   ) return DWORD;
   pragma import (Cpp,RtlExtendCorrelationVector,"RtlExtendCorrelationVector");
   function RtlValidateCorrelationVector(
      Vector : PCORRELATION_VECTOR
   ) return DWORD;
   pragma import (Cpp,RtlValidateCorrelationVector,"RtlValidateCorrelationVector");
   type CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG_x is record
      Size : DWORD;
      TriggerId : PCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG_x);
   for CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG_x use record
      Size at 0 range 0..31;
      TriggerId at 0 range 64..127;
   end record;
   for CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG_x'Size use 128;
   for CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG_x'Alignment use 8;
   subtype CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG is CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG_x;
   type PCUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG is access all CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG_x;
   -- CUSTOM_SYSTEM_EVENT_TRIGGER_INIT(); -- inlined function not supported
   function RtlRaiseCustomSystemEventTrigger(
      TriggerConfig : PCUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG
   ) return DWORD;
   pragma import (Cpp,RtlRaiseCustomSystemEventTrigger,"RtlRaiseCustomSystemEventTrigger");
   type IMAGE_POLICY_ENTRY_TYPE_x is (
      ImagePolicyEntryTypeNone,
      ImagePolicyEntryTypeBool,
      ImagePolicyEntryTypeInt8,
      ImagePolicyEntryTypeUInt8,
      ImagePolicyEntryTypeInt16,
      ImagePolicyEntryTypeUInt16,
      ImagePolicyEntryTypeInt32,
      ImagePolicyEntryTypeUInt32,
      ImagePolicyEntryTypeInt64,
      ImagePolicyEntryTypeUInt64,
      ImagePolicyEntryTypeAnsiString,
      ImagePolicyEntryTypeUnicodeString,
      ImagePolicyEntryTypeOverride,
      ImagePolicyEntryTypeMaximum
   );
   for IMAGE_POLICY_ENTRY_TYPE_x use (
      ImagePolicyEntryTypeNone => 0,
      ImagePolicyEntryTypeBool => 1,
      ImagePolicyEntryTypeInt8 => 2,
      ImagePolicyEntryTypeUInt8 => 3,
      ImagePolicyEntryTypeInt16 => 4,
      ImagePolicyEntryTypeUInt16 => 5,
      ImagePolicyEntryTypeInt32 => 6,
      ImagePolicyEntryTypeUInt32 => 7,
      ImagePolicyEntryTypeInt64 => 8,
      ImagePolicyEntryTypeUInt64 => 9,
      ImagePolicyEntryTypeAnsiString => 10,
      ImagePolicyEntryTypeUnicodeString => 11,
      ImagePolicyEntryTypeOverride => 12,
      ImagePolicyEntryTypeMaximum => 13
   );
   for IMAGE_POLICY_ENTRY_TYPE_x'Size use 32;
   subtype IMAGE_POLICY_ENTRY_TYPE is IMAGE_POLICY_ENTRY_TYPE_x;
   type IMAGE_POLICY_ID_x is (
      ImagePolicyIdNone,
      ImagePolicyIdEtw,
      ImagePolicyIdDebug,
      ImagePolicyIdCrashDump,
      ImagePolicyIdCrashDumpKey,
      ImagePolicyIdCrashDumpKeyGuid,
      ImagePolicyIdParentSd,
      ImagePolicyIdParentSdRev,
      ImagePolicyIdSvn,
      ImagePolicyIdDeviceId,
      ImagePolicyIdCapability,
      ImagePolicyIdScenarioId,
      ImagePolicyIdMaximum
   );
   for IMAGE_POLICY_ID_x use (
      ImagePolicyIdNone => 0,
      ImagePolicyIdEtw => 1,
      ImagePolicyIdDebug => 2,
      ImagePolicyIdCrashDump => 3,
      ImagePolicyIdCrashDumpKey => 4,
      ImagePolicyIdCrashDumpKeyGuid => 5,
      ImagePolicyIdParentSd => 6,
      ImagePolicyIdParentSdRev => 7,
      ImagePolicyIdSvn => 8,
      ImagePolicyIdDeviceId => 9,
      ImagePolicyIdCapability => 10,
      ImagePolicyIdScenarioId => 11,
      ImagePolicyIdMaximum => 12
   );
   for IMAGE_POLICY_ID_x'Size use 32;
   subtype IMAGE_POLICY_ID is IMAGE_POLICY_ID_x;
   type Anonymous_Record_133 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            None : access Void;
         when 1 =>
            BoolValue : BOOLEAN;
         when 2 =>
            Int8Value : INT8;
         when 3 =>
            UInt8Value : UINT8;
         when 4 =>
            Int16Value : INT16;
         when 5 =>
            UInt16Value : UINT16;
         when 6 =>
            Int32Value : INT32;
         when 7 =>
            UInt32Value : UINT32;
         when 8 =>
            Int64Value : INT64;
         when 9 =>
            UInt64Value : UINT64;
         when 10 =>
            AnsiStringValue : PCSTR;
         when others => 
            UnicodeStringValue : PCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_133);
   pragma Unchecked_Union (Anonymous_Record_133);
   for Anonymous_Record_133'Size use 64;
   for Anonymous_Record_133'Alignment use 8;
   type IMAGE_POLICY_ENTRY_x is record
      type_x : IMAGE_POLICY_ENTRY_TYPE;
      PolicyId : IMAGE_POLICY_ID;
      field_1 : Anonymous_Record_133;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_POLICY_ENTRY_x);
   for IMAGE_POLICY_ENTRY_x use record
      type_x at 0 range 0..31;
      PolicyId at 0 range 32..63;
      field_1 at 0 range 64..127;
   end record;
   for IMAGE_POLICY_ENTRY_x'Size use 128;
   for IMAGE_POLICY_ENTRY_x'Alignment use 8;
   subtype IMAGE_POLICY_ENTRY is IMAGE_POLICY_ENTRY_x;
   type PCIMAGE_POLICY_ENTRY is access constant IMAGE_POLICY_ENTRY;
   type IMAGE_POLICY_METADATA_x_Reserved0_Array is array(1..7) of BYTE; -- Auto Generated Dependancy
   type IMAGE_POLICY_METADATA_x is record
      Version : BYTE;
      Reserved0 : IMAGE_POLICY_METADATA_x_Reserved0_Array;
      ApplicationId : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGE_POLICY_METADATA_x);
   for IMAGE_POLICY_METADATA_x use record
      Version at 0 range 0..7;
      Reserved0 at 0 range 8..63;
      ApplicationId at 0 range 64..127;
   end record;
   for IMAGE_POLICY_METADATA_x'Size use 128;
   for IMAGE_POLICY_METADATA_x'Alignment use 8;
   subtype IMAGE_POLICY_METADATA is IMAGE_POLICY_METADATA_x;
   type PCIMAGE_POLICY_METADATA is access constant IMAGE_POLICY_METADATA;
   function RtlIsZeroMemory(
      Buffer : PVOID;
      Length : SIZE_T
   ) return BOOLEAN;
   pragma import (Cpp,RtlIsZeroMemory,"RtlIsZeroMemory");
   function RtlNormalizeSecurityDescriptor(
      SecurityDescriptor : access PSECURITY_DESCRIPTOR;
      SecurityDescriptorLength : DWORD;
      NewSecurityDescriptor : access PSECURITY_DESCRIPTOR;
      NewSecurityDescriptorLength : PDWORD;
      CheckOnly : BOOLEAN
   ) return BOOLEAN;
   pragma import (Cpp,RtlNormalizeSecurityDescriptor,"RtlNormalizeSecurityDescriptor");
   type RTL_CRITICAL_SECTION_x;
   type RTL_CRITICAL_SECTION_DEBUG_x is record
      type_x : WORD;
      CreatorBackTraceIndex : WORD;
      CriticalSection : access RTL_CRITICAL_SECTION_x;
      ProcessLocksList : LIST_ENTRY;
      EntryCount : DWORD;
      ContentionCount : DWORD;
      Flags : DWORD;
      CreatorBackTraceIndexHigh : WORD;
      SpareWORD : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,RTL_CRITICAL_SECTION_DEBUG_x);
   for RTL_CRITICAL_SECTION_DEBUG_x use record
      type_x at 0 range 0..15;
      CreatorBackTraceIndex at 0 range 16..31;
      CriticalSection at 0 range 64..127;
      ProcessLocksList at 0 range 128..255;
      EntryCount at 0 range 256..287;
      ContentionCount at 0 range 288..319;
      Flags at 0 range 320..351;
      CreatorBackTraceIndexHigh at 0 range 352..367;
      SpareWORD at 0 range 368..383;
   end record;
   for RTL_CRITICAL_SECTION_DEBUG_x'Size use 384;
   for RTL_CRITICAL_SECTION_DEBUG_x'Alignment use 8;
   subtype RTL_CRITICAL_SECTION_DEBUG is RTL_CRITICAL_SECTION_DEBUG_x;
   type PRTL_CRITICAL_SECTION_DEBUG is access all RTL_CRITICAL_SECTION_DEBUG_x;
   subtype RTL_RESOURCE_DEBUG is RTL_CRITICAL_SECTION_DEBUG_x;
   type PRTL_RESOURCE_DEBUG is access all RTL_CRITICAL_SECTION_DEBUG_x;
   type RTL_CRITICAL_SECTION_x is record
      DebugInfo : PRTL_CRITICAL_SECTION_DEBUG;
      LockCount : LONG;
      RecursionCount : LONG;
      OwningThread : HANDLE;
      LockSemaphore : HANDLE;
      SpinCount : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,RTL_CRITICAL_SECTION_x);
   for RTL_CRITICAL_SECTION_x use record
      DebugInfo at 0 range 0..63;
      LockCount at 0 range 64..95;
      RecursionCount at 0 range 96..127;
      OwningThread at 0 range 128..191;
      LockSemaphore at 0 range 192..255;
      SpinCount at 0 range 256..319;
   end record;
   for RTL_CRITICAL_SECTION_x'Size use 320;
   for RTL_CRITICAL_SECTION_x'Alignment use 8;
   subtype RTL_CRITICAL_SECTION is RTL_CRITICAL_SECTION_x;
   type PRTL_CRITICAL_SECTION is access all RTL_CRITICAL_SECTION_x;
   type RTL_SRWLOCK_x is record
      Ptr : PVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,RTL_SRWLOCK_x);
   for RTL_SRWLOCK_x use record
      Ptr at 0 range 0..63;
   end record;
   for RTL_SRWLOCK_x'Size use 64;
   for RTL_SRWLOCK_x'Alignment use 8;
   subtype RTL_SRWLOCK is RTL_SRWLOCK_x;
   type PRTL_SRWLOCK is access all RTL_SRWLOCK_x;
   type RTL_CONDITION_VARIABLE_x is record
      Ptr : PVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,RTL_CONDITION_VARIABLE_x);
   for RTL_CONDITION_VARIABLE_x use record
      Ptr at 0 range 0..63;
   end record;
   for RTL_CONDITION_VARIABLE_x'Size use 64;
   for RTL_CONDITION_VARIABLE_x'Alignment use 8;
   subtype RTL_CONDITION_VARIABLE is RTL_CONDITION_VARIABLE_x;
   type PRTL_CONDITION_VARIABLE is access all RTL_CONDITION_VARIABLE_x;
   type PAPCFUNC is access procedure (p1 : ULONG_PTR); -- void (ULONG_PTR)
   pragma Convention(C,PAPCFUNC);
   type PVECTORED_EXCEPTION_HANDLER is access function (p1 : access EXCEPTION_POINTERS_x) return LONG; -- LONG (struct _EXCEPTION_POINTERS *)
   pragma Convention(C,PVECTORED_EXCEPTION_HANDLER);
   type HEAP_INFORMATION_CLASS_x is (
      HeapCompatibilityInformation,
      HeapEnableTerminationOnCorruption,
      HeapOptimizeResources
   );
   for HEAP_INFORMATION_CLASS_x use (
      HeapCompatibilityInformation => 0,
      HeapEnableTerminationOnCorruption => 1,
      HeapOptimizeResources => 3
   );
   for HEAP_INFORMATION_CLASS_x'Size use 32;
   subtype HEAP_INFORMATION_CLASS is HEAP_INFORMATION_CLASS_x;
   type HEAP_OPTIMIZE_RESOURCES_INFORMATION_x is record
      Version : DWORD;
      Flags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,HEAP_OPTIMIZE_RESOURCES_INFORMATION_x);
   for HEAP_OPTIMIZE_RESOURCES_INFORMATION_x use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
   end record;
   for HEAP_OPTIMIZE_RESOURCES_INFORMATION_x'Size use 64;
   for HEAP_OPTIMIZE_RESOURCES_INFORMATION_x'Alignment use 4;
   subtype HEAP_OPTIMIZE_RESOURCES_INFORMATION is HEAP_OPTIMIZE_RESOURCES_INFORMATION_x;
   type PHEAP_OPTIMIZE_RESOURCES_INFORMATION is access all HEAP_OPTIMIZE_RESOURCES_INFORMATION_x;
   type WAITORTIMERCALLBACKFUNC is access procedure (p1 : PVOID ; p2 : BOOLEAN); -- void (PVOID, BOOLEAN)
   pragma Convention(C,WAITORTIMERCALLBACKFUNC);
   type WORKERCALLBACKFUNC is access procedure (p1 : PVOID); -- void (PVOID)
   pragma Convention(C,WORKERCALLBACKFUNC);
   type APC_CALLBACK_FUNCTION is access procedure (p1 : DWORD ; p2 : PVOID ; p3 : PVOID); -- void (DWORD, PVOID, PVOID)
   pragma Convention(C,APC_CALLBACK_FUNCTION);
   subtype WAITORTIMERCALLBACK is WAITORTIMERCALLBACKFUNC;
   type PFLS_CALLBACK_FUNCTION is access procedure (p1 : PVOID); -- void (PVOID)
   pragma Convention(C,PFLS_CALLBACK_FUNCTION);
   type PSECURE_MEMORY_CACHE_CALLBACK is access function (p1 : PVOID ; p2 : SIZE_T) return BOOLEAN; -- BOOLEAN (PVOID, SIZE_T)
   pragma Convention(C,PSECURE_MEMORY_CACHE_CALLBACK);
   type ACTIVATION_CONTEXT_INFO_CLASS_x is (
      ActivationContextBasicInformation,
      ActivationContextDetailedInformation,
      AssemblyDetailedInformationInActivationContext,
      FileInformationInAssemblyOfAssemblyInActivationContext,
      RunlevelInformationInActivationContext,
      CompatibilityInformationInActivationContext,
      ActivationContextManifestResourceName,
      MaxActivationContextInfoClass
   );
   for ACTIVATION_CONTEXT_INFO_CLASS_x use (
      ActivationContextBasicInformation => 1,
      ActivationContextDetailedInformation => 2,
      AssemblyDetailedInformationInActivationContext => 3,
      FileInformationInAssemblyOfAssemblyInActivationContext => 4,
      RunlevelInformationInActivationContext => 5,
      CompatibilityInformationInActivationContext => 6,
      ActivationContextManifestResourceName => 7,
      MaxActivationContextInfoClass => 8
   );
   for ACTIVATION_CONTEXT_INFO_CLASS_x'Size use 32;
   subtype ACTIVATION_CONTEXT_INFO_CLASS is ACTIVATION_CONTEXT_INFO_CLASS_x;
   type ACTIVATION_CONTEXT_QUERY_INDEX_x is record
      ulAssemblyIndex : DWORD;
      ulFileIndexInAssembly : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACTIVATION_CONTEXT_QUERY_INDEX_x);
   for ACTIVATION_CONTEXT_QUERY_INDEX_x use record
      ulAssemblyIndex at 0 range 0..31;
      ulFileIndexInAssembly at 0 range 32..63;
   end record;
   for ACTIVATION_CONTEXT_QUERY_INDEX_x'Size use 64;
   for ACTIVATION_CONTEXT_QUERY_INDEX_x'Alignment use 4;
   subtype ACTIVATION_CONTEXT_QUERY_INDEX is ACTIVATION_CONTEXT_QUERY_INDEX_x;
   type PACTIVATION_CONTEXT_QUERY_INDEX is access all ACTIVATION_CONTEXT_QUERY_INDEX_x;
   type PCACTIVATION_CONTEXT_QUERY_INDEX is access constant ACTIVATION_CONTEXT_QUERY_INDEX_x;
   type ASSEMBLY_FILE_DETAILED_INFORMATION_x is record
      ulFlags : DWORD;
      ulFilenameLength : DWORD;
      ulPathLength : DWORD;
      lpFileName : PCWSTR;
      lpFilePath : PCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,ASSEMBLY_FILE_DETAILED_INFORMATION_x);
   for ASSEMBLY_FILE_DETAILED_INFORMATION_x use record
      ulFlags at 0 range 0..31;
      ulFilenameLength at 0 range 32..63;
      ulPathLength at 0 range 64..95;
      lpFileName at 0 range 128..191;
      lpFilePath at 0 range 192..255;
   end record;
   for ASSEMBLY_FILE_DETAILED_INFORMATION_x'Size use 256;
   for ASSEMBLY_FILE_DETAILED_INFORMATION_x'Alignment use 8;
   subtype ASSEMBLY_FILE_DETAILED_INFORMATION is ASSEMBLY_FILE_DETAILED_INFORMATION_x;
   type PASSEMBLY_FILE_DETAILED_INFORMATION is access all ASSEMBLY_FILE_DETAILED_INFORMATION_x;
   type PCASSEMBLY_FILE_DETAILED_INFORMATION is access constant ASSEMBLY_FILE_DETAILED_INFORMATION;
   type ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION_x is record
      ulFlags : DWORD;
      ulEncodedAssemblyIdentityLength : DWORD;
      ulManifestPathType : DWORD;
      ulManifestPathLength : DWORD;
      liManifestLastWriteTime : LARGE_INTEGER;
      ulPolicyPathType : DWORD;
      ulPolicyPathLength : DWORD;
      liPolicyLastWriteTime : LARGE_INTEGER;
      ulMetadataSatelliteRosterIndex : DWORD;
      ulManifestVersionMajor : DWORD;
      ulManifestVersionMinor : DWORD;
      ulPolicyVersionMajor : DWORD;
      ulPolicyVersionMinor : DWORD;
      ulAssemblyDirectoryNameLength : DWORD;
      lpAssemblyEncodedAssemblyIdentity : PCWSTR;
      lpAssemblyManifestPath : PCWSTR;
      lpAssemblyPolicyPath : PCWSTR;
      lpAssemblyDirectoryName : PCWSTR;
      ulFileCount : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION_x);
   for ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION_x use record
      ulFlags at 0 range 0..31;
      ulEncodedAssemblyIdentityLength at 0 range 32..63;
      ulManifestPathType at 0 range 64..95;
      ulManifestPathLength at 0 range 96..127;
      liManifestLastWriteTime at 0 range 128..191;
      ulPolicyPathType at 0 range 192..223;
      ulPolicyPathLength at 0 range 224..255;
      liPolicyLastWriteTime at 0 range 256..319;
      ulMetadataSatelliteRosterIndex at 0 range 320..351;
      ulManifestVersionMajor at 0 range 352..383;
      ulManifestVersionMinor at 0 range 384..415;
      ulPolicyVersionMajor at 0 range 416..447;
      ulPolicyVersionMinor at 0 range 448..479;
      ulAssemblyDirectoryNameLength at 0 range 480..511;
      lpAssemblyEncodedAssemblyIdentity at 0 range 512..575;
      lpAssemblyManifestPath at 0 range 576..639;
      lpAssemblyPolicyPath at 0 range 640..703;
      lpAssemblyDirectoryName at 0 range 704..767;
      ulFileCount at 0 range 768..799;
   end record;
   for ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION_x'Size use 832;
   for ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION_x'Alignment use 8;
   subtype ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION is ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION_x;
   type PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION is access all ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION_x;
   type PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION is access constant ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION_x;
   type ACTCTX_REQUESTED_RUN_LEVEL is (
      ACTCTX_RUN_LEVEL_UNSPECIFIED,
      ACTCTX_RUN_LEVEL_AS_INVOKER,
      ACTCTX_RUN_LEVEL_HIGHEST_AVAILABLE,
      ACTCTX_RUN_LEVEL_REQUIRE_ADMIN,
      ACTCTX_RUN_LEVEL_NUMBERS
   );
   for ACTCTX_REQUESTED_RUN_LEVEL use (
      ACTCTX_RUN_LEVEL_UNSPECIFIED => 0,
      ACTCTX_RUN_LEVEL_AS_INVOKER => 1,
      ACTCTX_RUN_LEVEL_HIGHEST_AVAILABLE => 2,
      ACTCTX_RUN_LEVEL_REQUIRE_ADMIN => 3,
      ACTCTX_RUN_LEVEL_NUMBERS => 4
   );
   for ACTCTX_REQUESTED_RUN_LEVEL'Size use 32;
   type ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION_x is record
      ulFlags : DWORD;
      RunLevel : ACTCTX_REQUESTED_RUN_LEVEL;
      UiAccess : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION_x);
   for ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION_x use record
      ulFlags at 0 range 0..31;
      RunLevel at 0 range 32..63;
      UiAccess at 0 range 64..95;
   end record;
   for ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION_x'Size use 96;
   for ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION_x'Alignment use 4;
   subtype ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION is ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION_x;
   type PACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION is access all ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION_x;
   type PCACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION is access constant ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION_x;
   type ACTCTX_COMPATIBILITY_ELEMENT_TYPE is (
      ACTCTX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN,
      ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS,
      ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION,
      ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MAXVERSIONTESTED
   );
   for ACTCTX_COMPATIBILITY_ELEMENT_TYPE use (
      ACTCTX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN => 0,
      ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS => 1,
      ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION => 2,
      ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MAXVERSIONTESTED => 3
   );
   for ACTCTX_COMPATIBILITY_ELEMENT_TYPE'Size use 32;
   type COMPATIBILITY_CONTEXT_ELEMENT_x is record
      Id : GUID;
      type_x : ACTCTX_COMPATIBILITY_ELEMENT_TYPE;
      MaxVersionTested : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,COMPATIBILITY_CONTEXT_ELEMENT_x);
   for COMPATIBILITY_CONTEXT_ELEMENT_x use record
      Id at 0 range 0..127;
      type_x at 0 range 128..159;
      MaxVersionTested at 0 range 192..255;
   end record;
   for COMPATIBILITY_CONTEXT_ELEMENT_x'Size use 256;
   for COMPATIBILITY_CONTEXT_ELEMENT_x'Alignment use 8;
   subtype COMPATIBILITY_CONTEXT_ELEMENT is COMPATIBILITY_CONTEXT_ELEMENT_x;
   type PCOMPATIBILITY_CONTEXT_ELEMENT is access all COMPATIBILITY_CONTEXT_ELEMENT_x;
   type PCCOMPATIBILITY_CONTEXT_ELEMENT is access constant COMPATIBILITY_CONTEXT_ELEMENT_x;
   type ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION_x is record
      ElementCount : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION_x);
   for ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION_x use record
      ElementCount at 0 range 0..31;
   end record;
   for ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION_x'Size use 32;
   for ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION_x'Alignment use 8;
   subtype ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION is ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION_x;
   type PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION is access all ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION_x;
   type PCACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION is access constant ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION_x;
   type SUPPORTED_OS_INFO_x is record
      MajorVersion : WORD;
      MinorVersion : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SUPPORTED_OS_INFO_x);
   for SUPPORTED_OS_INFO_x use record
      MajorVersion at 0 range 0..15;
      MinorVersion at 0 range 16..31;
   end record;
   for SUPPORTED_OS_INFO_x'Size use 32;
   for SUPPORTED_OS_INFO_x'Alignment use 2;
   subtype SUPPORTED_OS_INFO is SUPPORTED_OS_INFO_x;
   type PSUPPORTED_OS_INFO is access all SUPPORTED_OS_INFO_x;
   type MAXVERSIONTESTED_INFO_x is record
      MaxVersionTested : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,MAXVERSIONTESTED_INFO_x);
   for MAXVERSIONTESTED_INFO_x use record
      MaxVersionTested at 0 range 0..63;
   end record;
   for MAXVERSIONTESTED_INFO_x'Size use 64;
   for MAXVERSIONTESTED_INFO_x'Alignment use 8;
   subtype MAXVERSIONTESTED_INFO is MAXVERSIONTESTED_INFO_x;
   type PMAXVERSIONTESTED_INFO is access all MAXVERSIONTESTED_INFO_x;
   type ACTIVATION_CONTEXT_DETAILED_INFORMATION_x is record
      dwFlags : DWORD;
      ulFormatVersion : DWORD;
      ulAssemblyCount : DWORD;
      ulRootManifestPathType : DWORD;
      ulRootManifestPathChars : DWORD;
      ulRootConfigurationPathType : DWORD;
      ulRootConfigurationPathChars : DWORD;
      ulAppDirPathType : DWORD;
      ulAppDirPathChars : DWORD;
      lpRootManifestPath : PCWSTR;
      lpRootConfigurationPath : PCWSTR;
      lpAppDirPath : PCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,ACTIVATION_CONTEXT_DETAILED_INFORMATION_x);
   for ACTIVATION_CONTEXT_DETAILED_INFORMATION_x use record
      dwFlags at 0 range 0..31;
      ulFormatVersion at 0 range 32..63;
      ulAssemblyCount at 0 range 64..95;
      ulRootManifestPathType at 0 range 96..127;
      ulRootManifestPathChars at 0 range 128..159;
      ulRootConfigurationPathType at 0 range 160..191;
      ulRootConfigurationPathChars at 0 range 192..223;
      ulAppDirPathType at 0 range 224..255;
      ulAppDirPathChars at 0 range 256..287;
      lpRootManifestPath at 0 range 320..383;
      lpRootConfigurationPath at 0 range 384..447;
      lpAppDirPath at 0 range 448..511;
   end record;
   for ACTIVATION_CONTEXT_DETAILED_INFORMATION_x'Size use 512;
   for ACTIVATION_CONTEXT_DETAILED_INFORMATION_x'Alignment use 8;
   subtype ACTIVATION_CONTEXT_DETAILED_INFORMATION is ACTIVATION_CONTEXT_DETAILED_INFORMATION_x;
   type PACTIVATION_CONTEXT_DETAILED_INFORMATION is access all ACTIVATION_CONTEXT_DETAILED_INFORMATION_x;
   type PCACTIVATION_CONTEXT_DETAILED_INFORMATION is access constant ACTIVATION_CONTEXT_DETAILED_INFORMATION_x;
   type HARDWARE_COUNTER_DATA_x is record
      type_x : HARDWARE_COUNTER_TYPE;
      Reserved : DWORD;
      Value : DWORD64;
   end record;
   pragma Convention (C_Pass_By_Copy,HARDWARE_COUNTER_DATA_x);
   for HARDWARE_COUNTER_DATA_x use record
      type_x at 0 range 0..31;
      Reserved at 0 range 32..63;
      Value at 0 range 64..127;
   end record;
   for HARDWARE_COUNTER_DATA_x'Size use 128;
   for HARDWARE_COUNTER_DATA_x'Alignment use 8;
   subtype HARDWARE_COUNTER_DATA is HARDWARE_COUNTER_DATA_x;
   type PHARDWARE_COUNTER_DATA is access all HARDWARE_COUNTER_DATA_x;
   type PERFORMANCE_DATA_x_HwCounters_Array is array(1..16) of HARDWARE_COUNTER_DATA; -- Auto Generated Dependancy
   type PERFORMANCE_DATA_x is record
      Size : WORD;
      Version : BYTE;
      HwCountersCount : BYTE;
      ContextSwitchCount : DWORD;
      WaitReasonBitMap : DWORD64;
      CycleTime : DWORD64;
      RetryCount : DWORD;
      Reserved : DWORD;
      HwCounters : PERFORMANCE_DATA_x_HwCounters_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PERFORMANCE_DATA_x);
   for PERFORMANCE_DATA_x use record
      Size at 0 range 0..15;
      Version at 0 range 16..23;
      HwCountersCount at 0 range 24..31;
      ContextSwitchCount at 0 range 32..63;
      WaitReasonBitMap at 0 range 64..127;
      CycleTime at 0 range 128..191;
      RetryCount at 0 range 192..223;
      Reserved at 0 range 224..255;
      HwCounters at 0 range 256..2303;
   end record;
   for PERFORMANCE_DATA_x'Size use 2304;
   for PERFORMANCE_DATA_x'Alignment use 8;
   subtype PERFORMANCE_DATA is PERFORMANCE_DATA_x;
   type PPERFORMANCE_DATA is access all PERFORMANCE_DATA_x;
   procedure RtlGetDeviceFamilyInfoEnum(
      pullUAPInfo : access ULONGLONG;
      pulDeviceFamily : access DWORD;
      pulDeviceForm : access DWORD
   );
   pragma import (Cpp,RtlGetDeviceFamilyInfoEnum,"RtlGetDeviceFamilyInfoEnum");
   function RtlConvertDeviceFamilyInfoToString(
      pulDeviceFamilyBufferSize : PDWORD;
      pulDeviceFormBufferSize : PDWORD;
      DeviceFamily : PWSTR;
      DeviceForm : PWSTR
   ) return DWORD;
   pragma import (Cpp,RtlConvertDeviceFamilyInfoToString,"RtlConvertDeviceFamilyInfoToString");
   function RtlSwitchedVVI(
      VersionInfo : PRTL_OSVERSIONINFOEXW;
      TypeMask : DWORD;
      ConditionMask : ULONGLONG
   ) return DWORD;
   pragma import (Cpp,RtlSwitchedVVI,"RtlSwitchedVVI");
   type EVENTLOGRECORD_x is record
      Length : DWORD;
      Reserved : DWORD;
      RecordNumber : DWORD;
      TimeGenerated : DWORD;
      TimeWritten : DWORD;
      EventID : DWORD;
      EventType : WORD;
      NumStrings : WORD;
      EventCategory : WORD;
      ReservedFlags : WORD;
      ClosingRecordNumber : DWORD;
      StringOffset : DWORD;
      UserSidLength : DWORD;
      UserSidOffset : DWORD;
      DataLength : DWORD;
      DataOffset : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,EVENTLOGRECORD_x);
   for EVENTLOGRECORD_x use record
      Length at 0 range 0..31;
      Reserved at 0 range 32..63;
      RecordNumber at 0 range 64..95;
      TimeGenerated at 0 range 96..127;
      TimeWritten at 0 range 128..159;
      EventID at 0 range 160..191;
      EventType at 0 range 192..207;
      NumStrings at 0 range 208..223;
      EventCategory at 0 range 224..239;
      ReservedFlags at 0 range 240..255;
      ClosingRecordNumber at 0 range 256..287;
      StringOffset at 0 range 288..319;
      UserSidLength at 0 range 320..351;
      UserSidOffset at 0 range 352..383;
      DataLength at 0 range 384..415;
      DataOffset at 0 range 416..447;
   end record;
   for EVENTLOGRECORD_x'Size use 448;
   for EVENTLOGRECORD_x'Alignment use 4;
   subtype EVENTLOGRECORD is EVENTLOGRECORD_x;
   type PEVENTLOGRECORD is access all EVENTLOGRECORD_x;
   type EVENTSFORLOGFILE_x;
   subtype EVENTSFORLOGFILE is EVENTSFORLOGFILE_x;
   type PEVENTSFORLOGFILE is access all EVENTSFORLOGFILE_x;
   type PACKEDEVENTINFO_x;
   subtype PACKEDEVENTINFO is PACKEDEVENTINFO_x;
   type PPACKEDEVENTINFO is access all PACKEDEVENTINFO_x;
   type EVENTSFORLOGFILE_x_szLogicalLogFile_Array is array(1..256) of WCHAR; -- Auto Generated Dependancy
   type EVENTSFORLOGFILE_x is record
      ulSize : DWORD;
      szLogicalLogFile : EVENTSFORLOGFILE_x_szLogicalLogFile_Array;
      ulNumRecords : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,EVENTSFORLOGFILE_x);
   for EVENTSFORLOGFILE_x use record
      ulSize at 0 range 0..31;
      szLogicalLogFile at 0 range 32..4127;
      ulNumRecords at 0 range 4128..4159;
   end record;
   for EVENTSFORLOGFILE_x'Size use 4160;
   for EVENTSFORLOGFILE_x'Alignment use 4;
   type PACKEDEVENTINFO_x is record
      ulSize : DWORD;
      ulNumEventsForLogFile : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PACKEDEVENTINFO_x);
   for PACKEDEVENTINFO_x use record
      ulSize at 0 range 0..31;
      ulNumEventsForLogFile at 0 range 32..63;
   end record;
   for PACKEDEVENTINFO_x'Size use 64;
   for PACKEDEVENTINFO_x'Alignment use 4;
   type CM_SERVICE_NODE_TYPE_x is (
      DriverType,
      FileSystemType,
      AdapterType,
      RecognizerType,
      Win32ServiceOwnProcess,
      Win32ServiceShareProcess
   );
   for CM_SERVICE_NODE_TYPE_x use (
      DriverType => 1,
      FileSystemType => 2,
      AdapterType => 4,
      RecognizerType => 8,
      Win32ServiceOwnProcess => 16,
      Win32ServiceShareProcess => 32
   );
   for CM_SERVICE_NODE_TYPE_x'Size use 32;
   subtype SERVICE_NODE_TYPE is CM_SERVICE_NODE_TYPE_x;
   type CM_SERVICE_LOAD_TYPE_x is (
      BootLoad,
      SystemLoad,
      AutoLoad,
      DemandLoad,
      DisableLoad
   );
   for CM_SERVICE_LOAD_TYPE_x use (
      BootLoad => 0,
      SystemLoad => 1,
      AutoLoad => 2,
      DemandLoad => 3,
      DisableLoad => 4
   );
   for CM_SERVICE_LOAD_TYPE_x'Size use 32;
   subtype SERVICE_LOAD_TYPE is CM_SERVICE_LOAD_TYPE_x;
   type CM_ERROR_CONTROL_TYPE_x is (
      IgnoreError,
      NormalError,
      SevereError,
      CriticalError
   );
   for CM_ERROR_CONTROL_TYPE_x use (
      IgnoreError => 0,
      NormalError => 1,
      SevereError => 2,
      CriticalError => 3
   );
   for CM_ERROR_CONTROL_TYPE_x'Size use 32;
   subtype SERVICE_ERROR_TYPE is CM_ERROR_CONTROL_TYPE_x;
   type TAPE_ERASE_x is record
      type_x : DWORD;
      Immediate : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,TAPE_ERASE_x);
   for TAPE_ERASE_x use record
      type_x at 0 range 0..31;
      Immediate at 0 range 32..39;
   end record;
   for TAPE_ERASE_x'Size use 64;
   for TAPE_ERASE_x'Alignment use 4;
   subtype TAPE_ERASE is TAPE_ERASE_x;
   type PTAPE_ERASE is access all TAPE_ERASE_x;
   type TAPE_PREPARE_x is record
      Operation : DWORD;
      Immediate : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,TAPE_PREPARE_x);
   for TAPE_PREPARE_x use record
      Operation at 0 range 0..31;
      Immediate at 0 range 32..39;
   end record;
   for TAPE_PREPARE_x'Size use 64;
   for TAPE_PREPARE_x'Alignment use 4;
   subtype TAPE_PREPARE is TAPE_PREPARE_x;
   type PTAPE_PREPARE is access all TAPE_PREPARE_x;
   type TAPE_WRITE_MARKS_x is record
      type_x : DWORD;
      Count : DWORD;
      Immediate : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,TAPE_WRITE_MARKS_x);
   for TAPE_WRITE_MARKS_x use record
      type_x at 0 range 0..31;
      Count at 0 range 32..63;
      Immediate at 0 range 64..71;
   end record;
   for TAPE_WRITE_MARKS_x'Size use 96;
   for TAPE_WRITE_MARKS_x'Alignment use 4;
   subtype TAPE_WRITE_MARKS is TAPE_WRITE_MARKS_x;
   type PTAPE_WRITE_MARKS is access all TAPE_WRITE_MARKS_x;
   type TAPE_GET_POSITION_x is record
      type_x : DWORD;
      Partition : DWORD;
      Offset : LARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,TAPE_GET_POSITION_x);
   for TAPE_GET_POSITION_x use record
      type_x at 0 range 0..31;
      Partition at 0 range 32..63;
      Offset at 0 range 64..127;
   end record;
   for TAPE_GET_POSITION_x'Size use 128;
   for TAPE_GET_POSITION_x'Alignment use 8;
   subtype TAPE_GET_POSITION is TAPE_GET_POSITION_x;
   type PTAPE_GET_POSITION is access all TAPE_GET_POSITION_x;
   type TAPE_SET_POSITION_x is record
      Method : DWORD;
      Partition : DWORD;
      Offset : LARGE_INTEGER;
      Immediate : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,TAPE_SET_POSITION_x);
   for TAPE_SET_POSITION_x use record
      Method at 0 range 0..31;
      Partition at 0 range 32..63;
      Offset at 0 range 64..127;
      Immediate at 0 range 128..135;
   end record;
   for TAPE_SET_POSITION_x'Size use 192;
   for TAPE_SET_POSITION_x'Alignment use 8;
   subtype TAPE_SET_POSITION is TAPE_SET_POSITION_x;
   type PTAPE_SET_POSITION is access all TAPE_SET_POSITION_x;
   type TAPE_GET_DRIVE_PARAMETERS_x is record
      ECC : BOOLEAN;
      Compression : BOOLEAN;
      DataPadding : BOOLEAN;
      ReportSetmarks : BOOLEAN;
      DefaultBlockSize : DWORD;
      MaximumBlockSize : DWORD;
      MinimumBlockSize : DWORD;
      MaximumPartitionCount : DWORD;
      FeaturesLow : DWORD;
      FeaturesHigh : DWORD;
      EOTWarningZoneSize : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,TAPE_GET_DRIVE_PARAMETERS_x);
   for TAPE_GET_DRIVE_PARAMETERS_x use record
      ECC at 0 range 0..7;
      Compression at 0 range 8..15;
      DataPadding at 0 range 16..23;
      ReportSetmarks at 0 range 24..31;
      DefaultBlockSize at 0 range 32..63;
      MaximumBlockSize at 0 range 64..95;
      MinimumBlockSize at 0 range 96..127;
      MaximumPartitionCount at 0 range 128..159;
      FeaturesLow at 0 range 160..191;
      FeaturesHigh at 0 range 192..223;
      EOTWarningZoneSize at 0 range 224..255;
   end record;
   for TAPE_GET_DRIVE_PARAMETERS_x'Size use 256;
   for TAPE_GET_DRIVE_PARAMETERS_x'Alignment use 4;
   subtype TAPE_GET_DRIVE_PARAMETERS is TAPE_GET_DRIVE_PARAMETERS_x;
   type PTAPE_GET_DRIVE_PARAMETERS is access all TAPE_GET_DRIVE_PARAMETERS_x;
   type TAPE_SET_DRIVE_PARAMETERS_x is record
      ECC : BOOLEAN;
      Compression : BOOLEAN;
      DataPadding : BOOLEAN;
      ReportSetmarks : BOOLEAN;
      EOTWarningZoneSize : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,TAPE_SET_DRIVE_PARAMETERS_x);
   for TAPE_SET_DRIVE_PARAMETERS_x use record
      ECC at 0 range 0..7;
      Compression at 0 range 8..15;
      DataPadding at 0 range 16..23;
      ReportSetmarks at 0 range 24..31;
      EOTWarningZoneSize at 0 range 32..63;
   end record;
   for TAPE_SET_DRIVE_PARAMETERS_x'Size use 64;
   for TAPE_SET_DRIVE_PARAMETERS_x'Alignment use 4;
   subtype TAPE_SET_DRIVE_PARAMETERS is TAPE_SET_DRIVE_PARAMETERS_x;
   type PTAPE_SET_DRIVE_PARAMETERS is access all TAPE_SET_DRIVE_PARAMETERS_x;
   type TAPE_GET_MEDIA_PARAMETERS_x is record
      Capacity : LARGE_INTEGER;
      Remaining : LARGE_INTEGER;
      BlockSize : DWORD;
      PartitionCount : DWORD;
      WriteProtected : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,TAPE_GET_MEDIA_PARAMETERS_x);
   for TAPE_GET_MEDIA_PARAMETERS_x use record
      Capacity at 0 range 0..63;
      Remaining at 0 range 64..127;
      BlockSize at 0 range 128..159;
      PartitionCount at 0 range 160..191;
      WriteProtected at 0 range 192..199;
   end record;
   for TAPE_GET_MEDIA_PARAMETERS_x'Size use 256;
   for TAPE_GET_MEDIA_PARAMETERS_x'Alignment use 8;
   subtype TAPE_GET_MEDIA_PARAMETERS is TAPE_GET_MEDIA_PARAMETERS_x;
   type PTAPE_GET_MEDIA_PARAMETERS is access all TAPE_GET_MEDIA_PARAMETERS_x;
   type TAPE_SET_MEDIA_PARAMETERS_x is record
      BlockSize : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,TAPE_SET_MEDIA_PARAMETERS_x);
   for TAPE_SET_MEDIA_PARAMETERS_x use record
      BlockSize at 0 range 0..31;
   end record;
   for TAPE_SET_MEDIA_PARAMETERS_x'Size use 32;
   for TAPE_SET_MEDIA_PARAMETERS_x'Alignment use 4;
   subtype TAPE_SET_MEDIA_PARAMETERS is TAPE_SET_MEDIA_PARAMETERS_x;
   type PTAPE_SET_MEDIA_PARAMETERS is access all TAPE_SET_MEDIA_PARAMETERS_x;
   type TAPE_CREATE_PARTITION_x is record
      Method : DWORD;
      Count : DWORD;
      Size : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,TAPE_CREATE_PARTITION_x);
   for TAPE_CREATE_PARTITION_x use record
      Method at 0 range 0..31;
      Count at 0 range 32..63;
      Size at 0 range 64..95;
   end record;
   for TAPE_CREATE_PARTITION_x'Size use 96;
   for TAPE_CREATE_PARTITION_x'Alignment use 4;
   subtype TAPE_CREATE_PARTITION is TAPE_CREATE_PARTITION_x;
   type PTAPE_CREATE_PARTITION is access all TAPE_CREATE_PARTITION_x;
   type TAPE_WMI_OPERATIONS_x is record
      Method : DWORD;
      DataBufferSize : DWORD;
      DataBuffer : PVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,TAPE_WMI_OPERATIONS_x);
   for TAPE_WMI_OPERATIONS_x use record
      Method at 0 range 0..31;
      DataBufferSize at 0 range 32..63;
      DataBuffer at 0 range 64..127;
   end record;
   for TAPE_WMI_OPERATIONS_x'Size use 128;
   for TAPE_WMI_OPERATIONS_x'Alignment use 8;
   subtype TAPE_WMI_OPERATIONS is TAPE_WMI_OPERATIONS_x;
   type PTAPE_WMI_OPERATIONS is access all TAPE_WMI_OPERATIONS_x;
   type TAPE_DRIVE_PROBLEM_TYPE_x is (
      TapeDriveProblemNone,
      TapeDriveReadWriteWarning,
      TapeDriveReadWriteError,
      TapeDriveReadWarning,
      TapeDriveWriteWarning,
      TapeDriveReadError,
      TapeDriveWriteError,
      TapeDriveHardwareError,
      TapeDriveUnsupportedMedia,
      TapeDriveScsiConnectionError,
      TapeDriveTimetoClean,
      TapeDriveCleanDriveNow,
      TapeDriveMediaLifeExpired,
      TapeDriveSnappedTape
   );
   for TAPE_DRIVE_PROBLEM_TYPE_x use (
      TapeDriveProblemNone => 0,
      TapeDriveReadWriteWarning => 1,
      TapeDriveReadWriteError => 2,
      TapeDriveReadWarning => 3,
      TapeDriveWriteWarning => 4,
      TapeDriveReadError => 5,
      TapeDriveWriteError => 6,
      TapeDriveHardwareError => 7,
      TapeDriveUnsupportedMedia => 8,
      TapeDriveScsiConnectionError => 9,
      TapeDriveTimetoClean => 10,
      TapeDriveCleanDriveNow => 11,
      TapeDriveMediaLifeExpired => 12,
      TapeDriveSnappedTape => 13
   );
   for TAPE_DRIVE_PROBLEM_TYPE_x'Size use 32;
   subtype TAPE_DRIVE_PROBLEM_TYPE is TAPE_DRIVE_PROBLEM_TYPE_x;
   -- #include <ktmtypes.h>
   subtype UOW is GUID;
   type PUOW is access all GUID;
   subtype CRM_PROTOCOL_ID is GUID;
   type PCRM_PROTOCOL_ID is access all GUID;
   subtype NOTIFICATION_MASK is ULONG;
   type TRANSACTION_NOTIFICATION_x is record
      TransactionKey : PVOID;
      TransactionNotification : ULONG;
      TmVirtualClock : LARGE_INTEGER;
      ArgumentLength : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_NOTIFICATION_x);
   for TRANSACTION_NOTIFICATION_x use record
      TransactionKey at 0 range 0..63;
      TransactionNotification at 0 range 64..95;
      TmVirtualClock at 0 range 128..191;
      ArgumentLength at 0 range 192..223;
   end record;
   for TRANSACTION_NOTIFICATION_x'Size use 256;
   for TRANSACTION_NOTIFICATION_x'Alignment use 8;
   subtype TRANSACTION_NOTIFICATION is TRANSACTION_NOTIFICATION_x;
   type PTRANSACTION_NOTIFICATION is access all TRANSACTION_NOTIFICATION_x;
   type TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT_x is record
      EnlistmentId : GUID;
      UOW_x : UOW;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT_x);
   for TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT_x use record
      EnlistmentId at 0 range 0..127;
      UOW_x at 0 range 128..255;
   end record;
   for TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT_x'Size use 256;
   for TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT_x'Alignment use 4;
   subtype TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT is TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT_x;
   type PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT is access all TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT_x;
   type TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT_x is record
      TmIdentity : GUID;
      Flags : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT_x);
   for TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT_x use record
      TmIdentity at 0 range 0..127;
      Flags at 0 range 128..159;
   end record;
   for TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT_x'Size use 160;
   for TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT_x'Alignment use 4;
   subtype TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT is TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT_x;
   type PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT is access all TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT_x;
   subtype SAVEPOINT_ID is ULONG;
   type PSAVEPOINT_ID is access all ULONG;
   type TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT_x is record
      SavepointId : SAVEPOINT_ID;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT_x);
   for TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT_x use record
      SavepointId at 0 range 0..31;
   end record;
   for TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT_x'Size use 32;
   for TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT_x'Alignment use 4;
   subtype TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT is TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT_x;
   type PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT is access all TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT_x;
   type TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT_x is record
      PropagationCookie : ULONG;
      UOW_x : GUID;
      TmIdentity : GUID;
      BufferLength : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT_x);
   for TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT_x use record
      PropagationCookie at 0 range 0..31;
      UOW_x at 0 range 32..159;
      TmIdentity at 0 range 160..287;
      BufferLength at 0 range 288..319;
   end record;
   for TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT_x'Size use 320;
   for TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT_x'Alignment use 4;
   subtype TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT is TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT_x;
   type PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT is access all TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT_x;
   type TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT_x is record
      MarshalCookie : ULONG;
      UOW_x : GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT_x);
   for TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT_x use record
      MarshalCookie at 0 range 0..31;
      UOW_x at 0 range 32..159;
   end record;
   for TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT_x'Size use 160;
   for TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT_x'Alignment use 4;
   subtype TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT is TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT_x;
   type PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT is access all TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT_x;
   subtype TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT is TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
   type PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT is access all TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
   type KCRM_MARSHAL_HEADER_x is record
      VersionMajor : ULONG;
      VersionMinor : ULONG;
      NumProtocols : ULONG;
      Unused : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,KCRM_MARSHAL_HEADER_x);
   for KCRM_MARSHAL_HEADER_x use record
      VersionMajor at 0 range 0..31;
      VersionMinor at 0 range 32..63;
      NumProtocols at 0 range 64..95;
      Unused at 0 range 96..127;
   end record;
   for KCRM_MARSHAL_HEADER_x'Size use 128;
   for KCRM_MARSHAL_HEADER_x'Alignment use 4;
   subtype KCRM_MARSHAL_HEADER is KCRM_MARSHAL_HEADER_x;
   type PKCRM_MARSHAL_HEADER is access all KCRM_MARSHAL_HEADER_x;
   type PRKCRM_MARSHAL_HEADER is access all KCRM_MARSHAL_HEADER_x;
   type KCRM_TRANSACTION_BLOB_x_Description_Array is array(1..64) of WCHAR; -- Auto Generated Dependancy
   type KCRM_TRANSACTION_BLOB_x is record
      UOW_x : UOW;
      TmIdentity : GUID;
      IsolationLevel : ULONG;
      IsolationFlags : ULONG;
      Timeout : ULONG;
      Description : KCRM_TRANSACTION_BLOB_x_Description_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,KCRM_TRANSACTION_BLOB_x);
   for KCRM_TRANSACTION_BLOB_x use record
      UOW_x at 0 range 0..127;
      TmIdentity at 0 range 128..255;
      IsolationLevel at 0 range 256..287;
      IsolationFlags at 0 range 288..319;
      Timeout at 0 range 320..351;
      Description at 0 range 352..1375;
   end record;
   for KCRM_TRANSACTION_BLOB_x'Size use 1376;
   for KCRM_TRANSACTION_BLOB_x'Alignment use 4;
   subtype KCRM_TRANSACTION_BLOB is KCRM_TRANSACTION_BLOB_x;
   type PKCRM_TRANSACTION_BLOB is access all KCRM_TRANSACTION_BLOB_x;
   type PRKCRM_TRANSACTION_BLOB is access all KCRM_TRANSACTION_BLOB_x;
   type KCRM_PROTOCOL_BLOB_x is record
      ProtocolId : CRM_PROTOCOL_ID;
      StaticInfoLength : ULONG;
      TransactionIdInfoLength : ULONG;
      Unused1 : ULONG;
      Unused2 : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,KCRM_PROTOCOL_BLOB_x);
   for KCRM_PROTOCOL_BLOB_x use record
      ProtocolId at 0 range 0..127;
      StaticInfoLength at 0 range 128..159;
      TransactionIdInfoLength at 0 range 160..191;
      Unused1 at 0 range 192..223;
      Unused2 at 0 range 224..255;
   end record;
   for KCRM_PROTOCOL_BLOB_x'Size use 256;
   for KCRM_PROTOCOL_BLOB_x'Alignment use 4;
   subtype KCRM_PROTOCOL_BLOB is KCRM_PROTOCOL_BLOB_x;
   type PKCRM_PROTOCOL_BLOB is access all KCRM_PROTOCOL_BLOB_x;
   type PRKCRM_PROTOCOL_BLOB is access all KCRM_PROTOCOL_BLOB_x;
   -- #include <winnt.h>
   type TRANSACTION_OUTCOME_x is (
      TransactionOutcomeUndetermined,
      TransactionOutcomeCommitted,
      TransactionOutcomeAborted
   );
   for TRANSACTION_OUTCOME_x use (
      TransactionOutcomeUndetermined => 1,
      TransactionOutcomeCommitted => 2,
      TransactionOutcomeAborted => 3
   );
   for TRANSACTION_OUTCOME_x'Size use 32;
   subtype TRANSACTION_OUTCOME is TRANSACTION_OUTCOME_x;
   type TRANSACTION_STATE_x is (
      TransactionStateNormal,
      TransactionStateIndoubt,
      TransactionStateCommittedNotify
   );
   for TRANSACTION_STATE_x use (
      TransactionStateNormal => 1,
      TransactionStateIndoubt => 2,
      TransactionStateCommittedNotify => 3
   );
   for TRANSACTION_STATE_x'Size use 32;
   subtype TRANSACTION_STATE is TRANSACTION_STATE_x;
   type TRANSACTION_BASIC_INFORMATION_x is record
      TransactionId : GUID;
      State : DWORD;
      Outcome : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_BASIC_INFORMATION_x);
   for TRANSACTION_BASIC_INFORMATION_x use record
      TransactionId at 0 range 0..127;
      State at 0 range 128..159;
      Outcome at 0 range 160..191;
   end record;
   for TRANSACTION_BASIC_INFORMATION_x'Size use 192;
   for TRANSACTION_BASIC_INFORMATION_x'Alignment use 4;
   subtype TRANSACTION_BASIC_INFORMATION is TRANSACTION_BASIC_INFORMATION_x;
   type PTRANSACTION_BASIC_INFORMATION is access all TRANSACTION_BASIC_INFORMATION_x;
   type TRANSACTIONMANAGER_BASIC_INFORMATION_x is record
      TmIdentity : GUID;
      VirtualClock : LARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTIONMANAGER_BASIC_INFORMATION_x);
   for TRANSACTIONMANAGER_BASIC_INFORMATION_x use record
      TmIdentity at 0 range 0..127;
      VirtualClock at 0 range 128..191;
   end record;
   for TRANSACTIONMANAGER_BASIC_INFORMATION_x'Size use 192;
   for TRANSACTIONMANAGER_BASIC_INFORMATION_x'Alignment use 8;
   subtype TRANSACTIONMANAGER_BASIC_INFORMATION is TRANSACTIONMANAGER_BASIC_INFORMATION_x;
   type PTRANSACTIONMANAGER_BASIC_INFORMATION is access all TRANSACTIONMANAGER_BASIC_INFORMATION_x;
   type TRANSACTIONMANAGER_LOG_INFORMATION_x is record
      LogIdentity : GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTIONMANAGER_LOG_INFORMATION_x);
   for TRANSACTIONMANAGER_LOG_INFORMATION_x use record
      LogIdentity at 0 range 0..127;
   end record;
   for TRANSACTIONMANAGER_LOG_INFORMATION_x'Size use 128;
   for TRANSACTIONMANAGER_LOG_INFORMATION_x'Alignment use 4;
   subtype TRANSACTIONMANAGER_LOG_INFORMATION is TRANSACTIONMANAGER_LOG_INFORMATION_x;
   type PTRANSACTIONMANAGER_LOG_INFORMATION is access all TRANSACTIONMANAGER_LOG_INFORMATION_x;
   type TRANSACTIONMANAGER_LOGPATH_INFORMATION_x_LogPath_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type TRANSACTIONMANAGER_LOGPATH_INFORMATION_x is record
      LogPathLength : DWORD;
      LogPath : TRANSACTIONMANAGER_LOGPATH_INFORMATION_x_LogPath_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTIONMANAGER_LOGPATH_INFORMATION_x);
   for TRANSACTIONMANAGER_LOGPATH_INFORMATION_x use record
      LogPathLength at 0 range 0..31;
      LogPath at 0 range 32..47;
   end record;
   for TRANSACTIONMANAGER_LOGPATH_INFORMATION_x'Size use 64;
   for TRANSACTIONMANAGER_LOGPATH_INFORMATION_x'Alignment use 4;
   subtype TRANSACTIONMANAGER_LOGPATH_INFORMATION is TRANSACTIONMANAGER_LOGPATH_INFORMATION_x;
   type PTRANSACTIONMANAGER_LOGPATH_INFORMATION is access all TRANSACTIONMANAGER_LOGPATH_INFORMATION_x;
   type TRANSACTIONMANAGER_RECOVERY_INFORMATION_x is record
      LastRecoveredLsn : ULONGLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTIONMANAGER_RECOVERY_INFORMATION_x);
   for TRANSACTIONMANAGER_RECOVERY_INFORMATION_x use record
      LastRecoveredLsn at 0 range 0..63;
   end record;
   for TRANSACTIONMANAGER_RECOVERY_INFORMATION_x'Size use 64;
   for TRANSACTIONMANAGER_RECOVERY_INFORMATION_x'Alignment use 8;
   subtype TRANSACTIONMANAGER_RECOVERY_INFORMATION is TRANSACTIONMANAGER_RECOVERY_INFORMATION_x;
   type PTRANSACTIONMANAGER_RECOVERY_INFORMATION is access all TRANSACTIONMANAGER_RECOVERY_INFORMATION_x;
   type TRANSACTIONMANAGER_OLDEST_INFORMATION_x is record
      OldestTransactionGuid : GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTIONMANAGER_OLDEST_INFORMATION_x);
   for TRANSACTIONMANAGER_OLDEST_INFORMATION_x use record
      OldestTransactionGuid at 0 range 0..127;
   end record;
   for TRANSACTIONMANAGER_OLDEST_INFORMATION_x'Size use 128;
   for TRANSACTIONMANAGER_OLDEST_INFORMATION_x'Alignment use 4;
   subtype TRANSACTIONMANAGER_OLDEST_INFORMATION is TRANSACTIONMANAGER_OLDEST_INFORMATION_x;
   type PTRANSACTIONMANAGER_OLDEST_INFORMATION is access all TRANSACTIONMANAGER_OLDEST_INFORMATION_x;
   type TRANSACTION_PROPERTIES_INFORMATION_x_Description_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type TRANSACTION_PROPERTIES_INFORMATION_x is record
      IsolationLevel : DWORD;
      IsolationFlags : DWORD;
      Timeout : LARGE_INTEGER;
      Outcome : DWORD;
      DescriptionLength : DWORD;
      Description : TRANSACTION_PROPERTIES_INFORMATION_x_Description_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_PROPERTIES_INFORMATION_x);
   for TRANSACTION_PROPERTIES_INFORMATION_x use record
      IsolationLevel at 0 range 0..31;
      IsolationFlags at 0 range 32..63;
      Timeout at 0 range 64..127;
      Outcome at 0 range 128..159;
      DescriptionLength at 0 range 160..191;
      Description at 0 range 192..207;
   end record;
   for TRANSACTION_PROPERTIES_INFORMATION_x'Size use 256;
   for TRANSACTION_PROPERTIES_INFORMATION_x'Alignment use 8;
   subtype TRANSACTION_PROPERTIES_INFORMATION is TRANSACTION_PROPERTIES_INFORMATION_x;
   type PTRANSACTION_PROPERTIES_INFORMATION is access all TRANSACTION_PROPERTIES_INFORMATION_x;
   type TRANSACTION_BIND_INFORMATION_x is record
      TmHandle : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_BIND_INFORMATION_x);
   for TRANSACTION_BIND_INFORMATION_x use record
      TmHandle at 0 range 0..63;
   end record;
   for TRANSACTION_BIND_INFORMATION_x'Size use 64;
   for TRANSACTION_BIND_INFORMATION_x'Alignment use 8;
   subtype TRANSACTION_BIND_INFORMATION is TRANSACTION_BIND_INFORMATION_x;
   type PTRANSACTION_BIND_INFORMATION is access all TRANSACTION_BIND_INFORMATION_x;
   type TRANSACTION_ENLISTMENT_PAIR_x is record
      EnlistmentId : GUID;
      ResourceManagerId : GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_ENLISTMENT_PAIR_x);
   for TRANSACTION_ENLISTMENT_PAIR_x use record
      EnlistmentId at 0 range 0..127;
      ResourceManagerId at 0 range 128..255;
   end record;
   for TRANSACTION_ENLISTMENT_PAIR_x'Size use 256;
   for TRANSACTION_ENLISTMENT_PAIR_x'Alignment use 4;
   subtype TRANSACTION_ENLISTMENT_PAIR is TRANSACTION_ENLISTMENT_PAIR_x;
   type PTRANSACTION_ENLISTMENT_PAIR is access all TRANSACTION_ENLISTMENT_PAIR_x;
   type TRANSACTION_ENLISTMENTS_INFORMATION_x_EnlistmentPair_Array is array(1..1) of TRANSACTION_ENLISTMENT_PAIR; -- Auto Generated Dependancy
   type TRANSACTION_ENLISTMENTS_INFORMATION_x is record
      NumberOfEnlistments : DWORD;
      EnlistmentPair : TRANSACTION_ENLISTMENTS_INFORMATION_x_EnlistmentPair_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_ENLISTMENTS_INFORMATION_x);
   for TRANSACTION_ENLISTMENTS_INFORMATION_x use record
      NumberOfEnlistments at 0 range 0..31;
      EnlistmentPair at 0 range 32..287;
   end record;
   for TRANSACTION_ENLISTMENTS_INFORMATION_x'Size use 288;
   for TRANSACTION_ENLISTMENTS_INFORMATION_x'Alignment use 4;
   subtype TRANSACTION_ENLISTMENTS_INFORMATION is TRANSACTION_ENLISTMENTS_INFORMATION_x;
   type PTRANSACTION_ENLISTMENTS_INFORMATION is access all TRANSACTION_ENLISTMENTS_INFORMATION_x;
   type TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION_x is record
      SuperiorEnlistmentPair : TRANSACTION_ENLISTMENT_PAIR;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION_x);
   for TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION_x use record
      SuperiorEnlistmentPair at 0 range 0..255;
   end record;
   for TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION_x'Size use 256;
   for TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION_x'Alignment use 4;
   subtype TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION is TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION_x;
   type PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION is access all TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION_x;
   type RESOURCEMANAGER_BASIC_INFORMATION_x_Description_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type RESOURCEMANAGER_BASIC_INFORMATION_x is record
      ResourceManagerId : GUID;
      DescriptionLength : DWORD;
      Description : RESOURCEMANAGER_BASIC_INFORMATION_x_Description_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,RESOURCEMANAGER_BASIC_INFORMATION_x);
   for RESOURCEMANAGER_BASIC_INFORMATION_x use record
      ResourceManagerId at 0 range 0..127;
      DescriptionLength at 0 range 128..159;
      Description at 0 range 160..175;
   end record;
   for RESOURCEMANAGER_BASIC_INFORMATION_x'Size use 192;
   for RESOURCEMANAGER_BASIC_INFORMATION_x'Alignment use 4;
   subtype RESOURCEMANAGER_BASIC_INFORMATION is RESOURCEMANAGER_BASIC_INFORMATION_x;
   type PRESOURCEMANAGER_BASIC_INFORMATION is access all RESOURCEMANAGER_BASIC_INFORMATION_x;
   type RESOURCEMANAGER_COMPLETION_INFORMATION_x is record
      IoCompletionPortHandle : HANDLE;
      CompletionKey : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,RESOURCEMANAGER_COMPLETION_INFORMATION_x);
   for RESOURCEMANAGER_COMPLETION_INFORMATION_x use record
      IoCompletionPortHandle at 0 range 0..63;
      CompletionKey at 0 range 64..127;
   end record;
   for RESOURCEMANAGER_COMPLETION_INFORMATION_x'Size use 128;
   for RESOURCEMANAGER_COMPLETION_INFORMATION_x'Alignment use 8;
   subtype RESOURCEMANAGER_COMPLETION_INFORMATION is RESOURCEMANAGER_COMPLETION_INFORMATION_x;
   type PRESOURCEMANAGER_COMPLETION_INFORMATION is access all RESOURCEMANAGER_COMPLETION_INFORMATION_x;
   type TRANSACTION_INFORMATION_CLASS_x is (
      TransactionBasicInformation,
      TransactionPropertiesInformation,
      TransactionEnlistmentInformation,
      TransactionSuperiorEnlistmentInformation,
      TransactionBindInformation,
      TransactionDTCPrivateInformation
   );
   for TRANSACTION_INFORMATION_CLASS_x use (
      TransactionBasicInformation => 0,
      TransactionPropertiesInformation => 1,
      TransactionEnlistmentInformation => 2,
      TransactionSuperiorEnlistmentInformation => 3,
      TransactionBindInformation => 4,
      TransactionDTCPrivateInformation => 5
   );
   for TRANSACTION_INFORMATION_CLASS_x'Size use 32;
   subtype TRANSACTION_INFORMATION_CLASS is TRANSACTION_INFORMATION_CLASS_x;
   type TRANSACTIONMANAGER_INFORMATION_CLASS_x is (
      TransactionManagerBasicInformation,
      TransactionManagerLogInformation,
      TransactionManagerLogPathInformation,
      TransactionManagerOnlineProbeInformation,
      TransactionManagerRecoveryInformation,
      TransactionManagerOldestTransactionInformation
   );
   for TRANSACTIONMANAGER_INFORMATION_CLASS_x use (
      TransactionManagerBasicInformation => 0,
      TransactionManagerLogInformation => 1,
      TransactionManagerLogPathInformation => 2,
      TransactionManagerOnlineProbeInformation => 3,
      TransactionManagerRecoveryInformation => 4,
      TransactionManagerOldestTransactionInformation => 5
   );
   for TRANSACTIONMANAGER_INFORMATION_CLASS_x'Size use 32;
   subtype TRANSACTIONMANAGER_INFORMATION_CLASS is TRANSACTIONMANAGER_INFORMATION_CLASS_x;
   type RESOURCEMANAGER_INFORMATION_CLASS_x is (
      ResourceManagerBasicInformation,
      ResourceManagerCompletionInformation
   );
   for RESOURCEMANAGER_INFORMATION_CLASS_x use (
      ResourceManagerBasicInformation => 0,
      ResourceManagerCompletionInformation => 1
   );
   for RESOURCEMANAGER_INFORMATION_CLASS_x'Size use 32;
   subtype RESOURCEMANAGER_INFORMATION_CLASS is RESOURCEMANAGER_INFORMATION_CLASS_x;
   type ENLISTMENT_BASIC_INFORMATION_x is record
      EnlistmentId : GUID;
      TransactionId : GUID;
      ResourceManagerId : GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,ENLISTMENT_BASIC_INFORMATION_x);
   for ENLISTMENT_BASIC_INFORMATION_x use record
      EnlistmentId at 0 range 0..127;
      TransactionId at 0 range 128..255;
      ResourceManagerId at 0 range 256..383;
   end record;
   for ENLISTMENT_BASIC_INFORMATION_x'Size use 384;
   for ENLISTMENT_BASIC_INFORMATION_x'Alignment use 4;
   subtype ENLISTMENT_BASIC_INFORMATION is ENLISTMENT_BASIC_INFORMATION_x;
   type PENLISTMENT_BASIC_INFORMATION is access all ENLISTMENT_BASIC_INFORMATION_x;
   type ENLISTMENT_CRM_INFORMATION_x is record
      CrmTransactionManagerId : GUID;
      CrmResourceManagerId : GUID;
      CrmEnlistmentId : GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,ENLISTMENT_CRM_INFORMATION_x);
   for ENLISTMENT_CRM_INFORMATION_x use record
      CrmTransactionManagerId at 0 range 0..127;
      CrmResourceManagerId at 0 range 128..255;
      CrmEnlistmentId at 0 range 256..383;
   end record;
   for ENLISTMENT_CRM_INFORMATION_x'Size use 384;
   for ENLISTMENT_CRM_INFORMATION_x'Alignment use 4;
   subtype ENLISTMENT_CRM_INFORMATION is ENLISTMENT_CRM_INFORMATION_x;
   type PENLISTMENT_CRM_INFORMATION is access all ENLISTMENT_CRM_INFORMATION_x;
   type ENLISTMENT_INFORMATION_CLASS_x is (
      EnlistmentBasicInformation,
      EnlistmentRecoveryInformation,
      EnlistmentCrmInformation
   );
   for ENLISTMENT_INFORMATION_CLASS_x use (
      EnlistmentBasicInformation => 0,
      EnlistmentRecoveryInformation => 1,
      EnlistmentCrmInformation => 2
   );
   for ENLISTMENT_INFORMATION_CLASS_x'Size use 32;
   subtype ENLISTMENT_INFORMATION_CLASS is ENLISTMENT_INFORMATION_CLASS_x;
   type TRANSACTION_LIST_ENTRY_x is record
      UOW_x : UOW;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_LIST_ENTRY_x);
   for TRANSACTION_LIST_ENTRY_x use record
      UOW_x at 0 range 0..127;
   end record;
   for TRANSACTION_LIST_ENTRY_x'Size use 128;
   for TRANSACTION_LIST_ENTRY_x'Alignment use 4;
   subtype TRANSACTION_LIST_ENTRY is TRANSACTION_LIST_ENTRY_x;
   type PTRANSACTION_LIST_ENTRY is access all TRANSACTION_LIST_ENTRY_x;
   type TRANSACTION_LIST_INFORMATION_x_TransactionInformation_Array is array(1..1) of TRANSACTION_LIST_ENTRY; -- Auto Generated Dependancy
   type TRANSACTION_LIST_INFORMATION_x is record
      NumberOfTransactions : DWORD;
      TransactionInformation : TRANSACTION_LIST_INFORMATION_x_TransactionInformation_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,TRANSACTION_LIST_INFORMATION_x);
   for TRANSACTION_LIST_INFORMATION_x use record
      NumberOfTransactions at 0 range 0..31;
      TransactionInformation at 0 range 32..159;
   end record;
   for TRANSACTION_LIST_INFORMATION_x'Size use 160;
   for TRANSACTION_LIST_INFORMATION_x'Alignment use 4;
   subtype TRANSACTION_LIST_INFORMATION is TRANSACTION_LIST_INFORMATION_x;
   type PTRANSACTION_LIST_INFORMATION is access all TRANSACTION_LIST_INFORMATION_x;
   type KTMOBJECT_TYPE_x is (
      KTMOBJECT_TRANSACTION,
      KTMOBJECT_TRANSACTION_MANAGER,
      KTMOBJECT_RESOURCE_MANAGER,
      KTMOBJECT_ENLISTMENT,
      KTMOBJECT_INVALID
   );
   for KTMOBJECT_TYPE_x use (
      KTMOBJECT_TRANSACTION => 0,
      KTMOBJECT_TRANSACTION_MANAGER => 1,
      KTMOBJECT_RESOURCE_MANAGER => 2,
      KTMOBJECT_ENLISTMENT => 3,
      KTMOBJECT_INVALID => 4
   );
   for KTMOBJECT_TYPE_x'Size use 32;
   subtype KTMOBJECT_TYPE is KTMOBJECT_TYPE_x;
   type PKTMOBJECT_TYPE is access all KTMOBJECT_TYPE_x;
   type KTMOBJECT_CURSOR_x_ObjectIds_Array is array(1..1) of GUID; -- Auto Generated Dependancy
   type KTMOBJECT_CURSOR_x is record
      LastQuery : GUID;
      ObjectIdCount : DWORD;
      ObjectIds : KTMOBJECT_CURSOR_x_ObjectIds_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,KTMOBJECT_CURSOR_x);
   for KTMOBJECT_CURSOR_x use record
      LastQuery at 0 range 0..127;
      ObjectIdCount at 0 range 128..159;
      ObjectIds at 0 range 160..287;
   end record;
   for KTMOBJECT_CURSOR_x'Size use 288;
   for KTMOBJECT_CURSOR_x'Alignment use 4;
   subtype KTMOBJECT_CURSOR is KTMOBJECT_CURSOR_x;
   type PKTMOBJECT_CURSOR is access all KTMOBJECT_CURSOR_x;
   subtype TP_VERSION is DWORD;
   type PTP_VERSION is access all DWORD;
   type TP_CALLBACK_INSTANCE_x;
   subtype TP_CALLBACK_INSTANCE is TP_CALLBACK_INSTANCE_x;
   type PTP_CALLBACK_INSTANCE is access all TP_CALLBACK_INSTANCE_x;
   type PTP_SIMPLE_CALLBACK is access procedure (p1 : PTP_CALLBACK_INSTANCE ; p2 : PVOID); -- void (PTP_CALLBACK_INSTANCE, PVOID)
   pragma Convention(C,PTP_SIMPLE_CALLBACK);
   type TP_POOL_x;
   subtype TP_POOL is TP_POOL_x;
   type PTP_POOL is access all TP_POOL_x;
   type TP_CALLBACK_PRIORITY_x is (
      TP_CALLBACK_PRIORITY_HIGH,
      TP_CALLBACK_PRIORITY_NORMAL,
      TP_CALLBACK_PRIORITY_LOW,
      TP_CALLBACK_PRIORITY_INVALID
   );
   for TP_CALLBACK_PRIORITY_x use (
      TP_CALLBACK_PRIORITY_HIGH => 0,
      TP_CALLBACK_PRIORITY_NORMAL => 1,
      TP_CALLBACK_PRIORITY_LOW => 2,
      TP_CALLBACK_PRIORITY_INVALID => 3
   );
   for TP_CALLBACK_PRIORITY_x'Size use 32;
   subtype TP_CALLBACK_PRIORITY is TP_CALLBACK_PRIORITY_x;
   type TP_POOL_STACK_INFORMATION_x is record
      StackReserve : SIZE_T;
      StackCommit : SIZE_T;
   end record;
   pragma Convention (C_Pass_By_Copy,TP_POOL_STACK_INFORMATION_x);
   for TP_POOL_STACK_INFORMATION_x use record
      StackReserve at 0 range 0..63;
      StackCommit at 0 range 64..127;
   end record;
   for TP_POOL_STACK_INFORMATION_x'Size use 128;
   for TP_POOL_STACK_INFORMATION_x'Alignment use 8;
   subtype TP_POOL_STACK_INFORMATION is TP_POOL_STACK_INFORMATION_x;
   type PTP_POOL_STACK_INFORMATION is access all TP_POOL_STACK_INFORMATION_x;
   type TP_CLEANUP_GROUP_x;
   subtype TP_CLEANUP_GROUP is TP_CLEANUP_GROUP_x;
   type PTP_CLEANUP_GROUP is access all TP_CLEANUP_GROUP_x;
   type PTP_CLEANUP_GROUP_CANCEL_CALLBACK is access procedure (p1 : PVOID ; p2 : PVOID); -- void (PVOID, PVOID)
   pragma Convention(C,PTP_CLEANUP_GROUP_CANCEL_CALLBACK);
   type ACTIVATION_CONTEXT_x;
   type Anonymous_Record_135 is record
      LongFunction : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Persistent : Interfaces.C.Extensions.Unsigned_1; -- bit field
      private_x : Interfaces.C.Extensions.Unsigned_30; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_135);
   for Anonymous_Record_135 use record
      LongFunction at 0 range 0..0;
      Persistent at 0 range 1..1;
      private_x at 0 range 2..31;
   end record;
   for Anonymous_Record_135'Size use 32;
   for Anonymous_Record_135'Alignment use 4;
   type Anonymous_Record_134 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : DWORD;
         when others => 
            field_1 : Anonymous_Record_135;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_134);
   pragma Unchecked_Union (Anonymous_Record_134);
   for Anonymous_Record_134'Size use 32;
   for Anonymous_Record_134'Alignment use 4;
   type TP_CALLBACK_ENVIRON_V3_x is record
      Version : TP_VERSION;
      Pool : PTP_POOL;
      CleanupGroup : PTP_CLEANUP_GROUP;
      CleanupGroupCancelCallback : PTP_CLEANUP_GROUP_CANCEL_CALLBACK;
      RaceDll : PVOID;
      ActivationContext : access ACTIVATION_CONTEXT_x;
      FinalizationCallback : PTP_SIMPLE_CALLBACK;
      field_1 : Anonymous_Record_134;
      CallbackPriority : TP_CALLBACK_PRIORITY;
      Size : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,TP_CALLBACK_ENVIRON_V3_x);
   for TP_CALLBACK_ENVIRON_V3_x use record
      Version at 0 range 0..31;
      Pool at 0 range 64..127;
      CleanupGroup at 0 range 128..191;
      CleanupGroupCancelCallback at 0 range 192..255;
      RaceDll at 0 range 256..319;
      ActivationContext at 0 range 320..383;
      FinalizationCallback at 0 range 384..447;
      field_1 at 0 range 448..479;
      CallbackPriority at 0 range 480..511;
      Size at 0 range 512..543;
   end record;
   for TP_CALLBACK_ENVIRON_V3_x'Size use 576;
   for TP_CALLBACK_ENVIRON_V3_x'Alignment use 8;
   subtype TP_CALLBACK_ENVIRON_V3 is TP_CALLBACK_ENVIRON_V3_x;
   subtype TP_CALLBACK_ENVIRON is TP_CALLBACK_ENVIRON_V3;
   type PTP_CALLBACK_ENVIRON is access all TP_CALLBACK_ENVIRON_V3;
   -- TpInitializeCallbackEnviron(); -- inlined function not supported
   -- TpSetCallbackThreadpool(); -- inlined function not supported
   -- TpSetCallbackCleanupGroup(); -- inlined function not supported
   -- TpSetCallbackActivationContext(); -- inlined function not supported
   -- TpSetCallbackNoActivationContext(); -- inlined function not supported
   -- TpSetCallbackLongFunction(); -- inlined function not supported
   -- TpSetCallbackRaceWithDll(); -- inlined function not supported
   -- TpSetCallbackFinalizationCallback(); -- inlined function not supported
   -- TpSetCallbackPriority(); -- inlined function not supported
   -- TpSetCallbackPersistent(); -- inlined function not supported
   -- TpDestroyCallbackEnviron(); -- inlined function not supported
   type TP_WORK_x;
   subtype TP_WORK is TP_WORK_x;
   type PTP_WORK is access all TP_WORK_x;
   type PTP_WORK_CALLBACK is access procedure (p1 : PTP_CALLBACK_INSTANCE ; p2 : PVOID ; p3 : PTP_WORK); -- void (PTP_CALLBACK_INSTANCE, PVOID, PTP_WORK)
   pragma Convention(C,PTP_WORK_CALLBACK);
   type TP_TIMER_x;
   subtype TP_TIMER is TP_TIMER_x;
   type PTP_TIMER is access all TP_TIMER_x;
   type PTP_TIMER_CALLBACK is access procedure (p1 : PTP_CALLBACK_INSTANCE ; p2 : PVOID ; p3 : PTP_TIMER); -- void (PTP_CALLBACK_INSTANCE, PVOID, PTP_TIMER)
   pragma Convention(C,PTP_TIMER_CALLBACK);
   subtype TP_WAIT_RESULT is DWORD;
   type TP_WAIT_x;
   subtype TP_WAIT is TP_WAIT_x;
   type PTP_WAIT is access all TP_WAIT_x;
   type PTP_WAIT_CALLBACK is access procedure (p1 : PTP_CALLBACK_INSTANCE ; p2 : PVOID ; p3 : PTP_WAIT ; p4 : TP_WAIT_RESULT); -- void (PTP_CALLBACK_INSTANCE, PVOID, PTP_WAIT, TP_WAIT_RESULT)
   pragma Convention(C,PTP_WAIT_CALLBACK);
   type TP_IO_x;
   subtype TP_IO is TP_IO_x;
   type PTP_IO is access all TP_IO_x;
   type TEB_x;
   -- NtCurrentTeb(); -- inlined function not supported
   -- GetCurrentFiber(); -- inlined function not supported
   -- GetFiberData(); -- inlined function not supported
   -- #include <minwindef.h>
   subtype WPARAM is UINT_PTR;
   subtype LPARAM is LONG_PTR;
   subtype LRESULT is LONG_PTR;
   type SPHANDLE is access all HANDLE;
   type LPHANDLE is access all HANDLE;
   subtype HGLOBAL is HANDLE;
   subtype HLOCAL is HANDLE;
   subtype GLOBALHANDLE is HANDLE;
   subtype LOCALHANDLE is HANDLE;
   type FARPROC is access function  return INT_PTR; -- INT_PTR ()
   pragma Convention(C,FARPROC);
   type NEARPROC is access function  return INT_PTR; -- INT_PTR ()
   pragma Convention(C,NEARPROC);
   type PROC is access function  return INT_PTR; -- INT_PTR ()
   pragma Convention(C,PROC);
   subtype ATOM is WORD;
   type HKEY_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HKEY_x);
   for HKEY_x use record
      unused at 0 range 0..31;
   end record;
   for HKEY_x'Size use 32;
   for HKEY_x'Alignment use 4;
   type HKEY is access all HKEY_x;
   type PHKEY is access all HKEY;
   type HMETAFILE_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HMETAFILE_x);
   for HMETAFILE_x use record
      unused at 0 range 0..31;
   end record;
   for HMETAFILE_x'Size use 32;
   for HMETAFILE_x'Alignment use 4;
   type HMETAFILE is access all HMETAFILE_x;
   type HINSTANCE_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HINSTANCE_x);
   for HINSTANCE_x use record
      unused at 0 range 0..31;
   end record;
   for HINSTANCE_x'Size use 32;
   for HINSTANCE_x'Alignment use 4;
   type HINSTANCE is access all HINSTANCE_x;
   subtype HMODULE is HINSTANCE;
   type HRGN_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HRGN_x);
   for HRGN_x use record
      unused at 0 range 0..31;
   end record;
   for HRGN_x'Size use 32;
   for HRGN_x'Alignment use 4;
   type HRGN is access all HRGN_x;
   type HRSRC_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HRSRC_x);
   for HRSRC_x use record
      unused at 0 range 0..31;
   end record;
   for HRSRC_x'Size use 32;
   for HRSRC_x'Alignment use 4;
   type HRSRC is access all HRSRC_x;
   type HSPRITE_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HSPRITE_x);
   for HSPRITE_x use record
      unused at 0 range 0..31;
   end record;
   for HSPRITE_x'Size use 32;
   for HSPRITE_x'Alignment use 4;
   type HSPRITE is access all HSPRITE_x;
   type HLSURF_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HLSURF_x);
   for HLSURF_x use record
      unused at 0 range 0..31;
   end record;
   for HLSURF_x'Size use 32;
   for HLSURF_x'Alignment use 4;
   type HLSURF is access all HLSURF_x;
   type HSTR_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HSTR_x);
   for HSTR_x use record
      unused at 0 range 0..31;
   end record;
   for HSTR_x'Size use 32;
   for HSTR_x'Alignment use 4;
   type HSTR is access all HSTR_x;
   type HTASK_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HTASK_x);
   for HTASK_x use record
      unused at 0 range 0..31;
   end record;
   for HTASK_x'Size use 32;
   for HTASK_x'Alignment use 4;
   type HTASK is access all HTASK_x;
   type HWINSTA_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HWINSTA_x);
   for HWINSTA_x use record
      unused at 0 range 0..31;
   end record;
   for HWINSTA_x'Size use 32;
   for HWINSTA_x'Alignment use 4;
   type HWINSTA is access all HWINSTA_x;
   type HKL_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HKL_x);
   for HKL_x use record
      unused at 0 range 0..31;
   end record;
   for HKL_x'Size use 32;
   for HKL_x'Alignment use 4;
   type HKL is access all HKL_x;
   subtype HFILE is Interfaces.C.Int;
   type FILETIME_x is record
      dwLowDateTime : DWORD;
      dwHighDateTime : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,FILETIME_x);
   for FILETIME_x use record
      dwLowDateTime at 0 range 0..31;
      dwHighDateTime at 0 range 32..63;
   end record;
   for FILETIME_x'Size use 64;
   for FILETIME_x'Alignment use 4;
   subtype FILETIME is FILETIME_x;
   type PFILETIME is access all FILETIME_x;
   type LPFILETIME is access all FILETIME_x;
   -- #include <windef.h>
   type HWND_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HWND_x);
   for HWND_x use record
      unused at 0 range 0..31;
   end record;
   for HWND_x'Size use 32;
   for HWND_x'Alignment use 4;
   type HWND is access all HWND_x;
   type HHOOK_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HHOOK_x);
   for HHOOK_x use record
      unused at 0 range 0..31;
   end record;
   for HHOOK_x'Size use 32;
   for HHOOK_x'Alignment use 4;
   type HHOOK is access all HHOOK_x;
   type HGDIOBJ is access all Void;
   type HACCEL_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HACCEL_x);
   for HACCEL_x use record
      unused at 0 range 0..31;
   end record;
   for HACCEL_x'Size use 32;
   for HACCEL_x'Alignment use 4;
   type HACCEL is access all HACCEL_x;
   type HBITMAP_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HBITMAP_x);
   for HBITMAP_x use record
      unused at 0 range 0..31;
   end record;
   for HBITMAP_x'Size use 32;
   for HBITMAP_x'Alignment use 4;
   type HBITMAP is access all HBITMAP_x;
   type HBRUSH_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HBRUSH_x);
   for HBRUSH_x use record
      unused at 0 range 0..31;
   end record;
   for HBRUSH_x'Size use 32;
   for HBRUSH_x'Alignment use 4;
   type HBRUSH is access all HBRUSH_x;
   type HCOLORSPACE_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HCOLORSPACE_x);
   for HCOLORSPACE_x use record
      unused at 0 range 0..31;
   end record;
   for HCOLORSPACE_x'Size use 32;
   for HCOLORSPACE_x'Alignment use 4;
   type HCOLORSPACE is access all HCOLORSPACE_x;
   type HDC_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HDC_x);
   for HDC_x use record
      unused at 0 range 0..31;
   end record;
   for HDC_x'Size use 32;
   for HDC_x'Alignment use 4;
   type HDC is access all HDC_x;
   type HGLRC_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HGLRC_x);
   for HGLRC_x use record
      unused at 0 range 0..31;
   end record;
   for HGLRC_x'Size use 32;
   for HGLRC_x'Alignment use 4;
   type HGLRC is access all HGLRC_x;
   type HDESK_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HDESK_x);
   for HDESK_x use record
      unused at 0 range 0..31;
   end record;
   for HDESK_x'Size use 32;
   for HDESK_x'Alignment use 4;
   type HDESK is access all HDESK_x;
   type HENHMETAFILE_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HENHMETAFILE_x);
   for HENHMETAFILE_x use record
      unused at 0 range 0..31;
   end record;
   for HENHMETAFILE_x'Size use 32;
   for HENHMETAFILE_x'Alignment use 4;
   type HENHMETAFILE is access all HENHMETAFILE_x;
   type HFONT_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HFONT_x);
   for HFONT_x use record
      unused at 0 range 0..31;
   end record;
   for HFONT_x'Size use 32;
   for HFONT_x'Alignment use 4;
   type HFONT is access all HFONT_x;
   type HICON_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HICON_x);
   for HICON_x use record
      unused at 0 range 0..31;
   end record;
   for HICON_x'Size use 32;
   for HICON_x'Alignment use 4;
   type HICON is access all HICON_x;
   type HMENU_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HMENU_x);
   for HMENU_x use record
      unused at 0 range 0..31;
   end record;
   for HMENU_x'Size use 32;
   for HMENU_x'Alignment use 4;
   type HMENU is access all HMENU_x;
   type HPALETTE_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HPALETTE_x);
   for HPALETTE_x use record
      unused at 0 range 0..31;
   end record;
   for HPALETTE_x'Size use 32;
   for HPALETTE_x'Alignment use 4;
   type HPALETTE is access all HPALETTE_x;
   type HPEN_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HPEN_x);
   for HPEN_x use record
      unused at 0 range 0..31;
   end record;
   for HPEN_x'Size use 32;
   for HPEN_x'Alignment use 4;
   type HPEN is access all HPEN_x;
   type HWINEVENTHOOK_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HWINEVENTHOOK_x);
   for HWINEVENTHOOK_x use record
      unused at 0 range 0..31;
   end record;
   for HWINEVENTHOOK_x'Size use 32;
   for HWINEVENTHOOK_x'Alignment use 4;
   type HWINEVENTHOOK is access all HWINEVENTHOOK_x;
   type HMONITOR_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HMONITOR_x);
   for HMONITOR_x use record
      unused at 0 range 0..31;
   end record;
   for HMONITOR_x'Size use 32;
   for HMONITOR_x'Alignment use 4;
   type HMONITOR is access all HMONITOR_x;
   type HUMPD_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HUMPD_x);
   for HUMPD_x use record
      unused at 0 range 0..31;
   end record;
   for HUMPD_x'Size use 32;
   for HUMPD_x'Alignment use 4;
   type HUMPD is access all HUMPD_x;
   subtype HCURSOR is HICON;
   subtype COLORREF is DWORD;
   type LPCOLORREF is access all DWORD;
   type tagRECT is record
      left : LONG;
      top : LONG;
      right : LONG;
      bottom : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRECT);
   for tagRECT use record
      left at 0 range 0..31;
      top at 0 range 32..63;
      right at 0 range 64..95;
      bottom at 0 range 96..127;
   end record;
   for tagRECT'Size use 128;
   for tagRECT'Alignment use 4;
   subtype RECT is tagRECT;
   type PRECT is access all tagRECT;
   type NPRECT is access all tagRECT;
   type LPRECT is access all tagRECT;
   type LPCRECT is access constant RECT;
   type RECTL_x is record
      left : LONG;
      top : LONG;
      right : LONG;
      bottom : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,RECTL_x);
   for RECTL_x use record
      left at 0 range 0..31;
      top at 0 range 32..63;
      right at 0 range 64..95;
      bottom at 0 range 96..127;
   end record;
   for RECTL_x'Size use 128;
   for RECTL_x'Alignment use 4;
   subtype RECTL is RECTL_x;
   type PRECTL is access all RECTL_x;
   type LPRECTL is access all RECTL_x;
   type LPCRECTL is access constant RECTL;
   type tagPOINT is record
      x : LONG;
      y : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOINT);
   for tagPOINT use record
      x at 0 range 0..31;
      y at 0 range 32..63;
   end record;
   for tagPOINT'Size use 64;
   for tagPOINT'Alignment use 4;
   subtype POINT is tagPOINT;
   type PPOINT is access all tagPOINT;
   type NPPOINT is access all tagPOINT;
   type LPPOINT is access all tagPOINT;
   type POINTL_x is record
      x : LONG;
      y : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,POINTL_x);
   for POINTL_x use record
      x at 0 range 0..31;
      y at 0 range 32..63;
   end record;
   for POINTL_x'Size use 64;
   for POINTL_x'Alignment use 4;
   subtype POINTL is POINTL_x;
   type PPOINTL is access all POINTL_x;
   type tagSIZE is record
      cx : LONG;
      cy : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSIZE);
   for tagSIZE use record
      cx at 0 range 0..31;
      cy at 0 range 32..63;
   end record;
   for tagSIZE'Size use 64;
   for tagSIZE'Alignment use 4;
   subtype SIZE is tagSIZE;
   type PSIZE is access all tagSIZE;
   type LPSIZE is access all tagSIZE;
   subtype SIZEL is SIZE;
   type PSIZEL is access all SIZE;
   type LPSIZEL is access all SIZE;
   type tagPOINTS is record
      x : SHORT;
      y : SHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOINTS);
   for tagPOINTS use record
      x at 0 range 0..15;
      y at 0 range 16..31;
   end record;
   for tagPOINTS'Size use 32;
   for tagPOINTS'Alignment use 2;
   subtype POINTS is tagPOINTS;
   type PPOINTS is access all tagPOINTS;
   type LPPOINTS is access all tagPOINTS;
   type APP_LOCAL_DEVICE_ID_value_Array is array(1..32) of BYTE; -- Auto Generated Dependancy
   type APP_LOCAL_DEVICE_ID is record
      value : APP_LOCAL_DEVICE_ID_value_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,APP_LOCAL_DEVICE_ID);
   for APP_LOCAL_DEVICE_ID use record
      value at 0 range 0..255;
   end record;
   for APP_LOCAL_DEVICE_ID'Size use 256;
   for APP_LOCAL_DEVICE_ID'Alignment use 1;
   type DPI_AWARENESS_CONTEXT_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,DPI_AWARENESS_CONTEXT_x);
   for DPI_AWARENESS_CONTEXT_x use record
      unused at 0 range 0..31;
   end record;
   for DPI_AWARENESS_CONTEXT_x'Size use 32;
   for DPI_AWARENESS_CONTEXT_x'Alignment use 4;
   type DPI_AWARENESS_CONTEXT is access all DPI_AWARENESS_CONTEXT_x;
   type DPI_AWARENESS is (
      DPI_AWARENESS_INVALID,
      DPI_AWARENESS_UNAWARE,
      DPI_AWARENESS_SYSTEM_AWARE,
      DPI_AWARENESS_PER_MONITOR_AWARE
   );
   for DPI_AWARENESS use (
      DPI_AWARENESS_INVALID => -1,
      DPI_AWARENESS_UNAWARE => 0,
      DPI_AWARENESS_SYSTEM_AWARE => 1,
      DPI_AWARENESS_PER_MONITOR_AWARE => 2
   );
   for DPI_AWARENESS'Size use 32;
   type DPI_HOSTING_BEHAVIOR is (
      DPI_HOSTING_BEHAVIOR_INVALID,
      DPI_HOSTING_BEHAVIOR_DEFAULT,
      DPI_HOSTING_BEHAVIOR_MIXED
   );
   for DPI_HOSTING_BEHAVIOR use (
      DPI_HOSTING_BEHAVIOR_INVALID => -1,
      DPI_HOSTING_BEHAVIOR_DEFAULT => 0,
      DPI_HOSTING_BEHAVIOR_MIXED => 1
   );
   for DPI_HOSTING_BEHAVIOR'Size use 32;
   -- #include <minwinbase.h>
   type SECURITY_ATTRIBUTES_x is record
      nLength : DWORD;
      lpSecurityDescriptor : LPVOID;
      bInheritHandle : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,SECURITY_ATTRIBUTES_x);
   for SECURITY_ATTRIBUTES_x use record
      nLength at 0 range 0..31;
      lpSecurityDescriptor at 0 range 64..127;
      bInheritHandle at 0 range 128..159;
   end record;
   for SECURITY_ATTRIBUTES_x'Size use 192;
   for SECURITY_ATTRIBUTES_x'Alignment use 8;
   subtype SECURITY_ATTRIBUTES is SECURITY_ATTRIBUTES_x;
   type PSECURITY_ATTRIBUTES is access all SECURITY_ATTRIBUTES_x;
   type LPSECURITY_ATTRIBUTES is access all SECURITY_ATTRIBUTES_x;
   type Anonymous_Record_137 is record
      Offset : DWORD;
      OffsetHigh : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_137);
   for Anonymous_Record_137 use record
      Offset at 0 range 0..31;
      OffsetHigh at 0 range 32..63;
   end record;
   for Anonymous_Record_137'Size use 64;
   for Anonymous_Record_137'Alignment use 4;
   type Anonymous_Record_136 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_137;
         when others => 
            Pointer : PVOID;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_136);
   pragma Unchecked_Union (Anonymous_Record_136);
   for Anonymous_Record_136'Size use 64;
   for Anonymous_Record_136'Alignment use 8;
   type OVERLAPPED_x is record
      Internal : ULONG_PTR;
      InternalHigh : ULONG_PTR;
      field_1 : Anonymous_Record_136;
      hEvent : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,OVERLAPPED_x);
   for OVERLAPPED_x use record
      Internal at 0 range 0..63;
      InternalHigh at 0 range 64..127;
      field_1 at 0 range 128..191;
      hEvent at 0 range 192..255;
   end record;
   for OVERLAPPED_x'Size use 256;
   for OVERLAPPED_x'Alignment use 8;
   subtype OVERLAPPED is OVERLAPPED_x;
   type LPOVERLAPPED is access all OVERLAPPED_x;
   type OVERLAPPED_ENTRY_x is record
      lpCompletionKey : ULONG_PTR;
      lpOverlapped_x : LPOVERLAPPED;
      Internal : ULONG_PTR;
      dwNumberOfBytesTransferred : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,OVERLAPPED_ENTRY_x);
   for OVERLAPPED_ENTRY_x use record
      lpCompletionKey at 0 range 0..63;
      lpOverlapped_x at 0 range 64..127;
      Internal at 0 range 128..191;
      dwNumberOfBytesTransferred at 0 range 192..223;
   end record;
   for OVERLAPPED_ENTRY_x'Size use 256;
   for OVERLAPPED_ENTRY_x'Alignment use 8;
   subtype OVERLAPPED_ENTRY is OVERLAPPED_ENTRY_x;
   type LPOVERLAPPED_ENTRY is access all OVERLAPPED_ENTRY_x;
   type SYSTEMTIME_x is record
      wYear : WORD;
      wMonth : WORD;
      wDayOfWeek : WORD;
      wDay : WORD;
      wHour : WORD;
      wMinute : WORD;
      wSecond : WORD;
      wMilliseconds : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEMTIME_x);
   for SYSTEMTIME_x use record
      wYear at 0 range 0..15;
      wMonth at 0 range 16..31;
      wDayOfWeek at 0 range 32..47;
      wDay at 0 range 48..63;
      wHour at 0 range 64..79;
      wMinute at 0 range 80..95;
      wSecond at 0 range 96..111;
      wMilliseconds at 0 range 112..127;
   end record;
   for SYSTEMTIME_x'Size use 128;
   for SYSTEMTIME_x'Alignment use 2;
   subtype SYSTEMTIME is SYSTEMTIME_x;
   type PSYSTEMTIME is access all SYSTEMTIME_x;
   type LPSYSTEMTIME is access all SYSTEMTIME_x;
   type WIN32_FIND_DATAA_x_cFileName_Array is array(1..260) of CHAR; -- Auto Generated Dependancy
   type WIN32_FIND_DATAA_x_cAlternateFileName_Array is array(1..14) of CHAR; -- Auto Generated Dependancy
   type WIN32_FIND_DATAA_x is record
      dwFileAttributes : DWORD;
      ftCreationTime : FILETIME;
      ftLastAccessTime : FILETIME;
      ftLastWriteTime : FILETIME;
      nFileSizeHigh : DWORD;
      nFileSizeLow : DWORD;
      dwReserved0 : DWORD;
      dwReserved1 : DWORD;
      cFileName : WIN32_FIND_DATAA_x_cFileName_Array;
      cAlternateFileName : WIN32_FIND_DATAA_x_cAlternateFileName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,WIN32_FIND_DATAA_x);
   for WIN32_FIND_DATAA_x use record
      dwFileAttributes at 0 range 0..31;
      ftCreationTime at 0 range 32..95;
      ftLastAccessTime at 0 range 96..159;
      ftLastWriteTime at 0 range 160..223;
      nFileSizeHigh at 0 range 224..255;
      nFileSizeLow at 0 range 256..287;
      dwReserved0 at 0 range 288..319;
      dwReserved1 at 0 range 320..351;
      cFileName at 0 range 352..2431;
      cAlternateFileName at 0 range 2432..2543;
   end record;
   for WIN32_FIND_DATAA_x'Size use 2560;
   for WIN32_FIND_DATAA_x'Alignment use 4;
   subtype WIN32_FIND_DATAA is WIN32_FIND_DATAA_x;
   type PWIN32_FIND_DATAA is access all WIN32_FIND_DATAA_x;
   type LPWIN32_FIND_DATAA is access all WIN32_FIND_DATAA_x;
   type WIN32_FIND_DATAW_x_cFileName_Array is array(1..260) of WCHAR; -- Auto Generated Dependancy
   type WIN32_FIND_DATAW_x_cAlternateFileName_Array is array(1..14) of WCHAR; -- Auto Generated Dependancy
   type WIN32_FIND_DATAW_x is record
      dwFileAttributes : DWORD;
      ftCreationTime : FILETIME;
      ftLastAccessTime : FILETIME;
      ftLastWriteTime : FILETIME;
      nFileSizeHigh : DWORD;
      nFileSizeLow : DWORD;
      dwReserved0 : DWORD;
      dwReserved1 : DWORD;
      cFileName : WIN32_FIND_DATAW_x_cFileName_Array;
      cAlternateFileName : WIN32_FIND_DATAW_x_cAlternateFileName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,WIN32_FIND_DATAW_x);
   for WIN32_FIND_DATAW_x use record
      dwFileAttributes at 0 range 0..31;
      ftCreationTime at 0 range 32..95;
      ftLastAccessTime at 0 range 96..159;
      ftLastWriteTime at 0 range 160..223;
      nFileSizeHigh at 0 range 224..255;
      nFileSizeLow at 0 range 256..287;
      dwReserved0 at 0 range 288..319;
      dwReserved1 at 0 range 320..351;
      cFileName at 0 range 352..4511;
      cAlternateFileName at 0 range 4512..4735;
   end record;
   for WIN32_FIND_DATAW_x'Size use 4736;
   for WIN32_FIND_DATAW_x'Alignment use 4;
   subtype WIN32_FIND_DATAW is WIN32_FIND_DATAW_x;
   type PWIN32_FIND_DATAW is access all WIN32_FIND_DATAW_x;
   type LPWIN32_FIND_DATAW is access all WIN32_FIND_DATAW_x;
   subtype WIN32_FIND_DATA is WIN32_FIND_DATAA;
   subtype PWIN32_FIND_DATA is PWIN32_FIND_DATAA;
   subtype LPWIN32_FIND_DATA is LPWIN32_FIND_DATAA;
   type FINDEX_INFO_LEVELS_x is (
      FindExInfoStandard,
      FindExInfoBasic,
      FindExInfoMaxInfoLevel
   );
   for FINDEX_INFO_LEVELS_x use (
      FindExInfoStandard => 0,
      FindExInfoBasic => 1,
      FindExInfoMaxInfoLevel => 2
   );
   for FINDEX_INFO_LEVELS_x'Size use 32;
   subtype FINDEX_INFO_LEVELS is FINDEX_INFO_LEVELS_x;
   type FINDEX_SEARCH_OPS_x is (
      FindExSearchNameMatch,
      FindExSearchLimitToDirectories,
      FindExSearchLimitToDevices,
      FindExSearchMaxSearchOp
   );
   for FINDEX_SEARCH_OPS_x use (
      FindExSearchNameMatch => 0,
      FindExSearchLimitToDirectories => 1,
      FindExSearchLimitToDevices => 2,
      FindExSearchMaxSearchOp => 3
   );
   for FINDEX_SEARCH_OPS_x'Size use 32;
   subtype FINDEX_SEARCH_OPS is FINDEX_SEARCH_OPS_x;
   type READ_DIRECTORY_NOTIFY_INFORMATION_CLASS_x is (
      ReadDirectoryNotifyInformation,
      ReadDirectoryNotifyExtendedInformation
   );
   for READ_DIRECTORY_NOTIFY_INFORMATION_CLASS_x use (
      ReadDirectoryNotifyInformation => 1,
      ReadDirectoryNotifyExtendedInformation => 2
   );
   for READ_DIRECTORY_NOTIFY_INFORMATION_CLASS_x'Size use 32;
   subtype READ_DIRECTORY_NOTIFY_INFORMATION_CLASS is READ_DIRECTORY_NOTIFY_INFORMATION_CLASS_x;
   type PREAD_DIRECTORY_NOTIFY_INFORMATION_CLASS is access all READ_DIRECTORY_NOTIFY_INFORMATION_CLASS_x;
   type GET_FILEEX_INFO_LEVELS_x is (
      GetFileExInfoStandard,
      GetFileExMaxInfoLevel
   );
   for GET_FILEEX_INFO_LEVELS_x use (
      GetFileExInfoStandard => 0,
      GetFileExMaxInfoLevel => 1
   );
   for GET_FILEEX_INFO_LEVELS_x'Size use 32;
   subtype GET_FILEEX_INFO_LEVELS is GET_FILEEX_INFO_LEVELS_x;
   type FILE_INFO_BY_HANDLE_CLASS_x is (
      FileBasicInfo,
      FileStandardInfo,
      FileNameInfo,
      FileRenameInfo,
      FileDispositionInfo,
      FileAllocationInfo,
      FileEndOfFileInfo,
      FileStreamInfo,
      FileCompressionInfo,
      FileAttributeTagInfo,
      FileIdBothDirectoryInfo,
      FileIdBothDirectoryRestartInfo,
      FileIoPriorityHintInfo,
      FileRemoteProtocolInfo,
      FileFullDirectoryInfo,
      FileFullDirectoryRestartInfo,
      FileStorageInfo,
      FileAlignmentInfo,
      FileIdInfo,
      FileIdExtdDirectoryInfo,
      FileIdExtdDirectoryRestartInfo,
      FileDispositionInfoEx,
      FileRenameInfoEx,
      FileCaseSensitiveInfo,
      FileNormalizedNameInfo,
      MaximumFileInfoByHandleClass
   );
   for FILE_INFO_BY_HANDLE_CLASS_x use (
      FileBasicInfo => 0,
      FileStandardInfo => 1,
      FileNameInfo => 2,
      FileRenameInfo => 3,
      FileDispositionInfo => 4,
      FileAllocationInfo => 5,
      FileEndOfFileInfo => 6,
      FileStreamInfo => 7,
      FileCompressionInfo => 8,
      FileAttributeTagInfo => 9,
      FileIdBothDirectoryInfo => 10,
      FileIdBothDirectoryRestartInfo => 11,
      FileIoPriorityHintInfo => 12,
      FileRemoteProtocolInfo => 13,
      FileFullDirectoryInfo => 14,
      FileFullDirectoryRestartInfo => 15,
      FileStorageInfo => 16,
      FileAlignmentInfo => 17,
      FileIdInfo => 18,
      FileIdExtdDirectoryInfo => 19,
      FileIdExtdDirectoryRestartInfo => 20,
      FileDispositionInfoEx => 21,
      FileRenameInfoEx => 22,
      FileCaseSensitiveInfo => 23,
      FileNormalizedNameInfo => 24,
      MaximumFileInfoByHandleClass => 25
   );
   for FILE_INFO_BY_HANDLE_CLASS_x'Size use 32;
   subtype FILE_INFO_BY_HANDLE_CLASS is FILE_INFO_BY_HANDLE_CLASS_x;
   type PFILE_INFO_BY_HANDLE_CLASS is access all FILE_INFO_BY_HANDLE_CLASS_x;
   subtype CRITICAL_SECTION is RTL_CRITICAL_SECTION;
   subtype PCRITICAL_SECTION is PRTL_CRITICAL_SECTION;
   subtype LPCRITICAL_SECTION is PRTL_CRITICAL_SECTION;
   subtype CRITICAL_SECTION_DEBUG is RTL_CRITICAL_SECTION_DEBUG;
   subtype PCRITICAL_SECTION_DEBUG is PRTL_CRITICAL_SECTION_DEBUG;
   subtype LPCRITICAL_SECTION_DEBUG is PRTL_CRITICAL_SECTION_DEBUG;
   type LPOVERLAPPED_COMPLETION_ROUTINE is access procedure (p1 : DWORD ; p2 : DWORD ; p3 : LPOVERLAPPED); -- void (DWORD, DWORD, LPOVERLAPPED)
   pragma Convention(C,LPOVERLAPPED_COMPLETION_ROUTINE);
   type Anonymous_Record_139_dwReserved_Array is array(1..3) of DWORD; -- Auto Generated Dependancy
   type Anonymous_Record_139 is record
      hMem : HANDLE;
      dwReserved : Anonymous_Record_139_dwReserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_139);
   for Anonymous_Record_139 use record
      hMem at 0 range 0..63;
      dwReserved at 0 range 64..159;
   end record;
   for Anonymous_Record_139'Size use 192;
   for Anonymous_Record_139'Alignment use 8;
   type Anonymous_Record_140 is record
      dwCommittedSize : DWORD;
      dwUnCommittedSize : DWORD;
      lpFirstBlock : LPVOID;
      lpLastBlock : LPVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_140);
   for Anonymous_Record_140 use record
      dwCommittedSize at 0 range 0..31;
      dwUnCommittedSize at 0 range 32..63;
      lpFirstBlock at 0 range 64..127;
      lpLastBlock at 0 range 128..191;
   end record;
   for Anonymous_Record_140'Size use 192;
   for Anonymous_Record_140'Alignment use 8;
   type Anonymous_Record_138 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_139;
         when others => 
            field_2 : Anonymous_Record_140;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_138);
   pragma Unchecked_Union (Anonymous_Record_138);
   for Anonymous_Record_138'Size use 192;
   for Anonymous_Record_138'Alignment use 8;
   type PROCESS_HEAP_ENTRY_x is record
      lpData : PVOID;
      cbData : DWORD;
      cbOverhead : BYTE;
      iRegionIndex : BYTE;
      wFlags : WORD;
      field_1 : Anonymous_Record_138;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_HEAP_ENTRY_x);
   for PROCESS_HEAP_ENTRY_x use record
      lpData at 0 range 0..63;
      cbData at 0 range 64..95;
      cbOverhead at 0 range 96..103;
      iRegionIndex at 0 range 104..111;
      wFlags at 0 range 112..127;
      field_1 at 0 range 128..319;
   end record;
   for PROCESS_HEAP_ENTRY_x'Size use 320;
   for PROCESS_HEAP_ENTRY_x'Alignment use 8;
   subtype PROCESS_HEAP_ENTRY is PROCESS_HEAP_ENTRY_x;
   type LPPROCESS_HEAP_ENTRY is access all PROCESS_HEAP_ENTRY_x;
   type PPROCESS_HEAP_ENTRY is access all PROCESS_HEAP_ENTRY_x;
   type Anonymous_Record_142 is record
      LocalizedReasonModule : HMODULE;
      LocalizedReasonId : ULONG;
      ReasonStringCount : ULONG;
      ReasonStrings : access LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_142);
   for Anonymous_Record_142 use record
      LocalizedReasonModule at 0 range 0..63;
      LocalizedReasonId at 0 range 64..95;
      ReasonStringCount at 0 range 96..127;
      ReasonStrings at 0 range 128..191;
   end record;
   for Anonymous_Record_142'Size use 192;
   for Anonymous_Record_142'Alignment use 8;
   type Anonymous_Record_141 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_142;
         when others => 
            SimpleReasonString : LPWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_141);
   pragma Unchecked_Union (Anonymous_Record_141);
   for Anonymous_Record_141'Size use 192;
   for Anonymous_Record_141'Alignment use 8;
   type REASON_CONTEXT_x is record
      Version : ULONG;
      Flags : DWORD;
      field_1 : Anonymous_Record_141;
   end record;
   pragma Convention (C_Pass_By_Copy,REASON_CONTEXT_x);
   for REASON_CONTEXT_x use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      field_1 at 0 range 64..255;
   end record;
   for REASON_CONTEXT_x'Size use 256;
   for REASON_CONTEXT_x'Alignment use 8;
   subtype REASON_CONTEXT is REASON_CONTEXT_x;
   type PREASON_CONTEXT is access all REASON_CONTEXT_x;
   type PTHREAD_START_ROUTINE is access function (p1 : LPVOID) return DWORD; -- DWORD (LPVOID)
   pragma Convention(C,PTHREAD_START_ROUTINE);
   subtype LPTHREAD_START_ROUTINE is PTHREAD_START_ROUTINE;
   type PENCLAVE_ROUTINE is access function (p1 : LPVOID) return LPVOID; -- LPVOID (LPVOID)
   pragma Convention(C,PENCLAVE_ROUTINE);
   subtype LPENCLAVE_ROUTINE is PENCLAVE_ROUTINE;
   type EXCEPTION_DEBUG_INFO_x is record
      ExceptionRecord : EXCEPTION_RECORD;
      dwFirstChance : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,EXCEPTION_DEBUG_INFO_x);
   for EXCEPTION_DEBUG_INFO_x use record
      ExceptionRecord at 0 range 0..1215;
      dwFirstChance at 0 range 1216..1247;
   end record;
   for EXCEPTION_DEBUG_INFO_x'Size use 1280;
   for EXCEPTION_DEBUG_INFO_x'Alignment use 8;
   subtype EXCEPTION_DEBUG_INFO is EXCEPTION_DEBUG_INFO_x;
   type LPEXCEPTION_DEBUG_INFO is access all EXCEPTION_DEBUG_INFO_x;
   type CREATE_THREAD_DEBUG_INFO_x is record
      hThread : HANDLE;
      lpThreadLocalBase : LPVOID;
      lpStartAddress : LPTHREAD_START_ROUTINE;
   end record;
   pragma Convention (C_Pass_By_Copy,CREATE_THREAD_DEBUG_INFO_x);
   for CREATE_THREAD_DEBUG_INFO_x use record
      hThread at 0 range 0..63;
      lpThreadLocalBase at 0 range 64..127;
      lpStartAddress at 0 range 128..191;
   end record;
   for CREATE_THREAD_DEBUG_INFO_x'Size use 192;
   for CREATE_THREAD_DEBUG_INFO_x'Alignment use 8;
   subtype CREATE_THREAD_DEBUG_INFO is CREATE_THREAD_DEBUG_INFO_x;
   type LPCREATE_THREAD_DEBUG_INFO is access all CREATE_THREAD_DEBUG_INFO_x;
   type CREATE_PROCESS_DEBUG_INFO_x is record
      hFile_x : HANDLE;
      hProcess : HANDLE;
      hThread : HANDLE;
      lpBaseOfImage : LPVOID;
      dwDebugInfoFileOffset : DWORD;
      nDebugInfoSize : DWORD;
      lpThreadLocalBase : LPVOID;
      lpStartAddress : LPTHREAD_START_ROUTINE;
      lpImageName : LPVOID;
      fUnicode : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CREATE_PROCESS_DEBUG_INFO_x);
   for CREATE_PROCESS_DEBUG_INFO_x use record
      hFile_x at 0 range 0..63;
      hProcess at 0 range 64..127;
      hThread at 0 range 128..191;
      lpBaseOfImage at 0 range 192..255;
      dwDebugInfoFileOffset at 0 range 256..287;
      nDebugInfoSize at 0 range 288..319;
      lpThreadLocalBase at 0 range 320..383;
      lpStartAddress at 0 range 384..447;
      lpImageName at 0 range 448..511;
      fUnicode at 0 range 512..527;
   end record;
   for CREATE_PROCESS_DEBUG_INFO_x'Size use 576;
   for CREATE_PROCESS_DEBUG_INFO_x'Alignment use 8;
   subtype CREATE_PROCESS_DEBUG_INFO is CREATE_PROCESS_DEBUG_INFO_x;
   type LPCREATE_PROCESS_DEBUG_INFO is access all CREATE_PROCESS_DEBUG_INFO_x;
   type EXIT_THREAD_DEBUG_INFO_x is record
      dwExitCode : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,EXIT_THREAD_DEBUG_INFO_x);
   for EXIT_THREAD_DEBUG_INFO_x use record
      dwExitCode at 0 range 0..31;
   end record;
   for EXIT_THREAD_DEBUG_INFO_x'Size use 32;
   for EXIT_THREAD_DEBUG_INFO_x'Alignment use 4;
   subtype EXIT_THREAD_DEBUG_INFO is EXIT_THREAD_DEBUG_INFO_x;
   type LPEXIT_THREAD_DEBUG_INFO is access all EXIT_THREAD_DEBUG_INFO_x;
   type EXIT_PROCESS_DEBUG_INFO_x is record
      dwExitCode : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,EXIT_PROCESS_DEBUG_INFO_x);
   for EXIT_PROCESS_DEBUG_INFO_x use record
      dwExitCode at 0 range 0..31;
   end record;
   for EXIT_PROCESS_DEBUG_INFO_x'Size use 32;
   for EXIT_PROCESS_DEBUG_INFO_x'Alignment use 4;
   subtype EXIT_PROCESS_DEBUG_INFO is EXIT_PROCESS_DEBUG_INFO_x;
   type LPEXIT_PROCESS_DEBUG_INFO is access all EXIT_PROCESS_DEBUG_INFO_x;
   type LOAD_DLL_DEBUG_INFO_x is record
      hFile_x : HANDLE;
      lpBaseOfDll : LPVOID;
      dwDebugInfoFileOffset : DWORD;
      nDebugInfoSize : DWORD;
      lpImageName : LPVOID;
      fUnicode : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,LOAD_DLL_DEBUG_INFO_x);
   for LOAD_DLL_DEBUG_INFO_x use record
      hFile_x at 0 range 0..63;
      lpBaseOfDll at 0 range 64..127;
      dwDebugInfoFileOffset at 0 range 128..159;
      nDebugInfoSize at 0 range 160..191;
      lpImageName at 0 range 192..255;
      fUnicode at 0 range 256..271;
   end record;
   for LOAD_DLL_DEBUG_INFO_x'Size use 320;
   for LOAD_DLL_DEBUG_INFO_x'Alignment use 8;
   subtype LOAD_DLL_DEBUG_INFO is LOAD_DLL_DEBUG_INFO_x;
   type LPLOAD_DLL_DEBUG_INFO is access all LOAD_DLL_DEBUG_INFO_x;
   type UNLOAD_DLL_DEBUG_INFO_x is record
      lpBaseOfDll : LPVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,UNLOAD_DLL_DEBUG_INFO_x);
   for UNLOAD_DLL_DEBUG_INFO_x use record
      lpBaseOfDll at 0 range 0..63;
   end record;
   for UNLOAD_DLL_DEBUG_INFO_x'Size use 64;
   for UNLOAD_DLL_DEBUG_INFO_x'Alignment use 8;
   subtype UNLOAD_DLL_DEBUG_INFO is UNLOAD_DLL_DEBUG_INFO_x;
   type LPUNLOAD_DLL_DEBUG_INFO is access all UNLOAD_DLL_DEBUG_INFO_x;
   type OUTPUT_DEBUG_STRING_INFO_x is record
      lpDebugStringData : LPSTR;
      fUnicode : WORD;
      nDebugStringLength : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,OUTPUT_DEBUG_STRING_INFO_x);
   for OUTPUT_DEBUG_STRING_INFO_x use record
      lpDebugStringData at 0 range 0..63;
      fUnicode at 0 range 64..79;
      nDebugStringLength at 0 range 80..95;
   end record;
   for OUTPUT_DEBUG_STRING_INFO_x'Size use 128;
   for OUTPUT_DEBUG_STRING_INFO_x'Alignment use 8;
   subtype OUTPUT_DEBUG_STRING_INFO is OUTPUT_DEBUG_STRING_INFO_x;
   type LPOUTPUT_DEBUG_STRING_INFO is access all OUTPUT_DEBUG_STRING_INFO_x;
   type RIP_INFO_x is record
      dwError : DWORD;
      dwType : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,RIP_INFO_x);
   for RIP_INFO_x use record
      dwError at 0 range 0..31;
      dwType at 0 range 32..63;
   end record;
   for RIP_INFO_x'Size use 64;
   for RIP_INFO_x'Alignment use 4;
   subtype RIP_INFO is RIP_INFO_x;
   type LPRIP_INFO is access all RIP_INFO_x;
   type Anonymous_Record_143 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            exception_x : EXCEPTION_DEBUG_INFO;
         when 1 =>
            CreateThread : CREATE_THREAD_DEBUG_INFO;
         when 2 =>
            CreateProcessInfo : CREATE_PROCESS_DEBUG_INFO;
         when 3 =>
            ExitThread : EXIT_THREAD_DEBUG_INFO;
         when 4 =>
            ExitProcess : EXIT_PROCESS_DEBUG_INFO;
         when 5 =>
            LoadDll : LOAD_DLL_DEBUG_INFO;
         when 6 =>
            UnloadDll : UNLOAD_DLL_DEBUG_INFO;
         when 7 =>
            DebugString : OUTPUT_DEBUG_STRING_INFO;
         when others => 
            RipInfo : RIP_INFO;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_143);
   pragma Unchecked_Union (Anonymous_Record_143);
   for Anonymous_Record_143'Size use 1280;
   for Anonymous_Record_143'Alignment use 8;
   type DEBUG_EVENT_x is record
      dwDebugEventCode : DWORD;
      dwProcessId : DWORD;
      dwThreadId : DWORD;
      field_1 : Anonymous_Record_143;
   end record;
   pragma Convention (C_Pass_By_Copy,DEBUG_EVENT_x);
   for DEBUG_EVENT_x use record
      dwDebugEventCode at 0 range 0..31;
      dwProcessId at 0 range 32..63;
      dwThreadId at 0 range 64..95;
      field_1 at 0 range 96..1375;
   end record;
   for DEBUG_EVENT_x'Size use 1408;
   for DEBUG_EVENT_x'Alignment use 8;
   subtype DEBUG_EVENT is DEBUG_EVENT_x;
   type LPDEBUG_EVENT is access all DEBUG_EVENT_x;
   subtype LPCONTEXT is PCONTEXT;
   -- #include <apiquery2.h>
   function IsApiSetImplemented(
      Contract : PCSTR
   ) return BOOL;
   pragma import (Cpp,IsApiSetImplemented,"IsApiSetImplemented");
   -- #include <processenv.h>
   function SetEnvironmentStringsW(
      NewEnvironment : LPWCH
   ) return BOOL;
   pragma import (Cpp,SetEnvironmentStringsW,"SetEnvironmentStringsW");
   function GetStdHandle(
      nStdHandle : DWORD
   ) return HANDLE;
   pragma import (Cpp,GetStdHandle,"GetStdHandle");
   function SetStdHandle(
      nStdHandle : DWORD;
      hHandle : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetStdHandle,"SetStdHandle");
   function SetStdHandleEx(
      nStdHandle : DWORD;
      hHandle : HANDLE;
      phPrevValue : PHANDLE
   ) return BOOL;
   pragma import (Cpp,SetStdHandleEx,"SetStdHandleEx");
   function GetCommandLineA return LPSTR;
   pragma import (Cpp,GetCommandLineA,"GetCommandLineA");
   function GetCommandLineW return LPWSTR;
   pragma import (Cpp,GetCommandLineW,"GetCommandLineW");
   function GetEnvironmentStrings return LPCH;
   pragma import (Cpp,GetEnvironmentStrings,"GetEnvironmentStrings");
   function GetEnvironmentStringsW return LPWCH;
   pragma import (Cpp,GetEnvironmentStringsW,"GetEnvironmentStringsW");
   function FreeEnvironmentStringsA(
      penv : LPCH
   ) return BOOL;
   pragma import (Cpp,FreeEnvironmentStringsA,"FreeEnvironmentStringsA");
   function FreeEnvironmentStringsW(
      penv : LPWCH
   ) return BOOL;
   pragma import (Cpp,FreeEnvironmentStringsW,"FreeEnvironmentStringsW");
   function GetEnvironmentVariableA(
      lpName : LPCSTR;
      lpBuffer : LPSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetEnvironmentVariableA,"GetEnvironmentVariableA");
   function GetEnvironmentVariableW(
      lpName : LPCWSTR;
      lpBuffer : LPWSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetEnvironmentVariableW,"GetEnvironmentVariableW");
   function SetEnvironmentVariableA(
      lpName : LPCSTR;
      lpValue : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetEnvironmentVariableA,"SetEnvironmentVariableA");
   function SetEnvironmentVariableW(
      lpName : LPCWSTR;
      lpValue : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetEnvironmentVariableW,"SetEnvironmentVariableW");
   function ExpandEnvironmentStringsA(
      lpSrc : LPCSTR;
      lpDst : LPSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,ExpandEnvironmentStringsA,"ExpandEnvironmentStringsA");
   function ExpandEnvironmentStringsW(
      lpSrc : LPCWSTR;
      lpDst : LPWSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,ExpandEnvironmentStringsW,"ExpandEnvironmentStringsW");
   function SetCurrentDirectoryA(
      lpPathName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetCurrentDirectoryA,"SetCurrentDirectoryA");
   function SetCurrentDirectoryW(
      lpPathName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetCurrentDirectoryW,"SetCurrentDirectoryW");
   function GetCurrentDirectoryA(
      nBufferLength : DWORD;
      lpBuffer : LPSTR
   ) return DWORD;
   pragma import (Cpp,GetCurrentDirectoryA,"GetCurrentDirectoryA");
   function GetCurrentDirectoryW(
      nBufferLength : DWORD;
      lpBuffer : LPWSTR
   ) return DWORD;
   pragma import (Cpp,GetCurrentDirectoryW,"GetCurrentDirectoryW");
   function SearchPathW(
      lpPath : LPCWSTR;
      lpFileName : LPCWSTR;
      lpExtension : LPCWSTR;
      nBufferLength : DWORD;
      lpBuffer : LPWSTR;
      lpFilePart : access LPWSTR
   ) return DWORD;
   pragma import (Cpp,SearchPathW,"SearchPathW");
   function SearchPathA(
      lpPath : LPCSTR;
      lpFileName : LPCSTR;
      lpExtension : LPCSTR;
      nBufferLength : DWORD;
      lpBuffer : LPSTR;
      lpFilePart : access LPSTR
   ) return DWORD;
   pragma import (Cpp,SearchPathA,"SearchPathA");
   function NeedCurrentDirectoryForExePathA(
      ExeName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,NeedCurrentDirectoryForExePathA,"NeedCurrentDirectoryForExePathA");
   function NeedCurrentDirectoryForExePathW(
      ExeName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,NeedCurrentDirectoryForExePathW,"NeedCurrentDirectoryForExePathW");
   -- #include <fileapi.h>
   function CompareFileTime(
      lpFileTime1 : access constant FILETIME;
      lpFileTime2 : access constant FILETIME
   ) return LONG;
   pragma import (Cpp,CompareFileTime,"CompareFileTime");
   function CreateDirectoryA(
      lpPathName : LPCSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return BOOL;
   pragma import (Cpp,CreateDirectoryA,"CreateDirectoryA");
   function CreateDirectoryW(
      lpPathName : LPCWSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return BOOL;
   pragma import (Cpp,CreateDirectoryW,"CreateDirectoryW");
   function CreateFileA(
      lpFileName : LPCSTR;
      dwDesiredAccess : DWORD;
      dwShareMode : DWORD;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      dwCreationDisposition : DWORD;
      dwFlagsAndAttributes : DWORD;
      hTemplateFile : HANDLE
   ) return HANDLE;
   pragma import (Cpp,CreateFileA,"CreateFileA");
   function CreateFileW(
      lpFileName : LPCWSTR;
      dwDesiredAccess : DWORD;
      dwShareMode : DWORD;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      dwCreationDisposition : DWORD;
      dwFlagsAndAttributes : DWORD;
      hTemplateFile : HANDLE
   ) return HANDLE;
   pragma import (Cpp,CreateFileW,"CreateFileW");
   function DefineDosDeviceW(
      dwFlags : DWORD;
      lpDeviceName : LPCWSTR;
      lpTargetPath : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,DefineDosDeviceW,"DefineDosDeviceW");
   function DeleteFileA(
      lpFileName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,DeleteFileA,"DeleteFileA");
   function DeleteFileW(
      lpFileName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,DeleteFileW,"DeleteFileW");
   function DeleteVolumeMountPointW(
      lpszVolumeMountPoint : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,DeleteVolumeMountPointW,"DeleteVolumeMountPointW");
   function FileTimeToLocalFileTime(
      lpFileTime_x : access constant FILETIME;
      lpLocalFileTime : LPFILETIME
   ) return BOOL;
   pragma import (Cpp,FileTimeToLocalFileTime,"FileTimeToLocalFileTime");
   function FindClose(
      hFindFile : HANDLE
   ) return BOOL;
   pragma import (Cpp,FindClose,"FindClose");
   function FindCloseChangeNotification(
      hChangeHandle : HANDLE
   ) return BOOL;
   pragma import (Cpp,FindCloseChangeNotification,"FindCloseChangeNotification");
   function FindFirstChangeNotificationA(
      lpPathName : LPCSTR;
      bWatchSubtree : BOOL;
      dwNotifyFilter : DWORD
   ) return HANDLE;
   pragma import (Cpp,FindFirstChangeNotificationA,"FindFirstChangeNotificationA");
   function FindFirstChangeNotificationW(
      lpPathName : LPCWSTR;
      bWatchSubtree : BOOL;
      dwNotifyFilter : DWORD
   ) return HANDLE;
   pragma import (Cpp,FindFirstChangeNotificationW,"FindFirstChangeNotificationW");
   function FindFirstFileA(
      lpFileName : LPCSTR;
      lpFindFileData : LPWIN32_FIND_DATAA
   ) return HANDLE;
   pragma import (Cpp,FindFirstFileA,"FindFirstFileA");
   function FindFirstFileW(
      lpFileName : LPCWSTR;
      lpFindFileData : LPWIN32_FIND_DATAW
   ) return HANDLE;
   pragma import (Cpp,FindFirstFileW,"FindFirstFileW");
   function FindFirstFileExA(
      lpFileName : LPCSTR;
      fInfoLevelId : FINDEX_INFO_LEVELS;
      lpFindFileData : LPVOID;
      fSearchOp : FINDEX_SEARCH_OPS;
      lpSearchFilter : LPVOID;
      dwAdditionalFlags : DWORD
   ) return HANDLE;
   pragma import (Cpp,FindFirstFileExA,"FindFirstFileExA");
   function FindFirstFileExW(
      lpFileName : LPCWSTR;
      fInfoLevelId : FINDEX_INFO_LEVELS;
      lpFindFileData : LPVOID;
      fSearchOp : FINDEX_SEARCH_OPS;
      lpSearchFilter : LPVOID;
      dwAdditionalFlags : DWORD
   ) return HANDLE;
   pragma import (Cpp,FindFirstFileExW,"FindFirstFileExW");
   function FindFirstVolumeW(
      lpszVolumeName : LPWSTR;
      cchBufferLength : DWORD
   ) return HANDLE;
   pragma import (Cpp,FindFirstVolumeW,"FindFirstVolumeW");
   function FindNextChangeNotification(
      hChangeHandle : HANDLE
   ) return BOOL;
   pragma import (Cpp,FindNextChangeNotification,"FindNextChangeNotification");
   function FindNextFileA(
      hFindFile : HANDLE;
      lpFindFileData : LPWIN32_FIND_DATAA
   ) return BOOL;
   pragma import (Cpp,FindNextFileA,"FindNextFileA");
   function FindNextFileW(
      hFindFile : HANDLE;
      lpFindFileData : LPWIN32_FIND_DATAW
   ) return BOOL;
   pragma import (Cpp,FindNextFileW,"FindNextFileW");
   function FindNextVolumeW(
      hFindVolume : HANDLE;
      lpszVolumeName : LPWSTR;
      cchBufferLength : DWORD
   ) return BOOL;
   pragma import (Cpp,FindNextVolumeW,"FindNextVolumeW");
   function FindVolumeClose(
      hFindVolume : HANDLE
   ) return BOOL;
   pragma import (Cpp,FindVolumeClose,"FindVolumeClose");
   function FlushFileBuffers(
      hFile_x : HANDLE
   ) return BOOL;
   pragma import (Cpp,FlushFileBuffers,"FlushFileBuffers");
   function GetDiskFreeSpaceA(
      lpRootPathName : LPCSTR;
      lpSectorsPerCluster : LPDWORD;
      lpBytesPerSector : LPDWORD;
      lpNumberOfFreeClusters : LPDWORD;
      lpTotalNumberOfClusters : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetDiskFreeSpaceA,"GetDiskFreeSpaceA");
   function GetDiskFreeSpaceW(
      lpRootPathName : LPCWSTR;
      lpSectorsPerCluster : LPDWORD;
      lpBytesPerSector : LPDWORD;
      lpNumberOfFreeClusters : LPDWORD;
      lpTotalNumberOfClusters : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetDiskFreeSpaceW,"GetDiskFreeSpaceW");
   function GetDiskFreeSpaceExA(
      lpDirectoryName : LPCSTR;
      lpFreeBytesAvailableToCaller : PULARGE_INTEGER;
      lpTotalNumberOfBytes : PULARGE_INTEGER;
      lpTotalNumberOfFreeBytes : PULARGE_INTEGER
   ) return BOOL;
   pragma import (Cpp,GetDiskFreeSpaceExA,"GetDiskFreeSpaceExA");
   function GetDiskFreeSpaceExW(
      lpDirectoryName : LPCWSTR;
      lpFreeBytesAvailableToCaller : PULARGE_INTEGER;
      lpTotalNumberOfBytes : PULARGE_INTEGER;
      lpTotalNumberOfFreeBytes : PULARGE_INTEGER
   ) return BOOL;
   pragma import (Cpp,GetDiskFreeSpaceExW,"GetDiskFreeSpaceExW");
   type DISK_SPACE_INFORMATION is record
      ActualTotalAllocationUnits : ULONGLONG;
      ActualAvailableAllocationUnits : ULONGLONG;
      ActualPoolUnavailableAllocationUnits : ULONGLONG;
      CallerTotalAllocationUnits : ULONGLONG;
      CallerAvailableAllocationUnits : ULONGLONG;
      CallerPoolUnavailableAllocationUnits : ULONGLONG;
      UsedAllocationUnits : ULONGLONG;
      TotalReservedAllocationUnits : ULONGLONG;
      VolumeStorageReserveAllocationUnits : ULONGLONG;
      AvailableCommittedAllocationUnits : ULONGLONG;
      PoolAvailableAllocationUnits : ULONGLONG;
      SectorsPerAllocationUnit : DWORD;
      BytesPerSector : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DISK_SPACE_INFORMATION);
   for DISK_SPACE_INFORMATION use record
      ActualTotalAllocationUnits at 0 range 0..63;
      ActualAvailableAllocationUnits at 0 range 64..127;
      ActualPoolUnavailableAllocationUnits at 0 range 128..191;
      CallerTotalAllocationUnits at 0 range 192..255;
      CallerAvailableAllocationUnits at 0 range 256..319;
      CallerPoolUnavailableAllocationUnits at 0 range 320..383;
      UsedAllocationUnits at 0 range 384..447;
      TotalReservedAllocationUnits at 0 range 448..511;
      VolumeStorageReserveAllocationUnits at 0 range 512..575;
      AvailableCommittedAllocationUnits at 0 range 576..639;
      PoolAvailableAllocationUnits at 0 range 640..703;
      SectorsPerAllocationUnit at 0 range 704..735;
      BytesPerSector at 0 range 736..767;
   end record;
   for DISK_SPACE_INFORMATION'Size use 768;
   for DISK_SPACE_INFORMATION'Alignment use 8;
   function GetDiskSpaceInformationA(
      rootPath : LPCSTR;
      diskSpaceInfo : access DISK_SPACE_INFORMATION
   ) return HRESULT;
   pragma import (Cpp,GetDiskSpaceInformationA,"GetDiskSpaceInformationA");
   function GetDiskSpaceInformationW(
      rootPath : LPCWSTR;
      diskSpaceInfo : access DISK_SPACE_INFORMATION
   ) return HRESULT;
   pragma import (Cpp,GetDiskSpaceInformationW,"GetDiskSpaceInformationW");
   function GetDriveTypeA(
      lpRootPathName : LPCSTR
   ) return UINT;
   pragma import (Cpp,GetDriveTypeA,"GetDriveTypeA");
   function GetDriveTypeW(
      lpRootPathName : LPCWSTR
   ) return UINT;
   pragma import (Cpp,GetDriveTypeW,"GetDriveTypeW");
   type WIN32_FILE_ATTRIBUTE_DATA_x is record
      dwFileAttributes : DWORD;
      ftCreationTime : FILETIME;
      ftLastAccessTime : FILETIME;
      ftLastWriteTime : FILETIME;
      nFileSizeHigh : DWORD;
      nFileSizeLow : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,WIN32_FILE_ATTRIBUTE_DATA_x);
   for WIN32_FILE_ATTRIBUTE_DATA_x use record
      dwFileAttributes at 0 range 0..31;
      ftCreationTime at 0 range 32..95;
      ftLastAccessTime at 0 range 96..159;
      ftLastWriteTime at 0 range 160..223;
      nFileSizeHigh at 0 range 224..255;
      nFileSizeLow at 0 range 256..287;
   end record;
   for WIN32_FILE_ATTRIBUTE_DATA_x'Size use 288;
   for WIN32_FILE_ATTRIBUTE_DATA_x'Alignment use 4;
   subtype WIN32_FILE_ATTRIBUTE_DATA is WIN32_FILE_ATTRIBUTE_DATA_x;
   type LPWIN32_FILE_ATTRIBUTE_DATA is access all WIN32_FILE_ATTRIBUTE_DATA_x;
   function GetFileAttributesA(
      lpFileName : LPCSTR
   ) return DWORD;
   pragma import (Cpp,GetFileAttributesA,"GetFileAttributesA");
   function GetFileAttributesW(
      lpFileName : LPCWSTR
   ) return DWORD;
   pragma import (Cpp,GetFileAttributesW,"GetFileAttributesW");
   function GetFileAttributesExA(
      lpFileName : LPCSTR;
      fInfoLevelId : GET_FILEEX_INFO_LEVELS;
      lpFileInformation : LPVOID
   ) return BOOL;
   pragma import (Cpp,GetFileAttributesExA,"GetFileAttributesExA");
   function GetFileAttributesExW(
      lpFileName : LPCWSTR;
      fInfoLevelId : GET_FILEEX_INFO_LEVELS;
      lpFileInformation : LPVOID
   ) return BOOL;
   pragma import (Cpp,GetFileAttributesExW,"GetFileAttributesExW");
   type BY_HANDLE_FILE_INFORMATION_x is record
      dwFileAttributes : DWORD;
      ftCreationTime : FILETIME;
      ftLastAccessTime : FILETIME;
      ftLastWriteTime : FILETIME;
      dwVolumeSerialNumber : DWORD;
      nFileSizeHigh : DWORD;
      nFileSizeLow : DWORD;
      nNumberOfLinks : DWORD;
      nFileIndexHigh : DWORD;
      nFileIndexLow : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,BY_HANDLE_FILE_INFORMATION_x);
   for BY_HANDLE_FILE_INFORMATION_x use record
      dwFileAttributes at 0 range 0..31;
      ftCreationTime at 0 range 32..95;
      ftLastAccessTime at 0 range 96..159;
      ftLastWriteTime at 0 range 160..223;
      dwVolumeSerialNumber at 0 range 224..255;
      nFileSizeHigh at 0 range 256..287;
      nFileSizeLow at 0 range 288..319;
      nNumberOfLinks at 0 range 320..351;
      nFileIndexHigh at 0 range 352..383;
      nFileIndexLow at 0 range 384..415;
   end record;
   for BY_HANDLE_FILE_INFORMATION_x'Size use 416;
   for BY_HANDLE_FILE_INFORMATION_x'Alignment use 4;
   subtype BY_HANDLE_FILE_INFORMATION is BY_HANDLE_FILE_INFORMATION_x;
   type PBY_HANDLE_FILE_INFORMATION is access all BY_HANDLE_FILE_INFORMATION_x;
   type LPBY_HANDLE_FILE_INFORMATION is access all BY_HANDLE_FILE_INFORMATION_x;
   function GetFileInformationByHandle(
      hFile_x : HANDLE;
      lpFileInformation : LPBY_HANDLE_FILE_INFORMATION
   ) return BOOL;
   pragma import (Cpp,GetFileInformationByHandle,"GetFileInformationByHandle");
   function GetFileSize(
      hFile_x : HANDLE;
      lpFileSizeHigh : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetFileSize,"GetFileSize");
   function GetFileSizeEx(
      hFile_x : HANDLE;
      lpFileSize : PLARGE_INTEGER
   ) return BOOL;
   pragma import (Cpp,GetFileSizeEx,"GetFileSizeEx");
   function GetFileType(
      hFile_x : HANDLE
   ) return DWORD;
   pragma import (Cpp,GetFileType,"GetFileType");
   function GetFinalPathNameByHandleA(
      hFile_x : HANDLE;
      lpszFilePath : LPSTR;
      cchFilePath : DWORD;
      dwFlags : DWORD
   ) return DWORD;
   pragma import (Cpp,GetFinalPathNameByHandleA,"GetFinalPathNameByHandleA");
   function GetFinalPathNameByHandleW(
      hFile_x : HANDLE;
      lpszFilePath : LPWSTR;
      cchFilePath : DWORD;
      dwFlags : DWORD
   ) return DWORD;
   pragma import (Cpp,GetFinalPathNameByHandleW,"GetFinalPathNameByHandleW");
   function GetFileTime(
      hFile_x : HANDLE;
      lpCreationTime : LPFILETIME;
      lpLastAccessTime : LPFILETIME;
      lpLastWriteTime : LPFILETIME
   ) return BOOL;
   pragma import (Cpp,GetFileTime,"GetFileTime");
   function GetFullPathNameW(
      lpFileName : LPCWSTR;
      nBufferLength : DWORD;
      lpBuffer : LPWSTR;
      lpFilePart : access LPWSTR
   ) return DWORD;
   pragma import (Cpp,GetFullPathNameW,"GetFullPathNameW");
   function GetFullPathNameA(
      lpFileName : LPCSTR;
      nBufferLength : DWORD;
      lpBuffer : LPSTR;
      lpFilePart : access LPSTR
   ) return DWORD;
   pragma import (Cpp,GetFullPathNameA,"GetFullPathNameA");
   function GetLogicalDrives return DWORD;
   pragma import (Cpp,GetLogicalDrives,"GetLogicalDrives");
   function GetLogicalDriveStringsW(
      nBufferLength : DWORD;
      lpBuffer : LPWSTR
   ) return DWORD;
   pragma import (Cpp,GetLogicalDriveStringsW,"GetLogicalDriveStringsW");
   function GetLongPathNameA(
      lpszShortPath : LPCSTR;
      lpszLongPath : LPSTR;
      cchBuffer : DWORD
   ) return DWORD;
   pragma import (Cpp,GetLongPathNameA,"GetLongPathNameA");
   function GetLongPathNameW(
      lpszShortPath : LPCWSTR;
      lpszLongPath : LPWSTR;
      cchBuffer : DWORD
   ) return DWORD;
   pragma import (Cpp,GetLongPathNameW,"GetLongPathNameW");
   function GetShortPathNameW(
      lpszLongPath : LPCWSTR;
      lpszShortPath : LPWSTR;
      cchBuffer : DWORD
   ) return DWORD;
   pragma import (Cpp,GetShortPathNameW,"GetShortPathNameW");
   function GetTempFileNameW(
      lpPathName : LPCWSTR;
      lpPrefixString : LPCWSTR;
      uUnique : UINT;
      lpTempFileName : LPWSTR
   ) return UINT;
   pragma import (Cpp,GetTempFileNameW,"GetTempFileNameW");
   function GetVolumeInformationByHandleW(
      hFile_x : HANDLE;
      lpVolumeNameBuffer : LPWSTR;
      nVolumeNameSize : DWORD;
      lpVolumeSerialNumber : LPDWORD;
      lpMaximumComponentLength : LPDWORD;
      lpFileSystemFlags : LPDWORD;
      lpFileSystemNameBuffer : LPWSTR;
      nFileSystemNameSize : DWORD
   ) return BOOL;
   pragma import (Cpp,GetVolumeInformationByHandleW,"GetVolumeInformationByHandleW");
   function GetVolumeInformationW(
      lpRootPathName : LPCWSTR;
      lpVolumeNameBuffer : LPWSTR;
      nVolumeNameSize : DWORD;
      lpVolumeSerialNumber : LPDWORD;
      lpMaximumComponentLength : LPDWORD;
      lpFileSystemFlags : LPDWORD;
      lpFileSystemNameBuffer : LPWSTR;
      nFileSystemNameSize : DWORD
   ) return BOOL;
   pragma import (Cpp,GetVolumeInformationW,"GetVolumeInformationW");
   function GetVolumePathNameW(
      lpszFileName : LPCWSTR;
      lpszVolumePathName : LPWSTR;
      cchBufferLength : DWORD
   ) return BOOL;
   pragma import (Cpp,GetVolumePathNameW,"GetVolumePathNameW");
   function LocalFileTimeToFileTime(
      lpLocalFileTime : access constant FILETIME;
      lpFileTime_x : LPFILETIME
   ) return BOOL;
   pragma import (Cpp,LocalFileTimeToFileTime,"LocalFileTimeToFileTime");
   function LockFile(
      hFile_x : HANDLE;
      dwFileOffsetLow : DWORD;
      dwFileOffsetHigh : DWORD;
      nNumberOfBytesToLockLow : DWORD;
      nNumberOfBytesToLockHigh : DWORD
   ) return BOOL;
   pragma import (Cpp,LockFile,"LockFile");
   function LockFileEx(
      hFile_x : HANDLE;
      dwFlags : DWORD;
      dwReserved : DWORD;
      nNumberOfBytesToLockLow : DWORD;
      nNumberOfBytesToLockHigh : DWORD;
      lpOverlapped_x : LPOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,LockFileEx,"LockFileEx");
   function QueryDosDeviceW(
      lpDeviceName : LPCWSTR;
      lpTargetPath : LPWSTR;
      ucchMax : DWORD
   ) return DWORD;
   pragma import (Cpp,QueryDosDeviceW,"QueryDosDeviceW");
   function ReadFile(
      hFile_x : HANDLE;
      lpBuffer : LPVOID;
      nNumberOfBytesToRead : DWORD;
      lpNumberOfBytesRead : LPDWORD;
      lpOverlapped_x : LPOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,ReadFile,"ReadFile");
   function ReadFileEx(
      hFile_x : HANDLE;
      lpBuffer : LPVOID;
      nNumberOfBytesToRead : DWORD;
      lpOverlapped_x : LPOVERLAPPED;
      lpCompletionRoutine : LPOVERLAPPED_COMPLETION_ROUTINE
   ) return BOOL;
   pragma import (Cpp,ReadFileEx,"ReadFileEx");
   function ReadFileScatter(
      hFile_x : HANDLE;
      aSegmentArray : FILE_SEGMENT_ELEMENT;
      nNumberOfBytesToRead : DWORD;
      lpReserved : LPDWORD;
      lpOverlapped_x : LPOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,ReadFileScatter,"ReadFileScatter");
   function RemoveDirectoryA(
      lpPathName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,RemoveDirectoryA,"RemoveDirectoryA");
   function RemoveDirectoryW(
      lpPathName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,RemoveDirectoryW,"RemoveDirectoryW");
   function SetEndOfFile(
      hFile_x : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetEndOfFile,"SetEndOfFile");
   function SetFileAttributesA(
      lpFileName : LPCSTR;
      dwFileAttributes : DWORD
   ) return BOOL;
   pragma import (Cpp,SetFileAttributesA,"SetFileAttributesA");
   function SetFileAttributesW(
      lpFileName : LPCWSTR;
      dwFileAttributes : DWORD
   ) return BOOL;
   pragma import (Cpp,SetFileAttributesW,"SetFileAttributesW");
   function SetFileInformationByHandle(
      hFile_x : HANDLE;
      FileInformationClass : FILE_INFO_BY_HANDLE_CLASS;
      lpFileInformation : LPVOID;
      dwBufferSize : DWORD
   ) return BOOL;
   pragma import (Cpp,SetFileInformationByHandle,"SetFileInformationByHandle");
   function SetFilePointer(
      hFile_x : HANDLE;
      lDistanceToMove : LONG;
      lpDistanceToMoveHigh : PLONG;
      dwMoveMethod : DWORD
   ) return DWORD;
   pragma import (Cpp,SetFilePointer,"SetFilePointer");
   function SetFilePointerEx(
      hFile_x : HANDLE;
      liDistanceToMove : LARGE_INTEGER;
      lpNewFilePointer : PLARGE_INTEGER;
      dwMoveMethod : DWORD
   ) return BOOL;
   pragma import (Cpp,SetFilePointerEx,"SetFilePointerEx");
   function SetFileTime(
      hFile_x : HANDLE;
      lpCreationTime : access constant FILETIME;
      lpLastAccessTime : access constant FILETIME;
      lpLastWriteTime : access constant FILETIME
   ) return BOOL;
   pragma import (Cpp,SetFileTime,"SetFileTime");
   function SetFileValidData(
      hFile_x : HANDLE;
      ValidDataLength : LONGLONG
   ) return BOOL;
   pragma import (Cpp,SetFileValidData,"SetFileValidData");
   function UnlockFile(
      hFile_x : HANDLE;
      dwFileOffsetLow : DWORD;
      dwFileOffsetHigh : DWORD;
      nNumberOfBytesToUnlockLow : DWORD;
      nNumberOfBytesToUnlockHigh : DWORD
   ) return BOOL;
   pragma import (Cpp,UnlockFile,"UnlockFile");
   function UnlockFileEx(
      hFile_x : HANDLE;
      dwReserved : DWORD;
      nNumberOfBytesToUnlockLow : DWORD;
      nNumberOfBytesToUnlockHigh : DWORD;
      lpOverlapped_x : LPOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,UnlockFileEx,"UnlockFileEx");
   function WriteFile(
      hFile_x : HANDLE;
      lpBuffer : LPCVOID;
      nNumberOfBytesToWrite : DWORD;
      lpNumberOfBytesWritten : LPDWORD;
      lpOverlapped_x : LPOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,WriteFile,"WriteFile");
   function WriteFileEx(
      hFile_x : HANDLE;
      lpBuffer : LPCVOID;
      nNumberOfBytesToWrite : DWORD;
      lpOverlapped_x : LPOVERLAPPED;
      lpCompletionRoutine : LPOVERLAPPED_COMPLETION_ROUTINE
   ) return BOOL;
   pragma import (Cpp,WriteFileEx,"WriteFileEx");
   function WriteFileGather(
      hFile_x : HANDLE;
      aSegmentArray : FILE_SEGMENT_ELEMENT;
      nNumberOfBytesToWrite : DWORD;
      lpReserved : LPDWORD;
      lpOverlapped_x : LPOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,WriteFileGather,"WriteFileGather");
   function GetTempPathW(
      nBufferLength : DWORD;
      lpBuffer : LPWSTR
   ) return DWORD;
   pragma import (Cpp,GetTempPathW,"GetTempPathW");
   function GetVolumeNameForVolumeMountPointW(
      lpszVolumeMountPoint : LPCWSTR;
      lpszVolumeName : LPWSTR;
      cchBufferLength : DWORD
   ) return BOOL;
   pragma import (Cpp,GetVolumeNameForVolumeMountPointW,"GetVolumeNameForVolumeMountPointW");
   function GetVolumePathNamesForVolumeNameW(
      lpszVolumeName : LPCWSTR;
      lpszVolumePathNames : LPWCH;
      cchBufferLength : DWORD;
      lpcchReturnLength : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetVolumePathNamesForVolumeNameW,"GetVolumePathNamesForVolumeNameW");
   type CREATEFILE2_EXTENDED_PARAMETERS_x is record
      dwSize : DWORD;
      dwFileAttributes : DWORD;
      dwFileFlags : DWORD;
      dwSecurityQosFlags : DWORD;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      hTemplateFile : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,CREATEFILE2_EXTENDED_PARAMETERS_x);
   for CREATEFILE2_EXTENDED_PARAMETERS_x use record
      dwSize at 0 range 0..31;
      dwFileAttributes at 0 range 32..63;
      dwFileFlags at 0 range 64..95;
      dwSecurityQosFlags at 0 range 96..127;
      lpSecurityAttributes at 0 range 128..191;
      hTemplateFile at 0 range 192..255;
   end record;
   for CREATEFILE2_EXTENDED_PARAMETERS_x'Size use 256;
   for CREATEFILE2_EXTENDED_PARAMETERS_x'Alignment use 8;
   subtype CREATEFILE2_EXTENDED_PARAMETERS is CREATEFILE2_EXTENDED_PARAMETERS_x;
   type PCREATEFILE2_EXTENDED_PARAMETERS is access all CREATEFILE2_EXTENDED_PARAMETERS_x;
   type LPCREATEFILE2_EXTENDED_PARAMETERS is access all CREATEFILE2_EXTENDED_PARAMETERS_x;
   function CreateFile2(
      lpFileName : LPCWSTR;
      dwDesiredAccess : DWORD;
      dwShareMode : DWORD;
      dwCreationDisposition : DWORD;
      pCreateExParams : LPCREATEFILE2_EXTENDED_PARAMETERS
   ) return HANDLE;
   pragma import (Cpp,CreateFile2,"CreateFile2");
   function SetFileIoOverlappedRange(
      FileHandle : HANDLE;
      OverlappedRangeStart : PUCHAR;
      Length : ULONG
   ) return BOOL;
   pragma import (Cpp,SetFileIoOverlappedRange,"SetFileIoOverlappedRange");
   function GetCompressedFileSizeA(
      lpFileName : LPCSTR;
      lpFileSizeHigh : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetCompressedFileSizeA,"GetCompressedFileSizeA");
   function GetCompressedFileSizeW(
      lpFileName : LPCWSTR;
      lpFileSizeHigh : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetCompressedFileSizeW,"GetCompressedFileSizeW");
   type STREAM_INFO_LEVELS_x is (
      FindStreamInfoStandard,
      FindStreamInfoMaxInfoLevel
   );
   for STREAM_INFO_LEVELS_x use (
      FindStreamInfoStandard => 0,
      FindStreamInfoMaxInfoLevel => 1
   );
   for STREAM_INFO_LEVELS_x'Size use 32;
   subtype STREAM_INFO_LEVELS is STREAM_INFO_LEVELS_x;
   type WIN32_FIND_STREAM_DATA_x_cStreamName_Array is array(1..296) of WCHAR; -- Auto Generated Dependancy
   type WIN32_FIND_STREAM_DATA_x is record
      StreamSize : LARGE_INTEGER;
      cStreamName : WIN32_FIND_STREAM_DATA_x_cStreamName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,WIN32_FIND_STREAM_DATA_x);
   for WIN32_FIND_STREAM_DATA_x use record
      StreamSize at 0 range 0..63;
      cStreamName at 0 range 64..4799;
   end record;
   for WIN32_FIND_STREAM_DATA_x'Size use 4800;
   for WIN32_FIND_STREAM_DATA_x'Alignment use 8;
   subtype WIN32_FIND_STREAM_DATA is WIN32_FIND_STREAM_DATA_x;
   type PWIN32_FIND_STREAM_DATA is access all WIN32_FIND_STREAM_DATA_x;
   function FindFirstStreamW(
      lpFileName : LPCWSTR;
      InfoLevel : STREAM_INFO_LEVELS;
      lpFindStreamData : LPVOID;
      dwFlags : DWORD
   ) return HANDLE;
   pragma import (Cpp,FindFirstStreamW,"FindFirstStreamW");
   function FindNextStreamW(
      hFindStream : HANDLE;
      lpFindStreamData : LPVOID
   ) return BOOL;
   pragma import (Cpp,FindNextStreamW,"FindNextStreamW");
   function AreFileApisANSI return BOOL;
   pragma import (Cpp,AreFileApisANSI,"AreFileApisANSI");
   function GetTempPathA(
      nBufferLength : DWORD;
      lpBuffer : LPSTR
   ) return DWORD;
   pragma import (Cpp,GetTempPathA,"GetTempPathA");
   function FindFirstFileNameW(
      lpFileName : LPCWSTR;
      dwFlags : DWORD;
      StringLength : LPDWORD;
      LinkName : PWSTR
   ) return HANDLE;
   pragma import (Cpp,FindFirstFileNameW,"FindFirstFileNameW");
   function FindNextFileNameW(
      hFindStream : HANDLE;
      StringLength : LPDWORD;
      LinkName : PWSTR
   ) return BOOL;
   pragma import (Cpp,FindNextFileNameW,"FindNextFileNameW");
   function GetVolumeInformationA(
      lpRootPathName : LPCSTR;
      lpVolumeNameBuffer : LPSTR;
      nVolumeNameSize : DWORD;
      lpVolumeSerialNumber : LPDWORD;
      lpMaximumComponentLength : LPDWORD;
      lpFileSystemFlags : LPDWORD;
      lpFileSystemNameBuffer : LPSTR;
      nFileSystemNameSize : DWORD
   ) return BOOL;
   pragma import (Cpp,GetVolumeInformationA,"GetVolumeInformationA");
   function GetTempFileNameA(
      lpPathName : LPCSTR;
      lpPrefixString : LPCSTR;
      uUnique : UINT;
      lpTempFileName : LPSTR
   ) return UINT;
   pragma import (Cpp,GetTempFileNameA,"GetTempFileNameA");
   procedure SetFileApisToOEM;
   pragma import (Cpp,SetFileApisToOEM,"SetFileApisToOEM");
   procedure SetFileApisToANSI;
   pragma import (Cpp,SetFileApisToANSI,"SetFileApisToANSI");
   -- #include <fileapifromapp.h>
   function CopyFileFromAppW(
      lpExistingFileName : LPCWSTR;
      lpNewFileName : LPCWSTR;
      bFailIfExists : BOOL
   ) return BOOL;
   pragma import (Cpp,CopyFileFromAppW,"CopyFileFromAppW");
   function CreateDirectoryFromAppW(
      lpPathName : LPCWSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return BOOL;
   pragma import (Cpp,CreateDirectoryFromAppW,"CreateDirectoryFromAppW");
   function CreateFileFromAppW(
      lpFileName : LPCWSTR;
      dwDesiredAccess : DWORD;
      dwShareMode : DWORD;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      dwCreationDisposition : DWORD;
      dwFlagsAndAttributes : DWORD;
      hTemplateFile : HANDLE
   ) return HANDLE;
   pragma import (Cpp,CreateFileFromAppW,"CreateFileFromAppW");
   function CreateFile2FromAppW(
      lpFileName : LPCWSTR;
      dwDesiredAccess : DWORD;
      dwShareMode : DWORD;
      dwCreationDisposition : DWORD;
      pCreateExParams : LPCREATEFILE2_EXTENDED_PARAMETERS
   ) return HANDLE;
   pragma import (Cpp,CreateFile2FromAppW,"CreateFile2FromAppW");
   function DeleteFileFromAppW(
      lpFileName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,DeleteFileFromAppW,"DeleteFileFromAppW");
   function FindFirstFileExFromAppW(
      lpFileName : LPCWSTR;
      fInfoLevelId : FINDEX_INFO_LEVELS;
      lpFindFileData : LPVOID;
      fSearchOp : FINDEX_SEARCH_OPS;
      lpSearchFilter : LPVOID;
      dwAdditionalFlags : DWORD
   ) return HANDLE;
   pragma import (Cpp,FindFirstFileExFromAppW,"FindFirstFileExFromAppW");
   function GetFileAttributesExFromAppW(
      lpFileName : LPCWSTR;
      fInfoLevelId : GET_FILEEX_INFO_LEVELS;
      lpFileInformation : LPVOID
   ) return BOOL;
   pragma import (Cpp,GetFileAttributesExFromAppW,"GetFileAttributesExFromAppW");
   function MoveFileFromAppW(
      lpExistingFileName : LPCWSTR;
      lpNewFileName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,MoveFileFromAppW,"MoveFileFromAppW");
   function RemoveDirectoryFromAppW(
      lpPathName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,RemoveDirectoryFromAppW,"RemoveDirectoryFromAppW");
   function ReplaceFileFromAppW(
      lpReplacedFileName : LPCWSTR;
      lpReplacementFileName : LPCWSTR;
      lpBackupFileName : LPCWSTR;
      dwReplaceFlags : DWORD;
      lpExclude : LPVOID;
      lpReserved : LPVOID
   ) return BOOL;
   pragma import (Cpp,ReplaceFileFromAppW,"ReplaceFileFromAppW");
   function SetFileAttributesFromAppW(
      lpFileName : LPCWSTR;
      dwFileAttributes : DWORD
   ) return BOOL;
   pragma import (Cpp,SetFileAttributesFromAppW,"SetFileAttributesFromAppW");
   -- #include <debugapi.h>
   function IsDebuggerPresent return BOOL;
   pragma import (Cpp,IsDebuggerPresent,"IsDebuggerPresent");
   procedure DebugBreak;
   pragma import (Cpp,DebugBreak,"DebugBreak");
   procedure OutputDebugStringA(
      lpOutputString : LPCSTR
   );
   pragma import (Cpp,OutputDebugStringA,"OutputDebugStringA");
   procedure OutputDebugStringW(
      lpOutputString : LPCWSTR
   );
   pragma import (Cpp,OutputDebugStringW,"OutputDebugStringW");
   function ContinueDebugEvent(
      dwProcessId : DWORD;
      dwThreadId : DWORD;
      dwContinueStatus : DWORD
   ) return BOOL;
   pragma import (Cpp,ContinueDebugEvent,"ContinueDebugEvent");
   function WaitForDebugEvent(
      lpDebugEvent : LPDEBUG_EVENT;
      dwMilliseconds : DWORD
   ) return BOOL;
   pragma import (Cpp,WaitForDebugEvent,"WaitForDebugEvent");
   function DebugActiveProcess(
      dwProcessId : DWORD
   ) return BOOL;
   pragma import (Cpp,DebugActiveProcess,"DebugActiveProcess");
   function DebugActiveProcessStop(
      dwProcessId : DWORD
   ) return BOOL;
   pragma import (Cpp,DebugActiveProcessStop,"DebugActiveProcessStop");
   function CheckRemoteDebuggerPresent(
      hProcess : HANDLE;
      pbDebuggerPresent : PBOOL
   ) return BOOL;
   pragma import (Cpp,CheckRemoteDebuggerPresent,"CheckRemoteDebuggerPresent");
   function WaitForDebugEventEx(
      lpDebugEvent : LPDEBUG_EVENT;
      dwMilliseconds : DWORD
   ) return BOOL;
   pragma import (Cpp,WaitForDebugEventEx,"WaitForDebugEventEx");
   -- #include <utilapiset.h>
   procedure EncodePointer(
      Ptr : PVOID
   );
   pragma import (Cpp,EncodePointer,"EncodePointer");
   procedure DecodePointer(
      Ptr : PVOID
   );
   pragma import (Cpp,DecodePointer,"DecodePointer");
   procedure EncodeSystemPointer(
      Ptr : PVOID
   );
   pragma import (Cpp,EncodeSystemPointer,"EncodeSystemPointer");
   procedure DecodeSystemPointer(
      Ptr : PVOID
   );
   pragma import (Cpp,DecodeSystemPointer,"DecodeSystemPointer");
   function EncodeRemotePointer(
      ProcessHandle : HANDLE;
      Ptr : PVOID;
      EncodedPtr : access PVOID
   ) return HRESULT;
   pragma import (Cpp,EncodeRemotePointer,"EncodeRemotePointer");
   function DecodeRemotePointer(
      ProcessHandle : HANDLE;
      Ptr : PVOID;
      DecodedPtr : access PVOID
   ) return HRESULT;
   pragma import (Cpp,DecodeRemotePointer,"DecodeRemotePointer");
   function Beep(
      dwFreq : DWORD;
      dwDuration : DWORD
   ) return BOOL;
   pragma import (Cpp,Beep,"Beep");
   -- #include <handleapi.h>
   function CloseHandle(
      hObject : HANDLE
   ) return BOOL;
   pragma import (Cpp,CloseHandle,"CloseHandle");
   function DuplicateHandle(
      hSourceProcessHandle : HANDLE;
      hSourceHandle : HANDLE;
      hTargetProcessHandle : HANDLE;
      lpTargetHandle : LPHANDLE;
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      dwOptions : DWORD
   ) return BOOL;
   pragma import (Cpp,DuplicateHandle,"DuplicateHandle");
   function CompareObjectHandles(
      hFirstObjectHandle : HANDLE;
      hSecondObjectHandle : HANDLE
   ) return BOOL;
   pragma import (Cpp,CompareObjectHandles,"CompareObjectHandles");
   function GetHandleInformation(
      hObject : HANDLE;
      lpdwFlags : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetHandleInformation,"GetHandleInformation");
   function SetHandleInformation(
      hObject : HANDLE;
      dwMask : DWORD;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,SetHandleInformation,"SetHandleInformation");
   -- #include <errhandlingapi.h>
   type PTOP_LEVEL_EXCEPTION_FILTER is access function (p1 : access EXCEPTION_POINTERS_x) return LONG; -- LONG (struct _EXCEPTION_POINTERS *)
   pragma Convention(C,PTOP_LEVEL_EXCEPTION_FILTER);
   subtype LPTOP_LEVEL_EXCEPTION_FILTER is PTOP_LEVEL_EXCEPTION_FILTER;
   procedure RaiseException(
      dwExceptionCode : DWORD;
      dwExceptionFlags : DWORD;
      nNumberOfArguments : DWORD;
      lpArguments : access constant ULONG_PTR
   );
   pragma import (Cpp,RaiseException,"RaiseException");
   function UnhandledExceptionFilter(
      ExceptionInfo : access EXCEPTION_POINTERS_x
   ) return LONG;
   pragma import (Cpp,UnhandledExceptionFilter,"UnhandledExceptionFilter");
   function SetUnhandledExceptionFilter(
      lpTopLevelExceptionFilter : LPTOP_LEVEL_EXCEPTION_FILTER
   ) return LPTOP_LEVEL_EXCEPTION_FILTER;
   pragma import (Cpp,SetUnhandledExceptionFilter,"SetUnhandledExceptionFilter");
   function GetLastError return DWORD;
   pragma import (Cpp,GetLastError,"GetLastError");
   procedure SetLastError(
      dwErrCode : DWORD
   );
   pragma import (Cpp,SetLastError,"SetLastError");
   function GetErrorMode return UINT;
   pragma import (Cpp,GetErrorMode,"GetErrorMode");
   function SetErrorMode(
      uMode : UINT
   ) return UINT;
   pragma import (Cpp,SetErrorMode,"SetErrorMode");
   procedure AddVectoredExceptionHandler(
      First : ULONG;
      Handler : PVECTORED_EXCEPTION_HANDLER
   );
   pragma import (Cpp,AddVectoredExceptionHandler,"AddVectoredExceptionHandler");
   function RemoveVectoredExceptionHandler(
      Handle_x : PVOID
   ) return ULONG;
   pragma import (Cpp,RemoveVectoredExceptionHandler,"RemoveVectoredExceptionHandler");
   procedure AddVectoredContinueHandler(
      First : ULONG;
      Handler : PVECTORED_EXCEPTION_HANDLER
   );
   pragma import (Cpp,AddVectoredContinueHandler,"AddVectoredContinueHandler");
   function RemoveVectoredContinueHandler(
      Handle_x : PVOID
   ) return ULONG;
   pragma import (Cpp,RemoveVectoredContinueHandler,"RemoveVectoredContinueHandler");
   procedure RaiseFailFastException(
      pExceptionRecord : PEXCEPTION_RECORD;
      pContextRecord : PCONTEXT;
      dwFlags : DWORD
   );
   pragma import (Cpp,RaiseFailFastException,"RaiseFailFastException");
   procedure FatalAppExitA(
      uAction : UINT;
      lpMessageText : LPCSTR
   );
   pragma import (Cpp,FatalAppExitA,"FatalAppExitA");
   procedure FatalAppExitW(
      uAction : UINT;
      lpMessageText : LPCWSTR
   );
   pragma import (Cpp,FatalAppExitW,"FatalAppExitW");
   function GetThreadErrorMode return DWORD;
   pragma import (Cpp,GetThreadErrorMode,"GetThreadErrorMode");
   function SetThreadErrorMode(
      dwNewMode : DWORD;
      lpOldMode : LPDWORD
   ) return BOOL;
   pragma import (Cpp,SetThreadErrorMode,"SetThreadErrorMode");
   procedure TerminateProcessOnMemoryExhaustion(
      FailedAllocationSize : SIZE_T
   );
   pragma import (Cpp,TerminateProcessOnMemoryExhaustion,"TerminateProcessOnMemoryExhaustion");
   -- #include <fibersapi.h>
   function FlsAlloc(
      lpCallback : PFLS_CALLBACK_FUNCTION
   ) return DWORD;
   pragma import (Cpp,FlsAlloc,"FlsAlloc");
   procedure FlsGetValue(
      dwFlsIndex : DWORD
   );
   pragma import (Cpp,FlsGetValue,"FlsGetValue");
   function FlsSetValue(
      dwFlsIndex : DWORD;
      lpFlsData : PVOID
   ) return BOOL;
   pragma import (Cpp,FlsSetValue,"FlsSetValue");
   function FlsFree(
      dwFlsIndex : DWORD
   ) return BOOL;
   pragma import (Cpp,FlsFree,"FlsFree");
   function IsThreadAFiber return BOOL;
   pragma import (Cpp,IsThreadAFiber,"IsThreadAFiber");
   -- #include <namedpipeapi.h>
   function CreatePipe(
      hReadPipe : PHANDLE;
      hWritePipe : PHANDLE;
      lpPipeAttributes : LPSECURITY_ATTRIBUTES;
      nSize : DWORD
   ) return BOOL;
   pragma import (Cpp,CreatePipe,"CreatePipe");
   function ConnectNamedPipe(
      hNamedPipe : HANDLE;
      lpOverlapped_x : LPOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,ConnectNamedPipe,"ConnectNamedPipe");
   function DisconnectNamedPipe(
      hNamedPipe : HANDLE
   ) return BOOL;
   pragma import (Cpp,DisconnectNamedPipe,"DisconnectNamedPipe");
   function SetNamedPipeHandleState(
      hNamedPipe : HANDLE;
      lpMode : LPDWORD;
      lpMaxCollectionCount : LPDWORD;
      lpCollectDataTimeout : LPDWORD
   ) return BOOL;
   pragma import (Cpp,SetNamedPipeHandleState,"SetNamedPipeHandleState");
   function PeekNamedPipe(
      hNamedPipe : HANDLE;
      lpBuffer : LPVOID;
      nBufferSize : DWORD;
      lpBytesRead : LPDWORD;
      lpTotalBytesAvail : LPDWORD;
      lpBytesLeftThisMessage : LPDWORD
   ) return BOOL;
   pragma import (Cpp,PeekNamedPipe,"PeekNamedPipe");
   function TransactNamedPipe(
      hNamedPipe : HANDLE;
      lpInBuffer : LPVOID;
      nInBufferSize : DWORD;
      lpOutBuffer : LPVOID;
      nOutBufferSize : DWORD;
      lpBytesRead : LPDWORD;
      lpOverlapped_x : LPOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,TransactNamedPipe,"TransactNamedPipe");
   function CreateNamedPipeW(
      lpName : LPCWSTR;
      dwOpenMode : DWORD;
      dwPipeMode : DWORD;
      nMaxInstances : DWORD;
      nOutBufferSize : DWORD;
      nInBufferSize : DWORD;
      nDefaultTimeOut : DWORD;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return HANDLE;
   pragma import (Cpp,CreateNamedPipeW,"CreateNamedPipeW");
   function WaitNamedPipeW(
      lpNamedPipeName : LPCWSTR;
      nTimeOut : DWORD
   ) return BOOL;
   pragma import (Cpp,WaitNamedPipeW,"WaitNamedPipeW");
   function GetNamedPipeClientComputerNameW(
      Pipe : HANDLE;
      ClientComputerName : LPWSTR;
      ClientComputerNameLength : ULONG
   ) return BOOL;
   pragma import (Cpp,GetNamedPipeClientComputerNameW,"GetNamedPipeClientComputerNameW");
   function ImpersonateNamedPipeClient(
      hNamedPipe : HANDLE
   ) return BOOL;
   pragma import (Cpp,ImpersonateNamedPipeClient,"ImpersonateNamedPipeClient");
   function GetNamedPipeInfo(
      hNamedPipe : HANDLE;
      lpFlags : LPDWORD;
      lpOutBufferSize : LPDWORD;
      lpInBufferSize : LPDWORD;
      lpMaxInstances : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetNamedPipeInfo,"GetNamedPipeInfo");
   function GetNamedPipeHandleStateW(
      hNamedPipe : HANDLE;
      lpState : LPDWORD;
      lpCurInstances : LPDWORD;
      lpMaxCollectionCount : LPDWORD;
      lpCollectDataTimeout : LPDWORD;
      lpUserName : LPWSTR;
      nMaxUserNameSize : DWORD
   ) return BOOL;
   pragma import (Cpp,GetNamedPipeHandleStateW,"GetNamedPipeHandleStateW");
   function CallNamedPipeW(
      lpNamedPipeName : LPCWSTR;
      lpInBuffer : LPVOID;
      nInBufferSize : DWORD;
      lpOutBuffer : LPVOID;
      nOutBufferSize : DWORD;
      lpBytesRead : LPDWORD;
      nTimeOut : DWORD
   ) return BOOL;
   pragma import (Cpp,CallNamedPipeW,"CallNamedPipeW");
   -- #include <profileapi.h>
   function QueryPerformanceCounter(
      lpPerformanceCount : access LARGE_INTEGER
   ) return BOOL;
   pragma import (Cpp,QueryPerformanceCounter,"QueryPerformanceCounter");
   function QueryPerformanceFrequency(
      lpFrequency : access LARGE_INTEGER
   ) return BOOL;
   pragma import (Cpp,QueryPerformanceFrequency,"QueryPerformanceFrequency");
   -- #include <heapapi.h>
   type HEAP_SUMMARY_x is record
      cb : DWORD;
      cbAllocated : SIZE_T;
      cbCommitted : SIZE_T;
      cbReserved : SIZE_T;
      cbMaxReserve : SIZE_T;
   end record;
   pragma Convention (C_Pass_By_Copy,HEAP_SUMMARY_x);
   for HEAP_SUMMARY_x use record
      cb at 0 range 0..31;
      cbAllocated at 0 range 64..127;
      cbCommitted at 0 range 128..191;
      cbReserved at 0 range 192..255;
      cbMaxReserve at 0 range 256..319;
   end record;
   for HEAP_SUMMARY_x'Size use 320;
   for HEAP_SUMMARY_x'Alignment use 8;
   subtype HEAP_SUMMARY is HEAP_SUMMARY_x;
   type PHEAP_SUMMARY is access all HEAP_SUMMARY_x;
   subtype LPHEAP_SUMMARY is PHEAP_SUMMARY;
   function HeapCreate(
      flOptions : DWORD;
      dwInitialSize : SIZE_T;
      dwMaximumSize : SIZE_T
   ) return HANDLE;
   pragma import (Cpp,HeapCreate,"HeapCreate");
   function HeapDestroy(
      hHeap : HANDLE
   ) return BOOL;
   pragma import (Cpp,HeapDestroy,"HeapDestroy");
   procedure HeapAlloc(
      hHeap : HANDLE;
      dwFlags : DWORD;
      dwBytes : SIZE_T
   );
   pragma import (Cpp,HeapAlloc,"HeapAlloc");
   procedure HeapReAlloc(
      hHeap : HANDLE;
      dwFlags : DWORD;
      lpMem : LPVOID;
      dwBytes : SIZE_T
   );
   pragma import (Cpp,HeapReAlloc,"HeapReAlloc");
   function HeapFree(
      hHeap : HANDLE;
      dwFlags : DWORD;
      lpMem : LPVOID
   ) return BOOL;
   pragma import (Cpp,HeapFree,"HeapFree");
   function HeapSize(
      hHeap : HANDLE;
      dwFlags : DWORD;
      lpMem : LPCVOID
   ) return SIZE_T;
   pragma import (Cpp,HeapSize,"HeapSize");
   function GetProcessHeap return HANDLE;
   pragma import (Cpp,GetProcessHeap,"GetProcessHeap");
   function HeapCompact(
      hHeap : HANDLE;
      dwFlags : DWORD
   ) return SIZE_T;
   pragma import (Cpp,HeapCompact,"HeapCompact");
   function HeapSetInformation(
      HeapHandle : HANDLE;
      HeapInformationClass : HEAP_INFORMATION_CLASS;
      HeapInformation : PVOID;
      HeapInformationLength : SIZE_T
   ) return BOOL;
   pragma import (Cpp,HeapSetInformation,"HeapSetInformation");
   function HeapValidate(
      hHeap : HANDLE;
      dwFlags : DWORD;
      lpMem : LPCVOID
   ) return BOOL;
   pragma import (Cpp,HeapValidate,"HeapValidate");
   function HeapSummary(
      hHeap : HANDLE;
      dwFlags : DWORD;
      lpSummary : LPHEAP_SUMMARY
   ) return BOOL;
   pragma import (Cpp,HeapSummary,"HeapSummary");
   function GetProcessHeaps(
      NumberOfHeaps : DWORD;
      ProcessHeaps : PHANDLE
   ) return DWORD;
   pragma import (Cpp,GetProcessHeaps,"GetProcessHeaps");
   function HeapLock(
      hHeap : HANDLE
   ) return BOOL;
   pragma import (Cpp,HeapLock,"HeapLock");
   function HeapUnlock(
      hHeap : HANDLE
   ) return BOOL;
   pragma import (Cpp,HeapUnlock,"HeapUnlock");
   function HeapWalk(
      hHeap : HANDLE;
      lpEntry : LPPROCESS_HEAP_ENTRY
   ) return BOOL;
   pragma import (Cpp,HeapWalk,"HeapWalk");
   function HeapQueryInformation(
      HeapHandle : HANDLE;
      HeapInformationClass : HEAP_INFORMATION_CLASS;
      HeapInformation : PVOID;
      HeapInformationLength : SIZE_T;
      ReturnLength : PSIZE_T
   ) return BOOL;
   pragma import (Cpp,HeapQueryInformation,"HeapQueryInformation");
   -- #include <ioapiset.h>
   function CreateIoCompletionPort(
      FileHandle : HANDLE;
      ExistingCompletionPort : HANDLE;
      CompletionKey : ULONG_PTR;
      NumberOfConcurrentThreads : DWORD
   ) return HANDLE;
   pragma import (Cpp,CreateIoCompletionPort,"CreateIoCompletionPort");
   function GetQueuedCompletionStatus(
      CompletionPort : HANDLE;
      lpNumberOfBytesTransferred : LPDWORD;
      lpCompletionKey : PULONG_PTR;
      lpOverlapped_x : access LPOVERLAPPED;
      dwMilliseconds : DWORD
   ) return BOOL;
   pragma import (Cpp,GetQueuedCompletionStatus,"GetQueuedCompletionStatus");
   function GetQueuedCompletionStatusEx(
      CompletionPort : HANDLE;
      lpCompletionPortEntries : LPOVERLAPPED_ENTRY;
      ulCount : ULONG;
      ulNumEntriesRemoved : PULONG;
      dwMilliseconds : DWORD;
      fAlertable : BOOL
   ) return BOOL;
   pragma import (Cpp,GetQueuedCompletionStatusEx,"GetQueuedCompletionStatusEx");
   function PostQueuedCompletionStatus(
      CompletionPort : HANDLE;
      dwNumberOfBytesTransferred : DWORD;
      dwCompletionKey : ULONG_PTR;
      lpOverlapped_x : LPOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,PostQueuedCompletionStatus,"PostQueuedCompletionStatus");
   function DeviceIoControl(
      hDevice : HANDLE;
      dwIoControlCode : DWORD;
      lpInBuffer : LPVOID;
      nInBufferSize : DWORD;
      lpOutBuffer : LPVOID;
      nOutBufferSize : DWORD;
      lpBytesReturned : LPDWORD;
      lpOverlapped_x : LPOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,DeviceIoControl,"DeviceIoControl");
   function GetOverlappedResult(
      hFile_x : HANDLE;
      lpOverlapped_x : LPOVERLAPPED;
      lpNumberOfBytesTransferred : LPDWORD;
      bWait : BOOL
   ) return BOOL;
   pragma import (Cpp,GetOverlappedResult,"GetOverlappedResult");
   function CancelIoEx(
      hFile_x : HANDLE;
      lpOverlapped_x : LPOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,CancelIoEx,"CancelIoEx");
   function CancelIo(
      hFile_x : HANDLE
   ) return BOOL;
   pragma import (Cpp,CancelIo,"CancelIo");
   function GetOverlappedResultEx(
      hFile_x : HANDLE;
      lpOverlapped_x : LPOVERLAPPED;
      lpNumberOfBytesTransferred : LPDWORD;
      dwMilliseconds : DWORD;
      bAlertable : BOOL
   ) return BOOL;
   pragma import (Cpp,GetOverlappedResultEx,"GetOverlappedResultEx");
   function CancelSynchronousIo(
      hThread : HANDLE
   ) return BOOL;
   pragma import (Cpp,CancelSynchronousIo,"CancelSynchronousIo");
   -- #include <synchapi.h>
   subtype SRWLOCK is RTL_SRWLOCK;
   type PSRWLOCK is access all RTL_SRWLOCK;
   procedure InitializeSRWLock(
      SRWLock_x : PSRWLOCK
   );
   pragma import (Cpp,InitializeSRWLock,"InitializeSRWLock");
   procedure ReleaseSRWLockExclusive(
      SRWLock_x : PSRWLOCK
   );
   pragma import (Cpp,ReleaseSRWLockExclusive,"ReleaseSRWLockExclusive");
   procedure ReleaseSRWLockShared(
      SRWLock_x : PSRWLOCK
   );
   pragma import (Cpp,ReleaseSRWLockShared,"ReleaseSRWLockShared");
   procedure AcquireSRWLockExclusive(
      SRWLock_x : PSRWLOCK
   );
   pragma import (Cpp,AcquireSRWLockExclusive,"AcquireSRWLockExclusive");
   procedure AcquireSRWLockShared(
      SRWLock_x : PSRWLOCK
   );
   pragma import (Cpp,AcquireSRWLockShared,"AcquireSRWLockShared");
   function TryAcquireSRWLockExclusive(
      SRWLock_x : PSRWLOCK
   ) return BOOLEAN;
   pragma import (Cpp,TryAcquireSRWLockExclusive,"TryAcquireSRWLockExclusive");
   function TryAcquireSRWLockShared(
      SRWLock_x : PSRWLOCK
   ) return BOOLEAN;
   pragma import (Cpp,TryAcquireSRWLockShared,"TryAcquireSRWLockShared");
   procedure InitializeCriticalSection(
      lpCriticalSection : LPCRITICAL_SECTION
   );
   pragma import (Cpp,InitializeCriticalSection,"InitializeCriticalSection");
   procedure EnterCriticalSection(
      lpCriticalSection : LPCRITICAL_SECTION
   );
   pragma import (Cpp,EnterCriticalSection,"EnterCriticalSection");
   procedure LeaveCriticalSection(
      lpCriticalSection : LPCRITICAL_SECTION
   );
   pragma import (Cpp,LeaveCriticalSection,"LeaveCriticalSection");
   function InitializeCriticalSectionAndSpinCount(
      lpCriticalSection : LPCRITICAL_SECTION;
      dwSpinCount : DWORD
   ) return BOOL;
   pragma import (Cpp,InitializeCriticalSectionAndSpinCount,"InitializeCriticalSectionAndSpinCount");
   function InitializeCriticalSectionEx(
      lpCriticalSection : LPCRITICAL_SECTION;
      dwSpinCount : DWORD;
      Flags : DWORD
   ) return BOOL;
   pragma import (Cpp,InitializeCriticalSectionEx,"InitializeCriticalSectionEx");
   function SetCriticalSectionSpinCount(
      lpCriticalSection : LPCRITICAL_SECTION;
      dwSpinCount : DWORD
   ) return DWORD;
   pragma import (Cpp,SetCriticalSectionSpinCount,"SetCriticalSectionSpinCount");
   function TryEnterCriticalSection(
      lpCriticalSection : LPCRITICAL_SECTION
   ) return BOOL;
   pragma import (Cpp,TryEnterCriticalSection,"TryEnterCriticalSection");
   procedure DeleteCriticalSection(
      lpCriticalSection : LPCRITICAL_SECTION
   );
   pragma import (Cpp,DeleteCriticalSection,"DeleteCriticalSection");
   subtype INIT_ONCE is RTL_RUN_ONCE;
   subtype PINIT_ONCE is PRTL_RUN_ONCE;
   subtype LPINIT_ONCE is PRTL_RUN_ONCE;
   type PINIT_ONCE_FN is access function (p1 : PINIT_ONCE ; p2 : PVOID ; p3 : access PVOID) return BOOL; -- BOOL (PINIT_ONCE, PVOID, PVOID *)
   pragma Convention(C,PINIT_ONCE_FN);
   procedure InitOnceInitialize(
      InitOnce : PINIT_ONCE
   );
   pragma import (Cpp,InitOnceInitialize,"InitOnceInitialize");
   function InitOnceExecuteOnce(
      InitOnce : PINIT_ONCE;
      InitFn : PINIT_ONCE_FN;
      Parameter : PVOID;
      Context_x : access LPVOID
   ) return BOOL;
   pragma import (Cpp,InitOnceExecuteOnce,"InitOnceExecuteOnce");
   function InitOnceBeginInitialize(
      lpInitOnce : LPINIT_ONCE;
      dwFlags : DWORD;
      fPending : PBOOL;
      lpContext_x : access LPVOID
   ) return BOOL;
   pragma import (Cpp,InitOnceBeginInitialize,"InitOnceBeginInitialize");
   function InitOnceComplete(
      lpInitOnce : LPINIT_ONCE;
      dwFlags : DWORD;
      lpContext_x : LPVOID
   ) return BOOL;
   pragma import (Cpp,InitOnceComplete,"InitOnceComplete");
   subtype CONDITION_VARIABLE is RTL_CONDITION_VARIABLE;
   type PCONDITION_VARIABLE is access all RTL_CONDITION_VARIABLE;
   procedure InitializeConditionVariable(
      ConditionVariable : PCONDITION_VARIABLE
   );
   pragma import (Cpp,InitializeConditionVariable,"InitializeConditionVariable");
   procedure WakeConditionVariable(
      ConditionVariable : PCONDITION_VARIABLE
   );
   pragma import (Cpp,WakeConditionVariable,"WakeConditionVariable");
   procedure WakeAllConditionVariable(
      ConditionVariable : PCONDITION_VARIABLE
   );
   pragma import (Cpp,WakeAllConditionVariable,"WakeAllConditionVariable");
   function SleepConditionVariableCS(
      ConditionVariable : PCONDITION_VARIABLE;
      CriticalSection : PCRITICAL_SECTION;
      dwMilliseconds : DWORD
   ) return BOOL;
   pragma import (Cpp,SleepConditionVariableCS,"SleepConditionVariableCS");
   function SleepConditionVariableSRW(
      ConditionVariable : PCONDITION_VARIABLE;
      SRWLock_x : PSRWLOCK;
      dwMilliseconds : DWORD;
      Flags : ULONG
   ) return BOOL;
   pragma import (Cpp,SleepConditionVariableSRW,"SleepConditionVariableSRW");
   function SetEvent(
      hEvent : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetEvent,"SetEvent");
   function ResetEvent(
      hEvent : HANDLE
   ) return BOOL;
   pragma import (Cpp,ResetEvent,"ResetEvent");
   function ReleaseSemaphore(
      hSemaphore : HANDLE;
      lReleaseCount : LONG;
      lpPreviousCount : LPLONG
   ) return BOOL;
   pragma import (Cpp,ReleaseSemaphore,"ReleaseSemaphore");
   function ReleaseMutex(
      hMutex : HANDLE
   ) return BOOL;
   pragma import (Cpp,ReleaseMutex,"ReleaseMutex");
   function WaitForSingleObject(
      hHandle : HANDLE;
      dwMilliseconds : DWORD
   ) return DWORD;
   pragma import (Cpp,WaitForSingleObject,"WaitForSingleObject");
   function SleepEx(
      dwMilliseconds : DWORD;
      bAlertable : BOOL
   ) return DWORD;
   pragma import (Cpp,SleepEx,"SleepEx");
   function WaitForSingleObjectEx(
      hHandle : HANDLE;
      dwMilliseconds : DWORD;
      bAlertable : BOOL
   ) return DWORD;
   pragma import (Cpp,WaitForSingleObjectEx,"WaitForSingleObjectEx");
   function WaitForMultipleObjectsEx(
      nCount : DWORD;
      lpHandles : access constant HANDLE;
      bWaitAll : BOOL;
      dwMilliseconds : DWORD;
      bAlertable : BOOL
   ) return DWORD;
   pragma import (Cpp,WaitForMultipleObjectsEx,"WaitForMultipleObjectsEx");
   function CreateMutexA(
      lpMutexAttributes : LPSECURITY_ATTRIBUTES;
      bInitialOwner : BOOL;
      lpName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,CreateMutexA,"CreateMutexA");
   function CreateMutexW(
      lpMutexAttributes : LPSECURITY_ATTRIBUTES;
      bInitialOwner : BOOL;
      lpName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,CreateMutexW,"CreateMutexW");
   function OpenMutexW(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      lpName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,OpenMutexW,"OpenMutexW");
   function CreateEventA(
      lpEventAttributes : LPSECURITY_ATTRIBUTES;
      bManualReset : BOOL;
      bInitialState : BOOL;
      lpName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,CreateEventA,"CreateEventA");
   function CreateEventW(
      lpEventAttributes : LPSECURITY_ATTRIBUTES;
      bManualReset : BOOL;
      bInitialState : BOOL;
      lpName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,CreateEventW,"CreateEventW");
   function OpenEventA(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      lpName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,OpenEventA,"OpenEventA");
   function OpenEventW(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      lpName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,OpenEventW,"OpenEventW");
   function OpenSemaphoreW(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      lpName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,OpenSemaphoreW,"OpenSemaphoreW");
   type PTIMERAPCROUTINE is access procedure (p1 : LPVOID ; p2 : DWORD ; p3 : DWORD); -- void (LPVOID, DWORD, DWORD)
   pragma Convention(C,PTIMERAPCROUTINE);
   function OpenWaitableTimerW(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      lpTimerName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,OpenWaitableTimerW,"OpenWaitableTimerW");
   function SetWaitableTimerEx(
      hTimer : HANDLE;
      lpDueTime : access constant LARGE_INTEGER;
      lPeriod : LONG;
      pfnCompletionRoutine : PTIMERAPCROUTINE;
      lpArgToCompletionRoutine : LPVOID;
      WakeContext : PREASON_CONTEXT;
      TolerableDelay : ULONG
   ) return BOOL;
   pragma import (Cpp,SetWaitableTimerEx,"SetWaitableTimerEx");
   function SetWaitableTimer(
      hTimer : HANDLE;
      lpDueTime : access constant LARGE_INTEGER;
      lPeriod : LONG;
      pfnCompletionRoutine : PTIMERAPCROUTINE;
      lpArgToCompletionRoutine : LPVOID;
      fResume : BOOL
   ) return BOOL;
   pragma import (Cpp,SetWaitableTimer,"SetWaitableTimer");
   function CancelWaitableTimer(
      hTimer : HANDLE
   ) return BOOL;
   pragma import (Cpp,CancelWaitableTimer,"CancelWaitableTimer");
   function CreateMutexExA(
      lpMutexAttributes : LPSECURITY_ATTRIBUTES;
      lpName : LPCSTR;
      dwFlags : DWORD;
      dwDesiredAccess : DWORD
   ) return HANDLE;
   pragma import (Cpp,CreateMutexExA,"CreateMutexExA");
   function CreateMutexExW(
      lpMutexAttributes : LPSECURITY_ATTRIBUTES;
      lpName : LPCWSTR;
      dwFlags : DWORD;
      dwDesiredAccess : DWORD
   ) return HANDLE;
   pragma import (Cpp,CreateMutexExW,"CreateMutexExW");
   function CreateEventExA(
      lpEventAttributes : LPSECURITY_ATTRIBUTES;
      lpName : LPCSTR;
      dwFlags : DWORD;
      dwDesiredAccess : DWORD
   ) return HANDLE;
   pragma import (Cpp,CreateEventExA,"CreateEventExA");
   function CreateEventExW(
      lpEventAttributes : LPSECURITY_ATTRIBUTES;
      lpName : LPCWSTR;
      dwFlags : DWORD;
      dwDesiredAccess : DWORD
   ) return HANDLE;
   pragma import (Cpp,CreateEventExW,"CreateEventExW");
   function CreateSemaphoreExW(
      lpSemaphoreAttributes : LPSECURITY_ATTRIBUTES;
      lInitialCount : LONG;
      lMaximumCount : LONG;
      lpName : LPCWSTR;
      dwFlags : DWORD;
      dwDesiredAccess : DWORD
   ) return HANDLE;
   pragma import (Cpp,CreateSemaphoreExW,"CreateSemaphoreExW");
   function CreateWaitableTimerExW(
      lpTimerAttributes : LPSECURITY_ATTRIBUTES;
      lpTimerName : LPCWSTR;
      dwFlags : DWORD;
      dwDesiredAccess : DWORD
   ) return HANDLE;
   pragma import (Cpp,CreateWaitableTimerExW,"CreateWaitableTimerExW");
   subtype SYNCHRONIZATION_BARRIER is RTL_BARRIER;
   subtype PSYNCHRONIZATION_BARRIER is PRTL_BARRIER;
   subtype LPSYNCHRONIZATION_BARRIER is PRTL_BARRIER;
   function EnterSynchronizationBarrier(
      lpBarrier : LPSYNCHRONIZATION_BARRIER;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnterSynchronizationBarrier,"EnterSynchronizationBarrier");
   function InitializeSynchronizationBarrier(
      lpBarrier : LPSYNCHRONIZATION_BARRIER;
      lTotalThreads : LONG;
      lSpinCount : LONG
   ) return BOOL;
   pragma import (Cpp,InitializeSynchronizationBarrier,"InitializeSynchronizationBarrier");
   function DeleteSynchronizationBarrier(
      lpBarrier : LPSYNCHRONIZATION_BARRIER
   ) return BOOL;
   pragma import (Cpp,DeleteSynchronizationBarrier,"DeleteSynchronizationBarrier");
   procedure Sleep(
      dwMilliseconds : DWORD
   );
   pragma import (Cpp,Sleep,"Sleep");
   function WaitOnAddress(
      Address : access Void;
      CompareAddress : PVOID;
      AddressSize : SIZE_T;
      dwMilliseconds : DWORD
   ) return BOOL;
   pragma import (Cpp,WaitOnAddress,"WaitOnAddress");
   procedure WakeByAddressSingle(
      Address : PVOID
   );
   pragma import (Cpp,WakeByAddressSingle,"WakeByAddressSingle");
   procedure WakeByAddressAll(
      Address : PVOID
   );
   pragma import (Cpp,WakeByAddressAll,"WakeByAddressAll");
   function SignalObjectAndWait(
      hObjectToSignal : HANDLE;
      hObjectToWaitOn : HANDLE;
      dwMilliseconds : DWORD;
      bAlertable : BOOL
   ) return DWORD;
   pragma import (Cpp,SignalObjectAndWait,"SignalObjectAndWait");
   function WaitForMultipleObjects(
      nCount : DWORD;
      lpHandles : access constant HANDLE;
      bWaitAll : BOOL;
      dwMilliseconds : DWORD
   ) return DWORD;
   pragma import (Cpp,WaitForMultipleObjects,"WaitForMultipleObjects");
   function CreateSemaphoreW(
      lpSemaphoreAttributes : LPSECURITY_ATTRIBUTES;
      lInitialCount : LONG;
      lMaximumCount : LONG;
      lpName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,CreateSemaphoreW,"CreateSemaphoreW");
   function CreateWaitableTimerW(
      lpTimerAttributes : LPSECURITY_ATTRIBUTES;
      bManualReset : BOOL;
      lpTimerName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,CreateWaitableTimerW,"CreateWaitableTimerW");
   -- #include <interlockedapi.h>
   procedure InitializeSListHead(
      ListHead : PSLIST_HEADER
   );
   pragma import (Cpp,InitializeSListHead,"InitializeSListHead");
   function InterlockedPopEntrySList(
      ListHead : PSLIST_HEADER
   ) return PSLIST_ENTRY;
   pragma import (Cpp,InterlockedPopEntrySList,"InterlockedPopEntrySList");
   function InterlockedPushEntrySList(
      ListHead : PSLIST_HEADER;
      ListEntry : PSLIST_ENTRY
   ) return PSLIST_ENTRY;
   pragma import (Cpp,InterlockedPushEntrySList,"InterlockedPushEntrySList");
   function InterlockedPushListSListEx(
      ListHead : PSLIST_HEADER;
      List : PSLIST_ENTRY;
      ListEnd : PSLIST_ENTRY;
      Count : ULONG
   ) return PSLIST_ENTRY;
   pragma import (Cpp,InterlockedPushListSListEx,"InterlockedPushListSListEx");
   function InterlockedFlushSList(
      ListHead : PSLIST_HEADER
   ) return PSLIST_ENTRY;
   pragma import (Cpp,InterlockedFlushSList,"InterlockedFlushSList");
   function QueryDepthSList(
      ListHead : PSLIST_HEADER
   ) return USHORT;
   pragma import (Cpp,QueryDepthSList,"QueryDepthSList");
   -- #include <processthreadsapi.h>
   type PROCESS_INFORMATION_x is record
      hProcess : HANDLE;
      hThread : HANDLE;
      dwProcessId : DWORD;
      dwThreadId : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_INFORMATION_x);
   for PROCESS_INFORMATION_x use record
      hProcess at 0 range 0..63;
      hThread at 0 range 64..127;
      dwProcessId at 0 range 128..159;
      dwThreadId at 0 range 160..191;
   end record;
   for PROCESS_INFORMATION_x'Size use 192;
   for PROCESS_INFORMATION_x'Alignment use 8;
   subtype PROCESS_INFORMATION is PROCESS_INFORMATION_x;
   type PPROCESS_INFORMATION is access all PROCESS_INFORMATION_x;
   type LPPROCESS_INFORMATION is access all PROCESS_INFORMATION_x;
   type STARTUPINFOA_x is record
      cb : DWORD;
      lpReserved : LPSTR;
      lpDesktop : LPSTR;
      lpTitle : LPSTR;
      dwX : DWORD;
      dwY : DWORD;
      dwXSize : DWORD;
      dwYSize : DWORD;
      dwXCountChars : DWORD;
      dwYCountChars : DWORD;
      dwFillAttribute : DWORD;
      dwFlags : DWORD;
      wShowWindow : WORD;
      cbReserved2 : WORD;
      lpReserved2 : LPBYTE;
      hStdInput : HANDLE;
      hStdOutput : HANDLE;
      hStdError : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,STARTUPINFOA_x);
   for STARTUPINFOA_x use record
      cb at 0 range 0..31;
      lpReserved at 0 range 64..127;
      lpDesktop at 0 range 128..191;
      lpTitle at 0 range 192..255;
      dwX at 0 range 256..287;
      dwY at 0 range 288..319;
      dwXSize at 0 range 320..351;
      dwYSize at 0 range 352..383;
      dwXCountChars at 0 range 384..415;
      dwYCountChars at 0 range 416..447;
      dwFillAttribute at 0 range 448..479;
      dwFlags at 0 range 480..511;
      wShowWindow at 0 range 512..527;
      cbReserved2 at 0 range 528..543;
      lpReserved2 at 0 range 576..639;
      hStdInput at 0 range 640..703;
      hStdOutput at 0 range 704..767;
      hStdError at 0 range 768..831;
   end record;
   for STARTUPINFOA_x'Size use 832;
   for STARTUPINFOA_x'Alignment use 8;
   subtype STARTUPINFOA is STARTUPINFOA_x;
   type LPSTARTUPINFOA is access all STARTUPINFOA_x;
   type STARTUPINFOW_x is record
      cb : DWORD;
      lpReserved : LPWSTR;
      lpDesktop : LPWSTR;
      lpTitle : LPWSTR;
      dwX : DWORD;
      dwY : DWORD;
      dwXSize : DWORD;
      dwYSize : DWORD;
      dwXCountChars : DWORD;
      dwYCountChars : DWORD;
      dwFillAttribute : DWORD;
      dwFlags : DWORD;
      wShowWindow : WORD;
      cbReserved2 : WORD;
      lpReserved2 : LPBYTE;
      hStdInput : HANDLE;
      hStdOutput : HANDLE;
      hStdError : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,STARTUPINFOW_x);
   for STARTUPINFOW_x use record
      cb at 0 range 0..31;
      lpReserved at 0 range 64..127;
      lpDesktop at 0 range 128..191;
      lpTitle at 0 range 192..255;
      dwX at 0 range 256..287;
      dwY at 0 range 288..319;
      dwXSize at 0 range 320..351;
      dwYSize at 0 range 352..383;
      dwXCountChars at 0 range 384..415;
      dwYCountChars at 0 range 416..447;
      dwFillAttribute at 0 range 448..479;
      dwFlags at 0 range 480..511;
      wShowWindow at 0 range 512..527;
      cbReserved2 at 0 range 528..543;
      lpReserved2 at 0 range 576..639;
      hStdInput at 0 range 640..703;
      hStdOutput at 0 range 704..767;
      hStdError at 0 range 768..831;
   end record;
   for STARTUPINFOW_x'Size use 832;
   for STARTUPINFOW_x'Alignment use 8;
   subtype STARTUPINFOW is STARTUPINFOW_x;
   type LPSTARTUPINFOW is access all STARTUPINFOW_x;
   subtype STARTUPINFO is STARTUPINFOA;
   subtype LPSTARTUPINFO is LPSTARTUPINFOA;
   function QueueUserAPC(
      pfnAPC : PAPCFUNC;
      hThread : HANDLE;
      dwData : ULONG_PTR
   ) return DWORD;
   pragma import (Cpp,QueueUserAPC,"QueueUserAPC");
   function GetProcessTimes(
      hProcess : HANDLE;
      lpCreationTime : LPFILETIME;
      lpExitTime : LPFILETIME;
      lpKernelTime : LPFILETIME;
      lpUserTime : LPFILETIME
   ) return BOOL;
   pragma import (Cpp,GetProcessTimes,"GetProcessTimes");
   function GetCurrentProcess return HANDLE;
   pragma import (Cpp,GetCurrentProcess,"GetCurrentProcess");
   function GetCurrentProcessId return DWORD;
   pragma import (Cpp,GetCurrentProcessId,"GetCurrentProcessId");
   procedure ExitProcess(
      uExitCode : UINT
   );
   pragma import (Cpp,ExitProcess,"ExitProcess");
   function TerminateProcess(
      hProcess : HANDLE;
      uExitCode : UINT
   ) return BOOL;
   pragma import (Cpp,TerminateProcess,"TerminateProcess");
   function GetExitCodeProcess(
      hProcess : HANDLE;
      lpExitCode : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetExitCodeProcess,"GetExitCodeProcess");
   function SwitchToThread return BOOL;
   pragma import (Cpp,SwitchToThread,"SwitchToThread");
   function CreateThread(
      lpThreadAttributes : LPSECURITY_ATTRIBUTES;
      dwStackSize : SIZE_T;
      lpStartAddress : LPTHREAD_START_ROUTINE;
      lpParameter : LPVOID;
      dwCreationFlags : DWORD;
      lpThreadId : LPDWORD
   ) return HANDLE;
   pragma import (Cpp,CreateThread,"CreateThread");
   function CreateRemoteThread(
      hProcess : HANDLE;
      lpThreadAttributes : LPSECURITY_ATTRIBUTES;
      dwStackSize : SIZE_T;
      lpStartAddress : LPTHREAD_START_ROUTINE;
      lpParameter : LPVOID;
      dwCreationFlags : DWORD;
      lpThreadId : LPDWORD
   ) return HANDLE;
   pragma import (Cpp,CreateRemoteThread,"CreateRemoteThread");
   function GetCurrentThread return HANDLE;
   pragma import (Cpp,GetCurrentThread,"GetCurrentThread");
   function GetCurrentThreadId return DWORD;
   pragma import (Cpp,GetCurrentThreadId,"GetCurrentThreadId");
   function OpenThread(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      dwThreadId : DWORD
   ) return HANDLE;
   pragma import (Cpp,OpenThread,"OpenThread");
   function SetThreadPriority(
      hThread : HANDLE;
      nPriority : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,SetThreadPriority,"SetThreadPriority");
   function SetThreadPriorityBoost(
      hThread : HANDLE;
      bDisablePriorityBoost : BOOL
   ) return BOOL;
   pragma import (Cpp,SetThreadPriorityBoost,"SetThreadPriorityBoost");
   function GetThreadPriorityBoost(
      hThread : HANDLE;
      pDisablePriorityBoost : PBOOL
   ) return BOOL;
   pragma import (Cpp,GetThreadPriorityBoost,"GetThreadPriorityBoost");
   function GetThreadPriority(
      hThread : HANDLE
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetThreadPriority,"GetThreadPriority");
   procedure ExitThread(
      dwExitCode : DWORD
   );
   pragma import (Cpp,ExitThread,"ExitThread");
   function TerminateThread(
      hThread : HANDLE;
      dwExitCode : DWORD
   ) return BOOL;
   pragma import (Cpp,TerminateThread,"TerminateThread");
   function GetExitCodeThread(
      hThread : HANDLE;
      lpExitCode : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetExitCodeThread,"GetExitCodeThread");
   function SuspendThread(
      hThread : HANDLE
   ) return DWORD;
   pragma import (Cpp,SuspendThread,"SuspendThread");
   function ResumeThread(
      hThread : HANDLE
   ) return DWORD;
   pragma import (Cpp,ResumeThread,"ResumeThread");
   function TlsAlloc return DWORD;
   pragma import (Cpp,TlsAlloc,"TlsAlloc");
   procedure TlsGetValue(
      dwTlsIndex : DWORD
   );
   pragma import (Cpp,TlsGetValue,"TlsGetValue");
   function TlsSetValue(
      dwTlsIndex : DWORD;
      lpTlsValue : LPVOID
   ) return BOOL;
   pragma import (Cpp,TlsSetValue,"TlsSetValue");
   function TlsFree(
      dwTlsIndex : DWORD
   ) return BOOL;
   pragma import (Cpp,TlsFree,"TlsFree");
   function CreateProcessA(
      lpApplicationName : LPCSTR;
      lpCommandLine : LPSTR;
      lpProcessAttributes : LPSECURITY_ATTRIBUTES;
      lpThreadAttributes : LPSECURITY_ATTRIBUTES;
      bInheritHandles : BOOL;
      dwCreationFlags : DWORD;
      lpEnvironment : LPVOID;
      lpCurrentDirectory : LPCSTR;
      lpStartupInfo_x : LPSTARTUPINFOA;
      lpProcessInformation : LPPROCESS_INFORMATION
   ) return BOOL;
   pragma import (Cpp,CreateProcessA,"CreateProcessA");
   function CreateProcessW(
      lpApplicationName : LPCWSTR;
      lpCommandLine : LPWSTR;
      lpProcessAttributes : LPSECURITY_ATTRIBUTES;
      lpThreadAttributes : LPSECURITY_ATTRIBUTES;
      bInheritHandles : BOOL;
      dwCreationFlags : DWORD;
      lpEnvironment : LPVOID;
      lpCurrentDirectory : LPCWSTR;
      lpStartupInfo_x : LPSTARTUPINFOW;
      lpProcessInformation : LPPROCESS_INFORMATION
   ) return BOOL;
   pragma import (Cpp,CreateProcessW,"CreateProcessW");
   function SetProcessShutdownParameters(
      dwLevel : DWORD;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,SetProcessShutdownParameters,"SetProcessShutdownParameters");
   function GetProcessVersion(
      ProcessId : DWORD
   ) return DWORD;
   pragma import (Cpp,GetProcessVersion,"GetProcessVersion");
   procedure GetStartupInfoW(
      lpStartupInfo_x : LPSTARTUPINFOW
   );
   pragma import (Cpp,GetStartupInfoW,"GetStartupInfoW");
   function CreateProcessAsUserW(
      hToken : HANDLE;
      lpApplicationName : LPCWSTR;
      lpCommandLine : LPWSTR;
      lpProcessAttributes : LPSECURITY_ATTRIBUTES;
      lpThreadAttributes : LPSECURITY_ATTRIBUTES;
      bInheritHandles : BOOL;
      dwCreationFlags : DWORD;
      lpEnvironment : LPVOID;
      lpCurrentDirectory : LPCWSTR;
      lpStartupInfo_x : LPSTARTUPINFOW;
      lpProcessInformation : LPPROCESS_INFORMATION
   ) return BOOL;
   pragma import (Cpp,CreateProcessAsUserW,"CreateProcessAsUserW");
   -- GetCurrentProcessToken(); -- inlined function not supported
   -- GetCurrentThreadToken(); -- inlined function not supported
   -- GetCurrentThreadEffectiveToken(); -- inlined function not supported
   function SetThreadToken(
      Thread : PHANDLE;
      Token : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetThreadToken,"SetThreadToken");
   function OpenProcessToken(
      ProcessHandle : HANDLE;
      DesiredAccess : DWORD;
      TokenHandle : PHANDLE
   ) return BOOL;
   pragma import (Cpp,OpenProcessToken,"OpenProcessToken");
   function OpenThreadToken(
      ThreadHandle : HANDLE;
      DesiredAccess : DWORD;
      OpenAsSelf : BOOL;
      TokenHandle : PHANDLE
   ) return BOOL;
   pragma import (Cpp,OpenThreadToken,"OpenThreadToken");
   function SetPriorityClass(
      hProcess : HANDLE;
      dwPriorityClass : DWORD
   ) return BOOL;
   pragma import (Cpp,SetPriorityClass,"SetPriorityClass");
   function GetPriorityClass(
      hProcess : HANDLE
   ) return DWORD;
   pragma import (Cpp,GetPriorityClass,"GetPriorityClass");
   function SetThreadStackGuarantee(
      StackSizeInBytes : PULONG
   ) return BOOL;
   pragma import (Cpp,SetThreadStackGuarantee,"SetThreadStackGuarantee");
   function ProcessIdToSessionId(
      dwProcessId : DWORD;
      pSessionId : access DWORD
   ) return BOOL;
   pragma import (Cpp,ProcessIdToSessionId,"ProcessIdToSessionId");
   type PROC_THREAD_ATTRIBUTE_LIST_x;
   type PPROC_THREAD_ATTRIBUTE_LIST is access all PROC_THREAD_ATTRIBUTE_LIST_x;
   type LPPROC_THREAD_ATTRIBUTE_LIST is access all PROC_THREAD_ATTRIBUTE_LIST_x;
   function GetProcessId(
      Process : HANDLE
   ) return DWORD;
   pragma import (Cpp,GetProcessId,"GetProcessId");
   function GetThreadId(
      Thread : HANDLE
   ) return DWORD;
   pragma import (Cpp,GetThreadId,"GetThreadId");
   procedure FlushProcessWriteBuffers;
   pragma import (Cpp,FlushProcessWriteBuffers,"FlushProcessWriteBuffers");
   function GetProcessIdOfThread(
      Thread : HANDLE
   ) return DWORD;
   pragma import (Cpp,GetProcessIdOfThread,"GetProcessIdOfThread");
   function InitializeProcThreadAttributeList(
      lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST;
      dwAttributeCount : DWORD;
      dwFlags : DWORD;
      lpSize_x : PSIZE_T
   ) return BOOL;
   pragma import (Cpp,InitializeProcThreadAttributeList,"InitializeProcThreadAttributeList");
   procedure DeleteProcThreadAttributeList(
      lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST
   );
   pragma import (Cpp,DeleteProcThreadAttributeList,"DeleteProcThreadAttributeList");
   function UpdateProcThreadAttribute(
      lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST;
      dwFlags : DWORD;
      Attribute : DWORD_PTR;
      lpValue : PVOID;
      cbSize : SIZE_T;
      lpPreviousValue : PVOID;
      lpReturnSize : PSIZE_T
   ) return BOOL;
   pragma import (Cpp,UpdateProcThreadAttribute,"UpdateProcThreadAttribute");
   function SetProcessDynamicEHContinuationTargets(
      Process : HANDLE;
      NumberOfTargets : USHORT;
      Targets : PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET
   ) return BOOL;
   pragma import (Cpp,SetProcessDynamicEHContinuationTargets,"SetProcessDynamicEHContinuationTargets");
   function SetProcessAffinityUpdateMode(
      hProcess : HANDLE;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,SetProcessAffinityUpdateMode,"SetProcessAffinityUpdateMode");
   function QueryProcessAffinityUpdateMode(
      hProcess : HANDLE;
      lpdwFlags : LPDWORD
   ) return BOOL;
   pragma import (Cpp,QueryProcessAffinityUpdateMode,"QueryProcessAffinityUpdateMode");
   function CreateRemoteThreadEx(
      hProcess : HANDLE;
      lpThreadAttributes : LPSECURITY_ATTRIBUTES;
      dwStackSize : SIZE_T;
      lpStartAddress : LPTHREAD_START_ROUTINE;
      lpParameter : LPVOID;
      dwCreationFlags : DWORD;
      lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST;
      lpThreadId : LPDWORD
   ) return HANDLE;
   pragma import (Cpp,CreateRemoteThreadEx,"CreateRemoteThreadEx");
   procedure GetCurrentThreadStackLimits(
      LowLimit : PULONG_PTR;
      HighLimit : PULONG_PTR
   );
   pragma import (Cpp,GetCurrentThreadStackLimits,"GetCurrentThreadStackLimits");
   function GetThreadContext(
      hThread : HANDLE;
      lpContext_x : LPCONTEXT
   ) return BOOL;
   pragma import (Cpp,GetThreadContext,"GetThreadContext");
   function GetProcessMitigationPolicy(
      hProcess : HANDLE;
      MitigationPolicy : PROCESS_MITIGATION_POLICY;
      lpBuffer : PVOID;
      dwLength : SIZE_T
   ) return BOOL;
   pragma import (Cpp,GetProcessMitigationPolicy,"GetProcessMitigationPolicy");
   function SetThreadContext(
      hThread : HANDLE;
      lpContext_x : access constant CONTEXT
   ) return BOOL;
   pragma import (Cpp,SetThreadContext,"SetThreadContext");
   function SetProcessMitigationPolicy(
      MitigationPolicy : PROCESS_MITIGATION_POLICY;
      lpBuffer : PVOID;
      dwLength : SIZE_T
   ) return BOOL;
   pragma import (Cpp,SetProcessMitigationPolicy,"SetProcessMitigationPolicy");
   function FlushInstructionCache(
      hProcess : HANDLE;
      lpBaseAddress : LPCVOID;
      dwSize : SIZE_T
   ) return BOOL;
   pragma import (Cpp,FlushInstructionCache,"FlushInstructionCache");
   function GetThreadTimes(
      hThread : HANDLE;
      lpCreationTime : LPFILETIME;
      lpExitTime : LPFILETIME;
      lpKernelTime : LPFILETIME;
      lpUserTime : LPFILETIME
   ) return BOOL;
   pragma import (Cpp,GetThreadTimes,"GetThreadTimes");
   function OpenProcess(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      dwProcessId : DWORD
   ) return HANDLE;
   pragma import (Cpp,OpenProcess,"OpenProcess");
   function IsProcessorFeaturePresent(
      ProcessorFeature : DWORD
   ) return BOOL;
   pragma import (Cpp,IsProcessorFeaturePresent,"IsProcessorFeaturePresent");
   function GetProcessHandleCount(
      hProcess : HANDLE;
      pdwHandleCount : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetProcessHandleCount,"GetProcessHandleCount");
   function GetCurrentProcessorNumber return DWORD;
   pragma import (Cpp,GetCurrentProcessorNumber,"GetCurrentProcessorNumber");
   function SetThreadIdealProcessorEx(
      hThread : HANDLE;
      lpIdealProcessor : PPROCESSOR_NUMBER;
      lpPreviousIdealProcessor : PPROCESSOR_NUMBER
   ) return BOOL;
   pragma import (Cpp,SetThreadIdealProcessorEx,"SetThreadIdealProcessorEx");
   function GetThreadIdealProcessorEx(
      hThread : HANDLE;
      lpIdealProcessor : PPROCESSOR_NUMBER
   ) return BOOL;
   pragma import (Cpp,GetThreadIdealProcessorEx,"GetThreadIdealProcessorEx");
   procedure GetCurrentProcessorNumberEx(
      ProcNumber : PPROCESSOR_NUMBER
   );
   pragma import (Cpp,GetCurrentProcessorNumberEx,"GetCurrentProcessorNumberEx");
   function GetProcessPriorityBoost(
      hProcess : HANDLE;
      pDisablePriorityBoost : PBOOL
   ) return BOOL;
   pragma import (Cpp,GetProcessPriorityBoost,"GetProcessPriorityBoost");
   function SetProcessPriorityBoost(
      hProcess : HANDLE;
      bDisablePriorityBoost : BOOL
   ) return BOOL;
   pragma import (Cpp,SetProcessPriorityBoost,"SetProcessPriorityBoost");
   function GetThreadIOPendingFlag(
      hThread : HANDLE;
      lpIOIsPending : PBOOL
   ) return BOOL;
   pragma import (Cpp,GetThreadIOPendingFlag,"GetThreadIOPendingFlag");
   function GetSystemTimes(
      lpIdleTime : PFILETIME;
      lpKernelTime : PFILETIME;
      lpUserTime : PFILETIME
   ) return BOOL;
   pragma import (Cpp,GetSystemTimes,"GetSystemTimes");
   type THREAD_INFORMATION_CLASS_x is (
      ThreadMemoryPriority,
      ThreadAbsoluteCpuPriority,
      ThreadDynamicCodePolicy,
      ThreadPowerThrottling,
      ThreadInformationClassMax
   );
   for THREAD_INFORMATION_CLASS_x use (
      ThreadMemoryPriority => 0,
      ThreadAbsoluteCpuPriority => 1,
      ThreadDynamicCodePolicy => 2,
      ThreadPowerThrottling => 3,
      ThreadInformationClassMax => 4
   );
   for THREAD_INFORMATION_CLASS_x'Size use 32;
   subtype THREAD_INFORMATION_CLASS is THREAD_INFORMATION_CLASS_x;
   type MEMORY_PRIORITY_INFORMATION_x is record
      MemoryPriority : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,MEMORY_PRIORITY_INFORMATION_x);
   for MEMORY_PRIORITY_INFORMATION_x use record
      MemoryPriority at 0 range 0..31;
   end record;
   for MEMORY_PRIORITY_INFORMATION_x'Size use 32;
   for MEMORY_PRIORITY_INFORMATION_x'Alignment use 4;
   subtype MEMORY_PRIORITY_INFORMATION is MEMORY_PRIORITY_INFORMATION_x;
   type PMEMORY_PRIORITY_INFORMATION is access all MEMORY_PRIORITY_INFORMATION_x;
   function GetThreadInformation(
      hThread : HANDLE;
      ThreadInformationClass : THREAD_INFORMATION_CLASS;
      ThreadInformation : LPVOID;
      ThreadInformationSize : DWORD
   ) return BOOL;
   pragma import (Cpp,GetThreadInformation,"GetThreadInformation");
   function SetThreadInformation(
      hThread : HANDLE;
      ThreadInformationClass : THREAD_INFORMATION_CLASS;
      ThreadInformation : LPVOID;
      ThreadInformationSize : DWORD
   ) return BOOL;
   pragma import (Cpp,SetThreadInformation,"SetThreadInformation");
   type THREAD_POWER_THROTTLING_STATE_x is record
      Version : ULONG;
      ControlMask : ULONG;
      StateMask : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,THREAD_POWER_THROTTLING_STATE_x);
   for THREAD_POWER_THROTTLING_STATE_x use record
      Version at 0 range 0..31;
      ControlMask at 0 range 32..63;
      StateMask at 0 range 64..95;
   end record;
   for THREAD_POWER_THROTTLING_STATE_x'Size use 96;
   for THREAD_POWER_THROTTLING_STATE_x'Alignment use 4;
   subtype THREAD_POWER_THROTTLING_STATE is THREAD_POWER_THROTTLING_STATE_x;
   function IsProcessCritical(
      hProcess : HANDLE;
      Critical : PBOOL
   ) return BOOL;
   pragma import (Cpp,IsProcessCritical,"IsProcessCritical");
   function SetProtectedPolicy(
      PolicyGuid : LPCGUID;
      PolicyValue : ULONG_PTR;
      OldPolicyValue : PULONG_PTR
   ) return BOOL;
   pragma import (Cpp,SetProtectedPolicy,"SetProtectedPolicy");
   function QueryProtectedPolicy(
      PolicyGuid : LPCGUID;
      PolicyValue : PULONG_PTR
   ) return BOOL;
   pragma import (Cpp,QueryProtectedPolicy,"QueryProtectedPolicy");
   function SetThreadIdealProcessor(
      hThread : HANDLE;
      dwIdealProcessor : DWORD
   ) return DWORD;
   pragma import (Cpp,SetThreadIdealProcessor,"SetThreadIdealProcessor");
   type PROCESS_INFORMATION_CLASS_x is (
      ProcessMemoryPriority,
      ProcessMemoryExhaustionInfo,
      ProcessAppMemoryInfo,
      ProcessInPrivateInfo,
      ProcessPowerThrottling,
      ProcessReservedValue1,
      ProcessTelemetryCoverageInfo,
      ProcessProtectionLevelInfo,
      ProcessLeapSecondInfo,
      ProcessInformationClassMax
   );
   for PROCESS_INFORMATION_CLASS_x use (
      ProcessMemoryPriority => 0,
      ProcessMemoryExhaustionInfo => 1,
      ProcessAppMemoryInfo => 2,
      ProcessInPrivateInfo => 3,
      ProcessPowerThrottling => 4,
      ProcessReservedValue1 => 5,
      ProcessTelemetryCoverageInfo => 6,
      ProcessProtectionLevelInfo => 7,
      ProcessLeapSecondInfo => 8,
      ProcessInformationClassMax => 9
   );
   for PROCESS_INFORMATION_CLASS_x'Size use 32;
   subtype PROCESS_INFORMATION_CLASS is PROCESS_INFORMATION_CLASS_x;
   type APP_MEMORY_INFORMATION_x is record
      AvailableCommit : ULONG64;
      PrivateCommitUsage : ULONG64;
      PeakPrivateCommitUsage : ULONG64;
      TotalCommitUsage : ULONG64;
   end record;
   pragma Convention (C_Pass_By_Copy,APP_MEMORY_INFORMATION_x);
   for APP_MEMORY_INFORMATION_x use record
      AvailableCommit at 0 range 0..63;
      PrivateCommitUsage at 0 range 64..127;
      PeakPrivateCommitUsage at 0 range 128..191;
      TotalCommitUsage at 0 range 192..255;
   end record;
   for APP_MEMORY_INFORMATION_x'Size use 256;
   for APP_MEMORY_INFORMATION_x'Alignment use 8;
   subtype APP_MEMORY_INFORMATION is APP_MEMORY_INFORMATION_x;
   type PAPP_MEMORY_INFORMATION is access all APP_MEMORY_INFORMATION_x;
   type PROCESS_MEMORY_EXHAUSTION_TYPE_x is (
      PMETypeFailFastOnCommitFailure,
      PMETypeMax
   );
   for PROCESS_MEMORY_EXHAUSTION_TYPE_x use (
      PMETypeFailFastOnCommitFailure => 0,
      PMETypeMax => 1
   );
   for PROCESS_MEMORY_EXHAUSTION_TYPE_x'Size use 32;
   subtype PROCESS_MEMORY_EXHAUSTION_TYPE is PROCESS_MEMORY_EXHAUSTION_TYPE_x;
   type PPROCESS_MEMORY_EXHAUSTION_TYPE is access all PROCESS_MEMORY_EXHAUSTION_TYPE_x;
   type PROCESS_MEMORY_EXHAUSTION_INFO_x is record
      Version : USHORT;
      Reserved : USHORT;
      type_x : PROCESS_MEMORY_EXHAUSTION_TYPE;
      Value : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_MEMORY_EXHAUSTION_INFO_x);
   for PROCESS_MEMORY_EXHAUSTION_INFO_x use record
      Version at 0 range 0..15;
      Reserved at 0 range 16..31;
      type_x at 0 range 32..63;
      Value at 0 range 64..127;
   end record;
   for PROCESS_MEMORY_EXHAUSTION_INFO_x'Size use 128;
   for PROCESS_MEMORY_EXHAUSTION_INFO_x'Alignment use 8;
   subtype PROCESS_MEMORY_EXHAUSTION_INFO is PROCESS_MEMORY_EXHAUSTION_INFO_x;
   type PPROCESS_MEMORY_EXHAUSTION_INFO is access all PROCESS_MEMORY_EXHAUSTION_INFO_x;
   type PROCESS_POWER_THROTTLING_STATE_x is record
      Version : ULONG;
      ControlMask : ULONG;
      StateMask : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_POWER_THROTTLING_STATE_x);
   for PROCESS_POWER_THROTTLING_STATE_x use record
      Version at 0 range 0..31;
      ControlMask at 0 range 32..63;
      StateMask at 0 range 64..95;
   end record;
   for PROCESS_POWER_THROTTLING_STATE_x'Size use 96;
   for PROCESS_POWER_THROTTLING_STATE_x'Alignment use 4;
   subtype PROCESS_POWER_THROTTLING_STATE is PROCESS_POWER_THROTTLING_STATE_x;
   type PPROCESS_POWER_THROTTLING_STATE is access all PROCESS_POWER_THROTTLING_STATE_x;
   type PROCESS_PROTECTION_LEVEL_INFORMATION is record
      ProtectionLevel : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_PROTECTION_LEVEL_INFORMATION);
   for PROCESS_PROTECTION_LEVEL_INFORMATION use record
      ProtectionLevel at 0 range 0..31;
   end record;
   for PROCESS_PROTECTION_LEVEL_INFORMATION'Size use 32;
   for PROCESS_PROTECTION_LEVEL_INFORMATION'Alignment use 4;
   type PROCESS_LEAP_SECOND_INFO_x is record
      Flags : ULONG;
      Reserved : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,PROCESS_LEAP_SECOND_INFO_x);
   for PROCESS_LEAP_SECOND_INFO_x use record
      Flags at 0 range 0..31;
      Reserved at 0 range 32..63;
   end record;
   for PROCESS_LEAP_SECOND_INFO_x'Size use 64;
   for PROCESS_LEAP_SECOND_INFO_x'Alignment use 4;
   subtype PROCESS_LEAP_SECOND_INFO is PROCESS_LEAP_SECOND_INFO_x;
   type PPROCESS_LEAP_SECOND_INFO is access all PROCESS_LEAP_SECOND_INFO_x;
   function SetProcessInformation(
      hProcess : HANDLE;
      ProcessInformationClass : PROCESS_INFORMATION_CLASS;
      ProcessInformation : LPVOID;
      ProcessInformationSize : DWORD
   ) return BOOL;
   pragma import (Cpp,SetProcessInformation,"SetProcessInformation");
   function GetProcessInformation(
      hProcess : HANDLE;
      ProcessInformationClass : PROCESS_INFORMATION_CLASS;
      ProcessInformation : LPVOID;
      ProcessInformationSize : DWORD
   ) return BOOL;
   pragma import (Cpp,GetProcessInformation,"GetProcessInformation");
   function GetSystemCpuSetInformation(
      Information : PSYSTEM_CPU_SET_INFORMATION;
      BufferLength : ULONG;
      ReturnedLength : PULONG;
      Process : HANDLE;
      Flags : ULONG
   ) return BOOL;
   pragma import (Cpp,GetSystemCpuSetInformation,"GetSystemCpuSetInformation");
   function GetProcessDefaultCpuSets(
      Process : HANDLE;
      CpuSetIds : PULONG;
      CpuSetIdCount : ULONG;
      RequiredIdCount : PULONG
   ) return BOOL;
   pragma import (Cpp,GetProcessDefaultCpuSets,"GetProcessDefaultCpuSets");
   function SetProcessDefaultCpuSets(
      Process : HANDLE;
      CpuSetIds : access constant ULONG;
      CpuSetIdCount : ULONG
   ) return BOOL;
   pragma import (Cpp,SetProcessDefaultCpuSets,"SetProcessDefaultCpuSets");
   function GetThreadSelectedCpuSets(
      Thread : HANDLE;
      CpuSetIds : PULONG;
      CpuSetIdCount : ULONG;
      RequiredIdCount : PULONG
   ) return BOOL;
   pragma import (Cpp,GetThreadSelectedCpuSets,"GetThreadSelectedCpuSets");
   function SetThreadSelectedCpuSets(
      Thread : HANDLE;
      CpuSetIds : access constant ULONG;
      CpuSetIdCount : ULONG
   ) return BOOL;
   pragma import (Cpp,SetThreadSelectedCpuSets,"SetThreadSelectedCpuSets");
   function CreateProcessAsUserA(
      hToken : HANDLE;
      lpApplicationName : LPCSTR;
      lpCommandLine : LPSTR;
      lpProcessAttributes : LPSECURITY_ATTRIBUTES;
      lpThreadAttributes : LPSECURITY_ATTRIBUTES;
      bInheritHandles : BOOL;
      dwCreationFlags : DWORD;
      lpEnvironment : LPVOID;
      lpCurrentDirectory : LPCSTR;
      lpStartupInfo_x : LPSTARTUPINFOA;
      lpProcessInformation : LPPROCESS_INFORMATION
   ) return BOOL;
   pragma import (Cpp,CreateProcessAsUserA,"CreateProcessAsUserA");
   function GetProcessShutdownParameters(
      lpdwLevel : LPDWORD;
      lpdwFlags : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetProcessShutdownParameters,"GetProcessShutdownParameters");
   function SetThreadDescription(
      hThread : HANDLE;
      lpThreadDescription : PCWSTR
   ) return HRESULT;
   pragma import (Cpp,SetThreadDescription,"SetThreadDescription");
   function GetThreadDescription(
      hThread : HANDLE;
      ppszThreadDescription : access PWSTR
   ) return HRESULT;
   pragma import (Cpp,GetThreadDescription,"GetThreadDescription");
   -- #include <sysinfoapi.h>
   type Anonymous_Record_145 is record
      wProcessorArchitecture : WORD;
      wReserved : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_145);
   for Anonymous_Record_145 use record
      wProcessorArchitecture at 0 range 0..15;
      wReserved at 0 range 16..31;
   end record;
   for Anonymous_Record_145'Size use 32;
   for Anonymous_Record_145'Alignment use 2;
   type Anonymous_Record_144 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            dwOemId : DWORD;
         when others => 
            field_1 : Anonymous_Record_145;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_144);
   pragma Unchecked_Union (Anonymous_Record_144);
   for Anonymous_Record_144'Size use 32;
   for Anonymous_Record_144'Alignment use 4;
   type SYSTEM_INFO_x is record
      field_1 : Anonymous_Record_144;
      dwPageSize : DWORD;
      lpMinimumApplicationAddress : LPVOID;
      lpMaximumApplicationAddress : LPVOID;
      dwActiveProcessorMask : DWORD_PTR;
      dwNumberOfProcessors : DWORD;
      dwProcessorType : DWORD;
      dwAllocationGranularity : DWORD;
      wProcessorLevel : WORD;
      wProcessorRevision : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_INFO_x);
   for SYSTEM_INFO_x use record
      field_1 at 0 range 0..31;
      dwPageSize at 0 range 32..63;
      lpMinimumApplicationAddress at 0 range 64..127;
      lpMaximumApplicationAddress at 0 range 128..191;
      dwActiveProcessorMask at 0 range 192..255;
      dwNumberOfProcessors at 0 range 256..287;
      dwProcessorType at 0 range 288..319;
      dwAllocationGranularity at 0 range 320..351;
      wProcessorLevel at 0 range 352..367;
      wProcessorRevision at 0 range 368..383;
   end record;
   for SYSTEM_INFO_x'Size use 384;
   for SYSTEM_INFO_x'Alignment use 8;
   subtype SYSTEM_INFO is SYSTEM_INFO_x;
   type LPSYSTEM_INFO is access all SYSTEM_INFO_x;
   type MEMORYSTATUSEX_x is record
      dwLength : DWORD;
      dwMemoryLoad : DWORD;
      ullTotalPhys : DWORDLONG;
      ullAvailPhys : DWORDLONG;
      ullTotalPageFile : DWORDLONG;
      ullAvailPageFile : DWORDLONG;
      ullTotalVirtual : DWORDLONG;
      ullAvailVirtual : DWORDLONG;
      ullAvailExtendedVirtual : DWORDLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,MEMORYSTATUSEX_x);
   for MEMORYSTATUSEX_x use record
      dwLength at 0 range 0..31;
      dwMemoryLoad at 0 range 32..63;
      ullTotalPhys at 0 range 64..127;
      ullAvailPhys at 0 range 128..191;
      ullTotalPageFile at 0 range 192..255;
      ullAvailPageFile at 0 range 256..319;
      ullTotalVirtual at 0 range 320..383;
      ullAvailVirtual at 0 range 384..447;
      ullAvailExtendedVirtual at 0 range 448..511;
   end record;
   for MEMORYSTATUSEX_x'Size use 512;
   for MEMORYSTATUSEX_x'Alignment use 8;
   subtype MEMORYSTATUSEX is MEMORYSTATUSEX_x;
   type LPMEMORYSTATUSEX is access all MEMORYSTATUSEX_x;
   function GlobalMemoryStatusEx(
      lpBuffer : LPMEMORYSTATUSEX
   ) return BOOL;
   pragma import (Cpp,GlobalMemoryStatusEx,"GlobalMemoryStatusEx");
   procedure GetSystemInfo(
      lpSystemInfo : LPSYSTEM_INFO
   );
   pragma import (Cpp,GetSystemInfo,"GetSystemInfo");
   procedure GetSystemTime(
      lpSystemTime_x : LPSYSTEMTIME
   );
   pragma import (Cpp,GetSystemTime,"GetSystemTime");
   procedure GetSystemTimeAsFileTime(
      lpSystemTimeAsFileTime : LPFILETIME
   );
   pragma import (Cpp,GetSystemTimeAsFileTime,"GetSystemTimeAsFileTime");
   procedure GetLocalTime(
      lpSystemTime_x : LPSYSTEMTIME
   );
   pragma import (Cpp,GetLocalTime,"GetLocalTime");
   function IsUserCetAvailableInEnvironment(
      UserCetEnvironment : DWORD
   ) return BOOL;
   pragma import (Cpp,IsUserCetAvailableInEnvironment,"IsUserCetAvailableInEnvironment");
   function GetSystemLeapSecondInformation(
      Enabled : PBOOL;
      Flags : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetSystemLeapSecondInformation,"GetSystemLeapSecondInformation");
   function GetVersion return DWORD;
   pragma import (Cpp,GetVersion,"GetVersion");
   function SetLocalTime(
      lpSystemTime_x : access constant SYSTEMTIME
   ) return BOOL;
   pragma import (Cpp,SetLocalTime,"SetLocalTime");
   function GetTickCount return DWORD;
   pragma import (Cpp,GetTickCount,"GetTickCount");
   function GetTickCount64 return ULONGLONG;
   pragma import (Cpp,GetTickCount64,"GetTickCount64");
   function GetSystemTimeAdjustment(
      lpTimeAdjustment : PDWORD;
      lpTimeIncrement : PDWORD;
      lpTimeAdjustmentDisabled : PBOOL
   ) return BOOL;
   pragma import (Cpp,GetSystemTimeAdjustment,"GetSystemTimeAdjustment");
   function GetSystemTimeAdjustmentPrecise(
      lpTimeAdjustment : PDWORD64;
      lpTimeIncrement : PDWORD64;
      lpTimeAdjustmentDisabled : PBOOL
   ) return BOOL;
   pragma import (Cpp,GetSystemTimeAdjustmentPrecise,"GetSystemTimeAdjustmentPrecise");
   function GetSystemDirectoryA(
      lpBuffer : LPSTR;
      uSize : UINT
   ) return UINT;
   pragma import (Cpp,GetSystemDirectoryA,"GetSystemDirectoryA");
   function GetSystemDirectoryW(
      lpBuffer : LPWSTR;
      uSize : UINT
   ) return UINT;
   pragma import (Cpp,GetSystemDirectoryW,"GetSystemDirectoryW");
   function GetWindowsDirectoryA(
      lpBuffer : LPSTR;
      uSize : UINT
   ) return UINT;
   pragma import (Cpp,GetWindowsDirectoryA,"GetWindowsDirectoryA");
   function GetWindowsDirectoryW(
      lpBuffer : LPWSTR;
      uSize : UINT
   ) return UINT;
   pragma import (Cpp,GetWindowsDirectoryW,"GetWindowsDirectoryW");
   function GetSystemWindowsDirectoryA(
      lpBuffer : LPSTR;
      uSize : UINT
   ) return UINT;
   pragma import (Cpp,GetSystemWindowsDirectoryA,"GetSystemWindowsDirectoryA");
   function GetSystemWindowsDirectoryW(
      lpBuffer : LPWSTR;
      uSize : UINT
   ) return UINT;
   pragma import (Cpp,GetSystemWindowsDirectoryW,"GetSystemWindowsDirectoryW");
   type COMPUTER_NAME_FORMAT_x is (
      ComputerNameNetBIOS,
      ComputerNameDnsHostname,
      ComputerNameDnsDomain,
      ComputerNameDnsFullyQualified,
      ComputerNamePhysicalNetBIOS,
      ComputerNamePhysicalDnsHostname,
      ComputerNamePhysicalDnsDomain,
      ComputerNamePhysicalDnsFullyQualified,
      ComputerNameMax
   );
   for COMPUTER_NAME_FORMAT_x use (
      ComputerNameNetBIOS => 0,
      ComputerNameDnsHostname => 1,
      ComputerNameDnsDomain => 2,
      ComputerNameDnsFullyQualified => 3,
      ComputerNamePhysicalNetBIOS => 4,
      ComputerNamePhysicalDnsHostname => 5,
      ComputerNamePhysicalDnsDomain => 6,
      ComputerNamePhysicalDnsFullyQualified => 7,
      ComputerNameMax => 8
   );
   for COMPUTER_NAME_FORMAT_x'Size use 32;
   subtype COMPUTER_NAME_FORMAT is COMPUTER_NAME_FORMAT_x;
   function GetComputerNameExA(
      NameType : COMPUTER_NAME_FORMAT;
      lpBuffer : LPSTR;
      nSize : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetComputerNameExA,"GetComputerNameExA");
   function GetComputerNameExW(
      NameType : COMPUTER_NAME_FORMAT;
      lpBuffer : LPWSTR;
      nSize : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetComputerNameExW,"GetComputerNameExW");
   function SetComputerNameExW(
      NameType : COMPUTER_NAME_FORMAT;
      lpBuffer : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetComputerNameExW,"SetComputerNameExW");
   function SetSystemTime(
      lpSystemTime_x : access constant SYSTEMTIME
   ) return BOOL;
   pragma import (Cpp,SetSystemTime,"SetSystemTime");
   function GetVersionExA(
      lpVersionInformation : LPOSVERSIONINFOA
   ) return BOOL;
   pragma import (Cpp,GetVersionExA,"GetVersionExA");
   function GetVersionExW(
      lpVersionInformation : LPOSVERSIONINFOW
   ) return BOOL;
   pragma import (Cpp,GetVersionExW,"GetVersionExW");
   function GetLogicalProcessorInformation(
      Buffer : PSYSTEM_LOGICAL_PROCESSOR_INFORMATION;
      ReturnedLength : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetLogicalProcessorInformation,"GetLogicalProcessorInformation");
   function GetLogicalProcessorInformationEx(
      RelationshipType : LOGICAL_PROCESSOR_RELATIONSHIP;
      Buffer : PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX;
      ReturnedLength : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetLogicalProcessorInformationEx,"GetLogicalProcessorInformationEx");
   procedure GetNativeSystemInfo(
      lpSystemInfo : LPSYSTEM_INFO
   );
   pragma import (Cpp,GetNativeSystemInfo,"GetNativeSystemInfo");
   procedure GetSystemTimePreciseAsFileTime(
      lpSystemTimeAsFileTime : LPFILETIME
   );
   pragma import (Cpp,GetSystemTimePreciseAsFileTime,"GetSystemTimePreciseAsFileTime");
   function GetProductInfo(
      dwOSMajorVersion : DWORD;
      dwOSMinorVersion : DWORD;
      dwSpMajorVersion : DWORD;
      dwSpMinorVersion : DWORD;
      pdwReturnedProductType : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetProductInfo,"GetProductInfo");
   function VerSetConditionMask_x(
      ConditionMask : ULONGLONG;
      TypeMask : ULONG;
      Condition : UCHAR
   ) return ULONGLONG;
   pragma import (Cpp,VerSetConditionMask_x,"VerSetConditionMask");
   function GetOsSafeBootMode(
      Flags : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetOsSafeBootMode,"GetOsSafeBootMode");
   function EnumSystemFirmwareTables(
      FirmwareTableProviderSignature : DWORD;
      pFirmwareTableEnumBuffer : PVOID;
      BufferSize : DWORD
   ) return UINT;
   pragma import (Cpp,EnumSystemFirmwareTables,"EnumSystemFirmwareTables");
   function GetSystemFirmwareTable(
      FirmwareTableProviderSignature : DWORD;
      FirmwareTableID : DWORD;
      pFirmwareTableBuffer : PVOID;
      BufferSize : DWORD
   ) return UINT;
   pragma import (Cpp,GetSystemFirmwareTable,"GetSystemFirmwareTable");
   function DnsHostnameToComputerNameExW(
      Hostname : LPCWSTR;
      ComputerName : LPWSTR;
      nSize : LPDWORD
   ) return BOOL;
   pragma import (Cpp,DnsHostnameToComputerNameExW,"DnsHostnameToComputerNameExW");
   function GetPhysicallyInstalledSystemMemory(
      TotalMemoryInKilobytes : PULONGLONG
   ) return BOOL;
   pragma import (Cpp,GetPhysicallyInstalledSystemMemory,"GetPhysicallyInstalledSystemMemory");
   function SetComputerNameEx2W(
      NameType : COMPUTER_NAME_FORMAT;
      Flags : DWORD;
      lpBuffer : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetComputerNameEx2W,"SetComputerNameEx2W");
   function SetSystemTimeAdjustment(
      dwTimeAdjustment : DWORD;
      bTimeAdjustmentDisabled : BOOL
   ) return BOOL;
   pragma import (Cpp,SetSystemTimeAdjustment,"SetSystemTimeAdjustment");
   function SetSystemTimeAdjustmentPrecise(
      dwTimeAdjustment : DWORD64;
      bTimeAdjustmentDisabled : BOOL
   ) return BOOL;
   pragma import (Cpp,SetSystemTimeAdjustmentPrecise,"SetSystemTimeAdjustmentPrecise");
   function InstallELAMCertificateInfo(
      ELAMFile : HANDLE
   ) return BOOL;
   pragma import (Cpp,InstallELAMCertificateInfo,"InstallELAMCertificateInfo");
   function GetProcessorSystemCycleTime(
      Group : USHORT;
      Buffer : PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION;
      ReturnedLength : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetProcessorSystemCycleTime,"GetProcessorSystemCycleTime");
   function GetOsManufacturingMode(
      pbEnabled : PBOOL
   ) return BOOL;
   pragma import (Cpp,GetOsManufacturingMode,"GetOsManufacturingMode");
   function GetIntegratedDisplaySize(
      sizeInInches : access Long_Float
   ) return HRESULT;
   pragma import (Cpp,GetIntegratedDisplaySize,"GetIntegratedDisplaySize");
   function SetComputerNameA(
      lpComputerName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetComputerNameA,"SetComputerNameA");
   function SetComputerNameW(
      lpComputerName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetComputerNameW,"SetComputerNameW");
   function SetComputerNameExA(
      NameType : COMPUTER_NAME_FORMAT;
      lpBuffer : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetComputerNameExA,"SetComputerNameExA");
   -- #include <memoryapi.h>
   procedure VirtualAlloc(
      lpAddress : LPVOID;
      dwSize : SIZE_T;
      flAllocationType : DWORD;
      flProtect : DWORD
   );
   pragma import (Cpp,VirtualAlloc,"VirtualAlloc");
   function VirtualProtect(
      lpAddress : LPVOID;
      dwSize : SIZE_T;
      flNewProtect : DWORD;
      lpflOldProtect : PDWORD
   ) return BOOL;
   pragma import (Cpp,VirtualProtect,"VirtualProtect");
   function VirtualFree(
      lpAddress : LPVOID;
      dwSize : SIZE_T;
      dwFreeType : DWORD
   ) return BOOL;
   pragma import (Cpp,VirtualFree,"VirtualFree");
   function VirtualQuery(
      lpAddress : LPCVOID;
      lpBuffer : PMEMORY_BASIC_INFORMATION;
      dwLength : SIZE_T
   ) return SIZE_T;
   pragma import (Cpp,VirtualQuery,"VirtualQuery");
   procedure VirtualAllocEx(
      hProcess : HANDLE;
      lpAddress : LPVOID;
      dwSize : SIZE_T;
      flAllocationType : DWORD;
      flProtect : DWORD
   );
   pragma import (Cpp,VirtualAllocEx,"VirtualAllocEx");
   function VirtualProtectEx(
      hProcess : HANDLE;
      lpAddress : LPVOID;
      dwSize : SIZE_T;
      flNewProtect : DWORD;
      lpflOldProtect : PDWORD
   ) return BOOL;
   pragma import (Cpp,VirtualProtectEx,"VirtualProtectEx");
   function VirtualQueryEx(
      hProcess : HANDLE;
      lpAddress : LPCVOID;
      lpBuffer : PMEMORY_BASIC_INFORMATION;
      dwLength : SIZE_T
   ) return SIZE_T;
   pragma import (Cpp,VirtualQueryEx,"VirtualQueryEx");
   function ReadProcessMemory(
      hProcess : HANDLE;
      lpBaseAddress : LPCVOID;
      lpBuffer : LPVOID;
      nSize : SIZE_T;
      lpNumberOfBytesRead : access SIZE_T
   ) return BOOL;
   pragma import (Cpp,ReadProcessMemory,"ReadProcessMemory");
   function WriteProcessMemory(
      hProcess : HANDLE;
      lpBaseAddress : LPVOID;
      lpBuffer : LPCVOID;
      nSize : SIZE_T;
      lpNumberOfBytesWritten : access SIZE_T
   ) return BOOL;
   pragma import (Cpp,WriteProcessMemory,"WriteProcessMemory");
   function CreateFileMappingW(
      hFile_x : HANDLE;
      lpFileMappingAttributes : LPSECURITY_ATTRIBUTES;
      flProtect : DWORD;
      dwMaximumSizeHigh : DWORD;
      dwMaximumSizeLow : DWORD;
      lpName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,CreateFileMappingW,"CreateFileMappingW");
   function OpenFileMappingW(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      lpName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,OpenFileMappingW,"OpenFileMappingW");
   procedure MapViewOfFile(
      hFileMappingObject : HANDLE;
      dwDesiredAccess : DWORD;
      dwFileOffsetHigh : DWORD;
      dwFileOffsetLow : DWORD;
      dwNumberOfBytesToMap : SIZE_T
   );
   pragma import (Cpp,MapViewOfFile,"MapViewOfFile");
   procedure MapViewOfFileEx(
      hFileMappingObject : HANDLE;
      dwDesiredAccess : DWORD;
      dwFileOffsetHigh : DWORD;
      dwFileOffsetLow : DWORD;
      dwNumberOfBytesToMap : SIZE_T;
      lpBaseAddress : LPVOID
   );
   pragma import (Cpp,MapViewOfFileEx,"MapViewOfFileEx");
   function VirtualFreeEx(
      hProcess : HANDLE;
      lpAddress : LPVOID;
      dwSize : SIZE_T;
      dwFreeType : DWORD
   ) return BOOL;
   pragma import (Cpp,VirtualFreeEx,"VirtualFreeEx");
   function FlushViewOfFile(
      lpBaseAddress : LPCVOID;
      dwNumberOfBytesToFlush : SIZE_T
   ) return BOOL;
   pragma import (Cpp,FlushViewOfFile,"FlushViewOfFile");
   function UnmapViewOfFile(
      lpBaseAddress : LPCVOID
   ) return BOOL;
   pragma import (Cpp,UnmapViewOfFile,"UnmapViewOfFile");
   function GetLargePageMinimum return SIZE_T;
   pragma import (Cpp,GetLargePageMinimum,"GetLargePageMinimum");
   function GetProcessWorkingSetSizeEx(
      hProcess : HANDLE;
      lpMinimumWorkingSetSize : PSIZE_T;
      lpMaximumWorkingSetSize : PSIZE_T;
      Flags : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetProcessWorkingSetSizeEx,"GetProcessWorkingSetSizeEx");
   function SetProcessWorkingSetSizeEx(
      hProcess : HANDLE;
      dwMinimumWorkingSetSize : SIZE_T;
      dwMaximumWorkingSetSize : SIZE_T;
      Flags : DWORD
   ) return BOOL;
   pragma import (Cpp,SetProcessWorkingSetSizeEx,"SetProcessWorkingSetSizeEx");
   function VirtualLock(
      lpAddress : LPVOID;
      dwSize : SIZE_T
   ) return BOOL;
   pragma import (Cpp,VirtualLock,"VirtualLock");
   function VirtualUnlock(
      lpAddress : LPVOID;
      dwSize : SIZE_T
   ) return BOOL;
   pragma import (Cpp,VirtualUnlock,"VirtualUnlock");
   function GetWriteWatch(
      dwFlags : DWORD;
      lpBaseAddress : PVOID;
      dwRegionSize : SIZE_T;
      lpAddresses : access PVOID;
      lpdwCount : access ULONG_PTR;
      lpdwGranularity : LPDWORD
   ) return UINT;
   pragma import (Cpp,GetWriteWatch,"GetWriteWatch");
   function ResetWriteWatch(
      lpBaseAddress : LPVOID;
      dwRegionSize : SIZE_T
   ) return UINT;
   pragma import (Cpp,ResetWriteWatch,"ResetWriteWatch");
   type MEMORY_RESOURCE_NOTIFICATION_TYPE_x is (
      LowMemoryResourceNotification,
      HighMemoryResourceNotification
   );
   for MEMORY_RESOURCE_NOTIFICATION_TYPE_x use (
      LowMemoryResourceNotification => 0,
      HighMemoryResourceNotification => 1
   );
   for MEMORY_RESOURCE_NOTIFICATION_TYPE_x'Size use 32;
   subtype MEMORY_RESOURCE_NOTIFICATION_TYPE is MEMORY_RESOURCE_NOTIFICATION_TYPE_x;
   function CreateMemoryResourceNotification(
      NotificationType : MEMORY_RESOURCE_NOTIFICATION_TYPE
   ) return HANDLE;
   pragma import (Cpp,CreateMemoryResourceNotification,"CreateMemoryResourceNotification");
   function QueryMemoryResourceNotification(
      ResourceNotificationHandle : HANDLE;
      ResourceState : PBOOL
   ) return BOOL;
   pragma import (Cpp,QueryMemoryResourceNotification,"QueryMemoryResourceNotification");
   function GetSystemFileCacheSize(
      lpMinimumFileCacheSize : PSIZE_T;
      lpMaximumFileCacheSize : PSIZE_T;
      lpFlags : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetSystemFileCacheSize,"GetSystemFileCacheSize");
   function SetSystemFileCacheSize(
      MinimumFileCacheSize : SIZE_T;
      MaximumFileCacheSize : SIZE_T;
      Flags : DWORD
   ) return BOOL;
   pragma import (Cpp,SetSystemFileCacheSize,"SetSystemFileCacheSize");
   function CreateFileMappingNumaW(
      hFile_x : HANDLE;
      lpFileMappingAttributes : LPSECURITY_ATTRIBUTES;
      flProtect : DWORD;
      dwMaximumSizeHigh : DWORD;
      dwMaximumSizeLow : DWORD;
      lpName : LPCWSTR;
      nndPreferred : DWORD
   ) return HANDLE;
   pragma import (Cpp,CreateFileMappingNumaW,"CreateFileMappingNumaW");
   type WIN32_MEMORY_RANGE_ENTRY_x is record
      VirtualAddress : PVOID;
      NumberOfBytes : SIZE_T;
   end record;
   pragma Convention (C_Pass_By_Copy,WIN32_MEMORY_RANGE_ENTRY_x);
   for WIN32_MEMORY_RANGE_ENTRY_x use record
      VirtualAddress at 0 range 0..63;
      NumberOfBytes at 0 range 64..127;
   end record;
   for WIN32_MEMORY_RANGE_ENTRY_x'Size use 128;
   for WIN32_MEMORY_RANGE_ENTRY_x'Alignment use 8;
   subtype WIN32_MEMORY_RANGE_ENTRY is WIN32_MEMORY_RANGE_ENTRY_x;
   type PWIN32_MEMORY_RANGE_ENTRY is access all WIN32_MEMORY_RANGE_ENTRY_x;
   function PrefetchVirtualMemory(
      hProcess : HANDLE;
      NumberOfEntries : ULONG_PTR;
      VirtualAddresses : PWIN32_MEMORY_RANGE_ENTRY;
      Flags : ULONG
   ) return BOOL;
   pragma import (Cpp,PrefetchVirtualMemory,"PrefetchVirtualMemory");
   function CreateFileMappingFromApp(
      hFile_x : HANDLE;
      SecurityAttributes : PSECURITY_ATTRIBUTES;
      PageProtection : ULONG;
      MaximumSize : ULONG64;
      Name : PCWSTR
   ) return HANDLE;
   pragma import (Cpp,CreateFileMappingFromApp,"CreateFileMappingFromApp");
   procedure MapViewOfFileFromApp(
      hFileMappingObject : HANDLE;
      DesiredAccess : ULONG;
      FileOffset : ULONG64;
      NumberOfBytesToMap : SIZE_T
   );
   pragma import (Cpp,MapViewOfFileFromApp,"MapViewOfFileFromApp");
   function UnmapViewOfFileEx(
      BaseAddress : PVOID;
      UnmapFlags : ULONG
   ) return BOOL;
   pragma import (Cpp,UnmapViewOfFileEx,"UnmapViewOfFileEx");
   function AllocateUserPhysicalPages(
      hProcess : HANDLE;
      NumberOfPages : PULONG_PTR;
      PageArray : PULONG_PTR
   ) return BOOL;
   pragma import (Cpp,AllocateUserPhysicalPages,"AllocateUserPhysicalPages");
   function FreeUserPhysicalPages(
      hProcess : HANDLE;
      NumberOfPages : PULONG_PTR;
      PageArray : PULONG_PTR
   ) return BOOL;
   pragma import (Cpp,FreeUserPhysicalPages,"FreeUserPhysicalPages");
   function MapUserPhysicalPages(
      VirtualAddress : PVOID;
      NumberOfPages : ULONG_PTR;
      PageArray : PULONG_PTR
   ) return BOOL;
   pragma import (Cpp,MapUserPhysicalPages,"MapUserPhysicalPages");
   function AllocateUserPhysicalPagesNuma(
      hProcess : HANDLE;
      NumberOfPages : PULONG_PTR;
      PageArray : PULONG_PTR;
      nndPreferred : DWORD
   ) return BOOL;
   pragma import (Cpp,AllocateUserPhysicalPagesNuma,"AllocateUserPhysicalPagesNuma");
   procedure VirtualAllocExNuma(
      hProcess : HANDLE;
      lpAddress : LPVOID;
      dwSize : SIZE_T;
      flAllocationType : DWORD;
      flProtect : DWORD;
      nndPreferred : DWORD
   );
   pragma import (Cpp,VirtualAllocExNuma,"VirtualAllocExNuma");
   function GetMemoryErrorHandlingCapabilities(
      Capabilities : PULONG
   ) return BOOL;
   pragma import (Cpp,GetMemoryErrorHandlingCapabilities,"GetMemoryErrorHandlingCapabilities");
   subtype BAD_MEMORY_CALLBACK_ROUTINE is System.Address; -- [Note - CXType_FunctionProto] Profile - void ()
   type PBAD_MEMORY_CALLBACK_ROUTINE is access procedure ; -- void ()
   pragma Convention(C,PBAD_MEMORY_CALLBACK_ROUTINE);
   procedure RegisterBadMemoryNotification(
      Callback : PBAD_MEMORY_CALLBACK_ROUTINE
   );
   pragma import (Cpp,RegisterBadMemoryNotification,"RegisterBadMemoryNotification");
   function UnregisterBadMemoryNotification(
      RegistrationHandle : PVOID
   ) return BOOL;
   pragma import (Cpp,UnregisterBadMemoryNotification,"UnregisterBadMemoryNotification");
   type OFFER_PRIORITY is (
      VmOfferPriorityVeryLow,
      VmOfferPriorityLow,
      VmOfferPriorityBelowNormal,
      VmOfferPriorityNormal
   );
   for OFFER_PRIORITY use (
      VmOfferPriorityVeryLow => 1,
      VmOfferPriorityLow => 2,
      VmOfferPriorityBelowNormal => 3,
      VmOfferPriorityNormal => 4
   );
   for OFFER_PRIORITY'Size use 32;
   function OfferVirtualMemory(
      VirtualAddress : PVOID;
      Size_x : SIZE_T;
      Priority : OFFER_PRIORITY
   ) return DWORD;
   pragma import (Cpp,OfferVirtualMemory,"OfferVirtualMemory");
   function ReclaimVirtualMemory(
      VirtualAddress : access Void;
      Size_x : SIZE_T
   ) return DWORD;
   pragma import (Cpp,ReclaimVirtualMemory,"ReclaimVirtualMemory");
   function DiscardVirtualMemory(
      VirtualAddress : PVOID;
      Size_x : SIZE_T
   ) return DWORD;
   pragma import (Cpp,DiscardVirtualMemory,"DiscardVirtualMemory");
   function SetProcessValidCallTargets(
      hProcess : HANDLE;
      VirtualAddress : PVOID;
      RegionSize : SIZE_T;
      NumberOfOffsets : ULONG;
      OffsetInformation : PCFG_CALL_TARGET_INFO
   ) return BOOL;
   pragma import (Cpp,SetProcessValidCallTargets,"SetProcessValidCallTargets");
   function SetProcessValidCallTargetsForMappedView(
      Process : HANDLE;
      VirtualAddress : PVOID;
      RegionSize : SIZE_T;
      NumberOfOffsets : ULONG;
      OffsetInformation : PCFG_CALL_TARGET_INFO;
      Section : HANDLE;
      ExpectedFileOffset : ULONG64
   ) return BOOL;
   pragma import (Cpp,SetProcessValidCallTargetsForMappedView,"SetProcessValidCallTargetsForMappedView");
   procedure VirtualAllocFromApp(
      BaseAddress : PVOID;
      Size_x : SIZE_T;
      AllocationType : ULONG;
      Protection : ULONG
   );
   pragma import (Cpp,VirtualAllocFromApp,"VirtualAllocFromApp");
   function VirtualProtectFromApp(
      Address : PVOID;
      Size_x : SIZE_T;
      NewProtection : ULONG;
      OldProtection : PULONG
   ) return BOOL;
   pragma import (Cpp,VirtualProtectFromApp,"VirtualProtectFromApp");
   function OpenFileMappingFromApp(
      DesiredAccess : ULONG;
      InheritHandle : BOOL;
      Name : PCWSTR
   ) return HANDLE;
   pragma import (Cpp,OpenFileMappingFromApp,"OpenFileMappingFromApp");
   type WIN32_MEMORY_INFORMATION_CLASS is (
      MemoryRegionInfo
   );
   for WIN32_MEMORY_INFORMATION_CLASS use (
      MemoryRegionInfo => 0
   );
   for WIN32_MEMORY_INFORMATION_CLASS'Size use 32;
   type Anonymous_Record_147 is record
      private_x : Interfaces.C.Extensions.Unsigned_1; -- bit field
      MappedDataFile : Interfaces.C.Extensions.Unsigned_1; -- bit field
      MappedImage : Interfaces.C.Extensions.Unsigned_1; -- bit field
      MappedPageFile : Interfaces.C.Extensions.Unsigned_1; -- bit field
      MappedPhysical : Interfaces.C.Extensions.Unsigned_1; -- bit field
      DirectMapped : Interfaces.C.Extensions.Unsigned_1; -- bit field
      Reserved : Interfaces.C.Extensions.Unsigned_26; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_147);
   for Anonymous_Record_147 use record
      private_x at 0 range 0..0;
      MappedDataFile at 0 range 1..1;
      MappedImage at 0 range 2..2;
      MappedPageFile at 0 range 3..3;
      MappedPhysical at 0 range 4..4;
      DirectMapped at 0 range 5..5;
      Reserved at 0 range 6..31;
   end record;
   for Anonymous_Record_147'Size use 32;
   for Anonymous_Record_147'Alignment use 4;
   type Anonymous_Record_146 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Flags : ULONG;
         when others => 
            field_1 : Anonymous_Record_147;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_146);
   pragma Unchecked_Union (Anonymous_Record_146);
   for Anonymous_Record_146'Size use 32;
   for Anonymous_Record_146'Alignment use 4;
   type WIN32_MEMORY_REGION_INFORMATION is record
      AllocationBase : PVOID;
      AllocationProtect : ULONG;
      field_1 : Anonymous_Record_146;
      RegionSize : SIZE_T;
      CommitSize : SIZE_T;
   end record;
   pragma Convention (C_Pass_By_Copy,WIN32_MEMORY_REGION_INFORMATION);
   for WIN32_MEMORY_REGION_INFORMATION use record
      AllocationBase at 0 range 0..63;
      AllocationProtect at 0 range 64..95;
      field_1 at 0 range 96..127;
      RegionSize at 0 range 128..191;
      CommitSize at 0 range 192..255;
   end record;
   for WIN32_MEMORY_REGION_INFORMATION'Size use 256;
   for WIN32_MEMORY_REGION_INFORMATION'Alignment use 8;
   function QueryVirtualMemoryInformation(
      Process : HANDLE;
      VirtualAddress : access Void;
      MemoryInformationClass : WIN32_MEMORY_INFORMATION_CLASS;
      MemoryInformation : PVOID;
      MemoryInformationSize : SIZE_T;
      ReturnSize : PSIZE_T
   ) return BOOL;
   pragma import (Cpp,QueryVirtualMemoryInformation,"QueryVirtualMemoryInformation");
   procedure MapViewOfFileNuma2(
      FileMappingHandle : HANDLE;
      ProcessHandle : HANDLE;
      Offset : ULONG64;
      BaseAddress : PVOID;
      ViewSize : SIZE_T;
      AllocationType : ULONG;
      PageProtection : ULONG;
      PreferredNode : ULONG
   );
   pragma import (Cpp,MapViewOfFileNuma2,"MapViewOfFileNuma2");
   -- MapViewOfFile2(); -- inlined function not supported
   function UnmapViewOfFile2(
      Process : HANDLE;
      BaseAddress : PVOID;
      UnmapFlags : ULONG
   ) return BOOL;
   pragma import (Cpp,UnmapViewOfFile2,"UnmapViewOfFile2");
   function VirtualUnlockEx(
      Process : HANDLE;
      Address : LPVOID;
      Size_x : SIZE_T
   ) return BOOL;
   pragma import (Cpp,VirtualUnlockEx,"VirtualUnlockEx");
   procedure VirtualAlloc2(
      Process : HANDLE;
      BaseAddress : PVOID;
      Size_x : SIZE_T;
      AllocationType : ULONG;
      PageProtection : ULONG;
      ExtendedParameters : access MEM_EXTENDED_PARAMETER;
      ParameterCount : ULONG
   );
   pragma import (Cpp,VirtualAlloc2,"VirtualAlloc2");
   procedure MapViewOfFile3(
      FileMapping : HANDLE;
      Process : HANDLE;
      BaseAddress : PVOID;
      Offset : ULONG64;
      ViewSize : SIZE_T;
      AllocationType : ULONG;
      PageProtection : ULONG;
      ExtendedParameters : access MEM_EXTENDED_PARAMETER;
      ParameterCount : ULONG
   );
   pragma import (Cpp,MapViewOfFile3,"MapViewOfFile3");
   procedure VirtualAlloc2FromApp(
      Process : HANDLE;
      BaseAddress : PVOID;
      Size_x : SIZE_T;
      AllocationType : ULONG;
      PageProtection : ULONG;
      ExtendedParameters : access MEM_EXTENDED_PARAMETER;
      ParameterCount : ULONG
   );
   pragma import (Cpp,VirtualAlloc2FromApp,"VirtualAlloc2FromApp");
   procedure MapViewOfFile3FromApp(
      FileMapping : HANDLE;
      Process : HANDLE;
      BaseAddress : PVOID;
      Offset : ULONG64;
      ViewSize : SIZE_T;
      AllocationType : ULONG;
      PageProtection : ULONG;
      ExtendedParameters : access MEM_EXTENDED_PARAMETER;
      ParameterCount : ULONG
   );
   pragma import (Cpp,MapViewOfFile3FromApp,"MapViewOfFile3FromApp");
   function CreateFileMapping2(
      File : HANDLE;
      SecurityAttributes : access SECURITY_ATTRIBUTES;
      DesiredAccess : ULONG;
      PageProtection : ULONG;
      AllocationAttributes : ULONG;
      MaximumSize : ULONG64;
      Name : PCWSTR;
      ExtendedParameters : access MEM_EXTENDED_PARAMETER;
      ParameterCount : ULONG
   ) return HANDLE;
   pragma import (Cpp,CreateFileMapping2,"CreateFileMapping2");
   -- #include <enclaveapi.h>
   function IsEnclaveTypeSupported(
      flEnclaveType : DWORD
   ) return BOOL;
   pragma import (Cpp,IsEnclaveTypeSupported,"IsEnclaveTypeSupported");
   procedure CreateEnclave(
      hProcess : HANDLE;
      lpAddress : LPVOID;
      dwSize : SIZE_T;
      dwInitialCommitment : SIZE_T;
      flEnclaveType : DWORD;
      lpEnclaveInformation : LPCVOID;
      dwInfoLength : DWORD;
      lpEnclaveError : LPDWORD
   );
   pragma import (Cpp,CreateEnclave,"CreateEnclave");
   function LoadEnclaveData(
      hProcess : HANDLE;
      lpAddress : LPVOID;
      lpBuffer : LPCVOID;
      nSize : SIZE_T;
      flProtect : DWORD;
      lpPageInformation : LPCVOID;
      dwInfoLength : DWORD;
      lpNumberOfBytesWritten : PSIZE_T;
      lpEnclaveError : LPDWORD
   ) return BOOL;
   pragma import (Cpp,LoadEnclaveData,"LoadEnclaveData");
   function InitializeEnclave(
      hProcess : HANDLE;
      lpAddress : LPVOID;
      lpEnclaveInformation : LPCVOID;
      dwInfoLength : DWORD;
      lpEnclaveError : LPDWORD
   ) return BOOL;
   pragma import (Cpp,InitializeEnclave,"InitializeEnclave");
   function LoadEnclaveImageA(
      lpEnclaveAddress : LPVOID;
      lpImageName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,LoadEnclaveImageA,"LoadEnclaveImageA");
   function LoadEnclaveImageW(
      lpEnclaveAddress : LPVOID;
      lpImageName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,LoadEnclaveImageW,"LoadEnclaveImageW");
   function CallEnclave(
      lpRoutine : LPENCLAVE_ROUTINE;
      lpParameter : LPVOID;
      fWaitForThread : BOOL;
      lpReturnValue : access LPVOID
   ) return BOOL;
   pragma import (Cpp,CallEnclave,"CallEnclave");
   function TerminateEnclave(
      lpAddress : LPVOID;
      fWait : BOOL
   ) return BOOL;
   pragma import (Cpp,TerminateEnclave,"TerminateEnclave");
   function DeleteEnclave(
      lpAddress : LPVOID
   ) return BOOL;
   pragma import (Cpp,DeleteEnclave,"DeleteEnclave");
   -- #include <threadpoollegacyapiset.h>
   function QueueUserWorkItem(
      function_x : LPTHREAD_START_ROUTINE;
      Context_x : PVOID;
      Flags : ULONG
   ) return BOOL;
   pragma import (Cpp,QueueUserWorkItem,"QueueUserWorkItem");
   function UnregisterWaitEx(
      WaitHandle : HANDLE;
      CompletionEvent : HANDLE
   ) return BOOL;
   pragma import (Cpp,UnregisterWaitEx,"UnregisterWaitEx");
   function CreateTimerQueue return HANDLE;
   pragma import (Cpp,CreateTimerQueue,"CreateTimerQueue");
   function CreateTimerQueueTimer(
      phNewTimer : PHANDLE;
      TimerQueue : HANDLE;
      Callback : WAITORTIMERCALLBACK;
      Parameter : PVOID;
      DueTime : DWORD;
      Period : DWORD;
      Flags : ULONG
   ) return BOOL;
   pragma import (Cpp,CreateTimerQueueTimer,"CreateTimerQueueTimer");
   function ChangeTimerQueueTimer(
      TimerQueue : HANDLE;
      Timer : HANDLE;
      DueTime : ULONG;
      Period : ULONG
   ) return BOOL;
   pragma import (Cpp,ChangeTimerQueueTimer,"ChangeTimerQueueTimer");
   function DeleteTimerQueueTimer(
      TimerQueue : HANDLE;
      Timer : HANDLE;
      CompletionEvent : HANDLE
   ) return BOOL;
   pragma import (Cpp,DeleteTimerQueueTimer,"DeleteTimerQueueTimer");
   function DeleteTimerQueueEx(
      TimerQueue : HANDLE;
      CompletionEvent : HANDLE
   ) return BOOL;
   pragma import (Cpp,DeleteTimerQueueEx,"DeleteTimerQueueEx");
   -- #include <threadpoolapiset.h>
   type PTP_WIN32_IO_CALLBACK is access procedure (p1 : PTP_CALLBACK_INSTANCE ; p2 : PVOID ; p3 : PVOID ; p4 : ULONG ; p5 : ULONG_PTR ; p6 : PTP_IO); -- void (PTP_CALLBACK_INSTANCE, PVOID, PVOID, ULONG, ULONG_PTR, PTP_IO)
   pragma Convention(C,PTP_WIN32_IO_CALLBACK);
   function CreateThreadpool(
      reserved : PVOID
   ) return PTP_POOL;
   pragma import (Cpp,CreateThreadpool,"CreateThreadpool");
   procedure SetThreadpoolThreadMaximum(
      ptpp : PTP_POOL;
      cthrdMost : DWORD
   );
   pragma import (Cpp,SetThreadpoolThreadMaximum,"SetThreadpoolThreadMaximum");
   function SetThreadpoolThreadMinimum(
      ptpp : PTP_POOL;
      cthrdMic : DWORD
   ) return BOOL;
   pragma import (Cpp,SetThreadpoolThreadMinimum,"SetThreadpoolThreadMinimum");
   function SetThreadpoolStackInformation(
      ptpp : PTP_POOL;
      ptpsi : PTP_POOL_STACK_INFORMATION
   ) return BOOL;
   pragma import (Cpp,SetThreadpoolStackInformation,"SetThreadpoolStackInformation");
   function QueryThreadpoolStackInformation(
      ptpp : PTP_POOL;
      ptpsi : PTP_POOL_STACK_INFORMATION
   ) return BOOL;
   pragma import (Cpp,QueryThreadpoolStackInformation,"QueryThreadpoolStackInformation");
   procedure CloseThreadpool(
      ptpp : PTP_POOL
   );
   pragma import (Cpp,CloseThreadpool,"CloseThreadpool");
   function CreateThreadpoolCleanupGroup return PTP_CLEANUP_GROUP;
   pragma import (Cpp,CreateThreadpoolCleanupGroup,"CreateThreadpoolCleanupGroup");
   procedure CloseThreadpoolCleanupGroupMembers(
      ptpcg : PTP_CLEANUP_GROUP;
      fCancelPendingCallbacks : BOOL;
      pvCleanupContext : PVOID
   );
   pragma import (Cpp,CloseThreadpoolCleanupGroupMembers,"CloseThreadpoolCleanupGroupMembers");
   procedure CloseThreadpoolCleanupGroup(
      ptpcg : PTP_CLEANUP_GROUP
   );
   pragma import (Cpp,CloseThreadpoolCleanupGroup,"CloseThreadpoolCleanupGroup");
   procedure SetEventWhenCallbackReturns(
      pci : PTP_CALLBACK_INSTANCE;
      evt : HANDLE
   );
   pragma import (Cpp,SetEventWhenCallbackReturns,"SetEventWhenCallbackReturns");
   procedure ReleaseSemaphoreWhenCallbackReturns(
      pci : PTP_CALLBACK_INSTANCE;
      sem : HANDLE;
      crel : DWORD
   );
   pragma import (Cpp,ReleaseSemaphoreWhenCallbackReturns,"ReleaseSemaphoreWhenCallbackReturns");
   procedure ReleaseMutexWhenCallbackReturns(
      pci : PTP_CALLBACK_INSTANCE;
      mut : HANDLE
   );
   pragma import (Cpp,ReleaseMutexWhenCallbackReturns,"ReleaseMutexWhenCallbackReturns");
   procedure LeaveCriticalSectionWhenCallbackReturns(
      pci : PTP_CALLBACK_INSTANCE;
      pcs : PCRITICAL_SECTION
   );
   pragma import (Cpp,LeaveCriticalSectionWhenCallbackReturns,"LeaveCriticalSectionWhenCallbackReturns");
   procedure FreeLibraryWhenCallbackReturns(
      pci : PTP_CALLBACK_INSTANCE;
      mod_x : HMODULE
   );
   pragma import (Cpp,FreeLibraryWhenCallbackReturns,"FreeLibraryWhenCallbackReturns");
   function CallbackMayRunLong(
      pci : PTP_CALLBACK_INSTANCE
   ) return BOOL;
   pragma import (Cpp,CallbackMayRunLong,"CallbackMayRunLong");
   procedure DisassociateCurrentThreadFromCallback(
      pci : PTP_CALLBACK_INSTANCE
   );
   pragma import (Cpp,DisassociateCurrentThreadFromCallback,"DisassociateCurrentThreadFromCallback");
   function TrySubmitThreadpoolCallback(
      pfns : PTP_SIMPLE_CALLBACK;
      pv : PVOID;
      pcbe : PTP_CALLBACK_ENVIRON
   ) return BOOL;
   pragma import (Cpp,TrySubmitThreadpoolCallback,"TrySubmitThreadpoolCallback");
   function CreateThreadpoolWork(
      pfnwk : PTP_WORK_CALLBACK;
      pv : PVOID;
      pcbe : PTP_CALLBACK_ENVIRON
   ) return PTP_WORK;
   pragma import (Cpp,CreateThreadpoolWork,"CreateThreadpoolWork");
   procedure SubmitThreadpoolWork(
      pwk : PTP_WORK
   );
   pragma import (Cpp,SubmitThreadpoolWork,"SubmitThreadpoolWork");
   procedure WaitForThreadpoolWorkCallbacks(
      pwk : PTP_WORK;
      fCancelPendingCallbacks : BOOL
   );
   pragma import (Cpp,WaitForThreadpoolWorkCallbacks,"WaitForThreadpoolWorkCallbacks");
   procedure CloseThreadpoolWork(
      pwk : PTP_WORK
   );
   pragma import (Cpp,CloseThreadpoolWork,"CloseThreadpoolWork");
   function CreateThreadpoolTimer(
      pfnti : PTP_TIMER_CALLBACK;
      pv : PVOID;
      pcbe : PTP_CALLBACK_ENVIRON
   ) return PTP_TIMER;
   pragma import (Cpp,CreateThreadpoolTimer,"CreateThreadpoolTimer");
   procedure SetThreadpoolTimer(
      pti : PTP_TIMER;
      pftDueTime : PFILETIME;
      msPeriod : DWORD;
      msWindowLength : DWORD
   );
   pragma import (Cpp,SetThreadpoolTimer,"SetThreadpoolTimer");
   function IsThreadpoolTimerSet(
      pti : PTP_TIMER
   ) return BOOL;
   pragma import (Cpp,IsThreadpoolTimerSet,"IsThreadpoolTimerSet");
   procedure WaitForThreadpoolTimerCallbacks(
      pti : PTP_TIMER;
      fCancelPendingCallbacks : BOOL
   );
   pragma import (Cpp,WaitForThreadpoolTimerCallbacks,"WaitForThreadpoolTimerCallbacks");
   procedure CloseThreadpoolTimer(
      pti : PTP_TIMER
   );
   pragma import (Cpp,CloseThreadpoolTimer,"CloseThreadpoolTimer");
   function CreateThreadpoolWait(
      pfnwa : PTP_WAIT_CALLBACK;
      pv : PVOID;
      pcbe : PTP_CALLBACK_ENVIRON
   ) return PTP_WAIT;
   pragma import (Cpp,CreateThreadpoolWait,"CreateThreadpoolWait");
   procedure SetThreadpoolWait(
      pwa : PTP_WAIT;
      h : HANDLE;
      pftTimeout : PFILETIME
   );
   pragma import (Cpp,SetThreadpoolWait,"SetThreadpoolWait");
   procedure WaitForThreadpoolWaitCallbacks(
      pwa : PTP_WAIT;
      fCancelPendingCallbacks : BOOL
   );
   pragma import (Cpp,WaitForThreadpoolWaitCallbacks,"WaitForThreadpoolWaitCallbacks");
   procedure CloseThreadpoolWait(
      pwa : PTP_WAIT
   );
   pragma import (Cpp,CloseThreadpoolWait,"CloseThreadpoolWait");
   function CreateThreadpoolIo(
      fl : HANDLE;
      pfnio : PTP_WIN32_IO_CALLBACK;
      pv : PVOID;
      pcbe : PTP_CALLBACK_ENVIRON
   ) return PTP_IO;
   pragma import (Cpp,CreateThreadpoolIo,"CreateThreadpoolIo");
   procedure StartThreadpoolIo(
      pio : PTP_IO
   );
   pragma import (Cpp,StartThreadpoolIo,"StartThreadpoolIo");
   procedure CancelThreadpoolIo(
      pio : PTP_IO
   );
   pragma import (Cpp,CancelThreadpoolIo,"CancelThreadpoolIo");
   procedure WaitForThreadpoolIoCallbacks(
      pio : PTP_IO;
      fCancelPendingCallbacks : BOOL
   );
   pragma import (Cpp,WaitForThreadpoolIoCallbacks,"WaitForThreadpoolIoCallbacks");
   procedure CloseThreadpoolIo(
      pio : PTP_IO
   );
   pragma import (Cpp,CloseThreadpoolIo,"CloseThreadpoolIo");
   function SetThreadpoolTimerEx(
      pti : PTP_TIMER;
      pftDueTime : PFILETIME;
      msPeriod : DWORD;
      msWindowLength : DWORD
   ) return BOOL;
   pragma import (Cpp,SetThreadpoolTimerEx,"SetThreadpoolTimerEx");
   function SetThreadpoolWaitEx(
      pwa : PTP_WAIT;
      h : HANDLE;
      pftTimeout : PFILETIME;
      Reserved : PVOID
   ) return BOOL;
   pragma import (Cpp,SetThreadpoolWaitEx,"SetThreadpoolWaitEx");
   -- #include <jobapi.h>
   function IsProcessInJob(
      ProcessHandle : HANDLE;
      JobHandle : HANDLE;
      Result : PBOOL
   ) return BOOL;
   pragma import (Cpp,IsProcessInJob,"IsProcessInJob");
   -- #include <jobapi2.h>
   type JOBOBJECT_IO_RATE_CONTROL_INFORMATION is record
      MaxIops : LONG64;
      MaxBandwidth : LONG64;
      ReservationIops : LONG64;
      VolumeName : PCWSTR;
      BaseIoSize : ULONG;
      ControlFlags : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,JOBOBJECT_IO_RATE_CONTROL_INFORMATION);
   for JOBOBJECT_IO_RATE_CONTROL_INFORMATION use record
      MaxIops at 0 range 0..63;
      MaxBandwidth at 0 range 64..127;
      ReservationIops at 0 range 128..191;
      VolumeName at 0 range 192..255;
      BaseIoSize at 0 range 256..287;
      ControlFlags at 0 range 288..319;
   end record;
   for JOBOBJECT_IO_RATE_CONTROL_INFORMATION'Size use 320;
   for JOBOBJECT_IO_RATE_CONTROL_INFORMATION'Alignment use 8;
   function CreateJobObjectW(
      lpJobAttributes : LPSECURITY_ATTRIBUTES;
      lpName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,CreateJobObjectW,"CreateJobObjectW");
   procedure FreeMemoryJobObject(
      Buffer : access Void
   );
   pragma import (Cpp,FreeMemoryJobObject,"FreeMemoryJobObject");
   function OpenJobObjectW(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      lpName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,OpenJobObjectW,"OpenJobObjectW");
   function AssignProcessToJobObject(
      hJob : HANDLE;
      hProcess : HANDLE
   ) return BOOL;
   pragma import (Cpp,AssignProcessToJobObject,"AssignProcessToJobObject");
   function TerminateJobObject(
      hJob : HANDLE;
      uExitCode : UINT
   ) return BOOL;
   pragma import (Cpp,TerminateJobObject,"TerminateJobObject");
   function SetInformationJobObject(
      hJob : HANDLE;
      JobObjectInformationClass : JOBOBJECTINFOCLASS;
      lpJobObjectInformation : LPVOID;
      cbJobObjectInformationLength : DWORD
   ) return BOOL;
   pragma import (Cpp,SetInformationJobObject,"SetInformationJobObject");
   function SetIoRateControlInformationJobObject(
      hJob : HANDLE;
      IoRateControlInfo : access JOBOBJECT_IO_RATE_CONTROL_INFORMATION
   ) return DWORD;
   pragma import (Cpp,SetIoRateControlInformationJobObject,"SetIoRateControlInformationJobObject");
   function QueryInformationJobObject(
      hJob : HANDLE;
      JobObjectInformationClass : JOBOBJECTINFOCLASS;
      lpJobObjectInformation : LPVOID;
      cbJobObjectInformationLength : DWORD;
      lpReturnLength : LPDWORD
   ) return BOOL;
   pragma import (Cpp,QueryInformationJobObject,"QueryInformationJobObject");
   type JOBOBJECT_IO_RATE_CONTROL_INFORMATION_Ptr is access all JOBOBJECT_IO_RATE_CONTROL_INFORMATION; -- Auto Generated Dependancy
   function QueryIoRateControlInformationJobObject(
      hJob : HANDLE;
      VolumeName : PCWSTR;
      InfoBlocks : access JOBOBJECT_IO_RATE_CONTROL_INFORMATION_Ptr;
      InfoBlockCount : access ULONG
   ) return DWORD;
   pragma import (Cpp,QueryIoRateControlInformationJobObject,"QueryIoRateControlInformationJobObject");
   -- #include <wow64apiset.h>
   function Wow64DisableWow64FsRedirection(
      OldValue : access PVOID
   ) return BOOL;
   pragma import (Cpp,Wow64DisableWow64FsRedirection,"Wow64DisableWow64FsRedirection");
   function Wow64RevertWow64FsRedirection(
      OlValue : PVOID
   ) return BOOL;
   pragma import (Cpp,Wow64RevertWow64FsRedirection,"Wow64RevertWow64FsRedirection");
   function IsWow64Process(
      hProcess : HANDLE;
      Wow64Process : PBOOL
   ) return BOOL;
   pragma import (Cpp,IsWow64Process,"IsWow64Process");
   function GetSystemWow64DirectoryA(
      lpBuffer : LPSTR;
      uSize : UINT
   ) return UINT;
   pragma import (Cpp,GetSystemWow64DirectoryA,"GetSystemWow64DirectoryA");
   function GetSystemWow64DirectoryW(
      lpBuffer : LPWSTR;
      uSize : UINT
   ) return UINT;
   pragma import (Cpp,GetSystemWow64DirectoryW,"GetSystemWow64DirectoryW");
   function Wow64SetThreadDefaultGuestMachine(
      Machine : USHORT
   ) return USHORT;
   pragma import (Cpp,Wow64SetThreadDefaultGuestMachine,"Wow64SetThreadDefaultGuestMachine");
   function IsWow64Process2(
      hProcess : HANDLE;
      pProcessMachine : access USHORT;
      pNativeMachine : access USHORT
   ) return BOOL;
   pragma import (Cpp,IsWow64Process2,"IsWow64Process2");
   function GetSystemWow64Directory2A(
      lpBuffer : LPSTR;
      uSize : UINT;
      ImageFileMachineType : WORD
   ) return UINT;
   pragma import (Cpp,GetSystemWow64Directory2A,"GetSystemWow64Directory2A");
   function GetSystemWow64Directory2W(
      lpBuffer : LPWSTR;
      uSize : UINT;
      ImageFileMachineType : WORD
   ) return UINT;
   pragma import (Cpp,GetSystemWow64Directory2W,"GetSystemWow64Directory2W");
   function IsWow64GuestMachineSupported(
      WowGuestMachine : USHORT;
      MachineIsSupported : access BOOL
   ) return HRESULT;
   pragma import (Cpp,IsWow64GuestMachineSupported,"IsWow64GuestMachineSupported");
   function Wow64GetThreadContext(
      hThread : HANDLE;
      lpContext_x : PWOW64_CONTEXT
   ) return BOOL;
   pragma import (Cpp,Wow64GetThreadContext,"Wow64GetThreadContext");
   function Wow64SetThreadContext(
      hThread : HANDLE;
      lpContext_x : access constant WOW64_CONTEXT
   ) return BOOL;
   pragma import (Cpp,Wow64SetThreadContext,"Wow64SetThreadContext");
   function Wow64SuspendThread(
      hThread : HANDLE
   ) return DWORD;
   pragma import (Cpp,Wow64SuspendThread,"Wow64SuspendThread");
   -- #include <libloaderapi.h>
   type tagENUMUILANG is record
      NumOfEnumUILang : ULONG;
      SizeOfEnumUIBuffer : ULONG;
      pEnumUIBuffer : access LANGID;
   end record;
   pragma Convention (C_Pass_By_Copy,tagENUMUILANG);
   for tagENUMUILANG use record
      NumOfEnumUILang at 0 range 0..31;
      SizeOfEnumUIBuffer at 0 range 32..63;
      pEnumUIBuffer at 0 range 64..127;
   end record;
   for tagENUMUILANG'Size use 128;
   for tagENUMUILANG'Alignment use 8;
   subtype ENUMUILANG is tagENUMUILANG;
   type PENUMUILANG is access all tagENUMUILANG;
   type ENUMRESLANGPROCA is access function (p1 : HMODULE ; p2 : LPCSTR ; p3 : LPCSTR ; p4 : WORD ; p5 : LONG_PTR) return BOOL; -- BOOL (HMODULE, LPCSTR, LPCSTR, WORD, LONG_PTR)
   pragma Convention(C,ENUMRESLANGPROCA);
   type ENUMRESLANGPROCW is access function (p1 : HMODULE ; p2 : LPCWSTR ; p3 : LPCWSTR ; p4 : WORD ; p5 : LONG_PTR) return BOOL; -- BOOL (HMODULE, LPCWSTR, LPCWSTR, WORD, LONG_PTR)
   pragma Convention(C,ENUMRESLANGPROCW);
   type ENUMRESNAMEPROCA is access function (p1 : HMODULE ; p2 : LPCSTR ; p3 : LPSTR ; p4 : LONG_PTR) return BOOL; -- BOOL (HMODULE, LPCSTR, LPSTR, LONG_PTR)
   pragma Convention(C,ENUMRESNAMEPROCA);
   type ENUMRESNAMEPROCW is access function (p1 : HMODULE ; p2 : LPCWSTR ; p3 : LPWSTR ; p4 : LONG_PTR) return BOOL; -- BOOL (HMODULE, LPCWSTR, LPWSTR, LONG_PTR)
   pragma Convention(C,ENUMRESNAMEPROCW);
   type ENUMRESTYPEPROCA is access function (p1 : HMODULE ; p2 : LPSTR ; p3 : LONG_PTR) return BOOL; -- BOOL (HMODULE, LPSTR, LONG_PTR)
   pragma Convention(C,ENUMRESTYPEPROCA);
   type ENUMRESTYPEPROCW is access function (p1 : HMODULE ; p2 : LPWSTR ; p3 : LONG_PTR) return BOOL; -- BOOL (HMODULE, LPWSTR, LONG_PTR)
   pragma Convention(C,ENUMRESTYPEPROCW);
   function DisableThreadLibraryCalls(
      hLibModule : HMODULE
   ) return BOOL;
   pragma import (Cpp,DisableThreadLibraryCalls,"DisableThreadLibraryCalls");
   function FindResourceExW(
      hModule_x : HMODULE;
      lpType : LPCWSTR;
      lpName : LPCWSTR;
      wLanguage : WORD
   ) return HRSRC;
   pragma import (Cpp,FindResourceExW,"FindResourceExW");
   function FindStringOrdinal(
      dwFindStringOrdinalFlags : DWORD;
      lpStringSource : LPCWSTR;
      cchSource : Interfaces.C.Int;
      lpStringValue : LPCWSTR;
      cchValue : Interfaces.C.Int;
      bIgnoreCase : BOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,FindStringOrdinal,"FindStringOrdinal");
   function FreeLibrary(
      hLibModule : HMODULE
   ) return BOOL;
   pragma import (Cpp,FreeLibrary,"FreeLibrary");
   procedure FreeLibraryAndExitThread(
      hLibModule : HMODULE;
      dwExitCode : DWORD
   );
   pragma import (Cpp,FreeLibraryAndExitThread,"FreeLibraryAndExitThread");
   function FreeResource(
      hResData : HGLOBAL
   ) return BOOL;
   pragma import (Cpp,FreeResource,"FreeResource");
   function GetModuleFileNameA(
      hModule_x : HMODULE;
      lpFilename : LPSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetModuleFileNameA,"GetModuleFileNameA");
   function GetModuleFileNameW(
      hModule_x : HMODULE;
      lpFilename : LPWSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetModuleFileNameW,"GetModuleFileNameW");
   function GetModuleHandleA(
      lpModuleName : LPCSTR
   ) return HMODULE;
   pragma import (Cpp,GetModuleHandleA,"GetModuleHandleA");
   function GetModuleHandleW(
      lpModuleName : LPCWSTR
   ) return HMODULE;
   pragma import (Cpp,GetModuleHandleW,"GetModuleHandleW");
   type PGET_MODULE_HANDLE_EXA is access function (p1 : DWORD ; p2 : LPCSTR ; p3 : access HMODULE) return BOOL; -- BOOL (DWORD, LPCSTR, HMODULE *)
   pragma Convention(C,PGET_MODULE_HANDLE_EXA);
   type PGET_MODULE_HANDLE_EXW is access function (p1 : DWORD ; p2 : LPCWSTR ; p3 : access HMODULE) return BOOL; -- BOOL (DWORD, LPCWSTR, HMODULE *)
   pragma Convention(C,PGET_MODULE_HANDLE_EXW);
   function GetModuleHandleExA(
      dwFlags : DWORD;
      lpModuleName : LPCSTR;
      phModule : access HMODULE
   ) return BOOL;
   pragma import (Cpp,GetModuleHandleExA,"GetModuleHandleExA");
   function GetModuleHandleExW(
      dwFlags : DWORD;
      lpModuleName : LPCWSTR;
      phModule : access HMODULE
   ) return BOOL;
   pragma import (Cpp,GetModuleHandleExW,"GetModuleHandleExW");
   function GetProcAddress(
      hModule_x : HMODULE;
      lpProcName : LPCSTR
   ) return FARPROC;
   pragma import (Cpp,GetProcAddress,"GetProcAddress");
   type REDIRECTION_FUNCTION_DESCRIPTOR_x is record
      DllName : PCSTR;
      FunctionName : PCSTR;
      RedirectionTarget : PVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,REDIRECTION_FUNCTION_DESCRIPTOR_x);
   for REDIRECTION_FUNCTION_DESCRIPTOR_x use record
      DllName at 0 range 0..63;
      FunctionName at 0 range 64..127;
      RedirectionTarget at 0 range 128..191;
   end record;
   for REDIRECTION_FUNCTION_DESCRIPTOR_x'Size use 192;
   for REDIRECTION_FUNCTION_DESCRIPTOR_x'Alignment use 8;
   subtype REDIRECTION_FUNCTION_DESCRIPTOR is REDIRECTION_FUNCTION_DESCRIPTOR_x;
   type PREDIRECTION_FUNCTION_DESCRIPTOR is access all REDIRECTION_FUNCTION_DESCRIPTOR_x;
   type PCREDIRECTION_FUNCTION_DESCRIPTOR is access constant REDIRECTION_FUNCTION_DESCRIPTOR;
   type REDIRECTION_DESCRIPTOR_x is record
      Version : ULONG;
      FunctionCount : ULONG;
      Redirections : PCREDIRECTION_FUNCTION_DESCRIPTOR;
   end record;
   pragma Convention (C_Pass_By_Copy,REDIRECTION_DESCRIPTOR_x);
   for REDIRECTION_DESCRIPTOR_x use record
      Version at 0 range 0..31;
      FunctionCount at 0 range 32..63;
      Redirections at 0 range 64..127;
   end record;
   for REDIRECTION_DESCRIPTOR_x'Size use 128;
   for REDIRECTION_DESCRIPTOR_x'Alignment use 8;
   subtype REDIRECTION_DESCRIPTOR is REDIRECTION_DESCRIPTOR_x;
   type PREDIRECTION_DESCRIPTOR is access all REDIRECTION_DESCRIPTOR_x;
   type PCREDIRECTION_DESCRIPTOR is access constant REDIRECTION_DESCRIPTOR;
   function LoadLibraryExA(
      lpLibFileName : LPCSTR;
      hFile_x : HANDLE;
      dwFlags : DWORD
   ) return HMODULE;
   pragma import (Cpp,LoadLibraryExA,"LoadLibraryExA");
   function LoadLibraryExW(
      lpLibFileName : LPCWSTR;
      hFile_x : HANDLE;
      dwFlags : DWORD
   ) return HMODULE;
   pragma import (Cpp,LoadLibraryExW,"LoadLibraryExW");
   function LoadResource(
      hModule_x : HMODULE;
      hResInfo : HRSRC
   ) return HGLOBAL;
   pragma import (Cpp,LoadResource,"LoadResource");
   function LoadStringA(
      hInstance_x : HINSTANCE;
      uID : UINT;
      lpBuffer : LPSTR;
      cchBufferMax : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,LoadStringA,"LoadStringA");
   function LoadStringW(
      hInstance_x : HINSTANCE;
      uID : UINT;
      lpBuffer : LPWSTR;
      cchBufferMax : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,LoadStringW,"LoadStringW");
   procedure LockResource(
      hResData : HGLOBAL
   );
   pragma import (Cpp,LockResource,"LockResource");
   function SizeofResource(
      hModule_x : HMODULE;
      hResInfo : HRSRC
   ) return DWORD;
   pragma import (Cpp,SizeofResource,"SizeofResource");
   subtype DLL_DIRECTORY_COOKIE is PVOID;
   type PDLL_DIRECTORY_COOKIE is access all PVOID;
   function AddDllDirectory(
      NewDirectory : PCWSTR
   ) return DLL_DIRECTORY_COOKIE;
   pragma import (Cpp,AddDllDirectory,"AddDllDirectory");
   function RemoveDllDirectory(
      Cookie : DLL_DIRECTORY_COOKIE
   ) return BOOL;
   pragma import (Cpp,RemoveDllDirectory,"RemoveDllDirectory");
   function SetDefaultDllDirectories(
      DirectoryFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,SetDefaultDllDirectories,"SetDefaultDllDirectories");
   function EnumResourceLanguagesExA(
      hModule_x : HMODULE;
      lpType : LPCSTR;
      lpName : LPCSTR;
      lpEnumFunc : ENUMRESLANGPROCA;
      lParam_x : LONG_PTR;
      dwFlags : DWORD;
      LangId_x : LANGID
   ) return BOOL;
   pragma import (Cpp,EnumResourceLanguagesExA,"EnumResourceLanguagesExA");
   function EnumResourceLanguagesExW(
      hModule_x : HMODULE;
      lpType : LPCWSTR;
      lpName : LPCWSTR;
      lpEnumFunc : ENUMRESLANGPROCW;
      lParam_x : LONG_PTR;
      dwFlags : DWORD;
      LangId_x : LANGID
   ) return BOOL;
   pragma import (Cpp,EnumResourceLanguagesExW,"EnumResourceLanguagesExW");
   function EnumResourceNamesExA(
      hModule_x : HMODULE;
      lpType : LPCSTR;
      lpEnumFunc : ENUMRESNAMEPROCA;
      lParam_x : LONG_PTR;
      dwFlags : DWORD;
      LangId_x : LANGID
   ) return BOOL;
   pragma import (Cpp,EnumResourceNamesExA,"EnumResourceNamesExA");
   function EnumResourceNamesExW(
      hModule_x : HMODULE;
      lpType : LPCWSTR;
      lpEnumFunc : ENUMRESNAMEPROCW;
      lParam_x : LONG_PTR;
      dwFlags : DWORD;
      LangId_x : LANGID
   ) return BOOL;
   pragma import (Cpp,EnumResourceNamesExW,"EnumResourceNamesExW");
   function EnumResourceTypesExA(
      hModule_x : HMODULE;
      lpEnumFunc : ENUMRESTYPEPROCA;
      lParam_x : LONG_PTR;
      dwFlags : DWORD;
      LangId_x : LANGID
   ) return BOOL;
   pragma import (Cpp,EnumResourceTypesExA,"EnumResourceTypesExA");
   function EnumResourceTypesExW(
      hModule_x : HMODULE;
      lpEnumFunc : ENUMRESTYPEPROCW;
      lParam_x : LONG_PTR;
      dwFlags : DWORD;
      LangId_x : LANGID
   ) return BOOL;
   pragma import (Cpp,EnumResourceTypesExW,"EnumResourceTypesExW");
   function FindResourceW(
      hModule_x : HMODULE;
      lpName : LPCWSTR;
      lpType : LPCWSTR
   ) return HRSRC;
   pragma import (Cpp,FindResourceW,"FindResourceW");
   function LoadLibraryA(
      lpLibFileName : LPCSTR
   ) return HMODULE;
   pragma import (Cpp,LoadLibraryA,"LoadLibraryA");
   function LoadLibraryW(
      lpLibFileName : LPCWSTR
   ) return HMODULE;
   pragma import (Cpp,LoadLibraryW,"LoadLibraryW");
   function EnumResourceNamesW(
      hModule_x : HMODULE;
      lpType : LPCWSTR;
      lpEnumFunc : ENUMRESNAMEPROCW;
      lParam_x : LONG_PTR
   ) return BOOL;
   pragma import (Cpp,EnumResourceNamesW,"EnumResourceNamesW");
   -- #include <securitybaseapi.h>
   function AccessCheck(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      ClientToken : HANDLE;
      DesiredAccess : DWORD;
      GenericMapping : PGENERIC_MAPPING;
      PrivilegeSet : PPRIVILEGE_SET;
      PrivilegeSetLength : LPDWORD;
      GrantedAccess : LPDWORD;
      AccessStatus : LPBOOL
   ) return BOOL;
   pragma import (Cpp,AccessCheck,"AccessCheck");
   function AccessCheckAndAuditAlarmW(
      SubsystemName : LPCWSTR;
      HandleId : LPVOID;
      ObjectTypeName : LPWSTR;
      ObjectName : LPWSTR;
      SecurityDescriptor : PSECURITY_DESCRIPTOR;
      DesiredAccess : DWORD;
      GenericMapping : PGENERIC_MAPPING;
      ObjectCreation : BOOL;
      GrantedAccess : LPDWORD;
      AccessStatus : LPBOOL;
      pfGenerateOnClose : LPBOOL
   ) return BOOL;
   pragma import (Cpp,AccessCheckAndAuditAlarmW,"AccessCheckAndAuditAlarmW");
   function AccessCheckByType(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      PrincipalSelfSid : PSID;
      ClientToken : HANDLE;
      DesiredAccess : DWORD;
      ObjectTypeList : POBJECT_TYPE_LIST;
      ObjectTypeListLength : DWORD;
      GenericMapping : PGENERIC_MAPPING;
      PrivilegeSet : PPRIVILEGE_SET;
      PrivilegeSetLength : LPDWORD;
      GrantedAccess : LPDWORD;
      AccessStatus : LPBOOL
   ) return BOOL;
   pragma import (Cpp,AccessCheckByType,"AccessCheckByType");
   function AccessCheckByTypeResultList(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      PrincipalSelfSid : PSID;
      ClientToken : HANDLE;
      DesiredAccess : DWORD;
      ObjectTypeList : POBJECT_TYPE_LIST;
      ObjectTypeListLength : DWORD;
      GenericMapping : PGENERIC_MAPPING;
      PrivilegeSet : PPRIVILEGE_SET;
      PrivilegeSetLength : LPDWORD;
      GrantedAccessList : LPDWORD;
      AccessStatusList : LPDWORD
   ) return BOOL;
   pragma import (Cpp,AccessCheckByTypeResultList,"AccessCheckByTypeResultList");
   function AccessCheckByTypeAndAuditAlarmW(
      SubsystemName : LPCWSTR;
      HandleId : LPVOID;
      ObjectTypeName : LPCWSTR;
      ObjectName : LPCWSTR;
      SecurityDescriptor : PSECURITY_DESCRIPTOR;
      PrincipalSelfSid : PSID;
      DesiredAccess : DWORD;
      AuditType : AUDIT_EVENT_TYPE;
      Flags : DWORD;
      ObjectTypeList : POBJECT_TYPE_LIST;
      ObjectTypeListLength : DWORD;
      GenericMapping : PGENERIC_MAPPING;
      ObjectCreation : BOOL;
      GrantedAccess : LPDWORD;
      AccessStatus : LPBOOL;
      pfGenerateOnClose : LPBOOL
   ) return BOOL;
   pragma import (Cpp,AccessCheckByTypeAndAuditAlarmW,"AccessCheckByTypeAndAuditAlarmW");
   function AccessCheckByTypeResultListAndAuditAlarmW(
      SubsystemName : LPCWSTR;
      HandleId : LPVOID;
      ObjectTypeName : LPCWSTR;
      ObjectName : LPCWSTR;
      SecurityDescriptor : PSECURITY_DESCRIPTOR;
      PrincipalSelfSid : PSID;
      DesiredAccess : DWORD;
      AuditType : AUDIT_EVENT_TYPE;
      Flags : DWORD;
      ObjectTypeList : POBJECT_TYPE_LIST;
      ObjectTypeListLength : DWORD;
      GenericMapping : PGENERIC_MAPPING;
      ObjectCreation : BOOL;
      GrantedAccessList : LPDWORD;
      AccessStatusList : LPDWORD;
      pfGenerateOnClose : LPBOOL
   ) return BOOL;
   pragma import (Cpp,AccessCheckByTypeResultListAndAuditAlarmW,"AccessCheckByTypeResultListAndAuditAlarmW");
   function AccessCheckByTypeResultListAndAuditAlarmByHandleW(
      SubsystemName : LPCWSTR;
      HandleId : LPVOID;
      ClientToken : HANDLE;
      ObjectTypeName : LPCWSTR;
      ObjectName : LPCWSTR;
      SecurityDescriptor : PSECURITY_DESCRIPTOR;
      PrincipalSelfSid : PSID;
      DesiredAccess : DWORD;
      AuditType : AUDIT_EVENT_TYPE;
      Flags : DWORD;
      ObjectTypeList : POBJECT_TYPE_LIST;
      ObjectTypeListLength : DWORD;
      GenericMapping : PGENERIC_MAPPING;
      ObjectCreation : BOOL;
      GrantedAccessList : LPDWORD;
      AccessStatusList : LPDWORD;
      pfGenerateOnClose : LPBOOL
   ) return BOOL;
   pragma import (Cpp,AccessCheckByTypeResultListAndAuditAlarmByHandleW,"AccessCheckByTypeResultListAndAuditAlarmByHandleW");
   function AddAccessAllowedAce(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      AccessMask : DWORD;
      pSid_x : PSID
   ) return BOOL;
   pragma import (Cpp,AddAccessAllowedAce,"AddAccessAllowedAce");
   function AddAccessAllowedAceEx(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      AceFlags : DWORD;
      AccessMask : DWORD;
      pSid_x : PSID
   ) return BOOL;
   pragma import (Cpp,AddAccessAllowedAceEx,"AddAccessAllowedAceEx");
   function AddAccessAllowedObjectAce(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      AceFlags : DWORD;
      AccessMask : DWORD;
      ObjectTypeGuid : access GUID;
      InheritedObjectTypeGuid : access GUID;
      pSid_x : PSID
   ) return BOOL;
   pragma import (Cpp,AddAccessAllowedObjectAce,"AddAccessAllowedObjectAce");
   function AddAccessDeniedAce(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      AccessMask : DWORD;
      pSid_x : PSID
   ) return BOOL;
   pragma import (Cpp,AddAccessDeniedAce,"AddAccessDeniedAce");
   function AddAccessDeniedAceEx(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      AceFlags : DWORD;
      AccessMask : DWORD;
      pSid_x : PSID
   ) return BOOL;
   pragma import (Cpp,AddAccessDeniedAceEx,"AddAccessDeniedAceEx");
   function AddAccessDeniedObjectAce(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      AceFlags : DWORD;
      AccessMask : DWORD;
      ObjectTypeGuid : access GUID;
      InheritedObjectTypeGuid : access GUID;
      pSid_x : PSID
   ) return BOOL;
   pragma import (Cpp,AddAccessDeniedObjectAce,"AddAccessDeniedObjectAce");
   function AddAce(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      dwStartingAceIndex : DWORD;
      pAceList : LPVOID;
      nAceListLength : DWORD
   ) return BOOL;
   pragma import (Cpp,AddAce,"AddAce");
   function AddAuditAccessAce(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      dwAccessMask : DWORD;
      pSid_x : PSID;
      bAuditSuccess : BOOL;
      bAuditFailure : BOOL
   ) return BOOL;
   pragma import (Cpp,AddAuditAccessAce,"AddAuditAccessAce");
   function AddAuditAccessAceEx(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      AceFlags : DWORD;
      dwAccessMask : DWORD;
      pSid_x : PSID;
      bAuditSuccess : BOOL;
      bAuditFailure : BOOL
   ) return BOOL;
   pragma import (Cpp,AddAuditAccessAceEx,"AddAuditAccessAceEx");
   function AddAuditAccessObjectAce(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      AceFlags : DWORD;
      AccessMask : DWORD;
      ObjectTypeGuid : access GUID;
      InheritedObjectTypeGuid : access GUID;
      pSid_x : PSID;
      bAuditSuccess : BOOL;
      bAuditFailure : BOOL
   ) return BOOL;
   pragma import (Cpp,AddAuditAccessObjectAce,"AddAuditAccessObjectAce");
   function AddMandatoryAce(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      AceFlags : DWORD;
      MandatoryPolicy : DWORD;
      pLabelSid : PSID
   ) return BOOL;
   pragma import (Cpp,AddMandatoryAce,"AddMandatoryAce");
   function AddResourceAttributeAce(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      AceFlags : DWORD;
      AccessMask : DWORD;
      pSid_x : PSID;
      pAttributeInfo : PCLAIM_SECURITY_ATTRIBUTES_INFORMATION;
      pReturnLength : PDWORD
   ) return BOOL;
   pragma import (Cpp,AddResourceAttributeAce,"AddResourceAttributeAce");
   function AddScopedPolicyIDAce(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      AceFlags : DWORD;
      AccessMask : DWORD;
      pSid_x : PSID
   ) return BOOL;
   pragma import (Cpp,AddScopedPolicyIDAce,"AddScopedPolicyIDAce");
   function AdjustTokenGroups(
      TokenHandle : HANDLE;
      ResetToDefault : BOOL;
      NewState : PTOKEN_GROUPS;
      BufferLength : DWORD;
      PreviousState : PTOKEN_GROUPS;
      ReturnLength : PDWORD
   ) return BOOL;
   pragma import (Cpp,AdjustTokenGroups,"AdjustTokenGroups");
   function AdjustTokenPrivileges(
      TokenHandle : HANDLE;
      DisableAllPrivileges : BOOL;
      NewState : PTOKEN_PRIVILEGES;
      BufferLength : DWORD;
      PreviousState : PTOKEN_PRIVILEGES;
      ReturnLength : PDWORD
   ) return BOOL;
   pragma import (Cpp,AdjustTokenPrivileges,"AdjustTokenPrivileges");
   function AllocateAndInitializeSid(
      pIdentifierAuthority : PSID_IDENTIFIER_AUTHORITY;
      nSubAuthorityCount : BYTE;
      nSubAuthority0 : DWORD;
      nSubAuthority1 : DWORD;
      nSubAuthority2 : DWORD;
      nSubAuthority3 : DWORD;
      nSubAuthority4 : DWORD;
      nSubAuthority5 : DWORD;
      nSubAuthority6 : DWORD;
      nSubAuthority7 : DWORD;
      pSid_x : access PSID
   ) return BOOL;
   pragma import (Cpp,AllocateAndInitializeSid,"AllocateAndInitializeSid");
   function AllocateLocallyUniqueId(
      Luid_x : PLUID
   ) return BOOL;
   pragma import (Cpp,AllocateLocallyUniqueId,"AllocateLocallyUniqueId");
   function AreAllAccessesGranted(
      GrantedAccess : DWORD;
      DesiredAccess : DWORD
   ) return BOOL;
   pragma import (Cpp,AreAllAccessesGranted,"AreAllAccessesGranted");
   function AreAnyAccessesGranted(
      GrantedAccess : DWORD;
      DesiredAccess : DWORD
   ) return BOOL;
   pragma import (Cpp,AreAnyAccessesGranted,"AreAnyAccessesGranted");
   function CheckTokenMembership(
      TokenHandle : HANDLE;
      SidToCheck : PSID;
      IsMember : PBOOL
   ) return BOOL;
   pragma import (Cpp,CheckTokenMembership,"CheckTokenMembership");
   function CheckTokenCapability(
      TokenHandle : HANDLE;
      CapabilitySidToCheck : PSID;
      HasCapability : PBOOL
   ) return BOOL;
   pragma import (Cpp,CheckTokenCapability,"CheckTokenCapability");
   function GetAppContainerAce(
      Acl_x : PACL;
      StartingAceIndex : DWORD;
      AppContainerAce : access PVOID;
      AppContainerAceIndex : access DWORD
   ) return BOOL;
   pragma import (Cpp,GetAppContainerAce,"GetAppContainerAce");
   function CheckTokenMembershipEx(
      TokenHandle : HANDLE;
      SidToCheck : PSID;
      Flags : DWORD;
      IsMember : PBOOL
   ) return BOOL;
   pragma import (Cpp,CheckTokenMembershipEx,"CheckTokenMembershipEx");
   function ConvertToAutoInheritPrivateObjectSecurity(
      ParentDescriptor : PSECURITY_DESCRIPTOR;
      CurrentSecurityDescriptor : PSECURITY_DESCRIPTOR;
      NewSecurityDescriptor : access PSECURITY_DESCRIPTOR;
      ObjectType : access GUID;
      IsDirectoryObject : BOOLEAN;
      GenericMapping : PGENERIC_MAPPING
   ) return BOOL;
   pragma import (Cpp,ConvertToAutoInheritPrivateObjectSecurity,"ConvertToAutoInheritPrivateObjectSecurity");
   function CopySid(
      nDestinationSidLength : DWORD;
      pDestinationSid : PSID;
      pSourceSid : PSID
   ) return BOOL;
   pragma import (Cpp,CopySid,"CopySid");
   function CreatePrivateObjectSecurity(
      ParentDescriptor : PSECURITY_DESCRIPTOR;
      CreatorDescriptor : PSECURITY_DESCRIPTOR;
      NewDescriptor : access PSECURITY_DESCRIPTOR;
      IsDirectoryObject : BOOL;
      Token : HANDLE;
      GenericMapping : PGENERIC_MAPPING
   ) return BOOL;
   pragma import (Cpp,CreatePrivateObjectSecurity,"CreatePrivateObjectSecurity");
   function CreatePrivateObjectSecurityEx(
      ParentDescriptor : PSECURITY_DESCRIPTOR;
      CreatorDescriptor : PSECURITY_DESCRIPTOR;
      NewDescriptor : access PSECURITY_DESCRIPTOR;
      ObjectType : access GUID;
      IsContainerObject : BOOL;
      AutoInheritFlags : ULONG;
      Token : HANDLE;
      GenericMapping : PGENERIC_MAPPING
   ) return BOOL;
   pragma import (Cpp,CreatePrivateObjectSecurityEx,"CreatePrivateObjectSecurityEx");
   function CreatePrivateObjectSecurityWithMultipleInheritance(
      ParentDescriptor : PSECURITY_DESCRIPTOR;
      CreatorDescriptor : PSECURITY_DESCRIPTOR;
      NewDescriptor : access PSECURITY_DESCRIPTOR;
      ObjectTypes : access LPGUID;
      GuidCount : ULONG;
      IsContainerObject : BOOL;
      AutoInheritFlags : ULONG;
      Token : HANDLE;
      GenericMapping : PGENERIC_MAPPING
   ) return BOOL;
   pragma import (Cpp,CreatePrivateObjectSecurityWithMultipleInheritance,"CreatePrivateObjectSecurityWithMultipleInheritance");
   function CreateRestrictedToken(
      ExistingTokenHandle : HANDLE;
      Flags : DWORD;
      DisableSidCount : DWORD;
      SidsToDisable : PSID_AND_ATTRIBUTES;
      DeletePrivilegeCount : DWORD;
      PrivilegesToDelete : PLUID_AND_ATTRIBUTES;
      RestrictedSidCount : DWORD;
      SidsToRestrict : PSID_AND_ATTRIBUTES;
      NewTokenHandle : PHANDLE
   ) return BOOL;
   pragma import (Cpp,CreateRestrictedToken,"CreateRestrictedToken");
   function CreateWellKnownSid(
      WellKnownSidType : WELL_KNOWN_SID_TYPE;
      DomainSid : PSID;
      pSid_x : PSID;
      cbSid : access DWORD
   ) return BOOL;
   pragma import (Cpp,CreateWellKnownSid,"CreateWellKnownSid");
   function EqualDomainSid(
      pSid1 : PSID;
      pSid2 : PSID;
      pfEqual : access BOOL
   ) return BOOL;
   pragma import (Cpp,EqualDomainSid,"EqualDomainSid");
   function DeleteAce(
      pAcl_x : PACL;
      dwAceIndex : DWORD
   ) return BOOL;
   pragma import (Cpp,DeleteAce,"DeleteAce");
   function DestroyPrivateObjectSecurity(
      ObjectDescriptor : access PSECURITY_DESCRIPTOR
   ) return BOOL;
   pragma import (Cpp,DestroyPrivateObjectSecurity,"DestroyPrivateObjectSecurity");
   function DuplicateToken(
      ExistingTokenHandle : HANDLE;
      ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
      DuplicateTokenHandle : PHANDLE
   ) return BOOL;
   pragma import (Cpp,DuplicateToken,"DuplicateToken");
   function DuplicateTokenEx(
      hExistingToken : HANDLE;
      dwDesiredAccess : DWORD;
      lpTokenAttributes : LPSECURITY_ATTRIBUTES;
      ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL;
      TokenType : TOKEN_TYPE;
      phNewToken : PHANDLE
   ) return BOOL;
   pragma import (Cpp,DuplicateTokenEx,"DuplicateTokenEx");
   function EqualPrefixSid(
      pSid1 : PSID;
      pSid2 : PSID
   ) return BOOL;
   pragma import (Cpp,EqualPrefixSid,"EqualPrefixSid");
   function EqualSid(
      pSid1 : PSID;
      pSid2 : PSID
   ) return BOOL;
   pragma import (Cpp,EqualSid,"EqualSid");
   function FindFirstFreeAce(
      pAcl_x : PACL;
      pAce : access LPVOID
   ) return BOOL;
   pragma import (Cpp,FindFirstFreeAce,"FindFirstFreeAce");
   procedure FreeSid(
      pSid_x : PSID
   );
   pragma import (Cpp,FreeSid,"FreeSid");
   function GetAce(
      pAcl_x : PACL;
      dwAceIndex : DWORD;
      pAce : access LPVOID
   ) return BOOL;
   pragma import (Cpp,GetAce,"GetAce");
   function GetAclInformation(
      pAcl_x : PACL;
      pAclInformation : LPVOID;
      nAclInformationLength : DWORD;
      dwAclInformationClass : ACL_INFORMATION_CLASS
   ) return BOOL;
   pragma import (Cpp,GetAclInformation,"GetAclInformation");
   function GetFileSecurityW(
      lpFileName : LPCWSTR;
      RequestedInformation : SECURITY_INFORMATION;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      nLength : DWORD;
      lpnLengthNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetFileSecurityW,"GetFileSecurityW");
   function GetKernelObjectSecurity(
      Handle_x : HANDLE;
      RequestedInformation : SECURITY_INFORMATION;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      nLength : DWORD;
      lpnLengthNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetKernelObjectSecurity,"GetKernelObjectSecurity");
   function GetLengthSid(
      pSid_x : PSID
   ) return DWORD;
   pragma import (Cpp,GetLengthSid,"GetLengthSid");
   function GetPrivateObjectSecurity(
      ObjectDescriptor : PSECURITY_DESCRIPTOR;
      SecurityInformation : SECURITY_INFORMATION;
      ResultantDescriptor : PSECURITY_DESCRIPTOR;
      DescriptorLength : DWORD;
      ReturnLength : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetPrivateObjectSecurity,"GetPrivateObjectSecurity");
   function GetSecurityDescriptorControl(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      pControl : PSECURITY_DESCRIPTOR_CONTROL;
      lpdwRevision : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetSecurityDescriptorControl,"GetSecurityDescriptorControl");
   function GetSecurityDescriptorDacl(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      lpbDaclPresent : LPBOOL;
      pDacl : access PACL;
      lpbDaclDefaulted : LPBOOL
   ) return BOOL;
   pragma import (Cpp,GetSecurityDescriptorDacl,"GetSecurityDescriptorDacl");
   function GetSecurityDescriptorGroup(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      pGroup : access PSID;
      lpbGroupDefaulted : LPBOOL
   ) return BOOL;
   pragma import (Cpp,GetSecurityDescriptorGroup,"GetSecurityDescriptorGroup");
   function GetSecurityDescriptorLength(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR
   ) return DWORD;
   pragma import (Cpp,GetSecurityDescriptorLength,"GetSecurityDescriptorLength");
   function GetSecurityDescriptorOwner(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      pOwner : access PSID;
      lpbOwnerDefaulted : LPBOOL
   ) return BOOL;
   pragma import (Cpp,GetSecurityDescriptorOwner,"GetSecurityDescriptorOwner");
   function GetSecurityDescriptorRMControl(
      SecurityDescriptor : PSECURITY_DESCRIPTOR;
      RMControl : PUCHAR
   ) return DWORD;
   pragma import (Cpp,GetSecurityDescriptorRMControl,"GetSecurityDescriptorRMControl");
   function GetSecurityDescriptorSacl(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      lpbSaclPresent : LPBOOL;
      pSacl : access PACL;
      lpbSaclDefaulted : LPBOOL
   ) return BOOL;
   pragma import (Cpp,GetSecurityDescriptorSacl,"GetSecurityDescriptorSacl");
   function GetSidIdentifierAuthority(
      pSid_x : PSID
   ) return PSID_IDENTIFIER_AUTHORITY;
   pragma import (Cpp,GetSidIdentifierAuthority,"GetSidIdentifierAuthority");
   function GetSidLengthRequired(
      nSubAuthorityCount : UCHAR
   ) return DWORD;
   pragma import (Cpp,GetSidLengthRequired,"GetSidLengthRequired");
   function GetSidSubAuthority(
      pSid_x : PSID;
      nSubAuthority : DWORD
   ) return PDWORD;
   pragma import (Cpp,GetSidSubAuthority,"GetSidSubAuthority");
   function GetSidSubAuthorityCount(
      pSid_x : PSID
   ) return PUCHAR;
   pragma import (Cpp,GetSidSubAuthorityCount,"GetSidSubAuthorityCount");
   function GetTokenInformation(
      TokenHandle : HANDLE;
      TokenInformationClass : TOKEN_INFORMATION_CLASS;
      TokenInformation : LPVOID;
      TokenInformationLength : DWORD;
      ReturnLength : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetTokenInformation,"GetTokenInformation");
   function GetWindowsAccountDomainSid(
      pSid_x : PSID;
      pDomainSid : PSID;
      cbDomainSid : access DWORD
   ) return BOOL;
   pragma import (Cpp,GetWindowsAccountDomainSid,"GetWindowsAccountDomainSid");
   function ImpersonateAnonymousToken(
      ThreadHandle : HANDLE
   ) return BOOL;
   pragma import (Cpp,ImpersonateAnonymousToken,"ImpersonateAnonymousToken");
   function ImpersonateLoggedOnUser(
      hToken : HANDLE
   ) return BOOL;
   pragma import (Cpp,ImpersonateLoggedOnUser,"ImpersonateLoggedOnUser");
   function ImpersonateSelf(
      ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL
   ) return BOOL;
   pragma import (Cpp,ImpersonateSelf,"ImpersonateSelf");
   function InitializeAcl(
      pAcl_x : PACL;
      nAclLength : DWORD;
      dwAclRevision : DWORD
   ) return BOOL;
   pragma import (Cpp,InitializeAcl,"InitializeAcl");
   function InitializeSecurityDescriptor(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      dwRevision : DWORD
   ) return BOOL;
   pragma import (Cpp,InitializeSecurityDescriptor,"InitializeSecurityDescriptor");
   function InitializeSid(
      Sid_x : PSID;
      pIdentifierAuthority : PSID_IDENTIFIER_AUTHORITY;
      nSubAuthorityCount : BYTE
   ) return BOOL;
   pragma import (Cpp,InitializeSid,"InitializeSid");
   function IsTokenRestricted(
      TokenHandle : HANDLE
   ) return BOOL;
   pragma import (Cpp,IsTokenRestricted,"IsTokenRestricted");
   function IsValidAcl(
      pAcl_x : PACL
   ) return BOOL;
   pragma import (Cpp,IsValidAcl,"IsValidAcl");
   function IsValidSecurityDescriptor(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR
   ) return BOOL;
   pragma import (Cpp,IsValidSecurityDescriptor,"IsValidSecurityDescriptor");
   function IsValidSid(
      pSid_x : PSID
   ) return BOOL;
   pragma import (Cpp,IsValidSid,"IsValidSid");
   function IsWellKnownSid(
      pSid_x : PSID;
      WellKnownSidType : WELL_KNOWN_SID_TYPE
   ) return BOOL;
   pragma import (Cpp,IsWellKnownSid,"IsWellKnownSid");
   function MakeAbsoluteSD(
      pSelfRelativeSecurityDescriptor : PSECURITY_DESCRIPTOR;
      pAbsoluteSecurityDescriptor : PSECURITY_DESCRIPTOR;
      lpdwAbsoluteSecurityDescriptorSize : LPDWORD;
      pDacl : PACL;
      lpdwDaclSize : LPDWORD;
      pSacl : PACL;
      lpdwSaclSize : LPDWORD;
      pOwner : PSID;
      lpdwOwnerSize : LPDWORD;
      pPrimaryGroup : PSID;
      lpdwPrimaryGroupSize : LPDWORD
   ) return BOOL;
   pragma import (Cpp,MakeAbsoluteSD,"MakeAbsoluteSD");
   function MakeSelfRelativeSD(
      pAbsoluteSecurityDescriptor : PSECURITY_DESCRIPTOR;
      pSelfRelativeSecurityDescriptor : PSECURITY_DESCRIPTOR;
      lpdwBufferLength : LPDWORD
   ) return BOOL;
   pragma import (Cpp,MakeSelfRelativeSD,"MakeSelfRelativeSD");
   procedure MapGenericMask(
      AccessMask : PDWORD;
      GenericMapping : PGENERIC_MAPPING
   );
   pragma import (Cpp,MapGenericMask,"MapGenericMask");
   function ObjectCloseAuditAlarmW(
      SubsystemName : LPCWSTR;
      HandleId : LPVOID;
      GenerateOnClose : BOOL
   ) return BOOL;
   pragma import (Cpp,ObjectCloseAuditAlarmW,"ObjectCloseAuditAlarmW");
   function ObjectDeleteAuditAlarmW(
      SubsystemName : LPCWSTR;
      HandleId : LPVOID;
      GenerateOnClose : BOOL
   ) return BOOL;
   pragma import (Cpp,ObjectDeleteAuditAlarmW,"ObjectDeleteAuditAlarmW");
   function ObjectOpenAuditAlarmW(
      SubsystemName : LPCWSTR;
      HandleId : LPVOID;
      ObjectTypeName : LPWSTR;
      ObjectName : LPWSTR;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      ClientToken : HANDLE;
      DesiredAccess : DWORD;
      GrantedAccess : DWORD;
      Privileges : PPRIVILEGE_SET;
      ObjectCreation : BOOL;
      AccessGranted : BOOL;
      GenerateOnClose : LPBOOL
   ) return BOOL;
   pragma import (Cpp,ObjectOpenAuditAlarmW,"ObjectOpenAuditAlarmW");
   function ObjectPrivilegeAuditAlarmW(
      SubsystemName : LPCWSTR;
      HandleId : LPVOID;
      ClientToken : HANDLE;
      DesiredAccess : DWORD;
      Privileges : PPRIVILEGE_SET;
      AccessGranted : BOOL
   ) return BOOL;
   pragma import (Cpp,ObjectPrivilegeAuditAlarmW,"ObjectPrivilegeAuditAlarmW");
   function PrivilegeCheck(
      ClientToken : HANDLE;
      RequiredPrivileges : PPRIVILEGE_SET;
      pfResult : LPBOOL
   ) return BOOL;
   pragma import (Cpp,PrivilegeCheck,"PrivilegeCheck");
   function PrivilegedServiceAuditAlarmW(
      SubsystemName : LPCWSTR;
      ServiceName : LPCWSTR;
      ClientToken : HANDLE;
      Privileges : PPRIVILEGE_SET;
      AccessGranted : BOOL
   ) return BOOL;
   pragma import (Cpp,PrivilegedServiceAuditAlarmW,"PrivilegedServiceAuditAlarmW");
   procedure QuerySecurityAccessMask(
      SecurityInformation : SECURITY_INFORMATION;
      DesiredAccess : LPDWORD
   );
   pragma import (Cpp,QuerySecurityAccessMask,"QuerySecurityAccessMask");
   function RevertToSelf return BOOL;
   pragma import (Cpp,RevertToSelf,"RevertToSelf");
   function SetAclInformation(
      pAcl_x : PACL;
      pAclInformation : LPVOID;
      nAclInformationLength : DWORD;
      dwAclInformationClass : ACL_INFORMATION_CLASS
   ) return BOOL;
   pragma import (Cpp,SetAclInformation,"SetAclInformation");
   function SetFileSecurityW(
      lpFileName : LPCWSTR;
      SecurityInformation : SECURITY_INFORMATION;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR
   ) return BOOL;
   pragma import (Cpp,SetFileSecurityW,"SetFileSecurityW");
   function SetKernelObjectSecurity(
      Handle_x : HANDLE;
      SecurityInformation : SECURITY_INFORMATION;
      SecurityDescriptor : PSECURITY_DESCRIPTOR
   ) return BOOL;
   pragma import (Cpp,SetKernelObjectSecurity,"SetKernelObjectSecurity");
   function SetPrivateObjectSecurity(
      SecurityInformation : SECURITY_INFORMATION;
      ModificationDescriptor : PSECURITY_DESCRIPTOR;
      ObjectsSecurityDescriptor : access PSECURITY_DESCRIPTOR;
      GenericMapping : PGENERIC_MAPPING;
      Token : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetPrivateObjectSecurity,"SetPrivateObjectSecurity");
   function SetPrivateObjectSecurityEx(
      SecurityInformation : SECURITY_INFORMATION;
      ModificationDescriptor : PSECURITY_DESCRIPTOR;
      ObjectsSecurityDescriptor : access PSECURITY_DESCRIPTOR;
      AutoInheritFlags : ULONG;
      GenericMapping : PGENERIC_MAPPING;
      Token : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetPrivateObjectSecurityEx,"SetPrivateObjectSecurityEx");
   procedure SetSecurityAccessMask(
      SecurityInformation : SECURITY_INFORMATION;
      DesiredAccess : LPDWORD
   );
   pragma import (Cpp,SetSecurityAccessMask,"SetSecurityAccessMask");
   function SetSecurityDescriptorControl(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      ControlBitsOfInterest : SECURITY_DESCRIPTOR_CONTROL;
      ControlBitsToSet : SECURITY_DESCRIPTOR_CONTROL
   ) return BOOL;
   pragma import (Cpp,SetSecurityDescriptorControl,"SetSecurityDescriptorControl");
   function SetSecurityDescriptorDacl(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      bDaclPresent : BOOL;
      pDacl : PACL;
      bDaclDefaulted : BOOL
   ) return BOOL;
   pragma import (Cpp,SetSecurityDescriptorDacl,"SetSecurityDescriptorDacl");
   function SetSecurityDescriptorGroup(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      pGroup : PSID;
      bGroupDefaulted : BOOL
   ) return BOOL;
   pragma import (Cpp,SetSecurityDescriptorGroup,"SetSecurityDescriptorGroup");
   function SetSecurityDescriptorOwner(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      pOwner : PSID;
      bOwnerDefaulted : BOOL
   ) return BOOL;
   pragma import (Cpp,SetSecurityDescriptorOwner,"SetSecurityDescriptorOwner");
   function SetSecurityDescriptorRMControl(
      SecurityDescriptor : PSECURITY_DESCRIPTOR;
      RMControl : PUCHAR
   ) return DWORD;
   pragma import (Cpp,SetSecurityDescriptorRMControl,"SetSecurityDescriptorRMControl");
   function SetSecurityDescriptorSacl(
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      bSaclPresent : BOOL;
      pSacl : PACL;
      bSaclDefaulted : BOOL
   ) return BOOL;
   pragma import (Cpp,SetSecurityDescriptorSacl,"SetSecurityDescriptorSacl");
   function SetTokenInformation(
      TokenHandle : HANDLE;
      TokenInformationClass : TOKEN_INFORMATION_CLASS;
      TokenInformation : LPVOID;
      TokenInformationLength : DWORD
   ) return BOOL;
   pragma import (Cpp,SetTokenInformation,"SetTokenInformation");
   function SetCachedSigningLevel(
      SourceFiles : PHANDLE;
      SourceFileCount : ULONG;
      Flags : ULONG;
      TargetFile : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetCachedSigningLevel,"SetCachedSigningLevel");
   function GetCachedSigningLevel(
      File : HANDLE;
      Flags : PULONG;
      SigningLevel : PULONG;
      Thumbprint : PUCHAR;
      ThumbprintSize : PULONG;
      ThumbprintAlgorithm : PULONG
   ) return BOOL;
   pragma import (Cpp,GetCachedSigningLevel,"GetCachedSigningLevel");
   function CveEventWrite(
      CveId : PCWSTR;
      AdditionalDetails : PCWSTR
   ) return LONG;
   pragma import (Cpp,CveEventWrite,"CveEventWrite");
   type PSID_Ptr is access all PSID; -- Auto Generated Dependancy
   function DeriveCapabilitySidsFromName(
      CapName : LPCWSTR;
      CapabilityGroupSids : access PSID_Ptr;
      CapabilityGroupSidCount : access DWORD;
      CapabilitySids : access PSID_Ptr;
      CapabilitySidCount : access DWORD
   ) return BOOL;
   pragma import (Cpp,DeriveCapabilitySidsFromName,"DeriveCapabilitySidsFromName");
   -- #include <namespaceapi.h>
   function CreatePrivateNamespaceW(
      lpPrivateNamespaceAttributes : LPSECURITY_ATTRIBUTES;
      lpBoundaryDescriptor : LPVOID;
      lpAliasPrefix : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,CreatePrivateNamespaceW,"CreatePrivateNamespaceW");
   function OpenPrivateNamespaceW(
      lpBoundaryDescriptor : LPVOID;
      lpAliasPrefix : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,OpenPrivateNamespaceW,"OpenPrivateNamespaceW");
   function ClosePrivateNamespace(
      Handle_x : HANDLE;
      Flags : ULONG
   ) return BOOLEAN;
   pragma import (Cpp,ClosePrivateNamespace,"ClosePrivateNamespace");
   function CreateBoundaryDescriptorW(
      Name : LPCWSTR;
      Flags : ULONG
   ) return HANDLE;
   pragma import (Cpp,CreateBoundaryDescriptorW,"CreateBoundaryDescriptorW");
   function AddSIDToBoundaryDescriptor(
      BoundaryDescriptor : access HANDLE;
      RequiredSid : PSID
   ) return BOOL;
   pragma import (Cpp,AddSIDToBoundaryDescriptor,"AddSIDToBoundaryDescriptor");
   procedure DeleteBoundaryDescriptor(
      BoundaryDescriptor : HANDLE
   );
   pragma import (Cpp,DeleteBoundaryDescriptor,"DeleteBoundaryDescriptor");
   -- #include <systemtopologyapi.h>
   function GetNumaHighestNodeNumber(
      HighestNodeNumber : PULONG
   ) return BOOL;
   pragma import (Cpp,GetNumaHighestNodeNumber,"GetNumaHighestNodeNumber");
   function GetNumaNodeProcessorMaskEx(
      Node : USHORT;
      ProcessorMask : PGROUP_AFFINITY
   ) return BOOL;
   pragma import (Cpp,GetNumaNodeProcessorMaskEx,"GetNumaNodeProcessorMaskEx");
   function GetNumaProximityNodeEx(
      ProximityId : ULONG;
      NodeNumber : PUSHORT
   ) return BOOL;
   pragma import (Cpp,GetNumaProximityNodeEx,"GetNumaProximityNodeEx");
   -- #include <processtopologyapi.h>
   function GetProcessGroupAffinity(
      hProcess : HANDLE;
      GroupCount : PUSHORT;
      GroupArray : PUSHORT
   ) return BOOL;
   pragma import (Cpp,GetProcessGroupAffinity,"GetProcessGroupAffinity");
   function GetThreadGroupAffinity(
      hThread : HANDLE;
      GroupAffinity : PGROUP_AFFINITY
   ) return BOOL;
   pragma import (Cpp,GetThreadGroupAffinity,"GetThreadGroupAffinity");
   function SetThreadGroupAffinity(
      hThread : HANDLE;
      GroupAffinity : access constant GROUP_AFFINITY;
      PreviousGroupAffinity : PGROUP_AFFINITY
   ) return BOOL;
   pragma import (Cpp,SetThreadGroupAffinity,"SetThreadGroupAffinity");
   -- #include <securityappcontainer.h>
   function GetAppContainerNamedObjectPath(
      Token : HANDLE;
      AppContainerSid : PSID;
      ObjectPathLength : ULONG;
      ObjectPath : LPWSTR;
      ReturnLength : PULONG
   ) return BOOL;
   pragma import (Cpp,GetAppContainerNamedObjectPath,"GetAppContainerNamedObjectPath");
   -- #include <realtimeapiset.h>
   function QueryThreadCycleTime(
      ThreadHandle : HANDLE;
      CycleTime : PULONG64
   ) return BOOL;
   pragma import (Cpp,QueryThreadCycleTime,"QueryThreadCycleTime");
   function QueryProcessCycleTime(
      ProcessHandle : HANDLE;
      CycleTime : PULONG64
   ) return BOOL;
   pragma import (Cpp,QueryProcessCycleTime,"QueryProcessCycleTime");
   function QueryIdleProcessorCycleTime(
      BufferLength : PULONG;
      ProcessorIdleCycleTime : PULONG64
   ) return BOOL;
   pragma import (Cpp,QueryIdleProcessorCycleTime,"QueryIdleProcessorCycleTime");
   function QueryIdleProcessorCycleTimeEx(
      Group : USHORT;
      BufferLength : PULONG;
      ProcessorIdleCycleTime : PULONG64
   ) return BOOL;
   pragma import (Cpp,QueryIdleProcessorCycleTimeEx,"QueryIdleProcessorCycleTimeEx");
   procedure QueryInterruptTimePrecise(
      lpInterruptTimePrecise : PULONGLONG
   );
   pragma import (Cpp,QueryInterruptTimePrecise,"QueryInterruptTimePrecise");
   procedure QueryUnbiasedInterruptTimePrecise(
      lpUnbiasedInterruptTimePrecise : PULONGLONG
   );
   pragma import (Cpp,QueryUnbiasedInterruptTimePrecise,"QueryUnbiasedInterruptTimePrecise");
   procedure QueryInterruptTime(
      lpInterruptTime : PULONGLONG
   );
   pragma import (Cpp,QueryInterruptTime,"QueryInterruptTime");
   function QueryUnbiasedInterruptTime(
      UnbiasedTime : PULONGLONG
   ) return BOOL;
   pragma import (Cpp,QueryUnbiasedInterruptTime,"QueryUnbiasedInterruptTime");
   function QueryAuxiliaryCounterFrequency(
      lpAuxiliaryCounterFrequency : PULONGLONG
   ) return HRESULT;
   pragma import (Cpp,QueryAuxiliaryCounterFrequency,"QueryAuxiliaryCounterFrequency");
   function ConvertAuxiliaryCounterToPerformanceCounter(
      ullAuxiliaryCounterValue : ULONGLONG;
      lpPerformanceCounterValue : PULONGLONG;
      lpConversionError : PULONGLONG
   ) return HRESULT;
   pragma import (Cpp,ConvertAuxiliaryCounterToPerformanceCounter,"ConvertAuxiliaryCounterToPerformanceCounter");
   function ConvertPerformanceCounterToAuxiliaryCounter(
      ullPerformanceCounterValue : ULONGLONG;
      lpAuxiliaryCounterValue : PULONGLONG;
      lpConversionError : PULONGLONG
   ) return HRESULT;
   pragma import (Cpp,ConvertPerformanceCounterToAuxiliaryCounter,"ConvertPerformanceCounterToAuxiliaryCounter");
   -- #include <winbase.h>
   type PFIBER_START_ROUTINE is access procedure (p1 : LPVOID); -- void (LPVOID)
   pragma Convention(C,PFIBER_START_ROUTINE);
   subtype LPFIBER_START_ROUTINE is PFIBER_START_ROUTINE;
   type PFIBER_CALLOUT_ROUTINE is access function (p1 : LPVOID) return LPVOID; -- LPVOID (LPVOID)
   pragma Convention(C,PFIBER_CALLOUT_ROUTINE);
   subtype LPLDT_ENTRY is LPVOID;
   type COMMPROP_x_wcProvChar_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type COMMPROP_x is record
      wPacketLength : WORD;
      wPacketVersion : WORD;
      dwServiceMask : DWORD;
      dwReserved1 : DWORD;
      dwMaxTxQueue : DWORD;
      dwMaxRxQueue : DWORD;
      dwMaxBaud : DWORD;
      dwProvSubType : DWORD;
      dwProvCapabilities : DWORD;
      dwSettableParams : DWORD;
      dwSettableBaud : DWORD;
      wSettableData : WORD;
      wSettableStopParity : WORD;
      dwCurrentTxQueue : DWORD;
      dwCurrentRxQueue : DWORD;
      dwProvSpec1 : DWORD;
      dwProvSpec2 : DWORD;
      wcProvChar : COMMPROP_x_wcProvChar_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,COMMPROP_x);
   for COMMPROP_x use record
      wPacketLength at 0 range 0..15;
      wPacketVersion at 0 range 16..31;
      dwServiceMask at 0 range 32..63;
      dwReserved1 at 0 range 64..95;
      dwMaxTxQueue at 0 range 96..127;
      dwMaxRxQueue at 0 range 128..159;
      dwMaxBaud at 0 range 160..191;
      dwProvSubType at 0 range 192..223;
      dwProvCapabilities at 0 range 224..255;
      dwSettableParams at 0 range 256..287;
      dwSettableBaud at 0 range 288..319;
      wSettableData at 0 range 320..335;
      wSettableStopParity at 0 range 336..351;
      dwCurrentTxQueue at 0 range 352..383;
      dwCurrentRxQueue at 0 range 384..415;
      dwProvSpec1 at 0 range 416..447;
      dwProvSpec2 at 0 range 448..479;
      wcProvChar at 0 range 480..495;
   end record;
   for COMMPROP_x'Size use 512;
   for COMMPROP_x'Alignment use 4;
   subtype COMMPROP is COMMPROP_x;
   type LPCOMMPROP is access all COMMPROP_x;
   type COMSTAT_x is record
      fCtsHold : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fDsrHold : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fRlsdHold : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fXoffHold : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fXoffSent : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fEof : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fTxim : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fReserved : Interfaces.C.Extensions.Unsigned_25; -- bit field
      cbInQue : DWORD;
      cbOutQue : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,COMSTAT_x);
   for COMSTAT_x use record
      fCtsHold at 0 range 0..0;
      fDsrHold at 0 range 1..1;
      fRlsdHold at 0 range 2..2;
      fXoffHold at 0 range 3..3;
      fXoffSent at 0 range 4..4;
      fEof at 0 range 5..5;
      fTxim at 0 range 6..6;
      fReserved at 0 range 7..31;
      cbInQue at 0 range 32..63;
      cbOutQue at 0 range 64..95;
   end record;
   for COMSTAT_x'Size use 96;
   for COMSTAT_x'Alignment use 4;
   subtype COMSTAT is COMSTAT_x;
   type LPCOMSTAT is access all COMSTAT_x;
   type DCB_x is record
      DCBlength : DWORD;
      BaudRate : DWORD;
      fBinary : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fParity : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fOutxCtsFlow : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fOutxDsrFlow : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fDtrControl : Interfaces.C.Extensions.Unsigned_2; -- bit field
      fDsrSensitivity : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fTXContinueOnXoff : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fOutX : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fInX : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fErrorChar : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fNull : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fRtsControl : Interfaces.C.Extensions.Unsigned_2; -- bit field
      fAbortOnError : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fDummy2 : Interfaces.C.Extensions.Unsigned_17; -- bit field
      wReserved : WORD;
      XonLim : WORD;
      XoffLim : WORD;
      ByteSize : BYTE;
      Parity : BYTE;
      StopBits : BYTE;
      XonChar : Character;
      XoffChar : Character;
      ErrorChar : Character;
      EofChar : Character;
      EvtChar : Character;
      wReserved1 : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DCB_x);
   for DCB_x use record
      DCBlength at 0 range 0..31;
      BaudRate at 0 range 32..63;
      fBinary at 0 range 64..64;
      fParity at 0 range 65..65;
      fOutxCtsFlow at 0 range 66..66;
      fOutxDsrFlow at 0 range 67..67;
      fDtrControl at 0 range 68..69;
      fDsrSensitivity at 0 range 70..70;
      fTXContinueOnXoff at 0 range 71..71;
      fOutX at 0 range 72..72;
      fInX at 0 range 73..73;
      fErrorChar at 0 range 74..74;
      fNull at 0 range 75..75;
      fRtsControl at 0 range 76..77;
      fAbortOnError at 0 range 78..78;
      fDummy2 at 0 range 79..95;
      wReserved at 0 range 96..111;
      XonLim at 0 range 112..127;
      XoffLim at 0 range 128..143;
      ByteSize at 0 range 144..151;
      Parity at 0 range 152..159;
      StopBits at 0 range 160..167;
      XonChar at 0 range 168..175;
      XoffChar at 0 range 176..183;
      ErrorChar at 0 range 184..191;
      EofChar at 0 range 192..199;
      EvtChar at 0 range 200..207;
      wReserved1 at 0 range 208..223;
   end record;
   for DCB_x'Size use 224;
   for DCB_x'Alignment use 4;
   subtype DCB is DCB_x;
   type LPDCB is access all DCB_x;
   type COMMTIMEOUTS_x is record
      ReadIntervalTimeout : DWORD;
      ReadTotalTimeoutMultiplier : DWORD;
      ReadTotalTimeoutConstant : DWORD;
      WriteTotalTimeoutMultiplier : DWORD;
      WriteTotalTimeoutConstant : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,COMMTIMEOUTS_x);
   for COMMTIMEOUTS_x use record
      ReadIntervalTimeout at 0 range 0..31;
      ReadTotalTimeoutMultiplier at 0 range 32..63;
      ReadTotalTimeoutConstant at 0 range 64..95;
      WriteTotalTimeoutMultiplier at 0 range 96..127;
      WriteTotalTimeoutConstant at 0 range 128..159;
   end record;
   for COMMTIMEOUTS_x'Size use 160;
   for COMMTIMEOUTS_x'Alignment use 4;
   subtype COMMTIMEOUTS is COMMTIMEOUTS_x;
   type LPCOMMTIMEOUTS is access all COMMTIMEOUTS_x;
   type COMMCONFIG_x_wcProviderData_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type COMMCONFIG_x is record
      dwSize : DWORD;
      wVersion : WORD;
      wReserved : WORD;
      dcb_x : DCB;
      dwProviderSubType : DWORD;
      dwProviderOffset : DWORD;
      dwProviderSize : DWORD;
      wcProviderData : COMMCONFIG_x_wcProviderData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,COMMCONFIG_x);
   for COMMCONFIG_x use record
      dwSize at 0 range 0..31;
      wVersion at 0 range 32..47;
      wReserved at 0 range 48..63;
      dcb_x at 0 range 64..287;
      dwProviderSubType at 0 range 288..319;
      dwProviderOffset at 0 range 320..351;
      dwProviderSize at 0 range 352..383;
      wcProviderData at 0 range 384..399;
   end record;
   for COMMCONFIG_x'Size use 416;
   for COMMCONFIG_x'Alignment use 4;
   subtype COMMCONFIG is COMMCONFIG_x;
   type LPCOMMCONFIG is access all COMMCONFIG_x;
   type MEMORYSTATUS_x is record
      dwLength : DWORD;
      dwMemoryLoad : DWORD;
      dwTotalPhys : SIZE_T;
      dwAvailPhys : SIZE_T;
      dwTotalPageFile : SIZE_T;
      dwAvailPageFile : SIZE_T;
      dwTotalVirtual : SIZE_T;
      dwAvailVirtual : SIZE_T;
   end record;
   pragma Convention (C_Pass_By_Copy,MEMORYSTATUS_x);
   for MEMORYSTATUS_x use record
      dwLength at 0 range 0..31;
      dwMemoryLoad at 0 range 32..63;
      dwTotalPhys at 0 range 64..127;
      dwAvailPhys at 0 range 128..191;
      dwTotalPageFile at 0 range 192..255;
      dwAvailPageFile at 0 range 256..319;
      dwTotalVirtual at 0 range 320..383;
      dwAvailVirtual at 0 range 384..447;
   end record;
   for MEMORYSTATUS_x'Size use 448;
   for MEMORYSTATUS_x'Alignment use 8;
   subtype MEMORYSTATUS is MEMORYSTATUS_x;
   type LPMEMORYSTATUS is access all MEMORYSTATUS_x;
   type JIT_DEBUG_INFO_x is record
      dwSize : DWORD;
      dwProcessorArchitecture : DWORD;
      dwThreadID : DWORD;
      dwReserved0 : DWORD;
      lpExceptionAddress : ULONG64;
      lpExceptionRecord : ULONG64;
      lpContextRecord : ULONG64;
   end record;
   pragma Convention (C_Pass_By_Copy,JIT_DEBUG_INFO_x);
   for JIT_DEBUG_INFO_x use record
      dwSize at 0 range 0..31;
      dwProcessorArchitecture at 0 range 32..63;
      dwThreadID at 0 range 64..95;
      dwReserved0 at 0 range 96..127;
      lpExceptionAddress at 0 range 128..191;
      lpExceptionRecord at 0 range 192..255;
      lpContextRecord at 0 range 256..319;
   end record;
   for JIT_DEBUG_INFO_x'Size use 320;
   for JIT_DEBUG_INFO_x'Alignment use 8;
   subtype JIT_DEBUG_INFO is JIT_DEBUG_INFO_x;
   type LPJIT_DEBUG_INFO is access all JIT_DEBUG_INFO_x;
   subtype JIT_DEBUG_INFO32 is JIT_DEBUG_INFO;
   type LPJIT_DEBUG_INFO32 is access all JIT_DEBUG_INFO;
   subtype JIT_DEBUG_INFO64 is JIT_DEBUG_INFO;
   type LPJIT_DEBUG_INFO64 is access all JIT_DEBUG_INFO;
   subtype LPEXCEPTION_RECORD is PEXCEPTION_RECORD;
   subtype LPEXCEPTION_POINTERS is PEXCEPTION_POINTERS;
   type OFSTRUCT_x_szPathName_Array is array(1..128) of CHAR; -- Auto Generated Dependancy
   type OFSTRUCT_x is record
      cBytes : BYTE;
      fFixedDisk : BYTE;
      nErrCode : WORD;
      Reserved1 : WORD;
      Reserved2 : WORD;
      szPathName : OFSTRUCT_x_szPathName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,OFSTRUCT_x);
   for OFSTRUCT_x use record
      cBytes at 0 range 0..7;
      fFixedDisk at 0 range 8..15;
      nErrCode at 0 range 16..31;
      Reserved1 at 0 range 32..47;
      Reserved2 at 0 range 48..63;
      szPathName at 0 range 64..1087;
   end record;
   for OFSTRUCT_x'Size use 1088;
   for OFSTRUCT_x'Alignment use 2;
   subtype OFSTRUCT is OFSTRUCT_x;
   type LPOFSTRUCT is access all OFSTRUCT_x;
   type POFSTRUCT is access all OFSTRUCT_x;
   function WinMain(
      hInstance_x : HINSTANCE;
      hPrevInstance : HINSTANCE;
      lpCmdLine : LPSTR;
      nShowCmd : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,WinMain,"WinMain");
   function wWinMain(
      hInstance_x : HINSTANCE;
      hPrevInstance : HINSTANCE;
      lpCmdLine : LPWSTR;
      nShowCmd : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,wWinMain,"wWinMain");
   function GlobalAlloc(
      uFlags : UINT;
      dwBytes : SIZE_T
   ) return HGLOBAL;
   pragma import (Cpp,GlobalAlloc,"GlobalAlloc");
   function GlobalReAlloc(
      hMem : HGLOBAL;
      dwBytes : SIZE_T;
      uFlags : UINT
   ) return HGLOBAL;
   pragma import (Cpp,GlobalReAlloc,"GlobalReAlloc");
   function GlobalSize(
      hMem : HGLOBAL
   ) return SIZE_T;
   pragma import (Cpp,GlobalSize,"GlobalSize");
   function GlobalUnlock(
      hMem : HGLOBAL
   ) return BOOL;
   pragma import (Cpp,GlobalUnlock,"GlobalUnlock");
   procedure GlobalLock(
      hMem : HGLOBAL
   );
   pragma import (Cpp,GlobalLock,"GlobalLock");
   function GlobalFlags(
      hMem : HGLOBAL
   ) return UINT;
   pragma import (Cpp,GlobalFlags,"GlobalFlags");
   function GlobalHandle_x(
      pMem : LPCVOID
   ) return HGLOBAL;
   pragma import (Cpp,GlobalHandle_x,"GlobalHandle");
   function GlobalFree(
      hMem : HGLOBAL
   ) return HGLOBAL;
   pragma import (Cpp,GlobalFree,"GlobalFree");
   function GlobalCompact(
      dwMinFree : DWORD
   ) return SIZE_T;
   pragma import (Cpp,GlobalCompact,"GlobalCompact");
   procedure GlobalFix(
      hMem : HGLOBAL
   );
   pragma import (Cpp,GlobalFix,"GlobalFix");
   procedure GlobalUnfix(
      hMem : HGLOBAL
   );
   pragma import (Cpp,GlobalUnfix,"GlobalUnfix");
   procedure GlobalWire(
      hMem : HGLOBAL
   );
   pragma import (Cpp,GlobalWire,"GlobalWire");
   function GlobalUnWire(
      hMem : HGLOBAL
   ) return BOOL;
   pragma import (Cpp,GlobalUnWire,"GlobalUnWire");
   procedure GlobalMemoryStatus(
      lpBuffer : LPMEMORYSTATUS
   );
   pragma import (Cpp,GlobalMemoryStatus,"GlobalMemoryStatus");
   function LocalAlloc(
      uFlags : UINT;
      uBytes : SIZE_T
   ) return HLOCAL;
   pragma import (Cpp,LocalAlloc,"LocalAlloc");
   function LocalReAlloc(
      hMem : HLOCAL;
      uBytes : SIZE_T;
      uFlags : UINT
   ) return HLOCAL;
   pragma import (Cpp,LocalReAlloc,"LocalReAlloc");
   procedure LocalLock(
      hMem : HLOCAL
   );
   pragma import (Cpp,LocalLock,"LocalLock");
   function LocalHandle_x(
      pMem : LPCVOID
   ) return HLOCAL;
   pragma import (Cpp,LocalHandle_x,"LocalHandle");
   function LocalUnlock(
      hMem : HLOCAL
   ) return BOOL;
   pragma import (Cpp,LocalUnlock,"LocalUnlock");
   function LocalSize(
      hMem : HLOCAL
   ) return SIZE_T;
   pragma import (Cpp,LocalSize,"LocalSize");
   function LocalFlags(
      hMem : HLOCAL
   ) return UINT;
   pragma import (Cpp,LocalFlags,"LocalFlags");
   function LocalFree(
      hMem : HLOCAL
   ) return HLOCAL;
   pragma import (Cpp,LocalFree,"LocalFree");
   function LocalShrink(
      hMem : HLOCAL;
      cbNewSize : UINT
   ) return SIZE_T;
   pragma import (Cpp,LocalShrink,"LocalShrink");
   function LocalCompact(
      uMinFree : UINT
   ) return SIZE_T;
   pragma import (Cpp,LocalCompact,"LocalCompact");
   function GetBinaryTypeA(
      lpApplicationName : LPCSTR;
      lpBinaryType : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetBinaryTypeA,"GetBinaryTypeA");
   function GetBinaryTypeW(
      lpApplicationName : LPCWSTR;
      lpBinaryType : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetBinaryTypeW,"GetBinaryTypeW");
   function GetShortPathNameA(
      lpszLongPath : LPCSTR;
      lpszShortPath : LPSTR;
      cchBuffer : DWORD
   ) return DWORD;
   pragma import (Cpp,GetShortPathNameA,"GetShortPathNameA");
   function GetLongPathNameTransactedA(
      lpszShortPath : LPCSTR;
      lpszLongPath : LPSTR;
      cchBuffer : DWORD;
      hTransaction : HANDLE
   ) return DWORD;
   pragma import (Cpp,GetLongPathNameTransactedA,"GetLongPathNameTransactedA");
   function GetLongPathNameTransactedW(
      lpszShortPath : LPCWSTR;
      lpszLongPath : LPWSTR;
      cchBuffer : DWORD;
      hTransaction : HANDLE
   ) return DWORD;
   pragma import (Cpp,GetLongPathNameTransactedW,"GetLongPathNameTransactedW");
   function GetProcessAffinityMask(
      hProcess : HANDLE;
      lpProcessAffinityMask : PDWORD_PTR;
      lpSystemAffinityMask : PDWORD_PTR
   ) return BOOL;
   pragma import (Cpp,GetProcessAffinityMask,"GetProcessAffinityMask");
   function SetProcessAffinityMask(
      hProcess : HANDLE;
      dwProcessAffinityMask : DWORD_PTR
   ) return BOOL;
   pragma import (Cpp,SetProcessAffinityMask,"SetProcessAffinityMask");
   function GetProcessIoCounters(
      hProcess : HANDLE;
      lpIoCounters : PIO_COUNTERS
   ) return BOOL;
   pragma import (Cpp,GetProcessIoCounters,"GetProcessIoCounters");
   function GetProcessWorkingSetSize(
      hProcess : HANDLE;
      lpMinimumWorkingSetSize : PSIZE_T;
      lpMaximumWorkingSetSize : PSIZE_T
   ) return BOOL;
   pragma import (Cpp,GetProcessWorkingSetSize,"GetProcessWorkingSetSize");
   function SetProcessWorkingSetSize(
      hProcess : HANDLE;
      dwMinimumWorkingSetSize : SIZE_T;
      dwMaximumWorkingSetSize : SIZE_T
   ) return BOOL;
   pragma import (Cpp,SetProcessWorkingSetSize,"SetProcessWorkingSetSize");
   procedure FatalExit(
      ExitCode : Interfaces.C.Int
   );
   pragma import (Cpp,FatalExit,"FatalExit");
   function SetEnvironmentStringsA(
      NewEnvironment : LPCH
   ) return BOOL;
   pragma import (Cpp,SetEnvironmentStringsA,"SetEnvironmentStringsA");
   procedure SwitchToFiber(
      lpFiber : LPVOID
   );
   pragma import (Cpp,SwitchToFiber,"SwitchToFiber");
   procedure DeleteFiber(
      lpFiber : LPVOID
   );
   pragma import (Cpp,DeleteFiber,"DeleteFiber");
   function ConvertFiberToThread return BOOL;
   pragma import (Cpp,ConvertFiberToThread,"ConvertFiberToThread");
   procedure CreateFiberEx(
      dwStackCommitSize : SIZE_T;
      dwStackReserveSize : SIZE_T;
      dwFlags : DWORD;
      lpStartAddress : LPFIBER_START_ROUTINE;
      lpParameter : LPVOID
   );
   pragma import (Cpp,CreateFiberEx,"CreateFiberEx");
   procedure ConvertThreadToFiberEx(
      lpParameter : LPVOID;
      dwFlags : DWORD
   );
   pragma import (Cpp,ConvertThreadToFiberEx,"ConvertThreadToFiberEx");
   procedure CreateFiber(
      dwStackSize : SIZE_T;
      lpStartAddress : LPFIBER_START_ROUTINE;
      lpParameter : LPVOID
   );
   pragma import (Cpp,CreateFiber,"CreateFiber");
   procedure ConvertThreadToFiber(
      lpParameter : LPVOID
   );
   pragma import (Cpp,ConvertThreadToFiber,"ConvertThreadToFiber");
   type PUMS_CONTEXT is access all Void;
   type PUMS_COMPLETION_LIST is access all Void;
   subtype UMS_THREAD_INFO_CLASS is RTL_UMS_THREAD_INFO_CLASS_x;
   type PUMS_THREAD_INFO_CLASS is access all RTL_UMS_THREAD_INFO_CLASS_x;
   subtype UMS_SCHEDULER_REASON is RTL_UMS_SCHEDULER_REASON_x;
   subtype PUMS_SCHEDULER_ENTRY_POINT is PRTL_UMS_SCHEDULER_ENTRY_POINT;
   type UMS_SCHEDULER_STARTUP_INFO_x is record
      UmsVersion : ULONG;
      CompletionList : PUMS_COMPLETION_LIST;
      SchedulerProc : PUMS_SCHEDULER_ENTRY_POINT;
      SchedulerParam : PVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,UMS_SCHEDULER_STARTUP_INFO_x);
   for UMS_SCHEDULER_STARTUP_INFO_x use record
      UmsVersion at 0 range 0..31;
      CompletionList at 0 range 64..127;
      SchedulerProc at 0 range 128..191;
      SchedulerParam at 0 range 192..255;
   end record;
   for UMS_SCHEDULER_STARTUP_INFO_x'Size use 256;
   for UMS_SCHEDULER_STARTUP_INFO_x'Alignment use 8;
   subtype UMS_SCHEDULER_STARTUP_INFO is UMS_SCHEDULER_STARTUP_INFO_x;
   type PUMS_SCHEDULER_STARTUP_INFO is access all UMS_SCHEDULER_STARTUP_INFO_x;
   type Anonymous_Record_149 is record
      IsUmsSchedulerThread : Interfaces.C.Extensions.Unsigned_1; -- bit field
      IsUmsWorkerThread : Interfaces.C.Extensions.Unsigned_31; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_149);
   for Anonymous_Record_149 use record
      IsUmsSchedulerThread at 0 range 0..0;
      IsUmsWorkerThread at 0 range 1..31;
   end record;
   for Anonymous_Record_149'Size use 32;
   for Anonymous_Record_149'Alignment use 4;
   type Anonymous_Record_148 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_149;
         when others => 
            ThreadUmsFlags : ULONG;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_148);
   pragma Unchecked_Union (Anonymous_Record_148);
   for Anonymous_Record_148'Size use 32;
   for Anonymous_Record_148'Alignment use 4;
   type UMS_SYSTEM_THREAD_INFORMATION_x is record
      UmsVersion : ULONG;
      field_1 : Anonymous_Record_148;
   end record;
   pragma Convention (C_Pass_By_Copy,UMS_SYSTEM_THREAD_INFORMATION_x);
   for UMS_SYSTEM_THREAD_INFORMATION_x use record
      UmsVersion at 0 range 0..31;
      field_1 at 0 range 32..63;
   end record;
   for UMS_SYSTEM_THREAD_INFORMATION_x'Size use 64;
   for UMS_SYSTEM_THREAD_INFORMATION_x'Alignment use 4;
   subtype UMS_SYSTEM_THREAD_INFORMATION is UMS_SYSTEM_THREAD_INFORMATION_x;
   type PUMS_SYSTEM_THREAD_INFORMATION is access all UMS_SYSTEM_THREAD_INFORMATION_x;
   function CreateUmsCompletionList(
      UmsCompletionList : access PUMS_COMPLETION_LIST
   ) return BOOL;
   pragma import (Cpp,CreateUmsCompletionList,"CreateUmsCompletionList");
   function DequeueUmsCompletionListItems(
      UmsCompletionList : PUMS_COMPLETION_LIST;
      WaitTimeOut : DWORD;
      UmsThreadList : access PUMS_CONTEXT
   ) return BOOL;
   pragma import (Cpp,DequeueUmsCompletionListItems,"DequeueUmsCompletionListItems");
   function GetUmsCompletionListEvent(
      UmsCompletionList : PUMS_COMPLETION_LIST;
      UmsCompletionEvent : PHANDLE
   ) return BOOL;
   pragma import (Cpp,GetUmsCompletionListEvent,"GetUmsCompletionListEvent");
   function ExecuteUmsThread(
      UmsThread : PUMS_CONTEXT
   ) return BOOL;
   pragma import (Cpp,ExecuteUmsThread,"ExecuteUmsThread");
   function UmsThreadYield(
      SchedulerParam : PVOID
   ) return BOOL;
   pragma import (Cpp,UmsThreadYield,"UmsThreadYield");
   function DeleteUmsCompletionList(
      UmsCompletionList : PUMS_COMPLETION_LIST
   ) return BOOL;
   pragma import (Cpp,DeleteUmsCompletionList,"DeleteUmsCompletionList");
   function GetCurrentUmsThread return PUMS_CONTEXT;
   pragma import (Cpp,GetCurrentUmsThread,"GetCurrentUmsThread");
   function GetNextUmsListItem(
      UmsContext : PUMS_CONTEXT
   ) return PUMS_CONTEXT;
   pragma import (Cpp,GetNextUmsListItem,"GetNextUmsListItem");
   function QueryUmsThreadInformation(
      UmsThread : PUMS_CONTEXT;
      UmsThreadInfoClass : UMS_THREAD_INFO_CLASS;
      UmsThreadInformation : PVOID;
      UmsThreadInformationLength : ULONG;
      ReturnLength : PULONG
   ) return BOOL;
   pragma import (Cpp,QueryUmsThreadInformation,"QueryUmsThreadInformation");
   function SetUmsThreadInformation(
      UmsThread : PUMS_CONTEXT;
      UmsThreadInfoClass : UMS_THREAD_INFO_CLASS;
      UmsThreadInformation : PVOID;
      UmsThreadInformationLength : ULONG
   ) return BOOL;
   pragma import (Cpp,SetUmsThreadInformation,"SetUmsThreadInformation");
   function DeleteUmsThreadContext(
      UmsThread : PUMS_CONTEXT
   ) return BOOL;
   pragma import (Cpp,DeleteUmsThreadContext,"DeleteUmsThreadContext");
   function CreateUmsThreadContext(
      lpUmsThread : access PUMS_CONTEXT
   ) return BOOL;
   pragma import (Cpp,CreateUmsThreadContext,"CreateUmsThreadContext");
   function EnterUmsSchedulingMode(
      SchedulerStartupInfo : PUMS_SCHEDULER_STARTUP_INFO
   ) return BOOL;
   pragma import (Cpp,EnterUmsSchedulingMode,"EnterUmsSchedulingMode");
   function GetUmsSystemThreadInformation(
      ThreadHandle : HANDLE;
      SystemThreadInfo : PUMS_SYSTEM_THREAD_INFORMATION
   ) return BOOL;
   pragma import (Cpp,GetUmsSystemThreadInformation,"GetUmsSystemThreadInformation");
   function SetThreadAffinityMask(
      hThread : HANDLE;
      dwThreadAffinityMask : DWORD_PTR
   ) return DWORD_PTR;
   pragma import (Cpp,SetThreadAffinityMask,"SetThreadAffinityMask");
   function SetProcessDEPPolicy(
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,SetProcessDEPPolicy,"SetProcessDEPPolicy");
   function GetProcessDEPPolicy(
      hProcess : HANDLE;
      lpFlags : LPDWORD;
      lpPermanent : PBOOL
   ) return BOOL;
   pragma import (Cpp,GetProcessDEPPolicy,"GetProcessDEPPolicy");
   function RequestWakeupLatency(
      latency : LATENCY_TIME
   ) return BOOL;
   pragma import (Cpp,RequestWakeupLatency,"RequestWakeupLatency");
   function IsSystemResumeAutomatic return BOOL;
   pragma import (Cpp,IsSystemResumeAutomatic,"IsSystemResumeAutomatic");
   function GetThreadSelectorEntry(
      hThread : HANDLE;
      dwSelector : DWORD;
      lpSelectorEntry : LPLDT_ENTRY
   ) return BOOL;
   pragma import (Cpp,GetThreadSelectorEntry,"GetThreadSelectorEntry");
   function SetThreadExecutionState(
      esFlags : EXECUTION_STATE
   ) return EXECUTION_STATE;
   pragma import (Cpp,SetThreadExecutionState,"SetThreadExecutionState");
   subtype POWER_REQUEST_CONTEXT is REASON_CONTEXT;
   type PPOWER_REQUEST_CONTEXT is access all REASON_CONTEXT;
   type LPPOWER_REQUEST_CONTEXT is access all REASON_CONTEXT;
   function PowerCreateRequest(
      Context_x : PREASON_CONTEXT
   ) return HANDLE;
   pragma import (Cpp,PowerCreateRequest,"PowerCreateRequest");
   function PowerSetRequest(
      PowerRequest : HANDLE;
      RequestType : POWER_REQUEST_TYPE
   ) return BOOL;
   pragma import (Cpp,PowerSetRequest,"PowerSetRequest");
   function PowerClearRequest(
      PowerRequest : HANDLE;
      RequestType : POWER_REQUEST_TYPE
   ) return BOOL;
   pragma import (Cpp,PowerClearRequest,"PowerClearRequest");
   function SetFileCompletionNotificationModes(
      FileHandle : HANDLE;
      Flags : UCHAR
   ) return BOOL;
   pragma import (Cpp,SetFileCompletionNotificationModes,"SetFileCompletionNotificationModes");
   function Wow64GetThreadSelectorEntry(
      hThread : HANDLE;
      dwSelector : DWORD;
      lpSelectorEntry : PWOW64_LDT_ENTRY
   ) return BOOL;
   pragma import (Cpp,Wow64GetThreadSelectorEntry,"Wow64GetThreadSelectorEntry");
   function DebugSetProcessKillOnExit(
      KillOnExit : BOOL
   ) return BOOL;
   pragma import (Cpp,DebugSetProcessKillOnExit,"DebugSetProcessKillOnExit");
   function DebugBreakProcess(
      Process : HANDLE
   ) return BOOL;
   pragma import (Cpp,DebugBreakProcess,"DebugBreakProcess");
   function PulseEvent(
      hEvent : HANDLE
   ) return BOOL;
   pragma import (Cpp,PulseEvent,"PulseEvent");
   function GlobalDeleteAtom(
      nAtom : ATOM
   ) return ATOM;
   pragma import (Cpp,GlobalDeleteAtom,"GlobalDeleteAtom");
   function InitAtomTable(
      nSize : DWORD
   ) return BOOL;
   pragma import (Cpp,InitAtomTable,"InitAtomTable");
   function DeleteAtom(
      nAtom : ATOM
   ) return ATOM;
   pragma import (Cpp,DeleteAtom,"DeleteAtom");
   function SetHandleCount(
      uNumber : UINT
   ) return UINT;
   pragma import (Cpp,SetHandleCount,"SetHandleCount");
   function RequestDeviceWakeup(
      hDevice : HANDLE
   ) return BOOL;
   pragma import (Cpp,RequestDeviceWakeup,"RequestDeviceWakeup");
   function CancelDeviceWakeupRequest(
      hDevice : HANDLE
   ) return BOOL;
   pragma import (Cpp,CancelDeviceWakeupRequest,"CancelDeviceWakeupRequest");
   function GetDevicePowerState(
      hDevice : HANDLE;
      pfOn : access BOOL
   ) return BOOL;
   pragma import (Cpp,GetDevicePowerState,"GetDevicePowerState");
   function SetMessageWaitingIndicator(
      hMsgIndicator : HANDLE;
      ulMsgCount : ULONG
   ) return BOOL;
   pragma import (Cpp,SetMessageWaitingIndicator,"SetMessageWaitingIndicator");
   function SetFileShortNameA(
      hFile_x : HANDLE;
      lpShortName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetFileShortNameA,"SetFileShortNameA");
   function SetFileShortNameW(
      hFile_x : HANDLE;
      lpShortName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetFileShortNameW,"SetFileShortNameW");
   function LoadModule(
      lpModuleName : LPCSTR;
      lpParameterBlock : LPVOID
   ) return DWORD;
   pragma import (Cpp,LoadModule,"LoadModule");
   function WinExec(
      lpCmdLine : LPCSTR;
      uCmdShow : UINT
   ) return UINT;
   pragma import (Cpp,WinExec,"WinExec");
   function ClearCommBreak(
      hFile_x : HANDLE
   ) return BOOL;
   pragma import (Cpp,ClearCommBreak,"ClearCommBreak");
   function ClearCommError(
      hFile_x : HANDLE;
      lpErrors : LPDWORD;
      lpStat : LPCOMSTAT
   ) return BOOL;
   pragma import (Cpp,ClearCommError,"ClearCommError");
   function SetupComm(
      hFile_x : HANDLE;
      dwInQueue : DWORD;
      dwOutQueue : DWORD
   ) return BOOL;
   pragma import (Cpp,SetupComm,"SetupComm");
   function EscapeCommFunction(
      hFile_x : HANDLE;
      dwFunc : DWORD
   ) return BOOL;
   pragma import (Cpp,EscapeCommFunction,"EscapeCommFunction");
   function GetCommConfig(
      hCommDev : HANDLE;
      lpCC : LPCOMMCONFIG;
      lpdwSize : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetCommConfig,"GetCommConfig");
   function GetCommMask(
      hFile_x : HANDLE;
      lpEvtMask : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetCommMask,"GetCommMask");
   function GetCommProperties(
      hFile_x : HANDLE;
      lpCommProp_x : LPCOMMPROP
   ) return BOOL;
   pragma import (Cpp,GetCommProperties,"GetCommProperties");
   function GetCommModemStatus(
      hFile_x : HANDLE;
      lpModemStat : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetCommModemStatus,"GetCommModemStatus");
   function GetCommState(
      hFile_x : HANDLE;
      lpDCB_x : LPDCB
   ) return BOOL;
   pragma import (Cpp,GetCommState,"GetCommState");
   function GetCommTimeouts(
      hFile_x : HANDLE;
      lpCommTimeouts_x : LPCOMMTIMEOUTS
   ) return BOOL;
   pragma import (Cpp,GetCommTimeouts,"GetCommTimeouts");
   function PurgeComm(
      hFile_x : HANDLE;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,PurgeComm,"PurgeComm");
   function SetCommBreak(
      hFile_x : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetCommBreak,"SetCommBreak");
   function SetCommConfig(
      hCommDev : HANDLE;
      lpCC : LPCOMMCONFIG;
      dwSize : DWORD
   ) return BOOL;
   pragma import (Cpp,SetCommConfig,"SetCommConfig");
   function SetCommMask(
      hFile_x : HANDLE;
      dwEvtMask : DWORD
   ) return BOOL;
   pragma import (Cpp,SetCommMask,"SetCommMask");
   function SetCommState(
      hFile_x : HANDLE;
      lpDCB_x : LPDCB
   ) return BOOL;
   pragma import (Cpp,SetCommState,"SetCommState");
   function SetCommTimeouts(
      hFile_x : HANDLE;
      lpCommTimeouts_x : LPCOMMTIMEOUTS
   ) return BOOL;
   pragma import (Cpp,SetCommTimeouts,"SetCommTimeouts");
   function TransmitCommChar(
      hFile_x : HANDLE;
      cChar_x : Character
   ) return BOOL;
   pragma import (Cpp,TransmitCommChar,"TransmitCommChar");
   function WaitCommEvent(
      hFile_x : HANDLE;
      lpEvtMask : LPDWORD;
      lpOverlapped_x : LPOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,WaitCommEvent,"WaitCommEvent");
   function OpenCommPort(
      uPortNumber : ULONG;
      dwDesiredAccess : DWORD;
      dwFlagsAndAttributes : DWORD
   ) return HANDLE;
   pragma import (Cpp,OpenCommPort,"OpenCommPort");
   function GetCommPorts(
      lpPortNumbers : PULONG;
      uPortNumbersCount : ULONG;
      puPortNumbersFound : PULONG
   ) return ULONG;
   pragma import (Cpp,GetCommPorts,"GetCommPorts");
   function SetTapePosition(
      hDevice : HANDLE;
      dwPositionMethod : DWORD;
      dwPartition : DWORD;
      dwOffsetLow : DWORD;
      dwOffsetHigh : DWORD;
      bImmediate : BOOL
   ) return DWORD;
   pragma import (Cpp,SetTapePosition,"SetTapePosition");
   function GetTapePosition(
      hDevice : HANDLE;
      dwPositionType : DWORD;
      lpdwPartition : LPDWORD;
      lpdwOffsetLow : LPDWORD;
      lpdwOffsetHigh : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetTapePosition,"GetTapePosition");
   function PrepareTape(
      hDevice : HANDLE;
      dwOperation : DWORD;
      bImmediate : BOOL
   ) return DWORD;
   pragma import (Cpp,PrepareTape,"PrepareTape");
   function EraseTape(
      hDevice : HANDLE;
      dwEraseType : DWORD;
      bImmediate : BOOL
   ) return DWORD;
   pragma import (Cpp,EraseTape,"EraseTape");
   function CreateTapePartition(
      hDevice : HANDLE;
      dwPartitionMethod : DWORD;
      dwCount : DWORD;
      dwSize : DWORD
   ) return DWORD;
   pragma import (Cpp,CreateTapePartition,"CreateTapePartition");
   function WriteTapemark(
      hDevice : HANDLE;
      dwTapemarkType : DWORD;
      dwTapemarkCount : DWORD;
      bImmediate : BOOL
   ) return DWORD;
   pragma import (Cpp,WriteTapemark,"WriteTapemark");
   function GetTapeStatus(
      hDevice : HANDLE
   ) return DWORD;
   pragma import (Cpp,GetTapeStatus,"GetTapeStatus");
   function GetTapeParameters(
      hDevice : HANDLE;
      dwOperation : DWORD;
      lpdwSize : LPDWORD;
      lpTapeInformation : LPVOID
   ) return DWORD;
   pragma import (Cpp,GetTapeParameters,"GetTapeParameters");
   function SetTapeParameters(
      hDevice : HANDLE;
      dwOperation : DWORD;
      lpTapeInformation : LPVOID
   ) return DWORD;
   pragma import (Cpp,SetTapeParameters,"SetTapeParameters");
   function MulDiv(
      nNumber : Interfaces.C.Int;
      nNumerator : Interfaces.C.Int;
      nDenominator : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,MulDiv,"MulDiv");
   type DEP_SYSTEM_POLICY_TYPE_x is (
      DEPPolicyAlwaysOff,
      DEPPolicyAlwaysOn,
      DEPPolicyOptIn,
      DEPPolicyOptOut,
      DEPTotalPolicyCount
   );
   for DEP_SYSTEM_POLICY_TYPE_x use (
      DEPPolicyAlwaysOff => 0,
      DEPPolicyAlwaysOn => 1,
      DEPPolicyOptIn => 2,
      DEPPolicyOptOut => 3,
      DEPTotalPolicyCount => 4
   );
   for DEP_SYSTEM_POLICY_TYPE_x'Size use 32;
   subtype DEP_SYSTEM_POLICY_TYPE is DEP_SYSTEM_POLICY_TYPE_x;
   function GetSystemDEPPolicy return DEP_SYSTEM_POLICY_TYPE;
   pragma import (Cpp,GetSystemDEPPolicy,"GetSystemDEPPolicy");
   function GetSystemRegistryQuota(
      pdwQuotaAllowed : PDWORD;
      pdwQuotaUsed : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetSystemRegistryQuota,"GetSystemRegistryQuota");
   function FileTimeToDosDateTime(
      lpFileTime_x : access constant FILETIME;
      lpFatDate : LPWORD;
      lpFatTime : LPWORD
   ) return BOOL;
   pragma import (Cpp,FileTimeToDosDateTime,"FileTimeToDosDateTime");
   function DosDateTimeToFileTime(
      wFatDate : WORD;
      wFatTime : WORD;
      lpFileTime_x : LPFILETIME
   ) return BOOL;
   pragma import (Cpp,DosDateTimeToFileTime,"DosDateTimeToFileTime");
   function FormatMessageA(
      dwFlags : DWORD;
      lpSource : LPCVOID;
      dwMessageId : DWORD;
      dwLanguageId : DWORD;
      lpBuffer : LPSTR;
      nSize : DWORD;
      Arguments : access va_list
   ) return DWORD;
   pragma import (Cpp,FormatMessageA,"FormatMessageA");
   function FormatMessageW(
      dwFlags : DWORD;
      lpSource : LPCVOID;
      dwMessageId : DWORD;
      dwLanguageId : DWORD;
      lpBuffer : LPWSTR;
      nSize : DWORD;
      Arguments : access va_list
   ) return DWORD;
   pragma import (Cpp,FormatMessageW,"FormatMessageW");
   function CreateMailslotA(
      lpName : LPCSTR;
      nMaxMessageSize : DWORD;
      lReadTimeout : DWORD;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return HANDLE;
   pragma import (Cpp,CreateMailslotA,"CreateMailslotA");
   function CreateMailslotW(
      lpName : LPCWSTR;
      nMaxMessageSize : DWORD;
      lReadTimeout : DWORD;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return HANDLE;
   pragma import (Cpp,CreateMailslotW,"CreateMailslotW");
   function GetMailslotInfo(
      hMailslot : HANDLE;
      lpMaxMessageSize : LPDWORD;
      lpNextSize : LPDWORD;
      lpMessageCount : LPDWORD;
      lpReadTimeout : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetMailslotInfo,"GetMailslotInfo");
   function SetMailslotInfo(
      hMailslot : HANDLE;
      lReadTimeout : DWORD
   ) return BOOL;
   pragma import (Cpp,SetMailslotInfo,"SetMailslotInfo");
   function EncryptFileA(
      lpFileName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,EncryptFileA,"EncryptFileA");
   function EncryptFileW(
      lpFileName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,EncryptFileW,"EncryptFileW");
   function DecryptFileA(
      lpFileName : LPCSTR;
      dwReserved : DWORD
   ) return BOOL;
   pragma import (Cpp,DecryptFileA,"DecryptFileA");
   function DecryptFileW(
      lpFileName : LPCWSTR;
      dwReserved : DWORD
   ) return BOOL;
   pragma import (Cpp,DecryptFileW,"DecryptFileW");
   function FileEncryptionStatusA(
      lpFileName : LPCSTR;
      lpStatus : LPDWORD
   ) return BOOL;
   pragma import (Cpp,FileEncryptionStatusA,"FileEncryptionStatusA");
   function FileEncryptionStatusW(
      lpFileName : LPCWSTR;
      lpStatus : LPDWORD
   ) return BOOL;
   pragma import (Cpp,FileEncryptionStatusW,"FileEncryptionStatusW");
   type PFE_EXPORT_FUNC is access function (p1 : PBYTE ; p2 : PVOID ; p3 : ULONG) return DWORD; -- DWORD (PBYTE, PVOID, ULONG)
   pragma Convention(C,PFE_EXPORT_FUNC);
   type PFE_IMPORT_FUNC is access function (p1 : PBYTE ; p2 : PVOID ; p3 : PULONG) return DWORD; -- DWORD (PBYTE, PVOID, PULONG)
   pragma Convention(C,PFE_IMPORT_FUNC);
   function OpenEncryptedFileRawA(
      lpFileName : LPCSTR;
      ulFlags : ULONG;
      pvContext : access PVOID
   ) return DWORD;
   pragma import (Cpp,OpenEncryptedFileRawA,"OpenEncryptedFileRawA");
   function OpenEncryptedFileRawW(
      lpFileName : LPCWSTR;
      ulFlags : ULONG;
      pvContext : access PVOID
   ) return DWORD;
   pragma import (Cpp,OpenEncryptedFileRawW,"OpenEncryptedFileRawW");
   function ReadEncryptedFileRaw(
      pfExportCallback : PFE_EXPORT_FUNC;
      pvCallbackContext : PVOID;
      pvContext : PVOID
   ) return DWORD;
   pragma import (Cpp,ReadEncryptedFileRaw,"ReadEncryptedFileRaw");
   function WriteEncryptedFileRaw(
      pfImportCallback : PFE_IMPORT_FUNC;
      pvCallbackContext : PVOID;
      pvContext : PVOID
   ) return DWORD;
   pragma import (Cpp,WriteEncryptedFileRaw,"WriteEncryptedFileRaw");
   procedure CloseEncryptedFileRaw(
      pvContext : PVOID
   );
   pragma import (Cpp,CloseEncryptedFileRaw,"CloseEncryptedFileRaw");
   function lstrcmpA(
      lpString1 : LPCSTR;
      lpString2 : LPCSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,lstrcmpA,"lstrcmpA");
   function lstrcmpW(
      lpString1 : LPCWSTR;
      lpString2 : LPCWSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,lstrcmpW,"lstrcmpW");
   function lstrcmpiA(
      lpString1 : LPCSTR;
      lpString2 : LPCSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,lstrcmpiA,"lstrcmpiA");
   function lstrcmpiW(
      lpString1 : LPCWSTR;
      lpString2 : LPCWSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,lstrcmpiW,"lstrcmpiW");
   function lstrcpynA(
      lpString1 : LPSTR;
      lpString2 : LPCSTR;
      iMaxLength : Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,lstrcpynA,"lstrcpynA");
   function lstrcpynW(
      lpString1 : LPWSTR;
      lpString2 : LPCWSTR;
      iMaxLength : Interfaces.C.Int
   ) return LPWSTR;
   pragma import (Cpp,lstrcpynW,"lstrcpynW");
   function lstrcpyA(
      lpString1 : LPSTR;
      lpString2 : LPCSTR
   ) return LPSTR;
   pragma import (Cpp,lstrcpyA,"lstrcpyA");
   function lstrcpyW(
      lpString1 : LPWSTR;
      lpString2 : LPCWSTR
   ) return LPWSTR;
   pragma import (Cpp,lstrcpyW,"lstrcpyW");
   function lstrcatA(
      lpString1 : LPSTR;
      lpString2 : LPCSTR
   ) return LPSTR;
   pragma import (Cpp,lstrcatA,"lstrcatA");
   function lstrcatW(
      lpString1 : LPWSTR;
      lpString2 : LPCWSTR
   ) return LPWSTR;
   pragma import (Cpp,lstrcatW,"lstrcatW");
   function lstrlenA(
      lpString : LPCSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,lstrlenA,"lstrlenA");
   function lstrlenW(
      lpString : LPCWSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,lstrlenW,"lstrlenW");
   function OpenFile(
      lpFileName : LPCSTR;
      lpReOpenBuff : LPOFSTRUCT;
      uStyle : UINT
   ) return HFILE;
   pragma import (Cpp,OpenFile,"OpenFile");
   function lopen(
      lpPathName : LPCSTR;
      iReadWrite : Interfaces.C.Int
   ) return HFILE;
   pragma import (Cpp,lopen,"_lopen");
   function lcreat(
      lpPathName : LPCSTR;
      iAttribute : Interfaces.C.Int
   ) return HFILE;
   pragma import (Cpp,lcreat,"_lcreat");
   function lread(
      hFile_x : HFILE;
      lpBuffer : LPVOID;
      uBytes : UINT
   ) return UINT;
   pragma import (Cpp,lread,"_lread");
   function lwrite(
      hFile_x : HFILE;
      lpBuffer : LPCCH;
      uBytes : UINT
   ) return UINT;
   pragma import (Cpp,lwrite,"_lwrite");
   function hread(
      hFile_x : HFILE;
      lpBuffer : LPVOID;
      lBytes : Interfaces.C.Long
   ) return Interfaces.C.Long;
   pragma import (Cpp,hread,"_hread");
   function hwrite(
      hFile_x : HFILE;
      lpBuffer : LPCCH;
      lBytes : Interfaces.C.Long
   ) return Interfaces.C.Long;
   pragma import (Cpp,hwrite,"_hwrite");
   function lclose(
      hFile_x : HFILE
   ) return HFILE;
   pragma import (Cpp,lclose,"_lclose");
   function llseek(
      hFile_x : HFILE;
      lOffset : LONG;
      iOrigin : Interfaces.C.Int
   ) return LONG;
   pragma import (Cpp,llseek,"_llseek");
   function IsTextUnicode(
      lpv : access Void;
      iSize : Interfaces.C.Int;
      lpiResult : LPINT
   ) return BOOL;
   pragma import (Cpp,IsTextUnicode,"IsTextUnicode");
   function SignalObjectAndWait_x(
      hObjectToSignal : HANDLE;
      hObjectToWaitOn : HANDLE;
      dwMilliseconds : DWORD;
      bAlertable : BOOL
   ) return DWORD;
   pragma import (Cpp,SignalObjectAndWait_x,"SignalObjectAndWait");
   function BackupRead(
      hFile_x : HANDLE;
      lpBuffer : LPBYTE;
      nNumberOfBytesToRead : DWORD;
      lpNumberOfBytesRead : LPDWORD;
      bAbort : BOOL;
      bProcessSecurity : BOOL;
      lpContext_x : access LPVOID
   ) return BOOL;
   pragma import (Cpp,BackupRead,"BackupRead");
   function BackupSeek(
      hFile_x : HANDLE;
      dwLowBytesToSeek : DWORD;
      dwHighBytesToSeek : DWORD;
      lpdwLowByteSeeked : LPDWORD;
      lpdwHighByteSeeked : LPDWORD;
      lpContext_x : access LPVOID
   ) return BOOL;
   pragma import (Cpp,BackupSeek,"BackupSeek");
   function BackupWrite(
      hFile_x : HANDLE;
      lpBuffer : LPBYTE;
      nNumberOfBytesToWrite : DWORD;
      lpNumberOfBytesWritten : LPDWORD;
      bAbort : BOOL;
      bProcessSecurity : BOOL;
      lpContext_x : access LPVOID
   ) return BOOL;
   pragma import (Cpp,BackupWrite,"BackupWrite");
   type WIN32_STREAM_ID_x_cStreamName_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type WIN32_STREAM_ID_x is record
      dwStreamId : DWORD;
      dwStreamAttributes : DWORD;
      Size_x : LARGE_INTEGER;
      dwStreamNameSize : DWORD;
      cStreamName : WIN32_STREAM_ID_x_cStreamName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,WIN32_STREAM_ID_x);
   for WIN32_STREAM_ID_x use record
      dwStreamId at 0 range 0..31;
      dwStreamAttributes at 0 range 32..63;
      Size_x at 0 range 64..127;
      dwStreamNameSize at 0 range 128..159;
      cStreamName at 0 range 160..175;
   end record;
   for WIN32_STREAM_ID_x'Size use 192;
   for WIN32_STREAM_ID_x'Alignment use 8;
   subtype WIN32_STREAM_ID is WIN32_STREAM_ID_x;
   type LPWIN32_STREAM_ID is access all WIN32_STREAM_ID_x;
   type STARTUPINFOEXA_x is record
      StartupInfo_x : STARTUPINFOA;
      lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST;
   end record;
   pragma Convention (C_Pass_By_Copy,STARTUPINFOEXA_x);
   for STARTUPINFOEXA_x use record
      StartupInfo_x at 0 range 0..831;
      lpAttributeList at 0 range 832..895;
   end record;
   for STARTUPINFOEXA_x'Size use 896;
   for STARTUPINFOEXA_x'Alignment use 8;
   subtype STARTUPINFOEXA is STARTUPINFOEXA_x;
   type LPSTARTUPINFOEXA is access all STARTUPINFOEXA_x;
   type STARTUPINFOEXW_x is record
      StartupInfo_x : STARTUPINFOW;
      lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST;
   end record;
   pragma Convention (C_Pass_By_Copy,STARTUPINFOEXW_x);
   for STARTUPINFOEXW_x use record
      StartupInfo_x at 0 range 0..831;
      lpAttributeList at 0 range 832..895;
   end record;
   for STARTUPINFOEXW_x'Size use 896;
   for STARTUPINFOEXW_x'Alignment use 8;
   subtype STARTUPINFOEXW is STARTUPINFOEXW_x;
   type LPSTARTUPINFOEXW is access all STARTUPINFOEXW_x;
   subtype STARTUPINFOEX is STARTUPINFOEXA;
   subtype LPSTARTUPINFOEX is LPSTARTUPINFOEXA;
   function OpenMutexA(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      lpName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,OpenMutexA,"OpenMutexA");
   function CreateSemaphoreA(
      lpSemaphoreAttributes : LPSECURITY_ATTRIBUTES;
      lInitialCount : LONG;
      lMaximumCount : LONG;
      lpName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,CreateSemaphoreA,"CreateSemaphoreA");
   function OpenSemaphoreA(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      lpName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,OpenSemaphoreA,"OpenSemaphoreA");
   function CreateWaitableTimerA(
      lpTimerAttributes : LPSECURITY_ATTRIBUTES;
      bManualReset : BOOL;
      lpTimerName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,CreateWaitableTimerA,"CreateWaitableTimerA");
   function OpenWaitableTimerA(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      lpTimerName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,OpenWaitableTimerA,"OpenWaitableTimerA");
   function CreateSemaphoreExA(
      lpSemaphoreAttributes : LPSECURITY_ATTRIBUTES;
      lInitialCount : LONG;
      lMaximumCount : LONG;
      lpName : LPCSTR;
      dwFlags : DWORD;
      dwDesiredAccess : DWORD
   ) return HANDLE;
   pragma import (Cpp,CreateSemaphoreExA,"CreateSemaphoreExA");
   function CreateWaitableTimerExA(
      lpTimerAttributes : LPSECURITY_ATTRIBUTES;
      lpTimerName : LPCSTR;
      dwFlags : DWORD;
      dwDesiredAccess : DWORD
   ) return HANDLE;
   pragma import (Cpp,CreateWaitableTimerExA,"CreateWaitableTimerExA");
   function CreateFileMappingA(
      hFile_x : HANDLE;
      lpFileMappingAttributes : LPSECURITY_ATTRIBUTES;
      flProtect : DWORD;
      dwMaximumSizeHigh : DWORD;
      dwMaximumSizeLow : DWORD;
      lpName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,CreateFileMappingA,"CreateFileMappingA");
   function CreateFileMappingNumaA(
      hFile_x : HANDLE;
      lpFileMappingAttributes : LPSECURITY_ATTRIBUTES;
      flProtect : DWORD;
      dwMaximumSizeHigh : DWORD;
      dwMaximumSizeLow : DWORD;
      lpName : LPCSTR;
      nndPreferred : DWORD
   ) return HANDLE;
   pragma import (Cpp,CreateFileMappingNumaA,"CreateFileMappingNumaA");
   function OpenFileMappingA(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      lpName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,OpenFileMappingA,"OpenFileMappingA");
   function GetLogicalDriveStringsA(
      nBufferLength : DWORD;
      lpBuffer : LPSTR
   ) return DWORD;
   pragma import (Cpp,GetLogicalDriveStringsA,"GetLogicalDriveStringsA");
   function LoadPackagedLibrary(
      lpwLibFileName : LPCWSTR;
      Reserved : DWORD
   ) return HMODULE;
   pragma import (Cpp,LoadPackagedLibrary,"LoadPackagedLibrary");
   function QueryFullProcessImageNameA(
      hProcess : HANDLE;
      dwFlags : DWORD;
      lpExeName : LPSTR;
      lpdwSize : PDWORD
   ) return BOOL;
   pragma import (Cpp,QueryFullProcessImageNameA,"QueryFullProcessImageNameA");
   function QueryFullProcessImageNameW(
      hProcess : HANDLE;
      dwFlags : DWORD;
      lpExeName : LPWSTR;
      lpdwSize : PDWORD
   ) return BOOL;
   pragma import (Cpp,QueryFullProcessImageNameW,"QueryFullProcessImageNameW");
   type PROC_THREAD_ATTRIBUTE_NUM_x is (
      ProcThreadAttributeParentProcess,
      ProcThreadAttributeHandleList,
      ProcThreadAttributeGroupAffinity,
      ProcThreadAttributePreferredNode,
      ProcThreadAttributeIdealProcessor,
      ProcThreadAttributeUmsThread,
      ProcThreadAttributeMitigationPolicy,
      ProcThreadAttributeSecurityCapabilities,
      ProcThreadAttributeProtectionLevel,
      ProcThreadAttributeJobList,
      ProcThreadAttributeChildProcessPolicy,
      ProcThreadAttributeAllApplicationPackagesPolicy,
      ProcThreadAttributeWin32kFilter,
      ProcThreadAttributeSafeOpenPromptOriginClaim,
      ProcThreadAttributeDesktopAppPolicy,
      ProcThreadAttributePseudoConsole
   );
   for PROC_THREAD_ATTRIBUTE_NUM_x use (
      ProcThreadAttributeParentProcess => 0,
      ProcThreadAttributeHandleList => 2,
      ProcThreadAttributeGroupAffinity => 3,
      ProcThreadAttributePreferredNode => 4,
      ProcThreadAttributeIdealProcessor => 5,
      ProcThreadAttributeUmsThread => 6,
      ProcThreadAttributeMitigationPolicy => 7,
      ProcThreadAttributeSecurityCapabilities => 9,
      ProcThreadAttributeProtectionLevel => 11,
      ProcThreadAttributeJobList => 13,
      ProcThreadAttributeChildProcessPolicy => 14,
      ProcThreadAttributeAllApplicationPackagesPolicy => 15,
      ProcThreadAttributeWin32kFilter => 16,
      ProcThreadAttributeSafeOpenPromptOriginClaim => 17,
      ProcThreadAttributeDesktopAppPolicy => 18,
      ProcThreadAttributePseudoConsole => 22
   );
   for PROC_THREAD_ATTRIBUTE_NUM_x'Size use 32;
   subtype PROC_THREAD_ATTRIBUTE_NUM is PROC_THREAD_ATTRIBUTE_NUM_x;
   procedure GetStartupInfoA(
      lpStartupInfo_x : LPSTARTUPINFOA
   );
   pragma import (Cpp,GetStartupInfoA,"GetStartupInfoA");
   function GetFirmwareEnvironmentVariableA(
      lpName : LPCSTR;
      lpGuid_x : LPCSTR;
      pBuffer : PVOID;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetFirmwareEnvironmentVariableA,"GetFirmwareEnvironmentVariableA");
   function GetFirmwareEnvironmentVariableW(
      lpName : LPCWSTR;
      lpGuid_x : LPCWSTR;
      pBuffer : PVOID;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetFirmwareEnvironmentVariableW,"GetFirmwareEnvironmentVariableW");
   function GetFirmwareEnvironmentVariableExA(
      lpName : LPCSTR;
      lpGuid_x : LPCSTR;
      pBuffer : PVOID;
      nSize : DWORD;
      pdwAttribubutes : PDWORD
   ) return DWORD;
   pragma import (Cpp,GetFirmwareEnvironmentVariableExA,"GetFirmwareEnvironmentVariableExA");
   function GetFirmwareEnvironmentVariableExW(
      lpName : LPCWSTR;
      lpGuid_x : LPCWSTR;
      pBuffer : PVOID;
      nSize : DWORD;
      pdwAttribubutes : PDWORD
   ) return DWORD;
   pragma import (Cpp,GetFirmwareEnvironmentVariableExW,"GetFirmwareEnvironmentVariableExW");
   function SetFirmwareEnvironmentVariableA(
      lpName : LPCSTR;
      lpGuid_x : LPCSTR;
      pValue : PVOID;
      nSize : DWORD
   ) return BOOL;
   pragma import (Cpp,SetFirmwareEnvironmentVariableA,"SetFirmwareEnvironmentVariableA");
   function SetFirmwareEnvironmentVariableW(
      lpName : LPCWSTR;
      lpGuid_x : LPCWSTR;
      pValue : PVOID;
      nSize : DWORD
   ) return BOOL;
   pragma import (Cpp,SetFirmwareEnvironmentVariableW,"SetFirmwareEnvironmentVariableW");
   function SetFirmwareEnvironmentVariableExA(
      lpName : LPCSTR;
      lpGuid_x : LPCSTR;
      pValue : PVOID;
      nSize : DWORD;
      dwAttributes : DWORD
   ) return BOOL;
   pragma import (Cpp,SetFirmwareEnvironmentVariableExA,"SetFirmwareEnvironmentVariableExA");
   function SetFirmwareEnvironmentVariableExW(
      lpName : LPCWSTR;
      lpGuid_x : LPCWSTR;
      pValue : PVOID;
      nSize : DWORD;
      dwAttributes : DWORD
   ) return BOOL;
   pragma import (Cpp,SetFirmwareEnvironmentVariableExW,"SetFirmwareEnvironmentVariableExW");
   function GetFirmwareType(
      FirmwareType : PFIRMWARE_TYPE
   ) return BOOL;
   pragma import (Cpp,GetFirmwareType,"GetFirmwareType");
   function IsNativeVhdBoot(
      NativeVhdBoot : PBOOL
   ) return BOOL;
   pragma import (Cpp,IsNativeVhdBoot,"IsNativeVhdBoot");
   function FindResourceA(
      hModule_x : HMODULE;
      lpName : LPCSTR;
      lpType : LPCSTR
   ) return HRSRC;
   pragma import (Cpp,FindResourceA,"FindResourceA");
   function FindResourceExA(
      hModule_x : HMODULE;
      lpType : LPCSTR;
      lpName : LPCSTR;
      wLanguage : WORD
   ) return HRSRC;
   pragma import (Cpp,FindResourceExA,"FindResourceExA");
   function EnumResourceTypesA(
      hModule_x : HMODULE;
      lpEnumFunc : ENUMRESTYPEPROCA;
      lParam_x : LONG_PTR
   ) return BOOL;
   pragma import (Cpp,EnumResourceTypesA,"EnumResourceTypesA");
   function EnumResourceTypesW(
      hModule_x : HMODULE;
      lpEnumFunc : ENUMRESTYPEPROCW;
      lParam_x : LONG_PTR
   ) return BOOL;
   pragma import (Cpp,EnumResourceTypesW,"EnumResourceTypesW");
   function EnumResourceNamesA(
      hModule_x : HMODULE;
      lpType : LPCSTR;
      lpEnumFunc : ENUMRESNAMEPROCA;
      lParam_x : LONG_PTR
   ) return BOOL;
   pragma import (Cpp,EnumResourceNamesA,"EnumResourceNamesA");
   function EnumResourceLanguagesA(
      hModule_x : HMODULE;
      lpType : LPCSTR;
      lpName : LPCSTR;
      lpEnumFunc : ENUMRESLANGPROCA;
      lParam_x : LONG_PTR
   ) return BOOL;
   pragma import (Cpp,EnumResourceLanguagesA,"EnumResourceLanguagesA");
   function EnumResourceLanguagesW(
      hModule_x : HMODULE;
      lpType : LPCWSTR;
      lpName : LPCWSTR;
      lpEnumFunc : ENUMRESLANGPROCW;
      lParam_x : LONG_PTR
   ) return BOOL;
   pragma import (Cpp,EnumResourceLanguagesW,"EnumResourceLanguagesW");
   function BeginUpdateResourceA(
      pFileName : LPCSTR;
      bDeleteExistingResources : BOOL
   ) return HANDLE;
   pragma import (Cpp,BeginUpdateResourceA,"BeginUpdateResourceA");
   function BeginUpdateResourceW(
      pFileName : LPCWSTR;
      bDeleteExistingResources : BOOL
   ) return HANDLE;
   pragma import (Cpp,BeginUpdateResourceW,"BeginUpdateResourceW");
   function UpdateResourceA(
      hUpdate : HANDLE;
      lpType : LPCSTR;
      lpName : LPCSTR;
      wLanguage : WORD;
      lpData : LPVOID;
      cb : DWORD
   ) return BOOL;
   pragma import (Cpp,UpdateResourceA,"UpdateResourceA");
   function UpdateResourceW(
      hUpdate : HANDLE;
      lpType : LPCWSTR;
      lpName : LPCWSTR;
      wLanguage : WORD;
      lpData : LPVOID;
      cb : DWORD
   ) return BOOL;
   pragma import (Cpp,UpdateResourceW,"UpdateResourceW");
   function EndUpdateResourceA(
      hUpdate : HANDLE;
      fDiscard : BOOL
   ) return BOOL;
   pragma import (Cpp,EndUpdateResourceA,"EndUpdateResourceA");
   function EndUpdateResourceW(
      hUpdate : HANDLE;
      fDiscard : BOOL
   ) return BOOL;
   pragma import (Cpp,EndUpdateResourceW,"EndUpdateResourceW");
   function GlobalAddAtomA(
      lpString : LPCSTR
   ) return ATOM;
   pragma import (Cpp,GlobalAddAtomA,"GlobalAddAtomA");
   function GlobalAddAtomW(
      lpString : LPCWSTR
   ) return ATOM;
   pragma import (Cpp,GlobalAddAtomW,"GlobalAddAtomW");
   function GlobalAddAtomExA(
      lpString : LPCSTR;
      Flags : DWORD
   ) return ATOM;
   pragma import (Cpp,GlobalAddAtomExA,"GlobalAddAtomExA");
   function GlobalAddAtomExW(
      lpString : LPCWSTR;
      Flags : DWORD
   ) return ATOM;
   pragma import (Cpp,GlobalAddAtomExW,"GlobalAddAtomExW");
   function GlobalFindAtomA(
      lpString : LPCSTR
   ) return ATOM;
   pragma import (Cpp,GlobalFindAtomA,"GlobalFindAtomA");
   function GlobalFindAtomW(
      lpString : LPCWSTR
   ) return ATOM;
   pragma import (Cpp,GlobalFindAtomW,"GlobalFindAtomW");
   function GlobalGetAtomNameA(
      nAtom : ATOM;
      lpBuffer : LPSTR;
      nSize : Interfaces.C.Int
   ) return UINT;
   pragma import (Cpp,GlobalGetAtomNameA,"GlobalGetAtomNameA");
   function GlobalGetAtomNameW(
      nAtom : ATOM;
      lpBuffer : LPWSTR;
      nSize : Interfaces.C.Int
   ) return UINT;
   pragma import (Cpp,GlobalGetAtomNameW,"GlobalGetAtomNameW");
   function AddAtomA(
      lpString : LPCSTR
   ) return ATOM;
   pragma import (Cpp,AddAtomA,"AddAtomA");
   function AddAtomW(
      lpString : LPCWSTR
   ) return ATOM;
   pragma import (Cpp,AddAtomW,"AddAtomW");
   function FindAtomA(
      lpString : LPCSTR
   ) return ATOM;
   pragma import (Cpp,FindAtomA,"FindAtomA");
   function FindAtomW(
      lpString : LPCWSTR
   ) return ATOM;
   pragma import (Cpp,FindAtomW,"FindAtomW");
   function GetAtomNameA(
      nAtom : ATOM;
      lpBuffer : LPSTR;
      nSize : Interfaces.C.Int
   ) return UINT;
   pragma import (Cpp,GetAtomNameA,"GetAtomNameA");
   function GetAtomNameW(
      nAtom : ATOM;
      lpBuffer : LPWSTR;
      nSize : Interfaces.C.Int
   ) return UINT;
   pragma import (Cpp,GetAtomNameW,"GetAtomNameW");
   function GetProfileIntA(
      lpAppName : LPCSTR;
      lpKeyName : LPCSTR;
      nDefault : INT
   ) return UINT;
   pragma import (Cpp,GetProfileIntA,"GetProfileIntA");
   function GetProfileIntW(
      lpAppName : LPCWSTR;
      lpKeyName : LPCWSTR;
      nDefault : INT
   ) return UINT;
   pragma import (Cpp,GetProfileIntW,"GetProfileIntW");
   function GetProfileStringA(
      lpAppName : LPCSTR;
      lpKeyName : LPCSTR;
      lpDefault : LPCSTR;
      lpReturnedString : LPSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetProfileStringA,"GetProfileStringA");
   function GetProfileStringW(
      lpAppName : LPCWSTR;
      lpKeyName : LPCWSTR;
      lpDefault : LPCWSTR;
      lpReturnedString : LPWSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetProfileStringW,"GetProfileStringW");
   function WriteProfileStringA(
      lpAppName : LPCSTR;
      lpKeyName : LPCSTR;
      lpString : LPCSTR
   ) return BOOL;
   pragma import (Cpp,WriteProfileStringA,"WriteProfileStringA");
   function WriteProfileStringW(
      lpAppName : LPCWSTR;
      lpKeyName : LPCWSTR;
      lpString : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,WriteProfileStringW,"WriteProfileStringW");
   function GetProfileSectionA(
      lpAppName : LPCSTR;
      lpReturnedString : LPSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetProfileSectionA,"GetProfileSectionA");
   function GetProfileSectionW(
      lpAppName : LPCWSTR;
      lpReturnedString : LPWSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetProfileSectionW,"GetProfileSectionW");
   function WriteProfileSectionA(
      lpAppName : LPCSTR;
      lpString : LPCSTR
   ) return BOOL;
   pragma import (Cpp,WriteProfileSectionA,"WriteProfileSectionA");
   function WriteProfileSectionW(
      lpAppName : LPCWSTR;
      lpString : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,WriteProfileSectionW,"WriteProfileSectionW");
   function GetPrivateProfileIntA(
      lpAppName : LPCSTR;
      lpKeyName : LPCSTR;
      nDefault : INT;
      lpFileName : LPCSTR
   ) return UINT;
   pragma import (Cpp,GetPrivateProfileIntA,"GetPrivateProfileIntA");
   function GetPrivateProfileIntW(
      lpAppName : LPCWSTR;
      lpKeyName : LPCWSTR;
      nDefault : INT;
      lpFileName : LPCWSTR
   ) return UINT;
   pragma import (Cpp,GetPrivateProfileIntW,"GetPrivateProfileIntW");
   function GetPrivateProfileStringA(
      lpAppName : LPCSTR;
      lpKeyName : LPCSTR;
      lpDefault : LPCSTR;
      lpReturnedString : LPSTR;
      nSize : DWORD;
      lpFileName : LPCSTR
   ) return DWORD;
   pragma import (Cpp,GetPrivateProfileStringA,"GetPrivateProfileStringA");
   function GetPrivateProfileStringW(
      lpAppName : LPCWSTR;
      lpKeyName : LPCWSTR;
      lpDefault : LPCWSTR;
      lpReturnedString : LPWSTR;
      nSize : DWORD;
      lpFileName : LPCWSTR
   ) return DWORD;
   pragma import (Cpp,GetPrivateProfileStringW,"GetPrivateProfileStringW");
   function WritePrivateProfileStringA(
      lpAppName : LPCSTR;
      lpKeyName : LPCSTR;
      lpString : LPCSTR;
      lpFileName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,WritePrivateProfileStringA,"WritePrivateProfileStringA");
   function WritePrivateProfileStringW(
      lpAppName : LPCWSTR;
      lpKeyName : LPCWSTR;
      lpString : LPCWSTR;
      lpFileName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,WritePrivateProfileStringW,"WritePrivateProfileStringW");
   function GetPrivateProfileSectionA(
      lpAppName : LPCSTR;
      lpReturnedString : LPSTR;
      nSize : DWORD;
      lpFileName : LPCSTR
   ) return DWORD;
   pragma import (Cpp,GetPrivateProfileSectionA,"GetPrivateProfileSectionA");
   function GetPrivateProfileSectionW(
      lpAppName : LPCWSTR;
      lpReturnedString : LPWSTR;
      nSize : DWORD;
      lpFileName : LPCWSTR
   ) return DWORD;
   pragma import (Cpp,GetPrivateProfileSectionW,"GetPrivateProfileSectionW");
   function WritePrivateProfileSectionA(
      lpAppName : LPCSTR;
      lpString : LPCSTR;
      lpFileName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,WritePrivateProfileSectionA,"WritePrivateProfileSectionA");
   function WritePrivateProfileSectionW(
      lpAppName : LPCWSTR;
      lpString : LPCWSTR;
      lpFileName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,WritePrivateProfileSectionW,"WritePrivateProfileSectionW");
   function GetPrivateProfileSectionNamesA(
      lpszReturnBuffer : LPSTR;
      nSize : DWORD;
      lpFileName : LPCSTR
   ) return DWORD;
   pragma import (Cpp,GetPrivateProfileSectionNamesA,"GetPrivateProfileSectionNamesA");
   function GetPrivateProfileSectionNamesW(
      lpszReturnBuffer : LPWSTR;
      nSize : DWORD;
      lpFileName : LPCWSTR
   ) return DWORD;
   pragma import (Cpp,GetPrivateProfileSectionNamesW,"GetPrivateProfileSectionNamesW");
   function GetPrivateProfileStructA(
      lpszSection : LPCSTR;
      lpszKey : LPCSTR;
      lpStruct : LPVOID;
      uSizeStruct : UINT;
      szFile : LPCSTR
   ) return BOOL;
   pragma import (Cpp,GetPrivateProfileStructA,"GetPrivateProfileStructA");
   function GetPrivateProfileStructW(
      lpszSection : LPCWSTR;
      lpszKey : LPCWSTR;
      lpStruct : LPVOID;
      uSizeStruct : UINT;
      szFile : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,GetPrivateProfileStructW,"GetPrivateProfileStructW");
   function WritePrivateProfileStructA(
      lpszSection : LPCSTR;
      lpszKey : LPCSTR;
      lpStruct : LPVOID;
      uSizeStruct : UINT;
      szFile : LPCSTR
   ) return BOOL;
   pragma import (Cpp,WritePrivateProfileStructA,"WritePrivateProfileStructA");
   function WritePrivateProfileStructW(
      lpszSection : LPCWSTR;
      lpszKey : LPCWSTR;
      lpStruct : LPVOID;
      uSizeStruct : UINT;
      szFile : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,WritePrivateProfileStructW,"WritePrivateProfileStructW");
   function Wow64EnableWow64FsRedirection(
      Wow64FsEnableRedirection : BOOLEAN
   ) return BOOLEAN;
   pragma import (Cpp,Wow64EnableWow64FsRedirection,"Wow64EnableWow64FsRedirection");
   type PGET_SYSTEM_WOW64_DIRECTORY_A is access function (p1 : LPSTR ; p2 : UINT) return UINT; -- UINT (LPSTR, UINT)
   pragma Convention(C,PGET_SYSTEM_WOW64_DIRECTORY_A);
   type PGET_SYSTEM_WOW64_DIRECTORY_W is access function (p1 : LPWSTR ; p2 : UINT) return UINT; -- UINT (LPWSTR, UINT)
   pragma Convention(C,PGET_SYSTEM_WOW64_DIRECTORY_W);
   function SetDllDirectoryA(
      lpPathName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetDllDirectoryA,"SetDllDirectoryA");
   function SetDllDirectoryW(
      lpPathName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetDllDirectoryW,"SetDllDirectoryW");
   function GetDllDirectoryA(
      nBufferLength : DWORD;
      lpBuffer : LPSTR
   ) return DWORD;
   pragma import (Cpp,GetDllDirectoryA,"GetDllDirectoryA");
   function GetDllDirectoryW(
      nBufferLength : DWORD;
      lpBuffer : LPWSTR
   ) return DWORD;
   pragma import (Cpp,GetDllDirectoryW,"GetDllDirectoryW");
   function SetSearchPathMode(
      Flags : DWORD
   ) return BOOL;
   pragma import (Cpp,SetSearchPathMode,"SetSearchPathMode");
   function CreateDirectoryExA(
      lpTemplateDirectory : LPCSTR;
      lpNewDirectory : LPCSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return BOOL;
   pragma import (Cpp,CreateDirectoryExA,"CreateDirectoryExA");
   function CreateDirectoryExW(
      lpTemplateDirectory : LPCWSTR;
      lpNewDirectory : LPCWSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return BOOL;
   pragma import (Cpp,CreateDirectoryExW,"CreateDirectoryExW");
   function CreateDirectoryTransactedA(
      lpTemplateDirectory : LPCSTR;
      lpNewDirectory : LPCSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,CreateDirectoryTransactedA,"CreateDirectoryTransactedA");
   function CreateDirectoryTransactedW(
      lpTemplateDirectory : LPCWSTR;
      lpNewDirectory : LPCWSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,CreateDirectoryTransactedW,"CreateDirectoryTransactedW");
   function RemoveDirectoryTransactedA(
      lpPathName : LPCSTR;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,RemoveDirectoryTransactedA,"RemoveDirectoryTransactedA");
   function RemoveDirectoryTransactedW(
      lpPathName : LPCWSTR;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,RemoveDirectoryTransactedW,"RemoveDirectoryTransactedW");
   function GetFullPathNameTransactedA(
      lpFileName : LPCSTR;
      nBufferLength : DWORD;
      lpBuffer : LPSTR;
      lpFilePart : access LPSTR;
      hTransaction : HANDLE
   ) return DWORD;
   pragma import (Cpp,GetFullPathNameTransactedA,"GetFullPathNameTransactedA");
   function GetFullPathNameTransactedW(
      lpFileName : LPCWSTR;
      nBufferLength : DWORD;
      lpBuffer : LPWSTR;
      lpFilePart : access LPWSTR;
      hTransaction : HANDLE
   ) return DWORD;
   pragma import (Cpp,GetFullPathNameTransactedW,"GetFullPathNameTransactedW");
   function DefineDosDeviceA(
      dwFlags : DWORD;
      lpDeviceName : LPCSTR;
      lpTargetPath : LPCSTR
   ) return BOOL;
   pragma import (Cpp,DefineDosDeviceA,"DefineDosDeviceA");
   function QueryDosDeviceA(
      lpDeviceName : LPCSTR;
      lpTargetPath : LPSTR;
      ucchMax : DWORD
   ) return DWORD;
   pragma import (Cpp,QueryDosDeviceA,"QueryDosDeviceA");
   function CreateFileTransactedA(
      lpFileName : LPCSTR;
      dwDesiredAccess : DWORD;
      dwShareMode : DWORD;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      dwCreationDisposition : DWORD;
      dwFlagsAndAttributes : DWORD;
      hTemplateFile : HANDLE;
      hTransaction : HANDLE;
      pusMiniVersion : PUSHORT;
      lpExtendedParameter : PVOID
   ) return HANDLE;
   pragma import (Cpp,CreateFileTransactedA,"CreateFileTransactedA");
   function CreateFileTransactedW(
      lpFileName : LPCWSTR;
      dwDesiredAccess : DWORD;
      dwShareMode : DWORD;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      dwCreationDisposition : DWORD;
      dwFlagsAndAttributes : DWORD;
      hTemplateFile : HANDLE;
      hTransaction : HANDLE;
      pusMiniVersion : PUSHORT;
      lpExtendedParameter : PVOID
   ) return HANDLE;
   pragma import (Cpp,CreateFileTransactedW,"CreateFileTransactedW");
   function ReOpenFile(
      hOriginalFile : HANDLE;
      dwDesiredAccess : DWORD;
      dwShareMode : DWORD;
      dwFlagsAndAttributes : DWORD
   ) return HANDLE;
   pragma import (Cpp,ReOpenFile,"ReOpenFile");
   function SetFileAttributesTransactedA(
      lpFileName : LPCSTR;
      dwFileAttributes : DWORD;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetFileAttributesTransactedA,"SetFileAttributesTransactedA");
   function SetFileAttributesTransactedW(
      lpFileName : LPCWSTR;
      dwFileAttributes : DWORD;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetFileAttributesTransactedW,"SetFileAttributesTransactedW");
   function GetFileAttributesTransactedA(
      lpFileName : LPCSTR;
      fInfoLevelId : GET_FILEEX_INFO_LEVELS;
      lpFileInformation : LPVOID;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,GetFileAttributesTransactedA,"GetFileAttributesTransactedA");
   function GetFileAttributesTransactedW(
      lpFileName : LPCWSTR;
      fInfoLevelId : GET_FILEEX_INFO_LEVELS;
      lpFileInformation : LPVOID;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,GetFileAttributesTransactedW,"GetFileAttributesTransactedW");
   function GetCompressedFileSizeTransactedA(
      lpFileName : LPCSTR;
      lpFileSizeHigh : LPDWORD;
      hTransaction : HANDLE
   ) return DWORD;
   pragma import (Cpp,GetCompressedFileSizeTransactedA,"GetCompressedFileSizeTransactedA");
   function GetCompressedFileSizeTransactedW(
      lpFileName : LPCWSTR;
      lpFileSizeHigh : LPDWORD;
      hTransaction : HANDLE
   ) return DWORD;
   pragma import (Cpp,GetCompressedFileSizeTransactedW,"GetCompressedFileSizeTransactedW");
   function DeleteFileTransactedA(
      lpFileName : LPCSTR;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,DeleteFileTransactedA,"DeleteFileTransactedA");
   function DeleteFileTransactedW(
      lpFileName : LPCWSTR;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,DeleteFileTransactedW,"DeleteFileTransactedW");
   function CheckNameLegalDOS8Dot3A(
      lpName : LPCSTR;
      lpOemName : LPSTR;
      OemNameSize : DWORD;
      pbNameContainsSpaces : PBOOL;
      pbNameLegal : PBOOL
   ) return BOOL;
   pragma import (Cpp,CheckNameLegalDOS8Dot3A,"CheckNameLegalDOS8Dot3A");
   function CheckNameLegalDOS8Dot3W(
      lpName : LPCWSTR;
      lpOemName : LPSTR;
      OemNameSize : DWORD;
      pbNameContainsSpaces : PBOOL;
      pbNameLegal : PBOOL
   ) return BOOL;
   pragma import (Cpp,CheckNameLegalDOS8Dot3W,"CheckNameLegalDOS8Dot3W");
   function FindFirstFileTransactedA(
      lpFileName : LPCSTR;
      fInfoLevelId : FINDEX_INFO_LEVELS;
      lpFindFileData : LPVOID;
      fSearchOp : FINDEX_SEARCH_OPS;
      lpSearchFilter : LPVOID;
      dwAdditionalFlags : DWORD;
      hTransaction : HANDLE
   ) return HANDLE;
   pragma import (Cpp,FindFirstFileTransactedA,"FindFirstFileTransactedA");
   function FindFirstFileTransactedW(
      lpFileName : LPCWSTR;
      fInfoLevelId : FINDEX_INFO_LEVELS;
      lpFindFileData : LPVOID;
      fSearchOp : FINDEX_SEARCH_OPS;
      lpSearchFilter : LPVOID;
      dwAdditionalFlags : DWORD;
      hTransaction : HANDLE
   ) return HANDLE;
   pragma import (Cpp,FindFirstFileTransactedW,"FindFirstFileTransactedW");
   function CopyFileA(
      lpExistingFileName : LPCSTR;
      lpNewFileName : LPCSTR;
      bFailIfExists : BOOL
   ) return BOOL;
   pragma import (Cpp,CopyFileA,"CopyFileA");
   function CopyFileW(
      lpExistingFileName : LPCWSTR;
      lpNewFileName : LPCWSTR;
      bFailIfExists : BOOL
   ) return BOOL;
   pragma import (Cpp,CopyFileW,"CopyFileW");
   type LPPROGRESS_ROUTINE is access function (p1 : LARGE_INTEGER ; p2 : LARGE_INTEGER ; p3 : LARGE_INTEGER ; p4 : LARGE_INTEGER ; p5 : DWORD ; p6 : DWORD ; p7 : HANDLE ; p8 : HANDLE ; p9 : LPVOID) return DWORD; -- DWORD (LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, DWORD, DWORD, HANDLE, HANDLE, LPVOID)
   pragma Convention(C,LPPROGRESS_ROUTINE);
   function CopyFileExA(
      lpExistingFileName : LPCSTR;
      lpNewFileName : LPCSTR;
      lpProgressRoutine : LPPROGRESS_ROUTINE;
      lpData : LPVOID;
      pbCancel : LPBOOL;
      dwCopyFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,CopyFileExA,"CopyFileExA");
   function CopyFileExW(
      lpExistingFileName : LPCWSTR;
      lpNewFileName : LPCWSTR;
      lpProgressRoutine : LPPROGRESS_ROUTINE;
      lpData : LPVOID;
      pbCancel : LPBOOL;
      dwCopyFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,CopyFileExW,"CopyFileExW");
   function CopyFileTransactedA(
      lpExistingFileName : LPCSTR;
      lpNewFileName : LPCSTR;
      lpProgressRoutine : LPPROGRESS_ROUTINE;
      lpData : LPVOID;
      pbCancel : LPBOOL;
      dwCopyFlags : DWORD;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,CopyFileTransactedA,"CopyFileTransactedA");
   function CopyFileTransactedW(
      lpExistingFileName : LPCWSTR;
      lpNewFileName : LPCWSTR;
      lpProgressRoutine : LPPROGRESS_ROUTINE;
      lpData : LPVOID;
      pbCancel : LPBOOL;
      dwCopyFlags : DWORD;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,CopyFileTransactedW,"CopyFileTransactedW");
   type COPYFILE2_MESSAGE_TYPE_x is (
      COPYFILE2_CALLBACK_NONE,
      COPYFILE2_CALLBACK_CHUNK_STARTED,
      COPYFILE2_CALLBACK_CHUNK_FINISHED,
      COPYFILE2_CALLBACK_STREAM_STARTED,
      COPYFILE2_CALLBACK_STREAM_FINISHED,
      COPYFILE2_CALLBACK_POLL_CONTINUE,
      COPYFILE2_CALLBACK_ERROR,
      COPYFILE2_CALLBACK_MAX
   );
   for COPYFILE2_MESSAGE_TYPE_x use (
      COPYFILE2_CALLBACK_NONE => 0,
      COPYFILE2_CALLBACK_CHUNK_STARTED => 1,
      COPYFILE2_CALLBACK_CHUNK_FINISHED => 2,
      COPYFILE2_CALLBACK_STREAM_STARTED => 3,
      COPYFILE2_CALLBACK_STREAM_FINISHED => 4,
      COPYFILE2_CALLBACK_POLL_CONTINUE => 5,
      COPYFILE2_CALLBACK_ERROR => 6,
      COPYFILE2_CALLBACK_MAX => 7
   );
   for COPYFILE2_MESSAGE_TYPE_x'Size use 32;
   subtype COPYFILE2_MESSAGE_TYPE is COPYFILE2_MESSAGE_TYPE_x;
   type COPYFILE2_MESSAGE_ACTION_x is (
      COPYFILE2_PROGRESS_CONTINUE,
      COPYFILE2_PROGRESS_CANCEL,
      COPYFILE2_PROGRESS_STOP,
      COPYFILE2_PROGRESS_QUIET,
      COPYFILE2_PROGRESS_PAUSE
   );
   for COPYFILE2_MESSAGE_ACTION_x use (
      COPYFILE2_PROGRESS_CONTINUE => 0,
      COPYFILE2_PROGRESS_CANCEL => 1,
      COPYFILE2_PROGRESS_STOP => 2,
      COPYFILE2_PROGRESS_QUIET => 3,
      COPYFILE2_PROGRESS_PAUSE => 4
   );
   for COPYFILE2_MESSAGE_ACTION_x'Size use 32;
   subtype COPYFILE2_MESSAGE_ACTION is COPYFILE2_MESSAGE_ACTION_x;
   type COPYFILE2_COPY_PHASE_x is (
      COPYFILE2_PHASE_NONE,
      COPYFILE2_PHASE_PREPARE_SOURCE,
      COPYFILE2_PHASE_PREPARE_DEST,
      COPYFILE2_PHASE_READ_SOURCE,
      COPYFILE2_PHASE_WRITE_DESTINATION,
      COPYFILE2_PHASE_SERVER_COPY,
      COPYFILE2_PHASE_NAMEGRAFT_COPY,
      COPYFILE2_PHASE_MAX
   );
   for COPYFILE2_COPY_PHASE_x use (
      COPYFILE2_PHASE_NONE => 0,
      COPYFILE2_PHASE_PREPARE_SOURCE => 1,
      COPYFILE2_PHASE_PREPARE_DEST => 2,
      COPYFILE2_PHASE_READ_SOURCE => 3,
      COPYFILE2_PHASE_WRITE_DESTINATION => 4,
      COPYFILE2_PHASE_SERVER_COPY => 5,
      COPYFILE2_PHASE_NAMEGRAFT_COPY => 6,
      COPYFILE2_PHASE_MAX => 7
   );
   for COPYFILE2_COPY_PHASE_x'Size use 32;
   subtype COPYFILE2_COPY_PHASE is COPYFILE2_COPY_PHASE_x;
   type Anonymous_Record_151 is record
      dwStreamNumber : DWORD;
      dwReserved : DWORD;
      hSourceFile : HANDLE;
      hDestinationFile : HANDLE;
      uliChunkNumber : ULARGE_INTEGER;
      uliChunkSize : ULARGE_INTEGER;
      uliStreamSize : ULARGE_INTEGER;
      uliTotalFileSize : ULARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_151);
   for Anonymous_Record_151 use record
      dwStreamNumber at 0 range 0..31;
      dwReserved at 0 range 32..63;
      hSourceFile at 0 range 64..127;
      hDestinationFile at 0 range 128..191;
      uliChunkNumber at 0 range 192..255;
      uliChunkSize at 0 range 256..319;
      uliStreamSize at 0 range 320..383;
      uliTotalFileSize at 0 range 384..447;
   end record;
   for Anonymous_Record_151'Size use 448;
   for Anonymous_Record_151'Alignment use 8;
   type Anonymous_Record_152 is record
      dwStreamNumber : DWORD;
      dwFlags : DWORD;
      hSourceFile : HANDLE;
      hDestinationFile : HANDLE;
      uliChunkNumber : ULARGE_INTEGER;
      uliChunkSize : ULARGE_INTEGER;
      uliStreamSize : ULARGE_INTEGER;
      uliStreamBytesTransferred : ULARGE_INTEGER;
      uliTotalFileSize : ULARGE_INTEGER;
      uliTotalBytesTransferred : ULARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_152);
   for Anonymous_Record_152 use record
      dwStreamNumber at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hSourceFile at 0 range 64..127;
      hDestinationFile at 0 range 128..191;
      uliChunkNumber at 0 range 192..255;
      uliChunkSize at 0 range 256..319;
      uliStreamSize at 0 range 320..383;
      uliStreamBytesTransferred at 0 range 384..447;
      uliTotalFileSize at 0 range 448..511;
      uliTotalBytesTransferred at 0 range 512..575;
   end record;
   for Anonymous_Record_152'Size use 576;
   for Anonymous_Record_152'Alignment use 8;
   type Anonymous_Record_153 is record
      dwStreamNumber : DWORD;
      dwReserved : DWORD;
      hSourceFile : HANDLE;
      hDestinationFile : HANDLE;
      uliStreamSize : ULARGE_INTEGER;
      uliTotalFileSize : ULARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_153);
   for Anonymous_Record_153 use record
      dwStreamNumber at 0 range 0..31;
      dwReserved at 0 range 32..63;
      hSourceFile at 0 range 64..127;
      hDestinationFile at 0 range 128..191;
      uliStreamSize at 0 range 192..255;
      uliTotalFileSize at 0 range 256..319;
   end record;
   for Anonymous_Record_153'Size use 320;
   for Anonymous_Record_153'Alignment use 8;
   type Anonymous_Record_154 is record
      dwStreamNumber : DWORD;
      dwReserved : DWORD;
      hSourceFile : HANDLE;
      hDestinationFile : HANDLE;
      uliStreamSize : ULARGE_INTEGER;
      uliStreamBytesTransferred : ULARGE_INTEGER;
      uliTotalFileSize : ULARGE_INTEGER;
      uliTotalBytesTransferred : ULARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_154);
   for Anonymous_Record_154 use record
      dwStreamNumber at 0 range 0..31;
      dwReserved at 0 range 32..63;
      hSourceFile at 0 range 64..127;
      hDestinationFile at 0 range 128..191;
      uliStreamSize at 0 range 192..255;
      uliStreamBytesTransferred at 0 range 256..319;
      uliTotalFileSize at 0 range 320..383;
      uliTotalBytesTransferred at 0 range 384..447;
   end record;
   for Anonymous_Record_154'Size use 448;
   for Anonymous_Record_154'Alignment use 8;
   type Anonymous_Record_155 is record
      dwReserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_155);
   for Anonymous_Record_155 use record
      dwReserved at 0 range 0..31;
   end record;
   for Anonymous_Record_155'Size use 32;
   for Anonymous_Record_155'Alignment use 4;
   type Anonymous_Record_156 is record
      CopyPhase : COPYFILE2_COPY_PHASE;
      dwStreamNumber : DWORD;
      hrFailure : HRESULT;
      dwReserved : DWORD;
      uliChunkNumber : ULARGE_INTEGER;
      uliStreamSize : ULARGE_INTEGER;
      uliStreamBytesTransferred : ULARGE_INTEGER;
      uliTotalFileSize : ULARGE_INTEGER;
      uliTotalBytesTransferred : ULARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_156);
   for Anonymous_Record_156 use record
      CopyPhase at 0 range 0..31;
      dwStreamNumber at 0 range 32..63;
      hrFailure at 0 range 64..95;
      dwReserved at 0 range 96..127;
      uliChunkNumber at 0 range 128..191;
      uliStreamSize at 0 range 192..255;
      uliStreamBytesTransferred at 0 range 256..319;
      uliTotalFileSize at 0 range 320..383;
      uliTotalBytesTransferred at 0 range 384..447;
   end record;
   for Anonymous_Record_156'Size use 448;
   for Anonymous_Record_156'Alignment use 8;
   type Anonymous_Record_150 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_151;
         when 1 =>
            field_2 : Anonymous_Record_152;
         when 2 =>
            field_3 : Anonymous_Record_153;
         when 3 =>
            field_4 : Anonymous_Record_154;
         when 4 =>
            field_5 : Anonymous_Record_155;
         when others => 
            field_6 : Anonymous_Record_156;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_150);
   pragma Unchecked_Union (Anonymous_Record_150);
   for Anonymous_Record_150'Size use 576;
   for Anonymous_Record_150'Alignment use 8;
   type COPYFILE2_MESSAGE is record
      type_x : COPYFILE2_MESSAGE_TYPE;
      dwPadding : DWORD;
      field_1 : Anonymous_Record_150;
   end record;
   pragma Convention (C_Pass_By_Copy,COPYFILE2_MESSAGE);
   for COPYFILE2_MESSAGE use record
      type_x at 0 range 0..31;
      dwPadding at 0 range 32..63;
      field_1 at 0 range 64..639;
   end record;
   for COPYFILE2_MESSAGE'Size use 640;
   for COPYFILE2_MESSAGE'Alignment use 8;
   type PCOPYFILE2_PROGRESS_ROUTINE is access function (p1 : access COPYFILE2_MESSAGE ; p2 : PVOID) return COPYFILE2_MESSAGE_ACTION; -- COPYFILE2_MESSAGE_ACTION (const COPYFILE2_MESSAGE *, PVOID)
   pragma Convention(C,PCOPYFILE2_PROGRESS_ROUTINE);
   type COPYFILE2_EXTENDED_PARAMETERS is record
      dwSize : DWORD;
      dwCopyFlags : DWORD;
      pfCancel : access BOOL;
      pProgressRoutine : PCOPYFILE2_PROGRESS_ROUTINE;
      pvCallbackContext : PVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,COPYFILE2_EXTENDED_PARAMETERS);
   for COPYFILE2_EXTENDED_PARAMETERS use record
      dwSize at 0 range 0..31;
      dwCopyFlags at 0 range 32..63;
      pfCancel at 0 range 64..127;
      pProgressRoutine at 0 range 128..191;
      pvCallbackContext at 0 range 192..255;
   end record;
   for COPYFILE2_EXTENDED_PARAMETERS'Size use 256;
   for COPYFILE2_EXTENDED_PARAMETERS'Alignment use 8;
   function CopyFile2(
      pwszExistingFileName : PCWSTR;
      pwszNewFileName : PCWSTR;
      pExtendedParameters : access COPYFILE2_EXTENDED_PARAMETERS
   ) return HRESULT;
   pragma import (Cpp,CopyFile2,"CopyFile2");
   function MoveFileA(
      lpExistingFileName : LPCSTR;
      lpNewFileName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,MoveFileA,"MoveFileA");
   function MoveFileW(
      lpExistingFileName : LPCWSTR;
      lpNewFileName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,MoveFileW,"MoveFileW");
   function MoveFileExA(
      lpExistingFileName : LPCSTR;
      lpNewFileName : LPCSTR;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,MoveFileExA,"MoveFileExA");
   function MoveFileExW(
      lpExistingFileName : LPCWSTR;
      lpNewFileName : LPCWSTR;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,MoveFileExW,"MoveFileExW");
   function MoveFileWithProgressA(
      lpExistingFileName : LPCSTR;
      lpNewFileName : LPCSTR;
      lpProgressRoutine : LPPROGRESS_ROUTINE;
      lpData : LPVOID;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,MoveFileWithProgressA,"MoveFileWithProgressA");
   function MoveFileWithProgressW(
      lpExistingFileName : LPCWSTR;
      lpNewFileName : LPCWSTR;
      lpProgressRoutine : LPPROGRESS_ROUTINE;
      lpData : LPVOID;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,MoveFileWithProgressW,"MoveFileWithProgressW");
   function MoveFileTransactedA(
      lpExistingFileName : LPCSTR;
      lpNewFileName : LPCSTR;
      lpProgressRoutine : LPPROGRESS_ROUTINE;
      lpData : LPVOID;
      dwFlags : DWORD;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,MoveFileTransactedA,"MoveFileTransactedA");
   function MoveFileTransactedW(
      lpExistingFileName : LPCWSTR;
      lpNewFileName : LPCWSTR;
      lpProgressRoutine : LPPROGRESS_ROUTINE;
      lpData : LPVOID;
      dwFlags : DWORD;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,MoveFileTransactedW,"MoveFileTransactedW");
   function ReplaceFileA(
      lpReplacedFileName : LPCSTR;
      lpReplacementFileName : LPCSTR;
      lpBackupFileName : LPCSTR;
      dwReplaceFlags : DWORD;
      lpExclude : LPVOID;
      lpReserved : LPVOID
   ) return BOOL;
   pragma import (Cpp,ReplaceFileA,"ReplaceFileA");
   function ReplaceFileW(
      lpReplacedFileName : LPCWSTR;
      lpReplacementFileName : LPCWSTR;
      lpBackupFileName : LPCWSTR;
      dwReplaceFlags : DWORD;
      lpExclude : LPVOID;
      lpReserved : LPVOID
   ) return BOOL;
   pragma import (Cpp,ReplaceFileW,"ReplaceFileW");
   function CreateHardLinkA(
      lpFileName : LPCSTR;
      lpExistingFileName : LPCSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return BOOL;
   pragma import (Cpp,CreateHardLinkA,"CreateHardLinkA");
   function CreateHardLinkW(
      lpFileName : LPCWSTR;
      lpExistingFileName : LPCWSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return BOOL;
   pragma import (Cpp,CreateHardLinkW,"CreateHardLinkW");
   function CreateHardLinkTransactedA(
      lpFileName : LPCSTR;
      lpExistingFileName : LPCSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,CreateHardLinkTransactedA,"CreateHardLinkTransactedA");
   function CreateHardLinkTransactedW(
      lpFileName : LPCWSTR;
      lpExistingFileName : LPCWSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      hTransaction : HANDLE
   ) return BOOL;
   pragma import (Cpp,CreateHardLinkTransactedW,"CreateHardLinkTransactedW");
   function FindFirstStreamTransactedW(
      lpFileName : LPCWSTR;
      InfoLevel : STREAM_INFO_LEVELS;
      lpFindStreamData : LPVOID;
      dwFlags : DWORD;
      hTransaction : HANDLE
   ) return HANDLE;
   pragma import (Cpp,FindFirstStreamTransactedW,"FindFirstStreamTransactedW");
   function FindFirstFileNameTransactedW(
      lpFileName : LPCWSTR;
      dwFlags : DWORD;
      StringLength : LPDWORD;
      LinkName : PWSTR;
      hTransaction : HANDLE
   ) return HANDLE;
   pragma import (Cpp,FindFirstFileNameTransactedW,"FindFirstFileNameTransactedW");
   function CreateNamedPipeA(
      lpName : LPCSTR;
      dwOpenMode : DWORD;
      dwPipeMode : DWORD;
      nMaxInstances : DWORD;
      nOutBufferSize : DWORD;
      nInBufferSize : DWORD;
      nDefaultTimeOut : DWORD;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return HANDLE;
   pragma import (Cpp,CreateNamedPipeA,"CreateNamedPipeA");
   function GetNamedPipeHandleStateA(
      hNamedPipe : HANDLE;
      lpState : LPDWORD;
      lpCurInstances : LPDWORD;
      lpMaxCollectionCount : LPDWORD;
      lpCollectDataTimeout : LPDWORD;
      lpUserName : LPSTR;
      nMaxUserNameSize : DWORD
   ) return BOOL;
   pragma import (Cpp,GetNamedPipeHandleStateA,"GetNamedPipeHandleStateA");
   function CallNamedPipeA(
      lpNamedPipeName : LPCSTR;
      lpInBuffer : LPVOID;
      nInBufferSize : DWORD;
      lpOutBuffer : LPVOID;
      nOutBufferSize : DWORD;
      lpBytesRead : LPDWORD;
      nTimeOut : DWORD
   ) return BOOL;
   pragma import (Cpp,CallNamedPipeA,"CallNamedPipeA");
   function WaitNamedPipeA(
      lpNamedPipeName : LPCSTR;
      nTimeOut : DWORD
   ) return BOOL;
   pragma import (Cpp,WaitNamedPipeA,"WaitNamedPipeA");
   function GetNamedPipeClientComputerNameA(
      Pipe : HANDLE;
      ClientComputerName : LPSTR;
      ClientComputerNameLength : ULONG
   ) return BOOL;
   pragma import (Cpp,GetNamedPipeClientComputerNameA,"GetNamedPipeClientComputerNameA");
   function GetNamedPipeClientProcessId(
      Pipe : HANDLE;
      ClientProcessId : PULONG
   ) return BOOL;
   pragma import (Cpp,GetNamedPipeClientProcessId,"GetNamedPipeClientProcessId");
   function GetNamedPipeClientSessionId(
      Pipe : HANDLE;
      ClientSessionId : PULONG
   ) return BOOL;
   pragma import (Cpp,GetNamedPipeClientSessionId,"GetNamedPipeClientSessionId");
   function GetNamedPipeServerProcessId(
      Pipe : HANDLE;
      ServerProcessId : PULONG
   ) return BOOL;
   pragma import (Cpp,GetNamedPipeServerProcessId,"GetNamedPipeServerProcessId");
   function GetNamedPipeServerSessionId(
      Pipe : HANDLE;
      ServerSessionId : PULONG
   ) return BOOL;
   pragma import (Cpp,GetNamedPipeServerSessionId,"GetNamedPipeServerSessionId");
   function SetVolumeLabelA(
      lpRootPathName : LPCSTR;
      lpVolumeName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetVolumeLabelA,"SetVolumeLabelA");
   function SetVolumeLabelW(
      lpRootPathName : LPCWSTR;
      lpVolumeName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetVolumeLabelW,"SetVolumeLabelW");
   function SetFileBandwidthReservation(
      hFile_x : HANDLE;
      nPeriodMilliseconds : DWORD;
      nBytesPerPeriod : DWORD;
      bDiscardable : BOOL;
      lpTransferSize : LPDWORD;
      lpNumOutstandingRequests : LPDWORD
   ) return BOOL;
   pragma import (Cpp,SetFileBandwidthReservation,"SetFileBandwidthReservation");
   function GetFileBandwidthReservation(
      hFile_x : HANDLE;
      lpPeriodMilliseconds : LPDWORD;
      lpBytesPerPeriod : LPDWORD;
      pDiscardable : LPBOOL;
      lpTransferSize : LPDWORD;
      lpNumOutstandingRequests : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetFileBandwidthReservation,"GetFileBandwidthReservation");
   function ClearEventLogA(
      hEventLog : HANDLE;
      lpBackupFileName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,ClearEventLogA,"ClearEventLogA");
   function ClearEventLogW(
      hEventLog : HANDLE;
      lpBackupFileName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,ClearEventLogW,"ClearEventLogW");
   function BackupEventLogA(
      hEventLog : HANDLE;
      lpBackupFileName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,BackupEventLogA,"BackupEventLogA");
   function BackupEventLogW(
      hEventLog : HANDLE;
      lpBackupFileName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,BackupEventLogW,"BackupEventLogW");
   function CloseEventLog(
      hEventLog : HANDLE
   ) return BOOL;
   pragma import (Cpp,CloseEventLog,"CloseEventLog");
   function DeregisterEventSource(
      hEventLog : HANDLE
   ) return BOOL;
   pragma import (Cpp,DeregisterEventSource,"DeregisterEventSource");
   function NotifyChangeEventLog(
      hEventLog : HANDLE;
      hEvent : HANDLE
   ) return BOOL;
   pragma import (Cpp,NotifyChangeEventLog,"NotifyChangeEventLog");
   function GetNumberOfEventLogRecords(
      hEventLog : HANDLE;
      NumberOfRecords : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetNumberOfEventLogRecords,"GetNumberOfEventLogRecords");
   function GetOldestEventLogRecord(
      hEventLog : HANDLE;
      OldestRecord : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetOldestEventLogRecord,"GetOldestEventLogRecord");
   function OpenEventLogA(
      lpUNCServerName : LPCSTR;
      lpSourceName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,OpenEventLogA,"OpenEventLogA");
   function OpenEventLogW(
      lpUNCServerName : LPCWSTR;
      lpSourceName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,OpenEventLogW,"OpenEventLogW");
   function RegisterEventSourceA(
      lpUNCServerName : LPCSTR;
      lpSourceName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,RegisterEventSourceA,"RegisterEventSourceA");
   function RegisterEventSourceW(
      lpUNCServerName : LPCWSTR;
      lpSourceName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,RegisterEventSourceW,"RegisterEventSourceW");
   function OpenBackupEventLogA(
      lpUNCServerName : LPCSTR;
      lpFileName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,OpenBackupEventLogA,"OpenBackupEventLogA");
   function OpenBackupEventLogW(
      lpUNCServerName : LPCWSTR;
      lpFileName : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,OpenBackupEventLogW,"OpenBackupEventLogW");
   function ReadEventLogA(
      hEventLog : HANDLE;
      dwReadFlags : DWORD;
      dwRecordOffset : DWORD;
      lpBuffer : LPVOID;
      nNumberOfBytesToRead : DWORD;
      pnBytesRead : access DWORD;
      pnMinNumberOfBytesNeeded : access DWORD
   ) return BOOL;
   pragma import (Cpp,ReadEventLogA,"ReadEventLogA");
   function ReadEventLogW(
      hEventLog : HANDLE;
      dwReadFlags : DWORD;
      dwRecordOffset : DWORD;
      lpBuffer : LPVOID;
      nNumberOfBytesToRead : DWORD;
      pnBytesRead : access DWORD;
      pnMinNumberOfBytesNeeded : access DWORD
   ) return BOOL;
   pragma import (Cpp,ReadEventLogW,"ReadEventLogW");
   function ReportEventA(
      hEventLog : HANDLE;
      wType : WORD;
      wCategory : WORD;
      dwEventID : DWORD;
      lpUserSid : PSID;
      wNumStrings : WORD;
      dwDataSize : DWORD;
      lpStrings : access LPCSTR;
      lpRawData : LPVOID
   ) return BOOL;
   pragma import (Cpp,ReportEventA,"ReportEventA");
   function ReportEventW(
      hEventLog : HANDLE;
      wType : WORD;
      wCategory : WORD;
      dwEventID : DWORD;
      lpUserSid : PSID;
      wNumStrings : WORD;
      dwDataSize : DWORD;
      lpStrings : access LPCWSTR;
      lpRawData : LPVOID
   ) return BOOL;
   pragma import (Cpp,ReportEventW,"ReportEventW");
   type EVENTLOG_FULL_INFORMATION_x is record
      dwFull : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,EVENTLOG_FULL_INFORMATION_x);
   for EVENTLOG_FULL_INFORMATION_x use record
      dwFull at 0 range 0..31;
   end record;
   for EVENTLOG_FULL_INFORMATION_x'Size use 32;
   for EVENTLOG_FULL_INFORMATION_x'Alignment use 4;
   subtype EVENTLOG_FULL_INFORMATION is EVENTLOG_FULL_INFORMATION_x;
   type LPEVENTLOG_FULL_INFORMATION is access all EVENTLOG_FULL_INFORMATION_x;
   function GetEventLogInformation(
      hEventLog : HANDLE;
      dwInfoLevel : DWORD;
      lpBuffer : LPVOID;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetEventLogInformation,"GetEventLogInformation");
   subtype OPERATION_ID is ULONG;
   type OPERATION_START_PARAMETERS_x is record
      Version : ULONG;
      OperationId : OPERATION_ID;
      Flags : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,OPERATION_START_PARAMETERS_x);
   for OPERATION_START_PARAMETERS_x use record
      Version at 0 range 0..31;
      OperationId at 0 range 32..63;
      Flags at 0 range 64..95;
   end record;
   for OPERATION_START_PARAMETERS_x'Size use 96;
   for OPERATION_START_PARAMETERS_x'Alignment use 4;
   subtype OPERATION_START_PARAMETERS is OPERATION_START_PARAMETERS_x;
   type POPERATION_START_PARAMETERS is access all OPERATION_START_PARAMETERS_x;
   type OPERATION_END_PARAMETERS_x is record
      Version : ULONG;
      OperationId : OPERATION_ID;
      Flags : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,OPERATION_END_PARAMETERS_x);
   for OPERATION_END_PARAMETERS_x use record
      Version at 0 range 0..31;
      OperationId at 0 range 32..63;
      Flags at 0 range 64..95;
   end record;
   for OPERATION_END_PARAMETERS_x'Size use 96;
   for OPERATION_END_PARAMETERS_x'Alignment use 4;
   subtype OPERATION_END_PARAMETERS is OPERATION_END_PARAMETERS_x;
   type POPERATION_END_PARAMETERS is access all OPERATION_END_PARAMETERS_x;
   function OperationStart(
      OperationStartParams : access OPERATION_START_PARAMETERS
   ) return BOOL;
   pragma import (Cpp,OperationStart,"OperationStart");
   function OperationEnd(
      OperationEndParams : access OPERATION_END_PARAMETERS
   ) return BOOL;
   pragma import (Cpp,OperationEnd,"OperationEnd");
   function AccessCheckAndAuditAlarmA(
      SubsystemName : LPCSTR;
      HandleId : LPVOID;
      ObjectTypeName : LPSTR;
      ObjectName : LPSTR;
      SecurityDescriptor : PSECURITY_DESCRIPTOR;
      DesiredAccess : DWORD;
      GenericMapping : PGENERIC_MAPPING;
      ObjectCreation : BOOL;
      GrantedAccess : LPDWORD;
      AccessStatus : LPBOOL;
      pfGenerateOnClose : LPBOOL
   ) return BOOL;
   pragma import (Cpp,AccessCheckAndAuditAlarmA,"AccessCheckAndAuditAlarmA");
   function AccessCheckByTypeAndAuditAlarmA(
      SubsystemName : LPCSTR;
      HandleId : LPVOID;
      ObjectTypeName : LPCSTR;
      ObjectName : LPCSTR;
      SecurityDescriptor : PSECURITY_DESCRIPTOR;
      PrincipalSelfSid : PSID;
      DesiredAccess : DWORD;
      AuditType : AUDIT_EVENT_TYPE;
      Flags : DWORD;
      ObjectTypeList : POBJECT_TYPE_LIST;
      ObjectTypeListLength : DWORD;
      GenericMapping : PGENERIC_MAPPING;
      ObjectCreation : BOOL;
      GrantedAccess : LPDWORD;
      AccessStatus : LPBOOL;
      pfGenerateOnClose : LPBOOL
   ) return BOOL;
   pragma import (Cpp,AccessCheckByTypeAndAuditAlarmA,"AccessCheckByTypeAndAuditAlarmA");
   function AccessCheckByTypeResultListAndAuditAlarmA(
      SubsystemName : LPCSTR;
      HandleId : LPVOID;
      ObjectTypeName : LPCSTR;
      ObjectName : LPCSTR;
      SecurityDescriptor : PSECURITY_DESCRIPTOR;
      PrincipalSelfSid : PSID;
      DesiredAccess : DWORD;
      AuditType : AUDIT_EVENT_TYPE;
      Flags : DWORD;
      ObjectTypeList : POBJECT_TYPE_LIST;
      ObjectTypeListLength : DWORD;
      GenericMapping : PGENERIC_MAPPING;
      ObjectCreation : BOOL;
      GrantedAccess : LPDWORD;
      AccessStatusList : LPDWORD;
      pfGenerateOnClose : LPBOOL
   ) return BOOL;
   pragma import (Cpp,AccessCheckByTypeResultListAndAuditAlarmA,"AccessCheckByTypeResultListAndAuditAlarmA");
   function AccessCheckByTypeResultListAndAuditAlarmByHandleA(
      SubsystemName : LPCSTR;
      HandleId : LPVOID;
      ClientToken : HANDLE;
      ObjectTypeName : LPCSTR;
      ObjectName : LPCSTR;
      SecurityDescriptor : PSECURITY_DESCRIPTOR;
      PrincipalSelfSid : PSID;
      DesiredAccess : DWORD;
      AuditType : AUDIT_EVENT_TYPE;
      Flags : DWORD;
      ObjectTypeList : POBJECT_TYPE_LIST;
      ObjectTypeListLength : DWORD;
      GenericMapping : PGENERIC_MAPPING;
      ObjectCreation : BOOL;
      GrantedAccess : LPDWORD;
      AccessStatusList : LPDWORD;
      pfGenerateOnClose : LPBOOL
   ) return BOOL;
   pragma import (Cpp,AccessCheckByTypeResultListAndAuditAlarmByHandleA,"AccessCheckByTypeResultListAndAuditAlarmByHandleA");
   function ObjectOpenAuditAlarmA(
      SubsystemName : LPCSTR;
      HandleId : LPVOID;
      ObjectTypeName : LPSTR;
      ObjectName : LPSTR;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      ClientToken : HANDLE;
      DesiredAccess : DWORD;
      GrantedAccess : DWORD;
      Privileges : PPRIVILEGE_SET;
      ObjectCreation : BOOL;
      AccessGranted : BOOL;
      GenerateOnClose : LPBOOL
   ) return BOOL;
   pragma import (Cpp,ObjectOpenAuditAlarmA,"ObjectOpenAuditAlarmA");
   function ObjectPrivilegeAuditAlarmA(
      SubsystemName : LPCSTR;
      HandleId : LPVOID;
      ClientToken : HANDLE;
      DesiredAccess : DWORD;
      Privileges : PPRIVILEGE_SET;
      AccessGranted : BOOL
   ) return BOOL;
   pragma import (Cpp,ObjectPrivilegeAuditAlarmA,"ObjectPrivilegeAuditAlarmA");
   function ObjectCloseAuditAlarmA(
      SubsystemName : LPCSTR;
      HandleId : LPVOID;
      GenerateOnClose : BOOL
   ) return BOOL;
   pragma import (Cpp,ObjectCloseAuditAlarmA,"ObjectCloseAuditAlarmA");
   function ObjectDeleteAuditAlarmA(
      SubsystemName : LPCSTR;
      HandleId : LPVOID;
      GenerateOnClose : BOOL
   ) return BOOL;
   pragma import (Cpp,ObjectDeleteAuditAlarmA,"ObjectDeleteAuditAlarmA");
   function PrivilegedServiceAuditAlarmA(
      SubsystemName : LPCSTR;
      ServiceName : LPCSTR;
      ClientToken : HANDLE;
      Privileges : PPRIVILEGE_SET;
      AccessGranted : BOOL
   ) return BOOL;
   pragma import (Cpp,PrivilegedServiceAuditAlarmA,"PrivilegedServiceAuditAlarmA");
   function AddConditionalAce(
      pAcl_x : PACL;
      dwAceRevision : DWORD;
      AceFlags : DWORD;
      AceType : UCHAR;
      AccessMask : DWORD;
      pSid_x : PSID;
      ConditionStr : PWCHAR;
      ReturnLength : access DWORD
   ) return BOOL;
   pragma import (Cpp,AddConditionalAce,"AddConditionalAce");
   function SetFileSecurityA(
      lpFileName : LPCSTR;
      SecurityInformation : SECURITY_INFORMATION;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR
   ) return BOOL;
   pragma import (Cpp,SetFileSecurityA,"SetFileSecurityA");
   function GetFileSecurityA(
      lpFileName : LPCSTR;
      RequestedInformation : SECURITY_INFORMATION;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      nLength : DWORD;
      lpnLengthNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetFileSecurityA,"GetFileSecurityA");
   function ReadDirectoryChangesW(
      hDirectory : HANDLE;
      lpBuffer : LPVOID;
      nBufferLength : DWORD;
      bWatchSubtree : BOOL;
      dwNotifyFilter : DWORD;
      lpBytesReturned : LPDWORD;
      lpOverlapped_x : LPOVERLAPPED;
      lpCompletionRoutine : LPOVERLAPPED_COMPLETION_ROUTINE
   ) return BOOL;
   pragma import (Cpp,ReadDirectoryChangesW,"ReadDirectoryChangesW");
   function ReadDirectoryChangesExW(
      hDirectory : HANDLE;
      lpBuffer : LPVOID;
      nBufferLength : DWORD;
      bWatchSubtree : BOOL;
      dwNotifyFilter : DWORD;
      lpBytesReturned : LPDWORD;
      lpOverlapped_x : LPOVERLAPPED;
      lpCompletionRoutine : LPOVERLAPPED_COMPLETION_ROUTINE;
      ReadDirectoryNotifyInformationClass : READ_DIRECTORY_NOTIFY_INFORMATION_CLASS
   ) return BOOL;
   pragma import (Cpp,ReadDirectoryChangesExW,"ReadDirectoryChangesExW");
   procedure MapViewOfFileExNuma(
      hFileMappingObject : HANDLE;
      dwDesiredAccess : DWORD;
      dwFileOffsetHigh : DWORD;
      dwFileOffsetLow : DWORD;
      dwNumberOfBytesToMap : SIZE_T;
      lpBaseAddress : LPVOID;
      nndPreferred : DWORD
   );
   pragma import (Cpp,MapViewOfFileExNuma,"MapViewOfFileExNuma");
   function IsBadReadPtr(
      lp : access Void;
      ucb : UINT_PTR
   ) return BOOL;
   pragma import (Cpp,IsBadReadPtr,"IsBadReadPtr");
   function IsBadWritePtr(
      lp : LPVOID;
      ucb : UINT_PTR
   ) return BOOL;
   pragma import (Cpp,IsBadWritePtr,"IsBadWritePtr");
   function IsBadHugeReadPtr(
      lp : access Void;
      ucb : UINT_PTR
   ) return BOOL;
   pragma import (Cpp,IsBadHugeReadPtr,"IsBadHugeReadPtr");
   function IsBadHugeWritePtr(
      lp : LPVOID;
      ucb : UINT_PTR
   ) return BOOL;
   pragma import (Cpp,IsBadHugeWritePtr,"IsBadHugeWritePtr");
   function IsBadCodePtr(
      lpfn : FARPROC
   ) return BOOL;
   pragma import (Cpp,IsBadCodePtr,"IsBadCodePtr");
   function IsBadStringPtrA(
      lpsz : LPCSTR;
      ucchMax : UINT_PTR
   ) return BOOL;
   pragma import (Cpp,IsBadStringPtrA,"IsBadStringPtrA");
   function IsBadStringPtrW(
      lpsz : LPCWSTR;
      ucchMax : UINT_PTR
   ) return BOOL;
   pragma import (Cpp,IsBadStringPtrW,"IsBadStringPtrW");
   function LookupAccountSidA(
      lpSystemName : LPCSTR;
      Sid_x : PSID;
      Name : LPSTR;
      cchName : LPDWORD;
      ReferencedDomainName : LPSTR;
      cchReferencedDomainName : LPDWORD;
      peUse : PSID_NAME_USE
   ) return BOOL;
   pragma import (Cpp,LookupAccountSidA,"LookupAccountSidA");
   function LookupAccountSidW(
      lpSystemName : LPCWSTR;
      Sid_x : PSID;
      Name : LPWSTR;
      cchName : LPDWORD;
      ReferencedDomainName : LPWSTR;
      cchReferencedDomainName : LPDWORD;
      peUse : PSID_NAME_USE
   ) return BOOL;
   pragma import (Cpp,LookupAccountSidW,"LookupAccountSidW");
   function LookupAccountNameA(
      lpSystemName : LPCSTR;
      lpAccountName : LPCSTR;
      Sid_x : PSID;
      cbSid : LPDWORD;
      ReferencedDomainName : LPSTR;
      cchReferencedDomainName : LPDWORD;
      peUse : PSID_NAME_USE
   ) return BOOL;
   pragma import (Cpp,LookupAccountNameA,"LookupAccountNameA");
   function LookupAccountNameW(
      lpSystemName : LPCWSTR;
      lpAccountName : LPCWSTR;
      Sid_x : PSID;
      cbSid : LPDWORD;
      ReferencedDomainName : LPWSTR;
      cchReferencedDomainName : LPDWORD;
      peUse : PSID_NAME_USE
   ) return BOOL;
   pragma import (Cpp,LookupAccountNameW,"LookupAccountNameW");
   function LookupAccountNameLocalA(
      lpAccountName : LPCSTR;
      Sid_x : PSID;
      cbSid : LPDWORD;
      ReferencedDomainName : LPSTR;
      cchReferencedDomainName : LPDWORD;
      peUse : PSID_NAME_USE
   ) return BOOL;
   pragma import (Cpp,LookupAccountNameLocalA,"LookupAccountNameLocalA");
   function LookupAccountNameLocalW(
      lpAccountName : LPCWSTR;
      Sid_x : PSID;
      cbSid : LPDWORD;
      ReferencedDomainName : LPWSTR;
      cchReferencedDomainName : LPDWORD;
      peUse : PSID_NAME_USE
   ) return BOOL;
   pragma import (Cpp,LookupAccountNameLocalW,"LookupAccountNameLocalW");
   function LookupAccountSidLocalA(
      Sid_x : PSID;
      Name : LPSTR;
      cchName : LPDWORD;
      ReferencedDomainName : LPSTR;
      cchReferencedDomainName : LPDWORD;
      peUse : PSID_NAME_USE
   ) return BOOL;
   pragma import (Cpp,LookupAccountSidLocalA,"LookupAccountSidLocalA");
   function LookupAccountSidLocalW(
      Sid_x : PSID;
      Name : LPWSTR;
      cchName : LPDWORD;
      ReferencedDomainName : LPWSTR;
      cchReferencedDomainName : LPDWORD;
      peUse : PSID_NAME_USE
   ) return BOOL;
   pragma import (Cpp,LookupAccountSidLocalW,"LookupAccountSidLocalW");
   function LookupPrivilegeValueA(
      lpSystemName : LPCSTR;
      lpName : LPCSTR;
      lpLuid : PLUID
   ) return BOOL;
   pragma import (Cpp,LookupPrivilegeValueA,"LookupPrivilegeValueA");
   function LookupPrivilegeValueW(
      lpSystemName : LPCWSTR;
      lpName : LPCWSTR;
      lpLuid : PLUID
   ) return BOOL;
   pragma import (Cpp,LookupPrivilegeValueW,"LookupPrivilegeValueW");
   function LookupPrivilegeNameA(
      lpSystemName : LPCSTR;
      lpLuid : PLUID;
      lpName : LPSTR;
      cchName : LPDWORD
   ) return BOOL;
   pragma import (Cpp,LookupPrivilegeNameA,"LookupPrivilegeNameA");
   function LookupPrivilegeNameW(
      lpSystemName : LPCWSTR;
      lpLuid : PLUID;
      lpName : LPWSTR;
      cchName : LPDWORD
   ) return BOOL;
   pragma import (Cpp,LookupPrivilegeNameW,"LookupPrivilegeNameW");
   function LookupPrivilegeDisplayNameA(
      lpSystemName : LPCSTR;
      lpName : LPCSTR;
      lpDisplayName : LPSTR;
      cchDisplayName : LPDWORD;
      lpLanguageId : LPDWORD
   ) return BOOL;
   pragma import (Cpp,LookupPrivilegeDisplayNameA,"LookupPrivilegeDisplayNameA");
   function LookupPrivilegeDisplayNameW(
      lpSystemName : LPCWSTR;
      lpName : LPCWSTR;
      lpDisplayName : LPWSTR;
      cchDisplayName : LPDWORD;
      lpLanguageId : LPDWORD
   ) return BOOL;
   pragma import (Cpp,LookupPrivilegeDisplayNameW,"LookupPrivilegeDisplayNameW");
   function BuildCommDCBA(
      lpDef : LPCSTR;
      lpDCB_x : LPDCB
   ) return BOOL;
   pragma import (Cpp,BuildCommDCBA,"BuildCommDCBA");
   function BuildCommDCBW(
      lpDef : LPCWSTR;
      lpDCB_x : LPDCB
   ) return BOOL;
   pragma import (Cpp,BuildCommDCBW,"BuildCommDCBW");
   function BuildCommDCBAndTimeoutsA(
      lpDef : LPCSTR;
      lpDCB_x : LPDCB;
      lpCommTimeouts_x : LPCOMMTIMEOUTS
   ) return BOOL;
   pragma import (Cpp,BuildCommDCBAndTimeoutsA,"BuildCommDCBAndTimeoutsA");
   function BuildCommDCBAndTimeoutsW(
      lpDef : LPCWSTR;
      lpDCB_x : LPDCB;
      lpCommTimeouts_x : LPCOMMTIMEOUTS
   ) return BOOL;
   pragma import (Cpp,BuildCommDCBAndTimeoutsW,"BuildCommDCBAndTimeoutsW");
   function CommConfigDialogA(
      lpszName : LPCSTR;
      hWnd_x : HWND;
      lpCC : LPCOMMCONFIG
   ) return BOOL;
   pragma import (Cpp,CommConfigDialogA,"CommConfigDialogA");
   function CommConfigDialogW(
      lpszName : LPCWSTR;
      hWnd_x : HWND;
      lpCC : LPCOMMCONFIG
   ) return BOOL;
   pragma import (Cpp,CommConfigDialogW,"CommConfigDialogW");
   function GetDefaultCommConfigA(
      lpszName : LPCSTR;
      lpCC : LPCOMMCONFIG;
      lpdwSize : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetDefaultCommConfigA,"GetDefaultCommConfigA");
   function GetDefaultCommConfigW(
      lpszName : LPCWSTR;
      lpCC : LPCOMMCONFIG;
      lpdwSize : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetDefaultCommConfigW,"GetDefaultCommConfigW");
   function SetDefaultCommConfigA(
      lpszName : LPCSTR;
      lpCC : LPCOMMCONFIG;
      dwSize : DWORD
   ) return BOOL;
   pragma import (Cpp,SetDefaultCommConfigA,"SetDefaultCommConfigA");
   function SetDefaultCommConfigW(
      lpszName : LPCWSTR;
      lpCC : LPCOMMCONFIG;
      dwSize : DWORD
   ) return BOOL;
   pragma import (Cpp,SetDefaultCommConfigW,"SetDefaultCommConfigW");
   function GetComputerNameA(
      lpBuffer : LPSTR;
      nSize : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetComputerNameA,"GetComputerNameA");
   function GetComputerNameW(
      lpBuffer : LPWSTR;
      nSize : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetComputerNameW,"GetComputerNameW");
   function DnsHostnameToComputerNameA(
      Hostname : LPCSTR;
      ComputerName : LPSTR;
      nSize : LPDWORD
   ) return BOOL;
   pragma import (Cpp,DnsHostnameToComputerNameA,"DnsHostnameToComputerNameA");
   function DnsHostnameToComputerNameW(
      Hostname : LPCWSTR;
      ComputerName : LPWSTR;
      nSize : LPDWORD
   ) return BOOL;
   pragma import (Cpp,DnsHostnameToComputerNameW,"DnsHostnameToComputerNameW");
   function GetUserNameA(
      lpBuffer : LPSTR;
      pcbBuffer : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetUserNameA,"GetUserNameA");
   function GetUserNameW(
      lpBuffer : LPWSTR;
      pcbBuffer : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetUserNameW,"GetUserNameW");
   function LogonUserA(
      lpszUsername : LPCSTR;
      lpszDomain : LPCSTR;
      lpszPassword : LPCSTR;
      dwLogonType : DWORD;
      dwLogonProvider : DWORD;
      phToken : PHANDLE
   ) return BOOL;
   pragma import (Cpp,LogonUserA,"LogonUserA");
   function LogonUserW(
      lpszUsername : LPCWSTR;
      lpszDomain : LPCWSTR;
      lpszPassword : LPCWSTR;
      dwLogonType : DWORD;
      dwLogonProvider : DWORD;
      phToken : PHANDLE
   ) return BOOL;
   pragma import (Cpp,LogonUserW,"LogonUserW");
   function LogonUserExA(
      lpszUsername : LPCSTR;
      lpszDomain : LPCSTR;
      lpszPassword : LPCSTR;
      dwLogonType : DWORD;
      dwLogonProvider : DWORD;
      phToken : PHANDLE;
      ppLogonSid : access PSID;
      ppProfileBuffer : access PVOID;
      pdwProfileLength : LPDWORD;
      pQuotaLimits : PQUOTA_LIMITS
   ) return BOOL;
   pragma import (Cpp,LogonUserExA,"LogonUserExA");
   function LogonUserExW(
      lpszUsername : LPCWSTR;
      lpszDomain : LPCWSTR;
      lpszPassword : LPCWSTR;
      dwLogonType : DWORD;
      dwLogonProvider : DWORD;
      phToken : PHANDLE;
      ppLogonSid : access PSID;
      ppProfileBuffer : access PVOID;
      pdwProfileLength : LPDWORD;
      pQuotaLimits : PQUOTA_LIMITS
   ) return BOOL;
   pragma import (Cpp,LogonUserExW,"LogonUserExW");
   function CreateProcessWithLogonW(
      lpUsername : LPCWSTR;
      lpDomain : LPCWSTR;
      lpPassword : LPCWSTR;
      dwLogonFlags : DWORD;
      lpApplicationName : LPCWSTR;
      lpCommandLine : LPWSTR;
      dwCreationFlags : DWORD;
      lpEnvironment : LPVOID;
      lpCurrentDirectory : LPCWSTR;
      lpStartupInfo_x : LPSTARTUPINFOW;
      lpProcessInformation : LPPROCESS_INFORMATION
   ) return BOOL;
   pragma import (Cpp,CreateProcessWithLogonW,"CreateProcessWithLogonW");
   function CreateProcessWithTokenW(
      hToken : HANDLE;
      dwLogonFlags : DWORD;
      lpApplicationName : LPCWSTR;
      lpCommandLine : LPWSTR;
      dwCreationFlags : DWORD;
      lpEnvironment : LPVOID;
      lpCurrentDirectory : LPCWSTR;
      lpStartupInfo_x : LPSTARTUPINFOW;
      lpProcessInformation : LPPROCESS_INFORMATION
   ) return BOOL;
   pragma import (Cpp,CreateProcessWithTokenW,"CreateProcessWithTokenW");
   function IsTokenUntrusted(
      TokenHandle : HANDLE
   ) return BOOL;
   pragma import (Cpp,IsTokenUntrusted,"IsTokenUntrusted");
   function RegisterWaitForSingleObject(
      phNewWaitObject : PHANDLE;
      hObject : HANDLE;
      Callback : WAITORTIMERCALLBACK;
      Context_x : PVOID;
      dwMilliseconds : ULONG;
      dwFlags : ULONG
   ) return BOOL;
   pragma import (Cpp,RegisterWaitForSingleObject,"RegisterWaitForSingleObject");
   function UnregisterWait(
      WaitHandle : HANDLE
   ) return BOOL;
   pragma import (Cpp,UnregisterWait,"UnregisterWait");
   function BindIoCompletionCallback(
      FileHandle : HANDLE;
      function_x : LPOVERLAPPED_COMPLETION_ROUTINE;
      Flags : ULONG
   ) return BOOL;
   pragma import (Cpp,BindIoCompletionCallback,"BindIoCompletionCallback");
   function SetTimerQueueTimer(
      TimerQueue : HANDLE;
      Callback : WAITORTIMERCALLBACK;
      Parameter : PVOID;
      DueTime : DWORD;
      Period : DWORD;
      PreferIo : BOOL
   ) return HANDLE;
   pragma import (Cpp,SetTimerQueueTimer,"SetTimerQueueTimer");
   function CancelTimerQueueTimer(
      TimerQueue : HANDLE;
      Timer : HANDLE
   ) return BOOL;
   pragma import (Cpp,CancelTimerQueueTimer,"CancelTimerQueueTimer");
   function DeleteTimerQueue(
      TimerQueue : HANDLE
   ) return BOOL;
   pragma import (Cpp,DeleteTimerQueue,"DeleteTimerQueue");
   -- InitializeThreadpoolEnvironment(); -- inlined function not supported
   -- SetThreadpoolCallbackPool(); -- inlined function not supported
   -- SetThreadpoolCallbackCleanupGroup(); -- inlined function not supported
   -- SetThreadpoolCallbackRunsLong(); -- inlined function not supported
   -- SetThreadpoolCallbackLibrary(); -- inlined function not supported
   -- SetThreadpoolCallbackPriority(); -- inlined function not supported
   -- DestroyThreadpoolEnvironment(); -- inlined function not supported
   -- SetThreadpoolCallbackPersistent(); -- inlined function not supported
   function CreatePrivateNamespaceA(
      lpPrivateNamespaceAttributes : LPSECURITY_ATTRIBUTES;
      lpBoundaryDescriptor : LPVOID;
      lpAliasPrefix : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,CreatePrivateNamespaceA,"CreatePrivateNamespaceA");
   function OpenPrivateNamespaceA(
      lpBoundaryDescriptor : LPVOID;
      lpAliasPrefix : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,OpenPrivateNamespaceA,"OpenPrivateNamespaceA");
   function CreateBoundaryDescriptorA(
      Name : LPCSTR;
      Flags : ULONG
   ) return HANDLE;
   pragma import (Cpp,CreateBoundaryDescriptorA,"CreateBoundaryDescriptorA");
   function AddIntegrityLabelToBoundaryDescriptor(
      BoundaryDescriptor : access HANDLE;
      IntegrityLabel : PSID
   ) return BOOL;
   pragma import (Cpp,AddIntegrityLabelToBoundaryDescriptor,"AddIntegrityLabelToBoundaryDescriptor");
   type tagHW_PROFILE_INFOA_szHwProfileGuid_Array is array(1..39) of CHAR; -- Auto Generated Dependancy
   type tagHW_PROFILE_INFOA_szHwProfileName_Array is array(1..80) of CHAR; -- Auto Generated Dependancy
   type tagHW_PROFILE_INFOA is record
      dwDockInfo : DWORD;
      szHwProfileGuid : tagHW_PROFILE_INFOA_szHwProfileGuid_Array;
      szHwProfileName : tagHW_PROFILE_INFOA_szHwProfileName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagHW_PROFILE_INFOA);
   for tagHW_PROFILE_INFOA use record
      dwDockInfo at 0 range 0..31;
      szHwProfileGuid at 0 range 32..343;
      szHwProfileName at 0 range 344..983;
   end record;
   for tagHW_PROFILE_INFOA'Size use 992;
   for tagHW_PROFILE_INFOA'Alignment use 4;
   subtype HW_PROFILE_INFOA is tagHW_PROFILE_INFOA;
   type LPHW_PROFILE_INFOA is access all tagHW_PROFILE_INFOA;
   type tagHW_PROFILE_INFOW_szHwProfileGuid_Array is array(1..39) of WCHAR; -- Auto Generated Dependancy
   type tagHW_PROFILE_INFOW_szHwProfileName_Array is array(1..80) of WCHAR; -- Auto Generated Dependancy
   type tagHW_PROFILE_INFOW is record
      dwDockInfo : DWORD;
      szHwProfileGuid : tagHW_PROFILE_INFOW_szHwProfileGuid_Array;
      szHwProfileName : tagHW_PROFILE_INFOW_szHwProfileName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagHW_PROFILE_INFOW);
   for tagHW_PROFILE_INFOW use record
      dwDockInfo at 0 range 0..31;
      szHwProfileGuid at 0 range 32..655;
      szHwProfileName at 0 range 656..1935;
   end record;
   for tagHW_PROFILE_INFOW'Size use 1952;
   for tagHW_PROFILE_INFOW'Alignment use 4;
   subtype HW_PROFILE_INFOW is tagHW_PROFILE_INFOW;
   type LPHW_PROFILE_INFOW is access all tagHW_PROFILE_INFOW;
   subtype HW_PROFILE_INFO is HW_PROFILE_INFOA;
   subtype LPHW_PROFILE_INFO is LPHW_PROFILE_INFOA;
   function GetCurrentHwProfileA(
      lpHwProfileInfo : LPHW_PROFILE_INFOA
   ) return BOOL;
   pragma import (Cpp,GetCurrentHwProfileA,"GetCurrentHwProfileA");
   function GetCurrentHwProfileW(
      lpHwProfileInfo : LPHW_PROFILE_INFOW
   ) return BOOL;
   pragma import (Cpp,GetCurrentHwProfileW,"GetCurrentHwProfileW");
   function VerifyVersionInfoA(
      lpVersionInformation : LPOSVERSIONINFOEXA;
      dwTypeMask : DWORD;
      dwlConditionMask : DWORDLONG
   ) return BOOL;
   pragma import (Cpp,VerifyVersionInfoA,"VerifyVersionInfoA");
   function VerifyVersionInfoW(
      lpVersionInformation : LPOSVERSIONINFOEXW;
      dwTypeMask : DWORD;
      dwlConditionMask : DWORDLONG
   ) return BOOL;
   pragma import (Cpp,VerifyVersionInfoW,"VerifyVersionInfoW");
   -- #include <winerror.h>
   -- HRESULT_FROM_WIN32(); -- inlined function not supported
   -- #include <timezoneapi.h>
   type TIME_ZONE_INFORMATION_x_StandardName_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type TIME_ZONE_INFORMATION_x_DaylightName_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type TIME_ZONE_INFORMATION_x is record
      Bias : LONG;
      StandardName : TIME_ZONE_INFORMATION_x_StandardName_Array;
      StandardDate : SYSTEMTIME;
      StandardBias : LONG;
      DaylightName : TIME_ZONE_INFORMATION_x_DaylightName_Array;
      DaylightDate : SYSTEMTIME;
      DaylightBias : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,TIME_ZONE_INFORMATION_x);
   for TIME_ZONE_INFORMATION_x use record
      Bias at 0 range 0..31;
      StandardName at 0 range 32..543;
      StandardDate at 0 range 544..671;
      StandardBias at 0 range 672..703;
      DaylightName at 0 range 704..1215;
      DaylightDate at 0 range 1216..1343;
      DaylightBias at 0 range 1344..1375;
   end record;
   for TIME_ZONE_INFORMATION_x'Size use 1376;
   for TIME_ZONE_INFORMATION_x'Alignment use 4;
   subtype TIME_ZONE_INFORMATION is TIME_ZONE_INFORMATION_x;
   type PTIME_ZONE_INFORMATION is access all TIME_ZONE_INFORMATION_x;
   type LPTIME_ZONE_INFORMATION is access all TIME_ZONE_INFORMATION_x;
   type TIME_DYNAMIC_ZONE_INFORMATION_x_StandardName_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type TIME_DYNAMIC_ZONE_INFORMATION_x_DaylightName_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type TIME_DYNAMIC_ZONE_INFORMATION_x_TimeZoneKeyName_Array is array(1..128) of WCHAR; -- Auto Generated Dependancy
   type TIME_DYNAMIC_ZONE_INFORMATION_x is record
      Bias : LONG;
      StandardName : TIME_DYNAMIC_ZONE_INFORMATION_x_StandardName_Array;
      StandardDate : SYSTEMTIME;
      StandardBias : LONG;
      DaylightName : TIME_DYNAMIC_ZONE_INFORMATION_x_DaylightName_Array;
      DaylightDate : SYSTEMTIME;
      DaylightBias : LONG;
      TimeZoneKeyName : TIME_DYNAMIC_ZONE_INFORMATION_x_TimeZoneKeyName_Array;
      DynamicDaylightTimeDisabled : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,TIME_DYNAMIC_ZONE_INFORMATION_x);
   for TIME_DYNAMIC_ZONE_INFORMATION_x use record
      Bias at 0 range 0..31;
      StandardName at 0 range 32..543;
      StandardDate at 0 range 544..671;
      StandardBias at 0 range 672..703;
      DaylightName at 0 range 704..1215;
      DaylightDate at 0 range 1216..1343;
      DaylightBias at 0 range 1344..1375;
      TimeZoneKeyName at 0 range 1376..3423;
      DynamicDaylightTimeDisabled at 0 range 3424..3431;
   end record;
   for TIME_DYNAMIC_ZONE_INFORMATION_x'Size use 3456;
   for TIME_DYNAMIC_ZONE_INFORMATION_x'Alignment use 4;
   subtype DYNAMIC_TIME_ZONE_INFORMATION is TIME_DYNAMIC_ZONE_INFORMATION_x;
   type PDYNAMIC_TIME_ZONE_INFORMATION is access all TIME_DYNAMIC_ZONE_INFORMATION_x;
   function SystemTimeToTzSpecificLocalTime(
      lpTimeZoneInformation : access constant TIME_ZONE_INFORMATION;
      lpUniversalTime : access constant SYSTEMTIME;
      lpLocalTime : LPSYSTEMTIME
   ) return BOOL;
   pragma import (Cpp,SystemTimeToTzSpecificLocalTime,"SystemTimeToTzSpecificLocalTime");
   function TzSpecificLocalTimeToSystemTime(
      lpTimeZoneInformation : access constant TIME_ZONE_INFORMATION;
      lpLocalTime : access constant SYSTEMTIME;
      lpUniversalTime : LPSYSTEMTIME
   ) return BOOL;
   pragma import (Cpp,TzSpecificLocalTimeToSystemTime,"TzSpecificLocalTimeToSystemTime");
   function FileTimeToSystemTime(
      lpFileTime_x : access constant FILETIME;
      lpSystemTime_x : LPSYSTEMTIME
   ) return BOOL;
   pragma import (Cpp,FileTimeToSystemTime,"FileTimeToSystemTime");
   function SystemTimeToFileTime(
      lpSystemTime_x : access constant SYSTEMTIME;
      lpFileTime_x : LPFILETIME
   ) return BOOL;
   pragma import (Cpp,SystemTimeToFileTime,"SystemTimeToFileTime");
   function GetTimeZoneInformation(
      lpTimeZoneInformation : LPTIME_ZONE_INFORMATION
   ) return DWORD;
   pragma import (Cpp,GetTimeZoneInformation,"GetTimeZoneInformation");
   function SetTimeZoneInformation(
      lpTimeZoneInformation : access constant TIME_ZONE_INFORMATION
   ) return BOOL;
   pragma import (Cpp,SetTimeZoneInformation,"SetTimeZoneInformation");
   function SetDynamicTimeZoneInformation(
      lpTimeZoneInformation : access constant DYNAMIC_TIME_ZONE_INFORMATION
   ) return BOOL;
   pragma import (Cpp,SetDynamicTimeZoneInformation,"SetDynamicTimeZoneInformation");
   function GetDynamicTimeZoneInformation(
      pTimeZoneInformation : PDYNAMIC_TIME_ZONE_INFORMATION
   ) return DWORD;
   pragma import (Cpp,GetDynamicTimeZoneInformation,"GetDynamicTimeZoneInformation");
   function GetTimeZoneInformationForYear(
      wYear : USHORT;
      pdtzi : PDYNAMIC_TIME_ZONE_INFORMATION;
      ptzi : LPTIME_ZONE_INFORMATION
   ) return BOOL;
   pragma import (Cpp,GetTimeZoneInformationForYear,"GetTimeZoneInformationForYear");
   function EnumDynamicTimeZoneInformation(
      dwIndex : DWORD;
      lpTimeZoneInformation : PDYNAMIC_TIME_ZONE_INFORMATION
   ) return DWORD;
   pragma import (Cpp,EnumDynamicTimeZoneInformation,"EnumDynamicTimeZoneInformation");
   function GetDynamicTimeZoneInformationEffectiveYears(
      lpTimeZoneInformation : PDYNAMIC_TIME_ZONE_INFORMATION;
      FirstYear : LPDWORD;
      LastYear : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetDynamicTimeZoneInformationEffectiveYears,"GetDynamicTimeZoneInformationEffectiveYears");
   function SystemTimeToTzSpecificLocalTimeEx(
      lpTimeZoneInformation : access constant DYNAMIC_TIME_ZONE_INFORMATION;
      lpUniversalTime : access constant SYSTEMTIME;
      lpLocalTime : LPSYSTEMTIME
   ) return BOOL;
   pragma import (Cpp,SystemTimeToTzSpecificLocalTimeEx,"SystemTimeToTzSpecificLocalTimeEx");
   function TzSpecificLocalTimeToSystemTimeEx(
      lpTimeZoneInformation : access constant DYNAMIC_TIME_ZONE_INFORMATION;
      lpLocalTime : access constant SYSTEMTIME;
      lpUniversalTime : LPSYSTEMTIME
   ) return BOOL;
   pragma import (Cpp,TzSpecificLocalTimeToSystemTimeEx,"TzSpecificLocalTimeToSystemTimeEx");
   function LocalFileTimeToLocalSystemTime(
      timeZoneInformation : access constant TIME_ZONE_INFORMATION;
      localFileTime : access constant FILETIME;
      localSystemTime : access SYSTEMTIME
   ) return BOOL;
   pragma import (Cpp,LocalFileTimeToLocalSystemTime,"LocalFileTimeToLocalSystemTime");
   function LocalSystemTimeToLocalFileTime(
      timeZoneInformation : access constant TIME_ZONE_INFORMATION;
      localSystemTime : access constant SYSTEMTIME;
      localFileTime : access FILETIME
   ) return BOOL;
   pragma import (Cpp,LocalSystemTimeToLocalFileTime,"LocalSystemTimeToLocalFileTime");
   -- #include <winbase.h>
   function SetSystemPowerState(
      fSuspend : BOOL;
      fForce : BOOL
   ) return BOOL;
   pragma import (Cpp,SetSystemPowerState,"SetSystemPowerState");
   type SYSTEM_POWER_STATUS_x is record
      ACLineStatus : BYTE;
      BatteryFlag : BYTE;
      BatteryLifePercent : BYTE;
      SystemStatusFlag : BYTE;
      BatteryLifeTime : DWORD;
      BatteryFullLifeTime : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SYSTEM_POWER_STATUS_x);
   for SYSTEM_POWER_STATUS_x use record
      ACLineStatus at 0 range 0..7;
      BatteryFlag at 0 range 8..15;
      BatteryLifePercent at 0 range 16..23;
      SystemStatusFlag at 0 range 24..31;
      BatteryLifeTime at 0 range 32..63;
      BatteryFullLifeTime at 0 range 64..95;
   end record;
   for SYSTEM_POWER_STATUS_x'Size use 96;
   for SYSTEM_POWER_STATUS_x'Alignment use 4;
   subtype SYSTEM_POWER_STATUS is SYSTEM_POWER_STATUS_x;
   type LPSYSTEM_POWER_STATUS is access all SYSTEM_POWER_STATUS_x;
   function GetSystemPowerStatus(
      lpSystemPowerStatus : LPSYSTEM_POWER_STATUS
   ) return BOOL;
   pragma import (Cpp,GetSystemPowerStatus,"GetSystemPowerStatus");
   function MapUserPhysicalPagesScatter(
      VirtualAddresses : access PVOID;
      NumberOfPages : ULONG_PTR;
      PageArray : PULONG_PTR
   ) return BOOL;
   pragma import (Cpp,MapUserPhysicalPagesScatter,"MapUserPhysicalPagesScatter");
   function CreateJobObjectA(
      lpJobAttributes : LPSECURITY_ATTRIBUTES;
      lpName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,CreateJobObjectA,"CreateJobObjectA");
   function OpenJobObjectA(
      dwDesiredAccess : DWORD;
      bInheritHandle : BOOL;
      lpName : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,OpenJobObjectA,"OpenJobObjectA");
   function CreateJobSet(
      NumJob : ULONG;
      UserJobSet : PJOB_SET_ARRAY;
      Flags : ULONG
   ) return BOOL;
   pragma import (Cpp,CreateJobSet,"CreateJobSet");
   function FindFirstVolumeA(
      lpszVolumeName : LPSTR;
      cchBufferLength : DWORD
   ) return HANDLE;
   pragma import (Cpp,FindFirstVolumeA,"FindFirstVolumeA");
   function FindNextVolumeA(
      hFindVolume : HANDLE;
      lpszVolumeName : LPSTR;
      cchBufferLength : DWORD
   ) return BOOL;
   pragma import (Cpp,FindNextVolumeA,"FindNextVolumeA");
   function FindFirstVolumeMountPointA(
      lpszRootPathName : LPCSTR;
      lpszVolumeMountPoint : LPSTR;
      cchBufferLength : DWORD
   ) return HANDLE;
   pragma import (Cpp,FindFirstVolumeMountPointA,"FindFirstVolumeMountPointA");
   function FindFirstVolumeMountPointW(
      lpszRootPathName : LPCWSTR;
      lpszVolumeMountPoint : LPWSTR;
      cchBufferLength : DWORD
   ) return HANDLE;
   pragma import (Cpp,FindFirstVolumeMountPointW,"FindFirstVolumeMountPointW");
   function FindNextVolumeMountPointA(
      hFindVolumeMountPoint : HANDLE;
      lpszVolumeMountPoint : LPSTR;
      cchBufferLength : DWORD
   ) return BOOL;
   pragma import (Cpp,FindNextVolumeMountPointA,"FindNextVolumeMountPointA");
   function FindNextVolumeMountPointW(
      hFindVolumeMountPoint : HANDLE;
      lpszVolumeMountPoint : LPWSTR;
      cchBufferLength : DWORD
   ) return BOOL;
   pragma import (Cpp,FindNextVolumeMountPointW,"FindNextVolumeMountPointW");
   function FindVolumeMountPointClose(
      hFindVolumeMountPoint : HANDLE
   ) return BOOL;
   pragma import (Cpp,FindVolumeMountPointClose,"FindVolumeMountPointClose");
   function SetVolumeMountPointA(
      lpszVolumeMountPoint : LPCSTR;
      lpszVolumeName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetVolumeMountPointA,"SetVolumeMountPointA");
   function SetVolumeMountPointW(
      lpszVolumeMountPoint : LPCWSTR;
      lpszVolumeName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetVolumeMountPointW,"SetVolumeMountPointW");
   function DeleteVolumeMountPointA(
      lpszVolumeMountPoint : LPCSTR
   ) return BOOL;
   pragma import (Cpp,DeleteVolumeMountPointA,"DeleteVolumeMountPointA");
   function GetVolumeNameForVolumeMountPointA(
      lpszVolumeMountPoint : LPCSTR;
      lpszVolumeName : LPSTR;
      cchBufferLength : DWORD
   ) return BOOL;
   pragma import (Cpp,GetVolumeNameForVolumeMountPointA,"GetVolumeNameForVolumeMountPointA");
   function GetVolumePathNameA(
      lpszFileName : LPCSTR;
      lpszVolumePathName : LPSTR;
      cchBufferLength : DWORD
   ) return BOOL;
   pragma import (Cpp,GetVolumePathNameA,"GetVolumePathNameA");
   function GetVolumePathNamesForVolumeNameA(
      lpszVolumeName : LPCSTR;
      lpszVolumePathNames : LPCH;
      cchBufferLength : DWORD;
      lpcchReturnLength : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetVolumePathNamesForVolumeNameA,"GetVolumePathNamesForVolumeNameA");
   type tagACTCTXA is record
      cbSize : ULONG;
      dwFlags : DWORD;
      lpSource : LPCSTR;
      wProcessorArchitecture : USHORT;
      wLangId : LANGID;
      lpAssemblyDirectory : LPCSTR;
      lpResourceName : LPCSTR;
      lpApplicationName : LPCSTR;
      hModule_x : HMODULE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagACTCTXA);
   for tagACTCTXA use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      lpSource at 0 range 64..127;
      wProcessorArchitecture at 0 range 128..143;
      wLangId at 0 range 144..159;
      lpAssemblyDirectory at 0 range 192..255;
      lpResourceName at 0 range 256..319;
      lpApplicationName at 0 range 320..383;
      hModule_x at 0 range 384..447;
   end record;
   for tagACTCTXA'Size use 448;
   for tagACTCTXA'Alignment use 8;
   subtype ACTCTXA is tagACTCTXA;
   type PACTCTXA is access all tagACTCTXA;
   type tagACTCTXW is record
      cbSize : ULONG;
      dwFlags : DWORD;
      lpSource : LPCWSTR;
      wProcessorArchitecture : USHORT;
      wLangId : LANGID;
      lpAssemblyDirectory : LPCWSTR;
      lpResourceName : LPCWSTR;
      lpApplicationName : LPCWSTR;
      hModule_x : HMODULE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagACTCTXW);
   for tagACTCTXW use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      lpSource at 0 range 64..127;
      wProcessorArchitecture at 0 range 128..143;
      wLangId at 0 range 144..159;
      lpAssemblyDirectory at 0 range 192..255;
      lpResourceName at 0 range 256..319;
      lpApplicationName at 0 range 320..383;
      hModule_x at 0 range 384..447;
   end record;
   for tagACTCTXW'Size use 448;
   for tagACTCTXW'Alignment use 8;
   subtype ACTCTXW is tagACTCTXW;
   type PACTCTXW is access all tagACTCTXW;
   subtype ACTCTX is ACTCTXA;
   subtype PACTCTX is PACTCTXA;
   type PCACTCTXA is access constant ACTCTXA;
   type PCACTCTXW is access constant ACTCTXW;
   subtype PCACTCTX is PCACTCTXA;
   function CreateActCtxA(
      pActCtx_x : PCACTCTXA
   ) return HANDLE;
   pragma import (Cpp,CreateActCtxA,"CreateActCtxA");
   function CreateActCtxW(
      pActCtx_x : PCACTCTXW
   ) return HANDLE;
   pragma import (Cpp,CreateActCtxW,"CreateActCtxW");
   procedure AddRefActCtx(
      hActCtx : HANDLE
   );
   pragma import (Cpp,AddRefActCtx,"AddRefActCtx");
   procedure ReleaseActCtx(
      hActCtx : HANDLE
   );
   pragma import (Cpp,ReleaseActCtx,"ReleaseActCtx");
   function ZombifyActCtx(
      hActCtx : HANDLE
   ) return BOOL;
   pragma import (Cpp,ZombifyActCtx,"ZombifyActCtx");
   function ActivateActCtx(
      hActCtx : HANDLE;
      lpCookie : access ULONG_PTR
   ) return BOOL;
   pragma import (Cpp,ActivateActCtx,"ActivateActCtx");
   function DeactivateActCtx(
      dwFlags : DWORD;
      ulCookie : ULONG_PTR
   ) return BOOL;
   pragma import (Cpp,DeactivateActCtx,"DeactivateActCtx");
   function GetCurrentActCtx(
      lphActCtx : access HANDLE
   ) return BOOL;
   pragma import (Cpp,GetCurrentActCtx,"GetCurrentActCtx");
   type tagACTCTX_SECTION_KEYED_DATA_2600 is record
      cbSize : ULONG;
      ulDataFormatVersion : ULONG;
      lpData : PVOID;
      ulLength : ULONG;
      lpSectionGlobalData : PVOID;
      ulSectionGlobalDataLength : ULONG;
      lpSectionBase : PVOID;
      ulSectionTotalLength : ULONG;
      hActCtx : HANDLE;
      ulAssemblyRosterIndex : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagACTCTX_SECTION_KEYED_DATA_2600);
   for tagACTCTX_SECTION_KEYED_DATA_2600 use record
      cbSize at 0 range 0..31;
      ulDataFormatVersion at 0 range 32..63;
      lpData at 0 range 64..127;
      ulLength at 0 range 128..159;
      lpSectionGlobalData at 0 range 192..255;
      ulSectionGlobalDataLength at 0 range 256..287;
      lpSectionBase at 0 range 320..383;
      ulSectionTotalLength at 0 range 384..415;
      hActCtx at 0 range 448..511;
      ulAssemblyRosterIndex at 0 range 512..543;
   end record;
   for tagACTCTX_SECTION_KEYED_DATA_2600'Size use 576;
   for tagACTCTX_SECTION_KEYED_DATA_2600'Alignment use 8;
   subtype ACTCTX_SECTION_KEYED_DATA_2600 is tagACTCTX_SECTION_KEYED_DATA_2600;
   type PACTCTX_SECTION_KEYED_DATA_2600 is access all tagACTCTX_SECTION_KEYED_DATA_2600;
   type PCACTCTX_SECTION_KEYED_DATA_2600 is access constant ACTCTX_SECTION_KEYED_DATA_2600;
   type tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA is record
      lpInformation : PVOID;
      lpSectionBase : PVOID;
      ulSectionLength : ULONG;
      lpSectionGlobalDataBase : PVOID;
      ulSectionGlobalDataLength : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA);
   for tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA use record
      lpInformation at 0 range 0..63;
      lpSectionBase at 0 range 64..127;
      ulSectionLength at 0 range 128..159;
      lpSectionGlobalDataBase at 0 range 192..255;
      ulSectionGlobalDataLength at 0 range 256..287;
   end record;
   for tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA'Size use 320;
   for tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA'Alignment use 8;
   subtype ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA is tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
   type PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA is access all tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
   type PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA is access constant ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
   type tagACTCTX_SECTION_KEYED_DATA is record
      cbSize : ULONG;
      ulDataFormatVersion : ULONG;
      lpData : PVOID;
      ulLength : ULONG;
      lpSectionGlobalData : PVOID;
      ulSectionGlobalDataLength : ULONG;
      lpSectionBase : PVOID;
      ulSectionTotalLength : ULONG;
      hActCtx : HANDLE;
      ulAssemblyRosterIndex : ULONG;
      ulFlags : ULONG;
      AssemblyMetadata : ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
   end record;
   pragma Convention (C_Pass_By_Copy,tagACTCTX_SECTION_KEYED_DATA);
   for tagACTCTX_SECTION_KEYED_DATA use record
      cbSize at 0 range 0..31;
      ulDataFormatVersion at 0 range 32..63;
      lpData at 0 range 64..127;
      ulLength at 0 range 128..159;
      lpSectionGlobalData at 0 range 192..255;
      ulSectionGlobalDataLength at 0 range 256..287;
      lpSectionBase at 0 range 320..383;
      ulSectionTotalLength at 0 range 384..415;
      hActCtx at 0 range 448..511;
      ulAssemblyRosterIndex at 0 range 512..543;
      ulFlags at 0 range 544..575;
      AssemblyMetadata at 0 range 576..895;
   end record;
   for tagACTCTX_SECTION_KEYED_DATA'Size use 896;
   for tagACTCTX_SECTION_KEYED_DATA'Alignment use 8;
   subtype ACTCTX_SECTION_KEYED_DATA is tagACTCTX_SECTION_KEYED_DATA;
   type PACTCTX_SECTION_KEYED_DATA is access all tagACTCTX_SECTION_KEYED_DATA;
   type PCACTCTX_SECTION_KEYED_DATA is access constant ACTCTX_SECTION_KEYED_DATA;
   function FindActCtxSectionStringA(
      dwFlags : DWORD;
      lpExtensionGuid : access constant GUID;
      ulSectionId : ULONG;
      lpStringToFind : LPCSTR;
      ReturnedData : PACTCTX_SECTION_KEYED_DATA
   ) return BOOL;
   pragma import (Cpp,FindActCtxSectionStringA,"FindActCtxSectionStringA");
   function FindActCtxSectionStringW(
      dwFlags : DWORD;
      lpExtensionGuid : access constant GUID;
      ulSectionId : ULONG;
      lpStringToFind : LPCWSTR;
      ReturnedData : PACTCTX_SECTION_KEYED_DATA
   ) return BOOL;
   pragma import (Cpp,FindActCtxSectionStringW,"FindActCtxSectionStringW");
   function FindActCtxSectionGuid(
      dwFlags : DWORD;
      lpExtensionGuid : access constant GUID;
      ulSectionId : ULONG;
      lpGuidToFind : access constant GUID;
      ReturnedData : PACTCTX_SECTION_KEYED_DATA
   ) return BOOL;
   pragma import (Cpp,FindActCtxSectionGuid,"FindActCtxSectionGuid");
   type ACTIVATION_CONTEXT_BASIC_INFORMATION_x is record
      hActCtx : HANDLE;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ACTIVATION_CONTEXT_BASIC_INFORMATION_x);
   for ACTIVATION_CONTEXT_BASIC_INFORMATION_x use record
      hActCtx at 0 range 0..63;
      dwFlags at 0 range 64..95;
   end record;
   for ACTIVATION_CONTEXT_BASIC_INFORMATION_x'Size use 128;
   for ACTIVATION_CONTEXT_BASIC_INFORMATION_x'Alignment use 8;
   subtype ACTIVATION_CONTEXT_BASIC_INFORMATION is ACTIVATION_CONTEXT_BASIC_INFORMATION_x;
   type PACTIVATION_CONTEXT_BASIC_INFORMATION is access all ACTIVATION_CONTEXT_BASIC_INFORMATION_x;
   type PCACTIVATION_CONTEXT_BASIC_INFORMATION is access constant ACTIVATION_CONTEXT_BASIC_INFORMATION_x;
   function QueryActCtxW(
      dwFlags : DWORD;
      hActCtx : HANDLE;
      pvSubInstance : PVOID;
      ulInfoClass : ULONG;
      pvBuffer : PVOID;
      cbBuffer : SIZE_T;
      pcbWrittenOrRequired : access SIZE_T
   ) return BOOL;
   pragma import (Cpp,QueryActCtxW,"QueryActCtxW");
   type PQUERYACTCTXW_FUNC is access function (p1 : DWORD ; p2 : HANDLE ; p3 : PVOID ; p4 : ULONG ; p5 : PVOID ; p6 : SIZE_T ; p7 : access SIZE_T) return BOOL; -- BOOL (DWORD, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T *)
   pragma Convention(C,PQUERYACTCTXW_FUNC);
   function WTSGetActiveConsoleSessionId return DWORD;
   pragma import (Cpp,WTSGetActiveConsoleSessionId,"WTSGetActiveConsoleSessionId");
   function WTSGetServiceSessionId return DWORD;
   pragma import (Cpp,WTSGetServiceSessionId,"WTSGetServiceSessionId");
   function WTSIsServerContainer return BOOLEAN;
   pragma import (Cpp,WTSIsServerContainer,"WTSIsServerContainer");
   function GetActiveProcessorGroupCount return WORD;
   pragma import (Cpp,GetActiveProcessorGroupCount,"GetActiveProcessorGroupCount");
   function GetMaximumProcessorGroupCount return WORD;
   pragma import (Cpp,GetMaximumProcessorGroupCount,"GetMaximumProcessorGroupCount");
   function GetActiveProcessorCount(
      GroupNumber : WORD
   ) return DWORD;
   pragma import (Cpp,GetActiveProcessorCount,"GetActiveProcessorCount");
   function GetMaximumProcessorCount(
      GroupNumber : WORD
   ) return DWORD;
   pragma import (Cpp,GetMaximumProcessorCount,"GetMaximumProcessorCount");
   function GetNumaProcessorNode(
      Processor : UCHAR;
      NodeNumber : PUCHAR
   ) return BOOL;
   pragma import (Cpp,GetNumaProcessorNode,"GetNumaProcessorNode");
   function GetNumaNodeNumberFromHandle(
      hFile_x : HANDLE;
      NodeNumber : PUSHORT
   ) return BOOL;
   pragma import (Cpp,GetNumaNodeNumberFromHandle,"GetNumaNodeNumberFromHandle");
   function GetNumaProcessorNodeEx(
      Processor : PPROCESSOR_NUMBER;
      NodeNumber : PUSHORT
   ) return BOOL;
   pragma import (Cpp,GetNumaProcessorNodeEx,"GetNumaProcessorNodeEx");
   function GetNumaNodeProcessorMask(
      Node : UCHAR;
      ProcessorMask : PULONGLONG
   ) return BOOL;
   pragma import (Cpp,GetNumaNodeProcessorMask,"GetNumaNodeProcessorMask");
   function GetNumaAvailableMemoryNode(
      Node : UCHAR;
      AvailableBytes : PULONGLONG
   ) return BOOL;
   pragma import (Cpp,GetNumaAvailableMemoryNode,"GetNumaAvailableMemoryNode");
   function GetNumaAvailableMemoryNodeEx(
      Node : USHORT;
      AvailableBytes : PULONGLONG
   ) return BOOL;
   pragma import (Cpp,GetNumaAvailableMemoryNodeEx,"GetNumaAvailableMemoryNodeEx");
   function GetNumaProximityNode(
      ProximityId : ULONG;
      NodeNumber : PUCHAR
   ) return BOOL;
   pragma import (Cpp,GetNumaProximityNode,"GetNumaProximityNode");
   type APPLICATION_RECOVERY_CALLBACK is access function (p1 : PVOID) return DWORD; -- DWORD (PVOID)
   pragma Convention(C,APPLICATION_RECOVERY_CALLBACK);
   function RegisterApplicationRecoveryCallback(
      pRecoveyCallback : APPLICATION_RECOVERY_CALLBACK;
      pvParameter : PVOID;
      dwPingInterval : DWORD;
      dwFlags : DWORD
   ) return HRESULT;
   pragma import (Cpp,RegisterApplicationRecoveryCallback,"RegisterApplicationRecoveryCallback");
   function UnregisterApplicationRecoveryCallback return HRESULT;
   pragma import (Cpp,UnregisterApplicationRecoveryCallback,"UnregisterApplicationRecoveryCallback");
   function RegisterApplicationRestart(
      pwzCommandline : PCWSTR;
      dwFlags : DWORD
   ) return HRESULT;
   pragma import (Cpp,RegisterApplicationRestart,"RegisterApplicationRestart");
   function UnregisterApplicationRestart return HRESULT;
   pragma import (Cpp,UnregisterApplicationRestart,"UnregisterApplicationRestart");
   function GetApplicationRecoveryCallback(
      hProcess : HANDLE;
      pRecoveryCallback : access APPLICATION_RECOVERY_CALLBACK;
      ppvParameter : access PVOID;
      pdwPingInterval : PDWORD;
      pdwFlags : PDWORD
   ) return HRESULT;
   pragma import (Cpp,GetApplicationRecoveryCallback,"GetApplicationRecoveryCallback");
   function GetApplicationRestartSettings(
      hProcess : HANDLE;
      pwzCommandline : PWSTR;
      pcchSize : PDWORD;
      pdwFlags : PDWORD
   ) return HRESULT;
   pragma import (Cpp,GetApplicationRestartSettings,"GetApplicationRestartSettings");
   function ApplicationRecoveryInProgress(
      pbCancelled : PBOOL
   ) return HRESULT;
   pragma import (Cpp,ApplicationRecoveryInProgress,"ApplicationRecoveryInProgress");
   procedure ApplicationRecoveryFinished(
      bSuccess : BOOL
   );
   pragma import (Cpp,ApplicationRecoveryFinished,"ApplicationRecoveryFinished");
   type FILE_BASIC_INFO_x is record
      CreationTime : LARGE_INTEGER;
      LastAccessTime : LARGE_INTEGER;
      LastWriteTime : LARGE_INTEGER;
      ChangeTime : LARGE_INTEGER;
      FileAttributes : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_BASIC_INFO_x);
   for FILE_BASIC_INFO_x use record
      CreationTime at 0 range 0..63;
      LastAccessTime at 0 range 64..127;
      LastWriteTime at 0 range 128..191;
      ChangeTime at 0 range 192..255;
      FileAttributes at 0 range 256..287;
   end record;
   for FILE_BASIC_INFO_x'Size use 320;
   for FILE_BASIC_INFO_x'Alignment use 8;
   subtype FILE_BASIC_INFO is FILE_BASIC_INFO_x;
   type PFILE_BASIC_INFO is access all FILE_BASIC_INFO_x;
   type FILE_STANDARD_INFO_x is record
      AllocationSize : LARGE_INTEGER;
      EndOfFile : LARGE_INTEGER;
      NumberOfLinks : DWORD;
      DeletePending : BOOLEAN;
      Directory : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_STANDARD_INFO_x);
   for FILE_STANDARD_INFO_x use record
      AllocationSize at 0 range 0..63;
      EndOfFile at 0 range 64..127;
      NumberOfLinks at 0 range 128..159;
      DeletePending at 0 range 160..167;
      Directory at 0 range 168..175;
   end record;
   for FILE_STANDARD_INFO_x'Size use 192;
   for FILE_STANDARD_INFO_x'Alignment use 8;
   subtype FILE_STANDARD_INFO is FILE_STANDARD_INFO_x;
   type PFILE_STANDARD_INFO is access all FILE_STANDARD_INFO_x;
   type FILE_NAME_INFO_x_FileName_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type FILE_NAME_INFO_x is record
      FileNameLength : DWORD;
      FileName : FILE_NAME_INFO_x_FileName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_NAME_INFO_x);
   for FILE_NAME_INFO_x use record
      FileNameLength at 0 range 0..31;
      FileName at 0 range 32..47;
   end record;
   for FILE_NAME_INFO_x'Size use 64;
   for FILE_NAME_INFO_x'Alignment use 4;
   subtype FILE_NAME_INFO is FILE_NAME_INFO_x;
   type PFILE_NAME_INFO is access all FILE_NAME_INFO_x;
   type FILE_CASE_SENSITIVE_INFO_x is record
      Flags : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_CASE_SENSITIVE_INFO_x);
   for FILE_CASE_SENSITIVE_INFO_x use record
      Flags at 0 range 0..31;
   end record;
   for FILE_CASE_SENSITIVE_INFO_x'Size use 32;
   for FILE_CASE_SENSITIVE_INFO_x'Alignment use 4;
   subtype FILE_CASE_SENSITIVE_INFO is FILE_CASE_SENSITIVE_INFO_x;
   type PFILE_CASE_SENSITIVE_INFO is access all FILE_CASE_SENSITIVE_INFO_x;
   type Anonymous_Record_157 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            ReplaceIfExists : BOOLEAN;
         when others => 
            Flags : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_157);
   pragma Unchecked_Union (Anonymous_Record_157);
   for Anonymous_Record_157'Size use 32;
   for Anonymous_Record_157'Alignment use 4;
   type FILE_RENAME_INFO_x_FileName_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type FILE_RENAME_INFO_x is record
      field_1 : Anonymous_Record_157;
      RootDirectory : HANDLE;
      FileNameLength : DWORD;
      FileName : FILE_RENAME_INFO_x_FileName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_RENAME_INFO_x);
   for FILE_RENAME_INFO_x use record
      field_1 at 0 range 0..31;
      RootDirectory at 0 range 64..127;
      FileNameLength at 0 range 128..159;
      FileName at 0 range 160..175;
   end record;
   for FILE_RENAME_INFO_x'Size use 192;
   for FILE_RENAME_INFO_x'Alignment use 8;
   subtype FILE_RENAME_INFO is FILE_RENAME_INFO_x;
   type PFILE_RENAME_INFO is access all FILE_RENAME_INFO_x;
   type FILE_ALLOCATION_INFO_x is record
      AllocationSize : LARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_ALLOCATION_INFO_x);
   for FILE_ALLOCATION_INFO_x use record
      AllocationSize at 0 range 0..63;
   end record;
   for FILE_ALLOCATION_INFO_x'Size use 64;
   for FILE_ALLOCATION_INFO_x'Alignment use 8;
   subtype FILE_ALLOCATION_INFO is FILE_ALLOCATION_INFO_x;
   type PFILE_ALLOCATION_INFO is access all FILE_ALLOCATION_INFO_x;
   type FILE_END_OF_FILE_INFO_x is record
      EndOfFile : LARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_END_OF_FILE_INFO_x);
   for FILE_END_OF_FILE_INFO_x use record
      EndOfFile at 0 range 0..63;
   end record;
   for FILE_END_OF_FILE_INFO_x'Size use 64;
   for FILE_END_OF_FILE_INFO_x'Alignment use 8;
   subtype FILE_END_OF_FILE_INFO is FILE_END_OF_FILE_INFO_x;
   type PFILE_END_OF_FILE_INFO is access all FILE_END_OF_FILE_INFO_x;
   type FILE_STREAM_INFO_x_StreamName_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type FILE_STREAM_INFO_x is record
      NextEntryOffset : DWORD;
      StreamNameLength : DWORD;
      StreamSize : LARGE_INTEGER;
      StreamAllocationSize : LARGE_INTEGER;
      StreamName : FILE_STREAM_INFO_x_StreamName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_STREAM_INFO_x);
   for FILE_STREAM_INFO_x use record
      NextEntryOffset at 0 range 0..31;
      StreamNameLength at 0 range 32..63;
      StreamSize at 0 range 64..127;
      StreamAllocationSize at 0 range 128..191;
      StreamName at 0 range 192..207;
   end record;
   for FILE_STREAM_INFO_x'Size use 256;
   for FILE_STREAM_INFO_x'Alignment use 8;
   subtype FILE_STREAM_INFO is FILE_STREAM_INFO_x;
   type PFILE_STREAM_INFO is access all FILE_STREAM_INFO_x;
   type FILE_COMPRESSION_INFO_x_Reserved_Array is array(1..3) of UCHAR; -- Auto Generated Dependancy
   type FILE_COMPRESSION_INFO_x is record
      CompressedFileSize : LARGE_INTEGER;
      CompressionFormat : WORD;
      CompressionUnitShift : UCHAR;
      ChunkShift : UCHAR;
      ClusterShift : UCHAR;
      Reserved : FILE_COMPRESSION_INFO_x_Reserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_COMPRESSION_INFO_x);
   for FILE_COMPRESSION_INFO_x use record
      CompressedFileSize at 0 range 0..63;
      CompressionFormat at 0 range 64..79;
      CompressionUnitShift at 0 range 80..87;
      ChunkShift at 0 range 88..95;
      ClusterShift at 0 range 96..103;
      Reserved at 0 range 104..127;
   end record;
   for FILE_COMPRESSION_INFO_x'Size use 128;
   for FILE_COMPRESSION_INFO_x'Alignment use 8;
   subtype FILE_COMPRESSION_INFO is FILE_COMPRESSION_INFO_x;
   type PFILE_COMPRESSION_INFO is access all FILE_COMPRESSION_INFO_x;
   type FILE_ATTRIBUTE_TAG_INFO_x is record
      FileAttributes : DWORD;
      ReparseTag : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_ATTRIBUTE_TAG_INFO_x);
   for FILE_ATTRIBUTE_TAG_INFO_x use record
      FileAttributes at 0 range 0..31;
      ReparseTag at 0 range 32..63;
   end record;
   for FILE_ATTRIBUTE_TAG_INFO_x'Size use 64;
   for FILE_ATTRIBUTE_TAG_INFO_x'Alignment use 4;
   subtype FILE_ATTRIBUTE_TAG_INFO is FILE_ATTRIBUTE_TAG_INFO_x;
   type PFILE_ATTRIBUTE_TAG_INFO is access all FILE_ATTRIBUTE_TAG_INFO_x;
   type FILE_DISPOSITION_INFO_x is record
      DeleteFileA_x : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_DISPOSITION_INFO_x);
   for FILE_DISPOSITION_INFO_x use record
      DeleteFileA_x at 0 range 0..7;
   end record;
   for FILE_DISPOSITION_INFO_x'Size use 8;
   for FILE_DISPOSITION_INFO_x'Alignment use 1;
   subtype FILE_DISPOSITION_INFO is FILE_DISPOSITION_INFO_x;
   type PFILE_DISPOSITION_INFO is access all FILE_DISPOSITION_INFO_x;
   type FILE_DISPOSITION_INFO_EX_x is record
      Flags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_DISPOSITION_INFO_EX_x);
   for FILE_DISPOSITION_INFO_EX_x use record
      Flags at 0 range 0..31;
   end record;
   for FILE_DISPOSITION_INFO_EX_x'Size use 32;
   for FILE_DISPOSITION_INFO_EX_x'Alignment use 4;
   subtype FILE_DISPOSITION_INFO_EX is FILE_DISPOSITION_INFO_EX_x;
   type PFILE_DISPOSITION_INFO_EX is access all FILE_DISPOSITION_INFO_EX_x;
   type FILE_ID_BOTH_DIR_INFO_x_ShortName_Array is array(1..12) of WCHAR; -- Auto Generated Dependancy
   type FILE_ID_BOTH_DIR_INFO_x_FileName_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type FILE_ID_BOTH_DIR_INFO_x is record
      NextEntryOffset : DWORD;
      FileIndex : DWORD;
      CreationTime : LARGE_INTEGER;
      LastAccessTime : LARGE_INTEGER;
      LastWriteTime : LARGE_INTEGER;
      ChangeTime : LARGE_INTEGER;
      EndOfFile : LARGE_INTEGER;
      AllocationSize : LARGE_INTEGER;
      FileAttributes : DWORD;
      FileNameLength : DWORD;
      EaSize : DWORD;
      ShortNameLength : CCHAR;
      ShortName : FILE_ID_BOTH_DIR_INFO_x_ShortName_Array;
      FileId : LARGE_INTEGER;
      FileName : FILE_ID_BOTH_DIR_INFO_x_FileName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_ID_BOTH_DIR_INFO_x);
   for FILE_ID_BOTH_DIR_INFO_x use record
      NextEntryOffset at 0 range 0..31;
      FileIndex at 0 range 32..63;
      CreationTime at 0 range 64..127;
      LastAccessTime at 0 range 128..191;
      LastWriteTime at 0 range 192..255;
      ChangeTime at 0 range 256..319;
      EndOfFile at 0 range 320..383;
      AllocationSize at 0 range 384..447;
      FileAttributes at 0 range 448..479;
      FileNameLength at 0 range 480..511;
      EaSize at 0 range 512..543;
      ShortNameLength at 0 range 544..551;
      ShortName at 0 range 560..751;
      FileId at 0 range 768..831;
      FileName at 0 range 832..847;
   end record;
   for FILE_ID_BOTH_DIR_INFO_x'Size use 896;
   for FILE_ID_BOTH_DIR_INFO_x'Alignment use 8;
   subtype FILE_ID_BOTH_DIR_INFO is FILE_ID_BOTH_DIR_INFO_x;
   type PFILE_ID_BOTH_DIR_INFO is access all FILE_ID_BOTH_DIR_INFO_x;
   type FILE_FULL_DIR_INFO_x_FileName_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type FILE_FULL_DIR_INFO_x is record
      NextEntryOffset : ULONG;
      FileIndex : ULONG;
      CreationTime : LARGE_INTEGER;
      LastAccessTime : LARGE_INTEGER;
      LastWriteTime : LARGE_INTEGER;
      ChangeTime : LARGE_INTEGER;
      EndOfFile : LARGE_INTEGER;
      AllocationSize : LARGE_INTEGER;
      FileAttributes : ULONG;
      FileNameLength : ULONG;
      EaSize : ULONG;
      FileName : FILE_FULL_DIR_INFO_x_FileName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_FULL_DIR_INFO_x);
   for FILE_FULL_DIR_INFO_x use record
      NextEntryOffset at 0 range 0..31;
      FileIndex at 0 range 32..63;
      CreationTime at 0 range 64..127;
      LastAccessTime at 0 range 128..191;
      LastWriteTime at 0 range 192..255;
      ChangeTime at 0 range 256..319;
      EndOfFile at 0 range 320..383;
      AllocationSize at 0 range 384..447;
      FileAttributes at 0 range 448..479;
      FileNameLength at 0 range 480..511;
      EaSize at 0 range 512..543;
      FileName at 0 range 544..559;
   end record;
   for FILE_FULL_DIR_INFO_x'Size use 576;
   for FILE_FULL_DIR_INFO_x'Alignment use 8;
   subtype FILE_FULL_DIR_INFO is FILE_FULL_DIR_INFO_x;
   type PFILE_FULL_DIR_INFO is access all FILE_FULL_DIR_INFO_x;
   type PRIORITY_HINT_x is (
      IoPriorityHintVeryLow,
      IoPriorityHintLow,
      IoPriorityHintNormal,
      MaximumIoPriorityHintType
   );
   for PRIORITY_HINT_x use (
      IoPriorityHintVeryLow => 0,
      IoPriorityHintLow => 1,
      IoPriorityHintNormal => 2,
      MaximumIoPriorityHintType => 3
   );
   for PRIORITY_HINT_x'Size use 32;
   subtype PRIORITY_HINT is PRIORITY_HINT_x;
   type FILE_IO_PRIORITY_HINT_INFO_x is record
      PriorityHint : PRIORITY_HINT;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_IO_PRIORITY_HINT_INFO_x);
   for FILE_IO_PRIORITY_HINT_INFO_x use record
      PriorityHint at 0 range 0..31;
   end record;
   for FILE_IO_PRIORITY_HINT_INFO_x'Size use 32;
   for FILE_IO_PRIORITY_HINT_INFO_x'Alignment use 4;
   subtype FILE_IO_PRIORITY_HINT_INFO is FILE_IO_PRIORITY_HINT_INFO_x;
   type PFILE_IO_PRIORITY_HINT_INFO is access all FILE_IO_PRIORITY_HINT_INFO_x;
   type FILE_ALIGNMENT_INFO_x is record
      AlignmentRequirement : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_ALIGNMENT_INFO_x);
   for FILE_ALIGNMENT_INFO_x use record
      AlignmentRequirement at 0 range 0..31;
   end record;
   for FILE_ALIGNMENT_INFO_x'Size use 32;
   for FILE_ALIGNMENT_INFO_x'Alignment use 4;
   subtype FILE_ALIGNMENT_INFO is FILE_ALIGNMENT_INFO_x;
   type PFILE_ALIGNMENT_INFO is access all FILE_ALIGNMENT_INFO_x;
   type FILE_STORAGE_INFO_x is record
      LogicalBytesPerSector : ULONG;
      PhysicalBytesPerSectorForAtomicity : ULONG;
      PhysicalBytesPerSectorForPerformance : ULONG;
      FileSystemEffectivePhysicalBytesPerSectorForAtomicity : ULONG;
      Flags : ULONG;
      ByteOffsetForSectorAlignment : ULONG;
      ByteOffsetForPartitionAlignment : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_STORAGE_INFO_x);
   for FILE_STORAGE_INFO_x use record
      LogicalBytesPerSector at 0 range 0..31;
      PhysicalBytesPerSectorForAtomicity at 0 range 32..63;
      PhysicalBytesPerSectorForPerformance at 0 range 64..95;
      FileSystemEffectivePhysicalBytesPerSectorForAtomicity at 0 range 96..127;
      Flags at 0 range 128..159;
      ByteOffsetForSectorAlignment at 0 range 160..191;
      ByteOffsetForPartitionAlignment at 0 range 192..223;
   end record;
   for FILE_STORAGE_INFO_x'Size use 224;
   for FILE_STORAGE_INFO_x'Alignment use 4;
   subtype FILE_STORAGE_INFO is FILE_STORAGE_INFO_x;
   type PFILE_STORAGE_INFO is access all FILE_STORAGE_INFO_x;
   type FILE_ID_INFO_x is record
      VolumeSerialNumber : ULONGLONG;
      FileId : FILE_ID_128;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_ID_INFO_x);
   for FILE_ID_INFO_x use record
      VolumeSerialNumber at 0 range 0..63;
      FileId at 0 range 64..191;
   end record;
   for FILE_ID_INFO_x'Size use 192;
   for FILE_ID_INFO_x'Alignment use 8;
   subtype FILE_ID_INFO is FILE_ID_INFO_x;
   type PFILE_ID_INFO is access all FILE_ID_INFO_x;
   type FILE_ID_EXTD_DIR_INFO_x_FileName_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type FILE_ID_EXTD_DIR_INFO_x is record
      NextEntryOffset : ULONG;
      FileIndex : ULONG;
      CreationTime : LARGE_INTEGER;
      LastAccessTime : LARGE_INTEGER;
      LastWriteTime : LARGE_INTEGER;
      ChangeTime : LARGE_INTEGER;
      EndOfFile : LARGE_INTEGER;
      AllocationSize : LARGE_INTEGER;
      FileAttributes : ULONG;
      FileNameLength : ULONG;
      EaSize : ULONG;
      ReparsePointTag : ULONG;
      FileId : FILE_ID_128;
      FileName : FILE_ID_EXTD_DIR_INFO_x_FileName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_ID_EXTD_DIR_INFO_x);
   for FILE_ID_EXTD_DIR_INFO_x use record
      NextEntryOffset at 0 range 0..31;
      FileIndex at 0 range 32..63;
      CreationTime at 0 range 64..127;
      LastAccessTime at 0 range 128..191;
      LastWriteTime at 0 range 192..255;
      ChangeTime at 0 range 256..319;
      EndOfFile at 0 range 320..383;
      AllocationSize at 0 range 384..447;
      FileAttributes at 0 range 448..479;
      FileNameLength at 0 range 480..511;
      EaSize at 0 range 512..543;
      ReparsePointTag at 0 range 544..575;
      FileId at 0 range 576..703;
      FileName at 0 range 704..719;
   end record;
   for FILE_ID_EXTD_DIR_INFO_x'Size use 768;
   for FILE_ID_EXTD_DIR_INFO_x'Alignment use 8;
   subtype FILE_ID_EXTD_DIR_INFO is FILE_ID_EXTD_DIR_INFO_x;
   type PFILE_ID_EXTD_DIR_INFO is access all FILE_ID_EXTD_DIR_INFO_x;
   type Anonymous_Record_158_Reserved_Array is array(1..8) of ULONG; -- Auto Generated Dependancy
   type Anonymous_Record_158 is record
      Reserved : Anonymous_Record_158_Reserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_158);
   for Anonymous_Record_158 use record
      Reserved at 0 range 0..255;
   end record;
   for Anonymous_Record_158'Size use 256;
   for Anonymous_Record_158'Alignment use 4;
   type Anonymous_Record_161 is record
      Capabilities : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_161);
   for Anonymous_Record_161 use record
      Capabilities at 0 range 0..31;
   end record;
   for Anonymous_Record_161'Size use 32;
   for Anonymous_Record_161'Alignment use 4;
   type Anonymous_Record_162 is record
      Capabilities : ULONG;
      CachingFlags : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_162);
   for Anonymous_Record_162 use record
      Capabilities at 0 range 0..31;
      CachingFlags at 0 range 32..63;
   end record;
   for Anonymous_Record_162'Size use 64;
   for Anonymous_Record_162'Alignment use 4;
   type Anonymous_Record_160 is record
      field_1 : Anonymous_Record_161;
      field_2 : Anonymous_Record_162;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_160);
   for Anonymous_Record_160 use record
      field_1 at 0 range 0..31;
      field_2 at 0 range 32..95;
   end record;
   for Anonymous_Record_160'Size use 96;
   for Anonymous_Record_160'Alignment use 4;
   type Anonymous_Record_159_Reserved_Array is array(1..16) of ULONG; -- Auto Generated Dependancy
   type Anonymous_Record_159 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_160;
         when others => 
            Reserved : Anonymous_Record_159_Reserved_Array;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_159);
   pragma Unchecked_Union (Anonymous_Record_159);
   for Anonymous_Record_159'Size use 512;
   for Anonymous_Record_159'Alignment use 4;
   type FILE_REMOTE_PROTOCOL_INFO_x is record
      StructureVersion : USHORT;
      StructureSize : USHORT;
      Protocol : ULONG;
      ProtocolMajorVersion : USHORT;
      ProtocolMinorVersion : USHORT;
      ProtocolRevision : USHORT;
      Reserved : USHORT;
      Flags : ULONG;
      field_1 : Anonymous_Record_158;
      field_2 : Anonymous_Record_159;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_REMOTE_PROTOCOL_INFO_x);
   for FILE_REMOTE_PROTOCOL_INFO_x use record
      StructureVersion at 0 range 0..15;
      StructureSize at 0 range 16..31;
      Protocol at 0 range 32..63;
      ProtocolMajorVersion at 0 range 64..79;
      ProtocolMinorVersion at 0 range 80..95;
      ProtocolRevision at 0 range 96..111;
      Reserved at 0 range 112..127;
      Flags at 0 range 128..159;
      field_1 at 0 range 160..415;
      field_2 at 0 range 416..927;
   end record;
   for FILE_REMOTE_PROTOCOL_INFO_x'Size use 928;
   for FILE_REMOTE_PROTOCOL_INFO_x'Alignment use 4;
   subtype FILE_REMOTE_PROTOCOL_INFO is FILE_REMOTE_PROTOCOL_INFO_x;
   type PFILE_REMOTE_PROTOCOL_INFO is access all FILE_REMOTE_PROTOCOL_INFO_x;
   function GetFileInformationByHandleEx(
      hFile_x : HANDLE;
      FileInformationClass : FILE_INFO_BY_HANDLE_CLASS;
      lpFileInformation : LPVOID;
      dwBufferSize : DWORD
   ) return BOOL;
   pragma import (Cpp,GetFileInformationByHandleEx,"GetFileInformationByHandleEx");
   type FILE_ID_TYPE_x is (
      FileIdType,
      ObjectIdType,
      ExtendedFileIdType,
      MaximumFileIdType
   );
   for FILE_ID_TYPE_x use (
      FileIdType => 0,
      ObjectIdType => 1,
      ExtendedFileIdType => 2,
      MaximumFileIdType => 3
   );
   for FILE_ID_TYPE_x'Size use 32;
   subtype FILE_ID_TYPE is FILE_ID_TYPE_x;
   type PFILE_ID_TYPE is access all FILE_ID_TYPE_x;
   type Anonymous_Record_163 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            FileId : LARGE_INTEGER;
         when 1 =>
            ObjectId_x : GUID;
         when others => 
            ExtendedFileId : FILE_ID_128;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_163);
   pragma Unchecked_Union (Anonymous_Record_163);
   for Anonymous_Record_163'Size use 128;
   for Anonymous_Record_163'Alignment use 8;
   type FILE_ID_DESCRIPTOR is record
      dwSize : DWORD;
      type_x : FILE_ID_TYPE;
      field_1 : Anonymous_Record_163;
   end record;
   pragma Convention (C_Pass_By_Copy,FILE_ID_DESCRIPTOR);
   for FILE_ID_DESCRIPTOR use record
      dwSize at 0 range 0..31;
      type_x at 0 range 32..63;
      field_1 at 0 range 64..191;
   end record;
   for FILE_ID_DESCRIPTOR'Size use 192;
   for FILE_ID_DESCRIPTOR'Alignment use 8;
   type LPFILE_ID_DESCRIPTOR is access all FILE_ID_DESCRIPTOR;
   function OpenFileById(
      hVolumeHint : HANDLE;
      lpFileId : LPFILE_ID_DESCRIPTOR;
      dwDesiredAccess : DWORD;
      dwShareMode : DWORD;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      dwFlagsAndAttributes : DWORD
   ) return HANDLE;
   pragma import (Cpp,OpenFileById,"OpenFileById");
   function CreateSymbolicLinkA(
      lpSymlinkFileName : LPCSTR;
      lpTargetFileName : LPCSTR;
      dwFlags : DWORD
   ) return BOOLEAN;
   pragma import (Cpp,CreateSymbolicLinkA,"CreateSymbolicLinkA");
   function CreateSymbolicLinkW(
      lpSymlinkFileName : LPCWSTR;
      lpTargetFileName : LPCWSTR;
      dwFlags : DWORD
   ) return BOOLEAN;
   pragma import (Cpp,CreateSymbolicLinkW,"CreateSymbolicLinkW");
   function QueryActCtxSettingsW(
      dwFlags : DWORD;
      hActCtx : HANDLE;
      settingsNameSpace : PCWSTR;
      settingName : PCWSTR;
      pvBuffer : PWSTR;
      dwBuffer : SIZE_T;
      pdwWrittenOrRequired : access SIZE_T
   ) return BOOL;
   pragma import (Cpp,QueryActCtxSettingsW,"QueryActCtxSettingsW");
   function CreateSymbolicLinkTransactedA(
      lpSymlinkFileName : LPCSTR;
      lpTargetFileName : LPCSTR;
      dwFlags : DWORD;
      hTransaction : HANDLE
   ) return BOOLEAN;
   pragma import (Cpp,CreateSymbolicLinkTransactedA,"CreateSymbolicLinkTransactedA");
   function CreateSymbolicLinkTransactedW(
      lpSymlinkFileName : LPCWSTR;
      lpTargetFileName : LPCWSTR;
      dwFlags : DWORD;
      hTransaction : HANDLE
   ) return BOOLEAN;
   pragma import (Cpp,CreateSymbolicLinkTransactedW,"CreateSymbolicLinkTransactedW");
   function ReplacePartitionUnit(
      TargetPartition : PWSTR;
      SparePartition : PWSTR;
      Flags : ULONG
   ) return BOOL;
   pragma import (Cpp,ReplacePartitionUnit,"ReplacePartitionUnit");
   function AddSecureMemoryCacheCallback(
      pfnCallBack : PSECURE_MEMORY_CACHE_CALLBACK
   ) return BOOL;
   pragma import (Cpp,AddSecureMemoryCacheCallback,"AddSecureMemoryCacheCallback");
   function RemoveSecureMemoryCacheCallback(
      pfnCallBack : PSECURE_MEMORY_CACHE_CALLBACK
   ) return BOOL;
   pragma import (Cpp,RemoveSecureMemoryCacheCallback,"RemoveSecureMemoryCacheCallback");
   function CopyContext(
      Destination : PCONTEXT;
      ContextFlags : DWORD;
      Source : PCONTEXT
   ) return BOOL;
   pragma import (Cpp,CopyContext,"CopyContext");
   function InitializeContext(
      Buffer : PVOID;
      ContextFlags : DWORD;
      Context_x : access PCONTEXT;
      ContextLength : PDWORD
   ) return BOOL;
   pragma import (Cpp,InitializeContext,"InitializeContext");
   function InitializeContext2(
      Buffer : PVOID;
      ContextFlags : DWORD;
      Context_x : access PCONTEXT;
      ContextLength : PDWORD;
      XStateCompactionMask : ULONG64
   ) return BOOL;
   pragma import (Cpp,InitializeContext2,"InitializeContext2");
   function GetEnabledXStateFeatures return DWORD64;
   pragma import (Cpp,GetEnabledXStateFeatures,"GetEnabledXStateFeatures");
   function GetXStateFeaturesMask(
      Context_x : PCONTEXT;
      FeatureMask : PDWORD64
   ) return BOOL;
   pragma import (Cpp,GetXStateFeaturesMask,"GetXStateFeaturesMask");
   procedure LocateXStateFeature(
      Context_x : PCONTEXT;
      FeatureId : DWORD;
      Length : PDWORD
   );
   pragma import (Cpp,LocateXStateFeature,"LocateXStateFeature");
   function SetXStateFeaturesMask(
      Context_x : PCONTEXT;
      FeatureMask : DWORD64
   ) return BOOL;
   pragma import (Cpp,SetXStateFeaturesMask,"SetXStateFeaturesMask");
   function EnableThreadProfiling(
      ThreadHandle : HANDLE;
      Flags : DWORD;
      HardwareCounters : DWORD64;
      PerformanceDataHandle : access HANDLE
   ) return DWORD;
   pragma import (Cpp,EnableThreadProfiling,"EnableThreadProfiling");
   function DisableThreadProfiling(
      PerformanceDataHandle : HANDLE
   ) return DWORD;
   pragma import (Cpp,DisableThreadProfiling,"DisableThreadProfiling");
   function QueryThreadProfiling(
      ThreadHandle : HANDLE;
      Enabled : PBOOLEAN
   ) return DWORD;
   pragma import (Cpp,QueryThreadProfiling,"QueryThreadProfiling");
   function ReadThreadProfilingData(
      PerformanceDataHandle : HANDLE;
      Flags : DWORD;
      PerformanceData : PPERFORMANCE_DATA
   ) return DWORD;
   pragma import (Cpp,ReadThreadProfilingData,"ReadThreadProfilingData");
   function RaiseCustomSystemEventTrigger(
      CustomSystemEventTriggerConfig : PCUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG
   ) return DWORD;
   pragma import (Cpp,RaiseCustomSystemEventTrigger,"RaiseCustomSystemEventTrigger");
   -- InterlockedIncrement_x(); -- inlined function not supported
   -- InterlockedIncrement_x(); -- inlined function not supported
   -- InterlockedIncrement_x(); -- inlined function not supported
   -- InterlockedDecrement_x(); -- inlined function not supported
   -- InterlockedDecrement_x(); -- inlined function not supported
   -- InterlockedDecrement_x(); -- inlined function not supported
   -- InterlockedExchange_x(); -- inlined function not supported
   -- InterlockedExchange_x(); -- inlined function not supported
   -- InterlockedExchange_x(); -- inlined function not supported
   -- InterlockedExchangeAdd_x(); -- inlined function not supported
   -- InterlockedExchangeSubtract(); -- inlined function not supported
   -- InterlockedExchangeAdd_x(); -- inlined function not supported
   -- InterlockedExchangeSubtract(); -- inlined function not supported
   -- InterlockedExchangeAdd_x(); -- inlined function not supported
   -- InterlockedExchangeSubtract(); -- inlined function not supported
   -- InterlockedCompareExchange_x(); -- inlined function not supported
   -- InterlockedCompareExchange_x(); -- inlined function not supported
   -- InterlockedCompareExchange_x(); -- inlined function not supported
   -- InterlockedAnd_x(); -- inlined function not supported
   -- InterlockedOr_x(); -- inlined function not supported
   -- InterlockedXor_x(); -- inlined function not supported
   -- #include <wingdi.h>
   type DRAWPATRECT_x is record
      ptPosition : POINT;
      ptSize : POINT;
      wStyle : WORD;
      wPattern : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DRAWPATRECT_x);
   for DRAWPATRECT_x use record
      ptPosition at 0 range 0..63;
      ptSize at 0 range 64..127;
      wStyle at 0 range 128..143;
      wPattern at 0 range 144..159;
   end record;
   for DRAWPATRECT_x'Size use 160;
   for DRAWPATRECT_x'Alignment use 4;
   subtype DRAWPATRECT is DRAWPATRECT_x;
   type PDRAWPATRECT is access all DRAWPATRECT_x;
   type PSINJECTDATA_x is record
      DataBytes : DWORD;
      InjectionPoint : WORD;
      PageNumber : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PSINJECTDATA_x);
   for PSINJECTDATA_x use record
      DataBytes at 0 range 0..31;
      InjectionPoint at 0 range 32..47;
      PageNumber at 0 range 48..63;
   end record;
   for PSINJECTDATA_x'Size use 64;
   for PSINJECTDATA_x'Alignment use 4;
   subtype PSINJECTDATA is PSINJECTDATA_x;
   type PPSINJECTDATA is access all PSINJECTDATA_x;
   type PSFEATURE_OUTPUT_x is record
      bPageIndependent : BOOL;
      bSetPageDevice : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,PSFEATURE_OUTPUT_x);
   for PSFEATURE_OUTPUT_x use record
      bPageIndependent at 0 range 0..31;
      bSetPageDevice at 0 range 32..63;
   end record;
   for PSFEATURE_OUTPUT_x'Size use 64;
   for PSFEATURE_OUTPUT_x'Alignment use 4;
   subtype PSFEATURE_OUTPUT is PSFEATURE_OUTPUT_x;
   type PPSFEATURE_OUTPUT is access all PSFEATURE_OUTPUT_x;
   type PSFEATURE_CUSTPAPER_x is record
      lOrientation : LONG;
      lWidth : LONG;
      lHeight : LONG;
      lWidthOffset : LONG;
      lHeightOffset : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,PSFEATURE_CUSTPAPER_x);
   for PSFEATURE_CUSTPAPER_x use record
      lOrientation at 0 range 0..31;
      lWidth at 0 range 32..63;
      lHeight at 0 range 64..95;
      lWidthOffset at 0 range 96..127;
      lHeightOffset at 0 range 128..159;
   end record;
   for PSFEATURE_CUSTPAPER_x'Size use 160;
   for PSFEATURE_CUSTPAPER_x'Alignment use 4;
   subtype PSFEATURE_CUSTPAPER is PSFEATURE_CUSTPAPER_x;
   type PPSFEATURE_CUSTPAPER is access all PSFEATURE_CUSTPAPER_x;
   type tagXFORM is record
      eM11 : FLOAT;
      eM12 : FLOAT;
      eM21 : FLOAT;
      eM22 : FLOAT;
      eDx : FLOAT;
      eDy : FLOAT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagXFORM);
   for tagXFORM use record
      eM11 at 0 range 0..31;
      eM12 at 0 range 32..63;
      eM21 at 0 range 64..95;
      eM22 at 0 range 96..127;
      eDx at 0 range 128..159;
      eDy at 0 range 160..191;
   end record;
   for tagXFORM'Size use 192;
   for tagXFORM'Alignment use 4;
   subtype XFORM is tagXFORM;
   type PXFORM is access all tagXFORM;
   type LPXFORM is access all tagXFORM;
   type tagBITMAP is record
      bmType : LONG;
      bmWidth : LONG;
      bmHeight : LONG;
      bmWidthBytes : LONG;
      bmPlanes : WORD;
      bmBitsPixel : WORD;
      bmBits : LPVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBITMAP);
   for tagBITMAP use record
      bmType at 0 range 0..31;
      bmWidth at 0 range 32..63;
      bmHeight at 0 range 64..95;
      bmWidthBytes at 0 range 96..127;
      bmPlanes at 0 range 128..143;
      bmBitsPixel at 0 range 144..159;
      bmBits at 0 range 192..255;
   end record;
   for tagBITMAP'Size use 256;
   for tagBITMAP'Alignment use 8;
   subtype BITMAP is tagBITMAP;
   type PBITMAP is access all tagBITMAP;
   type NPBITMAP is access all tagBITMAP;
   type LPBITMAP is access all tagBITMAP;
   type tagRGBTRIPLE is record
      rgbtBlue : BYTE;
      rgbtGreen : BYTE;
      rgbtRed : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRGBTRIPLE);
   for tagRGBTRIPLE use record
      rgbtBlue at 0 range 0..7;
      rgbtGreen at 0 range 8..15;
      rgbtRed at 0 range 16..23;
   end record;
   for tagRGBTRIPLE'Size use 24;
   for tagRGBTRIPLE'Alignment use 1;
   subtype RGBTRIPLE is tagRGBTRIPLE;
   type PRGBTRIPLE is access all tagRGBTRIPLE;
   type NPRGBTRIPLE is access all tagRGBTRIPLE;
   type LPRGBTRIPLE is access all tagRGBTRIPLE;
   type tagRGBQUAD is record
      rgbBlue : BYTE;
      rgbGreen : BYTE;
      rgbRed : BYTE;
      rgbReserved : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRGBQUAD);
   for tagRGBQUAD use record
      rgbBlue at 0 range 0..7;
      rgbGreen at 0 range 8..15;
      rgbRed at 0 range 16..23;
      rgbReserved at 0 range 24..31;
   end record;
   for tagRGBQUAD'Size use 32;
   for tagRGBQUAD'Alignment use 1;
   subtype RGBQUAD is tagRGBQUAD;
   type LPRGBQUAD is access all RGBQUAD;
   subtype LCSCSTYPE is LONG;
   subtype LCSGAMUTMATCH is LONG;
   subtype FXPT16DOT16 is Interfaces.C.Long;
   type LPFXPT16DOT16 is access all Interfaces.C.Long;
   subtype FXPT2DOT30 is Interfaces.C.Long;
   type LPFXPT2DOT30 is access all Interfaces.C.Long;
   type tagCIEXYZ is record
      ciexyzX : FXPT2DOT30;
      ciexyzY : FXPT2DOT30;
      ciexyzZ : FXPT2DOT30;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCIEXYZ);
   for tagCIEXYZ use record
      ciexyzX at 0 range 0..31;
      ciexyzY at 0 range 32..63;
      ciexyzZ at 0 range 64..95;
   end record;
   for tagCIEXYZ'Size use 96;
   for tagCIEXYZ'Alignment use 4;
   subtype CIEXYZ is tagCIEXYZ;
   type LPCIEXYZ is access all CIEXYZ;
   type tagICEXYZTRIPLE is record
      ciexyzRed : CIEXYZ;
      ciexyzGreen : CIEXYZ;
      ciexyzBlue : CIEXYZ;
   end record;
   pragma Convention (C_Pass_By_Copy,tagICEXYZTRIPLE);
   for tagICEXYZTRIPLE use record
      ciexyzRed at 0 range 0..95;
      ciexyzGreen at 0 range 96..191;
      ciexyzBlue at 0 range 192..287;
   end record;
   for tagICEXYZTRIPLE'Size use 288;
   for tagICEXYZTRIPLE'Alignment use 4;
   subtype CIEXYZTRIPLE is tagICEXYZTRIPLE;
   type LPCIEXYZTRIPLE is access all CIEXYZTRIPLE;
   type tagLOGCOLORSPACEA_lcsFilename_Array is array(1..260) of CHAR; -- Auto Generated Dependancy
   type tagLOGCOLORSPACEA is record
      lcsSignature : DWORD;
      lcsVersion : DWORD;
      lcsSize : DWORD;
      lcsCSType_x : LCSCSTYPE;
      lcsIntent : LCSGAMUTMATCH;
      lcsEndpoints : CIEXYZTRIPLE;
      lcsGammaRed : DWORD;
      lcsGammaGreen : DWORD;
      lcsGammaBlue : DWORD;
      lcsFilename : tagLOGCOLORSPACEA_lcsFilename_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLOGCOLORSPACEA);
   for tagLOGCOLORSPACEA use record
      lcsSignature at 0 range 0..31;
      lcsVersion at 0 range 32..63;
      lcsSize at 0 range 64..95;
      lcsCSType_x at 0 range 96..127;
      lcsIntent at 0 range 128..159;
      lcsEndpoints at 0 range 160..447;
      lcsGammaRed at 0 range 448..479;
      lcsGammaGreen at 0 range 480..511;
      lcsGammaBlue at 0 range 512..543;
      lcsFilename at 0 range 544..2623;
   end record;
   for tagLOGCOLORSPACEA'Size use 2624;
   for tagLOGCOLORSPACEA'Alignment use 4;
   subtype LOGCOLORSPACEA is tagLOGCOLORSPACEA;
   type LPLOGCOLORSPACEA is access all tagLOGCOLORSPACEA;
   type tagLOGCOLORSPACEW_lcsFilename_Array is array(1..260) of WCHAR; -- Auto Generated Dependancy
   type tagLOGCOLORSPACEW is record
      lcsSignature : DWORD;
      lcsVersion : DWORD;
      lcsSize : DWORD;
      lcsCSType_x : LCSCSTYPE;
      lcsIntent : LCSGAMUTMATCH;
      lcsEndpoints : CIEXYZTRIPLE;
      lcsGammaRed : DWORD;
      lcsGammaGreen : DWORD;
      lcsGammaBlue : DWORD;
      lcsFilename : tagLOGCOLORSPACEW_lcsFilename_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLOGCOLORSPACEW);
   for tagLOGCOLORSPACEW use record
      lcsSignature at 0 range 0..31;
      lcsVersion at 0 range 32..63;
      lcsSize at 0 range 64..95;
      lcsCSType_x at 0 range 96..127;
      lcsIntent at 0 range 128..159;
      lcsEndpoints at 0 range 160..447;
      lcsGammaRed at 0 range 448..479;
      lcsGammaGreen at 0 range 480..511;
      lcsGammaBlue at 0 range 512..543;
      lcsFilename at 0 range 544..4703;
   end record;
   for tagLOGCOLORSPACEW'Size use 4704;
   for tagLOGCOLORSPACEW'Alignment use 4;
   subtype LOGCOLORSPACEW is tagLOGCOLORSPACEW;
   type LPLOGCOLORSPACEW is access all tagLOGCOLORSPACEW;
   subtype LOGCOLORSPACE is LOGCOLORSPACEA;
   subtype LPLOGCOLORSPACE is LPLOGCOLORSPACEA;
   type tagBITMAPCOREHEADER is record
      bcSize : DWORD;
      bcWidth : WORD;
      bcHeight : WORD;
      bcPlanes : WORD;
      bcBitCount : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBITMAPCOREHEADER);
   for tagBITMAPCOREHEADER use record
      bcSize at 0 range 0..31;
      bcWidth at 0 range 32..47;
      bcHeight at 0 range 48..63;
      bcPlanes at 0 range 64..79;
      bcBitCount at 0 range 80..95;
   end record;
   for tagBITMAPCOREHEADER'Size use 96;
   for tagBITMAPCOREHEADER'Alignment use 4;
   subtype BITMAPCOREHEADER is tagBITMAPCOREHEADER;
   type LPBITMAPCOREHEADER is access all tagBITMAPCOREHEADER;
   type PBITMAPCOREHEADER is access all tagBITMAPCOREHEADER;
   type tagBITMAPINFOHEADER is record
      biSize : DWORD;
      biWidth : LONG;
      biHeight : LONG;
      biPlanes : WORD;
      biBitCount : WORD;
      biCompression : DWORD;
      biSizeImage : DWORD;
      biXPelsPerMeter : LONG;
      biYPelsPerMeter : LONG;
      biClrUsed : DWORD;
      biClrImportant : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBITMAPINFOHEADER);
   for tagBITMAPINFOHEADER use record
      biSize at 0 range 0..31;
      biWidth at 0 range 32..63;
      biHeight at 0 range 64..95;
      biPlanes at 0 range 96..111;
      biBitCount at 0 range 112..127;
      biCompression at 0 range 128..159;
      biSizeImage at 0 range 160..191;
      biXPelsPerMeter at 0 range 192..223;
      biYPelsPerMeter at 0 range 224..255;
      biClrUsed at 0 range 256..287;
      biClrImportant at 0 range 288..319;
   end record;
   for tagBITMAPINFOHEADER'Size use 320;
   for tagBITMAPINFOHEADER'Alignment use 4;
   subtype BITMAPINFOHEADER is tagBITMAPINFOHEADER;
   type LPBITMAPINFOHEADER is access all tagBITMAPINFOHEADER;
   type PBITMAPINFOHEADER is access all tagBITMAPINFOHEADER;
   type BITMAPV4HEADER is record
      bV4Size : DWORD;
      bV4Width : LONG;
      bV4Height : LONG;
      bV4Planes : WORD;
      bV4BitCount : WORD;
      bV4V4Compression : DWORD;
      bV4SizeImage : DWORD;
      bV4XPelsPerMeter : LONG;
      bV4YPelsPerMeter : LONG;
      bV4ClrUsed : DWORD;
      bV4ClrImportant : DWORD;
      bV4RedMask : DWORD;
      bV4GreenMask : DWORD;
      bV4BlueMask : DWORD;
      bV4AlphaMask : DWORD;
      bV4CSType : DWORD;
      bV4Endpoints : CIEXYZTRIPLE;
      bV4GammaRed : DWORD;
      bV4GammaGreen : DWORD;
      bV4GammaBlue : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,BITMAPV4HEADER);
   for BITMAPV4HEADER use record
      bV4Size at 0 range 0..31;
      bV4Width at 0 range 32..63;
      bV4Height at 0 range 64..95;
      bV4Planes at 0 range 96..111;
      bV4BitCount at 0 range 112..127;
      bV4V4Compression at 0 range 128..159;
      bV4SizeImage at 0 range 160..191;
      bV4XPelsPerMeter at 0 range 192..223;
      bV4YPelsPerMeter at 0 range 224..255;
      bV4ClrUsed at 0 range 256..287;
      bV4ClrImportant at 0 range 288..319;
      bV4RedMask at 0 range 320..351;
      bV4GreenMask at 0 range 352..383;
      bV4BlueMask at 0 range 384..415;
      bV4AlphaMask at 0 range 416..447;
      bV4CSType at 0 range 448..479;
      bV4Endpoints at 0 range 480..767;
      bV4GammaRed at 0 range 768..799;
      bV4GammaGreen at 0 range 800..831;
      bV4GammaBlue at 0 range 832..863;
   end record;
   for BITMAPV4HEADER'Size use 864;
   for BITMAPV4HEADER'Alignment use 4;
   type LPBITMAPV4HEADER is access all BITMAPV4HEADER;
   type PBITMAPV4HEADER is access all BITMAPV4HEADER;
   type BITMAPV5HEADER is record
      bV5Size : DWORD;
      bV5Width : LONG;
      bV5Height : LONG;
      bV5Planes : WORD;
      bV5BitCount : WORD;
      bV5Compression : DWORD;
      bV5SizeImage : DWORD;
      bV5XPelsPerMeter : LONG;
      bV5YPelsPerMeter : LONG;
      bV5ClrUsed : DWORD;
      bV5ClrImportant : DWORD;
      bV5RedMask : DWORD;
      bV5GreenMask : DWORD;
      bV5BlueMask : DWORD;
      bV5AlphaMask : DWORD;
      bV5CSType : DWORD;
      bV5Endpoints : CIEXYZTRIPLE;
      bV5GammaRed : DWORD;
      bV5GammaGreen : DWORD;
      bV5GammaBlue : DWORD;
      bV5Intent : DWORD;
      bV5ProfileData : DWORD;
      bV5ProfileSize : DWORD;
      bV5Reserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,BITMAPV5HEADER);
   for BITMAPV5HEADER use record
      bV5Size at 0 range 0..31;
      bV5Width at 0 range 32..63;
      bV5Height at 0 range 64..95;
      bV5Planes at 0 range 96..111;
      bV5BitCount at 0 range 112..127;
      bV5Compression at 0 range 128..159;
      bV5SizeImage at 0 range 160..191;
      bV5XPelsPerMeter at 0 range 192..223;
      bV5YPelsPerMeter at 0 range 224..255;
      bV5ClrUsed at 0 range 256..287;
      bV5ClrImportant at 0 range 288..319;
      bV5RedMask at 0 range 320..351;
      bV5GreenMask at 0 range 352..383;
      bV5BlueMask at 0 range 384..415;
      bV5AlphaMask at 0 range 416..447;
      bV5CSType at 0 range 448..479;
      bV5Endpoints at 0 range 480..767;
      bV5GammaRed at 0 range 768..799;
      bV5GammaGreen at 0 range 800..831;
      bV5GammaBlue at 0 range 832..863;
      bV5Intent at 0 range 864..895;
      bV5ProfileData at 0 range 896..927;
      bV5ProfileSize at 0 range 928..959;
      bV5Reserved at 0 range 960..991;
   end record;
   for BITMAPV5HEADER'Size use 992;
   for BITMAPV5HEADER'Alignment use 4;
   type LPBITMAPV5HEADER is access all BITMAPV5HEADER;
   type PBITMAPV5HEADER is access all BITMAPV5HEADER;
   type tagBITMAPINFO_bmiColors_Array is array(1..1) of RGBQUAD; -- Auto Generated Dependancy
   type tagBITMAPINFO is record
      bmiHeader : BITMAPINFOHEADER;
      bmiColors : tagBITMAPINFO_bmiColors_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBITMAPINFO);
   for tagBITMAPINFO use record
      bmiHeader at 0 range 0..319;
      bmiColors at 0 range 320..351;
   end record;
   for tagBITMAPINFO'Size use 352;
   for tagBITMAPINFO'Alignment use 4;
   subtype BITMAPINFO is tagBITMAPINFO;
   type LPBITMAPINFO is access all tagBITMAPINFO;
   type PBITMAPINFO is access all tagBITMAPINFO;
   type tagBITMAPCOREINFO_bmciColors_Array is array(1..1) of RGBTRIPLE; -- Auto Generated Dependancy
   type tagBITMAPCOREINFO is record
      bmciHeader : BITMAPCOREHEADER;
      bmciColors : tagBITMAPCOREINFO_bmciColors_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBITMAPCOREINFO);
   for tagBITMAPCOREINFO use record
      bmciHeader at 0 range 0..95;
      bmciColors at 0 range 96..119;
   end record;
   for tagBITMAPCOREINFO'Size use 128;
   for tagBITMAPCOREINFO'Alignment use 4;
   subtype BITMAPCOREINFO is tagBITMAPCOREINFO;
   type LPBITMAPCOREINFO is access all tagBITMAPCOREINFO;
   type PBITMAPCOREINFO is access all tagBITMAPCOREINFO;
   type tagBITMAPFILEHEADER is record
      bfType : WORD;
      bfSize : DWORD;
      bfReserved1 : WORD;
      bfReserved2 : WORD;
      bfOffBits : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBITMAPFILEHEADER);
   for tagBITMAPFILEHEADER use record
      bfType at 0 range 0..15;
      bfSize at 0 range 16..47;
      bfReserved1 at 0 range 48..63;
      bfReserved2 at 0 range 64..79;
      bfOffBits at 0 range 80..111;
   end record;
   for tagBITMAPFILEHEADER'Size use 112;
   for tagBITMAPFILEHEADER'Alignment use 2;
   subtype BITMAPFILEHEADER is tagBITMAPFILEHEADER;
   type LPBITMAPFILEHEADER is access all tagBITMAPFILEHEADER;
   type PBITMAPFILEHEADER is access all tagBITMAPFILEHEADER;
   type tagFONTSIGNATURE_fsUsb_Array is array(1..4) of DWORD; -- Auto Generated Dependancy
   type tagFONTSIGNATURE_fsCsb_Array is array(1..2) of DWORD; -- Auto Generated Dependancy
   type tagFONTSIGNATURE is record
      fsUsb : tagFONTSIGNATURE_fsUsb_Array;
      fsCsb : tagFONTSIGNATURE_fsCsb_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagFONTSIGNATURE);
   for tagFONTSIGNATURE use record
      fsUsb at 0 range 0..127;
      fsCsb at 0 range 128..191;
   end record;
   for tagFONTSIGNATURE'Size use 192;
   for tagFONTSIGNATURE'Alignment use 4;
   subtype FONTSIGNATURE is tagFONTSIGNATURE;
   type PFONTSIGNATURE is access all tagFONTSIGNATURE;
   type LPFONTSIGNATURE is access all tagFONTSIGNATURE;
   type tagCHARSETINFO is record
      ciCharset : UINT;
      ciACP : UINT;
      fs : FONTSIGNATURE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCHARSETINFO);
   for tagCHARSETINFO use record
      ciCharset at 0 range 0..31;
      ciACP at 0 range 32..63;
      fs at 0 range 64..255;
   end record;
   for tagCHARSETINFO'Size use 256;
   for tagCHARSETINFO'Alignment use 4;
   subtype CHARSETINFO is tagCHARSETINFO;
   type PCHARSETINFO is access all tagCHARSETINFO;
   type NPCHARSETINFO is access all tagCHARSETINFO;
   type LPCHARSETINFO is access all tagCHARSETINFO;
   type tagLOCALESIGNATURE_lsUsb_Array is array(1..4) of DWORD; -- Auto Generated Dependancy
   type tagLOCALESIGNATURE_lsCsbDefault_Array is array(1..2) of DWORD; -- Auto Generated Dependancy
   type tagLOCALESIGNATURE_lsCsbSupported_Array is array(1..2) of DWORD; -- Auto Generated Dependancy
   type tagLOCALESIGNATURE is record
      lsUsb : tagLOCALESIGNATURE_lsUsb_Array;
      lsCsbDefault : tagLOCALESIGNATURE_lsCsbDefault_Array;
      lsCsbSupported : tagLOCALESIGNATURE_lsCsbSupported_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLOCALESIGNATURE);
   for tagLOCALESIGNATURE use record
      lsUsb at 0 range 0..127;
      lsCsbDefault at 0 range 128..191;
      lsCsbSupported at 0 range 192..255;
   end record;
   for tagLOCALESIGNATURE'Size use 256;
   for tagLOCALESIGNATURE'Alignment use 4;
   subtype LOCALESIGNATURE is tagLOCALESIGNATURE;
   type PLOCALESIGNATURE is access all tagLOCALESIGNATURE;
   type LPLOCALESIGNATURE is access all tagLOCALESIGNATURE;
   type tagHANDLETABLE_objectHandle_Array is array(1..1) of HGDIOBJ; -- Auto Generated Dependancy
   type tagHANDLETABLE is record
      objectHandle : tagHANDLETABLE_objectHandle_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagHANDLETABLE);
   for tagHANDLETABLE use record
      objectHandle at 0 range 0..63;
   end record;
   for tagHANDLETABLE'Size use 64;
   for tagHANDLETABLE'Alignment use 8;
   subtype HANDLETABLE is tagHANDLETABLE;
   type PHANDLETABLE is access all tagHANDLETABLE;
   type LPHANDLETABLE is access all tagHANDLETABLE;
   type tagMETARECORD_rdParm_Array is array(1..1) of WORD; -- Auto Generated Dependancy
   type tagMETARECORD is record
      rdSize : DWORD;
      rdFunction : WORD;
      rdParm : tagMETARECORD_rdParm_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMETARECORD);
   for tagMETARECORD use record
      rdSize at 0 range 0..31;
      rdFunction at 0 range 32..47;
      rdParm at 0 range 48..63;
   end record;
   for tagMETARECORD'Size use 64;
   for tagMETARECORD'Alignment use 4;
   subtype METARECORD is tagMETARECORD;
   type PMETARECORD is access all tagMETARECORD;
   type LPMETARECORD is access all tagMETARECORD;
   type tagMETAFILEPICT is record
      mm : LONG;
      xExt : LONG;
      yExt : LONG;
      hMF : HMETAFILE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMETAFILEPICT);
   for tagMETAFILEPICT use record
      mm at 0 range 0..31;
      xExt at 0 range 32..63;
      yExt at 0 range 64..95;
      hMF at 0 range 128..191;
   end record;
   for tagMETAFILEPICT'Size use 192;
   for tagMETAFILEPICT'Alignment use 8;
   subtype METAFILEPICT is tagMETAFILEPICT;
   type LPMETAFILEPICT is access all tagMETAFILEPICT;
   type tagMETAHEADER is record
      mtType : WORD;
      mtHeaderSize : WORD;
      mtVersion : WORD;
      mtSize : DWORD;
      mtNoObjects : WORD;
      mtMaxRecord : DWORD;
      mtNoParameters : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMETAHEADER);
   for tagMETAHEADER use record
      mtType at 0 range 0..15;
      mtHeaderSize at 0 range 16..31;
      mtVersion at 0 range 32..47;
      mtSize at 0 range 48..79;
      mtNoObjects at 0 range 80..95;
      mtMaxRecord at 0 range 96..127;
      mtNoParameters at 0 range 128..143;
   end record;
   for tagMETAHEADER'Size use 144;
   for tagMETAHEADER'Alignment use 2;
   subtype METAHEADER is tagMETAHEADER;
   type PMETAHEADER is access all tagMETAHEADER;
   type LPMETAHEADER is access all tagMETAHEADER;
   type tagENHMETARECORD_dParm_Array is array(1..1) of DWORD; -- Auto Generated Dependancy
   type tagENHMETARECORD is record
      iType : DWORD;
      nSize : DWORD;
      dParm : tagENHMETARECORD_dParm_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagENHMETARECORD);
   for tagENHMETARECORD use record
      iType at 0 range 0..31;
      nSize at 0 range 32..63;
      dParm at 0 range 64..95;
   end record;
   for tagENHMETARECORD'Size use 96;
   for tagENHMETARECORD'Alignment use 4;
   subtype ENHMETARECORD is tagENHMETARECORD;
   type PENHMETARECORD is access all tagENHMETARECORD;
   type LPENHMETARECORD is access all tagENHMETARECORD;
   type tagENHMETAHEADER is record
      iType : DWORD;
      nSize : DWORD;
      rclBounds : RECTL;
      rclFrame : RECTL;
      dSignature : DWORD;
      nVersion : DWORD;
      nBytes : DWORD;
      nRecords : DWORD;
      nHandles : WORD;
      sReserved : WORD;
      nDescription : DWORD;
      offDescription : DWORD;
      nPalEntries : DWORD;
      szlDevice : SIZEL;
      szlMillimeters : SIZEL;
      cbPixelFormat : DWORD;
      offPixelFormat : DWORD;
      bOpenGL : DWORD;
      szlMicrometers : SIZEL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagENHMETAHEADER);
   for tagENHMETAHEADER use record
      iType at 0 range 0..31;
      nSize at 0 range 32..63;
      rclBounds at 0 range 64..191;
      rclFrame at 0 range 192..319;
      dSignature at 0 range 320..351;
      nVersion at 0 range 352..383;
      nBytes at 0 range 384..415;
      nRecords at 0 range 416..447;
      nHandles at 0 range 448..463;
      sReserved at 0 range 464..479;
      nDescription at 0 range 480..511;
      offDescription at 0 range 512..543;
      nPalEntries at 0 range 544..575;
      szlDevice at 0 range 576..639;
      szlMillimeters at 0 range 640..703;
      cbPixelFormat at 0 range 704..735;
      offPixelFormat at 0 range 736..767;
      bOpenGL at 0 range 768..799;
      szlMicrometers at 0 range 800..863;
   end record;
   for tagENHMETAHEADER'Size use 864;
   for tagENHMETAHEADER'Alignment use 4;
   subtype ENHMETAHEADER is tagENHMETAHEADER;
   type PENHMETAHEADER is access all tagENHMETAHEADER;
   type LPENHMETAHEADER is access all tagENHMETAHEADER;
   subtype BCHAR is BYTE;
   type tagTEXTMETRICA is record
      tmHeight : LONG;
      tmAscent : LONG;
      tmDescent : LONG;
      tmInternalLeading : LONG;
      tmExternalLeading : LONG;
      tmAveCharWidth : LONG;
      tmMaxCharWidth : LONG;
      tmWeight : LONG;
      tmOverhang : LONG;
      tmDigitizedAspectX : LONG;
      tmDigitizedAspectY : LONG;
      tmFirstChar : BYTE;
      tmLastChar : BYTE;
      tmDefaultChar : BYTE;
      tmBreakChar : BYTE;
      tmItalic : BYTE;
      tmUnderlined : BYTE;
      tmStruckOut : BYTE;
      tmPitchAndFamily : BYTE;
      tmCharSet : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTEXTMETRICA);
   for tagTEXTMETRICA use record
      tmHeight at 0 range 0..31;
      tmAscent at 0 range 32..63;
      tmDescent at 0 range 64..95;
      tmInternalLeading at 0 range 96..127;
      tmExternalLeading at 0 range 128..159;
      tmAveCharWidth at 0 range 160..191;
      tmMaxCharWidth at 0 range 192..223;
      tmWeight at 0 range 224..255;
      tmOverhang at 0 range 256..287;
      tmDigitizedAspectX at 0 range 288..319;
      tmDigitizedAspectY at 0 range 320..351;
      tmFirstChar at 0 range 352..359;
      tmLastChar at 0 range 360..367;
      tmDefaultChar at 0 range 368..375;
      tmBreakChar at 0 range 376..383;
      tmItalic at 0 range 384..391;
      tmUnderlined at 0 range 392..399;
      tmStruckOut at 0 range 400..407;
      tmPitchAndFamily at 0 range 408..415;
      tmCharSet at 0 range 416..423;
   end record;
   for tagTEXTMETRICA'Size use 448;
   for tagTEXTMETRICA'Alignment use 4;
   subtype TEXTMETRICA is tagTEXTMETRICA;
   type PTEXTMETRICA is access all tagTEXTMETRICA;
   type NPTEXTMETRICA is access all tagTEXTMETRICA;
   type LPTEXTMETRICA is access all tagTEXTMETRICA;
   type tagTEXTMETRICW is record
      tmHeight : LONG;
      tmAscent : LONG;
      tmDescent : LONG;
      tmInternalLeading : LONG;
      tmExternalLeading : LONG;
      tmAveCharWidth : LONG;
      tmMaxCharWidth : LONG;
      tmWeight : LONG;
      tmOverhang : LONG;
      tmDigitizedAspectX : LONG;
      tmDigitizedAspectY : LONG;
      tmFirstChar : WCHAR;
      tmLastChar : WCHAR;
      tmDefaultChar : WCHAR;
      tmBreakChar : WCHAR;
      tmItalic : BYTE;
      tmUnderlined : BYTE;
      tmStruckOut : BYTE;
      tmPitchAndFamily : BYTE;
      tmCharSet : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTEXTMETRICW);
   for tagTEXTMETRICW use record
      tmHeight at 0 range 0..31;
      tmAscent at 0 range 32..63;
      tmDescent at 0 range 64..95;
      tmInternalLeading at 0 range 96..127;
      tmExternalLeading at 0 range 128..159;
      tmAveCharWidth at 0 range 160..191;
      tmMaxCharWidth at 0 range 192..223;
      tmWeight at 0 range 224..255;
      tmOverhang at 0 range 256..287;
      tmDigitizedAspectX at 0 range 288..319;
      tmDigitizedAspectY at 0 range 320..351;
      tmFirstChar at 0 range 352..367;
      tmLastChar at 0 range 368..383;
      tmDefaultChar at 0 range 384..399;
      tmBreakChar at 0 range 400..415;
      tmItalic at 0 range 416..423;
      tmUnderlined at 0 range 424..431;
      tmStruckOut at 0 range 432..439;
      tmPitchAndFamily at 0 range 440..447;
      tmCharSet at 0 range 448..455;
   end record;
   for tagTEXTMETRICW'Size use 480;
   for tagTEXTMETRICW'Alignment use 4;
   subtype TEXTMETRICW is tagTEXTMETRICW;
   type PTEXTMETRICW is access all tagTEXTMETRICW;
   type NPTEXTMETRICW is access all tagTEXTMETRICW;
   type LPTEXTMETRICW is access all tagTEXTMETRICW;
   subtype TEXTMETRIC is TEXTMETRICA;
   subtype PTEXTMETRIC is PTEXTMETRICA;
   subtype NPTEXTMETRIC is NPTEXTMETRICA;
   subtype LPTEXTMETRIC is LPTEXTMETRICA;
   type tagNEWTEXTMETRICA is record
      tmHeight : LONG;
      tmAscent : LONG;
      tmDescent : LONG;
      tmInternalLeading : LONG;
      tmExternalLeading : LONG;
      tmAveCharWidth : LONG;
      tmMaxCharWidth : LONG;
      tmWeight : LONG;
      tmOverhang : LONG;
      tmDigitizedAspectX : LONG;
      tmDigitizedAspectY : LONG;
      tmFirstChar : BYTE;
      tmLastChar : BYTE;
      tmDefaultChar : BYTE;
      tmBreakChar : BYTE;
      tmItalic : BYTE;
      tmUnderlined : BYTE;
      tmStruckOut : BYTE;
      tmPitchAndFamily : BYTE;
      tmCharSet : BYTE;
      ntmFlags : DWORD;
      ntmSizeEM : UINT;
      ntmCellHeight : UINT;
      ntmAvgWidth : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNEWTEXTMETRICA);
   for tagNEWTEXTMETRICA use record
      tmHeight at 0 range 0..31;
      tmAscent at 0 range 32..63;
      tmDescent at 0 range 64..95;
      tmInternalLeading at 0 range 96..127;
      tmExternalLeading at 0 range 128..159;
      tmAveCharWidth at 0 range 160..191;
      tmMaxCharWidth at 0 range 192..223;
      tmWeight at 0 range 224..255;
      tmOverhang at 0 range 256..287;
      tmDigitizedAspectX at 0 range 288..319;
      tmDigitizedAspectY at 0 range 320..351;
      tmFirstChar at 0 range 352..359;
      tmLastChar at 0 range 360..367;
      tmDefaultChar at 0 range 368..375;
      tmBreakChar at 0 range 376..383;
      tmItalic at 0 range 384..391;
      tmUnderlined at 0 range 392..399;
      tmStruckOut at 0 range 400..407;
      tmPitchAndFamily at 0 range 408..415;
      tmCharSet at 0 range 416..423;
      ntmFlags at 0 range 448..479;
      ntmSizeEM at 0 range 480..511;
      ntmCellHeight at 0 range 512..543;
      ntmAvgWidth at 0 range 544..575;
   end record;
   for tagNEWTEXTMETRICA'Size use 576;
   for tagNEWTEXTMETRICA'Alignment use 4;
   subtype NEWTEXTMETRICA is tagNEWTEXTMETRICA;
   type PNEWTEXTMETRICA is access all tagNEWTEXTMETRICA;
   type NPNEWTEXTMETRICA is access all tagNEWTEXTMETRICA;
   type LPNEWTEXTMETRICA is access all tagNEWTEXTMETRICA;
   type tagNEWTEXTMETRICW is record
      tmHeight : LONG;
      tmAscent : LONG;
      tmDescent : LONG;
      tmInternalLeading : LONG;
      tmExternalLeading : LONG;
      tmAveCharWidth : LONG;
      tmMaxCharWidth : LONG;
      tmWeight : LONG;
      tmOverhang : LONG;
      tmDigitizedAspectX : LONG;
      tmDigitizedAspectY : LONG;
      tmFirstChar : WCHAR;
      tmLastChar : WCHAR;
      tmDefaultChar : WCHAR;
      tmBreakChar : WCHAR;
      tmItalic : BYTE;
      tmUnderlined : BYTE;
      tmStruckOut : BYTE;
      tmPitchAndFamily : BYTE;
      tmCharSet : BYTE;
      ntmFlags : DWORD;
      ntmSizeEM : UINT;
      ntmCellHeight : UINT;
      ntmAvgWidth : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNEWTEXTMETRICW);
   for tagNEWTEXTMETRICW use record
      tmHeight at 0 range 0..31;
      tmAscent at 0 range 32..63;
      tmDescent at 0 range 64..95;
      tmInternalLeading at 0 range 96..127;
      tmExternalLeading at 0 range 128..159;
      tmAveCharWidth at 0 range 160..191;
      tmMaxCharWidth at 0 range 192..223;
      tmWeight at 0 range 224..255;
      tmOverhang at 0 range 256..287;
      tmDigitizedAspectX at 0 range 288..319;
      tmDigitizedAspectY at 0 range 320..351;
      tmFirstChar at 0 range 352..367;
      tmLastChar at 0 range 368..383;
      tmDefaultChar at 0 range 384..399;
      tmBreakChar at 0 range 400..415;
      tmItalic at 0 range 416..423;
      tmUnderlined at 0 range 424..431;
      tmStruckOut at 0 range 432..439;
      tmPitchAndFamily at 0 range 440..447;
      tmCharSet at 0 range 448..455;
      ntmFlags at 0 range 480..511;
      ntmSizeEM at 0 range 512..543;
      ntmCellHeight at 0 range 544..575;
      ntmAvgWidth at 0 range 576..607;
   end record;
   for tagNEWTEXTMETRICW'Size use 608;
   for tagNEWTEXTMETRICW'Alignment use 4;
   subtype NEWTEXTMETRICW is tagNEWTEXTMETRICW;
   type PNEWTEXTMETRICW is access all tagNEWTEXTMETRICW;
   type NPNEWTEXTMETRICW is access all tagNEWTEXTMETRICW;
   type LPNEWTEXTMETRICW is access all tagNEWTEXTMETRICW;
   subtype NEWTEXTMETRIC is NEWTEXTMETRICA;
   subtype PNEWTEXTMETRIC is PNEWTEXTMETRICA;
   subtype NPNEWTEXTMETRIC is NPNEWTEXTMETRICA;
   subtype LPNEWTEXTMETRIC is LPNEWTEXTMETRICA;
   type tagNEWTEXTMETRICEXA is record
      ntmTm : NEWTEXTMETRICA;
      ntmFontSig : FONTSIGNATURE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNEWTEXTMETRICEXA);
   for tagNEWTEXTMETRICEXA use record
      ntmTm at 0 range 0..575;
      ntmFontSig at 0 range 576..767;
   end record;
   for tagNEWTEXTMETRICEXA'Size use 768;
   for tagNEWTEXTMETRICEXA'Alignment use 4;
   subtype NEWTEXTMETRICEXA is tagNEWTEXTMETRICEXA;
   type tagNEWTEXTMETRICEXW is record
      ntmTm : NEWTEXTMETRICW;
      ntmFontSig : FONTSIGNATURE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNEWTEXTMETRICEXW);
   for tagNEWTEXTMETRICEXW use record
      ntmTm at 0 range 0..607;
      ntmFontSig at 0 range 608..799;
   end record;
   for tagNEWTEXTMETRICEXW'Size use 800;
   for tagNEWTEXTMETRICEXW'Alignment use 4;
   subtype NEWTEXTMETRICEXW is tagNEWTEXTMETRICEXW;
   subtype NEWTEXTMETRICEX is NEWTEXTMETRICEXA;
   type tagPELARRAY is record
      paXCount : LONG;
      paYCount : LONG;
      paXExt : LONG;
      paYExt : LONG;
      paRGBs : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPELARRAY);
   for tagPELARRAY use record
      paXCount at 0 range 0..31;
      paYCount at 0 range 32..63;
      paXExt at 0 range 64..95;
      paYExt at 0 range 96..127;
      paRGBs at 0 range 128..135;
   end record;
   for tagPELARRAY'Size use 160;
   for tagPELARRAY'Alignment use 4;
   subtype PELARRAY is tagPELARRAY;
   type PPELARRAY is access all tagPELARRAY;
   type NPPELARRAY is access all tagPELARRAY;
   type LPPELARRAY is access all tagPELARRAY;
   type tagLOGBRUSH is record
      lbStyle : UINT;
      lbColor : COLORREF;
      lbHatch : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLOGBRUSH);
   for tagLOGBRUSH use record
      lbStyle at 0 range 0..31;
      lbColor at 0 range 32..63;
      lbHatch at 0 range 64..127;
   end record;
   for tagLOGBRUSH'Size use 128;
   for tagLOGBRUSH'Alignment use 8;
   subtype LOGBRUSH is tagLOGBRUSH;
   type PLOGBRUSH is access all tagLOGBRUSH;
   type NPLOGBRUSH is access all tagLOGBRUSH;
   type LPLOGBRUSH is access all tagLOGBRUSH;
   type tagLOGBRUSH32 is record
      lbStyle : UINT;
      lbColor : COLORREF;
      lbHatch : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLOGBRUSH32);
   for tagLOGBRUSH32 use record
      lbStyle at 0 range 0..31;
      lbColor at 0 range 32..63;
      lbHatch at 0 range 64..95;
   end record;
   for tagLOGBRUSH32'Size use 96;
   for tagLOGBRUSH32'Alignment use 4;
   subtype LOGBRUSH32 is tagLOGBRUSH32;
   type PLOGBRUSH32 is access all tagLOGBRUSH32;
   type NPLOGBRUSH32 is access all tagLOGBRUSH32;
   type LPLOGBRUSH32 is access all tagLOGBRUSH32;
   subtype PATTERN is LOGBRUSH;
   type PPATTERN is access all PATTERN;
   type NPPATTERN is access all PATTERN;
   type LPPATTERN is access all PATTERN;
   type tagLOGPEN is record
      lopnStyle : UINT;
      lopnWidth : POINT;
      lopnColor : COLORREF;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLOGPEN);
   for tagLOGPEN use record
      lopnStyle at 0 range 0..31;
      lopnWidth at 0 range 32..95;
      lopnColor at 0 range 96..127;
   end record;
   for tagLOGPEN'Size use 128;
   for tagLOGPEN'Alignment use 4;
   subtype LOGPEN is tagLOGPEN;
   type PLOGPEN is access all tagLOGPEN;
   type NPLOGPEN is access all tagLOGPEN;
   type LPLOGPEN is access all tagLOGPEN;
   type tagEXTLOGPEN_elpStyleEntry_Array is array(1..1) of DWORD; -- Auto Generated Dependancy
   type tagEXTLOGPEN is record
      elpPenStyle : DWORD;
      elpWidth : DWORD;
      elpBrushStyle : UINT;
      elpColor : COLORREF;
      elpHatch : ULONG_PTR;
      elpNumEntries : DWORD;
      elpStyleEntry : tagEXTLOGPEN_elpStyleEntry_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEXTLOGPEN);
   for tagEXTLOGPEN use record
      elpPenStyle at 0 range 0..31;
      elpWidth at 0 range 32..63;
      elpBrushStyle at 0 range 64..95;
      elpColor at 0 range 96..127;
      elpHatch at 0 range 128..191;
      elpNumEntries at 0 range 192..223;
      elpStyleEntry at 0 range 224..255;
   end record;
   for tagEXTLOGPEN'Size use 256;
   for tagEXTLOGPEN'Alignment use 8;
   subtype EXTLOGPEN is tagEXTLOGPEN;
   type PEXTLOGPEN is access all tagEXTLOGPEN;
   type NPEXTLOGPEN is access all tagEXTLOGPEN;
   type LPEXTLOGPEN is access all tagEXTLOGPEN;
   type tagEXTLOGPEN32_elpStyleEntry_Array is array(1..1) of DWORD; -- Auto Generated Dependancy
   type tagEXTLOGPEN32 is record
      elpPenStyle : DWORD;
      elpWidth : DWORD;
      elpBrushStyle : UINT;
      elpColor : COLORREF;
      elpHatch : ULONG;
      elpNumEntries : DWORD;
      elpStyleEntry : tagEXTLOGPEN32_elpStyleEntry_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEXTLOGPEN32);
   for tagEXTLOGPEN32 use record
      elpPenStyle at 0 range 0..31;
      elpWidth at 0 range 32..63;
      elpBrushStyle at 0 range 64..95;
      elpColor at 0 range 96..127;
      elpHatch at 0 range 128..159;
      elpNumEntries at 0 range 160..191;
      elpStyleEntry at 0 range 192..223;
   end record;
   for tagEXTLOGPEN32'Size use 224;
   for tagEXTLOGPEN32'Alignment use 4;
   subtype EXTLOGPEN32 is tagEXTLOGPEN32;
   type PEXTLOGPEN32 is access all tagEXTLOGPEN32;
   type NPEXTLOGPEN32 is access all tagEXTLOGPEN32;
   type LPEXTLOGPEN32 is access all tagEXTLOGPEN32;
   type tagPALETTEENTRY is record
      peRed : BYTE;
      peGreen : BYTE;
      peBlue : BYTE;
      peFlags : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPALETTEENTRY);
   for tagPALETTEENTRY use record
      peRed at 0 range 0..7;
      peGreen at 0 range 8..15;
      peBlue at 0 range 16..23;
      peFlags at 0 range 24..31;
   end record;
   for tagPALETTEENTRY'Size use 32;
   for tagPALETTEENTRY'Alignment use 1;
   subtype PALETTEENTRY is tagPALETTEENTRY;
   type PPALETTEENTRY is access all tagPALETTEENTRY;
   type LPPALETTEENTRY is access all tagPALETTEENTRY;
   type tagLOGPALETTE_palPalEntry_Array is array(1..1) of PALETTEENTRY; -- Auto Generated Dependancy
   type tagLOGPALETTE is record
      palVersion : WORD;
      palNumEntries : WORD;
      palPalEntry : tagLOGPALETTE_palPalEntry_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLOGPALETTE);
   for tagLOGPALETTE use record
      palVersion at 0 range 0..15;
      palNumEntries at 0 range 16..31;
      palPalEntry at 0 range 32..63;
   end record;
   for tagLOGPALETTE'Size use 64;
   for tagLOGPALETTE'Alignment use 2;
   subtype LOGPALETTE is tagLOGPALETTE;
   type PLOGPALETTE is access all tagLOGPALETTE;
   type NPLOGPALETTE is access all tagLOGPALETTE;
   type LPLOGPALETTE is access all tagLOGPALETTE;
   type tagLOGFONTA_lfFaceName_Array is array(1..32) of CHAR; -- Auto Generated Dependancy
   type tagLOGFONTA is record
      lfHeight : LONG;
      lfWidth : LONG;
      lfEscapement : LONG;
      lfOrientation : LONG;
      lfWeight : LONG;
      lfItalic : BYTE;
      lfUnderline : BYTE;
      lfStrikeOut : BYTE;
      lfCharSet : BYTE;
      lfOutPrecision : BYTE;
      lfClipPrecision : BYTE;
      lfQuality : BYTE;
      lfPitchAndFamily : BYTE;
      lfFaceName : tagLOGFONTA_lfFaceName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLOGFONTA);
   for tagLOGFONTA use record
      lfHeight at 0 range 0..31;
      lfWidth at 0 range 32..63;
      lfEscapement at 0 range 64..95;
      lfOrientation at 0 range 96..127;
      lfWeight at 0 range 128..159;
      lfItalic at 0 range 160..167;
      lfUnderline at 0 range 168..175;
      lfStrikeOut at 0 range 176..183;
      lfCharSet at 0 range 184..191;
      lfOutPrecision at 0 range 192..199;
      lfClipPrecision at 0 range 200..207;
      lfQuality at 0 range 208..215;
      lfPitchAndFamily at 0 range 216..223;
      lfFaceName at 0 range 224..479;
   end record;
   for tagLOGFONTA'Size use 480;
   for tagLOGFONTA'Alignment use 4;
   subtype LOGFONTA is tagLOGFONTA;
   type PLOGFONTA is access all tagLOGFONTA;
   type NPLOGFONTA is access all tagLOGFONTA;
   type LPLOGFONTA is access all tagLOGFONTA;
   type tagLOGFONTW_lfFaceName_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type tagLOGFONTW is record
      lfHeight : LONG;
      lfWidth : LONG;
      lfEscapement : LONG;
      lfOrientation : LONG;
      lfWeight : LONG;
      lfItalic : BYTE;
      lfUnderline : BYTE;
      lfStrikeOut : BYTE;
      lfCharSet : BYTE;
      lfOutPrecision : BYTE;
      lfClipPrecision : BYTE;
      lfQuality : BYTE;
      lfPitchAndFamily : BYTE;
      lfFaceName : tagLOGFONTW_lfFaceName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLOGFONTW);
   for tagLOGFONTW use record
      lfHeight at 0 range 0..31;
      lfWidth at 0 range 32..63;
      lfEscapement at 0 range 64..95;
      lfOrientation at 0 range 96..127;
      lfWeight at 0 range 128..159;
      lfItalic at 0 range 160..167;
      lfUnderline at 0 range 168..175;
      lfStrikeOut at 0 range 176..183;
      lfCharSet at 0 range 184..191;
      lfOutPrecision at 0 range 192..199;
      lfClipPrecision at 0 range 200..207;
      lfQuality at 0 range 208..215;
      lfPitchAndFamily at 0 range 216..223;
      lfFaceName at 0 range 224..735;
   end record;
   for tagLOGFONTW'Size use 736;
   for tagLOGFONTW'Alignment use 4;
   subtype LOGFONTW is tagLOGFONTW;
   type PLOGFONTW is access all tagLOGFONTW;
   type NPLOGFONTW is access all tagLOGFONTW;
   type LPLOGFONTW is access all tagLOGFONTW;
   subtype LOGFONT is LOGFONTA;
   subtype PLOGFONT is PLOGFONTA;
   subtype NPLOGFONT is NPLOGFONTA;
   subtype LPLOGFONT is LPLOGFONTA;
   type tagENUMLOGFONTA_elfFullName_Array is array(1..64) of BYTE; -- Auto Generated Dependancy
   type tagENUMLOGFONTA_elfStyle_Array is array(1..32) of BYTE; -- Auto Generated Dependancy
   type tagENUMLOGFONTA is record
      elfLogFont : LOGFONTA;
      elfFullName : tagENUMLOGFONTA_elfFullName_Array;
      elfStyle : tagENUMLOGFONTA_elfStyle_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagENUMLOGFONTA);
   for tagENUMLOGFONTA use record
      elfLogFont at 0 range 0..479;
      elfFullName at 0 range 480..991;
      elfStyle at 0 range 992..1247;
   end record;
   for tagENUMLOGFONTA'Size use 1248;
   for tagENUMLOGFONTA'Alignment use 4;
   subtype ENUMLOGFONTA is tagENUMLOGFONTA;
   type LPENUMLOGFONTA is access all tagENUMLOGFONTA;
   type tagENUMLOGFONTW_elfFullName_Array is array(1..64) of WCHAR; -- Auto Generated Dependancy
   type tagENUMLOGFONTW_elfStyle_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type tagENUMLOGFONTW is record
      elfLogFont : LOGFONTW;
      elfFullName : tagENUMLOGFONTW_elfFullName_Array;
      elfStyle : tagENUMLOGFONTW_elfStyle_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagENUMLOGFONTW);
   for tagENUMLOGFONTW use record
      elfLogFont at 0 range 0..735;
      elfFullName at 0 range 736..1759;
      elfStyle at 0 range 1760..2271;
   end record;
   for tagENUMLOGFONTW'Size use 2272;
   for tagENUMLOGFONTW'Alignment use 4;
   subtype ENUMLOGFONTW is tagENUMLOGFONTW;
   type LPENUMLOGFONTW is access all tagENUMLOGFONTW;
   subtype ENUMLOGFONT is ENUMLOGFONTA;
   subtype LPENUMLOGFONT is LPENUMLOGFONTA;
   type tagENUMLOGFONTEXA_elfFullName_Array is array(1..64) of BYTE; -- Auto Generated Dependancy
   type tagENUMLOGFONTEXA_elfStyle_Array is array(1..32) of BYTE; -- Auto Generated Dependancy
   type tagENUMLOGFONTEXA_elfScript_Array is array(1..32) of BYTE; -- Auto Generated Dependancy
   type tagENUMLOGFONTEXA is record
      elfLogFont : LOGFONTA;
      elfFullName : tagENUMLOGFONTEXA_elfFullName_Array;
      elfStyle : tagENUMLOGFONTEXA_elfStyle_Array;
      elfScript : tagENUMLOGFONTEXA_elfScript_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagENUMLOGFONTEXA);
   for tagENUMLOGFONTEXA use record
      elfLogFont at 0 range 0..479;
      elfFullName at 0 range 480..991;
      elfStyle at 0 range 992..1247;
      elfScript at 0 range 1248..1503;
   end record;
   for tagENUMLOGFONTEXA'Size use 1504;
   for tagENUMLOGFONTEXA'Alignment use 4;
   subtype ENUMLOGFONTEXA is tagENUMLOGFONTEXA;
   type LPENUMLOGFONTEXA is access all tagENUMLOGFONTEXA;
   type tagENUMLOGFONTEXW_elfFullName_Array is array(1..64) of WCHAR; -- Auto Generated Dependancy
   type tagENUMLOGFONTEXW_elfStyle_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type tagENUMLOGFONTEXW_elfScript_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type tagENUMLOGFONTEXW is record
      elfLogFont : LOGFONTW;
      elfFullName : tagENUMLOGFONTEXW_elfFullName_Array;
      elfStyle : tagENUMLOGFONTEXW_elfStyle_Array;
      elfScript : tagENUMLOGFONTEXW_elfScript_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagENUMLOGFONTEXW);
   for tagENUMLOGFONTEXW use record
      elfLogFont at 0 range 0..735;
      elfFullName at 0 range 736..1759;
      elfStyle at 0 range 1760..2271;
      elfScript at 0 range 2272..2783;
   end record;
   for tagENUMLOGFONTEXW'Size use 2784;
   for tagENUMLOGFONTEXW'Alignment use 4;
   subtype ENUMLOGFONTEXW is tagENUMLOGFONTEXW;
   type LPENUMLOGFONTEXW is access all tagENUMLOGFONTEXW;
   subtype ENUMLOGFONTEX is ENUMLOGFONTEXA;
   subtype LPENUMLOGFONTEX is LPENUMLOGFONTEXA;
   type tagPANOSE is record
      bFamilyType : BYTE;
      bSerifStyle : BYTE;
      bWeight : BYTE;
      bProportion : BYTE;
      bContrast : BYTE;
      bStrokeVariation : BYTE;
      bArmStyle : BYTE;
      bLetterform : BYTE;
      bMidline : BYTE;
      bXHeight : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPANOSE);
   for tagPANOSE use record
      bFamilyType at 0 range 0..7;
      bSerifStyle at 0 range 8..15;
      bWeight at 0 range 16..23;
      bProportion at 0 range 24..31;
      bContrast at 0 range 32..39;
      bStrokeVariation at 0 range 40..47;
      bArmStyle at 0 range 48..55;
      bLetterform at 0 range 56..63;
      bMidline at 0 range 64..71;
      bXHeight at 0 range 72..79;
   end record;
   for tagPANOSE'Size use 80;
   for tagPANOSE'Alignment use 1;
   subtype PANOSE is tagPANOSE;
   type LPPANOSE is access all tagPANOSE;
   type tagEXTLOGFONTA_elfFullName_Array is array(1..64) of BYTE; -- Auto Generated Dependancy
   type tagEXTLOGFONTA_elfStyle_Array is array(1..32) of BYTE; -- Auto Generated Dependancy
   type tagEXTLOGFONTA_elfVendorId_Array is array(1..4) of BYTE; -- Auto Generated Dependancy
   type tagEXTLOGFONTA is record
      elfLogFont : LOGFONTA;
      elfFullName : tagEXTLOGFONTA_elfFullName_Array;
      elfStyle : tagEXTLOGFONTA_elfStyle_Array;
      elfVersion : DWORD;
      elfStyleSize : DWORD;
      elfMatch : DWORD;
      elfReserved : DWORD;
      elfVendorId : tagEXTLOGFONTA_elfVendorId_Array;
      elfCulture : DWORD;
      elfPanose : PANOSE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEXTLOGFONTA);
   for tagEXTLOGFONTA use record
      elfLogFont at 0 range 0..479;
      elfFullName at 0 range 480..991;
      elfStyle at 0 range 992..1247;
      elfVersion at 0 range 1248..1279;
      elfStyleSize at 0 range 1280..1311;
      elfMatch at 0 range 1312..1343;
      elfReserved at 0 range 1344..1375;
      elfVendorId at 0 range 1376..1407;
      elfCulture at 0 range 1408..1439;
      elfPanose at 0 range 1440..1519;
   end record;
   for tagEXTLOGFONTA'Size use 1536;
   for tagEXTLOGFONTA'Alignment use 4;
   subtype EXTLOGFONTA is tagEXTLOGFONTA;
   type PEXTLOGFONTA is access all tagEXTLOGFONTA;
   type NPEXTLOGFONTA is access all tagEXTLOGFONTA;
   type LPEXTLOGFONTA is access all tagEXTLOGFONTA;
   type tagEXTLOGFONTW_elfFullName_Array is array(1..64) of WCHAR; -- Auto Generated Dependancy
   type tagEXTLOGFONTW_elfStyle_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type tagEXTLOGFONTW_elfVendorId_Array is array(1..4) of BYTE; -- Auto Generated Dependancy
   type tagEXTLOGFONTW is record
      elfLogFont : LOGFONTW;
      elfFullName : tagEXTLOGFONTW_elfFullName_Array;
      elfStyle : tagEXTLOGFONTW_elfStyle_Array;
      elfVersion : DWORD;
      elfStyleSize : DWORD;
      elfMatch : DWORD;
      elfReserved : DWORD;
      elfVendorId : tagEXTLOGFONTW_elfVendorId_Array;
      elfCulture : DWORD;
      elfPanose : PANOSE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEXTLOGFONTW);
   for tagEXTLOGFONTW use record
      elfLogFont at 0 range 0..735;
      elfFullName at 0 range 736..1759;
      elfStyle at 0 range 1760..2271;
      elfVersion at 0 range 2272..2303;
      elfStyleSize at 0 range 2304..2335;
      elfMatch at 0 range 2336..2367;
      elfReserved at 0 range 2368..2399;
      elfVendorId at 0 range 2400..2431;
      elfCulture at 0 range 2432..2463;
      elfPanose at 0 range 2464..2543;
   end record;
   for tagEXTLOGFONTW'Size use 2560;
   for tagEXTLOGFONTW'Alignment use 4;
   subtype EXTLOGFONTW is tagEXTLOGFONTW;
   type PEXTLOGFONTW is access all tagEXTLOGFONTW;
   type NPEXTLOGFONTW is access all tagEXTLOGFONTW;
   type LPEXTLOGFONTW is access all tagEXTLOGFONTW;
   subtype EXTLOGFONT is EXTLOGFONTA;
   subtype PEXTLOGFONT is PEXTLOGFONTA;
   subtype NPEXTLOGFONT is NPEXTLOGFONTA;
   subtype LPEXTLOGFONT is LPEXTLOGFONTA;
   type Anonymous_Record_165 is record
      dmOrientation : Interfaces.C.Short;
      dmPaperSize : Interfaces.C.Short;
      dmPaperLength : Interfaces.C.Short;
      dmPaperWidth : Interfaces.C.Short;
      dmScale : Interfaces.C.Short;
      dmCopies : Interfaces.C.Short;
      dmDefaultSource : Interfaces.C.Short;
      dmPrintQuality : Interfaces.C.Short;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_165);
   for Anonymous_Record_165 use record
      dmOrientation at 0 range 0..15;
      dmPaperSize at 0 range 16..31;
      dmPaperLength at 0 range 32..47;
      dmPaperWidth at 0 range 48..63;
      dmScale at 0 range 64..79;
      dmCopies at 0 range 80..95;
      dmDefaultSource at 0 range 96..111;
      dmPrintQuality at 0 range 112..127;
   end record;
   for Anonymous_Record_165'Size use 128;
   for Anonymous_Record_165'Alignment use 2;
   type Anonymous_Record_166 is record
      dmPosition : POINTL;
      dmDisplayOrientation : DWORD;
      dmDisplayFixedOutput : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_166);
   for Anonymous_Record_166 use record
      dmPosition at 0 range 0..63;
      dmDisplayOrientation at 0 range 64..95;
      dmDisplayFixedOutput at 0 range 96..127;
   end record;
   for Anonymous_Record_166'Size use 128;
   for Anonymous_Record_166'Alignment use 4;
   type Anonymous_Record_164 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_165;
         when others => 
            field_2 : Anonymous_Record_166;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_164);
   pragma Unchecked_Union (Anonymous_Record_164);
   for Anonymous_Record_164'Size use 128;
   for Anonymous_Record_164'Alignment use 4;
   type Anonymous_Record_167 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            dmDisplayFlags : DWORD;
         when others => 
            dmNup : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_167);
   pragma Unchecked_Union (Anonymous_Record_167);
   for Anonymous_Record_167'Size use 32;
   for Anonymous_Record_167'Alignment use 4;
   type devicemodeA_x_dmDeviceName_Array is array(1..32) of BYTE; -- Auto Generated Dependancy
   type devicemodeA_x_dmFormName_Array is array(1..32) of BYTE; -- Auto Generated Dependancy
   type devicemodeA_x is record
      dmDeviceName : devicemodeA_x_dmDeviceName_Array;
      dmSpecVersion : WORD;
      dmDriverVersion : WORD;
      dmSize : WORD;
      dmDriverExtra : WORD;
      dmFields : DWORD;
      field_1 : Anonymous_Record_164;
      dmColor : Interfaces.C.Short;
      dmDuplex : Interfaces.C.Short;
      dmYResolution : Interfaces.C.Short;
      dmTTOption : Interfaces.C.Short;
      dmCollate : Interfaces.C.Short;
      dmFormName : devicemodeA_x_dmFormName_Array;
      dmLogPixels : WORD;
      dmBitsPerPel : DWORD;
      dmPelsWidth : DWORD;
      dmPelsHeight : DWORD;
      field_2 : Anonymous_Record_167;
      dmDisplayFrequency : DWORD;
      dmICMMethod : DWORD;
      dmICMIntent : DWORD;
      dmMediaType : DWORD;
      dmDitherType : DWORD;
      dmReserved1 : DWORD;
      dmReserved2 : DWORD;
      dmPanningWidth : DWORD;
      dmPanningHeight : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,devicemodeA_x);
   for devicemodeA_x use record
      dmDeviceName at 0 range 0..255;
      dmSpecVersion at 0 range 256..271;
      dmDriverVersion at 0 range 272..287;
      dmSize at 0 range 288..303;
      dmDriverExtra at 0 range 304..319;
      dmFields at 0 range 320..351;
      field_1 at 0 range 352..479;
      dmColor at 0 range 480..495;
      dmDuplex at 0 range 496..511;
      dmYResolution at 0 range 512..527;
      dmTTOption at 0 range 528..543;
      dmCollate at 0 range 544..559;
      dmFormName at 0 range 560..815;
      dmLogPixels at 0 range 816..831;
      dmBitsPerPel at 0 range 832..863;
      dmPelsWidth at 0 range 864..895;
      dmPelsHeight at 0 range 896..927;
      field_2 at 0 range 928..959;
      dmDisplayFrequency at 0 range 960..991;
      dmICMMethod at 0 range 992..1023;
      dmICMIntent at 0 range 1024..1055;
      dmMediaType at 0 range 1056..1087;
      dmDitherType at 0 range 1088..1119;
      dmReserved1 at 0 range 1120..1151;
      dmReserved2 at 0 range 1152..1183;
      dmPanningWidth at 0 range 1184..1215;
      dmPanningHeight at 0 range 1216..1247;
   end record;
   for devicemodeA_x'Size use 1248;
   for devicemodeA_x'Alignment use 4;
   subtype DEVMODEA is devicemodeA_x;
   type PDEVMODEA is access all devicemodeA_x;
   type NPDEVMODEA is access all devicemodeA_x;
   type LPDEVMODEA is access all devicemodeA_x;
   type Anonymous_Record_169 is record
      dmOrientation : Interfaces.C.Short;
      dmPaperSize : Interfaces.C.Short;
      dmPaperLength : Interfaces.C.Short;
      dmPaperWidth : Interfaces.C.Short;
      dmScale : Interfaces.C.Short;
      dmCopies : Interfaces.C.Short;
      dmDefaultSource : Interfaces.C.Short;
      dmPrintQuality : Interfaces.C.Short;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_169);
   for Anonymous_Record_169 use record
      dmOrientation at 0 range 0..15;
      dmPaperSize at 0 range 16..31;
      dmPaperLength at 0 range 32..47;
      dmPaperWidth at 0 range 48..63;
      dmScale at 0 range 64..79;
      dmCopies at 0 range 80..95;
      dmDefaultSource at 0 range 96..111;
      dmPrintQuality at 0 range 112..127;
   end record;
   for Anonymous_Record_169'Size use 128;
   for Anonymous_Record_169'Alignment use 2;
   type Anonymous_Record_170 is record
      dmPosition : POINTL;
      dmDisplayOrientation : DWORD;
      dmDisplayFixedOutput : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_170);
   for Anonymous_Record_170 use record
      dmPosition at 0 range 0..63;
      dmDisplayOrientation at 0 range 64..95;
      dmDisplayFixedOutput at 0 range 96..127;
   end record;
   for Anonymous_Record_170'Size use 128;
   for Anonymous_Record_170'Alignment use 4;
   type Anonymous_Record_168 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_169;
         when others => 
            field_2 : Anonymous_Record_170;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_168);
   pragma Unchecked_Union (Anonymous_Record_168);
   for Anonymous_Record_168'Size use 128;
   for Anonymous_Record_168'Alignment use 4;
   type Anonymous_Record_171 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            dmDisplayFlags : DWORD;
         when others => 
            dmNup : DWORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_171);
   pragma Unchecked_Union (Anonymous_Record_171);
   for Anonymous_Record_171'Size use 32;
   for Anonymous_Record_171'Alignment use 4;
   type devicemodeW_x_dmDeviceName_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type devicemodeW_x_dmFormName_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type devicemodeW_x is record
      dmDeviceName : devicemodeW_x_dmDeviceName_Array;
      dmSpecVersion : WORD;
      dmDriverVersion : WORD;
      dmSize : WORD;
      dmDriverExtra : WORD;
      dmFields : DWORD;
      field_1 : Anonymous_Record_168;
      dmColor : Interfaces.C.Short;
      dmDuplex : Interfaces.C.Short;
      dmYResolution : Interfaces.C.Short;
      dmTTOption : Interfaces.C.Short;
      dmCollate : Interfaces.C.Short;
      dmFormName : devicemodeW_x_dmFormName_Array;
      dmLogPixels : WORD;
      dmBitsPerPel : DWORD;
      dmPelsWidth : DWORD;
      dmPelsHeight : DWORD;
      field_2 : Anonymous_Record_171;
      dmDisplayFrequency : DWORD;
      dmICMMethod : DWORD;
      dmICMIntent : DWORD;
      dmMediaType : DWORD;
      dmDitherType : DWORD;
      dmReserved1 : DWORD;
      dmReserved2 : DWORD;
      dmPanningWidth : DWORD;
      dmPanningHeight : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,devicemodeW_x);
   for devicemodeW_x use record
      dmDeviceName at 0 range 0..511;
      dmSpecVersion at 0 range 512..527;
      dmDriverVersion at 0 range 528..543;
      dmSize at 0 range 544..559;
      dmDriverExtra at 0 range 560..575;
      dmFields at 0 range 576..607;
      field_1 at 0 range 608..735;
      dmColor at 0 range 736..751;
      dmDuplex at 0 range 752..767;
      dmYResolution at 0 range 768..783;
      dmTTOption at 0 range 784..799;
      dmCollate at 0 range 800..815;
      dmFormName at 0 range 816..1327;
      dmLogPixels at 0 range 1328..1343;
      dmBitsPerPel at 0 range 1344..1375;
      dmPelsWidth at 0 range 1376..1407;
      dmPelsHeight at 0 range 1408..1439;
      field_2 at 0 range 1440..1471;
      dmDisplayFrequency at 0 range 1472..1503;
      dmICMMethod at 0 range 1504..1535;
      dmICMIntent at 0 range 1536..1567;
      dmMediaType at 0 range 1568..1599;
      dmDitherType at 0 range 1600..1631;
      dmReserved1 at 0 range 1632..1663;
      dmReserved2 at 0 range 1664..1695;
      dmPanningWidth at 0 range 1696..1727;
      dmPanningHeight at 0 range 1728..1759;
   end record;
   for devicemodeW_x'Size use 1760;
   for devicemodeW_x'Alignment use 4;
   subtype DEVMODEW is devicemodeW_x;
   type PDEVMODEW is access all devicemodeW_x;
   type NPDEVMODEW is access all devicemodeW_x;
   type LPDEVMODEW is access all devicemodeW_x;
   subtype DEVMODE is DEVMODEA;
   subtype PDEVMODE is PDEVMODEA;
   subtype NPDEVMODE is NPDEVMODEA;
   subtype LPDEVMODE is LPDEVMODEA;
   type DISPLAY_DEVICEA_x_DeviceName_Array is array(1..32) of CHAR; -- Auto Generated Dependancy
   type DISPLAY_DEVICEA_x_DeviceString_Array is array(1..128) of CHAR; -- Auto Generated Dependancy
   type DISPLAY_DEVICEA_x_DeviceID_Array is array(1..128) of CHAR; -- Auto Generated Dependancy
   type DISPLAY_DEVICEA_x_DeviceKey_Array is array(1..128) of CHAR; -- Auto Generated Dependancy
   type DISPLAY_DEVICEA_x is record
      cb : DWORD;
      DeviceName : DISPLAY_DEVICEA_x_DeviceName_Array;
      DeviceString : DISPLAY_DEVICEA_x_DeviceString_Array;
      StateFlags : DWORD;
      DeviceID : DISPLAY_DEVICEA_x_DeviceID_Array;
      DeviceKey : DISPLAY_DEVICEA_x_DeviceKey_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAY_DEVICEA_x);
   for DISPLAY_DEVICEA_x use record
      cb at 0 range 0..31;
      DeviceName at 0 range 32..287;
      DeviceString at 0 range 288..1311;
      StateFlags at 0 range 1312..1343;
      DeviceID at 0 range 1344..2367;
      DeviceKey at 0 range 2368..3391;
   end record;
   for DISPLAY_DEVICEA_x'Size use 3392;
   for DISPLAY_DEVICEA_x'Alignment use 4;
   subtype DISPLAY_DEVICEA is DISPLAY_DEVICEA_x;
   type PDISPLAY_DEVICEA is access all DISPLAY_DEVICEA_x;
   type LPDISPLAY_DEVICEA is access all DISPLAY_DEVICEA_x;
   type DISPLAY_DEVICEW_x_DeviceName_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type DISPLAY_DEVICEW_x_DeviceString_Array is array(1..128) of WCHAR; -- Auto Generated Dependancy
   type DISPLAY_DEVICEW_x_DeviceID_Array is array(1..128) of WCHAR; -- Auto Generated Dependancy
   type DISPLAY_DEVICEW_x_DeviceKey_Array is array(1..128) of WCHAR; -- Auto Generated Dependancy
   type DISPLAY_DEVICEW_x is record
      cb : DWORD;
      DeviceName : DISPLAY_DEVICEW_x_DeviceName_Array;
      DeviceString : DISPLAY_DEVICEW_x_DeviceString_Array;
      StateFlags : DWORD;
      DeviceID : DISPLAY_DEVICEW_x_DeviceID_Array;
      DeviceKey : DISPLAY_DEVICEW_x_DeviceKey_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAY_DEVICEW_x);
   for DISPLAY_DEVICEW_x use record
      cb at 0 range 0..31;
      DeviceName at 0 range 32..543;
      DeviceString at 0 range 544..2591;
      StateFlags at 0 range 2592..2623;
      DeviceID at 0 range 2624..4671;
      DeviceKey at 0 range 4672..6719;
   end record;
   for DISPLAY_DEVICEW_x'Size use 6720;
   for DISPLAY_DEVICEW_x'Alignment use 4;
   subtype DISPLAY_DEVICEW is DISPLAY_DEVICEW_x;
   type PDISPLAY_DEVICEW is access all DISPLAY_DEVICEW_x;
   type LPDISPLAY_DEVICEW is access all DISPLAY_DEVICEW_x;
   subtype DISPLAY_DEVICE is DISPLAY_DEVICEA;
   subtype PDISPLAY_DEVICE is PDISPLAY_DEVICEA;
   subtype LPDISPLAY_DEVICE is LPDISPLAY_DEVICEA;
   type DISPLAYCONFIG_RATIONAL is record
      Numerator : UINT32;
      Denominator : UINT32;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_RATIONAL);
   for DISPLAYCONFIG_RATIONAL use record
      Numerator at 0 range 0..31;
      Denominator at 0 range 32..63;
   end record;
   for DISPLAYCONFIG_RATIONAL'Size use 64;
   for DISPLAYCONFIG_RATIONAL'Alignment use 4;
   type DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY is (
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_WIRED,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_VIRTUAL
   );
   for DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY use (
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL => -2147483648,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER => -1,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 => 0,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO => 1,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO => 2,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO => 3,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI => 4,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI => 5,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS => 6,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN => 8,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI => 9,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL => 10,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED => 11,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL => 12,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED => 13,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE => 14,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST => 15,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_WIRED => 16,
      DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_VIRTUAL => 17
   );
   for DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY'Size use 32;
   type DISPLAYCONFIG_SCANLINE_ORDERING is (
      DISPLAYCONFIG_SCANLINE_ORDERING_FORCE_UINT32,
      DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED,
      DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE,
      DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED,
      DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST
   );
   for DISPLAYCONFIG_SCANLINE_ORDERING use (
      DISPLAYCONFIG_SCANLINE_ORDERING_FORCE_UINT32 => -1,
      DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED => 0,
      DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE => 1,
      DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED => 2,
      DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST => 3
   );
   for DISPLAYCONFIG_SCANLINE_ORDERING'Size use 32;
   type DISPLAYCONFIG_2DREGION is record
      cx : UINT32;
      cy : UINT32;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_2DREGION);
   for DISPLAYCONFIG_2DREGION use record
      cx at 0 range 0..31;
      cy at 0 range 32..63;
   end record;
   for DISPLAYCONFIG_2DREGION'Size use 64;
   for DISPLAYCONFIG_2DREGION'Alignment use 4;
   type Anonymous_Record_173 is record
      videoStandard : Interfaces.C.Extensions.Unsigned_16; -- bit field
      vSyncFreqDivider : Interfaces.C.Extensions.Unsigned_6; -- bit field
      reserved : Interfaces.C.Extensions.Unsigned_10; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_173);
   for Anonymous_Record_173 use record
      videoStandard at 0 range 0..15;
      vSyncFreqDivider at 0 range 16..21;
      reserved at 0 range 22..31;
   end record;
   for Anonymous_Record_173'Size use 32;
   for Anonymous_Record_173'Alignment use 4;
   type Anonymous_Record_172 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_173;
         when others => 
            videoStandard : UINT32;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_172);
   pragma Unchecked_Union (Anonymous_Record_172);
   for Anonymous_Record_172'Size use 32;
   for Anonymous_Record_172'Alignment use 4;
   type DISPLAYCONFIG_VIDEO_SIGNAL_INFO is record
      pixelRate : UINT64;
      hSyncFreq : DISPLAYCONFIG_RATIONAL;
      vSyncFreq : DISPLAYCONFIG_RATIONAL;
      activeSize : DISPLAYCONFIG_2DREGION;
      totalSize : DISPLAYCONFIG_2DREGION;
      field_1 : Anonymous_Record_172;
      scanLineOrdering : DISPLAYCONFIG_SCANLINE_ORDERING;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_VIDEO_SIGNAL_INFO);
   for DISPLAYCONFIG_VIDEO_SIGNAL_INFO use record
      pixelRate at 0 range 0..63;
      hSyncFreq at 0 range 64..127;
      vSyncFreq at 0 range 128..191;
      activeSize at 0 range 192..255;
      totalSize at 0 range 256..319;
      field_1 at 0 range 320..351;
      scanLineOrdering at 0 range 352..383;
   end record;
   for DISPLAYCONFIG_VIDEO_SIGNAL_INFO'Size use 384;
   for DISPLAYCONFIG_VIDEO_SIGNAL_INFO'Alignment use 8;
   type DISPLAYCONFIG_SCALING is (
      DISPLAYCONFIG_SCALING_FORCE_UINT32,
      DISPLAYCONFIG_SCALING_IDENTITY,
      DISPLAYCONFIG_SCALING_CENTERED,
      DISPLAYCONFIG_SCALING_STRETCHED,
      DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX,
      DISPLAYCONFIG_SCALING_CUSTOM,
      DISPLAYCONFIG_SCALING_PREFERRED
   );
   for DISPLAYCONFIG_SCALING use (
      DISPLAYCONFIG_SCALING_FORCE_UINT32 => -1,
      DISPLAYCONFIG_SCALING_IDENTITY => 1,
      DISPLAYCONFIG_SCALING_CENTERED => 2,
      DISPLAYCONFIG_SCALING_STRETCHED => 3,
      DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX => 4,
      DISPLAYCONFIG_SCALING_CUSTOM => 5,
      DISPLAYCONFIG_SCALING_PREFERRED => 128
   );
   for DISPLAYCONFIG_SCALING'Size use 32;
   type DISPLAYCONFIG_ROTATION is (
      DISPLAYCONFIG_ROTATION_FORCE_UINT32,
      DISPLAYCONFIG_ROTATION_IDENTITY,
      DISPLAYCONFIG_ROTATION_ROTATE90,
      DISPLAYCONFIG_ROTATION_ROTATE180,
      DISPLAYCONFIG_ROTATION_ROTATE270
   );
   for DISPLAYCONFIG_ROTATION use (
      DISPLAYCONFIG_ROTATION_FORCE_UINT32 => -1,
      DISPLAYCONFIG_ROTATION_IDENTITY => 1,
      DISPLAYCONFIG_ROTATION_ROTATE90 => 2,
      DISPLAYCONFIG_ROTATION_ROTATE180 => 3,
      DISPLAYCONFIG_ROTATION_ROTATE270 => 4
   );
   for DISPLAYCONFIG_ROTATION'Size use 32;
   type DISPLAYCONFIG_MODE_INFO_TYPE is (
      DISPLAYCONFIG_MODE_INFO_TYPE_FORCE_UINT32,
      DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE,
      DISPLAYCONFIG_MODE_INFO_TYPE_TARGET,
      DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE
   );
   for DISPLAYCONFIG_MODE_INFO_TYPE use (
      DISPLAYCONFIG_MODE_INFO_TYPE_FORCE_UINT32 => -1,
      DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE => 1,
      DISPLAYCONFIG_MODE_INFO_TYPE_TARGET => 2,
      DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE => 3
   );
   for DISPLAYCONFIG_MODE_INFO_TYPE'Size use 32;
   type DISPLAYCONFIG_PIXELFORMAT is (
      DISPLAYCONFIG_PIXELFORMAT_FORCE_UINT32,
      DISPLAYCONFIG_PIXELFORMAT_8BPP,
      DISPLAYCONFIG_PIXELFORMAT_16BPP,
      DISPLAYCONFIG_PIXELFORMAT_24BPP,
      DISPLAYCONFIG_PIXELFORMAT_32BPP,
      DISPLAYCONFIG_PIXELFORMAT_NONGDI
   );
   for DISPLAYCONFIG_PIXELFORMAT use (
      DISPLAYCONFIG_PIXELFORMAT_FORCE_UINT32 => -1,
      DISPLAYCONFIG_PIXELFORMAT_8BPP => 1,
      DISPLAYCONFIG_PIXELFORMAT_16BPP => 2,
      DISPLAYCONFIG_PIXELFORMAT_24BPP => 3,
      DISPLAYCONFIG_PIXELFORMAT_32BPP => 4,
      DISPLAYCONFIG_PIXELFORMAT_NONGDI => 5
   );
   for DISPLAYCONFIG_PIXELFORMAT'Size use 32;
   type DISPLAYCONFIG_SOURCE_MODE is record
      width : UINT32;
      height : UINT32;
      pixelFormat : DISPLAYCONFIG_PIXELFORMAT;
      position : POINTL;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_SOURCE_MODE);
   for DISPLAYCONFIG_SOURCE_MODE use record
      width at 0 range 0..31;
      height at 0 range 32..63;
      pixelFormat at 0 range 64..95;
      position at 0 range 96..159;
   end record;
   for DISPLAYCONFIG_SOURCE_MODE'Size use 160;
   for DISPLAYCONFIG_SOURCE_MODE'Alignment use 4;
   type DISPLAYCONFIG_TARGET_MODE is record
      targetVideoSignalInfo : DISPLAYCONFIG_VIDEO_SIGNAL_INFO;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_TARGET_MODE);
   for DISPLAYCONFIG_TARGET_MODE use record
      targetVideoSignalInfo at 0 range 0..383;
   end record;
   for DISPLAYCONFIG_TARGET_MODE'Size use 384;
   for DISPLAYCONFIG_TARGET_MODE'Alignment use 8;
   type DISPLAYCONFIG_DESKTOP_IMAGE_INFO is record
      PathSourceSize : POINTL;
      DesktopImageRegion : RECTL;
      DesktopImageClip : RECTL;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_DESKTOP_IMAGE_INFO);
   for DISPLAYCONFIG_DESKTOP_IMAGE_INFO use record
      PathSourceSize at 0 range 0..63;
      DesktopImageRegion at 0 range 64..191;
      DesktopImageClip at 0 range 192..319;
   end record;
   for DISPLAYCONFIG_DESKTOP_IMAGE_INFO'Size use 320;
   for DISPLAYCONFIG_DESKTOP_IMAGE_INFO'Alignment use 4;
   type Anonymous_Record_174 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            targetMode : DISPLAYCONFIG_TARGET_MODE;
         when 1 =>
            sourceMode : DISPLAYCONFIG_SOURCE_MODE;
         when others => 
            desktopImageInfo : DISPLAYCONFIG_DESKTOP_IMAGE_INFO;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_174);
   pragma Unchecked_Union (Anonymous_Record_174);
   for Anonymous_Record_174'Size use 384;
   for Anonymous_Record_174'Alignment use 8;
   type DISPLAYCONFIG_MODE_INFO is record
      infoType : DISPLAYCONFIG_MODE_INFO_TYPE;
      id : UINT32;
      adapterId : LUID;
      field_1 : Anonymous_Record_174;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_MODE_INFO);
   for DISPLAYCONFIG_MODE_INFO use record
      infoType at 0 range 0..31;
      id at 0 range 32..63;
      adapterId at 0 range 64..127;
      field_1 at 0 range 128..511;
   end record;
   for DISPLAYCONFIG_MODE_INFO'Size use 512;
   for DISPLAYCONFIG_MODE_INFO'Alignment use 8;
   type Anonymous_Record_176 is record
      cloneGroupId : Interfaces.C.Extensions.Unsigned_16; -- bit field
      sourceModeInfoIdx : Interfaces.C.Extensions.Unsigned_16; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_176);
   for Anonymous_Record_176 use record
      cloneGroupId at 0 range 0..15;
      sourceModeInfoIdx at 0 range 16..31;
   end record;
   for Anonymous_Record_176'Size use 32;
   for Anonymous_Record_176'Alignment use 4;
   type Anonymous_Record_175 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            modeInfoIdx : UINT32;
         when others => 
            field_1 : Anonymous_Record_176;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_175);
   pragma Unchecked_Union (Anonymous_Record_175);
   for Anonymous_Record_175'Size use 32;
   for Anonymous_Record_175'Alignment use 4;
   type DISPLAYCONFIG_PATH_SOURCE_INFO is record
      adapterId : LUID;
      id : UINT32;
      field_1 : Anonymous_Record_175;
      statusFlags : UINT32;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_PATH_SOURCE_INFO);
   for DISPLAYCONFIG_PATH_SOURCE_INFO use record
      adapterId at 0 range 0..63;
      id at 0 range 64..95;
      field_1 at 0 range 96..127;
      statusFlags at 0 range 128..159;
   end record;
   for DISPLAYCONFIG_PATH_SOURCE_INFO'Size use 160;
   for DISPLAYCONFIG_PATH_SOURCE_INFO'Alignment use 4;
   type Anonymous_Record_178 is record
      desktopModeInfoIdx : Interfaces.C.Extensions.Unsigned_16; -- bit field
      targetModeInfoIdx : Interfaces.C.Extensions.Unsigned_16; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_178);
   for Anonymous_Record_178 use record
      desktopModeInfoIdx at 0 range 0..15;
      targetModeInfoIdx at 0 range 16..31;
   end record;
   for Anonymous_Record_178'Size use 32;
   for Anonymous_Record_178'Alignment use 4;
   type Anonymous_Record_177 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            modeInfoIdx : UINT32;
         when others => 
            field_1 : Anonymous_Record_178;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_177);
   pragma Unchecked_Union (Anonymous_Record_177);
   for Anonymous_Record_177'Size use 32;
   for Anonymous_Record_177'Alignment use 4;
   type DISPLAYCONFIG_PATH_TARGET_INFO is record
      adapterId : LUID;
      id : UINT32;
      field_1 : Anonymous_Record_177;
      outputTechnology : DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY;
      rotation : DISPLAYCONFIG_ROTATION;
      scaling : DISPLAYCONFIG_SCALING;
      refreshRate : DISPLAYCONFIG_RATIONAL;
      scanLineOrdering : DISPLAYCONFIG_SCANLINE_ORDERING;
      targetAvailable : BOOL;
      statusFlags : UINT32;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_PATH_TARGET_INFO);
   for DISPLAYCONFIG_PATH_TARGET_INFO use record
      adapterId at 0 range 0..63;
      id at 0 range 64..95;
      field_1 at 0 range 96..127;
      outputTechnology at 0 range 128..159;
      rotation at 0 range 160..191;
      scaling at 0 range 192..223;
      refreshRate at 0 range 224..287;
      scanLineOrdering at 0 range 288..319;
      targetAvailable at 0 range 320..351;
      statusFlags at 0 range 352..383;
   end record;
   for DISPLAYCONFIG_PATH_TARGET_INFO'Size use 384;
   for DISPLAYCONFIG_PATH_TARGET_INFO'Alignment use 4;
   type DISPLAYCONFIG_PATH_INFO is record
      sourceInfo : DISPLAYCONFIG_PATH_SOURCE_INFO;
      targetInfo : DISPLAYCONFIG_PATH_TARGET_INFO;
      flags : UINT32;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_PATH_INFO);
   for DISPLAYCONFIG_PATH_INFO use record
      sourceInfo at 0 range 0..159;
      targetInfo at 0 range 160..543;
      flags at 0 range 544..575;
   end record;
   for DISPLAYCONFIG_PATH_INFO'Size use 576;
   for DISPLAYCONFIG_PATH_INFO'Alignment use 4;
   type DISPLAYCONFIG_TOPOLOGY_ID is (
      DISPLAYCONFIG_TOPOLOGY_FORCE_UINT32,
      DISPLAYCONFIG_TOPOLOGY_INTERNAL,
      DISPLAYCONFIG_TOPOLOGY_CLONE,
      DISPLAYCONFIG_TOPOLOGY_EXTEND,
      DISPLAYCONFIG_TOPOLOGY_EXTERNAL
   );
   for DISPLAYCONFIG_TOPOLOGY_ID use (
      DISPLAYCONFIG_TOPOLOGY_FORCE_UINT32 => -1,
      DISPLAYCONFIG_TOPOLOGY_INTERNAL => 1,
      DISPLAYCONFIG_TOPOLOGY_CLONE => 2,
      DISPLAYCONFIG_TOPOLOGY_EXTEND => 4,
      DISPLAYCONFIG_TOPOLOGY_EXTERNAL => 8
   );
   for DISPLAYCONFIG_TOPOLOGY_ID'Size use 32;
   type DISPLAYCONFIG_DEVICE_INFO_TYPE is (
      DISPLAYCONFIG_DEVICE_INFO_FORCE_UINT32,
      DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME,
      DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME,
      DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE,
      DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME,
      DISPLAYCONFIG_DEVICE_INFO_SET_TARGET_PERSISTENCE,
      DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE,
      DISPLAYCONFIG_DEVICE_INFO_GET_SUPPORT_VIRTUAL_RESOLUTION,
      DISPLAYCONFIG_DEVICE_INFO_SET_SUPPORT_VIRTUAL_RESOLUTION,
      DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO,
      DISPLAYCONFIG_DEVICE_INFO_SET_ADVANCED_COLOR_STATE,
      DISPLAYCONFIG_DEVICE_INFO_GET_SDR_WHITE_LEVEL
   );
   for DISPLAYCONFIG_DEVICE_INFO_TYPE use (
      DISPLAYCONFIG_DEVICE_INFO_FORCE_UINT32 => -1,
      DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME => 1,
      DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME => 2,
      DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE => 3,
      DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME => 4,
      DISPLAYCONFIG_DEVICE_INFO_SET_TARGET_PERSISTENCE => 5,
      DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE => 6,
      DISPLAYCONFIG_DEVICE_INFO_GET_SUPPORT_VIRTUAL_RESOLUTION => 7,
      DISPLAYCONFIG_DEVICE_INFO_SET_SUPPORT_VIRTUAL_RESOLUTION => 8,
      DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO => 9,
      DISPLAYCONFIG_DEVICE_INFO_SET_ADVANCED_COLOR_STATE => 10,
      DISPLAYCONFIG_DEVICE_INFO_GET_SDR_WHITE_LEVEL => 11
   );
   for DISPLAYCONFIG_DEVICE_INFO_TYPE'Size use 32;
   type DISPLAYCONFIG_DEVICE_INFO_HEADER is record
      type_x : DISPLAYCONFIG_DEVICE_INFO_TYPE;
      size_x : UINT32;
      adapterId : LUID;
      id : UINT32;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_DEVICE_INFO_HEADER);
   for DISPLAYCONFIG_DEVICE_INFO_HEADER use record
      type_x at 0 range 0..31;
      size_x at 0 range 32..63;
      adapterId at 0 range 64..127;
      id at 0 range 128..159;
   end record;
   for DISPLAYCONFIG_DEVICE_INFO_HEADER'Size use 160;
   for DISPLAYCONFIG_DEVICE_INFO_HEADER'Alignment use 4;
   type DISPLAYCONFIG_SOURCE_DEVICE_NAME_viewGdiDeviceName_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type DISPLAYCONFIG_SOURCE_DEVICE_NAME is record
      header : DISPLAYCONFIG_DEVICE_INFO_HEADER;
      viewGdiDeviceName : DISPLAYCONFIG_SOURCE_DEVICE_NAME_viewGdiDeviceName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_SOURCE_DEVICE_NAME);
   for DISPLAYCONFIG_SOURCE_DEVICE_NAME use record
      header at 0 range 0..159;
      viewGdiDeviceName at 0 range 160..671;
   end record;
   for DISPLAYCONFIG_SOURCE_DEVICE_NAME'Size use 672;
   for DISPLAYCONFIG_SOURCE_DEVICE_NAME'Alignment use 4;
   type Anonymous_Record_180 is record
      friendlyNameFromEdid : Interfaces.C.Extensions.Unsigned_1; -- bit field
      friendlyNameForced : Interfaces.C.Extensions.Unsigned_1; -- bit field
      edidIdsValid : Interfaces.C.Extensions.Unsigned_1; -- bit field
      reserved : Interfaces.C.Extensions.Unsigned_29; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_180);
   for Anonymous_Record_180 use record
      friendlyNameFromEdid at 0 range 0..0;
      friendlyNameForced at 0 range 1..1;
      edidIdsValid at 0 range 2..2;
      reserved at 0 range 3..31;
   end record;
   for Anonymous_Record_180'Size use 32;
   for Anonymous_Record_180'Alignment use 4;
   type Anonymous_Record_179 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_180;
         when others => 
            value : UINT32;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_179);
   pragma Unchecked_Union (Anonymous_Record_179);
   for Anonymous_Record_179'Size use 32;
   for Anonymous_Record_179'Alignment use 4;
   type DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS is record
      field_1 : Anonymous_Record_179;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS);
   for DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS use record
      field_1 at 0 range 0..31;
   end record;
   for DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS'Size use 32;
   for DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS'Alignment use 4;
   type DISPLAYCONFIG_TARGET_DEVICE_NAME_monitorFriendlyDeviceName_Array is array(1..64) of WCHAR; -- Auto Generated Dependancy
   type DISPLAYCONFIG_TARGET_DEVICE_NAME_monitorDevicePath_Array is array(1..128) of WCHAR; -- Auto Generated Dependancy
   type DISPLAYCONFIG_TARGET_DEVICE_NAME is record
      header : DISPLAYCONFIG_DEVICE_INFO_HEADER;
      flags : DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS;
      outputTechnology : DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY;
      edidManufactureId : UINT16;
      edidProductCodeId : UINT16;
      connectorInstance : UINT32;
      monitorFriendlyDeviceName : DISPLAYCONFIG_TARGET_DEVICE_NAME_monitorFriendlyDeviceName_Array;
      monitorDevicePath : DISPLAYCONFIG_TARGET_DEVICE_NAME_monitorDevicePath_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_TARGET_DEVICE_NAME);
   for DISPLAYCONFIG_TARGET_DEVICE_NAME use record
      header at 0 range 0..159;
      flags at 0 range 160..191;
      outputTechnology at 0 range 192..223;
      edidManufactureId at 0 range 224..239;
      edidProductCodeId at 0 range 240..255;
      connectorInstance at 0 range 256..287;
      monitorFriendlyDeviceName at 0 range 288..1311;
      monitorDevicePath at 0 range 1312..3359;
   end record;
   for DISPLAYCONFIG_TARGET_DEVICE_NAME'Size use 3360;
   for DISPLAYCONFIG_TARGET_DEVICE_NAME'Alignment use 4;
   type DISPLAYCONFIG_TARGET_PREFERRED_MODE is record
      header : DISPLAYCONFIG_DEVICE_INFO_HEADER;
      width : UINT32;
      height : UINT32;
      targetMode : DISPLAYCONFIG_TARGET_MODE;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_TARGET_PREFERRED_MODE);
   for DISPLAYCONFIG_TARGET_PREFERRED_MODE use record
      header at 0 range 0..159;
      width at 0 range 160..191;
      height at 0 range 192..223;
      targetMode at 0 range 256..639;
   end record;
   for DISPLAYCONFIG_TARGET_PREFERRED_MODE'Size use 640;
   for DISPLAYCONFIG_TARGET_PREFERRED_MODE'Alignment use 8;
   type DISPLAYCONFIG_ADAPTER_NAME_adapterDevicePath_Array is array(1..128) of WCHAR; -- Auto Generated Dependancy
   type DISPLAYCONFIG_ADAPTER_NAME is record
      header : DISPLAYCONFIG_DEVICE_INFO_HEADER;
      adapterDevicePath : DISPLAYCONFIG_ADAPTER_NAME_adapterDevicePath_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_ADAPTER_NAME);
   for DISPLAYCONFIG_ADAPTER_NAME use record
      header at 0 range 0..159;
      adapterDevicePath at 0 range 160..2207;
   end record;
   for DISPLAYCONFIG_ADAPTER_NAME'Size use 2208;
   for DISPLAYCONFIG_ADAPTER_NAME'Alignment use 4;
   type DISPLAYCONFIG_TARGET_BASE_TYPE is record
      header : DISPLAYCONFIG_DEVICE_INFO_HEADER;
      baseOutputTechnology : DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_TARGET_BASE_TYPE);
   for DISPLAYCONFIG_TARGET_BASE_TYPE use record
      header at 0 range 0..159;
      baseOutputTechnology at 0 range 160..191;
   end record;
   for DISPLAYCONFIG_TARGET_BASE_TYPE'Size use 192;
   for DISPLAYCONFIG_TARGET_BASE_TYPE'Alignment use 4;
   type Anonymous_Record_182 is record
      bootPersistenceOn : Interfaces.C.Extensions.Unsigned_1; -- bit field
      reserved : Interfaces.C.Extensions.Unsigned_31; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_182);
   for Anonymous_Record_182 use record
      bootPersistenceOn at 0 range 0..0;
      reserved at 0 range 1..31;
   end record;
   for Anonymous_Record_182'Size use 32;
   for Anonymous_Record_182'Alignment use 4;
   type Anonymous_Record_181 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_182;
         when others => 
            value : UINT32;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_181);
   pragma Unchecked_Union (Anonymous_Record_181);
   for Anonymous_Record_181'Size use 32;
   for Anonymous_Record_181'Alignment use 4;
   type DISPLAYCONFIG_SET_TARGET_PERSISTENCE is record
      header : DISPLAYCONFIG_DEVICE_INFO_HEADER;
      field_1 : Anonymous_Record_181;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_SET_TARGET_PERSISTENCE);
   for DISPLAYCONFIG_SET_TARGET_PERSISTENCE use record
      header at 0 range 0..159;
      field_1 at 0 range 160..191;
   end record;
   for DISPLAYCONFIG_SET_TARGET_PERSISTENCE'Size use 192;
   for DISPLAYCONFIG_SET_TARGET_PERSISTENCE'Alignment use 4;
   type Anonymous_Record_184 is record
      disableMonitorVirtualResolution : Interfaces.C.Extensions.Unsigned_1; -- bit field
      reserved : Interfaces.C.Extensions.Unsigned_31; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_184);
   for Anonymous_Record_184 use record
      disableMonitorVirtualResolution at 0 range 0..0;
      reserved at 0 range 1..31;
   end record;
   for Anonymous_Record_184'Size use 32;
   for Anonymous_Record_184'Alignment use 4;
   type Anonymous_Record_183 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_184;
         when others => 
            value : UINT32;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_183);
   pragma Unchecked_Union (Anonymous_Record_183);
   for Anonymous_Record_183'Size use 32;
   for Anonymous_Record_183'Alignment use 4;
   type DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION is record
      header : DISPLAYCONFIG_DEVICE_INFO_HEADER;
      field_1 : Anonymous_Record_183;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION);
   for DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION use record
      header at 0 range 0..159;
      field_1 at 0 range 160..191;
   end record;
   for DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION'Size use 192;
   for DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION'Alignment use 4;
   type DISPLAYCONFIG_COLOR_ENCODING_x is (
      DISPLAYCONFIG_COLOR_ENCODING_FORCE_UINT32,
      DISPLAYCONFIG_COLOR_ENCODING_RGB,
      DISPLAYCONFIG_COLOR_ENCODING_YCBCR444,
      DISPLAYCONFIG_COLOR_ENCODING_YCBCR422,
      DISPLAYCONFIG_COLOR_ENCODING_YCBCR420,
      DISPLAYCONFIG_COLOR_ENCODING_INTENSITY
   );
   for DISPLAYCONFIG_COLOR_ENCODING_x use (
      DISPLAYCONFIG_COLOR_ENCODING_FORCE_UINT32 => -1,
      DISPLAYCONFIG_COLOR_ENCODING_RGB => 0,
      DISPLAYCONFIG_COLOR_ENCODING_YCBCR444 => 1,
      DISPLAYCONFIG_COLOR_ENCODING_YCBCR422 => 2,
      DISPLAYCONFIG_COLOR_ENCODING_YCBCR420 => 3,
      DISPLAYCONFIG_COLOR_ENCODING_INTENSITY => 4
   );
   for DISPLAYCONFIG_COLOR_ENCODING_x'Size use 32;
   subtype DISPLAYCONFIG_COLOR_ENCODING is DISPLAYCONFIG_COLOR_ENCODING_x;
   type Anonymous_Record_186 is record
      advancedColorSupported : Interfaces.C.Extensions.Unsigned_1; -- bit field
      advancedColorEnabled : Interfaces.C.Extensions.Unsigned_1; -- bit field
      wideColorEnforced : Interfaces.C.Extensions.Unsigned_1; -- bit field
      advancedColorForceDisabled : Interfaces.C.Extensions.Unsigned_1; -- bit field
      reserved : Interfaces.C.Extensions.Unsigned_28; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_186);
   for Anonymous_Record_186 use record
      advancedColorSupported at 0 range 0..0;
      advancedColorEnabled at 0 range 1..1;
      wideColorEnforced at 0 range 2..2;
      advancedColorForceDisabled at 0 range 3..3;
      reserved at 0 range 4..31;
   end record;
   for Anonymous_Record_186'Size use 32;
   for Anonymous_Record_186'Alignment use 4;
   type Anonymous_Record_185 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_186;
         when others => 
            value : UINT32;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_185);
   pragma Unchecked_Union (Anonymous_Record_185);
   for Anonymous_Record_185'Size use 32;
   for Anonymous_Record_185'Alignment use 4;
   type DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO_x is record
      header : DISPLAYCONFIG_DEVICE_INFO_HEADER;
      field_1 : Anonymous_Record_185;
      colorEncoding : DISPLAYCONFIG_COLOR_ENCODING;
      bitsPerColorChannel : UINT32;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO_x);
   for DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO_x use record
      header at 0 range 0..159;
      field_1 at 0 range 160..191;
      colorEncoding at 0 range 192..223;
      bitsPerColorChannel at 0 range 224..255;
   end record;
   for DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO_x'Size use 256;
   for DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO_x'Alignment use 4;
   subtype DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO is DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO_x;
   type Anonymous_Record_188 is record
      enableAdvancedColor : Interfaces.C.Extensions.Unsigned_1; -- bit field
      reserved : Interfaces.C.Extensions.Unsigned_31; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_188);
   for Anonymous_Record_188 use record
      enableAdvancedColor at 0 range 0..0;
      reserved at 0 range 1..31;
   end record;
   for Anonymous_Record_188'Size use 32;
   for Anonymous_Record_188'Alignment use 4;
   type Anonymous_Record_187 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_188;
         when others => 
            value : UINT32;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_187);
   pragma Unchecked_Union (Anonymous_Record_187);
   for Anonymous_Record_187'Size use 32;
   for Anonymous_Record_187'Alignment use 4;
   type DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE_x is record
      header : DISPLAYCONFIG_DEVICE_INFO_HEADER;
      field_1 : Anonymous_Record_187;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE_x);
   for DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE_x use record
      header at 0 range 0..159;
      field_1 at 0 range 160..191;
   end record;
   for DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE_x'Size use 192;
   for DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE_x'Alignment use 4;
   subtype DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE is DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE_x;
   type DISPLAYCONFIG_SDR_WHITE_LEVEL_x is record
      header : DISPLAYCONFIG_DEVICE_INFO_HEADER;
      SDRWhiteLevel : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,DISPLAYCONFIG_SDR_WHITE_LEVEL_x);
   for DISPLAYCONFIG_SDR_WHITE_LEVEL_x use record
      header at 0 range 0..159;
      SDRWhiteLevel at 0 range 160..191;
   end record;
   for DISPLAYCONFIG_SDR_WHITE_LEVEL_x'Size use 192;
   for DISPLAYCONFIG_SDR_WHITE_LEVEL_x'Alignment use 4;
   subtype DISPLAYCONFIG_SDR_WHITE_LEVEL is DISPLAYCONFIG_SDR_WHITE_LEVEL_x;
   type RGNDATAHEADER_x is record
      dwSize : DWORD;
      iType : DWORD;
      nCount : DWORD;
      nRgnSize : DWORD;
      rcBound : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,RGNDATAHEADER_x);
   for RGNDATAHEADER_x use record
      dwSize at 0 range 0..31;
      iType at 0 range 32..63;
      nCount at 0 range 64..95;
      nRgnSize at 0 range 96..127;
      rcBound at 0 range 128..255;
   end record;
   for RGNDATAHEADER_x'Size use 256;
   for RGNDATAHEADER_x'Alignment use 4;
   subtype RGNDATAHEADER is RGNDATAHEADER_x;
   type PRGNDATAHEADER is access all RGNDATAHEADER_x;
   type RGNDATA_x_Buffer_Array is array(1..1) of Character; -- Auto Generated Dependancy
   type RGNDATA_x is record
      rdh : RGNDATAHEADER;
      Buffer : RGNDATA_x_Buffer_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,RGNDATA_x);
   for RGNDATA_x use record
      rdh at 0 range 0..255;
      Buffer at 0 range 256..263;
   end record;
   for RGNDATA_x'Size use 288;
   for RGNDATA_x'Alignment use 4;
   subtype RGNDATA is RGNDATA_x;
   type PRGNDATA is access all RGNDATA_x;
   type NPRGNDATA is access all RGNDATA_x;
   type LPRGNDATA is access all RGNDATA_x;
   type ABC_x is record
      abcA : Interfaces.C.Int;
      abcB : UINT;
      abcC : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,ABC_x);
   for ABC_x use record
      abcA at 0 range 0..31;
      abcB at 0 range 32..63;
      abcC at 0 range 64..95;
   end record;
   for ABC_x'Size use 96;
   for ABC_x'Alignment use 4;
   subtype ABC is ABC_x;
   type PABC is access all ABC_x;
   type NPABC is access all ABC_x;
   type LPABC is access all ABC_x;
   type ABCFLOAT_x is record
      abcfA : FLOAT;
      abcfB : FLOAT;
      abcfC : FLOAT;
   end record;
   pragma Convention (C_Pass_By_Copy,ABCFLOAT_x);
   for ABCFLOAT_x use record
      abcfA at 0 range 0..31;
      abcfB at 0 range 32..63;
      abcfC at 0 range 64..95;
   end record;
   for ABCFLOAT_x'Size use 96;
   for ABCFLOAT_x'Alignment use 4;
   subtype ABCFLOAT is ABCFLOAT_x;
   type PABCFLOAT is access all ABCFLOAT_x;
   type NPABCFLOAT is access all ABCFLOAT_x;
   type LPABCFLOAT is access all ABCFLOAT_x;
   type OUTLINETEXTMETRICA_x is record
      otmSize : UINT;
      otmTextMetrics : TEXTMETRICA;
      otmFiller : BYTE;
      otmPanoseNumber : PANOSE;
      otmfsSelection : UINT;
      otmfsType : UINT;
      otmsCharSlopeRise : Interfaces.C.Int;
      otmsCharSlopeRun : Interfaces.C.Int;
      otmItalicAngle : Interfaces.C.Int;
      otmEMSquare : UINT;
      otmAscent : Interfaces.C.Int;
      otmDescent : Interfaces.C.Int;
      otmLineGap : UINT;
      otmsCapEmHeight : UINT;
      otmsXHeight : UINT;
      otmrcFontBox : RECT;
      otmMacAscent : Interfaces.C.Int;
      otmMacDescent : Interfaces.C.Int;
      otmMacLineGap : UINT;
      otmusMinimumPPEM : UINT;
      otmptSubscriptSize : POINT;
      otmptSubscriptOffset : POINT;
      otmptSuperscriptSize : POINT;
      otmptSuperscriptOffset : POINT;
      otmsStrikeoutSize : UINT;
      otmsStrikeoutPosition : Interfaces.C.Int;
      otmsUnderscoreSize : Interfaces.C.Int;
      otmsUnderscorePosition : Interfaces.C.Int;
      otmpFamilyName : PSTR;
      otmpFaceName : PSTR;
      otmpStyleName : PSTR;
      otmpFullName : PSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,OUTLINETEXTMETRICA_x);
   for OUTLINETEXTMETRICA_x use record
      otmSize at 0 range 0..31;
      otmTextMetrics at 0 range 32..479;
      otmFiller at 0 range 480..487;
      otmPanoseNumber at 0 range 488..567;
      otmfsSelection at 0 range 576..607;
      otmfsType at 0 range 608..639;
      otmsCharSlopeRise at 0 range 640..671;
      otmsCharSlopeRun at 0 range 672..703;
      otmItalicAngle at 0 range 704..735;
      otmEMSquare at 0 range 736..767;
      otmAscent at 0 range 768..799;
      otmDescent at 0 range 800..831;
      otmLineGap at 0 range 832..863;
      otmsCapEmHeight at 0 range 864..895;
      otmsXHeight at 0 range 896..927;
      otmrcFontBox at 0 range 928..1055;
      otmMacAscent at 0 range 1056..1087;
      otmMacDescent at 0 range 1088..1119;
      otmMacLineGap at 0 range 1120..1151;
      otmusMinimumPPEM at 0 range 1152..1183;
      otmptSubscriptSize at 0 range 1184..1247;
      otmptSubscriptOffset at 0 range 1248..1311;
      otmptSuperscriptSize at 0 range 1312..1375;
      otmptSuperscriptOffset at 0 range 1376..1439;
      otmsStrikeoutSize at 0 range 1440..1471;
      otmsStrikeoutPosition at 0 range 1472..1503;
      otmsUnderscoreSize at 0 range 1504..1535;
      otmsUnderscorePosition at 0 range 1536..1567;
      otmpFamilyName at 0 range 1600..1663;
      otmpFaceName at 0 range 1664..1727;
      otmpStyleName at 0 range 1728..1791;
      otmpFullName at 0 range 1792..1855;
   end record;
   for OUTLINETEXTMETRICA_x'Size use 1856;
   for OUTLINETEXTMETRICA_x'Alignment use 8;
   subtype OUTLINETEXTMETRICA is OUTLINETEXTMETRICA_x;
   type POUTLINETEXTMETRICA is access all OUTLINETEXTMETRICA_x;
   type NPOUTLINETEXTMETRICA is access all OUTLINETEXTMETRICA_x;
   type LPOUTLINETEXTMETRICA is access all OUTLINETEXTMETRICA_x;
   type OUTLINETEXTMETRICW_x is record
      otmSize : UINT;
      otmTextMetrics : TEXTMETRICW;
      otmFiller : BYTE;
      otmPanoseNumber : PANOSE;
      otmfsSelection : UINT;
      otmfsType : UINT;
      otmsCharSlopeRise : Interfaces.C.Int;
      otmsCharSlopeRun : Interfaces.C.Int;
      otmItalicAngle : Interfaces.C.Int;
      otmEMSquare : UINT;
      otmAscent : Interfaces.C.Int;
      otmDescent : Interfaces.C.Int;
      otmLineGap : UINT;
      otmsCapEmHeight : UINT;
      otmsXHeight : UINT;
      otmrcFontBox : RECT;
      otmMacAscent : Interfaces.C.Int;
      otmMacDescent : Interfaces.C.Int;
      otmMacLineGap : UINT;
      otmusMinimumPPEM : UINT;
      otmptSubscriptSize : POINT;
      otmptSubscriptOffset : POINT;
      otmptSuperscriptSize : POINT;
      otmptSuperscriptOffset : POINT;
      otmsStrikeoutSize : UINT;
      otmsStrikeoutPosition : Interfaces.C.Int;
      otmsUnderscoreSize : Interfaces.C.Int;
      otmsUnderscorePosition : Interfaces.C.Int;
      otmpFamilyName : PSTR;
      otmpFaceName : PSTR;
      otmpStyleName : PSTR;
      otmpFullName : PSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,OUTLINETEXTMETRICW_x);
   for OUTLINETEXTMETRICW_x use record
      otmSize at 0 range 0..31;
      otmTextMetrics at 0 range 32..511;
      otmFiller at 0 range 512..519;
      otmPanoseNumber at 0 range 520..599;
      otmfsSelection at 0 range 608..639;
      otmfsType at 0 range 640..671;
      otmsCharSlopeRise at 0 range 672..703;
      otmsCharSlopeRun at 0 range 704..735;
      otmItalicAngle at 0 range 736..767;
      otmEMSquare at 0 range 768..799;
      otmAscent at 0 range 800..831;
      otmDescent at 0 range 832..863;
      otmLineGap at 0 range 864..895;
      otmsCapEmHeight at 0 range 896..927;
      otmsXHeight at 0 range 928..959;
      otmrcFontBox at 0 range 960..1087;
      otmMacAscent at 0 range 1088..1119;
      otmMacDescent at 0 range 1120..1151;
      otmMacLineGap at 0 range 1152..1183;
      otmusMinimumPPEM at 0 range 1184..1215;
      otmptSubscriptSize at 0 range 1216..1279;
      otmptSubscriptOffset at 0 range 1280..1343;
      otmptSuperscriptSize at 0 range 1344..1407;
      otmptSuperscriptOffset at 0 range 1408..1471;
      otmsStrikeoutSize at 0 range 1472..1503;
      otmsStrikeoutPosition at 0 range 1504..1535;
      otmsUnderscoreSize at 0 range 1536..1567;
      otmsUnderscorePosition at 0 range 1568..1599;
      otmpFamilyName at 0 range 1600..1663;
      otmpFaceName at 0 range 1664..1727;
      otmpStyleName at 0 range 1728..1791;
      otmpFullName at 0 range 1792..1855;
   end record;
   for OUTLINETEXTMETRICW_x'Size use 1856;
   for OUTLINETEXTMETRICW_x'Alignment use 8;
   subtype OUTLINETEXTMETRICW is OUTLINETEXTMETRICW_x;
   type POUTLINETEXTMETRICW is access all OUTLINETEXTMETRICW_x;
   type NPOUTLINETEXTMETRICW is access all OUTLINETEXTMETRICW_x;
   type LPOUTLINETEXTMETRICW is access all OUTLINETEXTMETRICW_x;
   subtype OUTLINETEXTMETRIC is OUTLINETEXTMETRICA;
   subtype POUTLINETEXTMETRIC is POUTLINETEXTMETRICA;
   subtype NPOUTLINETEXTMETRIC is NPOUTLINETEXTMETRICA;
   subtype LPOUTLINETEXTMETRIC is LPOUTLINETEXTMETRICA;
   type tagPOLYTEXTA is record
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      n : UINT;
      lpstr_x : LPCSTR;
      uiFlags : UINT;
      rcl : RECT;
      pdx : access Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOLYTEXTA);
   for tagPOLYTEXTA use record
      x at 0 range 0..31;
      y at 0 range 32..63;
      n at 0 range 64..95;
      lpstr_x at 0 range 128..191;
      uiFlags at 0 range 192..223;
      rcl at 0 range 224..351;
      pdx at 0 range 384..447;
   end record;
   for tagPOLYTEXTA'Size use 448;
   for tagPOLYTEXTA'Alignment use 8;
   subtype POLYTEXTA is tagPOLYTEXTA;
   type PPOLYTEXTA is access all tagPOLYTEXTA;
   type NPPOLYTEXTA is access all tagPOLYTEXTA;
   type LPPOLYTEXTA is access all tagPOLYTEXTA;
   type tagPOLYTEXTW is record
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      n : UINT;
      lpstr_x : LPCWSTR;
      uiFlags : UINT;
      rcl : RECT;
      pdx : access Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOLYTEXTW);
   for tagPOLYTEXTW use record
      x at 0 range 0..31;
      y at 0 range 32..63;
      n at 0 range 64..95;
      lpstr_x at 0 range 128..191;
      uiFlags at 0 range 192..223;
      rcl at 0 range 224..351;
      pdx at 0 range 384..447;
   end record;
   for tagPOLYTEXTW'Size use 448;
   for tagPOLYTEXTW'Alignment use 8;
   subtype POLYTEXTW is tagPOLYTEXTW;
   type PPOLYTEXTW is access all tagPOLYTEXTW;
   type NPPOLYTEXTW is access all tagPOLYTEXTW;
   type LPPOLYTEXTW is access all tagPOLYTEXTW;
   subtype POLYTEXT is POLYTEXTA;
   subtype PPOLYTEXT is PPOLYTEXTA;
   subtype NPPOLYTEXT is NPPOLYTEXTA;
   subtype LPPOLYTEXT is LPPOLYTEXTA;
   type FIXED_x is record
      fract : WORD;
      value : Interfaces.C.Short;
   end record;
   pragma Convention (C_Pass_By_Copy,FIXED_x);
   for FIXED_x use record
      fract at 0 range 0..15;
      value at 0 range 16..31;
   end record;
   for FIXED_x'Size use 32;
   for FIXED_x'Alignment use 2;
   subtype FIXED is FIXED_x;
   type MAT2_x is record
      eM11 : FIXED;
      eM12 : FIXED;
      eM21 : FIXED;
      eM22 : FIXED;
   end record;
   pragma Convention (C_Pass_By_Copy,MAT2_x);
   for MAT2_x use record
      eM11 at 0 range 0..31;
      eM12 at 0 range 32..63;
      eM21 at 0 range 64..95;
      eM22 at 0 range 96..127;
   end record;
   for MAT2_x'Size use 128;
   for MAT2_x'Alignment use 2;
   subtype MAT2 is MAT2_x;
   type LPMAT2 is access all MAT2_x;
   type GLYPHMETRICS_x is record
      gmBlackBoxX : UINT;
      gmBlackBoxY : UINT;
      gmptGlyphOrigin : POINT;
      gmCellIncX : Interfaces.C.Short;
      gmCellIncY : Interfaces.C.Short;
   end record;
   pragma Convention (C_Pass_By_Copy,GLYPHMETRICS_x);
   for GLYPHMETRICS_x use record
      gmBlackBoxX at 0 range 0..31;
      gmBlackBoxY at 0 range 32..63;
      gmptGlyphOrigin at 0 range 64..127;
      gmCellIncX at 0 range 128..143;
      gmCellIncY at 0 range 144..159;
   end record;
   for GLYPHMETRICS_x'Size use 160;
   for GLYPHMETRICS_x'Alignment use 4;
   subtype GLYPHMETRICS is GLYPHMETRICS_x;
   type LPGLYPHMETRICS is access all GLYPHMETRICS_x;
   type tagPOINTFX is record
      x : FIXED;
      y : FIXED;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOINTFX);
   for tagPOINTFX use record
      x at 0 range 0..31;
      y at 0 range 32..63;
   end record;
   for tagPOINTFX'Size use 64;
   for tagPOINTFX'Alignment use 2;
   subtype POINTFX is tagPOINTFX;
   type LPPOINTFX is access all tagPOINTFX;
   type tagTTPOLYCURVE_apfx_Array is array(1..1) of POINTFX; -- Auto Generated Dependancy
   type tagTTPOLYCURVE is record
      wType : WORD;
      cpfx : WORD;
      apfx : tagTTPOLYCURVE_apfx_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTTPOLYCURVE);
   for tagTTPOLYCURVE use record
      wType at 0 range 0..15;
      cpfx at 0 range 16..31;
      apfx at 0 range 32..95;
   end record;
   for tagTTPOLYCURVE'Size use 96;
   for tagTTPOLYCURVE'Alignment use 2;
   subtype TTPOLYCURVE is tagTTPOLYCURVE;
   type LPTTPOLYCURVE is access all tagTTPOLYCURVE;
   type tagTTPOLYGONHEADER is record
      cb : DWORD;
      dwType : DWORD;
      pfxStart : POINTFX;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTTPOLYGONHEADER);
   for tagTTPOLYGONHEADER use record
      cb at 0 range 0..31;
      dwType at 0 range 32..63;
      pfxStart at 0 range 64..127;
   end record;
   for tagTTPOLYGONHEADER'Size use 128;
   for tagTTPOLYGONHEADER'Alignment use 4;
   subtype TTPOLYGONHEADER is tagTTPOLYGONHEADER;
   type LPTTPOLYGONHEADER is access all tagTTPOLYGONHEADER;
   type tagGCP_RESULTSA is record
      lStructSize : DWORD;
      lpOutString : LPSTR;
      lpOrder : access UINT;
      lpDx : access Interfaces.C.Int;
      lpCaretPos : access Interfaces.C.Int;
      lpClass : LPSTR;
      lpGlyphs : LPWSTR;
      nGlyphs : UINT;
      nMaxFit : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagGCP_RESULTSA);
   for tagGCP_RESULTSA use record
      lStructSize at 0 range 0..31;
      lpOutString at 0 range 64..127;
      lpOrder at 0 range 128..191;
      lpDx at 0 range 192..255;
      lpCaretPos at 0 range 256..319;
      lpClass at 0 range 320..383;
      lpGlyphs at 0 range 384..447;
      nGlyphs at 0 range 448..479;
      nMaxFit at 0 range 480..511;
   end record;
   for tagGCP_RESULTSA'Size use 512;
   for tagGCP_RESULTSA'Alignment use 8;
   subtype GCP_RESULTSA is tagGCP_RESULTSA;
   type LPGCP_RESULTSA is access all tagGCP_RESULTSA;
   type tagGCP_RESULTSW is record
      lStructSize : DWORD;
      lpOutString : LPWSTR;
      lpOrder : access UINT;
      lpDx : access Interfaces.C.Int;
      lpCaretPos : access Interfaces.C.Int;
      lpClass : LPSTR;
      lpGlyphs : LPWSTR;
      nGlyphs : UINT;
      nMaxFit : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagGCP_RESULTSW);
   for tagGCP_RESULTSW use record
      lStructSize at 0 range 0..31;
      lpOutString at 0 range 64..127;
      lpOrder at 0 range 128..191;
      lpDx at 0 range 192..255;
      lpCaretPos at 0 range 256..319;
      lpClass at 0 range 320..383;
      lpGlyphs at 0 range 384..447;
      nGlyphs at 0 range 448..479;
      nMaxFit at 0 range 480..511;
   end record;
   for tagGCP_RESULTSW'Size use 512;
   for tagGCP_RESULTSW'Alignment use 8;
   subtype GCP_RESULTSW is tagGCP_RESULTSW;
   type LPGCP_RESULTSW is access all tagGCP_RESULTSW;
   subtype GCP_RESULTS is GCP_RESULTSA;
   subtype LPGCP_RESULTS is LPGCP_RESULTSA;
   type RASTERIZER_STATUS_x is record
      nSize : Interfaces.C.Short;
      wFlags : Interfaces.C.Short;
      nLanguageID : Interfaces.C.Short;
   end record;
   pragma Convention (C_Pass_By_Copy,RASTERIZER_STATUS_x);
   for RASTERIZER_STATUS_x use record
      nSize at 0 range 0..15;
      wFlags at 0 range 16..31;
      nLanguageID at 0 range 32..47;
   end record;
   for RASTERIZER_STATUS_x'Size use 48;
   for RASTERIZER_STATUS_x'Alignment use 2;
   subtype RASTERIZER_STATUS is RASTERIZER_STATUS_x;
   type LPRASTERIZER_STATUS is access all RASTERIZER_STATUS_x;
   type tagPIXELFORMATDESCRIPTOR is record
      nSize : WORD;
      nVersion : WORD;
      dwFlags : DWORD;
      iPixelType : BYTE;
      cColorBits : BYTE;
      cRedBits : BYTE;
      cRedShift : BYTE;
      cGreenBits : BYTE;
      cGreenShift : BYTE;
      cBlueBits : BYTE;
      cBlueShift : BYTE;
      cAlphaBits : BYTE;
      cAlphaShift : BYTE;
      cAccumBits : BYTE;
      cAccumRedBits : BYTE;
      cAccumGreenBits : BYTE;
      cAccumBlueBits : BYTE;
      cAccumAlphaBits : BYTE;
      cDepthBits : BYTE;
      cStencilBits : BYTE;
      cAuxBuffers : BYTE;
      iLayerType : BYTE;
      bReserved : BYTE;
      dwLayerMask : DWORD;
      dwVisibleMask : DWORD;
      dwDamageMask : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPIXELFORMATDESCRIPTOR);
   for tagPIXELFORMATDESCRIPTOR use record
      nSize at 0 range 0..15;
      nVersion at 0 range 16..31;
      dwFlags at 0 range 32..63;
      iPixelType at 0 range 64..71;
      cColorBits at 0 range 72..79;
      cRedBits at 0 range 80..87;
      cRedShift at 0 range 88..95;
      cGreenBits at 0 range 96..103;
      cGreenShift at 0 range 104..111;
      cBlueBits at 0 range 112..119;
      cBlueShift at 0 range 120..127;
      cAlphaBits at 0 range 128..135;
      cAlphaShift at 0 range 136..143;
      cAccumBits at 0 range 144..151;
      cAccumRedBits at 0 range 152..159;
      cAccumGreenBits at 0 range 160..167;
      cAccumBlueBits at 0 range 168..175;
      cAccumAlphaBits at 0 range 176..183;
      cDepthBits at 0 range 184..191;
      cStencilBits at 0 range 192..199;
      cAuxBuffers at 0 range 200..207;
      iLayerType at 0 range 208..215;
      bReserved at 0 range 216..223;
      dwLayerMask at 0 range 224..255;
      dwVisibleMask at 0 range 256..287;
      dwDamageMask at 0 range 288..319;
   end record;
   for tagPIXELFORMATDESCRIPTOR'Size use 320;
   for tagPIXELFORMATDESCRIPTOR'Alignment use 4;
   subtype PIXELFORMATDESCRIPTOR is tagPIXELFORMATDESCRIPTOR;
   type PPIXELFORMATDESCRIPTOR is access all tagPIXELFORMATDESCRIPTOR;
   type LPPIXELFORMATDESCRIPTOR is access all tagPIXELFORMATDESCRIPTOR;
   type OLDFONTENUMPROCA is access function (p1 : access LOGFONTA ; p2 : access TEXTMETRICA ; p3 : DWORD ; p4 : LPARAM) return int; -- int (const LOGFONTA *, const TEXTMETRICA *, DWORD, LPARAM)
   pragma Convention(C,OLDFONTENUMPROCA);
   type OLDFONTENUMPROCW is access function (p1 : access LOGFONTW ; p2 : access TEXTMETRICW ; p3 : DWORD ; p4 : LPARAM) return int; -- int (const LOGFONTW *, const TEXTMETRICW *, DWORD, LPARAM)
   pragma Convention(C,OLDFONTENUMPROCW);
   subtype FONTENUMPROCA is OLDFONTENUMPROCA;
   subtype FONTENUMPROCW is OLDFONTENUMPROCW;
   subtype FONTENUMPROC is FONTENUMPROCA;
   type GOBJENUMPROC is access function (p1 : LPVOID ; p2 : LPARAM) return int; -- int (LPVOID, LPARAM)
   pragma Convention(C,GOBJENUMPROC);
   type LINEDDAPROC is access procedure (p1 : int ; p2 : int ; p3 : LPARAM); -- void (int, int, LPARAM)
   pragma Convention(C,LINEDDAPROC);
   function AddFontResourceA(
      param1 : LPCSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,AddFontResourceA,"AddFontResourceA");
   function AddFontResourceW(
      param1 : LPCWSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,AddFontResourceW,"AddFontResourceW");
   function AnimatePalette(
      hPal : HPALETTE;
      iStartIndex : UINT;
      cEntries : UINT;
      ppe : access constant PALETTEENTRY
   ) return BOOL;
   pragma import (Cpp,AnimatePalette,"AnimatePalette");
   function Arc(
      hdc_x : HDC;
      x1 : Interfaces.C.Int;
      y1 : Interfaces.C.Int;
      x2 : Interfaces.C.Int;
      y2 : Interfaces.C.Int;
      x3 : Interfaces.C.Int;
      y3 : Interfaces.C.Int;
      x4 : Interfaces.C.Int;
      y4 : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,Arc,"Arc");
   function BitBlt(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int;
      hdcSrc : HDC;
      x1 : Interfaces.C.Int;
      y1 : Interfaces.C.Int;
      rop : DWORD
   ) return BOOL;
   pragma import (Cpp,BitBlt,"BitBlt");
   function CancelDC(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,CancelDC,"CancelDC");
   function Chord(
      hdc_x : HDC;
      x1 : Interfaces.C.Int;
      y1 : Interfaces.C.Int;
      x2 : Interfaces.C.Int;
      y2 : Interfaces.C.Int;
      x3 : Interfaces.C.Int;
      y3 : Interfaces.C.Int;
      x4 : Interfaces.C.Int;
      y4 : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,Chord,"Chord");
   function ChoosePixelFormat(
      hdc_x : HDC;
      ppfd : access constant PIXELFORMATDESCRIPTOR
   ) return Interfaces.C.Int;
   pragma import (Cpp,ChoosePixelFormat,"ChoosePixelFormat");
   function CloseMetaFile(
      hdc_x : HDC
   ) return HMETAFILE;
   pragma import (Cpp,CloseMetaFile,"CloseMetaFile");
   function CombineRgn(
      hrgnDst : HRGN;
      hrgnSrc1 : HRGN;
      hrgnSrc2 : HRGN;
      iMode : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,CombineRgn,"CombineRgn");
   function CopyMetaFileA(
      param1 : HMETAFILE;
      param2 : LPCSTR
   ) return HMETAFILE;
   pragma import (Cpp,CopyMetaFileA,"CopyMetaFileA");
   function CopyMetaFileW(
      param1 : HMETAFILE;
      param2 : LPCWSTR
   ) return HMETAFILE;
   pragma import (Cpp,CopyMetaFileW,"CopyMetaFileW");
   function CreateBitmap(
      nWidth : Interfaces.C.Int;
      nHeight : Interfaces.C.Int;
      nPlanes : UINT;
      nBitCount : UINT;
      lpBits : access Void
   ) return HBITMAP;
   pragma import (Cpp,CreateBitmap,"CreateBitmap");
   function CreateBitmapIndirect(
      pbm : access constant BITMAP
   ) return HBITMAP;
   pragma import (Cpp,CreateBitmapIndirect,"CreateBitmapIndirect");
   function CreateBrushIndirect(
      plbrush : access constant LOGBRUSH
   ) return HBRUSH;
   pragma import (Cpp,CreateBrushIndirect,"CreateBrushIndirect");
   function CreateCompatibleBitmap(
      hdc_x : HDC;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int
   ) return HBITMAP;
   pragma import (Cpp,CreateCompatibleBitmap,"CreateCompatibleBitmap");
   function CreateDiscardableBitmap(
      hdc_x : HDC;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int
   ) return HBITMAP;
   pragma import (Cpp,CreateDiscardableBitmap,"CreateDiscardableBitmap");
   function CreateCompatibleDC(
      hdc_x : HDC
   ) return HDC;
   pragma import (Cpp,CreateCompatibleDC,"CreateCompatibleDC");
   function CreateDCA(
      pwszDriver : LPCSTR;
      pwszDevice : LPCSTR;
      pszPort : LPCSTR;
      pdm : access constant DEVMODEA
   ) return HDC;
   pragma import (Cpp,CreateDCA,"CreateDCA");
   function CreateDCW(
      pwszDriver : LPCWSTR;
      pwszDevice : LPCWSTR;
      pszPort : LPCWSTR;
      pdm : access constant DEVMODEW
   ) return HDC;
   pragma import (Cpp,CreateDCW,"CreateDCW");
   function CreateDIBitmap(
      hdc_x : HDC;
      pbmih : access constant BITMAPINFOHEADER;
      flInit : DWORD;
      pjBits : access Void;
      pbmi : access constant BITMAPINFO;
      iUsage : UINT
   ) return HBITMAP;
   pragma import (Cpp,CreateDIBitmap,"CreateDIBitmap");
   function CreateDIBPatternBrush(
      h : HGLOBAL;
      iUsage : UINT
   ) return HBRUSH;
   pragma import (Cpp,CreateDIBPatternBrush,"CreateDIBPatternBrush");
   function CreateDIBPatternBrushPt(
      lpPackedDIB : access Void;
      iUsage : UINT
   ) return HBRUSH;
   pragma import (Cpp,CreateDIBPatternBrushPt,"CreateDIBPatternBrushPt");
   function CreateEllipticRgn(
      x1 : Interfaces.C.Int;
      y1 : Interfaces.C.Int;
      x2 : Interfaces.C.Int;
      y2 : Interfaces.C.Int
   ) return HRGN;
   pragma import (Cpp,CreateEllipticRgn,"CreateEllipticRgn");
   function CreateEllipticRgnIndirect(
      lprect_x : access constant RECT
   ) return HRGN;
   pragma import (Cpp,CreateEllipticRgnIndirect,"CreateEllipticRgnIndirect");
   function CreateFontIndirectA(
      lplf : access constant LOGFONTA
   ) return HFONT;
   pragma import (Cpp,CreateFontIndirectA,"CreateFontIndirectA");
   function CreateFontIndirectW(
      lplf : access constant LOGFONTW
   ) return HFONT;
   pragma import (Cpp,CreateFontIndirectW,"CreateFontIndirectW");
   function CreateFontA(
      cHeight : Interfaces.C.Int;
      cWidth : Interfaces.C.Int;
      cEscapement : Interfaces.C.Int;
      cOrientation : Interfaces.C.Int;
      cWeight : Interfaces.C.Int;
      bItalic : DWORD;
      bUnderline : DWORD;
      bStrikeOut : DWORD;
      iCharSet : DWORD;
      iOutPrecision : DWORD;
      iClipPrecision : DWORD;
      iQuality : DWORD;
      iPitchAndFamily : DWORD;
      pszFaceName : LPCSTR
   ) return HFONT;
   pragma import (Cpp,CreateFontA,"CreateFontA");
   function CreateFontW(
      cHeight : Interfaces.C.Int;
      cWidth : Interfaces.C.Int;
      cEscapement : Interfaces.C.Int;
      cOrientation : Interfaces.C.Int;
      cWeight : Interfaces.C.Int;
      bItalic : DWORD;
      bUnderline : DWORD;
      bStrikeOut : DWORD;
      iCharSet : DWORD;
      iOutPrecision : DWORD;
      iClipPrecision : DWORD;
      iQuality : DWORD;
      iPitchAndFamily : DWORD;
      pszFaceName : LPCWSTR
   ) return HFONT;
   pragma import (Cpp,CreateFontW,"CreateFontW");
   function CreateHatchBrush(
      iHatch : Interfaces.C.Int;
      color : COLORREF
   ) return HBRUSH;
   pragma import (Cpp,CreateHatchBrush,"CreateHatchBrush");
   function CreateICA(
      pszDriver : LPCSTR;
      pszDevice : LPCSTR;
      pszPort : LPCSTR;
      pdm : access constant DEVMODEA
   ) return HDC;
   pragma import (Cpp,CreateICA,"CreateICA");
   function CreateICW(
      pszDriver : LPCWSTR;
      pszDevice : LPCWSTR;
      pszPort : LPCWSTR;
      pdm : access constant DEVMODEW
   ) return HDC;
   pragma import (Cpp,CreateICW,"CreateICW");
   function CreateMetaFileA(
      pszFile : LPCSTR
   ) return HDC;
   pragma import (Cpp,CreateMetaFileA,"CreateMetaFileA");
   function CreateMetaFileW(
      pszFile : LPCWSTR
   ) return HDC;
   pragma import (Cpp,CreateMetaFileW,"CreateMetaFileW");
   function CreatePalette(
      plpal : access constant LOGPALETTE
   ) return HPALETTE;
   pragma import (Cpp,CreatePalette,"CreatePalette");
   function CreatePen(
      iStyle : Interfaces.C.Int;
      cWidth : Interfaces.C.Int;
      color : COLORREF
   ) return HPEN;
   pragma import (Cpp,CreatePen,"CreatePen");
   function CreatePenIndirect(
      plpen : access constant LOGPEN
   ) return HPEN;
   pragma import (Cpp,CreatePenIndirect,"CreatePenIndirect");
   function CreatePolyPolygonRgn(
      pptl : access constant POINT;
      pc : access constant INT;
      cPoly : Interfaces.C.Int;
      iMode : Interfaces.C.Int
   ) return HRGN;
   pragma import (Cpp,CreatePolyPolygonRgn,"CreatePolyPolygonRgn");
   function CreatePatternBrush(
      hbm : HBITMAP
   ) return HBRUSH;
   pragma import (Cpp,CreatePatternBrush,"CreatePatternBrush");
   function CreateRectRgn(
      x1 : Interfaces.C.Int;
      y1 : Interfaces.C.Int;
      x2 : Interfaces.C.Int;
      y2 : Interfaces.C.Int
   ) return HRGN;
   pragma import (Cpp,CreateRectRgn,"CreateRectRgn");
   function CreateRectRgnIndirect(
      lprect_x : access constant RECT
   ) return HRGN;
   pragma import (Cpp,CreateRectRgnIndirect,"CreateRectRgnIndirect");
   function CreateRoundRectRgn(
      x1 : Interfaces.C.Int;
      y1 : Interfaces.C.Int;
      x2 : Interfaces.C.Int;
      y2 : Interfaces.C.Int;
      w : Interfaces.C.Int;
      h : Interfaces.C.Int
   ) return HRGN;
   pragma import (Cpp,CreateRoundRectRgn,"CreateRoundRectRgn");
   function CreateScalableFontResourceA(
      fdwHidden : DWORD;
      lpszFont : LPCSTR;
      lpszFile : LPCSTR;
      lpszPath : LPCSTR
   ) return BOOL;
   pragma import (Cpp,CreateScalableFontResourceA,"CreateScalableFontResourceA");
   function CreateScalableFontResourceW(
      fdwHidden : DWORD;
      lpszFont : LPCWSTR;
      lpszFile : LPCWSTR;
      lpszPath : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,CreateScalableFontResourceW,"CreateScalableFontResourceW");
   function CreateSolidBrush(
      color : COLORREF
   ) return HBRUSH;
   pragma import (Cpp,CreateSolidBrush,"CreateSolidBrush");
   function DeleteDC(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,DeleteDC,"DeleteDC");
   function DeleteMetaFile(
      hmf : HMETAFILE
   ) return BOOL;
   pragma import (Cpp,DeleteMetaFile,"DeleteMetaFile");
   function DeleteObject(
      ho : HGDIOBJ
   ) return BOOL;
   pragma import (Cpp,DeleteObject,"DeleteObject");
   function DescribePixelFormat(
      hdc_x : HDC;
      iPixelFormat : Interfaces.C.Int;
      nBytes : UINT;
      ppfd : LPPIXELFORMATDESCRIPTOR
   ) return Interfaces.C.Int;
   pragma import (Cpp,DescribePixelFormat,"DescribePixelFormat");
   type LPFNDEVMODE is access function (p1 : HWND ; p2 : HMODULE ; p3 : LPDEVMODE ; p4 : LPSTR ; p5 : LPSTR ; p6 : LPDEVMODE ; p7 : LPSTR ; p8 : UINT) return UINT; -- UINT (HWND, HMODULE, LPDEVMODE, LPSTR, LPSTR, LPDEVMODE, LPSTR, UINT)
   pragma Convention(C,LPFNDEVMODE);
   type LPFNDEVCAPS is access function (p1 : LPSTR ; p2 : LPSTR ; p3 : UINT ; p4 : LPSTR ; p5 : LPDEVMODE) return DWORD; -- DWORD (LPSTR, LPSTR, UINT, LPSTR, LPDEVMODE)
   pragma Convention(C,LPFNDEVCAPS);
   function DeviceCapabilitiesA(
      pDevice : LPCSTR;
      pPort : LPCSTR;
      fwCapability : WORD;
      pOutput : LPSTR;
      pDevMode_x : access constant DEVMODEA
   ) return Interfaces.C.Int;
   pragma import (Cpp,DeviceCapabilitiesA,"DeviceCapabilitiesA");
   function DeviceCapabilitiesW(
      pDevice : LPCWSTR;
      pPort : LPCWSTR;
      fwCapability : WORD;
      pOutput : LPWSTR;
      pDevMode_x : access constant DEVMODEW
   ) return Interfaces.C.Int;
   pragma import (Cpp,DeviceCapabilitiesW,"DeviceCapabilitiesW");
   function DrawEscape(
      hdc_x : HDC;
      iEscape : Interfaces.C.Int;
      cjIn : Interfaces.C.Int;
      lpIn : LPCSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,DrawEscape,"DrawEscape");
   function Ellipse(
      hdc_x : HDC;
      left : Interfaces.C.Int;
      top : Interfaces.C.Int;
      right : Interfaces.C.Int;
      bottom : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,Ellipse,"Ellipse");
   function EnumFontFamiliesExA(
      hdc_x : HDC;
      lpLogfont_x : LPLOGFONTA;
      lpProc : FONTENUMPROCA;
      lParam_x : LPARAM;
      dwFlags : DWORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumFontFamiliesExA,"EnumFontFamiliesExA");
   function EnumFontFamiliesExW(
      hdc_x : HDC;
      lpLogfont_x : LPLOGFONTW;
      lpProc : FONTENUMPROCW;
      lParam_x : LPARAM;
      dwFlags : DWORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumFontFamiliesExW,"EnumFontFamiliesExW");
   function EnumFontFamiliesA(
      hdc_x : HDC;
      lpLogfont_x : LPCSTR;
      lpProc : FONTENUMPROCA;
      lParam_x : LPARAM
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumFontFamiliesA,"EnumFontFamiliesA");
   function EnumFontFamiliesW(
      hdc_x : HDC;
      lpLogfont_x : LPCWSTR;
      lpProc : FONTENUMPROCW;
      lParam_x : LPARAM
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumFontFamiliesW,"EnumFontFamiliesW");
   function EnumFontsA(
      hdc_x : HDC;
      lpLogfont_x : LPCSTR;
      lpProc : FONTENUMPROCA;
      lParam_x : LPARAM
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumFontsA,"EnumFontsA");
   function EnumFontsW(
      hdc_x : HDC;
      lpLogfont_x : LPCWSTR;
      lpProc : FONTENUMPROCW;
      lParam_x : LPARAM
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumFontsW,"EnumFontsW");
   function EnumObjects(
      hdc_x : HDC;
      nType : Interfaces.C.Int;
      lpFunc : GOBJENUMPROC;
      lParam_x : LPARAM
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumObjects,"EnumObjects");
   function EqualRgn(
      hrgn1 : HRGN;
      hrgn2 : HRGN
   ) return BOOL;
   pragma import (Cpp,EqualRgn,"EqualRgn");
   function Escape(
      hdc_x : HDC;
      iEscape : Interfaces.C.Int;
      cjIn : Interfaces.C.Int;
      pvIn : LPCSTR;
      pvOut : LPVOID
   ) return Interfaces.C.Int;
   pragma import (Cpp,Escape,"Escape");
   function ExtEscape(
      hdc_x : HDC;
      iEscape : Interfaces.C.Int;
      cjInput : Interfaces.C.Int;
      lpInData : LPCSTR;
      cjOutput : Interfaces.C.Int;
      lpOutData : LPSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,ExtEscape,"ExtEscape");
   function ExcludeClipRect(
      hdc_x : HDC;
      left : Interfaces.C.Int;
      top : Interfaces.C.Int;
      right : Interfaces.C.Int;
      bottom : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,ExcludeClipRect,"ExcludeClipRect");
   function ExtCreateRegion(
      lpx : access constant XFORM;
      nCount : DWORD;
      lpData : access constant RGNDATA
   ) return HRGN;
   pragma import (Cpp,ExtCreateRegion,"ExtCreateRegion");
   function ExtFloodFill(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      color : COLORREF;
      type_x : UINT
   ) return BOOL;
   pragma import (Cpp,ExtFloodFill,"ExtFloodFill");
   function FillRgn(
      hdc_x : HDC;
      hrgn_x : HRGN;
      hbr : HBRUSH
   ) return BOOL;
   pragma import (Cpp,FillRgn,"FillRgn");
   function FloodFill(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      color : COLORREF
   ) return BOOL;
   pragma import (Cpp,FloodFill,"FloodFill");
   function FrameRgn(
      hdc_x : HDC;
      hrgn_x : HRGN;
      hbr : HBRUSH;
      w : Interfaces.C.Int;
      h : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,FrameRgn,"FrameRgn");
   function GetROP2(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetROP2,"GetROP2");
   function GetAspectRatioFilterEx(
      hdc_x : HDC;
      lpsize_x : LPSIZE
   ) return BOOL;
   pragma import (Cpp,GetAspectRatioFilterEx,"GetAspectRatioFilterEx");
   function GetBkColor(
      hdc_x : HDC
   ) return COLORREF;
   pragma import (Cpp,GetBkColor,"GetBkColor");
   function GetDCBrushColor(
      hdc_x : HDC
   ) return COLORREF;
   pragma import (Cpp,GetDCBrushColor,"GetDCBrushColor");
   function GetDCPenColor(
      hdc_x : HDC
   ) return COLORREF;
   pragma import (Cpp,GetDCPenColor,"GetDCPenColor");
   function GetBkMode(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetBkMode,"GetBkMode");
   function GetBitmapBits(
      hbit : HBITMAP;
      cb : LONG;
      lpvBits : LPVOID
   ) return LONG;
   pragma import (Cpp,GetBitmapBits,"GetBitmapBits");
   function GetBitmapDimensionEx(
      hbit : HBITMAP;
      lpsize_x : LPSIZE
   ) return BOOL;
   pragma import (Cpp,GetBitmapDimensionEx,"GetBitmapDimensionEx");
   function GetBoundsRect(
      hdc_x : HDC;
      lprect_x : LPRECT;
      flags : UINT
   ) return UINT;
   pragma import (Cpp,GetBoundsRect,"GetBoundsRect");
   function GetBrushOrgEx(
      hdc_x : HDC;
      lppt : LPPOINT
   ) return BOOL;
   pragma import (Cpp,GetBrushOrgEx,"GetBrushOrgEx");
   function GetCharWidthA(
      hdc_x : HDC;
      iFirst : UINT;
      iLast : UINT;
      lpBuffer : LPINT
   ) return BOOL;
   pragma import (Cpp,GetCharWidthA,"GetCharWidthA");
   function GetCharWidthW(
      hdc_x : HDC;
      iFirst : UINT;
      iLast : UINT;
      lpBuffer : LPINT
   ) return BOOL;
   pragma import (Cpp,GetCharWidthW,"GetCharWidthW");
   function GetCharWidth32A(
      hdc_x : HDC;
      iFirst : UINT;
      iLast : UINT;
      lpBuffer : LPINT
   ) return BOOL;
   pragma import (Cpp,GetCharWidth32A,"GetCharWidth32A");
   function GetCharWidth32W(
      hdc_x : HDC;
      iFirst : UINT;
      iLast : UINT;
      lpBuffer : LPINT
   ) return BOOL;
   pragma import (Cpp,GetCharWidth32W,"GetCharWidth32W");
   function GetCharWidthFloatA(
      hdc_x : HDC;
      iFirst : UINT;
      iLast : UINT;
      lpBuffer : PFLOAT
   ) return BOOL;
   pragma import (Cpp,GetCharWidthFloatA,"GetCharWidthFloatA");
   function GetCharWidthFloatW(
      hdc_x : HDC;
      iFirst : UINT;
      iLast : UINT;
      lpBuffer : PFLOAT
   ) return BOOL;
   pragma import (Cpp,GetCharWidthFloatW,"GetCharWidthFloatW");
   function GetCharABCWidthsA(
      hdc_x : HDC;
      wFirst : UINT;
      wLast : UINT;
      lpABC_x : LPABC
   ) return BOOL;
   pragma import (Cpp,GetCharABCWidthsA,"GetCharABCWidthsA");
   function GetCharABCWidthsW(
      hdc_x : HDC;
      wFirst : UINT;
      wLast : UINT;
      lpABC_x : LPABC
   ) return BOOL;
   pragma import (Cpp,GetCharABCWidthsW,"GetCharABCWidthsW");
   function GetCharABCWidthsFloatA(
      hdc_x : HDC;
      iFirst : UINT;
      iLast : UINT;
      lpABC_x : LPABCFLOAT
   ) return BOOL;
   pragma import (Cpp,GetCharABCWidthsFloatA,"GetCharABCWidthsFloatA");
   function GetCharABCWidthsFloatW(
      hdc_x : HDC;
      iFirst : UINT;
      iLast : UINT;
      lpABC_x : LPABCFLOAT
   ) return BOOL;
   pragma import (Cpp,GetCharABCWidthsFloatW,"GetCharABCWidthsFloatW");
   function GetClipBox(
      hdc_x : HDC;
      lprect_x : LPRECT
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetClipBox,"GetClipBox");
   function GetClipRgn(
      hdc_x : HDC;
      hrgn_x : HRGN
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetClipRgn,"GetClipRgn");
   function GetMetaRgn(
      hdc_x : HDC;
      hrgn_x : HRGN
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetMetaRgn,"GetMetaRgn");
   function GetCurrentObject(
      hdc_x : HDC;
      type_x : UINT
   ) return HGDIOBJ;
   pragma import (Cpp,GetCurrentObject,"GetCurrentObject");
   function GetCurrentPositionEx(
      hdc_x : HDC;
      lppt : LPPOINT
   ) return BOOL;
   pragma import (Cpp,GetCurrentPositionEx,"GetCurrentPositionEx");
   function GetDeviceCaps(
      hdc_x : HDC;
      index : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetDeviceCaps,"GetDeviceCaps");
   function GetDIBits(
      hdc_x : HDC;
      hbm : HBITMAP;
      start : UINT;
      cLines : UINT;
      lpvBits : LPVOID;
      lpbmi : LPBITMAPINFO;
      usage : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetDIBits,"GetDIBits");
   function GetFontData(
      hdc_x : HDC;
      dwTable : DWORD;
      dwOffset : DWORD;
      pvBuffer : PVOID;
      cjBuffer : DWORD
   ) return DWORD;
   pragma import (Cpp,GetFontData,"GetFontData");
   function GetGlyphOutlineA(
      hdc_x : HDC;
      uChar_x : UINT;
      fuFormat : UINT;
      lpgm : LPGLYPHMETRICS;
      cjBuffer : DWORD;
      pvBuffer : LPVOID;
      lpmat2_x : access constant MAT2
   ) return DWORD;
   pragma import (Cpp,GetGlyphOutlineA,"GetGlyphOutlineA");
   function GetGlyphOutlineW(
      hdc_x : HDC;
      uChar_x : UINT;
      fuFormat : UINT;
      lpgm : LPGLYPHMETRICS;
      cjBuffer : DWORD;
      pvBuffer : LPVOID;
      lpmat2_x : access constant MAT2
   ) return DWORD;
   pragma import (Cpp,GetGlyphOutlineW,"GetGlyphOutlineW");
   function GetGraphicsMode(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetGraphicsMode,"GetGraphicsMode");
   function GetMapMode(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetMapMode,"GetMapMode");
   function GetMetaFileBitsEx(
      hMF : HMETAFILE;
      cbBuffer : UINT;
      lpData : LPVOID
   ) return UINT;
   pragma import (Cpp,GetMetaFileBitsEx,"GetMetaFileBitsEx");
   function GetMetaFileA(
      lpName : LPCSTR
   ) return HMETAFILE;
   pragma import (Cpp,GetMetaFileA,"GetMetaFileA");
   function GetMetaFileW(
      lpName : LPCWSTR
   ) return HMETAFILE;
   pragma import (Cpp,GetMetaFileW,"GetMetaFileW");
   function GetNearestColor(
      hdc_x : HDC;
      color : COLORREF
   ) return COLORREF;
   pragma import (Cpp,GetNearestColor,"GetNearestColor");
   function GetNearestPaletteIndex(
      h : HPALETTE;
      color : COLORREF
   ) return UINT;
   pragma import (Cpp,GetNearestPaletteIndex,"GetNearestPaletteIndex");
   function GetObjectType(
      h : HGDIOBJ
   ) return DWORD;
   pragma import (Cpp,GetObjectType,"GetObjectType");
   function GetOutlineTextMetricsA(
      hdc_x : HDC;
      cjCopy : UINT;
      potm : LPOUTLINETEXTMETRICA
   ) return UINT;
   pragma import (Cpp,GetOutlineTextMetricsA,"GetOutlineTextMetricsA");
   function GetOutlineTextMetricsW(
      hdc_x : HDC;
      cjCopy : UINT;
      potm : LPOUTLINETEXTMETRICW
   ) return UINT;
   pragma import (Cpp,GetOutlineTextMetricsW,"GetOutlineTextMetricsW");
   function GetPaletteEntries(
      hpal : HPALETTE;
      iStart : UINT;
      cEntries : UINT;
      pPalEntries : LPPALETTEENTRY
   ) return UINT;
   pragma import (Cpp,GetPaletteEntries,"GetPaletteEntries");
   function GetPixel(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int
   ) return COLORREF;
   pragma import (Cpp,GetPixel,"GetPixel");
   function GetPixelFormat(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetPixelFormat,"GetPixelFormat");
   function GetPolyFillMode(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetPolyFillMode,"GetPolyFillMode");
   function GetRasterizerCaps(
      lpraststat : LPRASTERIZER_STATUS;
      cjBytes : UINT
   ) return BOOL;
   pragma import (Cpp,GetRasterizerCaps,"GetRasterizerCaps");
   function GetRandomRgn(
      hdc_x : HDC;
      hrgn_x : HRGN;
      i : INT
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetRandomRgn,"GetRandomRgn");
   function GetRegionData(
      hrgn_x : HRGN;
      nCount : DWORD;
      lpRgnData_x : LPRGNDATA
   ) return DWORD;
   pragma import (Cpp,GetRegionData,"GetRegionData");
   function GetRgnBox(
      hrgn_x : HRGN;
      lprc : LPRECT
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetRgnBox,"GetRgnBox");
   function GetStockObject(
      i : Interfaces.C.Int
   ) return HGDIOBJ;
   pragma import (Cpp,GetStockObject,"GetStockObject");
   function GetStretchBltMode(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetStretchBltMode,"GetStretchBltMode");
   function GetSystemPaletteEntries(
      hdc_x : HDC;
      iStart : UINT;
      cEntries : UINT;
      pPalEntries : LPPALETTEENTRY
   ) return UINT;
   pragma import (Cpp,GetSystemPaletteEntries,"GetSystemPaletteEntries");
   function GetSystemPaletteUse(
      hdc_x : HDC
   ) return UINT;
   pragma import (Cpp,GetSystemPaletteUse,"GetSystemPaletteUse");
   function GetTextCharacterExtra(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetTextCharacterExtra,"GetTextCharacterExtra");
   function GetTextAlign(
      hdc_x : HDC
   ) return UINT;
   pragma import (Cpp,GetTextAlign,"GetTextAlign");
   function GetTextColor(
      hdc_x : HDC
   ) return COLORREF;
   pragma import (Cpp,GetTextColor,"GetTextColor");
   function GetTextExtentPointA(
      hdc_x : HDC;
      lpString : LPCSTR;
      c : Interfaces.C.Int;
      lpsz : LPSIZE
   ) return BOOL;
   pragma import (Cpp,GetTextExtentPointA,"GetTextExtentPointA");
   function GetTextExtentPointW(
      hdc_x : HDC;
      lpString : LPCWSTR;
      c : Interfaces.C.Int;
      lpsz : LPSIZE
   ) return BOOL;
   pragma import (Cpp,GetTextExtentPointW,"GetTextExtentPointW");
   function GetTextExtentPoint32A(
      hdc_x : HDC;
      lpString : LPCSTR;
      c : Interfaces.C.Int;
      psizl : LPSIZE
   ) return BOOL;
   pragma import (Cpp,GetTextExtentPoint32A,"GetTextExtentPoint32A");
   function GetTextExtentPoint32W(
      hdc_x : HDC;
      lpString : LPCWSTR;
      c : Interfaces.C.Int;
      psizl : LPSIZE
   ) return BOOL;
   pragma import (Cpp,GetTextExtentPoint32W,"GetTextExtentPoint32W");
   function GetTextExtentExPointA(
      hdc_x : HDC;
      lpszString : LPCSTR;
      cchString : Interfaces.C.Int;
      nMaxExtent : Interfaces.C.Int;
      lpnFit : LPINT;
      lpnDx : LPINT;
      lpSize_x : LPSIZE
   ) return BOOL;
   pragma import (Cpp,GetTextExtentExPointA,"GetTextExtentExPointA");
   function GetTextExtentExPointW(
      hdc_x : HDC;
      lpszString : LPCWSTR;
      cchString : Interfaces.C.Int;
      nMaxExtent : Interfaces.C.Int;
      lpnFit : LPINT;
      lpnDx : LPINT;
      lpSize_x : LPSIZE
   ) return BOOL;
   pragma import (Cpp,GetTextExtentExPointW,"GetTextExtentExPointW");
   function GetTextCharset(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetTextCharset,"GetTextCharset");
   function GetTextCharsetInfo(
      hdc_x : HDC;
      lpSig : LPFONTSIGNATURE;
      dwFlags : DWORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetTextCharsetInfo,"GetTextCharsetInfo");
   function TranslateCharsetInfo(
      lpSrc : access DWORD;
      lpCs : LPCHARSETINFO;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,TranslateCharsetInfo,"TranslateCharsetInfo");
   function GetFontLanguageInfo(
      hdc_x : HDC
   ) return DWORD;
   pragma import (Cpp,GetFontLanguageInfo,"GetFontLanguageInfo");
   function GetCharacterPlacementA(
      hdc_x : HDC;
      lpString : LPCSTR;
      nCount : Interfaces.C.Int;
      nMexExtent : Interfaces.C.Int;
      lpResults : LPGCP_RESULTSA;
      dwFlags : DWORD
   ) return DWORD;
   pragma import (Cpp,GetCharacterPlacementA,"GetCharacterPlacementA");
   function GetCharacterPlacementW(
      hdc_x : HDC;
      lpString : LPCWSTR;
      nCount : Interfaces.C.Int;
      nMexExtent : Interfaces.C.Int;
      lpResults : LPGCP_RESULTSW;
      dwFlags : DWORD
   ) return DWORD;
   pragma import (Cpp,GetCharacterPlacementW,"GetCharacterPlacementW");
   type tagWCRANGE is record
      wcLow : WCHAR;
      cGlyphs : USHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagWCRANGE);
   for tagWCRANGE use record
      wcLow at 0 range 0..15;
      cGlyphs at 0 range 16..31;
   end record;
   for tagWCRANGE'Size use 32;
   for tagWCRANGE'Alignment use 2;
   subtype WCRANGE is tagWCRANGE;
   type PWCRANGE is access all tagWCRANGE;
   type LPWCRANGE is access all tagWCRANGE;
   type tagGLYPHSET_ranges_Array is array(1..1) of WCRANGE; -- Auto Generated Dependancy
   type tagGLYPHSET is record
      cbThis : DWORD;
      flAccel : DWORD;
      cGlyphsSupported : DWORD;
      cRanges : DWORD;
      ranges : tagGLYPHSET_ranges_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagGLYPHSET);
   for tagGLYPHSET use record
      cbThis at 0 range 0..31;
      flAccel at 0 range 32..63;
      cGlyphsSupported at 0 range 64..95;
      cRanges at 0 range 96..127;
      ranges at 0 range 128..159;
   end record;
   for tagGLYPHSET'Size use 160;
   for tagGLYPHSET'Alignment use 4;
   subtype GLYPHSET is tagGLYPHSET;
   type PGLYPHSET is access all tagGLYPHSET;
   type LPGLYPHSET is access all tagGLYPHSET;
   function GetFontUnicodeRanges(
      hdc_x : HDC;
      lpgs : LPGLYPHSET
   ) return DWORD;
   pragma import (Cpp,GetFontUnicodeRanges,"GetFontUnicodeRanges");
   function GetGlyphIndicesA(
      hdc_x : HDC;
      lpstr_x : LPCSTR;
      c : Interfaces.C.Int;
      pgi : LPWORD;
      fl : DWORD
   ) return DWORD;
   pragma import (Cpp,GetGlyphIndicesA,"GetGlyphIndicesA");
   function GetGlyphIndicesW(
      hdc_x : HDC;
      lpstr_x : LPCWSTR;
      c : Interfaces.C.Int;
      pgi : LPWORD;
      fl : DWORD
   ) return DWORD;
   pragma import (Cpp,GetGlyphIndicesW,"GetGlyphIndicesW");
   function GetTextExtentPointI(
      hdc_x : HDC;
      pgiIn : LPWORD;
      cgi : Interfaces.C.Int;
      psize_x : LPSIZE
   ) return BOOL;
   pragma import (Cpp,GetTextExtentPointI,"GetTextExtentPointI");
   function GetTextExtentExPointI(
      hdc_x : HDC;
      lpwszString : LPWORD;
      cwchString : Interfaces.C.Int;
      nMaxExtent : Interfaces.C.Int;
      lpnFit : LPINT;
      lpnDx : LPINT;
      lpSize_x : LPSIZE
   ) return BOOL;
   pragma import (Cpp,GetTextExtentExPointI,"GetTextExtentExPointI");
   function GetCharWidthI(
      hdc_x : HDC;
      giFirst : UINT;
      cgi : UINT;
      pgi : LPWORD;
      piWidths : LPINT
   ) return BOOL;
   pragma import (Cpp,GetCharWidthI,"GetCharWidthI");
   function GetCharABCWidthsI(
      hdc_x : HDC;
      giFirst : UINT;
      cgi : UINT;
      pgi : LPWORD;
      pabc_x : LPABC
   ) return BOOL;
   pragma import (Cpp,GetCharABCWidthsI,"GetCharABCWidthsI");
   type tagDESIGNVECTOR_dvValues_Array is array(1..16) of LONG; -- Auto Generated Dependancy
   type tagDESIGNVECTOR is record
      dvReserved : DWORD;
      dvNumAxes : DWORD;
      dvValues : tagDESIGNVECTOR_dvValues_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDESIGNVECTOR);
   for tagDESIGNVECTOR use record
      dvReserved at 0 range 0..31;
      dvNumAxes at 0 range 32..63;
      dvValues at 0 range 64..575;
   end record;
   for tagDESIGNVECTOR'Size use 576;
   for tagDESIGNVECTOR'Alignment use 4;
   subtype DESIGNVECTOR is tagDESIGNVECTOR;
   type PDESIGNVECTOR is access all tagDESIGNVECTOR;
   type LPDESIGNVECTOR is access all tagDESIGNVECTOR;
   function AddFontResourceExA(
      name : LPCSTR;
      fl : DWORD;
      res : PVOID
   ) return Interfaces.C.Int;
   pragma import (Cpp,AddFontResourceExA,"AddFontResourceExA");
   function AddFontResourceExW(
      name : LPCWSTR;
      fl : DWORD;
      res : PVOID
   ) return Interfaces.C.Int;
   pragma import (Cpp,AddFontResourceExW,"AddFontResourceExW");
   function RemoveFontResourceExA(
      name : LPCSTR;
      fl : DWORD;
      pdv : PVOID
   ) return BOOL;
   pragma import (Cpp,RemoveFontResourceExA,"RemoveFontResourceExA");
   function RemoveFontResourceExW(
      name : LPCWSTR;
      fl : DWORD;
      pdv : PVOID
   ) return BOOL;
   pragma import (Cpp,RemoveFontResourceExW,"RemoveFontResourceExW");
   function AddFontMemResourceEx(
      pFileView : PVOID;
      cjSize : DWORD;
      pvResrved : PVOID;
      pNumFonts : access DWORD
   ) return HANDLE;
   pragma import (Cpp,AddFontMemResourceEx,"AddFontMemResourceEx");
   function RemoveFontMemResourceEx(
      h : HANDLE
   ) return BOOL;
   pragma import (Cpp,RemoveFontMemResourceEx,"RemoveFontMemResourceEx");
   type tagAXISINFOA_axAxisName_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type tagAXISINFOA is record
      axMinValue : LONG;
      axMaxValue : LONG;
      axAxisName : tagAXISINFOA_axAxisName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagAXISINFOA);
   for tagAXISINFOA use record
      axMinValue at 0 range 0..31;
      axMaxValue at 0 range 32..63;
      axAxisName at 0 range 64..191;
   end record;
   for tagAXISINFOA'Size use 192;
   for tagAXISINFOA'Alignment use 4;
   subtype AXISINFOA is tagAXISINFOA;
   type PAXISINFOA is access all tagAXISINFOA;
   type LPAXISINFOA is access all tagAXISINFOA;
   type tagAXISINFOW_axAxisName_Array is array(1..16) of WCHAR; -- Auto Generated Dependancy
   type tagAXISINFOW is record
      axMinValue : LONG;
      axMaxValue : LONG;
      axAxisName : tagAXISINFOW_axAxisName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagAXISINFOW);
   for tagAXISINFOW use record
      axMinValue at 0 range 0..31;
      axMaxValue at 0 range 32..63;
      axAxisName at 0 range 64..319;
   end record;
   for tagAXISINFOW'Size use 320;
   for tagAXISINFOW'Alignment use 4;
   subtype AXISINFOW is tagAXISINFOW;
   type PAXISINFOW is access all tagAXISINFOW;
   type LPAXISINFOW is access all tagAXISINFOW;
   subtype AXISINFO is AXISINFOA;
   subtype PAXISINFO is PAXISINFOA;
   subtype LPAXISINFO is LPAXISINFOA;
   type tagAXESLISTA_axlAxisInfo_Array is array(1..16) of AXISINFOA; -- Auto Generated Dependancy
   type tagAXESLISTA is record
      axlReserved : DWORD;
      axlNumAxes : DWORD;
      axlAxisInfo : tagAXESLISTA_axlAxisInfo_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagAXESLISTA);
   for tagAXESLISTA use record
      axlReserved at 0 range 0..31;
      axlNumAxes at 0 range 32..63;
      axlAxisInfo at 0 range 64..3135;
   end record;
   for tagAXESLISTA'Size use 3136;
   for tagAXESLISTA'Alignment use 4;
   subtype AXESLISTA is tagAXESLISTA;
   type PAXESLISTA is access all tagAXESLISTA;
   type LPAXESLISTA is access all tagAXESLISTA;
   type tagAXESLISTW_axlAxisInfo_Array is array(1..16) of AXISINFOW; -- Auto Generated Dependancy
   type tagAXESLISTW is record
      axlReserved : DWORD;
      axlNumAxes : DWORD;
      axlAxisInfo : tagAXESLISTW_axlAxisInfo_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagAXESLISTW);
   for tagAXESLISTW use record
      axlReserved at 0 range 0..31;
      axlNumAxes at 0 range 32..63;
      axlAxisInfo at 0 range 64..5183;
   end record;
   for tagAXESLISTW'Size use 5184;
   for tagAXESLISTW'Alignment use 4;
   subtype AXESLISTW is tagAXESLISTW;
   type PAXESLISTW is access all tagAXESLISTW;
   type LPAXESLISTW is access all tagAXESLISTW;
   subtype AXESLIST is AXESLISTA;
   subtype PAXESLIST is PAXESLISTA;
   subtype LPAXESLIST is LPAXESLISTA;
   type tagENUMLOGFONTEXDVA is record
      elfEnumLogfontEx : ENUMLOGFONTEXA;
      elfDesignVector : DESIGNVECTOR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagENUMLOGFONTEXDVA);
   for tagENUMLOGFONTEXDVA use record
      elfEnumLogfontEx at 0 range 0..1503;
      elfDesignVector at 0 range 1504..2079;
   end record;
   for tagENUMLOGFONTEXDVA'Size use 2080;
   for tagENUMLOGFONTEXDVA'Alignment use 4;
   subtype ENUMLOGFONTEXDVA is tagENUMLOGFONTEXDVA;
   type PENUMLOGFONTEXDVA is access all tagENUMLOGFONTEXDVA;
   type LPENUMLOGFONTEXDVA is access all tagENUMLOGFONTEXDVA;
   type tagENUMLOGFONTEXDVW is record
      elfEnumLogfontEx : ENUMLOGFONTEXW;
      elfDesignVector : DESIGNVECTOR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagENUMLOGFONTEXDVW);
   for tagENUMLOGFONTEXDVW use record
      elfEnumLogfontEx at 0 range 0..2783;
      elfDesignVector at 0 range 2784..3359;
   end record;
   for tagENUMLOGFONTEXDVW'Size use 3360;
   for tagENUMLOGFONTEXDVW'Alignment use 4;
   subtype ENUMLOGFONTEXDVW is tagENUMLOGFONTEXDVW;
   type PENUMLOGFONTEXDVW is access all tagENUMLOGFONTEXDVW;
   type LPENUMLOGFONTEXDVW is access all tagENUMLOGFONTEXDVW;
   subtype ENUMLOGFONTEXDV is ENUMLOGFONTEXDVA;
   subtype PENUMLOGFONTEXDV is PENUMLOGFONTEXDVA;
   subtype LPENUMLOGFONTEXDV is LPENUMLOGFONTEXDVA;
   function CreateFontIndirectExA(
      param1 : access constant ENUMLOGFONTEXDVA
   ) return HFONT;
   pragma import (Cpp,CreateFontIndirectExA,"CreateFontIndirectExA");
   function CreateFontIndirectExW(
      param1 : access constant ENUMLOGFONTEXDVW
   ) return HFONT;
   pragma import (Cpp,CreateFontIndirectExW,"CreateFontIndirectExW");
   type tagENUMTEXTMETRICA is record
      etmNewTextMetricEx : NEWTEXTMETRICEXA;
      etmAxesList : AXESLISTA;
   end record;
   pragma Convention (C_Pass_By_Copy,tagENUMTEXTMETRICA);
   for tagENUMTEXTMETRICA use record
      etmNewTextMetricEx at 0 range 0..767;
      etmAxesList at 0 range 768..3903;
   end record;
   for tagENUMTEXTMETRICA'Size use 3904;
   for tagENUMTEXTMETRICA'Alignment use 4;
   subtype ENUMTEXTMETRICA is tagENUMTEXTMETRICA;
   type PENUMTEXTMETRICA is access all tagENUMTEXTMETRICA;
   type LPENUMTEXTMETRICA is access all tagENUMTEXTMETRICA;
   type tagENUMTEXTMETRICW is record
      etmNewTextMetricEx : NEWTEXTMETRICEXW;
      etmAxesList : AXESLISTW;
   end record;
   pragma Convention (C_Pass_By_Copy,tagENUMTEXTMETRICW);
   for tagENUMTEXTMETRICW use record
      etmNewTextMetricEx at 0 range 0..799;
      etmAxesList at 0 range 800..5983;
   end record;
   for tagENUMTEXTMETRICW'Size use 5984;
   for tagENUMTEXTMETRICW'Alignment use 4;
   subtype ENUMTEXTMETRICW is tagENUMTEXTMETRICW;
   type PENUMTEXTMETRICW is access all tagENUMTEXTMETRICW;
   type LPENUMTEXTMETRICW is access all tagENUMTEXTMETRICW;
   subtype ENUMTEXTMETRIC is ENUMTEXTMETRICA;
   subtype PENUMTEXTMETRIC is PENUMTEXTMETRICA;
   subtype LPENUMTEXTMETRIC is LPENUMTEXTMETRICA;
   function GetViewportExtEx(
      hdc_x : HDC;
      lpsize_x : LPSIZE
   ) return BOOL;
   pragma import (Cpp,GetViewportExtEx,"GetViewportExtEx");
   function GetViewportOrgEx(
      hdc_x : HDC;
      lppoint_x : LPPOINT
   ) return BOOL;
   pragma import (Cpp,GetViewportOrgEx,"GetViewportOrgEx");
   function GetWindowExtEx(
      hdc_x : HDC;
      lpsize_x : LPSIZE
   ) return BOOL;
   pragma import (Cpp,GetWindowExtEx,"GetWindowExtEx");
   function GetWindowOrgEx(
      hdc_x : HDC;
      lppoint_x : LPPOINT
   ) return BOOL;
   pragma import (Cpp,GetWindowOrgEx,"GetWindowOrgEx");
   function IntersectClipRect(
      hdc_x : HDC;
      left : Interfaces.C.Int;
      top : Interfaces.C.Int;
      right : Interfaces.C.Int;
      bottom : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,IntersectClipRect,"IntersectClipRect");
   function InvertRgn(
      hdc_x : HDC;
      hrgn_x : HRGN
   ) return BOOL;
   pragma import (Cpp,InvertRgn,"InvertRgn");
   function LineDDA(
      xStart : Interfaces.C.Int;
      yStart : Interfaces.C.Int;
      xEnd : Interfaces.C.Int;
      yEnd : Interfaces.C.Int;
      lpProc : LINEDDAPROC;
      data : LPARAM
   ) return BOOL;
   pragma import (Cpp,LineDDA,"LineDDA");
   function LineTo(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,LineTo,"LineTo");
   function MaskBlt(
      hdcDest : HDC;
      xDest : Interfaces.C.Int;
      yDest : Interfaces.C.Int;
      width : Interfaces.C.Int;
      height : Interfaces.C.Int;
      hdcSrc : HDC;
      xSrc : Interfaces.C.Int;
      ySrc : Interfaces.C.Int;
      hbmMask : HBITMAP;
      xMask : Interfaces.C.Int;
      yMask : Interfaces.C.Int;
      rop : DWORD
   ) return BOOL;
   pragma import (Cpp,MaskBlt,"MaskBlt");
   function PlgBlt(
      hdcDest : HDC;
      lpPoint_x : access constant POINT;
      hdcSrc : HDC;
      xSrc : Interfaces.C.Int;
      ySrc : Interfaces.C.Int;
      width : Interfaces.C.Int;
      height : Interfaces.C.Int;
      hbmMask : HBITMAP;
      xMask : Interfaces.C.Int;
      yMask : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,PlgBlt,"PlgBlt");
   function OffsetClipRgn(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,OffsetClipRgn,"OffsetClipRgn");
   function OffsetRgn(
      hrgn_x : HRGN;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,OffsetRgn,"OffsetRgn");
   function PatBlt(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      w : Interfaces.C.Int;
      h : Interfaces.C.Int;
      rop : DWORD
   ) return BOOL;
   pragma import (Cpp,PatBlt,"PatBlt");
   function Pie(
      hdc_x : HDC;
      left : Interfaces.C.Int;
      top : Interfaces.C.Int;
      right : Interfaces.C.Int;
      bottom : Interfaces.C.Int;
      xr1 : Interfaces.C.Int;
      yr1 : Interfaces.C.Int;
      xr2 : Interfaces.C.Int;
      yr2 : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,Pie,"Pie");
   function PlayMetaFile(
      hdc_x : HDC;
      hmf : HMETAFILE
   ) return BOOL;
   pragma import (Cpp,PlayMetaFile,"PlayMetaFile");
   function PaintRgn(
      hdc_x : HDC;
      hrgn_x : HRGN
   ) return BOOL;
   pragma import (Cpp,PaintRgn,"PaintRgn");
   function PolyPolygon(
      hdc_x : HDC;
      apt : access constant POINT;
      asz : access constant INT;
      csz : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,PolyPolygon,"PolyPolygon");
   function PtInRegion(
      hrgn_x : HRGN;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,PtInRegion,"PtInRegion");
   function PtVisible(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,PtVisible,"PtVisible");
   function RectInRegion(
      hrgn_x : HRGN;
      lprect_x : access constant RECT
   ) return BOOL;
   pragma import (Cpp,RectInRegion,"RectInRegion");
   function RectVisible(
      hdc_x : HDC;
      lprect_x : access constant RECT
   ) return BOOL;
   pragma import (Cpp,RectVisible,"RectVisible");
   function Rectangle(
      hdc_x : HDC;
      left : Interfaces.C.Int;
      top : Interfaces.C.Int;
      right : Interfaces.C.Int;
      bottom : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,Rectangle,"Rectangle");
   function RestoreDC(
      hdc_x : HDC;
      nSavedDC : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,RestoreDC,"RestoreDC");
   function ResetDCA(
      hdc_x : HDC;
      lpdm : access constant DEVMODEA
   ) return HDC;
   pragma import (Cpp,ResetDCA,"ResetDCA");
   function ResetDCW(
      hdc_x : HDC;
      lpdm : access constant DEVMODEW
   ) return HDC;
   pragma import (Cpp,ResetDCW,"ResetDCW");
   function RealizePalette(
      hdc_x : HDC
   ) return UINT;
   pragma import (Cpp,RealizePalette,"RealizePalette");
   function RemoveFontResourceA(
      lpFileName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,RemoveFontResourceA,"RemoveFontResourceA");
   function RemoveFontResourceW(
      lpFileName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,RemoveFontResourceW,"RemoveFontResourceW");
   function RoundRect(
      hdc_x : HDC;
      left : Interfaces.C.Int;
      top : Interfaces.C.Int;
      right : Interfaces.C.Int;
      bottom : Interfaces.C.Int;
      width : Interfaces.C.Int;
      height : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,RoundRect,"RoundRect");
   function ResizePalette(
      hpal : HPALETTE;
      n : UINT
   ) return BOOL;
   pragma import (Cpp,ResizePalette,"ResizePalette");
   function SaveDC(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,SaveDC,"SaveDC");
   function SelectClipRgn(
      hdc_x : HDC;
      hrgn_x : HRGN
   ) return Interfaces.C.Int;
   pragma import (Cpp,SelectClipRgn,"SelectClipRgn");
   function ExtSelectClipRgn(
      hdc_x : HDC;
      hrgn_x : HRGN;
      mode : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,ExtSelectClipRgn,"ExtSelectClipRgn");
   function SetMetaRgn(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetMetaRgn,"SetMetaRgn");
   function SelectObject(
      hdc_x : HDC;
      h : HGDIOBJ
   ) return HGDIOBJ;
   pragma import (Cpp,SelectObject,"SelectObject");
   function SelectPalette(
      hdc_x : HDC;
      hPal : HPALETTE;
      bForceBkgd : BOOL
   ) return HPALETTE;
   pragma import (Cpp,SelectPalette,"SelectPalette");
   function SetBkColor(
      hdc_x : HDC;
      color : COLORREF
   ) return COLORREF;
   pragma import (Cpp,SetBkColor,"SetBkColor");
   function SetDCBrushColor(
      hdc_x : HDC;
      color : COLORREF
   ) return COLORREF;
   pragma import (Cpp,SetDCBrushColor,"SetDCBrushColor");
   function SetDCPenColor(
      hdc_x : HDC;
      color : COLORREF
   ) return COLORREF;
   pragma import (Cpp,SetDCPenColor,"SetDCPenColor");
   function SetBkMode(
      hdc_x : HDC;
      mode : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetBkMode,"SetBkMode");
   function SetBitmapBits(
      hbm : HBITMAP;
      cb : DWORD;
      pvBits : access Void
   ) return LONG;
   pragma import (Cpp,SetBitmapBits,"SetBitmapBits");
   function SetBoundsRect(
      hdc_x : HDC;
      lprect_x : access constant RECT;
      flags : UINT
   ) return UINT;
   pragma import (Cpp,SetBoundsRect,"SetBoundsRect");
   function SetDIBits(
      hdc_x : HDC;
      hbm : HBITMAP;
      start : UINT;
      cLines : UINT;
      lpBits : access Void;
      lpbmi : access constant BITMAPINFO;
      ColorUse : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetDIBits,"SetDIBits");
   function SetDIBitsToDevice(
      hdc_x : HDC;
      xDest : Interfaces.C.Int;
      yDest : Interfaces.C.Int;
      w : DWORD;
      h : DWORD;
      xSrc : Interfaces.C.Int;
      ySrc : Interfaces.C.Int;
      StartScan : UINT;
      cLines : UINT;
      lpvBits : access Void;
      lpbmi : access constant BITMAPINFO;
      ColorUse : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetDIBitsToDevice,"SetDIBitsToDevice");
   function SetMapperFlags(
      hdc_x : HDC;
      flags : DWORD
   ) return DWORD;
   pragma import (Cpp,SetMapperFlags,"SetMapperFlags");
   function SetGraphicsMode(
      hdc_x : HDC;
      iMode : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetGraphicsMode,"SetGraphicsMode");
   function SetMapMode(
      hdc_x : HDC;
      iMode : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetMapMode,"SetMapMode");
   function SetLayout(
      hdc_x : HDC;
      l : DWORD
   ) return DWORD;
   pragma import (Cpp,SetLayout,"SetLayout");
   function GetLayout(
      hdc_x : HDC
   ) return DWORD;
   pragma import (Cpp,GetLayout,"GetLayout");
   function SetMetaFileBitsEx(
      cbBuffer : UINT;
      lpData : access constant BYTE
   ) return HMETAFILE;
   pragma import (Cpp,SetMetaFileBitsEx,"SetMetaFileBitsEx");
   function SetPaletteEntries(
      hpal : HPALETTE;
      iStart : UINT;
      cEntries : UINT;
      pPalEntries : access constant PALETTEENTRY
   ) return UINT;
   pragma import (Cpp,SetPaletteEntries,"SetPaletteEntries");
   function SetPixel(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      color : COLORREF
   ) return COLORREF;
   pragma import (Cpp,SetPixel,"SetPixel");
   function SetPixelV(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      color : COLORREF
   ) return BOOL;
   pragma import (Cpp,SetPixelV,"SetPixelV");
   function SetPixelFormat(
      hdc_x : HDC;
      format : Interfaces.C.Int;
      ppfd : access constant PIXELFORMATDESCRIPTOR
   ) return BOOL;
   pragma import (Cpp,SetPixelFormat,"SetPixelFormat");
   function SetPolyFillMode(
      hdc_x : HDC;
      mode : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetPolyFillMode,"SetPolyFillMode");
   function StretchBlt_Func(
      hdcDest : HDC;
      xDest : Interfaces.C.Int;
      yDest : Interfaces.C.Int;
      wDest : Interfaces.C.Int;
      hDest : Interfaces.C.Int;
      hdcSrc : HDC;
      xSrc : Interfaces.C.Int;
      ySrc : Interfaces.C.Int;
      wSrc : Interfaces.C.Int;
      hSrc : Interfaces.C.Int;
      rop : DWORD
   ) return BOOL;
   pragma import (Cpp,StretchBlt_Func,"StretchBlt");
   function SetRectRgn(
      hrgn_x : HRGN;
      left : Interfaces.C.Int;
      top : Interfaces.C.Int;
      right : Interfaces.C.Int;
      bottom : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,SetRectRgn,"SetRectRgn");
   function StretchDIBits(
      hdc_x : HDC;
      xDest : Interfaces.C.Int;
      yDest : Interfaces.C.Int;
      DestWidth : Interfaces.C.Int;
      DestHeight : Interfaces.C.Int;
      xSrc : Interfaces.C.Int;
      ySrc : Interfaces.C.Int;
      SrcWidth : Interfaces.C.Int;
      SrcHeight : Interfaces.C.Int;
      lpBits : access Void;
      lpbmi : access constant BITMAPINFO;
      iUsage : UINT;
      rop : DWORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,StretchDIBits,"StretchDIBits");
   function SetROP2(
      hdc_x : HDC;
      rop2 : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetROP2,"SetROP2");
   function SetStretchBltMode(
      hdc_x : HDC;
      mode : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetStretchBltMode,"SetStretchBltMode");
   function SetSystemPaletteUse(
      hdc_x : HDC;
      use_x : UINT
   ) return UINT;
   pragma import (Cpp,SetSystemPaletteUse,"SetSystemPaletteUse");
   function SetTextCharacterExtra(
      hdc_x : HDC;
      extra : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetTextCharacterExtra,"SetTextCharacterExtra");
   function SetTextColor(
      hdc_x : HDC;
      color : COLORREF
   ) return COLORREF;
   pragma import (Cpp,SetTextColor,"SetTextColor");
   function SetTextAlign(
      hdc_x : HDC;
      align : UINT
   ) return UINT;
   pragma import (Cpp,SetTextAlign,"SetTextAlign");
   function SetTextJustification(
      hdc_x : HDC;
      extra : Interfaces.C.Int;
      count : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,SetTextJustification,"SetTextJustification");
   function UpdateColors(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,UpdateColors,"UpdateColors");
   subtype COLOR16 is USHORT;
   type TRIVERTEX_x is record
      x : LONG;
      y : LONG;
      Red : COLOR16;
      Green : COLOR16;
      Blue : COLOR16;
      Alpha : COLOR16;
   end record;
   pragma Convention (C_Pass_By_Copy,TRIVERTEX_x);
   for TRIVERTEX_x use record
      x at 0 range 0..31;
      y at 0 range 32..63;
      Red at 0 range 64..79;
      Green at 0 range 80..95;
      Blue at 0 range 96..111;
      Alpha at 0 range 112..127;
   end record;
   for TRIVERTEX_x'Size use 128;
   for TRIVERTEX_x'Alignment use 4;
   subtype TRIVERTEX is TRIVERTEX_x;
   type PTRIVERTEX is access all TRIVERTEX_x;
   type LPTRIVERTEX is access all TRIVERTEX_x;
   type GRADIENT_TRIANGLE_x is record
      Vertex1 : ULONG;
      Vertex2 : ULONG;
      Vertex3 : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,GRADIENT_TRIANGLE_x);
   for GRADIENT_TRIANGLE_x use record
      Vertex1 at 0 range 0..31;
      Vertex2 at 0 range 32..63;
      Vertex3 at 0 range 64..95;
   end record;
   for GRADIENT_TRIANGLE_x'Size use 96;
   for GRADIENT_TRIANGLE_x'Alignment use 4;
   subtype GRADIENT_TRIANGLE is GRADIENT_TRIANGLE_x;
   type PGRADIENT_TRIANGLE is access all GRADIENT_TRIANGLE_x;
   type LPGRADIENT_TRIANGLE is access all GRADIENT_TRIANGLE_x;
   type GRADIENT_RECT_x is record
      UpperLeft : ULONG;
      LowerRight : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,GRADIENT_RECT_x);
   for GRADIENT_RECT_x use record
      UpperLeft at 0 range 0..31;
      LowerRight at 0 range 32..63;
   end record;
   for GRADIENT_RECT_x'Size use 64;
   for GRADIENT_RECT_x'Alignment use 4;
   subtype GRADIENT_RECT is GRADIENT_RECT_x;
   type PGRADIENT_RECT is access all GRADIENT_RECT_x;
   type LPGRADIENT_RECT is access all GRADIENT_RECT_x;
   type BLENDFUNCTION_x is record
      BlendOp : BYTE;
      BlendFlags : BYTE;
      SourceConstantAlpha : BYTE;
      AlphaFormat : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,BLENDFUNCTION_x);
   for BLENDFUNCTION_x use record
      BlendOp at 0 range 0..7;
      BlendFlags at 0 range 8..15;
      SourceConstantAlpha at 0 range 16..23;
      AlphaFormat at 0 range 24..31;
   end record;
   for BLENDFUNCTION_x'Size use 32;
   for BLENDFUNCTION_x'Alignment use 1;
   subtype BLENDFUNCTION is BLENDFUNCTION_x;
   type PBLENDFUNCTION is access all BLENDFUNCTION_x;
   function AlphaBlend(
      hdcDest : HDC;
      xoriginDest : Interfaces.C.Int;
      yoriginDest : Interfaces.C.Int;
      wDest : Interfaces.C.Int;
      hDest : Interfaces.C.Int;
      hdcSrc : HDC;
      xoriginSrc : Interfaces.C.Int;
      yoriginSrc : Interfaces.C.Int;
      wSrc : Interfaces.C.Int;
      hSrc : Interfaces.C.Int;
      ftn : BLENDFUNCTION
   ) return BOOL;
   pragma import (Cpp,AlphaBlend,"AlphaBlend");
   function TransparentBlt(
      hdcDest : HDC;
      xoriginDest : Interfaces.C.Int;
      yoriginDest : Interfaces.C.Int;
      wDest : Interfaces.C.Int;
      hDest : Interfaces.C.Int;
      hdcSrc : HDC;
      xoriginSrc : Interfaces.C.Int;
      yoriginSrc : Interfaces.C.Int;
      wSrc : Interfaces.C.Int;
      hSrc : Interfaces.C.Int;
      crTransparent : UINT
   ) return BOOL;
   pragma import (Cpp,TransparentBlt,"TransparentBlt");
   function GradientFill(
      hdc_x : HDC;
      pVertex : PTRIVERTEX;
      nVertex : ULONG;
      pMesh : PVOID;
      nMesh : ULONG;
      ulMode : ULONG
   ) return BOOL;
   pragma import (Cpp,GradientFill,"GradientFill");
   function GdiAlphaBlend(
      hdcDest : HDC;
      xoriginDest : Interfaces.C.Int;
      yoriginDest : Interfaces.C.Int;
      wDest : Interfaces.C.Int;
      hDest : Interfaces.C.Int;
      hdcSrc : HDC;
      xoriginSrc : Interfaces.C.Int;
      yoriginSrc : Interfaces.C.Int;
      wSrc : Interfaces.C.Int;
      hSrc : Interfaces.C.Int;
      ftn : BLENDFUNCTION
   ) return BOOL;
   pragma import (Cpp,GdiAlphaBlend,"GdiAlphaBlend");
   function GdiTransparentBlt(
      hdcDest : HDC;
      xoriginDest : Interfaces.C.Int;
      yoriginDest : Interfaces.C.Int;
      wDest : Interfaces.C.Int;
      hDest : Interfaces.C.Int;
      hdcSrc : HDC;
      xoriginSrc : Interfaces.C.Int;
      yoriginSrc : Interfaces.C.Int;
      wSrc : Interfaces.C.Int;
      hSrc : Interfaces.C.Int;
      crTransparent : UINT
   ) return BOOL;
   pragma import (Cpp,GdiTransparentBlt,"GdiTransparentBlt");
   function GdiGradientFill(
      hdc_x : HDC;
      pVertex : PTRIVERTEX;
      nVertex : ULONG;
      pMesh : PVOID;
      nCount : ULONG;
      ulMode : ULONG
   ) return BOOL;
   pragma import (Cpp,GdiGradientFill,"GdiGradientFill");
   function PlayMetaFileRecord(
      hdc_x : HDC;
      lpHandleTable_x : LPHANDLETABLE;
      lpMR : LPMETARECORD;
      noObjs : UINT
   ) return BOOL;
   pragma import (Cpp,PlayMetaFileRecord,"PlayMetaFileRecord");
   type MFENUMPROC is access function (p1 : HDC ; p2 : access HANDLETABLE ; p3 : access METARECORD ; p4 : int ; p5 : LPARAM) return int; -- int (HDC, HANDLETABLE *, METARECORD *, int, LPARAM)
   pragma Convention(C,MFENUMPROC);
   function EnumMetaFile(
      hdc_x : HDC;
      hmf : HMETAFILE;
      proc_x : MFENUMPROC;
      param : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumMetaFile,"EnumMetaFile");
   type ENHMFENUMPROC is access function (p1 : HDC ; p2 : access HANDLETABLE ; p3 : access ENHMETARECORD ; p4 : int ; p5 : LPARAM) return int; -- int (HDC, HANDLETABLE *, const ENHMETARECORD *, int, LPARAM)
   pragma Convention(C,ENHMFENUMPROC);
   function CloseEnhMetaFile(
      hdc_x : HDC
   ) return HENHMETAFILE;
   pragma import (Cpp,CloseEnhMetaFile,"CloseEnhMetaFile");
   function CopyEnhMetaFileA(
      hEnh : HENHMETAFILE;
      lpFileName : LPCSTR
   ) return HENHMETAFILE;
   pragma import (Cpp,CopyEnhMetaFileA,"CopyEnhMetaFileA");
   function CopyEnhMetaFileW(
      hEnh : HENHMETAFILE;
      lpFileName : LPCWSTR
   ) return HENHMETAFILE;
   pragma import (Cpp,CopyEnhMetaFileW,"CopyEnhMetaFileW");
   function CreateEnhMetaFileA(
      hdc_x : HDC;
      lpFilename : LPCSTR;
      lprc : access constant RECT;
      lpDesc : LPCSTR
   ) return HDC;
   pragma import (Cpp,CreateEnhMetaFileA,"CreateEnhMetaFileA");
   function CreateEnhMetaFileW(
      hdc_x : HDC;
      lpFilename : LPCWSTR;
      lprc : access constant RECT;
      lpDesc : LPCWSTR
   ) return HDC;
   pragma import (Cpp,CreateEnhMetaFileW,"CreateEnhMetaFileW");
   function DeleteEnhMetaFile(
      hmf : HENHMETAFILE
   ) return BOOL;
   pragma import (Cpp,DeleteEnhMetaFile,"DeleteEnhMetaFile");
   function EnumEnhMetaFile(
      hdc_x : HDC;
      hmf : HENHMETAFILE;
      proc_x : ENHMFENUMPROC;
      param : LPVOID;
      lpRect_x : access constant RECT
   ) return BOOL;
   pragma import (Cpp,EnumEnhMetaFile,"EnumEnhMetaFile");
   function GetEnhMetaFileA(
      lpName : LPCSTR
   ) return HENHMETAFILE;
   pragma import (Cpp,GetEnhMetaFileA,"GetEnhMetaFileA");
   function GetEnhMetaFileW(
      lpName : LPCWSTR
   ) return HENHMETAFILE;
   pragma import (Cpp,GetEnhMetaFileW,"GetEnhMetaFileW");
   function GetEnhMetaFileBits(
      hEMF : HENHMETAFILE;
      nSize : UINT;
      lpData : LPBYTE
   ) return UINT;
   pragma import (Cpp,GetEnhMetaFileBits,"GetEnhMetaFileBits");
   function GetEnhMetaFileDescriptionA(
      hemf : HENHMETAFILE;
      cchBuffer : UINT;
      lpDescription : LPSTR
   ) return UINT;
   pragma import (Cpp,GetEnhMetaFileDescriptionA,"GetEnhMetaFileDescriptionA");
   function GetEnhMetaFileDescriptionW(
      hemf : HENHMETAFILE;
      cchBuffer : UINT;
      lpDescription : LPWSTR
   ) return UINT;
   pragma import (Cpp,GetEnhMetaFileDescriptionW,"GetEnhMetaFileDescriptionW");
   function GetEnhMetaFileHeader(
      hemf : HENHMETAFILE;
      nSize : UINT;
      lpEnhMetaHeader_x : LPENHMETAHEADER
   ) return UINT;
   pragma import (Cpp,GetEnhMetaFileHeader,"GetEnhMetaFileHeader");
   function GetEnhMetaFilePaletteEntries(
      hemf : HENHMETAFILE;
      nNumEntries : UINT;
      lpPaletteEntries : LPPALETTEENTRY
   ) return UINT;
   pragma import (Cpp,GetEnhMetaFilePaletteEntries,"GetEnhMetaFilePaletteEntries");
   function GetEnhMetaFilePixelFormat(
      hemf : HENHMETAFILE;
      cbBuffer : UINT;
      ppfd : access PIXELFORMATDESCRIPTOR
   ) return UINT;
   pragma import (Cpp,GetEnhMetaFilePixelFormat,"GetEnhMetaFilePixelFormat");
   function GetWinMetaFileBits(
      hemf : HENHMETAFILE;
      cbData16 : UINT;
      pData16 : LPBYTE;
      iMapMode : INT;
      hdcRef : HDC
   ) return UINT;
   pragma import (Cpp,GetWinMetaFileBits,"GetWinMetaFileBits");
   function PlayEnhMetaFile(
      hdc_x : HDC;
      hmf : HENHMETAFILE;
      lprect_x : access constant RECT
   ) return BOOL;
   pragma import (Cpp,PlayEnhMetaFile,"PlayEnhMetaFile");
   function PlayEnhMetaFileRecord(
      hdc_x : HDC;
      pht : LPHANDLETABLE;
      pmr : access constant ENHMETARECORD;
      cht : UINT
   ) return BOOL;
   pragma import (Cpp,PlayEnhMetaFileRecord,"PlayEnhMetaFileRecord");
   function SetEnhMetaFileBits(
      nSize : UINT;
      pb : access constant BYTE
   ) return HENHMETAFILE;
   pragma import (Cpp,SetEnhMetaFileBits,"SetEnhMetaFileBits");
   function SetWinMetaFileBits(
      nSize : UINT;
      lpMeta16Data : access constant BYTE;
      hdcRef : HDC;
      lpMFP : access constant METAFILEPICT
   ) return HENHMETAFILE;
   pragma import (Cpp,SetWinMetaFileBits,"SetWinMetaFileBits");
   function GdiComment(
      hdc_x : HDC;
      nSize : UINT;
      lpData : access constant BYTE
   ) return BOOL;
   pragma import (Cpp,GdiComment,"GdiComment");
   function GetTextMetricsA(
      hdc_x : HDC;
      lptm : LPTEXTMETRICA
   ) return BOOL;
   pragma import (Cpp,GetTextMetricsA,"GetTextMetricsA");
   function GetTextMetricsW(
      hdc_x : HDC;
      lptm : LPTEXTMETRICW
   ) return BOOL;
   pragma import (Cpp,GetTextMetricsW,"GetTextMetricsW");
   type tagDIBSECTION_dsBitfields_Array is array(1..3) of DWORD; -- Auto Generated Dependancy
   type tagDIBSECTION is record
      dsBm : BITMAP;
      dsBmih : BITMAPINFOHEADER;
      dsBitfields : tagDIBSECTION_dsBitfields_Array;
      dshSection : HANDLE;
      dsOffset : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDIBSECTION);
   for tagDIBSECTION use record
      dsBm at 0 range 0..255;
      dsBmih at 0 range 256..575;
      dsBitfields at 0 range 576..671;
      dshSection at 0 range 704..767;
      dsOffset at 0 range 768..799;
   end record;
   for tagDIBSECTION'Size use 832;
   for tagDIBSECTION'Alignment use 8;
   subtype DIBSECTION is tagDIBSECTION;
   type LPDIBSECTION is access all tagDIBSECTION;
   type PDIBSECTION is access all tagDIBSECTION;
   function AngleArc(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      r : DWORD;
      StartAngle : FLOAT;
      SweepAngle : FLOAT
   ) return BOOL;
   pragma import (Cpp,AngleArc,"AngleArc");
   function PolyPolyline(
      hdc_x : HDC;
      apt : access constant POINT;
      asz : access constant DWORD;
      csz : DWORD
   ) return BOOL;
   pragma import (Cpp,PolyPolyline,"PolyPolyline");
   function GetWorldTransform(
      hdc_x : HDC;
      lpxf : LPXFORM
   ) return BOOL;
   pragma import (Cpp,GetWorldTransform,"GetWorldTransform");
   function SetWorldTransform(
      hdc_x : HDC;
      lpxf : access constant XFORM
   ) return BOOL;
   pragma import (Cpp,SetWorldTransform,"SetWorldTransform");
   function ModifyWorldTransform(
      hdc_x : HDC;
      lpxf : access constant XFORM;
      mode : DWORD
   ) return BOOL;
   pragma import (Cpp,ModifyWorldTransform,"ModifyWorldTransform");
   function CombineTransform(
      lpxfOut : LPXFORM;
      lpxf1 : access constant XFORM;
      lpxf2 : access constant XFORM
   ) return BOOL;
   pragma import (Cpp,CombineTransform,"CombineTransform");
   function CreateDIBSection(
      hdc_x : HDC;
      pbmi : access constant BITMAPINFO;
      usage : UINT;
      ppvBits : access LPVOID;
      hSection : HANDLE;
      offset : DWORD
   ) return HBITMAP;
   pragma import (Cpp,CreateDIBSection,"CreateDIBSection");
   function GetDIBColorTable(
      hdc_x : HDC;
      iStart : UINT;
      cEntries : UINT;
      prgbq : access RGBQUAD
   ) return UINT;
   pragma import (Cpp,GetDIBColorTable,"GetDIBColorTable");
   function SetDIBColorTable(
      hdc_x : HDC;
      iStart : UINT;
      cEntries : UINT;
      prgbq : access constant RGBQUAD
   ) return UINT;
   pragma import (Cpp,SetDIBColorTable,"SetDIBColorTable");
   type tagCOLORADJUSTMENT is record
      caSize : WORD;
      caFlags : WORD;
      caIlluminantIndex : WORD;
      caRedGamma : WORD;
      caGreenGamma : WORD;
      caBlueGamma : WORD;
      caReferenceBlack : WORD;
      caReferenceWhite : WORD;
      caContrast : SHORT;
      caBrightness : SHORT;
      caColorfulness : SHORT;
      caRedGreenTint : SHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCOLORADJUSTMENT);
   for tagCOLORADJUSTMENT use record
      caSize at 0 range 0..15;
      caFlags at 0 range 16..31;
      caIlluminantIndex at 0 range 32..47;
      caRedGamma at 0 range 48..63;
      caGreenGamma at 0 range 64..79;
      caBlueGamma at 0 range 80..95;
      caReferenceBlack at 0 range 96..111;
      caReferenceWhite at 0 range 112..127;
      caContrast at 0 range 128..143;
      caBrightness at 0 range 144..159;
      caColorfulness at 0 range 160..175;
      caRedGreenTint at 0 range 176..191;
   end record;
   for tagCOLORADJUSTMENT'Size use 192;
   for tagCOLORADJUSTMENT'Alignment use 2;
   subtype COLORADJUSTMENT is tagCOLORADJUSTMENT;
   type PCOLORADJUSTMENT is access all tagCOLORADJUSTMENT;
   type LPCOLORADJUSTMENT is access all tagCOLORADJUSTMENT;
   function SetColorAdjustment(
      hdc_x : HDC;
      lpca : access constant COLORADJUSTMENT
   ) return BOOL;
   pragma import (Cpp,SetColorAdjustment,"SetColorAdjustment");
   function GetColorAdjustment(
      hdc_x : HDC;
      lpca : LPCOLORADJUSTMENT
   ) return BOOL;
   pragma import (Cpp,GetColorAdjustment,"GetColorAdjustment");
   function CreateHalftonePalette(
      hdc_x : HDC
   ) return HPALETTE;
   pragma import (Cpp,CreateHalftonePalette,"CreateHalftonePalette");
   type ABORTPROC is access function (p1 : HDC ; p2 : int) return BOOL; -- BOOL (HDC, int)
   pragma Convention(C,ABORTPROC);
   type DOCINFOA_x is record
      cbSize : Interfaces.C.Int;
      lpszDocName : LPCSTR;
      lpszOutput : LPCSTR;
      lpszDatatype : LPCSTR;
      fwType : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DOCINFOA_x);
   for DOCINFOA_x use record
      cbSize at 0 range 0..31;
      lpszDocName at 0 range 64..127;
      lpszOutput at 0 range 128..191;
      lpszDatatype at 0 range 192..255;
      fwType at 0 range 256..287;
   end record;
   for DOCINFOA_x'Size use 320;
   for DOCINFOA_x'Alignment use 8;
   subtype DOCINFOA is DOCINFOA_x;
   type LPDOCINFOA is access all DOCINFOA_x;
   type DOCINFOW_x is record
      cbSize : Interfaces.C.Int;
      lpszDocName : LPCWSTR;
      lpszOutput : LPCWSTR;
      lpszDatatype : LPCWSTR;
      fwType : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DOCINFOW_x);
   for DOCINFOW_x use record
      cbSize at 0 range 0..31;
      lpszDocName at 0 range 64..127;
      lpszOutput at 0 range 128..191;
      lpszDatatype at 0 range 192..255;
      fwType at 0 range 256..287;
   end record;
   for DOCINFOW_x'Size use 320;
   for DOCINFOW_x'Alignment use 8;
   subtype DOCINFOW is DOCINFOW_x;
   type LPDOCINFOW is access all DOCINFOW_x;
   subtype DOCINFO is DOCINFOA;
   subtype LPDOCINFO is LPDOCINFOA;
   function StartDocA(
      hdc_x : HDC;
      lpdi : access constant DOCINFOA
   ) return Interfaces.C.Int;
   pragma import (Cpp,StartDocA,"StartDocA");
   function StartDocW(
      hdc_x : HDC;
      lpdi : access constant DOCINFOW
   ) return Interfaces.C.Int;
   pragma import (Cpp,StartDocW,"StartDocW");
   function EndDoc_Func(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,EndDoc_Func,"EndDoc");
   function StartPage(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,StartPage,"StartPage");
   function EndPage(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,EndPage,"EndPage");
   function AbortDoc_Func(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,AbortDoc_Func,"AbortDoc");
   function SetAbortProc_Func(
      hdc_x : HDC;
      proc_x : ABORTPROC
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetAbortProc_Func,"SetAbortProc");
   function AbortPath(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,AbortPath,"AbortPath");
   function ArcTo(
      hdc_x : HDC;
      left : Interfaces.C.Int;
      top : Interfaces.C.Int;
      right : Interfaces.C.Int;
      bottom : Interfaces.C.Int;
      xr1 : Interfaces.C.Int;
      yr1 : Interfaces.C.Int;
      xr2 : Interfaces.C.Int;
      yr2 : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,ArcTo,"ArcTo");
   function BeginPath(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,BeginPath,"BeginPath");
   function CloseFigure(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,CloseFigure,"CloseFigure");
   function EndPath(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,EndPath,"EndPath");
   function FillPath(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,FillPath,"FillPath");
   function FlattenPath(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,FlattenPath,"FlattenPath");
   function GetPath(
      hdc_x : HDC;
      apt : LPPOINT;
      aj : LPBYTE;
      cpt : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetPath,"GetPath");
   function PathToRegion(
      hdc_x : HDC
   ) return HRGN;
   pragma import (Cpp,PathToRegion,"PathToRegion");
   function PolyDraw(
      hdc_x : HDC;
      apt : access constant POINT;
      aj : access constant BYTE;
      cpt : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,PolyDraw,"PolyDraw");
   function SelectClipPath(
      hdc_x : HDC;
      mode : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,SelectClipPath,"SelectClipPath");
   function SetArcDirection(
      hdc_x : HDC;
      dir : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetArcDirection,"SetArcDirection");
   function SetMiterLimit_Func(
      hdc_x : HDC;
      limit : FLOAT;
      old : PFLOAT
   ) return BOOL;
   pragma import (Cpp,SetMiterLimit_Func,"SetMiterLimit");
   function StrokeAndFillPath(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,StrokeAndFillPath,"StrokeAndFillPath");
   function StrokePath(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,StrokePath,"StrokePath");
   function WidenPath(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,WidenPath,"WidenPath");
   function ExtCreatePen(
      iPenStyle : DWORD;
      cWidth : DWORD;
      plbrush : access constant LOGBRUSH;
      cStyle : DWORD;
      pstyle : access constant DWORD
   ) return HPEN;
   pragma import (Cpp,ExtCreatePen,"ExtCreatePen");
   function GetMiterLimit(
      hdc_x : HDC;
      plimit : PFLOAT
   ) return BOOL;
   pragma import (Cpp,GetMiterLimit,"GetMiterLimit");
   function GetArcDirection(
      hdc_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetArcDirection,"GetArcDirection");
   function GetObjectA(
      h : HANDLE;
      c : Interfaces.C.Int;
      pv : LPVOID
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetObjectA,"GetObjectA");
   function GetObjectW(
      h : HANDLE;
      c : Interfaces.C.Int;
      pv : LPVOID
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetObjectW,"GetObjectW");
   function MoveToEx(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      lppt : LPPOINT
   ) return BOOL;
   pragma import (Cpp,MoveToEx,"MoveToEx");
   function TextOutA(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      lpString : LPCSTR;
      c : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,TextOutA,"TextOutA");
   function TextOutW(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      lpString : LPCWSTR;
      c : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,TextOutW,"TextOutW");
   function ExtTextOutA(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      options : UINT;
      lprect_x : access constant RECT;
      lpString : LPCSTR;
      c : UINT;
      lpDx : access constant INT
   ) return BOOL;
   pragma import (Cpp,ExtTextOutA,"ExtTextOutA");
   function ExtTextOutW(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      options : UINT;
      lprect_x : access constant RECT;
      lpString : LPCWSTR;
      c : UINT;
      lpDx : access constant INT
   ) return BOOL;
   pragma import (Cpp,ExtTextOutW,"ExtTextOutW");
   function PolyTextOutA(
      hdc_x : HDC;
      ppt : access constant POLYTEXTA;
      nstrings : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,PolyTextOutA,"PolyTextOutA");
   function PolyTextOutW(
      hdc_x : HDC;
      ppt : access constant POLYTEXTW;
      nstrings : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,PolyTextOutW,"PolyTextOutW");
   function CreatePolygonRgn(
      pptl : access constant POINT;
      cPoint : Interfaces.C.Int;
      iMode : Interfaces.C.Int
   ) return HRGN;
   pragma import (Cpp,CreatePolygonRgn,"CreatePolygonRgn");
   function DPtoLP(
      hdc_x : HDC;
      lppt : LPPOINT;
      c : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,DPtoLP,"DPtoLP");
   function LPtoDP(
      hdc_x : HDC;
      lppt : LPPOINT;
      c : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,LPtoDP,"LPtoDP");
   function Polygon(
      hdc_x : HDC;
      apt : access constant POINT;
      cpt : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,Polygon,"Polygon");
   function Polyline(
      hdc_x : HDC;
      apt : access constant POINT;
      cpt : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,Polyline,"Polyline");
   function PolyBezier(
      hdc_x : HDC;
      apt : access constant POINT;
      cpt : DWORD
   ) return BOOL;
   pragma import (Cpp,PolyBezier,"PolyBezier");
   function PolyBezierTo(
      hdc_x : HDC;
      apt : access constant POINT;
      cpt : DWORD
   ) return BOOL;
   pragma import (Cpp,PolyBezierTo,"PolyBezierTo");
   function PolylineTo(
      hdc_x : HDC;
      apt : access constant POINT;
      cpt : DWORD
   ) return BOOL;
   pragma import (Cpp,PolylineTo,"PolylineTo");
   function SetViewportExtEx(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      lpsz : LPSIZE
   ) return BOOL;
   pragma import (Cpp,SetViewportExtEx,"SetViewportExtEx");
   function SetViewportOrgEx(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      lppt : LPPOINT
   ) return BOOL;
   pragma import (Cpp,SetViewportOrgEx,"SetViewportOrgEx");
   function SetWindowExtEx(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      lpsz : LPSIZE
   ) return BOOL;
   pragma import (Cpp,SetWindowExtEx,"SetWindowExtEx");
   function SetWindowOrgEx(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      lppt : LPPOINT
   ) return BOOL;
   pragma import (Cpp,SetWindowOrgEx,"SetWindowOrgEx");
   function OffsetViewportOrgEx(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      lppt : LPPOINT
   ) return BOOL;
   pragma import (Cpp,OffsetViewportOrgEx,"OffsetViewportOrgEx");
   function OffsetWindowOrgEx(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      lppt : LPPOINT
   ) return BOOL;
   pragma import (Cpp,OffsetWindowOrgEx,"OffsetWindowOrgEx");
   function ScaleViewportExtEx(
      hdc_x : HDC;
      xn : Interfaces.C.Int;
      dx : Interfaces.C.Int;
      yn : Interfaces.C.Int;
      yd : Interfaces.C.Int;
      lpsz : LPSIZE
   ) return BOOL;
   pragma import (Cpp,ScaleViewportExtEx,"ScaleViewportExtEx");
   function ScaleWindowExtEx(
      hdc_x : HDC;
      xn : Interfaces.C.Int;
      xd : Interfaces.C.Int;
      yn : Interfaces.C.Int;
      yd : Interfaces.C.Int;
      lpsz : LPSIZE
   ) return BOOL;
   pragma import (Cpp,ScaleWindowExtEx,"ScaleWindowExtEx");
   function SetBitmapDimensionEx(
      hbm : HBITMAP;
      w : Interfaces.C.Int;
      h : Interfaces.C.Int;
      lpsz : LPSIZE
   ) return BOOL;
   pragma import (Cpp,SetBitmapDimensionEx,"SetBitmapDimensionEx");
   function SetBrushOrgEx(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      lppt : LPPOINT
   ) return BOOL;
   pragma import (Cpp,SetBrushOrgEx,"SetBrushOrgEx");
   function GetTextFaceA(
      hdc_x : HDC;
      c : Interfaces.C.Int;
      lpName : LPSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetTextFaceA,"GetTextFaceA");
   function GetTextFaceW(
      hdc_x : HDC;
      c : Interfaces.C.Int;
      lpName : LPWSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetTextFaceW,"GetTextFaceW");
   type tagKERNINGPAIR is record
      wFirst : WORD;
      wSecond : WORD;
      iKernAmount : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagKERNINGPAIR);
   for tagKERNINGPAIR use record
      wFirst at 0 range 0..15;
      wSecond at 0 range 16..31;
      iKernAmount at 0 range 32..63;
   end record;
   for tagKERNINGPAIR'Size use 64;
   for tagKERNINGPAIR'Alignment use 4;
   subtype KERNINGPAIR is tagKERNINGPAIR;
   type LPKERNINGPAIR is access all tagKERNINGPAIR;
   function GetKerningPairsA(
      hdc_x : HDC;
      nPairs : DWORD;
      lpKernPair : LPKERNINGPAIR
   ) return DWORD;
   pragma import (Cpp,GetKerningPairsA,"GetKerningPairsA");
   function GetKerningPairsW(
      hdc_x : HDC;
      nPairs : DWORD;
      lpKernPair : LPKERNINGPAIR
   ) return DWORD;
   pragma import (Cpp,GetKerningPairsW,"GetKerningPairsW");
   function GetDCOrgEx(
      hdc_x : HDC;
      lppt : LPPOINT
   ) return BOOL;
   pragma import (Cpp,GetDCOrgEx,"GetDCOrgEx");
   function FixBrushOrgEx(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      ptl : LPPOINT
   ) return BOOL;
   pragma import (Cpp,FixBrushOrgEx,"FixBrushOrgEx");
   function UnrealizeObject(
      h : HGDIOBJ
   ) return BOOL;
   pragma import (Cpp,UnrealizeObject,"UnrealizeObject");
   function GdiFlush return BOOL;
   pragma import (Cpp,GdiFlush,"GdiFlush");
   function GdiSetBatchLimit(
      dw : DWORD
   ) return DWORD;
   pragma import (Cpp,GdiSetBatchLimit,"GdiSetBatchLimit");
   function GdiGetBatchLimit return DWORD;
   pragma import (Cpp,GdiGetBatchLimit,"GdiGetBatchLimit");
   type ICMENUMPROCA is access function (p1 : LPSTR ; p2 : LPARAM) return int; -- int (LPSTR, LPARAM)
   pragma Convention(C,ICMENUMPROCA);
   type ICMENUMPROCW is access function (p1 : LPWSTR ; p2 : LPARAM) return int; -- int (LPWSTR, LPARAM)
   pragma Convention(C,ICMENUMPROCW);
   function SetICMMode(
      hdc_x : HDC;
      mode : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetICMMode,"SetICMMode");
   function CheckColorsInGamut(
      hdc_x : HDC;
      lpRGBTriple_x : LPRGBTRIPLE;
      dlpBuffer : LPVOID;
      nCount : DWORD
   ) return BOOL;
   pragma import (Cpp,CheckColorsInGamut,"CheckColorsInGamut");
   function GetColorSpace(
      hdc_x : HDC
   ) return HCOLORSPACE;
   pragma import (Cpp,GetColorSpace,"GetColorSpace");
   function GetLogColorSpaceA(
      hColorSpace_x : HCOLORSPACE;
      lpBuffer : LPLOGCOLORSPACEA;
      nSize : DWORD
   ) return BOOL;
   pragma import (Cpp,GetLogColorSpaceA,"GetLogColorSpaceA");
   function GetLogColorSpaceW(
      hColorSpace_x : HCOLORSPACE;
      lpBuffer : LPLOGCOLORSPACEW;
      nSize : DWORD
   ) return BOOL;
   pragma import (Cpp,GetLogColorSpaceW,"GetLogColorSpaceW");
   function CreateColorSpaceA(
      lplcs : LPLOGCOLORSPACEA
   ) return HCOLORSPACE;
   pragma import (Cpp,CreateColorSpaceA,"CreateColorSpaceA");
   function CreateColorSpaceW(
      lplcs : LPLOGCOLORSPACEW
   ) return HCOLORSPACE;
   pragma import (Cpp,CreateColorSpaceW,"CreateColorSpaceW");
   function SetColorSpace(
      hdc_x : HDC;
      hcs : HCOLORSPACE
   ) return HCOLORSPACE;
   pragma import (Cpp,SetColorSpace,"SetColorSpace");
   function DeleteColorSpace(
      hcs : HCOLORSPACE
   ) return BOOL;
   pragma import (Cpp,DeleteColorSpace,"DeleteColorSpace");
   function GetICMProfileA(
      hdc_x : HDC;
      pBufSize : LPDWORD;
      pszFilename : LPSTR
   ) return BOOL;
   pragma import (Cpp,GetICMProfileA,"GetICMProfileA");
   function GetICMProfileW(
      hdc_x : HDC;
      pBufSize : LPDWORD;
      pszFilename : LPWSTR
   ) return BOOL;
   pragma import (Cpp,GetICMProfileW,"GetICMProfileW");
   function SetICMProfileA(
      hdc_x : HDC;
      lpFileName : LPSTR
   ) return BOOL;
   pragma import (Cpp,SetICMProfileA,"SetICMProfileA");
   function SetICMProfileW(
      hdc_x : HDC;
      lpFileName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,SetICMProfileW,"SetICMProfileW");
   function GetDeviceGammaRamp(
      hdc_x : HDC;
      lpRamp : LPVOID
   ) return BOOL;
   pragma import (Cpp,GetDeviceGammaRamp,"GetDeviceGammaRamp");
   function SetDeviceGammaRamp(
      hdc_x : HDC;
      lpRamp : LPVOID
   ) return BOOL;
   pragma import (Cpp,SetDeviceGammaRamp,"SetDeviceGammaRamp");
   function ColorMatchToTarget(
      hdc_x : HDC;
      hdcTarget : HDC;
      action : DWORD
   ) return BOOL;
   pragma import (Cpp,ColorMatchToTarget,"ColorMatchToTarget");
   function EnumICMProfilesA(
      hdc_x : HDC;
      proc_x : ICMENUMPROCA;
      param : LPARAM
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumICMProfilesA,"EnumICMProfilesA");
   function EnumICMProfilesW(
      hdc_x : HDC;
      proc_x : ICMENUMPROCW;
      param : LPARAM
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumICMProfilesW,"EnumICMProfilesW");
   function UpdateICMRegKeyA(
      reserved : DWORD;
      lpszCMID : LPSTR;
      lpszFileName : LPSTR;
      command : UINT
   ) return BOOL;
   pragma import (Cpp,UpdateICMRegKeyA,"UpdateICMRegKeyA");
   function UpdateICMRegKeyW(
      reserved : DWORD;
      lpszCMID : LPWSTR;
      lpszFileName : LPWSTR;
      command : UINT
   ) return BOOL;
   pragma import (Cpp,UpdateICMRegKeyW,"UpdateICMRegKeyW");
   function ColorCorrectPalette(
      hdc_x : HDC;
      hPal : HPALETTE;
      deFirst : DWORD;
      num : DWORD
   ) return BOOL;
   pragma import (Cpp,ColorCorrectPalette,"ColorCorrectPalette");
   type tagEMR is record
      iType : DWORD;
      nSize : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMR);
   for tagEMR use record
      iType at 0 range 0..31;
      nSize at 0 range 32..63;
   end record;
   for tagEMR'Size use 64;
   for tagEMR'Alignment use 4;
   subtype EMR is tagEMR;
   type PEMR is access all tagEMR;
   type tagEMRTEXT is record
      ptlReference : POINTL;
      nChars : DWORD;
      offString : DWORD;
      fOptions : DWORD;
      rcl : RECTL;
      offDx : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRTEXT);
   for tagEMRTEXT use record
      ptlReference at 0 range 0..63;
      nChars at 0 range 64..95;
      offString at 0 range 96..127;
      fOptions at 0 range 128..159;
      rcl at 0 range 160..287;
      offDx at 0 range 288..319;
   end record;
   for tagEMRTEXT'Size use 320;
   for tagEMRTEXT'Alignment use 4;
   subtype EMRTEXT is tagEMRTEXT;
   type PEMRTEXT is access all tagEMRTEXT;
   type tagABORTPATH is record
      emr_x : EMR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagABORTPATH);
   for tagABORTPATH use record
      emr_x at 0 range 0..63;
   end record;
   for tagABORTPATH'Size use 64;
   for tagABORTPATH'Alignment use 4;
   subtype EMRABORTPATH is tagABORTPATH;
   type PEMRABORTPATH is access all tagABORTPATH;
   subtype EMRBEGINPATH is tagABORTPATH;
   type PEMRBEGINPATH is access all tagABORTPATH;
   subtype EMRENDPATH is tagABORTPATH;
   type PEMRENDPATH is access all tagABORTPATH;
   subtype EMRCLOSEFIGURE is tagABORTPATH;
   type PEMRCLOSEFIGURE is access all tagABORTPATH;
   subtype EMRFLATTENPATH is tagABORTPATH;
   type PEMRFLATTENPATH is access all tagABORTPATH;
   subtype EMRWIDENPATH is tagABORTPATH;
   type PEMRWIDENPATH is access all tagABORTPATH;
   subtype EMRSETMETARGN is tagABORTPATH;
   type PEMRSETMETARGN is access all tagABORTPATH;
   subtype EMRSAVEDC is tagABORTPATH;
   type PEMRSAVEDC is access all tagABORTPATH;
   subtype EMRREALIZEPALETTE is tagABORTPATH;
   type PEMRREALIZEPALETTE is access all tagABORTPATH;
   type tagEMRSELECTCLIPPATH is record
      emr_x : EMR;
      iMode : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSELECTCLIPPATH);
   for tagEMRSELECTCLIPPATH use record
      emr_x at 0 range 0..63;
      iMode at 0 range 64..95;
   end record;
   for tagEMRSELECTCLIPPATH'Size use 96;
   for tagEMRSELECTCLIPPATH'Alignment use 4;
   subtype EMRSELECTCLIPPATH is tagEMRSELECTCLIPPATH;
   type PEMRSELECTCLIPPATH is access all tagEMRSELECTCLIPPATH;
   subtype EMRSETBKMODE is tagEMRSELECTCLIPPATH;
   type PEMRSETBKMODE is access all tagEMRSELECTCLIPPATH;
   subtype EMRSETMAPMODE is tagEMRSELECTCLIPPATH;
   type PEMRSETMAPMODE is access all tagEMRSELECTCLIPPATH;
   subtype EMRSETLAYOUT is tagEMRSELECTCLIPPATH;
   type PEMRSETLAYOUT is access all tagEMRSELECTCLIPPATH;
   subtype EMRSETPOLYFILLMODE is tagEMRSELECTCLIPPATH;
   type PEMRSETPOLYFILLMODE is access all tagEMRSELECTCLIPPATH;
   subtype EMRSETROP2 is tagEMRSELECTCLIPPATH;
   type PEMRSETROP2 is access all tagEMRSELECTCLIPPATH;
   subtype EMRSETSTRETCHBLTMODE is tagEMRSELECTCLIPPATH;
   type PEMRSETSTRETCHBLTMODE is access all tagEMRSELECTCLIPPATH;
   subtype EMRSETICMMODE is tagEMRSELECTCLIPPATH;
   type PEMRSETICMMODE is access all tagEMRSELECTCLIPPATH;
   subtype EMRSETTEXTALIGN is tagEMRSELECTCLIPPATH;
   type PEMRSETTEXTALIGN is access all tagEMRSELECTCLIPPATH;
   type tagEMRSETMITERLIMIT is record
      emr_x : EMR;
      eMiterLimit : FLOAT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETMITERLIMIT);
   for tagEMRSETMITERLIMIT use record
      emr_x at 0 range 0..63;
      eMiterLimit at 0 range 64..95;
   end record;
   for tagEMRSETMITERLIMIT'Size use 96;
   for tagEMRSETMITERLIMIT'Alignment use 4;
   subtype EMRSETMITERLIMIT is tagEMRSETMITERLIMIT;
   type PEMRSETMITERLIMIT is access all tagEMRSETMITERLIMIT;
   type tagEMRRESTOREDC is record
      emr_x : EMR;
      iRelative : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRRESTOREDC);
   for tagEMRRESTOREDC use record
      emr_x at 0 range 0..63;
      iRelative at 0 range 64..95;
   end record;
   for tagEMRRESTOREDC'Size use 96;
   for tagEMRRESTOREDC'Alignment use 4;
   subtype EMRRESTOREDC is tagEMRRESTOREDC;
   type PEMRRESTOREDC is access all tagEMRRESTOREDC;
   type tagEMRSETARCDIRECTION is record
      emr_x : EMR;
      iArcDirection : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETARCDIRECTION);
   for tagEMRSETARCDIRECTION use record
      emr_x at 0 range 0..63;
      iArcDirection at 0 range 64..95;
   end record;
   for tagEMRSETARCDIRECTION'Size use 96;
   for tagEMRSETARCDIRECTION'Alignment use 4;
   subtype EMRSETARCDIRECTION is tagEMRSETARCDIRECTION;
   type PEMRSETARCDIRECTION is access all tagEMRSETARCDIRECTION;
   type tagEMRSETMAPPERFLAGS is record
      emr_x : EMR;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETMAPPERFLAGS);
   for tagEMRSETMAPPERFLAGS use record
      emr_x at 0 range 0..63;
      dwFlags at 0 range 64..95;
   end record;
   for tagEMRSETMAPPERFLAGS'Size use 96;
   for tagEMRSETMAPPERFLAGS'Alignment use 4;
   subtype EMRSETMAPPERFLAGS is tagEMRSETMAPPERFLAGS;
   type PEMRSETMAPPERFLAGS is access all tagEMRSETMAPPERFLAGS;
   type tagEMRSETTEXTCOLOR is record
      emr_x : EMR;
      crColor : COLORREF;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETTEXTCOLOR);
   for tagEMRSETTEXTCOLOR use record
      emr_x at 0 range 0..63;
      crColor at 0 range 64..95;
   end record;
   for tagEMRSETTEXTCOLOR'Size use 96;
   for tagEMRSETTEXTCOLOR'Alignment use 4;
   subtype EMRSETBKCOLOR is tagEMRSETTEXTCOLOR;
   type PEMRSETBKCOLOR is access all tagEMRSETTEXTCOLOR;
   subtype EMRSETTEXTCOLOR is tagEMRSETTEXTCOLOR;
   type PEMRSETTEXTCOLOR is access all tagEMRSETTEXTCOLOR;
   type tagEMRSELECTOBJECT is record
      emr_x : EMR;
      ihObject : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSELECTOBJECT);
   for tagEMRSELECTOBJECT use record
      emr_x at 0 range 0..63;
      ihObject at 0 range 64..95;
   end record;
   for tagEMRSELECTOBJECT'Size use 96;
   for tagEMRSELECTOBJECT'Alignment use 4;
   subtype EMRSELECTOBJECT is tagEMRSELECTOBJECT;
   type PEMRSELECTOBJECT is access all tagEMRSELECTOBJECT;
   subtype EMRDELETEOBJECT is tagEMRSELECTOBJECT;
   type PEMRDELETEOBJECT is access all tagEMRSELECTOBJECT;
   type tagEMRSELECTPALETTE is record
      emr_x : EMR;
      ihPal : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSELECTPALETTE);
   for tagEMRSELECTPALETTE use record
      emr_x at 0 range 0..63;
      ihPal at 0 range 64..95;
   end record;
   for tagEMRSELECTPALETTE'Size use 96;
   for tagEMRSELECTPALETTE'Alignment use 4;
   subtype EMRSELECTPALETTE is tagEMRSELECTPALETTE;
   type PEMRSELECTPALETTE is access all tagEMRSELECTPALETTE;
   type tagEMRRESIZEPALETTE is record
      emr_x : EMR;
      ihPal : DWORD;
      cEntries : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRRESIZEPALETTE);
   for tagEMRRESIZEPALETTE use record
      emr_x at 0 range 0..63;
      ihPal at 0 range 64..95;
      cEntries at 0 range 96..127;
   end record;
   for tagEMRRESIZEPALETTE'Size use 128;
   for tagEMRRESIZEPALETTE'Alignment use 4;
   subtype EMRRESIZEPALETTE is tagEMRRESIZEPALETTE;
   type PEMRRESIZEPALETTE is access all tagEMRRESIZEPALETTE;
   type tagEMRSETPALETTEENTRIES_aPalEntries_Array is array(1..1) of PALETTEENTRY; -- Auto Generated Dependancy
   type tagEMRSETPALETTEENTRIES is record
      emr_x : EMR;
      ihPal : DWORD;
      iStart : DWORD;
      cEntries : DWORD;
      aPalEntries : tagEMRSETPALETTEENTRIES_aPalEntries_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETPALETTEENTRIES);
   for tagEMRSETPALETTEENTRIES use record
      emr_x at 0 range 0..63;
      ihPal at 0 range 64..95;
      iStart at 0 range 96..127;
      cEntries at 0 range 128..159;
      aPalEntries at 0 range 160..191;
   end record;
   for tagEMRSETPALETTEENTRIES'Size use 192;
   for tagEMRSETPALETTEENTRIES'Alignment use 4;
   subtype EMRSETPALETTEENTRIES is tagEMRSETPALETTEENTRIES;
   type PEMRSETPALETTEENTRIES is access all tagEMRSETPALETTEENTRIES;
   type tagEMRSETCOLORADJUSTMENT is record
      emr_x : EMR;
      ColorAdjustment_x : COLORADJUSTMENT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETCOLORADJUSTMENT);
   for tagEMRSETCOLORADJUSTMENT use record
      emr_x at 0 range 0..63;
      ColorAdjustment_x at 0 range 64..255;
   end record;
   for tagEMRSETCOLORADJUSTMENT'Size use 256;
   for tagEMRSETCOLORADJUSTMENT'Alignment use 4;
   subtype EMRSETCOLORADJUSTMENT is tagEMRSETCOLORADJUSTMENT;
   type PEMRSETCOLORADJUSTMENT is access all tagEMRSETCOLORADJUSTMENT;
   type tagEMRGDICOMMENT_Data_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMRGDICOMMENT is record
      emr_x : EMR;
      cbData : DWORD;
      Data : tagEMRGDICOMMENT_Data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRGDICOMMENT);
   for tagEMRGDICOMMENT use record
      emr_x at 0 range 0..63;
      cbData at 0 range 64..95;
      Data at 0 range 96..103;
   end record;
   for tagEMRGDICOMMENT'Size use 128;
   for tagEMRGDICOMMENT'Alignment use 4;
   subtype EMRGDICOMMENT is tagEMRGDICOMMENT;
   type PEMRGDICOMMENT is access all tagEMRGDICOMMENT;
   type tagEMREOF is record
      emr_x : EMR;
      nPalEntries : DWORD;
      offPalEntries : DWORD;
      nSizeLast : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMREOF);
   for tagEMREOF use record
      emr_x at 0 range 0..63;
      nPalEntries at 0 range 64..95;
      offPalEntries at 0 range 96..127;
      nSizeLast at 0 range 128..159;
   end record;
   for tagEMREOF'Size use 160;
   for tagEMREOF'Alignment use 4;
   subtype EMREOF is tagEMREOF;
   type PEMREOF is access all tagEMREOF;
   type tagEMRLINETO is record
      emr_x : EMR;
      ptl : POINTL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRLINETO);
   for tagEMRLINETO use record
      emr_x at 0 range 0..63;
      ptl at 0 range 64..127;
   end record;
   for tagEMRLINETO'Size use 128;
   for tagEMRLINETO'Alignment use 4;
   subtype EMRLINETO is tagEMRLINETO;
   type PEMRLINETO is access all tagEMRLINETO;
   subtype EMRMOVETOEX is tagEMRLINETO;
   type PEMRMOVETOEX is access all tagEMRLINETO;
   type tagEMROFFSETCLIPRGN is record
      emr_x : EMR;
      ptlOffset : POINTL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMROFFSETCLIPRGN);
   for tagEMROFFSETCLIPRGN use record
      emr_x at 0 range 0..63;
      ptlOffset at 0 range 64..127;
   end record;
   for tagEMROFFSETCLIPRGN'Size use 128;
   for tagEMROFFSETCLIPRGN'Alignment use 4;
   subtype EMROFFSETCLIPRGN is tagEMROFFSETCLIPRGN;
   type PEMROFFSETCLIPRGN is access all tagEMROFFSETCLIPRGN;
   type tagEMRFILLPATH is record
      emr_x : EMR;
      rclBounds : RECTL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRFILLPATH);
   for tagEMRFILLPATH use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
   end record;
   for tagEMRFILLPATH'Size use 192;
   for tagEMRFILLPATH'Alignment use 4;
   subtype EMRFILLPATH is tagEMRFILLPATH;
   type PEMRFILLPATH is access all tagEMRFILLPATH;
   subtype EMRSTROKEANDFILLPATH is tagEMRFILLPATH;
   type PEMRSTROKEANDFILLPATH is access all tagEMRFILLPATH;
   subtype EMRSTROKEPATH is tagEMRFILLPATH;
   type PEMRSTROKEPATH is access all tagEMRFILLPATH;
   type tagEMREXCLUDECLIPRECT is record
      emr_x : EMR;
      rclClip : RECTL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMREXCLUDECLIPRECT);
   for tagEMREXCLUDECLIPRECT use record
      emr_x at 0 range 0..63;
      rclClip at 0 range 64..191;
   end record;
   for tagEMREXCLUDECLIPRECT'Size use 192;
   for tagEMREXCLUDECLIPRECT'Alignment use 4;
   subtype EMREXCLUDECLIPRECT is tagEMREXCLUDECLIPRECT;
   type PEMREXCLUDECLIPRECT is access all tagEMREXCLUDECLIPRECT;
   subtype EMRINTERSECTCLIPRECT is tagEMREXCLUDECLIPRECT;
   type PEMRINTERSECTCLIPRECT is access all tagEMREXCLUDECLIPRECT;
   type tagEMRSETVIEWPORTORGEX is record
      emr_x : EMR;
      ptlOrigin : POINTL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETVIEWPORTORGEX);
   for tagEMRSETVIEWPORTORGEX use record
      emr_x at 0 range 0..63;
      ptlOrigin at 0 range 64..127;
   end record;
   for tagEMRSETVIEWPORTORGEX'Size use 128;
   for tagEMRSETVIEWPORTORGEX'Alignment use 4;
   subtype EMRSETVIEWPORTORGEX is tagEMRSETVIEWPORTORGEX;
   type PEMRSETVIEWPORTORGEX is access all tagEMRSETVIEWPORTORGEX;
   subtype EMRSETWINDOWORGEX is tagEMRSETVIEWPORTORGEX;
   type PEMRSETWINDOWORGEX is access all tagEMRSETVIEWPORTORGEX;
   subtype EMRSETBRUSHORGEX is tagEMRSETVIEWPORTORGEX;
   type PEMRSETBRUSHORGEX is access all tagEMRSETVIEWPORTORGEX;
   type tagEMRSETVIEWPORTEXTEX is record
      emr_x : EMR;
      szlExtent : SIZEL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETVIEWPORTEXTEX);
   for tagEMRSETVIEWPORTEXTEX use record
      emr_x at 0 range 0..63;
      szlExtent at 0 range 64..127;
   end record;
   for tagEMRSETVIEWPORTEXTEX'Size use 128;
   for tagEMRSETVIEWPORTEXTEX'Alignment use 4;
   subtype EMRSETVIEWPORTEXTEX is tagEMRSETVIEWPORTEXTEX;
   type PEMRSETVIEWPORTEXTEX is access all tagEMRSETVIEWPORTEXTEX;
   subtype EMRSETWINDOWEXTEX is tagEMRSETVIEWPORTEXTEX;
   type PEMRSETWINDOWEXTEX is access all tagEMRSETVIEWPORTEXTEX;
   type tagEMRSCALEVIEWPORTEXTEX is record
      emr_x : EMR;
      xNum : LONG;
      xDenom : LONG;
      yNum : LONG;
      yDenom : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSCALEVIEWPORTEXTEX);
   for tagEMRSCALEVIEWPORTEXTEX use record
      emr_x at 0 range 0..63;
      xNum at 0 range 64..95;
      xDenom at 0 range 96..127;
      yNum at 0 range 128..159;
      yDenom at 0 range 160..191;
   end record;
   for tagEMRSCALEVIEWPORTEXTEX'Size use 192;
   for tagEMRSCALEVIEWPORTEXTEX'Alignment use 4;
   subtype EMRSCALEVIEWPORTEXTEX is tagEMRSCALEVIEWPORTEXTEX;
   type PEMRSCALEVIEWPORTEXTEX is access all tagEMRSCALEVIEWPORTEXTEX;
   subtype EMRSCALEWINDOWEXTEX is tagEMRSCALEVIEWPORTEXTEX;
   type PEMRSCALEWINDOWEXTEX is access all tagEMRSCALEVIEWPORTEXTEX;
   type tagEMRSETWORLDTRANSFORM is record
      emr_x : EMR;
      xform_x : XFORM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETWORLDTRANSFORM);
   for tagEMRSETWORLDTRANSFORM use record
      emr_x at 0 range 0..63;
      xform_x at 0 range 64..255;
   end record;
   for tagEMRSETWORLDTRANSFORM'Size use 256;
   for tagEMRSETWORLDTRANSFORM'Alignment use 4;
   subtype EMRSETWORLDTRANSFORM is tagEMRSETWORLDTRANSFORM;
   type PEMRSETWORLDTRANSFORM is access all tagEMRSETWORLDTRANSFORM;
   type tagEMRMODIFYWORLDTRANSFORM is record
      emr_x : EMR;
      xform_x : XFORM;
      iMode : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRMODIFYWORLDTRANSFORM);
   for tagEMRMODIFYWORLDTRANSFORM use record
      emr_x at 0 range 0..63;
      xform_x at 0 range 64..255;
      iMode at 0 range 256..287;
   end record;
   for tagEMRMODIFYWORLDTRANSFORM'Size use 288;
   for tagEMRMODIFYWORLDTRANSFORM'Alignment use 4;
   subtype EMRMODIFYWORLDTRANSFORM is tagEMRMODIFYWORLDTRANSFORM;
   type PEMRMODIFYWORLDTRANSFORM is access all tagEMRMODIFYWORLDTRANSFORM;
   type tagEMRSETPIXELV is record
      emr_x : EMR;
      ptlPixel : POINTL;
      crColor : COLORREF;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETPIXELV);
   for tagEMRSETPIXELV use record
      emr_x at 0 range 0..63;
      ptlPixel at 0 range 64..127;
      crColor at 0 range 128..159;
   end record;
   for tagEMRSETPIXELV'Size use 160;
   for tagEMRSETPIXELV'Alignment use 4;
   subtype EMRSETPIXELV is tagEMRSETPIXELV;
   type PEMRSETPIXELV is access all tagEMRSETPIXELV;
   type tagEMREXTFLOODFILL is record
      emr_x : EMR;
      ptlStart : POINTL;
      crColor : COLORREF;
      iMode : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMREXTFLOODFILL);
   for tagEMREXTFLOODFILL use record
      emr_x at 0 range 0..63;
      ptlStart at 0 range 64..127;
      crColor at 0 range 128..159;
      iMode at 0 range 160..191;
   end record;
   for tagEMREXTFLOODFILL'Size use 192;
   for tagEMREXTFLOODFILL'Alignment use 4;
   subtype EMREXTFLOODFILL is tagEMREXTFLOODFILL;
   type PEMREXTFLOODFILL is access all tagEMREXTFLOODFILL;
   type tagEMRELLIPSE is record
      emr_x : EMR;
      rclBox : RECTL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRELLIPSE);
   for tagEMRELLIPSE use record
      emr_x at 0 range 0..63;
      rclBox at 0 range 64..191;
   end record;
   for tagEMRELLIPSE'Size use 192;
   for tagEMRELLIPSE'Alignment use 4;
   subtype EMRELLIPSE is tagEMRELLIPSE;
   type PEMRELLIPSE is access all tagEMRELLIPSE;
   subtype EMRRECTANGLE is tagEMRELLIPSE;
   type PEMRRECTANGLE is access all tagEMRELLIPSE;
   type tagEMRROUNDRECT is record
      emr_x : EMR;
      rclBox : RECTL;
      szlCorner : SIZEL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRROUNDRECT);
   for tagEMRROUNDRECT use record
      emr_x at 0 range 0..63;
      rclBox at 0 range 64..191;
      szlCorner at 0 range 192..255;
   end record;
   for tagEMRROUNDRECT'Size use 256;
   for tagEMRROUNDRECT'Alignment use 4;
   subtype EMRROUNDRECT is tagEMRROUNDRECT;
   type PEMRROUNDRECT is access all tagEMRROUNDRECT;
   type tagEMRARC is record
      emr_x : EMR;
      rclBox : RECTL;
      ptlStart : POINTL;
      ptlEnd : POINTL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRARC);
   for tagEMRARC use record
      emr_x at 0 range 0..63;
      rclBox at 0 range 64..191;
      ptlStart at 0 range 192..255;
      ptlEnd at 0 range 256..319;
   end record;
   for tagEMRARC'Size use 320;
   for tagEMRARC'Alignment use 4;
   subtype EMRARC is tagEMRARC;
   type PEMRARC is access all tagEMRARC;
   subtype EMRARCTO is tagEMRARC;
   type PEMRARCTO is access all tagEMRARC;
   subtype EMRCHORD is tagEMRARC;
   type PEMRCHORD is access all tagEMRARC;
   subtype EMRPIE is tagEMRARC;
   type PEMRPIE is access all tagEMRARC;
   type tagEMRANGLEARC is record
      emr_x : EMR;
      ptlCenter : POINTL;
      nRadius : DWORD;
      eStartAngle : FLOAT;
      eSweepAngle : FLOAT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRANGLEARC);
   for tagEMRANGLEARC use record
      emr_x at 0 range 0..63;
      ptlCenter at 0 range 64..127;
      nRadius at 0 range 128..159;
      eStartAngle at 0 range 160..191;
      eSweepAngle at 0 range 192..223;
   end record;
   for tagEMRANGLEARC'Size use 224;
   for tagEMRANGLEARC'Alignment use 4;
   subtype EMRANGLEARC is tagEMRANGLEARC;
   type PEMRANGLEARC is access all tagEMRANGLEARC;
   type tagEMRPOLYLINE_aptl_Array is array(1..1) of POINTL; -- Auto Generated Dependancy
   type tagEMRPOLYLINE is record
      emr_x : EMR;
      rclBounds : RECTL;
      cptl : DWORD;
      aptl : tagEMRPOLYLINE_aptl_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRPOLYLINE);
   for tagEMRPOLYLINE use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      cptl at 0 range 192..223;
      aptl at 0 range 224..287;
   end record;
   for tagEMRPOLYLINE'Size use 288;
   for tagEMRPOLYLINE'Alignment use 4;
   subtype EMRPOLYLINE is tagEMRPOLYLINE;
   type PEMRPOLYLINE is access all tagEMRPOLYLINE;
   subtype EMRPOLYBEZIER is tagEMRPOLYLINE;
   type PEMRPOLYBEZIER is access all tagEMRPOLYLINE;
   subtype EMRPOLYGON is tagEMRPOLYLINE;
   type PEMRPOLYGON is access all tagEMRPOLYLINE;
   subtype EMRPOLYBEZIERTO is tagEMRPOLYLINE;
   type PEMRPOLYBEZIERTO is access all tagEMRPOLYLINE;
   subtype EMRPOLYLINETO is tagEMRPOLYLINE;
   type PEMRPOLYLINETO is access all tagEMRPOLYLINE;
   type tagEMRPOLYLINE16_apts_Array is array(1..1) of POINTS; -- Auto Generated Dependancy
   type tagEMRPOLYLINE16 is record
      emr_x : EMR;
      rclBounds : RECTL;
      cpts : DWORD;
      apts : tagEMRPOLYLINE16_apts_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRPOLYLINE16);
   for tagEMRPOLYLINE16 use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      cpts at 0 range 192..223;
      apts at 0 range 224..255;
   end record;
   for tagEMRPOLYLINE16'Size use 256;
   for tagEMRPOLYLINE16'Alignment use 4;
   subtype EMRPOLYLINE16 is tagEMRPOLYLINE16;
   type PEMRPOLYLINE16 is access all tagEMRPOLYLINE16;
   subtype EMRPOLYBEZIER16 is tagEMRPOLYLINE16;
   type PEMRPOLYBEZIER16 is access all tagEMRPOLYLINE16;
   subtype EMRPOLYGON16 is tagEMRPOLYLINE16;
   type PEMRPOLYGON16 is access all tagEMRPOLYLINE16;
   subtype EMRPOLYBEZIERTO16 is tagEMRPOLYLINE16;
   type PEMRPOLYBEZIERTO16 is access all tagEMRPOLYLINE16;
   subtype EMRPOLYLINETO16 is tagEMRPOLYLINE16;
   type PEMRPOLYLINETO16 is access all tagEMRPOLYLINE16;
   type tagEMRPOLYDRAW_aptl_Array is array(1..1) of POINTL; -- Auto Generated Dependancy
   type tagEMRPOLYDRAW_abTypes_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMRPOLYDRAW is record
      emr_x : EMR;
      rclBounds : RECTL;
      cptl : DWORD;
      aptl : tagEMRPOLYDRAW_aptl_Array;
      abTypes : tagEMRPOLYDRAW_abTypes_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRPOLYDRAW);
   for tagEMRPOLYDRAW use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      cptl at 0 range 192..223;
      aptl at 0 range 224..287;
      abTypes at 0 range 288..295;
   end record;
   for tagEMRPOLYDRAW'Size use 320;
   for tagEMRPOLYDRAW'Alignment use 4;
   subtype EMRPOLYDRAW is tagEMRPOLYDRAW;
   type PEMRPOLYDRAW is access all tagEMRPOLYDRAW;
   type tagEMRPOLYDRAW16_apts_Array is array(1..1) of POINTS; -- Auto Generated Dependancy
   type tagEMRPOLYDRAW16_abTypes_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMRPOLYDRAW16 is record
      emr_x : EMR;
      rclBounds : RECTL;
      cpts : DWORD;
      apts : tagEMRPOLYDRAW16_apts_Array;
      abTypes : tagEMRPOLYDRAW16_abTypes_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRPOLYDRAW16);
   for tagEMRPOLYDRAW16 use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      cpts at 0 range 192..223;
      apts at 0 range 224..255;
      abTypes at 0 range 256..263;
   end record;
   for tagEMRPOLYDRAW16'Size use 288;
   for tagEMRPOLYDRAW16'Alignment use 4;
   subtype EMRPOLYDRAW16 is tagEMRPOLYDRAW16;
   type PEMRPOLYDRAW16 is access all tagEMRPOLYDRAW16;
   type tagEMRPOLYPOLYLINE_aPolyCounts_Array is array(1..1) of DWORD; -- Auto Generated Dependancy
   type tagEMRPOLYPOLYLINE_aptl_Array is array(1..1) of POINTL; -- Auto Generated Dependancy
   type tagEMRPOLYPOLYLINE is record
      emr_x : EMR;
      rclBounds : RECTL;
      nPolys : DWORD;
      cptl : DWORD;
      aPolyCounts : tagEMRPOLYPOLYLINE_aPolyCounts_Array;
      aptl : tagEMRPOLYPOLYLINE_aptl_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRPOLYPOLYLINE);
   for tagEMRPOLYPOLYLINE use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      nPolys at 0 range 192..223;
      cptl at 0 range 224..255;
      aPolyCounts at 0 range 256..287;
      aptl at 0 range 288..351;
   end record;
   for tagEMRPOLYPOLYLINE'Size use 352;
   for tagEMRPOLYPOLYLINE'Alignment use 4;
   subtype EMRPOLYPOLYLINE is tagEMRPOLYPOLYLINE;
   type PEMRPOLYPOLYLINE is access all tagEMRPOLYPOLYLINE;
   subtype EMRPOLYPOLYGON is tagEMRPOLYPOLYLINE;
   type PEMRPOLYPOLYGON is access all tagEMRPOLYPOLYLINE;
   type tagEMRPOLYPOLYLINE16_aPolyCounts_Array is array(1..1) of DWORD; -- Auto Generated Dependancy
   type tagEMRPOLYPOLYLINE16_apts_Array is array(1..1) of POINTS; -- Auto Generated Dependancy
   type tagEMRPOLYPOLYLINE16 is record
      emr_x : EMR;
      rclBounds : RECTL;
      nPolys : DWORD;
      cpts : DWORD;
      aPolyCounts : tagEMRPOLYPOLYLINE16_aPolyCounts_Array;
      apts : tagEMRPOLYPOLYLINE16_apts_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRPOLYPOLYLINE16);
   for tagEMRPOLYPOLYLINE16 use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      nPolys at 0 range 192..223;
      cpts at 0 range 224..255;
      aPolyCounts at 0 range 256..287;
      apts at 0 range 288..319;
   end record;
   for tagEMRPOLYPOLYLINE16'Size use 320;
   for tagEMRPOLYPOLYLINE16'Alignment use 4;
   subtype EMRPOLYPOLYLINE16 is tagEMRPOLYPOLYLINE16;
   type PEMRPOLYPOLYLINE16 is access all tagEMRPOLYPOLYLINE16;
   subtype EMRPOLYPOLYGON16 is tagEMRPOLYPOLYLINE16;
   type PEMRPOLYPOLYGON16 is access all tagEMRPOLYPOLYLINE16;
   type tagEMRINVERTRGN_RgnData_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMRINVERTRGN is record
      emr_x : EMR;
      rclBounds : RECTL;
      cbRgnData : DWORD;
      RgnData_x : tagEMRINVERTRGN_RgnData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRINVERTRGN);
   for tagEMRINVERTRGN use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      cbRgnData at 0 range 192..223;
      RgnData_x at 0 range 224..231;
   end record;
   for tagEMRINVERTRGN'Size use 256;
   for tagEMRINVERTRGN'Alignment use 4;
   subtype EMRINVERTRGN is tagEMRINVERTRGN;
   type PEMRINVERTRGN is access all tagEMRINVERTRGN;
   subtype EMRPAINTRGN is tagEMRINVERTRGN;
   type PEMRPAINTRGN is access all tagEMRINVERTRGN;
   type tagEMRFILLRGN_RgnData_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMRFILLRGN is record
      emr_x : EMR;
      rclBounds : RECTL;
      cbRgnData : DWORD;
      ihBrush : DWORD;
      RgnData_x : tagEMRFILLRGN_RgnData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRFILLRGN);
   for tagEMRFILLRGN use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      cbRgnData at 0 range 192..223;
      ihBrush at 0 range 224..255;
      RgnData_x at 0 range 256..263;
   end record;
   for tagEMRFILLRGN'Size use 288;
   for tagEMRFILLRGN'Alignment use 4;
   subtype EMRFILLRGN is tagEMRFILLRGN;
   type PEMRFILLRGN is access all tagEMRFILLRGN;
   type tagEMRFRAMERGN_RgnData_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMRFRAMERGN is record
      emr_x : EMR;
      rclBounds : RECTL;
      cbRgnData : DWORD;
      ihBrush : DWORD;
      szlStroke : SIZEL;
      RgnData_x : tagEMRFRAMERGN_RgnData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRFRAMERGN);
   for tagEMRFRAMERGN use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      cbRgnData at 0 range 192..223;
      ihBrush at 0 range 224..255;
      szlStroke at 0 range 256..319;
      RgnData_x at 0 range 320..327;
   end record;
   for tagEMRFRAMERGN'Size use 352;
   for tagEMRFRAMERGN'Alignment use 4;
   subtype EMRFRAMERGN is tagEMRFRAMERGN;
   type PEMRFRAMERGN is access all tagEMRFRAMERGN;
   type tagEMREXTSELECTCLIPRGN_RgnData_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMREXTSELECTCLIPRGN is record
      emr_x : EMR;
      cbRgnData : DWORD;
      iMode : DWORD;
      RgnData_x : tagEMREXTSELECTCLIPRGN_RgnData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMREXTSELECTCLIPRGN);
   for tagEMREXTSELECTCLIPRGN use record
      emr_x at 0 range 0..63;
      cbRgnData at 0 range 64..95;
      iMode at 0 range 96..127;
      RgnData_x at 0 range 128..135;
   end record;
   for tagEMREXTSELECTCLIPRGN'Size use 160;
   for tagEMREXTSELECTCLIPRGN'Alignment use 4;
   subtype EMREXTSELECTCLIPRGN is tagEMREXTSELECTCLIPRGN;
   type PEMREXTSELECTCLIPRGN is access all tagEMREXTSELECTCLIPRGN;
   type tagEMREXTTEXTOUTA is record
      emr_x : EMR;
      rclBounds : RECTL;
      iGraphicsMode : DWORD;
      exScale : FLOAT;
      eyScale : FLOAT;
      emrtext_x : EMRTEXT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMREXTTEXTOUTA);
   for tagEMREXTTEXTOUTA use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      iGraphicsMode at 0 range 192..223;
      exScale at 0 range 224..255;
      eyScale at 0 range 256..287;
      emrtext_x at 0 range 288..607;
   end record;
   for tagEMREXTTEXTOUTA'Size use 608;
   for tagEMREXTTEXTOUTA'Alignment use 4;
   subtype EMREXTTEXTOUTA is tagEMREXTTEXTOUTA;
   type PEMREXTTEXTOUTA is access all tagEMREXTTEXTOUTA;
   subtype EMREXTTEXTOUTW is tagEMREXTTEXTOUTA;
   type PEMREXTTEXTOUTW is access all tagEMREXTTEXTOUTA;
   type tagEMRPOLYTEXTOUTA_aemrtext_Array is array(1..1) of EMRTEXT; -- Auto Generated Dependancy
   type tagEMRPOLYTEXTOUTA is record
      emr_x : EMR;
      rclBounds : RECTL;
      iGraphicsMode : DWORD;
      exScale : FLOAT;
      eyScale : FLOAT;
      cStrings : LONG;
      aemrtext : tagEMRPOLYTEXTOUTA_aemrtext_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRPOLYTEXTOUTA);
   for tagEMRPOLYTEXTOUTA use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      iGraphicsMode at 0 range 192..223;
      exScale at 0 range 224..255;
      eyScale at 0 range 256..287;
      cStrings at 0 range 288..319;
      aemrtext at 0 range 320..639;
   end record;
   for tagEMRPOLYTEXTOUTA'Size use 640;
   for tagEMRPOLYTEXTOUTA'Alignment use 4;
   subtype EMRPOLYTEXTOUTA is tagEMRPOLYTEXTOUTA;
   type PEMRPOLYTEXTOUTA is access all tagEMRPOLYTEXTOUTA;
   subtype EMRPOLYTEXTOUTW is tagEMRPOLYTEXTOUTA;
   type PEMRPOLYTEXTOUTW is access all tagEMRPOLYTEXTOUTA;
   type tagEMRBITBLT is record
      emr_x : EMR;
      rclBounds : RECTL;
      xDest : LONG;
      yDest : LONG;
      cxDest : LONG;
      cyDest : LONG;
      dwRop : DWORD;
      xSrc : LONG;
      ySrc : LONG;
      xformSrc : XFORM;
      crBkColorSrc : COLORREF;
      iUsageSrc : DWORD;
      offBmiSrc : DWORD;
      cbBmiSrc : DWORD;
      offBitsSrc : DWORD;
      cbBitsSrc : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRBITBLT);
   for tagEMRBITBLT use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      xDest at 0 range 192..223;
      yDest at 0 range 224..255;
      cxDest at 0 range 256..287;
      cyDest at 0 range 288..319;
      dwRop at 0 range 320..351;
      xSrc at 0 range 352..383;
      ySrc at 0 range 384..415;
      xformSrc at 0 range 416..607;
      crBkColorSrc at 0 range 608..639;
      iUsageSrc at 0 range 640..671;
      offBmiSrc at 0 range 672..703;
      cbBmiSrc at 0 range 704..735;
      offBitsSrc at 0 range 736..767;
      cbBitsSrc at 0 range 768..799;
   end record;
   for tagEMRBITBLT'Size use 800;
   for tagEMRBITBLT'Alignment use 4;
   subtype EMRBITBLT is tagEMRBITBLT;
   type PEMRBITBLT is access all tagEMRBITBLT;
   type tagEMRSTRETCHBLT is record
      emr_x : EMR;
      rclBounds : RECTL;
      xDest : LONG;
      yDest : LONG;
      cxDest : LONG;
      cyDest : LONG;
      dwRop : DWORD;
      xSrc : LONG;
      ySrc : LONG;
      xformSrc : XFORM;
      crBkColorSrc : COLORREF;
      iUsageSrc : DWORD;
      offBmiSrc : DWORD;
      cbBmiSrc : DWORD;
      offBitsSrc : DWORD;
      cbBitsSrc : DWORD;
      cxSrc : LONG;
      cySrc : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSTRETCHBLT);
   for tagEMRSTRETCHBLT use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      xDest at 0 range 192..223;
      yDest at 0 range 224..255;
      cxDest at 0 range 256..287;
      cyDest at 0 range 288..319;
      dwRop at 0 range 320..351;
      xSrc at 0 range 352..383;
      ySrc at 0 range 384..415;
      xformSrc at 0 range 416..607;
      crBkColorSrc at 0 range 608..639;
      iUsageSrc at 0 range 640..671;
      offBmiSrc at 0 range 672..703;
      cbBmiSrc at 0 range 704..735;
      offBitsSrc at 0 range 736..767;
      cbBitsSrc at 0 range 768..799;
      cxSrc at 0 range 800..831;
      cySrc at 0 range 832..863;
   end record;
   for tagEMRSTRETCHBLT'Size use 864;
   for tagEMRSTRETCHBLT'Alignment use 4;
   subtype EMRSTRETCHBLT is tagEMRSTRETCHBLT;
   type PEMRSTRETCHBLT is access all tagEMRSTRETCHBLT;
   type tagEMRMASKBLT is record
      emr_x : EMR;
      rclBounds : RECTL;
      xDest : LONG;
      yDest : LONG;
      cxDest : LONG;
      cyDest : LONG;
      dwRop : DWORD;
      xSrc : LONG;
      ySrc : LONG;
      xformSrc : XFORM;
      crBkColorSrc : COLORREF;
      iUsageSrc : DWORD;
      offBmiSrc : DWORD;
      cbBmiSrc : DWORD;
      offBitsSrc : DWORD;
      cbBitsSrc : DWORD;
      xMask : LONG;
      yMask : LONG;
      iUsageMask : DWORD;
      offBmiMask : DWORD;
      cbBmiMask : DWORD;
      offBitsMask : DWORD;
      cbBitsMask : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRMASKBLT);
   for tagEMRMASKBLT use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      xDest at 0 range 192..223;
      yDest at 0 range 224..255;
      cxDest at 0 range 256..287;
      cyDest at 0 range 288..319;
      dwRop at 0 range 320..351;
      xSrc at 0 range 352..383;
      ySrc at 0 range 384..415;
      xformSrc at 0 range 416..607;
      crBkColorSrc at 0 range 608..639;
      iUsageSrc at 0 range 640..671;
      offBmiSrc at 0 range 672..703;
      cbBmiSrc at 0 range 704..735;
      offBitsSrc at 0 range 736..767;
      cbBitsSrc at 0 range 768..799;
      xMask at 0 range 800..831;
      yMask at 0 range 832..863;
      iUsageMask at 0 range 864..895;
      offBmiMask at 0 range 896..927;
      cbBmiMask at 0 range 928..959;
      offBitsMask at 0 range 960..991;
      cbBitsMask at 0 range 992..1023;
   end record;
   for tagEMRMASKBLT'Size use 1024;
   for tagEMRMASKBLT'Alignment use 4;
   subtype EMRMASKBLT is tagEMRMASKBLT;
   type PEMRMASKBLT is access all tagEMRMASKBLT;
   type tagEMRPLGBLT_aptlDest_Array is array(1..3) of POINTL; -- Auto Generated Dependancy
   type tagEMRPLGBLT is record
      emr_x : EMR;
      rclBounds : RECTL;
      aptlDest : tagEMRPLGBLT_aptlDest_Array;
      xSrc : LONG;
      ySrc : LONG;
      cxSrc : LONG;
      cySrc : LONG;
      xformSrc : XFORM;
      crBkColorSrc : COLORREF;
      iUsageSrc : DWORD;
      offBmiSrc : DWORD;
      cbBmiSrc : DWORD;
      offBitsSrc : DWORD;
      cbBitsSrc : DWORD;
      xMask : LONG;
      yMask : LONG;
      iUsageMask : DWORD;
      offBmiMask : DWORD;
      cbBmiMask : DWORD;
      offBitsMask : DWORD;
      cbBitsMask : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRPLGBLT);
   for tagEMRPLGBLT use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      aptlDest at 0 range 192..383;
      xSrc at 0 range 384..415;
      ySrc at 0 range 416..447;
      cxSrc at 0 range 448..479;
      cySrc at 0 range 480..511;
      xformSrc at 0 range 512..703;
      crBkColorSrc at 0 range 704..735;
      iUsageSrc at 0 range 736..767;
      offBmiSrc at 0 range 768..799;
      cbBmiSrc at 0 range 800..831;
      offBitsSrc at 0 range 832..863;
      cbBitsSrc at 0 range 864..895;
      xMask at 0 range 896..927;
      yMask at 0 range 928..959;
      iUsageMask at 0 range 960..991;
      offBmiMask at 0 range 992..1023;
      cbBmiMask at 0 range 1024..1055;
      offBitsMask at 0 range 1056..1087;
      cbBitsMask at 0 range 1088..1119;
   end record;
   for tagEMRPLGBLT'Size use 1120;
   for tagEMRPLGBLT'Alignment use 4;
   subtype EMRPLGBLT is tagEMRPLGBLT;
   type PEMRPLGBLT is access all tagEMRPLGBLT;
   type tagEMRSETDIBITSTODEVICE is record
      emr_x : EMR;
      rclBounds : RECTL;
      xDest : LONG;
      yDest : LONG;
      xSrc : LONG;
      ySrc : LONG;
      cxSrc : LONG;
      cySrc : LONG;
      offBmiSrc : DWORD;
      cbBmiSrc : DWORD;
      offBitsSrc : DWORD;
      cbBitsSrc : DWORD;
      iUsageSrc : DWORD;
      iStartScan : DWORD;
      cScans : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETDIBITSTODEVICE);
   for tagEMRSETDIBITSTODEVICE use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      xDest at 0 range 192..223;
      yDest at 0 range 224..255;
      xSrc at 0 range 256..287;
      ySrc at 0 range 288..319;
      cxSrc at 0 range 320..351;
      cySrc at 0 range 352..383;
      offBmiSrc at 0 range 384..415;
      cbBmiSrc at 0 range 416..447;
      offBitsSrc at 0 range 448..479;
      cbBitsSrc at 0 range 480..511;
      iUsageSrc at 0 range 512..543;
      iStartScan at 0 range 544..575;
      cScans at 0 range 576..607;
   end record;
   for tagEMRSETDIBITSTODEVICE'Size use 608;
   for tagEMRSETDIBITSTODEVICE'Alignment use 4;
   subtype EMRSETDIBITSTODEVICE is tagEMRSETDIBITSTODEVICE;
   type PEMRSETDIBITSTODEVICE is access all tagEMRSETDIBITSTODEVICE;
   type tagEMRSTRETCHDIBITS is record
      emr_x : EMR;
      rclBounds : RECTL;
      xDest : LONG;
      yDest : LONG;
      xSrc : LONG;
      ySrc : LONG;
      cxSrc : LONG;
      cySrc : LONG;
      offBmiSrc : DWORD;
      cbBmiSrc : DWORD;
      offBitsSrc : DWORD;
      cbBitsSrc : DWORD;
      iUsageSrc : DWORD;
      dwRop : DWORD;
      cxDest : LONG;
      cyDest : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSTRETCHDIBITS);
   for tagEMRSTRETCHDIBITS use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      xDest at 0 range 192..223;
      yDest at 0 range 224..255;
      xSrc at 0 range 256..287;
      ySrc at 0 range 288..319;
      cxSrc at 0 range 320..351;
      cySrc at 0 range 352..383;
      offBmiSrc at 0 range 384..415;
      cbBmiSrc at 0 range 416..447;
      offBitsSrc at 0 range 448..479;
      cbBitsSrc at 0 range 480..511;
      iUsageSrc at 0 range 512..543;
      dwRop at 0 range 544..575;
      cxDest at 0 range 576..607;
      cyDest at 0 range 608..639;
   end record;
   for tagEMRSTRETCHDIBITS'Size use 640;
   for tagEMRSTRETCHDIBITS'Alignment use 4;
   subtype EMRSTRETCHDIBITS is tagEMRSTRETCHDIBITS;
   type PEMRSTRETCHDIBITS is access all tagEMRSTRETCHDIBITS;
   type tagEMREXTCREATEFONTINDIRECTW is record
      emr_x : EMR;
      ihFont : DWORD;
      elfw : EXTLOGFONTW;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMREXTCREATEFONTINDIRECTW);
   for tagEMREXTCREATEFONTINDIRECTW use record
      emr_x at 0 range 0..63;
      ihFont at 0 range 64..95;
      elfw at 0 range 96..2655;
   end record;
   for tagEMREXTCREATEFONTINDIRECTW'Size use 2656;
   for tagEMREXTCREATEFONTINDIRECTW'Alignment use 4;
   subtype EMREXTCREATEFONTINDIRECTW is tagEMREXTCREATEFONTINDIRECTW;
   type PEMREXTCREATEFONTINDIRECTW is access all tagEMREXTCREATEFONTINDIRECTW;
   type tagEMRCREATEPALETTE is record
      emr_x : EMR;
      ihPal : DWORD;
      lgpl : LOGPALETTE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRCREATEPALETTE);
   for tagEMRCREATEPALETTE use record
      emr_x at 0 range 0..63;
      ihPal at 0 range 64..95;
      lgpl at 0 range 96..159;
   end record;
   for tagEMRCREATEPALETTE'Size use 160;
   for tagEMRCREATEPALETTE'Alignment use 4;
   subtype EMRCREATEPALETTE is tagEMRCREATEPALETTE;
   type PEMRCREATEPALETTE is access all tagEMRCREATEPALETTE;
   type tagEMRCREATEPEN is record
      emr_x : EMR;
      ihPen : DWORD;
      lopn : LOGPEN;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRCREATEPEN);
   for tagEMRCREATEPEN use record
      emr_x at 0 range 0..63;
      ihPen at 0 range 64..95;
      lopn at 0 range 96..223;
   end record;
   for tagEMRCREATEPEN'Size use 224;
   for tagEMRCREATEPEN'Alignment use 4;
   subtype EMRCREATEPEN is tagEMRCREATEPEN;
   type PEMRCREATEPEN is access all tagEMRCREATEPEN;
   type tagEMREXTCREATEPEN is record
      emr_x : EMR;
      ihPen : DWORD;
      offBmi : DWORD;
      cbBmi : DWORD;
      offBits : DWORD;
      cbBits : DWORD;
      elp : EXTLOGPEN32;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMREXTCREATEPEN);
   for tagEMREXTCREATEPEN use record
      emr_x at 0 range 0..63;
      ihPen at 0 range 64..95;
      offBmi at 0 range 96..127;
      cbBmi at 0 range 128..159;
      offBits at 0 range 160..191;
      cbBits at 0 range 192..223;
      elp at 0 range 224..447;
   end record;
   for tagEMREXTCREATEPEN'Size use 448;
   for tagEMREXTCREATEPEN'Alignment use 4;
   subtype EMREXTCREATEPEN is tagEMREXTCREATEPEN;
   type PEMREXTCREATEPEN is access all tagEMREXTCREATEPEN;
   type tagEMRCREATEBRUSHINDIRECT is record
      emr_x : EMR;
      ihBrush : DWORD;
      lb : LOGBRUSH32;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRCREATEBRUSHINDIRECT);
   for tagEMRCREATEBRUSHINDIRECT use record
      emr_x at 0 range 0..63;
      ihBrush at 0 range 64..95;
      lb at 0 range 96..191;
   end record;
   for tagEMRCREATEBRUSHINDIRECT'Size use 192;
   for tagEMRCREATEBRUSHINDIRECT'Alignment use 4;
   subtype EMRCREATEBRUSHINDIRECT is tagEMRCREATEBRUSHINDIRECT;
   type PEMRCREATEBRUSHINDIRECT is access all tagEMRCREATEBRUSHINDIRECT;
   type tagEMRCREATEMONOBRUSH is record
      emr_x : EMR;
      ihBrush : DWORD;
      iUsage : DWORD;
      offBmi : DWORD;
      cbBmi : DWORD;
      offBits : DWORD;
      cbBits : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRCREATEMONOBRUSH);
   for tagEMRCREATEMONOBRUSH use record
      emr_x at 0 range 0..63;
      ihBrush at 0 range 64..95;
      iUsage at 0 range 96..127;
      offBmi at 0 range 128..159;
      cbBmi at 0 range 160..191;
      offBits at 0 range 192..223;
      cbBits at 0 range 224..255;
   end record;
   for tagEMRCREATEMONOBRUSH'Size use 256;
   for tagEMRCREATEMONOBRUSH'Alignment use 4;
   subtype EMRCREATEMONOBRUSH is tagEMRCREATEMONOBRUSH;
   type PEMRCREATEMONOBRUSH is access all tagEMRCREATEMONOBRUSH;
   type tagEMRCREATEDIBPATTERNBRUSHPT is record
      emr_x : EMR;
      ihBrush : DWORD;
      iUsage : DWORD;
      offBmi : DWORD;
      cbBmi : DWORD;
      offBits : DWORD;
      cbBits : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRCREATEDIBPATTERNBRUSHPT);
   for tagEMRCREATEDIBPATTERNBRUSHPT use record
      emr_x at 0 range 0..63;
      ihBrush at 0 range 64..95;
      iUsage at 0 range 96..127;
      offBmi at 0 range 128..159;
      cbBmi at 0 range 160..191;
      offBits at 0 range 192..223;
      cbBits at 0 range 224..255;
   end record;
   for tagEMRCREATEDIBPATTERNBRUSHPT'Size use 256;
   for tagEMRCREATEDIBPATTERNBRUSHPT'Alignment use 4;
   subtype EMRCREATEDIBPATTERNBRUSHPT is tagEMRCREATEDIBPATTERNBRUSHPT;
   type PEMRCREATEDIBPATTERNBRUSHPT is access all tagEMRCREATEDIBPATTERNBRUSHPT;
   type tagEMRFORMAT is record
      dSignature : DWORD;
      nVersion : DWORD;
      cbData : DWORD;
      offData : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRFORMAT);
   for tagEMRFORMAT use record
      dSignature at 0 range 0..31;
      nVersion at 0 range 32..63;
      cbData at 0 range 64..95;
      offData at 0 range 96..127;
   end record;
   for tagEMRFORMAT'Size use 128;
   for tagEMRFORMAT'Alignment use 4;
   subtype EMRFORMAT is tagEMRFORMAT;
   type PEMRFORMAT is access all tagEMRFORMAT;
   type tagEMRGLSRECORD_Data_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMRGLSRECORD is record
      emr_x : EMR;
      cbData : DWORD;
      Data : tagEMRGLSRECORD_Data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRGLSRECORD);
   for tagEMRGLSRECORD use record
      emr_x at 0 range 0..63;
      cbData at 0 range 64..95;
      Data at 0 range 96..103;
   end record;
   for tagEMRGLSRECORD'Size use 128;
   for tagEMRGLSRECORD'Alignment use 4;
   subtype EMRGLSRECORD is tagEMRGLSRECORD;
   type PEMRGLSRECORD is access all tagEMRGLSRECORD;
   type tagEMRGLSBOUNDEDRECORD_Data_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMRGLSBOUNDEDRECORD is record
      emr_x : EMR;
      rclBounds : RECTL;
      cbData : DWORD;
      Data : tagEMRGLSBOUNDEDRECORD_Data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRGLSBOUNDEDRECORD);
   for tagEMRGLSBOUNDEDRECORD use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      cbData at 0 range 192..223;
      Data at 0 range 224..231;
   end record;
   for tagEMRGLSBOUNDEDRECORD'Size use 256;
   for tagEMRGLSBOUNDEDRECORD'Alignment use 4;
   subtype EMRGLSBOUNDEDRECORD is tagEMRGLSBOUNDEDRECORD;
   type PEMRGLSBOUNDEDRECORD is access all tagEMRGLSBOUNDEDRECORD;
   type tagEMRPIXELFORMAT is record
      emr_x : EMR;
      pfd : PIXELFORMATDESCRIPTOR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRPIXELFORMAT);
   for tagEMRPIXELFORMAT use record
      emr_x at 0 range 0..63;
      pfd at 0 range 64..383;
   end record;
   for tagEMRPIXELFORMAT'Size use 384;
   for tagEMRPIXELFORMAT'Alignment use 4;
   subtype EMRPIXELFORMAT is tagEMRPIXELFORMAT;
   type PEMRPIXELFORMAT is access all tagEMRPIXELFORMAT;
   type tagEMRCREATECOLORSPACE is record
      emr_x : EMR;
      ihCS : DWORD;
      lcs : LOGCOLORSPACEA;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRCREATECOLORSPACE);
   for tagEMRCREATECOLORSPACE use record
      emr_x at 0 range 0..63;
      ihCS at 0 range 64..95;
      lcs at 0 range 96..2719;
   end record;
   for tagEMRCREATECOLORSPACE'Size use 2720;
   for tagEMRCREATECOLORSPACE'Alignment use 4;
   subtype EMRCREATECOLORSPACE is tagEMRCREATECOLORSPACE;
   type PEMRCREATECOLORSPACE is access all tagEMRCREATECOLORSPACE;
   type tagEMRSETCOLORSPACE is record
      emr_x : EMR;
      ihCS : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETCOLORSPACE);
   for tagEMRSETCOLORSPACE use record
      emr_x at 0 range 0..63;
      ihCS at 0 range 64..95;
   end record;
   for tagEMRSETCOLORSPACE'Size use 96;
   for tagEMRSETCOLORSPACE'Alignment use 4;
   subtype EMRSETCOLORSPACE is tagEMRSETCOLORSPACE;
   type PEMRSETCOLORSPACE is access all tagEMRSETCOLORSPACE;
   subtype EMRSELECTCOLORSPACE is tagEMRSETCOLORSPACE;
   type PEMRSELECTCOLORSPACE is access all tagEMRSETCOLORSPACE;
   subtype EMRDELETECOLORSPACE is tagEMRSETCOLORSPACE;
   type PEMRDELETECOLORSPACE is access all tagEMRSETCOLORSPACE;
   type tagEMREXTESCAPE_EscData_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMREXTESCAPE is record
      emr_x : EMR;
      iEscape : INT;
      cbEscData : INT;
      EscData : tagEMREXTESCAPE_EscData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMREXTESCAPE);
   for tagEMREXTESCAPE use record
      emr_x at 0 range 0..63;
      iEscape at 0 range 64..95;
      cbEscData at 0 range 96..127;
      EscData at 0 range 128..135;
   end record;
   for tagEMREXTESCAPE'Size use 160;
   for tagEMREXTESCAPE'Alignment use 4;
   subtype EMREXTESCAPE is tagEMREXTESCAPE;
   type PEMREXTESCAPE is access all tagEMREXTESCAPE;
   subtype EMRDRAWESCAPE is tagEMREXTESCAPE;
   type PEMRDRAWESCAPE is access all tagEMREXTESCAPE;
   type tagEMRNAMEDESCAPE_EscData_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMRNAMEDESCAPE is record
      emr_x : EMR;
      iEscape : INT;
      cbDriver : INT;
      cbEscData : INT;
      EscData : tagEMRNAMEDESCAPE_EscData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRNAMEDESCAPE);
   for tagEMRNAMEDESCAPE use record
      emr_x at 0 range 0..63;
      iEscape at 0 range 64..95;
      cbDriver at 0 range 96..127;
      cbEscData at 0 range 128..159;
      EscData at 0 range 160..167;
   end record;
   for tagEMRNAMEDESCAPE'Size use 192;
   for tagEMRNAMEDESCAPE'Alignment use 4;
   subtype EMRNAMEDESCAPE is tagEMRNAMEDESCAPE;
   type PEMRNAMEDESCAPE is access all tagEMRNAMEDESCAPE;
   type tagEMRSETICMPROFILE_Data_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMRSETICMPROFILE is record
      emr_x : EMR;
      dwFlags : DWORD;
      cbName : DWORD;
      cbData : DWORD;
      Data : tagEMRSETICMPROFILE_Data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRSETICMPROFILE);
   for tagEMRSETICMPROFILE use record
      emr_x at 0 range 0..63;
      dwFlags at 0 range 64..95;
      cbName at 0 range 96..127;
      cbData at 0 range 128..159;
      Data at 0 range 160..167;
   end record;
   for tagEMRSETICMPROFILE'Size use 192;
   for tagEMRSETICMPROFILE'Alignment use 4;
   subtype EMRSETICMPROFILE is tagEMRSETICMPROFILE;
   type PEMRSETICMPROFILE is access all tagEMRSETICMPROFILE;
   subtype EMRSETICMPROFILEA is tagEMRSETICMPROFILE;
   type PEMRSETICMPROFILEA is access all tagEMRSETICMPROFILE;
   subtype EMRSETICMPROFILEW is tagEMRSETICMPROFILE;
   type PEMRSETICMPROFILEW is access all tagEMRSETICMPROFILE;
   type tagEMRCREATECOLORSPACEW_Data_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagEMRCREATECOLORSPACEW is record
      emr_x : EMR;
      ihCS : DWORD;
      lcs : LOGCOLORSPACEW;
      dwFlags : DWORD;
      cbData : DWORD;
      Data : tagEMRCREATECOLORSPACEW_Data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRCREATECOLORSPACEW);
   for tagEMRCREATECOLORSPACEW use record
      emr_x at 0 range 0..63;
      ihCS at 0 range 64..95;
      lcs at 0 range 96..4799;
      dwFlags at 0 range 4800..4831;
      cbData at 0 range 4832..4863;
      Data at 0 range 4864..4871;
   end record;
   for tagEMRCREATECOLORSPACEW'Size use 4896;
   for tagEMRCREATECOLORSPACEW'Alignment use 4;
   subtype EMRCREATECOLORSPACEW is tagEMRCREATECOLORSPACEW;
   type PEMRCREATECOLORSPACEW is access all tagEMRCREATECOLORSPACEW;
   type tagCOLORMATCHTOTARGET_Data_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagCOLORMATCHTOTARGET is record
      emr_x : EMR;
      dwAction : DWORD;
      dwFlags : DWORD;
      cbName : DWORD;
      cbData : DWORD;
      Data : tagCOLORMATCHTOTARGET_Data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCOLORMATCHTOTARGET);
   for tagCOLORMATCHTOTARGET use record
      emr_x at 0 range 0..63;
      dwAction at 0 range 64..95;
      dwFlags at 0 range 96..127;
      cbName at 0 range 128..159;
      cbData at 0 range 160..191;
      Data at 0 range 192..199;
   end record;
   for tagCOLORMATCHTOTARGET'Size use 224;
   for tagCOLORMATCHTOTARGET'Alignment use 4;
   subtype EMRCOLORMATCHTOTARGET is tagCOLORMATCHTOTARGET;
   type PEMRCOLORMATCHTOTARGET is access all tagCOLORMATCHTOTARGET;
   type tagCOLORCORRECTPALETTE is record
      emr_x : EMR;
      ihPalette : DWORD;
      nFirstEntry : DWORD;
      nPalEntries : DWORD;
      nReserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCOLORCORRECTPALETTE);
   for tagCOLORCORRECTPALETTE use record
      emr_x at 0 range 0..63;
      ihPalette at 0 range 64..95;
      nFirstEntry at 0 range 96..127;
      nPalEntries at 0 range 128..159;
      nReserved at 0 range 160..191;
   end record;
   for tagCOLORCORRECTPALETTE'Size use 192;
   for tagCOLORCORRECTPALETTE'Alignment use 4;
   subtype EMRCOLORCORRECTPALETTE is tagCOLORCORRECTPALETTE;
   type PEMRCOLORCORRECTPALETTE is access all tagCOLORCORRECTPALETTE;
   type tagEMRALPHABLEND is record
      emr_x : EMR;
      rclBounds : RECTL;
      xDest : LONG;
      yDest : LONG;
      cxDest : LONG;
      cyDest : LONG;
      dwRop : DWORD;
      xSrc : LONG;
      ySrc : LONG;
      xformSrc : XFORM;
      crBkColorSrc : COLORREF;
      iUsageSrc : DWORD;
      offBmiSrc : DWORD;
      cbBmiSrc : DWORD;
      offBitsSrc : DWORD;
      cbBitsSrc : DWORD;
      cxSrc : LONG;
      cySrc : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRALPHABLEND);
   for tagEMRALPHABLEND use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      xDest at 0 range 192..223;
      yDest at 0 range 224..255;
      cxDest at 0 range 256..287;
      cyDest at 0 range 288..319;
      dwRop at 0 range 320..351;
      xSrc at 0 range 352..383;
      ySrc at 0 range 384..415;
      xformSrc at 0 range 416..607;
      crBkColorSrc at 0 range 608..639;
      iUsageSrc at 0 range 640..671;
      offBmiSrc at 0 range 672..703;
      cbBmiSrc at 0 range 704..735;
      offBitsSrc at 0 range 736..767;
      cbBitsSrc at 0 range 768..799;
      cxSrc at 0 range 800..831;
      cySrc at 0 range 832..863;
   end record;
   for tagEMRALPHABLEND'Size use 864;
   for tagEMRALPHABLEND'Alignment use 4;
   subtype EMRALPHABLEND is tagEMRALPHABLEND;
   type PEMRALPHABLEND is access all tagEMRALPHABLEND;
   type tagEMRGRADIENTFILL_Ver_Array is array(1..1) of TRIVERTEX; -- Auto Generated Dependancy
   type tagEMRGRADIENTFILL is record
      emr_x : EMR;
      rclBounds : RECTL;
      nVer : DWORD;
      nTri : DWORD;
      ulMode : ULONG;
      Ver : tagEMRGRADIENTFILL_Ver_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRGRADIENTFILL);
   for tagEMRGRADIENTFILL use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      nVer at 0 range 192..223;
      nTri at 0 range 224..255;
      ulMode at 0 range 256..287;
      Ver at 0 range 288..415;
   end record;
   for tagEMRGRADIENTFILL'Size use 416;
   for tagEMRGRADIENTFILL'Alignment use 4;
   subtype EMRGRADIENTFILL is tagEMRGRADIENTFILL;
   type PEMRGRADIENTFILL is access all tagEMRGRADIENTFILL;
   type tagEMRTRANSPARENTBLT is record
      emr_x : EMR;
      rclBounds : RECTL;
      xDest : LONG;
      yDest : LONG;
      cxDest : LONG;
      cyDest : LONG;
      dwRop : DWORD;
      xSrc : LONG;
      ySrc : LONG;
      xformSrc : XFORM;
      crBkColorSrc : COLORREF;
      iUsageSrc : DWORD;
      offBmiSrc : DWORD;
      cbBmiSrc : DWORD;
      offBitsSrc : DWORD;
      cbBitsSrc : DWORD;
      cxSrc : LONG;
      cySrc : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEMRTRANSPARENTBLT);
   for tagEMRTRANSPARENTBLT use record
      emr_x at 0 range 0..63;
      rclBounds at 0 range 64..191;
      xDest at 0 range 192..223;
      yDest at 0 range 224..255;
      cxDest at 0 range 256..287;
      cyDest at 0 range 288..319;
      dwRop at 0 range 320..351;
      xSrc at 0 range 352..383;
      ySrc at 0 range 384..415;
      xformSrc at 0 range 416..607;
      crBkColorSrc at 0 range 608..639;
      iUsageSrc at 0 range 640..671;
      offBmiSrc at 0 range 672..703;
      cbBmiSrc at 0 range 704..735;
      offBitsSrc at 0 range 736..767;
      cbBitsSrc at 0 range 768..799;
      cxSrc at 0 range 800..831;
      cySrc at 0 range 832..863;
   end record;
   for tagEMRTRANSPARENTBLT'Size use 864;
   for tagEMRTRANSPARENTBLT'Alignment use 4;
   subtype EMRTRANSPARENTBLT is tagEMRTRANSPARENTBLT;
   type PEMRTRANSPARENTBLT is access all tagEMRTRANSPARENTBLT;
   function wglCopyContext(
      param1 : HGLRC;
      param2 : HGLRC;
      param3 : UINT
   ) return BOOL;
   pragma import (Cpp,wglCopyContext,"wglCopyContext");
   function wglCreateContext(
      param1 : HDC
   ) return HGLRC;
   pragma import (Cpp,wglCreateContext,"wglCreateContext");
   function wglCreateLayerContext(
      param1 : HDC;
      param2 : Interfaces.C.Int
   ) return HGLRC;
   pragma import (Cpp,wglCreateLayerContext,"wglCreateLayerContext");
   function wglDeleteContext(
      param1 : HGLRC
   ) return BOOL;
   pragma import (Cpp,wglDeleteContext,"wglDeleteContext");
   function wglGetCurrentContext return HGLRC;
   pragma import (Cpp,wglGetCurrentContext,"wglGetCurrentContext");
   function wglGetCurrentDC return HDC;
   pragma import (Cpp,wglGetCurrentDC,"wglGetCurrentDC");
   function wglGetProcAddress(
      param1 : LPCSTR
   ) return PROC;
   pragma import (Cpp,wglGetProcAddress,"wglGetProcAddress");
   function wglMakeCurrent(
      param1 : HDC;
      param2 : HGLRC
   ) return BOOL;
   pragma import (Cpp,wglMakeCurrent,"wglMakeCurrent");
   function wglShareLists(
      param1 : HGLRC;
      param2 : HGLRC
   ) return BOOL;
   pragma import (Cpp,wglShareLists,"wglShareLists");
   function wglUseFontBitmapsA(
      param1 : HDC;
      param2 : DWORD;
      param3 : DWORD;
      param4 : DWORD
   ) return BOOL;
   pragma import (Cpp,wglUseFontBitmapsA,"wglUseFontBitmapsA");
   function wglUseFontBitmapsW(
      param1 : HDC;
      param2 : DWORD;
      param3 : DWORD;
      param4 : DWORD
   ) return BOOL;
   pragma import (Cpp,wglUseFontBitmapsW,"wglUseFontBitmapsW");
   function SwapBuffers(
      param1 : HDC
   ) return BOOL;
   pragma import (Cpp,SwapBuffers,"SwapBuffers");
   type POINTFLOAT_x is record
      x : FLOAT;
      y : FLOAT;
   end record;
   pragma Convention (C_Pass_By_Copy,POINTFLOAT_x);
   for POINTFLOAT_x use record
      x at 0 range 0..31;
      y at 0 range 32..63;
   end record;
   for POINTFLOAT_x'Size use 64;
   for POINTFLOAT_x'Alignment use 4;
   subtype POINTFLOAT is POINTFLOAT_x;
   type PPOINTFLOAT is access all POINTFLOAT_x;
   type GLYPHMETRICSFLOAT_x is record
      gmfBlackBoxX : FLOAT;
      gmfBlackBoxY : FLOAT;
      gmfptGlyphOrigin : POINTFLOAT;
      gmfCellIncX : FLOAT;
      gmfCellIncY : FLOAT;
   end record;
   pragma Convention (C_Pass_By_Copy,GLYPHMETRICSFLOAT_x);
   for GLYPHMETRICSFLOAT_x use record
      gmfBlackBoxX at 0 range 0..31;
      gmfBlackBoxY at 0 range 32..63;
      gmfptGlyphOrigin at 0 range 64..127;
      gmfCellIncX at 0 range 128..159;
      gmfCellIncY at 0 range 160..191;
   end record;
   for GLYPHMETRICSFLOAT_x'Size use 192;
   for GLYPHMETRICSFLOAT_x'Alignment use 4;
   subtype GLYPHMETRICSFLOAT is GLYPHMETRICSFLOAT_x;
   type PGLYPHMETRICSFLOAT is access all GLYPHMETRICSFLOAT_x;
   type LPGLYPHMETRICSFLOAT is access all GLYPHMETRICSFLOAT_x;
   function wglUseFontOutlinesA(
      param1 : HDC;
      param2 : DWORD;
      param3 : DWORD;
      param4 : DWORD;
      param5 : FLOAT;
      param6 : FLOAT;
      param7 : Interfaces.C.Int;
      param8 : LPGLYPHMETRICSFLOAT
   ) return BOOL;
   pragma import (Cpp,wglUseFontOutlinesA,"wglUseFontOutlinesA");
   function wglUseFontOutlinesW(
      param1 : HDC;
      param2 : DWORD;
      param3 : DWORD;
      param4 : DWORD;
      param5 : FLOAT;
      param6 : FLOAT;
      param7 : Interfaces.C.Int;
      param8 : LPGLYPHMETRICSFLOAT
   ) return BOOL;
   pragma import (Cpp,wglUseFontOutlinesW,"wglUseFontOutlinesW");
   type tagLAYERPLANEDESCRIPTOR is record
      nSize : WORD;
      nVersion : WORD;
      dwFlags : DWORD;
      iPixelType : BYTE;
      cColorBits : BYTE;
      cRedBits : BYTE;
      cRedShift : BYTE;
      cGreenBits : BYTE;
      cGreenShift : BYTE;
      cBlueBits : BYTE;
      cBlueShift : BYTE;
      cAlphaBits : BYTE;
      cAlphaShift : BYTE;
      cAccumBits : BYTE;
      cAccumRedBits : BYTE;
      cAccumGreenBits : BYTE;
      cAccumBlueBits : BYTE;
      cAccumAlphaBits : BYTE;
      cDepthBits : BYTE;
      cStencilBits : BYTE;
      cAuxBuffers : BYTE;
      iLayerPlane : BYTE;
      bReserved : BYTE;
      crTransparent : COLORREF;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLAYERPLANEDESCRIPTOR);
   for tagLAYERPLANEDESCRIPTOR use record
      nSize at 0 range 0..15;
      nVersion at 0 range 16..31;
      dwFlags at 0 range 32..63;
      iPixelType at 0 range 64..71;
      cColorBits at 0 range 72..79;
      cRedBits at 0 range 80..87;
      cRedShift at 0 range 88..95;
      cGreenBits at 0 range 96..103;
      cGreenShift at 0 range 104..111;
      cBlueBits at 0 range 112..119;
      cBlueShift at 0 range 120..127;
      cAlphaBits at 0 range 128..135;
      cAlphaShift at 0 range 136..143;
      cAccumBits at 0 range 144..151;
      cAccumRedBits at 0 range 152..159;
      cAccumGreenBits at 0 range 160..167;
      cAccumBlueBits at 0 range 168..175;
      cAccumAlphaBits at 0 range 176..183;
      cDepthBits at 0 range 184..191;
      cStencilBits at 0 range 192..199;
      cAuxBuffers at 0 range 200..207;
      iLayerPlane at 0 range 208..215;
      bReserved at 0 range 216..223;
      crTransparent at 0 range 224..255;
   end record;
   for tagLAYERPLANEDESCRIPTOR'Size use 256;
   for tagLAYERPLANEDESCRIPTOR'Alignment use 4;
   subtype LAYERPLANEDESCRIPTOR is tagLAYERPLANEDESCRIPTOR;
   type PLAYERPLANEDESCRIPTOR is access all tagLAYERPLANEDESCRIPTOR;
   type LPLAYERPLANEDESCRIPTOR is access all tagLAYERPLANEDESCRIPTOR;
   function wglDescribeLayerPlane(
      param1 : HDC;
      param2 : Interfaces.C.Int;
      param3 : Interfaces.C.Int;
      param4 : UINT;
      param5 : LPLAYERPLANEDESCRIPTOR
   ) return BOOL;
   pragma import (Cpp,wglDescribeLayerPlane,"wglDescribeLayerPlane");
   function wglSetLayerPaletteEntries(
      param1 : HDC;
      param2 : Interfaces.C.Int;
      param3 : Interfaces.C.Int;
      param4 : Interfaces.C.Int;
      param5 : access constant COLORREF
   ) return Interfaces.C.Int;
   pragma import (Cpp,wglSetLayerPaletteEntries,"wglSetLayerPaletteEntries");
   function wglGetLayerPaletteEntries(
      param1 : HDC;
      param2 : Interfaces.C.Int;
      param3 : Interfaces.C.Int;
      param4 : Interfaces.C.Int;
      param5 : access COLORREF
   ) return Interfaces.C.Int;
   pragma import (Cpp,wglGetLayerPaletteEntries,"wglGetLayerPaletteEntries");
   function wglRealizeLayerPalette(
      param1 : HDC;
      param2 : Interfaces.C.Int;
      param3 : BOOL
   ) return BOOL;
   pragma import (Cpp,wglRealizeLayerPalette,"wglRealizeLayerPalette");
   function wglSwapLayerBuffers(
      param1 : HDC;
      param2 : UINT
   ) return BOOL;
   pragma import (Cpp,wglSwapLayerBuffers,"wglSwapLayerBuffers");
   type WGLSWAP_x is record
      hdc_x : HDC;
      uiFlags : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,WGLSWAP_x);
   for WGLSWAP_x use record
      hdc_x at 0 range 0..63;
      uiFlags at 0 range 64..95;
   end record;
   for WGLSWAP_x'Size use 128;
   for WGLSWAP_x'Alignment use 8;
   subtype WGLSWAP is WGLSWAP_x;
   type PWGLSWAP is access all WGLSWAP_x;
   type LPWGLSWAP is access all WGLSWAP_x;
   function wglSwapMultipleBuffers(
      param1 : UINT;
      param2 : access constant WGLSWAP
   ) return DWORD;
   pragma import (Cpp,wglSwapMultipleBuffers,"wglSwapMultipleBuffers");
   -- #include <winuser.h>
   subtype HDWP is HANDLE;
   subtype MENUTEMPLATEA is Void;
   subtype MENUTEMPLATEW is Void;
   subtype MENUTEMPLATE is MENUTEMPLATEA;
   subtype LPMENUTEMPLATEA is PVOID;
   subtype LPMENUTEMPLATEW is PVOID;
   subtype LPMENUTEMPLATE is LPMENUTEMPLATEA;
   type WNDPROC is access function (p1 : HWND ; p2 : UINT ; p3 : WPARAM ; p4 : LPARAM) return LRESULT; -- LRESULT (HWND, UINT, WPARAM, LPARAM)
   pragma Convention(C,WNDPROC);
   type DLGPROC is access function (p1 : HWND ; p2 : UINT ; p3 : WPARAM ; p4 : LPARAM) return INT_PTR; -- INT_PTR (HWND, UINT, WPARAM, LPARAM)
   pragma Convention(C,DLGPROC);
   type TIMERPROC is access procedure (p1 : HWND ; p2 : UINT ; p3 : UINT_PTR ; p4 : DWORD); -- void (HWND, UINT, UINT_PTR, DWORD)
   pragma Convention(C,TIMERPROC);
   type GRAYSTRINGPROC is access function (p1 : HDC ; p2 : LPARAM ; p3 : int) return BOOL; -- BOOL (HDC, LPARAM, int)
   pragma Convention(C,GRAYSTRINGPROC);
   type WNDENUMPROC is access function (p1 : HWND ; p2 : LPARAM) return BOOL; -- BOOL (HWND, LPARAM)
   pragma Convention(C,WNDENUMPROC);
   type HOOKPROC is access function (p1 : int ; p2 : WPARAM ; p3 : LPARAM) return LRESULT; -- LRESULT (int, WPARAM, LPARAM)
   pragma Convention(C,HOOKPROC);
   type SENDASYNCPROC is access procedure (p1 : HWND ; p2 : UINT ; p3 : ULONG_PTR ; p4 : LRESULT); -- void (HWND, UINT, ULONG_PTR, LRESULT)
   pragma Convention(C,SENDASYNCPROC);
   type PROPENUMPROCA is access function (p1 : HWND ; p2 : LPCSTR ; p3 : HANDLE) return BOOL; -- BOOL (HWND, LPCSTR, HANDLE)
   pragma Convention(C,PROPENUMPROCA);
   type PROPENUMPROCW is access function (p1 : HWND ; p2 : LPCWSTR ; p3 : HANDLE) return BOOL; -- BOOL (HWND, LPCWSTR, HANDLE)
   pragma Convention(C,PROPENUMPROCW);
   type PROPENUMPROCEXA is access function (p1 : HWND ; p2 : LPSTR ; p3 : HANDLE ; p4 : ULONG_PTR) return BOOL; -- BOOL (HWND, LPSTR, HANDLE, ULONG_PTR)
   pragma Convention(C,PROPENUMPROCEXA);
   type PROPENUMPROCEXW is access function (p1 : HWND ; p2 : LPWSTR ; p3 : HANDLE ; p4 : ULONG_PTR) return BOOL; -- BOOL (HWND, LPWSTR, HANDLE, ULONG_PTR)
   pragma Convention(C,PROPENUMPROCEXW);
   type EDITWORDBREAKPROCA is access function (p1 : LPSTR ; p2 : int ; p3 : int ; p4 : int) return int; -- int (LPSTR, int, int, int)
   pragma Convention(C,EDITWORDBREAKPROCA);
   type EDITWORDBREAKPROCW is access function (p1 : LPWSTR ; p2 : int ; p3 : int ; p4 : int) return int; -- int (LPWSTR, int, int, int)
   pragma Convention(C,EDITWORDBREAKPROCW);
   type DRAWSTATEPROC is access function (p1 : HDC ; p2 : LPARAM ; p3 : WPARAM ; p4 : int ; p5 : int) return BOOL; -- BOOL (HDC, LPARAM, WPARAM, int, int)
   pragma Convention(C,DRAWSTATEPROC);
   subtype PROPENUMPROC is PROPENUMPROCA;
   subtype PROPENUMPROCEX is PROPENUMPROCEXA;
   subtype EDITWORDBREAKPROC is EDITWORDBREAKPROCA;
   type NAMEENUMPROCA is access function (p1 : LPSTR ; p2 : LPARAM) return BOOL; -- BOOL (LPSTR, LPARAM)
   pragma Convention(C,NAMEENUMPROCA);
   type NAMEENUMPROCW is access function (p1 : LPWSTR ; p2 : LPARAM) return BOOL; -- BOOL (LPWSTR, LPARAM)
   pragma Convention(C,NAMEENUMPROCW);
   subtype WINSTAENUMPROCA is NAMEENUMPROCA;
   subtype DESKTOPENUMPROCA is NAMEENUMPROCA;
   subtype WINSTAENUMPROCW is NAMEENUMPROCW;
   subtype DESKTOPENUMPROCW is NAMEENUMPROCW;
   subtype WINSTAENUMPROC is WINSTAENUMPROCA;
   subtype DESKTOPENUMPROC is DESKTOPENUMPROCA;
   function wvsprintfA(
      param1 : LPSTR;
      param2 : LPCSTR;
      arglist : va_list
   ) return Interfaces.C.Int;
   pragma import (Cpp,wvsprintfA,"wvsprintfA");
   function wvsprintfW(
      param1 : LPWSTR;
      param2 : LPCWSTR;
      arglist : va_list
   ) return Interfaces.C.Int;
   pragma import (Cpp,wvsprintfW,"wvsprintfW");
   -- wsprintfA(...); -- variadic function not supported
   -- wsprintfW(...); -- variadic function not supported
   type tagCREATESTRUCTA;
   type tagCBT_CREATEWNDA is record
      lpcs : access tagCREATESTRUCTA;
      hwndInsertAfter : HWND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCBT_CREATEWNDA);
   for tagCBT_CREATEWNDA use record
      lpcs at 0 range 0..63;
      hwndInsertAfter at 0 range 64..127;
   end record;
   for tagCBT_CREATEWNDA'Size use 128;
   for tagCBT_CREATEWNDA'Alignment use 8;
   subtype CBT_CREATEWNDA is tagCBT_CREATEWNDA;
   type LPCBT_CREATEWNDA is access all tagCBT_CREATEWNDA;
   type tagCREATESTRUCTW;
   type tagCBT_CREATEWNDW is record
      lpcs : access tagCREATESTRUCTW;
      hwndInsertAfter : HWND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCBT_CREATEWNDW);
   for tagCBT_CREATEWNDW use record
      lpcs at 0 range 0..63;
      hwndInsertAfter at 0 range 64..127;
   end record;
   for tagCBT_CREATEWNDW'Size use 128;
   for tagCBT_CREATEWNDW'Alignment use 8;
   subtype CBT_CREATEWNDW is tagCBT_CREATEWNDW;
   type LPCBT_CREATEWNDW is access all tagCBT_CREATEWNDW;
   subtype CBT_CREATEWND is CBT_CREATEWNDA;
   subtype LPCBT_CREATEWND is LPCBT_CREATEWNDA;
   type tagCBTACTIVATESTRUCT is record
      fMouse : BOOL;
      hWndActive : HWND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCBTACTIVATESTRUCT);
   for tagCBTACTIVATESTRUCT use record
      fMouse at 0 range 0..31;
      hWndActive at 0 range 64..127;
   end record;
   for tagCBTACTIVATESTRUCT'Size use 128;
   for tagCBTACTIVATESTRUCT'Alignment use 8;
   subtype CBTACTIVATESTRUCT is tagCBTACTIVATESTRUCT;
   type LPCBTACTIVATESTRUCT is access all tagCBTACTIVATESTRUCT;
   type tagWTSSESSION_NOTIFICATION is record
      cbSize : DWORD;
      dwSessionId : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagWTSSESSION_NOTIFICATION);
   for tagWTSSESSION_NOTIFICATION use record
      cbSize at 0 range 0..31;
      dwSessionId at 0 range 32..63;
   end record;
   for tagWTSSESSION_NOTIFICATION'Size use 64;
   for tagWTSSESSION_NOTIFICATION'Alignment use 4;
   subtype WTSSESSION_NOTIFICATION is tagWTSSESSION_NOTIFICATION;
   type PWTSSESSION_NOTIFICATION is access all tagWTSSESSION_NOTIFICATION;
   type SHELLHOOKINFO is record
      hwnd_x : HWND;
      rc : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,SHELLHOOKINFO);
   for SHELLHOOKINFO use record
      hwnd_x at 0 range 0..63;
      rc at 0 range 64..191;
   end record;
   for SHELLHOOKINFO'Size use 192;
   for SHELLHOOKINFO'Alignment use 8;
   type LPSHELLHOOKINFO is access all SHELLHOOKINFO;
   type tagEVENTMSG is record
      message : UINT;
      paramL : UINT;
      paramH : UINT;
      time : DWORD;
      hwnd_x : HWND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEVENTMSG);
   for tagEVENTMSG use record
      message at 0 range 0..31;
      paramL at 0 range 32..63;
      paramH at 0 range 64..95;
      time at 0 range 96..127;
      hwnd_x at 0 range 128..191;
   end record;
   for tagEVENTMSG'Size use 192;
   for tagEVENTMSG'Alignment use 8;
   subtype EVENTMSG is tagEVENTMSG;
   type PEVENTMSGMSG is access all tagEVENTMSG;
   type NPEVENTMSGMSG is access all tagEVENTMSG;
   type LPEVENTMSGMSG is access all tagEVENTMSG;
   type PEVENTMSG is access all tagEVENTMSG;
   type NPEVENTMSG is access all tagEVENTMSG;
   type LPEVENTMSG is access all tagEVENTMSG;
   type tagCWPSTRUCT is record
      lParam_x : LPARAM;
      wParam_x : WPARAM;
      message : UINT;
      hwnd_x : HWND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCWPSTRUCT);
   for tagCWPSTRUCT use record
      lParam_x at 0 range 0..63;
      wParam_x at 0 range 64..127;
      message at 0 range 128..159;
      hwnd_x at 0 range 192..255;
   end record;
   for tagCWPSTRUCT'Size use 256;
   for tagCWPSTRUCT'Alignment use 8;
   subtype CWPSTRUCT is tagCWPSTRUCT;
   type PCWPSTRUCT is access all tagCWPSTRUCT;
   type NPCWPSTRUCT is access all tagCWPSTRUCT;
   type LPCWPSTRUCT is access all tagCWPSTRUCT;
   type tagCWPRETSTRUCT is record
      lResult_x : LRESULT;
      lParam_x : LPARAM;
      wParam_x : WPARAM;
      message : UINT;
      hwnd_x : HWND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCWPRETSTRUCT);
   for tagCWPRETSTRUCT use record
      lResult_x at 0 range 0..63;
      lParam_x at 0 range 64..127;
      wParam_x at 0 range 128..191;
      message at 0 range 192..223;
      hwnd_x at 0 range 256..319;
   end record;
   for tagCWPRETSTRUCT'Size use 320;
   for tagCWPRETSTRUCT'Alignment use 8;
   subtype CWPRETSTRUCT is tagCWPRETSTRUCT;
   type PCWPRETSTRUCT is access all tagCWPRETSTRUCT;
   type NPCWPRETSTRUCT is access all tagCWPRETSTRUCT;
   type LPCWPRETSTRUCT is access all tagCWPRETSTRUCT;
   type tagKBDLLHOOKSTRUCT is record
      vkCode : DWORD;
      scanCode : DWORD;
      flags : DWORD;
      time : DWORD;
      dwExtraInfo : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagKBDLLHOOKSTRUCT);
   for tagKBDLLHOOKSTRUCT use record
      vkCode at 0 range 0..31;
      scanCode at 0 range 32..63;
      flags at 0 range 64..95;
      time at 0 range 96..127;
      dwExtraInfo at 0 range 128..191;
   end record;
   for tagKBDLLHOOKSTRUCT'Size use 192;
   for tagKBDLLHOOKSTRUCT'Alignment use 8;
   subtype KBDLLHOOKSTRUCT is tagKBDLLHOOKSTRUCT;
   type LPKBDLLHOOKSTRUCT is access all tagKBDLLHOOKSTRUCT;
   type PKBDLLHOOKSTRUCT is access all tagKBDLLHOOKSTRUCT;
   type tagMSLLHOOKSTRUCT is record
      pt : POINT;
      mouseData : DWORD;
      flags : DWORD;
      time : DWORD;
      dwExtraInfo : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMSLLHOOKSTRUCT);
   for tagMSLLHOOKSTRUCT use record
      pt at 0 range 0..63;
      mouseData at 0 range 64..95;
      flags at 0 range 96..127;
      time at 0 range 128..159;
      dwExtraInfo at 0 range 192..255;
   end record;
   for tagMSLLHOOKSTRUCT'Size use 256;
   for tagMSLLHOOKSTRUCT'Alignment use 8;
   subtype MSLLHOOKSTRUCT is tagMSLLHOOKSTRUCT;
   type LPMSLLHOOKSTRUCT is access all tagMSLLHOOKSTRUCT;
   type PMSLLHOOKSTRUCT is access all tagMSLLHOOKSTRUCT;
   type tagDEBUGHOOKINFO is record
      idThread : DWORD;
      idThreadInstaller : DWORD;
      lParam_x : LPARAM;
      wParam_x : WPARAM;
      code : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDEBUGHOOKINFO);
   for tagDEBUGHOOKINFO use record
      idThread at 0 range 0..31;
      idThreadInstaller at 0 range 32..63;
      lParam_x at 0 range 64..127;
      wParam_x at 0 range 128..191;
      code at 0 range 192..223;
   end record;
   for tagDEBUGHOOKINFO'Size use 256;
   for tagDEBUGHOOKINFO'Alignment use 8;
   subtype DEBUGHOOKINFO is tagDEBUGHOOKINFO;
   type PDEBUGHOOKINFO is access all tagDEBUGHOOKINFO;
   type NPDEBUGHOOKINFO is access all tagDEBUGHOOKINFO;
   type LPDEBUGHOOKINFO is access all tagDEBUGHOOKINFO;
   type tagMOUSEHOOKSTRUCT is record
      pt : POINT;
      hwnd_x : HWND;
      wHitTestCode : UINT;
      dwExtraInfo : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMOUSEHOOKSTRUCT);
   for tagMOUSEHOOKSTRUCT use record
      pt at 0 range 0..63;
      hwnd_x at 0 range 64..127;
      wHitTestCode at 0 range 128..159;
      dwExtraInfo at 0 range 192..255;
   end record;
   for tagMOUSEHOOKSTRUCT'Size use 256;
   for tagMOUSEHOOKSTRUCT'Alignment use 8;
   subtype MOUSEHOOKSTRUCT is tagMOUSEHOOKSTRUCT;
   type LPMOUSEHOOKSTRUCT is access all tagMOUSEHOOKSTRUCT;
   type PMOUSEHOOKSTRUCT is access all tagMOUSEHOOKSTRUCT;
   type tagMOUSEHOOKSTRUCTEX is record -- Base = [struct tagMOUSEHOOKSTRUCT]
      m_Base : tagMOUSEHOOKSTRUCT;
      mouseData : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMOUSEHOOKSTRUCTEX);
   for tagMOUSEHOOKSTRUCTEX use record
      m_Base at 0 range 0..255;
      mouseData at 0 range 256..287;
   end record;
   for tagMOUSEHOOKSTRUCTEX'Size use 320;
   for tagMOUSEHOOKSTRUCTEX'Alignment use 8;
   subtype MOUSEHOOKSTRUCTEX is tagMOUSEHOOKSTRUCTEX;
   type LPMOUSEHOOKSTRUCTEX is access all tagMOUSEHOOKSTRUCTEX;
   type PMOUSEHOOKSTRUCTEX is access all tagMOUSEHOOKSTRUCTEX;
   type tagHARDWAREHOOKSTRUCT is record
      hwnd_x : HWND;
      message : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagHARDWAREHOOKSTRUCT);
   for tagHARDWAREHOOKSTRUCT use record
      hwnd_x at 0 range 0..63;
      message at 0 range 64..95;
      wParam_x at 0 range 128..191;
      lParam_x at 0 range 192..255;
   end record;
   for tagHARDWAREHOOKSTRUCT'Size use 256;
   for tagHARDWAREHOOKSTRUCT'Alignment use 8;
   subtype HARDWAREHOOKSTRUCT is tagHARDWAREHOOKSTRUCT;
   type LPHARDWAREHOOKSTRUCT is access all tagHARDWAREHOOKSTRUCT;
   type PHARDWAREHOOKSTRUCT is access all tagHARDWAREHOOKSTRUCT;
   function LoadKeyboardLayoutA(
      pwszKLID : LPCSTR;
      Flags : UINT
   ) return HKL;
   pragma import (Cpp,LoadKeyboardLayoutA,"LoadKeyboardLayoutA");
   function LoadKeyboardLayoutW(
      pwszKLID : LPCWSTR;
      Flags : UINT
   ) return HKL;
   pragma import (Cpp,LoadKeyboardLayoutW,"LoadKeyboardLayoutW");
   function ActivateKeyboardLayout(
      hkl_x : HKL;
      Flags : UINT
   ) return HKL;
   pragma import (Cpp,ActivateKeyboardLayout,"ActivateKeyboardLayout");
   function ToUnicodeEx(
      wVirtKey : UINT;
      wScanCode : UINT;
      lpKeyState : access constant BYTE;
      pwszBuff : LPWSTR;
      cchBuff : Interfaces.C.Int;
      wFlags : UINT;
      dwhkl : HKL
   ) return Interfaces.C.Int;
   pragma import (Cpp,ToUnicodeEx,"ToUnicodeEx");
   function UnloadKeyboardLayout(
      hkl_x : HKL
   ) return BOOL;
   pragma import (Cpp,UnloadKeyboardLayout,"UnloadKeyboardLayout");
   function GetKeyboardLayoutNameA(
      pwszKLID : LPSTR
   ) return BOOL;
   pragma import (Cpp,GetKeyboardLayoutNameA,"GetKeyboardLayoutNameA");
   function GetKeyboardLayoutNameW(
      pwszKLID : LPWSTR
   ) return BOOL;
   pragma import (Cpp,GetKeyboardLayoutNameW,"GetKeyboardLayoutNameW");
   function GetKeyboardLayoutList(
      nBuff : Interfaces.C.Int;
      lpList : access HKL
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetKeyboardLayoutList,"GetKeyboardLayoutList");
   function GetKeyboardLayout(
      idThread : DWORD
   ) return HKL;
   pragma import (Cpp,GetKeyboardLayout,"GetKeyboardLayout");
   type tagMOUSEMOVEPOINT is record
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      time : DWORD;
      dwExtraInfo : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMOUSEMOVEPOINT);
   for tagMOUSEMOVEPOINT use record
      x at 0 range 0..31;
      y at 0 range 32..63;
      time at 0 range 64..95;
      dwExtraInfo at 0 range 128..191;
   end record;
   for tagMOUSEMOVEPOINT'Size use 192;
   for tagMOUSEMOVEPOINT'Alignment use 8;
   subtype MOUSEMOVEPOINT is tagMOUSEMOVEPOINT;
   type PMOUSEMOVEPOINT is access all tagMOUSEMOVEPOINT;
   type LPMOUSEMOVEPOINT is access all tagMOUSEMOVEPOINT;
   function GetMouseMovePointsEx(
      cbSize : UINT;
      lppt : LPMOUSEMOVEPOINT;
      lpptBuf : LPMOUSEMOVEPOINT;
      nBufPoints : Interfaces.C.Int;
      resolution : DWORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetMouseMovePointsEx,"GetMouseMovePointsEx");
   function CreateDesktopA(
      lpszDesktop : LPCSTR;
      lpszDevice : LPCSTR;
      pDevmode_x : access DEVMODEA;
      dwFlags : DWORD;
      dwDesiredAccess : ACCESS_MASK;
      lpsa : LPSECURITY_ATTRIBUTES
   ) return HDESK;
   pragma import (Cpp,CreateDesktopA,"CreateDesktopA");
   function CreateDesktopW(
      lpszDesktop : LPCWSTR;
      lpszDevice : LPCWSTR;
      pDevmode_x : access DEVMODEW;
      dwFlags : DWORD;
      dwDesiredAccess : ACCESS_MASK;
      lpsa : LPSECURITY_ATTRIBUTES
   ) return HDESK;
   pragma import (Cpp,CreateDesktopW,"CreateDesktopW");
   function CreateDesktopExA(
      lpszDesktop : LPCSTR;
      lpszDevice : LPCSTR;
      pDevmode_x : access DEVMODEA;
      dwFlags : DWORD;
      dwDesiredAccess : ACCESS_MASK;
      lpsa : LPSECURITY_ATTRIBUTES;
      ulHeapSize : ULONG;
      pvoid_x : PVOID
   ) return HDESK;
   pragma import (Cpp,CreateDesktopExA,"CreateDesktopExA");
   function CreateDesktopExW(
      lpszDesktop : LPCWSTR;
      lpszDevice : LPCWSTR;
      pDevmode_x : access DEVMODEW;
      dwFlags : DWORD;
      dwDesiredAccess : ACCESS_MASK;
      lpsa : LPSECURITY_ATTRIBUTES;
      ulHeapSize : ULONG;
      pvoid_x : PVOID
   ) return HDESK;
   pragma import (Cpp,CreateDesktopExW,"CreateDesktopExW");
   function OpenDesktopA(
      lpszDesktop : LPCSTR;
      dwFlags : DWORD;
      fInherit : BOOL;
      dwDesiredAccess : ACCESS_MASK
   ) return HDESK;
   pragma import (Cpp,OpenDesktopA,"OpenDesktopA");
   function OpenDesktopW(
      lpszDesktop : LPCWSTR;
      dwFlags : DWORD;
      fInherit : BOOL;
      dwDesiredAccess : ACCESS_MASK
   ) return HDESK;
   pragma import (Cpp,OpenDesktopW,"OpenDesktopW");
   function OpenInputDesktop(
      dwFlags : DWORD;
      fInherit : BOOL;
      dwDesiredAccess : ACCESS_MASK
   ) return HDESK;
   pragma import (Cpp,OpenInputDesktop,"OpenInputDesktop");
   function EnumDesktopsA(
      hwinsta_x : HWINSTA;
      lpEnumFunc : DESKTOPENUMPROCA;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumDesktopsA,"EnumDesktopsA");
   function EnumDesktopsW(
      hwinsta_x : HWINSTA;
      lpEnumFunc : DESKTOPENUMPROCW;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumDesktopsW,"EnumDesktopsW");
   function EnumDesktopWindows(
      hDesktop : HDESK;
      lpfn : WNDENUMPROC;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumDesktopWindows,"EnumDesktopWindows");
   function SwitchDesktop(
      hDesktop : HDESK
   ) return BOOL;
   pragma import (Cpp,SwitchDesktop,"SwitchDesktop");
   function SetThreadDesktop(
      hDesktop : HDESK
   ) return BOOL;
   pragma import (Cpp,SetThreadDesktop,"SetThreadDesktop");
   function CloseDesktop(
      hDesktop : HDESK
   ) return BOOL;
   pragma import (Cpp,CloseDesktop,"CloseDesktop");
   function GetThreadDesktop(
      dwThreadId : DWORD
   ) return HDESK;
   pragma import (Cpp,GetThreadDesktop,"GetThreadDesktop");
   function CreateWindowStationA(
      lpwinsta : LPCSTR;
      dwFlags : DWORD;
      dwDesiredAccess : ACCESS_MASK;
      lpsa : LPSECURITY_ATTRIBUTES
   ) return HWINSTA;
   pragma import (Cpp,CreateWindowStationA,"CreateWindowStationA");
   function CreateWindowStationW(
      lpwinsta : LPCWSTR;
      dwFlags : DWORD;
      dwDesiredAccess : ACCESS_MASK;
      lpsa : LPSECURITY_ATTRIBUTES
   ) return HWINSTA;
   pragma import (Cpp,CreateWindowStationW,"CreateWindowStationW");
   function OpenWindowStationA(
      lpszWinSta : LPCSTR;
      fInherit : BOOL;
      dwDesiredAccess : ACCESS_MASK
   ) return HWINSTA;
   pragma import (Cpp,OpenWindowStationA,"OpenWindowStationA");
   function OpenWindowStationW(
      lpszWinSta : LPCWSTR;
      fInherit : BOOL;
      dwDesiredAccess : ACCESS_MASK
   ) return HWINSTA;
   pragma import (Cpp,OpenWindowStationW,"OpenWindowStationW");
   function EnumWindowStationsA(
      lpEnumFunc : WINSTAENUMPROCA;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumWindowStationsA,"EnumWindowStationsA");
   function EnumWindowStationsW(
      lpEnumFunc : WINSTAENUMPROCW;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumWindowStationsW,"EnumWindowStationsW");
   function CloseWindowStation(
      hWinSta_x : HWINSTA
   ) return BOOL;
   pragma import (Cpp,CloseWindowStation,"CloseWindowStation");
   function SetProcessWindowStation(
      hWinSta_x : HWINSTA
   ) return BOOL;
   pragma import (Cpp,SetProcessWindowStation,"SetProcessWindowStation");
   function GetProcessWindowStation return HWINSTA;
   pragma import (Cpp,GetProcessWindowStation,"GetProcessWindowStation");
   function SetUserObjectSecurity(
      hObj : HANDLE;
      pSIRequested : PSECURITY_INFORMATION;
      pSID_x : PSECURITY_DESCRIPTOR
   ) return BOOL;
   pragma import (Cpp,SetUserObjectSecurity,"SetUserObjectSecurity");
   function GetUserObjectSecurity(
      hObj : HANDLE;
      pSIRequested : PSECURITY_INFORMATION;
      pSID_x : PSECURITY_DESCRIPTOR;
      nLength : DWORD;
      lpnLengthNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetUserObjectSecurity,"GetUserObjectSecurity");
   type tagUSEROBJECTFLAGS is record
      fInherit : BOOL;
      fReserved : BOOL;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagUSEROBJECTFLAGS);
   for tagUSEROBJECTFLAGS use record
      fInherit at 0 range 0..31;
      fReserved at 0 range 32..63;
      dwFlags at 0 range 64..95;
   end record;
   for tagUSEROBJECTFLAGS'Size use 96;
   for tagUSEROBJECTFLAGS'Alignment use 4;
   subtype USEROBJECTFLAGS is tagUSEROBJECTFLAGS;
   type PUSEROBJECTFLAGS is access all tagUSEROBJECTFLAGS;
   function GetUserObjectInformationA(
      hObj : HANDLE;
      nIndex : Interfaces.C.Int;
      pvInfo : PVOID;
      nLength : DWORD;
      lpnLengthNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetUserObjectInformationA,"GetUserObjectInformationA");
   function GetUserObjectInformationW(
      hObj : HANDLE;
      nIndex : Interfaces.C.Int;
      pvInfo : PVOID;
      nLength : DWORD;
      lpnLengthNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetUserObjectInformationW,"GetUserObjectInformationW");
   function SetUserObjectInformationA(
      hObj : HANDLE;
      nIndex : Interfaces.C.Int;
      pvInfo : PVOID;
      nLength : DWORD
   ) return BOOL;
   pragma import (Cpp,SetUserObjectInformationA,"SetUserObjectInformationA");
   function SetUserObjectInformationW(
      hObj : HANDLE;
      nIndex : Interfaces.C.Int;
      pvInfo : PVOID;
      nLength : DWORD
   ) return BOOL;
   pragma import (Cpp,SetUserObjectInformationW,"SetUserObjectInformationW");
   type tagWNDCLASSEXA is record
      cbSize : UINT;
      style : UINT;
      lpfnWndProc : WNDPROC;
      cbClsExtra : Interfaces.C.Int;
      cbWndExtra : Interfaces.C.Int;
      hInstance_x : HINSTANCE;
      hIcon_x : HICON;
      hCursor_x : HCURSOR;
      hbrBackground : HBRUSH;
      lpszMenuName : LPCSTR;
      lpszClassName : LPCSTR;
      hIconSm : HICON;
   end record;
   pragma Convention (C_Pass_By_Copy,tagWNDCLASSEXA);
   for tagWNDCLASSEXA use record
      cbSize at 0 range 0..31;
      style at 0 range 32..63;
      lpfnWndProc at 0 range 64..127;
      cbClsExtra at 0 range 128..159;
      cbWndExtra at 0 range 160..191;
      hInstance_x at 0 range 192..255;
      hIcon_x at 0 range 256..319;
      hCursor_x at 0 range 320..383;
      hbrBackground at 0 range 384..447;
      lpszMenuName at 0 range 448..511;
      lpszClassName at 0 range 512..575;
      hIconSm at 0 range 576..639;
   end record;
   for tagWNDCLASSEXA'Size use 640;
   for tagWNDCLASSEXA'Alignment use 8;
   subtype WNDCLASSEXA is tagWNDCLASSEXA;
   type PWNDCLASSEXA is access all tagWNDCLASSEXA;
   type NPWNDCLASSEXA is access all tagWNDCLASSEXA;
   type LPWNDCLASSEXA is access all tagWNDCLASSEXA;
   type tagWNDCLASSEXW is record
      cbSize : UINT;
      style : UINT;
      lpfnWndProc : WNDPROC;
      cbClsExtra : Interfaces.C.Int;
      cbWndExtra : Interfaces.C.Int;
      hInstance_x : HINSTANCE;
      hIcon_x : HICON;
      hCursor_x : HCURSOR;
      hbrBackground : HBRUSH;
      lpszMenuName : LPCWSTR;
      lpszClassName : LPCWSTR;
      hIconSm : HICON;
   end record;
   pragma Convention (C_Pass_By_Copy,tagWNDCLASSEXW);
   for tagWNDCLASSEXW use record
      cbSize at 0 range 0..31;
      style at 0 range 32..63;
      lpfnWndProc at 0 range 64..127;
      cbClsExtra at 0 range 128..159;
      cbWndExtra at 0 range 160..191;
      hInstance_x at 0 range 192..255;
      hIcon_x at 0 range 256..319;
      hCursor_x at 0 range 320..383;
      hbrBackground at 0 range 384..447;
      lpszMenuName at 0 range 448..511;
      lpszClassName at 0 range 512..575;
      hIconSm at 0 range 576..639;
   end record;
   for tagWNDCLASSEXW'Size use 640;
   for tagWNDCLASSEXW'Alignment use 8;
   subtype WNDCLASSEXW is tagWNDCLASSEXW;
   type PWNDCLASSEXW is access all tagWNDCLASSEXW;
   type NPWNDCLASSEXW is access all tagWNDCLASSEXW;
   type LPWNDCLASSEXW is access all tagWNDCLASSEXW;
   subtype WNDCLASSEX is WNDCLASSEXA;
   subtype PWNDCLASSEX is PWNDCLASSEXA;
   subtype NPWNDCLASSEX is NPWNDCLASSEXA;
   subtype LPWNDCLASSEX is LPWNDCLASSEXA;
   type tagWNDCLASSA is record
      style : UINT;
      lpfnWndProc : WNDPROC;
      cbClsExtra : Interfaces.C.Int;
      cbWndExtra : Interfaces.C.Int;
      hInstance_x : HINSTANCE;
      hIcon_x : HICON;
      hCursor_x : HCURSOR;
      hbrBackground : HBRUSH;
      lpszMenuName : LPCSTR;
      lpszClassName : LPCSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagWNDCLASSA);
   for tagWNDCLASSA use record
      style at 0 range 0..31;
      lpfnWndProc at 0 range 64..127;
      cbClsExtra at 0 range 128..159;
      cbWndExtra at 0 range 160..191;
      hInstance_x at 0 range 192..255;
      hIcon_x at 0 range 256..319;
      hCursor_x at 0 range 320..383;
      hbrBackground at 0 range 384..447;
      lpszMenuName at 0 range 448..511;
      lpszClassName at 0 range 512..575;
   end record;
   for tagWNDCLASSA'Size use 576;
   for tagWNDCLASSA'Alignment use 8;
   subtype WNDCLASSA is tagWNDCLASSA;
   type PWNDCLASSA is access all tagWNDCLASSA;
   type NPWNDCLASSA is access all tagWNDCLASSA;
   type LPWNDCLASSA is access all tagWNDCLASSA;
   type tagWNDCLASSW is record
      style : UINT;
      lpfnWndProc : WNDPROC;
      cbClsExtra : Interfaces.C.Int;
      cbWndExtra : Interfaces.C.Int;
      hInstance_x : HINSTANCE;
      hIcon_x : HICON;
      hCursor_x : HCURSOR;
      hbrBackground : HBRUSH;
      lpszMenuName : LPCWSTR;
      lpszClassName : LPCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagWNDCLASSW);
   for tagWNDCLASSW use record
      style at 0 range 0..31;
      lpfnWndProc at 0 range 64..127;
      cbClsExtra at 0 range 128..159;
      cbWndExtra at 0 range 160..191;
      hInstance_x at 0 range 192..255;
      hIcon_x at 0 range 256..319;
      hCursor_x at 0 range 320..383;
      hbrBackground at 0 range 384..447;
      lpszMenuName at 0 range 448..511;
      lpszClassName at 0 range 512..575;
   end record;
   for tagWNDCLASSW'Size use 576;
   for tagWNDCLASSW'Alignment use 8;
   subtype WNDCLASSW is tagWNDCLASSW;
   type PWNDCLASSW is access all tagWNDCLASSW;
   type NPWNDCLASSW is access all tagWNDCLASSW;
   type LPWNDCLASSW is access all tagWNDCLASSW;
   subtype WNDCLASS is WNDCLASSA;
   subtype PWNDCLASS is PWNDCLASSA;
   subtype NPWNDCLASS is NPWNDCLASSA;
   subtype LPWNDCLASS is LPWNDCLASSA;
   function IsHungAppWindow(
      hwnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,IsHungAppWindow,"IsHungAppWindow");
   procedure DisableProcessWindowsGhosting;
   pragma import (Cpp,DisableProcessWindowsGhosting,"DisableProcessWindowsGhosting");
   type tagMSG is record
      hwnd_x : HWND;
      message : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM;
      time : DWORD;
      pt : POINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMSG);
   for tagMSG use record
      hwnd_x at 0 range 0..63;
      message at 0 range 64..95;
      wParam_x at 0 range 128..191;
      lParam_x at 0 range 192..255;
      time at 0 range 256..287;
      pt at 0 range 288..351;
   end record;
   for tagMSG'Size use 384;
   for tagMSG'Alignment use 8;
   subtype MSG is tagMSG;
   type PMSG is access all tagMSG;
   type NPMSG is access all tagMSG;
   type LPMSG is access all tagMSG;
   type tagMINMAXINFO is record
      ptReserved : POINT;
      ptMaxSize : POINT;
      ptMaxPosition : POINT;
      ptMinTrackSize : POINT;
      ptMaxTrackSize : POINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMINMAXINFO);
   for tagMINMAXINFO use record
      ptReserved at 0 range 0..63;
      ptMaxSize at 0 range 64..127;
      ptMaxPosition at 0 range 128..191;
      ptMinTrackSize at 0 range 192..255;
      ptMaxTrackSize at 0 range 256..319;
   end record;
   for tagMINMAXINFO'Size use 320;
   for tagMINMAXINFO'Alignment use 4;
   subtype MINMAXINFO is tagMINMAXINFO;
   type PMINMAXINFO is access all tagMINMAXINFO;
   type LPMINMAXINFO is access all tagMINMAXINFO;
   type tagCOPYDATASTRUCT is record
      dwData : ULONG_PTR;
      cbData : DWORD;
      lpData : PVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCOPYDATASTRUCT);
   for tagCOPYDATASTRUCT use record
      dwData at 0 range 0..63;
      cbData at 0 range 64..95;
      lpData at 0 range 128..191;
   end record;
   for tagCOPYDATASTRUCT'Size use 192;
   for tagCOPYDATASTRUCT'Alignment use 8;
   subtype COPYDATASTRUCT is tagCOPYDATASTRUCT;
   type PCOPYDATASTRUCT is access all tagCOPYDATASTRUCT;
   type tagMDINEXTMENU is record
      hmenuIn : HMENU;
      hmenuNext : HMENU;
      hwndNext : HWND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMDINEXTMENU);
   for tagMDINEXTMENU use record
      hmenuIn at 0 range 0..63;
      hmenuNext at 0 range 64..127;
      hwndNext at 0 range 128..191;
   end record;
   for tagMDINEXTMENU'Size use 192;
   for tagMDINEXTMENU'Alignment use 8;
   subtype MDINEXTMENU is tagMDINEXTMENU;
   type PMDINEXTMENU is access all tagMDINEXTMENU;
   type LPMDINEXTMENU is access all tagMDINEXTMENU;
   type POWERBROADCAST_SETTING_Data_Array is array(1..1) of UCHAR; -- Auto Generated Dependancy
   type POWERBROADCAST_SETTING is record
      PowerSetting : GUID;
      DataLength : DWORD;
      Data : POWERBROADCAST_SETTING_Data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,POWERBROADCAST_SETTING);
   for POWERBROADCAST_SETTING use record
      PowerSetting at 0 range 0..127;
      DataLength at 0 range 128..159;
      Data at 0 range 160..167;
   end record;
   for POWERBROADCAST_SETTING'Size use 192;
   for POWERBROADCAST_SETTING'Alignment use 4;
   type PPOWERBROADCAST_SETTING is access all POWERBROADCAST_SETTING;
   function RegisterWindowMessageA(
      lpString : LPCSTR
   ) return UINT;
   pragma import (Cpp,RegisterWindowMessageA,"RegisterWindowMessageA");
   function RegisterWindowMessageW(
      lpString : LPCWSTR
   ) return UINT;
   pragma import (Cpp,RegisterWindowMessageW,"RegisterWindowMessageW");
   type tagWINDOWPOS is record
      hwnd_x : HWND;
      hwndInsertAfter : HWND;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int;
      flags : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagWINDOWPOS);
   for tagWINDOWPOS use record
      hwnd_x at 0 range 0..63;
      hwndInsertAfter at 0 range 64..127;
      x at 0 range 128..159;
      y at 0 range 160..191;
      cx at 0 range 192..223;
      cy at 0 range 224..255;
      flags at 0 range 256..287;
   end record;
   for tagWINDOWPOS'Size use 320;
   for tagWINDOWPOS'Alignment use 8;
   subtype WINDOWPOS is tagWINDOWPOS;
   type LPWINDOWPOS is access all tagWINDOWPOS;
   type PWINDOWPOS is access all tagWINDOWPOS;
   type tagNCCALCSIZE_PARAMS_rgrc_Array is array(1..3) of RECT; -- Auto Generated Dependancy
   type tagNCCALCSIZE_PARAMS is record
      rgrc : tagNCCALCSIZE_PARAMS_rgrc_Array;
      lppos : PWINDOWPOS;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNCCALCSIZE_PARAMS);
   for tagNCCALCSIZE_PARAMS use record
      rgrc at 0 range 0..383;
      lppos at 0 range 384..447;
   end record;
   for tagNCCALCSIZE_PARAMS'Size use 448;
   for tagNCCALCSIZE_PARAMS'Alignment use 8;
   subtype NCCALCSIZE_PARAMS is tagNCCALCSIZE_PARAMS;
   type LPNCCALCSIZE_PARAMS is access all tagNCCALCSIZE_PARAMS;
   type tagTRACKMOUSEEVENT is record
      cbSize : DWORD;
      dwFlags : DWORD;
      hwndTrack : HWND;
      dwHoverTime : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTRACKMOUSEEVENT);
   for tagTRACKMOUSEEVENT use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hwndTrack at 0 range 64..127;
      dwHoverTime at 0 range 128..159;
   end record;
   for tagTRACKMOUSEEVENT'Size use 192;
   for tagTRACKMOUSEEVENT'Alignment use 8;
   subtype TRACKMOUSEEVENT is tagTRACKMOUSEEVENT;
   type LPTRACKMOUSEEVENT is access all tagTRACKMOUSEEVENT;
   function TrackMouseEvent_x(
      lpEventTrack : LPTRACKMOUSEEVENT
   ) return BOOL;
   pragma import (Cpp,TrackMouseEvent_x,"TrackMouseEvent");
   function DrawEdge(
      hdc_x : HDC;
      qrc : LPRECT;
      edge : UINT;
      grfFlags : UINT
   ) return BOOL;
   pragma import (Cpp,DrawEdge,"DrawEdge");
   function DrawFrameControl(
      param1 : HDC;
      param2 : LPRECT;
      param3 : UINT;
      param4 : UINT
   ) return BOOL;
   pragma import (Cpp,DrawFrameControl,"DrawFrameControl");
   function DrawCaption(
      hwnd_x : HWND;
      hdc_x : HDC;
      lprect_x : access constant RECT;
      flags : UINT
   ) return BOOL;
   pragma import (Cpp,DrawCaption,"DrawCaption");
   function DrawAnimatedRects(
      hwnd_x : HWND;
      idAni : Interfaces.C.Int;
      lprcFrom : access constant RECT;
      lprcTo : access constant RECT
   ) return BOOL;
   pragma import (Cpp,DrawAnimatedRects,"DrawAnimatedRects");
   type tagACCEL is record
      fVirt : BYTE;
      key : WORD;
      cmd : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagACCEL);
   for tagACCEL use record
      fVirt at 0 range 0..7;
      key at 0 range 16..31;
      cmd at 0 range 32..47;
   end record;
   for tagACCEL'Size use 48;
   for tagACCEL'Alignment use 2;
   subtype ACCEL is tagACCEL;
   type LPACCEL is access all tagACCEL;
   type tagPAINTSTRUCT_rgbReserved_Array is array(1..32) of BYTE; -- Auto Generated Dependancy
   type tagPAINTSTRUCT is record
      hdc_x : HDC;
      fErase : BOOL;
      rcPaint : RECT;
      fRestore : BOOL;
      fIncUpdate : BOOL;
      rgbReserved : tagPAINTSTRUCT_rgbReserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPAINTSTRUCT);
   for tagPAINTSTRUCT use record
      hdc_x at 0 range 0..63;
      fErase at 0 range 64..95;
      rcPaint at 0 range 96..223;
      fRestore at 0 range 224..255;
      fIncUpdate at 0 range 256..287;
      rgbReserved at 0 range 288..543;
   end record;
   for tagPAINTSTRUCT'Size use 576;
   for tagPAINTSTRUCT'Alignment use 8;
   subtype PAINTSTRUCT is tagPAINTSTRUCT;
   type PPAINTSTRUCT is access all tagPAINTSTRUCT;
   type NPPAINTSTRUCT is access all tagPAINTSTRUCT;
   type LPPAINTSTRUCT is access all tagPAINTSTRUCT;
   type tagCREATESTRUCTA is record
      lpCreateParams : LPVOID;
      hInstance_x : HINSTANCE;
      hMenu_x : HMENU;
      hwndParent : HWND;
      cy : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      y : Interfaces.C.Int;
      x : Interfaces.C.Int;
      style : LONG;
      lpszName : LPCSTR;
      lpszClass : LPCSTR;
      dwExStyle : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCREATESTRUCTA);
   for tagCREATESTRUCTA use record
      lpCreateParams at 0 range 0..63;
      hInstance_x at 0 range 64..127;
      hMenu_x at 0 range 128..191;
      hwndParent at 0 range 192..255;
      cy at 0 range 256..287;
      cx at 0 range 288..319;
      y at 0 range 320..351;
      x at 0 range 352..383;
      style at 0 range 384..415;
      lpszName at 0 range 448..511;
      lpszClass at 0 range 512..575;
      dwExStyle at 0 range 576..607;
   end record;
   for tagCREATESTRUCTA'Size use 640;
   for tagCREATESTRUCTA'Alignment use 8;
   subtype CREATESTRUCTA is tagCREATESTRUCTA;
   type LPCREATESTRUCTA is access all tagCREATESTRUCTA;
   type tagCREATESTRUCTW is record
      lpCreateParams : LPVOID;
      hInstance_x : HINSTANCE;
      hMenu_x : HMENU;
      hwndParent : HWND;
      cy : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      y : Interfaces.C.Int;
      x : Interfaces.C.Int;
      style : LONG;
      lpszName : LPCWSTR;
      lpszClass : LPCWSTR;
      dwExStyle : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCREATESTRUCTW);
   for tagCREATESTRUCTW use record
      lpCreateParams at 0 range 0..63;
      hInstance_x at 0 range 64..127;
      hMenu_x at 0 range 128..191;
      hwndParent at 0 range 192..255;
      cy at 0 range 256..287;
      cx at 0 range 288..319;
      y at 0 range 320..351;
      x at 0 range 352..383;
      style at 0 range 384..415;
      lpszName at 0 range 448..511;
      lpszClass at 0 range 512..575;
      dwExStyle at 0 range 576..607;
   end record;
   for tagCREATESTRUCTW'Size use 640;
   for tagCREATESTRUCTW'Alignment use 8;
   subtype CREATESTRUCTW is tagCREATESTRUCTW;
   type LPCREATESTRUCTW is access all tagCREATESTRUCTW;
   subtype CREATESTRUCT is CREATESTRUCTA;
   subtype LPCREATESTRUCT is LPCREATESTRUCTA;
   type tagWINDOWPLACEMENT is record
      length : UINT;
      flags : UINT;
      showCmd : UINT;
      ptMinPosition : POINT;
      ptMaxPosition : POINT;
      rcNormalPosition : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagWINDOWPLACEMENT);
   for tagWINDOWPLACEMENT use record
      length at 0 range 0..31;
      flags at 0 range 32..63;
      showCmd at 0 range 64..95;
      ptMinPosition at 0 range 96..159;
      ptMaxPosition at 0 range 160..223;
      rcNormalPosition at 0 range 224..351;
   end record;
   for tagWINDOWPLACEMENT'Size use 352;
   for tagWINDOWPLACEMENT'Alignment use 4;
   subtype WINDOWPLACEMENT is tagWINDOWPLACEMENT;
   type PWINDOWPLACEMENT is access all WINDOWPLACEMENT;
   type LPWINDOWPLACEMENT is access all WINDOWPLACEMENT;
   type tagNMHDR is record
      hwndFrom : HWND;
      idFrom : UINT_PTR;
      code : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMHDR);
   for tagNMHDR use record
      hwndFrom at 0 range 0..63;
      idFrom at 0 range 64..127;
      code at 0 range 128..159;
   end record;
   for tagNMHDR'Size use 192;
   for tagNMHDR'Alignment use 8;
   subtype NMHDR is tagNMHDR;
   type LPNMHDR is access all NMHDR;
   type tagSTYLESTRUCT is record
      styleOld : DWORD;
      styleNew : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSTYLESTRUCT);
   for tagSTYLESTRUCT use record
      styleOld at 0 range 0..31;
      styleNew at 0 range 32..63;
   end record;
   for tagSTYLESTRUCT'Size use 64;
   for tagSTYLESTRUCT'Alignment use 4;
   subtype STYLESTRUCT is tagSTYLESTRUCT;
   type LPSTYLESTRUCT is access all tagSTYLESTRUCT;
   type tagMEASUREITEMSTRUCT is record
      CtlType : UINT;
      CtlID : UINT;
      itemID : UINT;
      itemWidth : UINT;
      itemHeight : UINT;
      itemData : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMEASUREITEMSTRUCT);
   for tagMEASUREITEMSTRUCT use record
      CtlType at 0 range 0..31;
      CtlID at 0 range 32..63;
      itemID at 0 range 64..95;
      itemWidth at 0 range 96..127;
      itemHeight at 0 range 128..159;
      itemData at 0 range 192..255;
   end record;
   for tagMEASUREITEMSTRUCT'Size use 256;
   for tagMEASUREITEMSTRUCT'Alignment use 8;
   subtype MEASUREITEMSTRUCT is tagMEASUREITEMSTRUCT;
   type PMEASUREITEMSTRUCT is access all tagMEASUREITEMSTRUCT;
   type LPMEASUREITEMSTRUCT is access all tagMEASUREITEMSTRUCT;
   type tagDRAWITEMSTRUCT is record
      CtlType : UINT;
      CtlID : UINT;
      itemID : UINT;
      itemAction : UINT;
      itemState : UINT;
      hwndItem : HWND;
      hDC_x : HDC;
      rcItem : RECT;
      itemData : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDRAWITEMSTRUCT);
   for tagDRAWITEMSTRUCT use record
      CtlType at 0 range 0..31;
      CtlID at 0 range 32..63;
      itemID at 0 range 64..95;
      itemAction at 0 range 96..127;
      itemState at 0 range 128..159;
      hwndItem at 0 range 192..255;
      hDC_x at 0 range 256..319;
      rcItem at 0 range 320..447;
      itemData at 0 range 448..511;
   end record;
   for tagDRAWITEMSTRUCT'Size use 512;
   for tagDRAWITEMSTRUCT'Alignment use 8;
   subtype DRAWITEMSTRUCT is tagDRAWITEMSTRUCT;
   type PDRAWITEMSTRUCT is access all tagDRAWITEMSTRUCT;
   type LPDRAWITEMSTRUCT is access all tagDRAWITEMSTRUCT;
   type tagDELETEITEMSTRUCT is record
      CtlType : UINT;
      CtlID : UINT;
      itemID : UINT;
      hwndItem : HWND;
      itemData : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDELETEITEMSTRUCT);
   for tagDELETEITEMSTRUCT use record
      CtlType at 0 range 0..31;
      CtlID at 0 range 32..63;
      itemID at 0 range 64..95;
      hwndItem at 0 range 128..191;
      itemData at 0 range 192..255;
   end record;
   for tagDELETEITEMSTRUCT'Size use 256;
   for tagDELETEITEMSTRUCT'Alignment use 8;
   subtype DELETEITEMSTRUCT is tagDELETEITEMSTRUCT;
   type PDELETEITEMSTRUCT is access all tagDELETEITEMSTRUCT;
   type LPDELETEITEMSTRUCT is access all tagDELETEITEMSTRUCT;
   type tagCOMPAREITEMSTRUCT is record
      CtlType : UINT;
      CtlID : UINT;
      hwndItem : HWND;
      itemID1 : UINT;
      itemData1 : ULONG_PTR;
      itemID2 : UINT;
      itemData2 : ULONG_PTR;
      dwLocaleId : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCOMPAREITEMSTRUCT);
   for tagCOMPAREITEMSTRUCT use record
      CtlType at 0 range 0..31;
      CtlID at 0 range 32..63;
      hwndItem at 0 range 64..127;
      itemID1 at 0 range 128..159;
      itemData1 at 0 range 192..255;
      itemID2 at 0 range 256..287;
      itemData2 at 0 range 320..383;
      dwLocaleId at 0 range 384..415;
   end record;
   for tagCOMPAREITEMSTRUCT'Size use 448;
   for tagCOMPAREITEMSTRUCT'Alignment use 8;
   subtype COMPAREITEMSTRUCT is tagCOMPAREITEMSTRUCT;
   type PCOMPAREITEMSTRUCT is access all tagCOMPAREITEMSTRUCT;
   type LPCOMPAREITEMSTRUCT is access all tagCOMPAREITEMSTRUCT;
   function GetMessageA(
      lpMsg_x : LPMSG;
      hWnd_x : HWND;
      wMsgFilterMin : UINT;
      wMsgFilterMax : UINT
   ) return BOOL;
   pragma import (Cpp,GetMessageA,"GetMessageA");
   function GetMessageW(
      lpMsg_x : LPMSG;
      hWnd_x : HWND;
      wMsgFilterMin : UINT;
      wMsgFilterMax : UINT
   ) return BOOL;
   pragma import (Cpp,GetMessageW,"GetMessageW");
   function TranslateMessage(
      lpMsg_x : access constant MSG
   ) return BOOL;
   pragma import (Cpp,TranslateMessage,"TranslateMessage");
   function DispatchMessageA(
      lpMsg_x : access constant MSG
   ) return LRESULT;
   pragma import (Cpp,DispatchMessageA,"DispatchMessageA");
   function DispatchMessageW(
      lpMsg_x : access constant MSG
   ) return LRESULT;
   pragma import (Cpp,DispatchMessageW,"DispatchMessageW");
   function SetMessageQueue(
      cMessagesMax : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,SetMessageQueue,"SetMessageQueue");
   function PeekMessageA(
      lpMsg_x : LPMSG;
      hWnd_x : HWND;
      wMsgFilterMin : UINT;
      wMsgFilterMax : UINT;
      wRemoveMsg : UINT
   ) return BOOL;
   pragma import (Cpp,PeekMessageA,"PeekMessageA");
   function PeekMessageW(
      lpMsg_x : LPMSG;
      hWnd_x : HWND;
      wMsgFilterMin : UINT;
      wMsgFilterMax : UINT;
      wRemoveMsg : UINT
   ) return BOOL;
   pragma import (Cpp,PeekMessageW,"PeekMessageW");
   function RegisterHotKey(
      hWnd_x : HWND;
      id : Interfaces.C.Int;
      fsModifiers : UINT;
      vk : UINT
   ) return BOOL;
   pragma import (Cpp,RegisterHotKey,"RegisterHotKey");
   function UnregisterHotKey(
      hWnd_x : HWND;
      id : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,UnregisterHotKey,"UnregisterHotKey");
   function ExitWindowsEx(
      uFlags : UINT;
      dwReason : DWORD
   ) return BOOL;
   pragma import (Cpp,ExitWindowsEx,"ExitWindowsEx");
   function SwapMouseButton(
      fSwap : BOOL
   ) return BOOL;
   pragma import (Cpp,SwapMouseButton,"SwapMouseButton");
   function GetMessagePos return DWORD;
   pragma import (Cpp,GetMessagePos,"GetMessagePos");
   function GetMessageTime return LONG;
   pragma import (Cpp,GetMessageTime,"GetMessageTime");
   function GetMessageExtraInfo return LPARAM;
   pragma import (Cpp,GetMessageExtraInfo,"GetMessageExtraInfo");
   function GetUnpredictedMessagePos return DWORD;
   pragma import (Cpp,GetUnpredictedMessagePos,"GetUnpredictedMessagePos");
   function IsWow64Message return BOOL;
   pragma import (Cpp,IsWow64Message,"IsWow64Message");
   function SetMessageExtraInfo(
      lParam_x : LPARAM
   ) return LPARAM;
   pragma import (Cpp,SetMessageExtraInfo,"SetMessageExtraInfo");
   function SendMessageA(
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,SendMessageA,"SendMessageA");
   function SendMessageW(
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,SendMessageW,"SendMessageW");
   function SendMessageTimeoutA(
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM;
      fuFlags : UINT;
      uTimeout : UINT;
      lpdwResult : PDWORD_PTR
   ) return LRESULT;
   pragma import (Cpp,SendMessageTimeoutA,"SendMessageTimeoutA");
   function SendMessageTimeoutW(
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM;
      fuFlags : UINT;
      uTimeout : UINT;
      lpdwResult : PDWORD_PTR
   ) return LRESULT;
   pragma import (Cpp,SendMessageTimeoutW,"SendMessageTimeoutW");
   function SendNotifyMessageA(
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,SendNotifyMessageA,"SendNotifyMessageA");
   function SendNotifyMessageW(
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,SendNotifyMessageW,"SendNotifyMessageW");
   function SendMessageCallbackA(
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM;
      lpResultCallBack : SENDASYNCPROC;
      dwData : ULONG_PTR
   ) return BOOL;
   pragma import (Cpp,SendMessageCallbackA,"SendMessageCallbackA");
   function SendMessageCallbackW(
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM;
      lpResultCallBack : SENDASYNCPROC;
      dwData : ULONG_PTR
   ) return BOOL;
   pragma import (Cpp,SendMessageCallbackW,"SendMessageCallbackW");
   type BSMINFO is record
      cbSize : UINT;
      hdesk_x : HDESK;
      hwnd_x : HWND;
      luid_x : LUID;
   end record;
   pragma Convention (C_Pass_By_Copy,BSMINFO);
   for BSMINFO use record
      cbSize at 0 range 0..31;
      hdesk_x at 0 range 64..127;
      hwnd_x at 0 range 128..191;
      luid_x at 0 range 192..255;
   end record;
   for BSMINFO'Size use 256;
   for BSMINFO'Alignment use 8;
   type PBSMINFO is access all BSMINFO;
   function BroadcastSystemMessageExA(
      flags : DWORD;
      lpInfo : LPDWORD;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM;
      pbsmInfo_x : PBSMINFO
   ) return Interfaces.C.Long;
   pragma import (Cpp,BroadcastSystemMessageExA,"BroadcastSystemMessageExA");
   function BroadcastSystemMessageExW(
      flags : DWORD;
      lpInfo : LPDWORD;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM;
      pbsmInfo_x : PBSMINFO
   ) return Interfaces.C.Long;
   pragma import (Cpp,BroadcastSystemMessageExW,"BroadcastSystemMessageExW");
   function BroadcastSystemMessageA(
      flags : DWORD;
      lpInfo : LPDWORD;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return Interfaces.C.Long;
   pragma import (Cpp,BroadcastSystemMessageA,"BroadcastSystemMessageA");
   function BroadcastSystemMessageW(
      flags : DWORD;
      lpInfo : LPDWORD;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return Interfaces.C.Long;
   pragma import (Cpp,BroadcastSystemMessageW,"BroadcastSystemMessageW");
   subtype HDEVNOTIFY is PVOID;
   type PHDEVNOTIFY is access all HDEVNOTIFY;
   function RegisterDeviceNotificationA(
      hRecipient : HANDLE;
      NotificationFilter : LPVOID;
      Flags : DWORD
   ) return HDEVNOTIFY;
   pragma import (Cpp,RegisterDeviceNotificationA,"RegisterDeviceNotificationA");
   function RegisterDeviceNotificationW(
      hRecipient : HANDLE;
      NotificationFilter : LPVOID;
      Flags : DWORD
   ) return HDEVNOTIFY;
   pragma import (Cpp,RegisterDeviceNotificationW,"RegisterDeviceNotificationW");
   function UnregisterDeviceNotification(
      Handle_x : HDEVNOTIFY
   ) return BOOL;
   pragma import (Cpp,UnregisterDeviceNotification,"UnregisterDeviceNotification");
   subtype HPOWERNOTIFY is PVOID;
   type PHPOWERNOTIFY is access all HPOWERNOTIFY;
   function RegisterPowerSettingNotification(
      hRecipient : HANDLE;
      PowerSettingGuid : LPCGUID;
      Flags : DWORD
   ) return HPOWERNOTIFY;
   pragma import (Cpp,RegisterPowerSettingNotification,"RegisterPowerSettingNotification");
   function UnregisterPowerSettingNotification(
      Handle_x : HPOWERNOTIFY
   ) return BOOL;
   pragma import (Cpp,UnregisterPowerSettingNotification,"UnregisterPowerSettingNotification");
   function RegisterSuspendResumeNotification(
      hRecipient : HANDLE;
      Flags : DWORD
   ) return HPOWERNOTIFY;
   pragma import (Cpp,RegisterSuspendResumeNotification,"RegisterSuspendResumeNotification");
   function UnregisterSuspendResumeNotification(
      Handle_x : HPOWERNOTIFY
   ) return BOOL;
   pragma import (Cpp,UnregisterSuspendResumeNotification,"UnregisterSuspendResumeNotification");
   function PostMessageA(
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,PostMessageA,"PostMessageA");
   function PostMessageW(
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,PostMessageW,"PostMessageW");
   function PostThreadMessageA(
      idThread : DWORD;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,PostThreadMessageA,"PostThreadMessageA");
   function PostThreadMessageW(
      idThread : DWORD;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,PostThreadMessageW,"PostThreadMessageW");
   function AttachThreadInput(
      idAttach : DWORD;
      idAttachTo : DWORD;
      fAttach : BOOL
   ) return BOOL;
   pragma import (Cpp,AttachThreadInput,"AttachThreadInput");
   function ReplyMessage(
      lResult_x : LRESULT
   ) return BOOL;
   pragma import (Cpp,ReplyMessage,"ReplyMessage");
   function WaitMessage return BOOL;
   pragma import (Cpp,WaitMessage,"WaitMessage");
   function WaitForInputIdle(
      hProcess : HANDLE;
      dwMilliseconds : DWORD
   ) return DWORD;
   pragma import (Cpp,WaitForInputIdle,"WaitForInputIdle");
   function DefWindowProcA(
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,DefWindowProcA,"DefWindowProcA");
   function DefWindowProcW(
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,DefWindowProcW,"DefWindowProcW");
   procedure PostQuitMessage(
      nExitCode : Interfaces.C.Int
   );
   pragma import (Cpp,PostQuitMessage,"PostQuitMessage");
   function CallWindowProcA(
      lpPrevWndFunc : WNDPROC;
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,CallWindowProcA,"CallWindowProcA");
   function CallWindowProcW(
      lpPrevWndFunc : WNDPROC;
      hWnd_x : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,CallWindowProcW,"CallWindowProcW");
   function InSendMessage return BOOL;
   pragma import (Cpp,InSendMessage,"InSendMessage");
   function InSendMessageEx(
      lpReserved : LPVOID
   ) return DWORD;
   pragma import (Cpp,InSendMessageEx,"InSendMessageEx");
   function GetDoubleClickTime return UINT;
   pragma import (Cpp,GetDoubleClickTime,"GetDoubleClickTime");
   function SetDoubleClickTime(
      param1 : UINT
   ) return BOOL;
   pragma import (Cpp,SetDoubleClickTime,"SetDoubleClickTime");
   function RegisterClassA(
      lpWndClass_x : access constant WNDCLASSA
   ) return ATOM;
   pragma import (Cpp,RegisterClassA,"RegisterClassA");
   function RegisterClassW(
      lpWndClass_x : access constant WNDCLASSW
   ) return ATOM;
   pragma import (Cpp,RegisterClassW,"RegisterClassW");
   function UnregisterClassA(
      lpClassName : LPCSTR;
      hInstance_x : HINSTANCE
   ) return BOOL;
   pragma import (Cpp,UnregisterClassA,"UnregisterClassA");
   function UnregisterClassW(
      lpClassName : LPCWSTR;
      hInstance_x : HINSTANCE
   ) return BOOL;
   pragma import (Cpp,UnregisterClassW,"UnregisterClassW");
   function GetClassInfoA(
      hInstance_x : HINSTANCE;
      lpClassName : LPCSTR;
      lpWndClass_x : LPWNDCLASSA
   ) return BOOL;
   pragma import (Cpp,GetClassInfoA,"GetClassInfoA");
   function GetClassInfoW(
      hInstance_x : HINSTANCE;
      lpClassName : LPCWSTR;
      lpWndClass_x : LPWNDCLASSW
   ) return BOOL;
   pragma import (Cpp,GetClassInfoW,"GetClassInfoW");
   function RegisterClassExA(
      param1 : access constant WNDCLASSEXA
   ) return ATOM;
   pragma import (Cpp,RegisterClassExA,"RegisterClassExA");
   function RegisterClassExW(
      param1 : access constant WNDCLASSEXW
   ) return ATOM;
   pragma import (Cpp,RegisterClassExW,"RegisterClassExW");
   function GetClassInfoExA(
      hInstance_x : HINSTANCE;
      lpszClass : LPCSTR;
      lpwcx : LPWNDCLASSEXA
   ) return BOOL;
   pragma import (Cpp,GetClassInfoExA,"GetClassInfoExA");
   function GetClassInfoExW(
      hInstance_x : HINSTANCE;
      lpszClass : LPCWSTR;
      lpwcx : LPWNDCLASSEXW
   ) return BOOL;
   pragma import (Cpp,GetClassInfoExW,"GetClassInfoExW");
   type PREGISTERCLASSNAMEW is access function (p1 : LPCWSTR) return BOOLEAN; -- BOOLEAN (LPCWSTR)
   pragma Convention(C,PREGISTERCLASSNAMEW);
   function CreateWindowExA(
      dwExStyle : DWORD;
      lpClassName : LPCSTR;
      lpWindowName : LPCSTR;
      dwStyle : DWORD;
      X : Interfaces.C.Int;
      Y : Interfaces.C.Int;
      nWidth : Interfaces.C.Int;
      nHeight : Interfaces.C.Int;
      hWndParent : HWND;
      hMenu_x : HMENU;
      hInstance_x : HINSTANCE;
      lpParam : LPVOID
   ) return HWND;
   pragma import (Cpp,CreateWindowExA,"CreateWindowExA");
   function CreateWindowExW(
      dwExStyle : DWORD;
      lpClassName : LPCWSTR;
      lpWindowName : LPCWSTR;
      dwStyle : DWORD;
      X : Interfaces.C.Int;
      Y : Interfaces.C.Int;
      nWidth : Interfaces.C.Int;
      nHeight : Interfaces.C.Int;
      hWndParent : HWND;
      hMenu_x : HMENU;
      hInstance_x : HINSTANCE;
      lpParam : LPVOID
   ) return HWND;
   pragma import (Cpp,CreateWindowExW,"CreateWindowExW");
   function IsWindow(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,IsWindow,"IsWindow");
   function IsMenu(
      hMenu_x : HMENU
   ) return BOOL;
   pragma import (Cpp,IsMenu,"IsMenu");
   function IsChild(
      hWndParent : HWND;
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,IsChild,"IsChild");
   function DestroyWindow(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,DestroyWindow,"DestroyWindow");
   function ShowWindow(
      hWnd_x : HWND;
      nCmdShow : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,ShowWindow,"ShowWindow");
   function AnimateWindow(
      hWnd_x : HWND;
      dwTime : DWORD;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,AnimateWindow,"AnimateWindow");
   function UpdateLayeredWindow(
      hWnd_x : HWND;
      hdcDst : HDC;
      pptDst : access POINT;
      psize_x : access SIZE;
      hdcSrc : HDC;
      pptSrc : access POINT;
      crKey : COLORREF;
      pblend : access BLENDFUNCTION;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,UpdateLayeredWindow,"UpdateLayeredWindow");
   type tagUPDATELAYEREDWINDOWINFO is record
      cbSize : DWORD;
      hdcDst : HDC;
      pptDst : access constant POINT;
      psize_x : access constant SIZE;
      hdcSrc : HDC;
      pptSrc : access constant POINT;
      crKey : COLORREF;
      pblend : access constant BLENDFUNCTION;
      dwFlags : DWORD;
      prcDirty : access constant RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagUPDATELAYEREDWINDOWINFO);
   for tagUPDATELAYEREDWINDOWINFO use record
      cbSize at 0 range 0..31;
      hdcDst at 0 range 64..127;
      pptDst at 0 range 128..191;
      psize_x at 0 range 192..255;
      hdcSrc at 0 range 256..319;
      pptSrc at 0 range 320..383;
      crKey at 0 range 384..415;
      pblend at 0 range 448..511;
      dwFlags at 0 range 512..543;
      prcDirty at 0 range 576..639;
   end record;
   for tagUPDATELAYEREDWINDOWINFO'Size use 640;
   for tagUPDATELAYEREDWINDOWINFO'Alignment use 8;
   subtype UPDATELAYEREDWINDOWINFO is tagUPDATELAYEREDWINDOWINFO;
   type PUPDATELAYEREDWINDOWINFO is access all tagUPDATELAYEREDWINDOWINFO;
   function UpdateLayeredWindowIndirect(
      hWnd_x : HWND;
      pULWInfo : access constant UPDATELAYEREDWINDOWINFO
   ) return BOOL;
   pragma import (Cpp,UpdateLayeredWindowIndirect,"UpdateLayeredWindowIndirect");
   function GetLayeredWindowAttributes(
      hwnd_x : HWND;
      pcrKey : access COLORREF;
      pbAlpha : access BYTE;
      pdwFlags : access DWORD
   ) return BOOL;
   pragma import (Cpp,GetLayeredWindowAttributes,"GetLayeredWindowAttributes");
   function PrintWindow(
      hwnd_x : HWND;
      hdcBlt : HDC;
      nFlags : UINT
   ) return BOOL;
   pragma import (Cpp,PrintWindow,"PrintWindow");
   function SetLayeredWindowAttributes(
      hwnd_x : HWND;
      crKey : COLORREF;
      bAlpha : BYTE;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,SetLayeredWindowAttributes,"SetLayeredWindowAttributes");
   function ShowWindowAsync(
      hWnd_x : HWND;
      nCmdShow : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,ShowWindowAsync,"ShowWindowAsync");
   function FlashWindow(
      hWnd_x : HWND;
      bInvert : BOOL
   ) return BOOL;
   pragma import (Cpp,FlashWindow,"FlashWindow");
   type FLASHWINFO is record
      cbSize : UINT;
      hwnd_x : HWND;
      dwFlags : DWORD;
      uCount : UINT;
      dwTimeout : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,FLASHWINFO);
   for FLASHWINFO use record
      cbSize at 0 range 0..31;
      hwnd_x at 0 range 64..127;
      dwFlags at 0 range 128..159;
      uCount at 0 range 160..191;
      dwTimeout at 0 range 192..223;
   end record;
   for FLASHWINFO'Size use 256;
   for FLASHWINFO'Alignment use 8;
   type PFLASHWINFO is access all FLASHWINFO;
   function FlashWindowEx(
      pfwi : PFLASHWINFO
   ) return BOOL;
   pragma import (Cpp,FlashWindowEx,"FlashWindowEx");
   function ShowOwnedPopups(
      hWnd_x : HWND;
      fShow : BOOL
   ) return BOOL;
   pragma import (Cpp,ShowOwnedPopups,"ShowOwnedPopups");
   function OpenIcon(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,OpenIcon,"OpenIcon");
   function CloseWindow(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,CloseWindow,"CloseWindow");
   function MoveWindow(
      hWnd_x : HWND;
      X : Interfaces.C.Int;
      Y : Interfaces.C.Int;
      nWidth : Interfaces.C.Int;
      nHeight : Interfaces.C.Int;
      bRepaint : BOOL
   ) return BOOL;
   pragma import (Cpp,MoveWindow,"MoveWindow");
   function SetWindowPos(
      hWnd_x : HWND;
      hWndInsertAfter : HWND;
      X : Interfaces.C.Int;
      Y : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int;
      uFlags : UINT
   ) return BOOL;
   pragma import (Cpp,SetWindowPos,"SetWindowPos");
   function GetWindowPlacement(
      hWnd_x : HWND;
      lpwndpl : access WINDOWPLACEMENT
   ) return BOOL;
   pragma import (Cpp,GetWindowPlacement,"GetWindowPlacement");
   function SetWindowPlacement(
      hWnd_x : HWND;
      lpwndpl : access constant WINDOWPLACEMENT
   ) return BOOL;
   pragma import (Cpp,SetWindowPlacement,"SetWindowPlacement");
   function GetWindowDisplayAffinity(
      hWnd_x : HWND;
      pdwAffinity : access DWORD
   ) return BOOL;
   pragma import (Cpp,GetWindowDisplayAffinity,"GetWindowDisplayAffinity");
   function SetWindowDisplayAffinity(
      hWnd_x : HWND;
      dwAffinity : DWORD
   ) return BOOL;
   pragma import (Cpp,SetWindowDisplayAffinity,"SetWindowDisplayAffinity");
   function BeginDeferWindowPos(
      nNumWindows : Interfaces.C.Int
   ) return HDWP;
   pragma import (Cpp,BeginDeferWindowPos,"BeginDeferWindowPos");
   function DeferWindowPos(
      hWinPosInfo : HDWP;
      hWnd_x : HWND;
      hWndInsertAfter : HWND;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int;
      uFlags : UINT
   ) return HDWP;
   pragma import (Cpp,DeferWindowPos,"DeferWindowPos");
   function EndDeferWindowPos(
      hWinPosInfo : HDWP
   ) return BOOL;
   pragma import (Cpp,EndDeferWindowPos,"EndDeferWindowPos");
   function IsWindowVisible(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,IsWindowVisible,"IsWindowVisible");
   function IsIconic(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,IsIconic,"IsIconic");
   function AnyPopup return BOOL;
   pragma import (Cpp,AnyPopup,"AnyPopup");
   function BringWindowToTop(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,BringWindowToTop,"BringWindowToTop");
   function IsZoomed(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,IsZoomed,"IsZoomed");
   type DLGTEMPLATE is record
      style : DWORD;
      dwExtendedStyle : DWORD;
      cdit : WORD;
      x : Interfaces.C.Short;
      y : Interfaces.C.Short;
      cx : Interfaces.C.Short;
      cy : Interfaces.C.Short;
   end record;
   pragma Convention (C_Pass_By_Copy,DLGTEMPLATE);
   for DLGTEMPLATE use record
      style at 0 range 0..31;
      dwExtendedStyle at 0 range 32..63;
      cdit at 0 range 64..79;
      x at 0 range 80..95;
      y at 0 range 96..111;
      cx at 0 range 112..127;
      cy at 0 range 128..143;
   end record;
   for DLGTEMPLATE'Size use 144;
   for DLGTEMPLATE'Alignment use 2;
   type LPDLGTEMPLATEA is access all DLGTEMPLATE;
   type LPDLGTEMPLATEW is access all DLGTEMPLATE;
   subtype LPDLGTEMPLATE is LPDLGTEMPLATEA;
   type LPCDLGTEMPLATEA is access constant DLGTEMPLATE;
   type LPCDLGTEMPLATEW is access constant DLGTEMPLATE;
   subtype LPCDLGTEMPLATE is LPCDLGTEMPLATEA;
   type DLGITEMTEMPLATE is record
      style : DWORD;
      dwExtendedStyle : DWORD;
      x : Interfaces.C.Short;
      y : Interfaces.C.Short;
      cx : Interfaces.C.Short;
      cy : Interfaces.C.Short;
      id : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DLGITEMTEMPLATE);
   for DLGITEMTEMPLATE use record
      style at 0 range 0..31;
      dwExtendedStyle at 0 range 32..63;
      x at 0 range 64..79;
      y at 0 range 80..95;
      cx at 0 range 96..111;
      cy at 0 range 112..127;
      id at 0 range 128..143;
   end record;
   for DLGITEMTEMPLATE'Size use 144;
   for DLGITEMTEMPLATE'Alignment use 2;
   type PDLGITEMTEMPLATEA is access all DLGITEMTEMPLATE;
   type PDLGITEMTEMPLATEW is access all DLGITEMTEMPLATE;
   subtype PDLGITEMTEMPLATE is PDLGITEMTEMPLATEA;
   type LPDLGITEMTEMPLATEA is access all DLGITEMTEMPLATE;
   type LPDLGITEMTEMPLATEW is access all DLGITEMTEMPLATE;
   subtype LPDLGITEMTEMPLATE is LPDLGITEMTEMPLATEA;
   function CreateDialogParamA(
      hInstance_x : HINSTANCE;
      lpTemplateName : LPCSTR;
      hWndParent : HWND;
      lpDialogFunc : DLGPROC;
      dwInitParam : LPARAM
   ) return HWND;
   pragma import (Cpp,CreateDialogParamA,"CreateDialogParamA");
   function CreateDialogParamW(
      hInstance_x : HINSTANCE;
      lpTemplateName : LPCWSTR;
      hWndParent : HWND;
      lpDialogFunc : DLGPROC;
      dwInitParam : LPARAM
   ) return HWND;
   pragma import (Cpp,CreateDialogParamW,"CreateDialogParamW");
   function CreateDialogIndirectParamA(
      hInstance_x : HINSTANCE;
      lpTemplate : LPCDLGTEMPLATEA;
      hWndParent : HWND;
      lpDialogFunc : DLGPROC;
      dwInitParam : LPARAM
   ) return HWND;
   pragma import (Cpp,CreateDialogIndirectParamA,"CreateDialogIndirectParamA");
   function CreateDialogIndirectParamW(
      hInstance_x : HINSTANCE;
      lpTemplate : LPCDLGTEMPLATEW;
      hWndParent : HWND;
      lpDialogFunc : DLGPROC;
      dwInitParam : LPARAM
   ) return HWND;
   pragma import (Cpp,CreateDialogIndirectParamW,"CreateDialogIndirectParamW");
   function DialogBoxParamA(
      hInstance_x : HINSTANCE;
      lpTemplateName : LPCSTR;
      hWndParent : HWND;
      lpDialogFunc : DLGPROC;
      dwInitParam : LPARAM
   ) return INT_PTR;
   pragma import (Cpp,DialogBoxParamA,"DialogBoxParamA");
   function DialogBoxParamW(
      hInstance_x : HINSTANCE;
      lpTemplateName : LPCWSTR;
      hWndParent : HWND;
      lpDialogFunc : DLGPROC;
      dwInitParam : LPARAM
   ) return INT_PTR;
   pragma import (Cpp,DialogBoxParamW,"DialogBoxParamW");
   function DialogBoxIndirectParamA(
      hInstance_x : HINSTANCE;
      hDialogTemplate : LPCDLGTEMPLATEA;
      hWndParent : HWND;
      lpDialogFunc : DLGPROC;
      dwInitParam : LPARAM
   ) return INT_PTR;
   pragma import (Cpp,DialogBoxIndirectParamA,"DialogBoxIndirectParamA");
   function DialogBoxIndirectParamW(
      hInstance_x : HINSTANCE;
      hDialogTemplate : LPCDLGTEMPLATEW;
      hWndParent : HWND;
      lpDialogFunc : DLGPROC;
      dwInitParam : LPARAM
   ) return INT_PTR;
   pragma import (Cpp,DialogBoxIndirectParamW,"DialogBoxIndirectParamW");
   function EndDialog(
      hDlg : HWND;
      nResult : INT_PTR
   ) return BOOL;
   pragma import (Cpp,EndDialog,"EndDialog");
   function GetDlgItem(
      hDlg : HWND;
      nIDDlgItem : Interfaces.C.Int
   ) return HWND;
   pragma import (Cpp,GetDlgItem,"GetDlgItem");
   function SetDlgItemInt(
      hDlg : HWND;
      nIDDlgItem : Interfaces.C.Int;
      uValue : UINT;
      bSigned : BOOL
   ) return BOOL;
   pragma import (Cpp,SetDlgItemInt,"SetDlgItemInt");
   function GetDlgItemInt(
      hDlg : HWND;
      nIDDlgItem : Interfaces.C.Int;
      lpTranslated : access BOOL;
      bSigned : BOOL
   ) return UINT;
   pragma import (Cpp,GetDlgItemInt,"GetDlgItemInt");
   function SetDlgItemTextA(
      hDlg : HWND;
      nIDDlgItem : Interfaces.C.Int;
      lpString : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetDlgItemTextA,"SetDlgItemTextA");
   function SetDlgItemTextW(
      hDlg : HWND;
      nIDDlgItem : Interfaces.C.Int;
      lpString : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetDlgItemTextW,"SetDlgItemTextW");
   function GetDlgItemTextA(
      hDlg : HWND;
      nIDDlgItem : Interfaces.C.Int;
      lpString : LPSTR;
      cchMax : Interfaces.C.Int
   ) return UINT;
   pragma import (Cpp,GetDlgItemTextA,"GetDlgItemTextA");
   function GetDlgItemTextW(
      hDlg : HWND;
      nIDDlgItem : Interfaces.C.Int;
      lpString : LPWSTR;
      cchMax : Interfaces.C.Int
   ) return UINT;
   pragma import (Cpp,GetDlgItemTextW,"GetDlgItemTextW");
   function CheckDlgButton(
      hDlg : HWND;
      nIDButton : Interfaces.C.Int;
      uCheck : UINT
   ) return BOOL;
   pragma import (Cpp,CheckDlgButton,"CheckDlgButton");
   function CheckRadioButton(
      hDlg : HWND;
      nIDFirstButton : Interfaces.C.Int;
      nIDLastButton : Interfaces.C.Int;
      nIDCheckButton : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,CheckRadioButton,"CheckRadioButton");
   function IsDlgButtonChecked(
      hDlg : HWND;
      nIDButton : Interfaces.C.Int
   ) return UINT;
   pragma import (Cpp,IsDlgButtonChecked,"IsDlgButtonChecked");
   function SendDlgItemMessageA(
      hDlg : HWND;
      nIDDlgItem : Interfaces.C.Int;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,SendDlgItemMessageA,"SendDlgItemMessageA");
   function SendDlgItemMessageW(
      hDlg : HWND;
      nIDDlgItem : Interfaces.C.Int;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,SendDlgItemMessageW,"SendDlgItemMessageW");
   function GetNextDlgGroupItem(
      hDlg : HWND;
      hCtl : HWND;
      bPrevious : BOOL
   ) return HWND;
   pragma import (Cpp,GetNextDlgGroupItem,"GetNextDlgGroupItem");
   function GetNextDlgTabItem(
      hDlg : HWND;
      hCtl : HWND;
      bPrevious : BOOL
   ) return HWND;
   pragma import (Cpp,GetNextDlgTabItem,"GetNextDlgTabItem");
   function GetDlgCtrlID(
      hWnd_x : HWND
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetDlgCtrlID,"GetDlgCtrlID");
   function GetDialogBaseUnits return Interfaces.C.Long;
   pragma import (Cpp,GetDialogBaseUnits,"GetDialogBaseUnits");
   function DefDlgProcA(
      hDlg : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,DefDlgProcA,"DefDlgProcA");
   function DefDlgProcW(
      hDlg : HWND;
      Msg_x : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,DefDlgProcW,"DefDlgProcW");
   type DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS is (
      DCDC_DEFAULT,
      DCDC_DISABLE_FONT_UPDATE,
      DCDC_DISABLE_RELAYOUT
   );
   for DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS use (
      DCDC_DEFAULT => 0,
      DCDC_DISABLE_FONT_UPDATE => 1,
      DCDC_DISABLE_RELAYOUT => 2
   );
   for DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS'Size use 32;
   -- operator|(); -- inlined function not supported
   -- operator|=(); -- inlined function not supported
   -- operator&(); -- inlined function not supported
   -- operator&=(); -- inlined function not supported
   -- operator~(); -- inlined function not supported
   -- operator^(); -- inlined function not supported
   -- operator^=(); -- inlined function not supported
   function SetDialogControlDpiChangeBehavior(
      hWnd_x : HWND;
      mask : DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS;
      values : DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS
   ) return BOOL;
   pragma import (Cpp,SetDialogControlDpiChangeBehavior,"SetDialogControlDpiChangeBehavior");
   function GetDialogControlDpiChangeBehavior(
      hWnd_x : HWND
   ) return DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS;
   pragma import (Cpp,GetDialogControlDpiChangeBehavior,"GetDialogControlDpiChangeBehavior");
   type DIALOG_DPI_CHANGE_BEHAVIORS is (
      DDC_DEFAULT,
      DDC_DISABLE_ALL,
      DDC_DISABLE_RESIZE,
      DDC_DISABLE_CONTROL_RELAYOUT
   );
   for DIALOG_DPI_CHANGE_BEHAVIORS use (
      DDC_DEFAULT => 0,
      DDC_DISABLE_ALL => 1,
      DDC_DISABLE_RESIZE => 2,
      DDC_DISABLE_CONTROL_RELAYOUT => 4
   );
   for DIALOG_DPI_CHANGE_BEHAVIORS'Size use 32;
   -- operator|(); -- inlined function not supported
   -- operator|=(); -- inlined function not supported
   -- operator&(); -- inlined function not supported
   -- operator&=(); -- inlined function not supported
   -- operator~(); -- inlined function not supported
   -- operator^(); -- inlined function not supported
   -- operator^=(); -- inlined function not supported
   function SetDialogDpiChangeBehavior(
      hDlg : HWND;
      mask : DIALOG_DPI_CHANGE_BEHAVIORS;
      values : DIALOG_DPI_CHANGE_BEHAVIORS
   ) return BOOL;
   pragma import (Cpp,SetDialogDpiChangeBehavior,"SetDialogDpiChangeBehavior");
   function GetDialogDpiChangeBehavior(
      hDlg : HWND
   ) return DIALOG_DPI_CHANGE_BEHAVIORS;
   pragma import (Cpp,GetDialogDpiChangeBehavior,"GetDialogDpiChangeBehavior");
   function CallMsgFilterA(
      lpMsg_x : LPMSG;
      nCode : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,CallMsgFilterA,"CallMsgFilterA");
   function CallMsgFilterW(
      lpMsg_x : LPMSG;
      nCode : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,CallMsgFilterW,"CallMsgFilterW");
   function OpenClipboard(
      hWndNewOwner : HWND
   ) return BOOL;
   pragma import (Cpp,OpenClipboard,"OpenClipboard");
   function CloseClipboard return BOOL;
   pragma import (Cpp,CloseClipboard,"CloseClipboard");
   function GetClipboardSequenceNumber return DWORD;
   pragma import (Cpp,GetClipboardSequenceNumber,"GetClipboardSequenceNumber");
   function GetClipboardOwner return HWND;
   pragma import (Cpp,GetClipboardOwner,"GetClipboardOwner");
   function SetClipboardViewer(
      hWndNewViewer : HWND
   ) return HWND;
   pragma import (Cpp,SetClipboardViewer,"SetClipboardViewer");
   function GetClipboardViewer return HWND;
   pragma import (Cpp,GetClipboardViewer,"GetClipboardViewer");
   function ChangeClipboardChain(
      hWndRemove : HWND;
      hWndNewNext : HWND
   ) return BOOL;
   pragma import (Cpp,ChangeClipboardChain,"ChangeClipboardChain");
   function SetClipboardData(
      uFormat : UINT;
      hMem : HANDLE
   ) return HANDLE;
   pragma import (Cpp,SetClipboardData,"SetClipboardData");
   function GetClipboardData(
      uFormat : UINT
   ) return HANDLE;
   pragma import (Cpp,GetClipboardData,"GetClipboardData");
   function RegisterClipboardFormatA(
      lpszFormat : LPCSTR
   ) return UINT;
   pragma import (Cpp,RegisterClipboardFormatA,"RegisterClipboardFormatA");
   function RegisterClipboardFormatW(
      lpszFormat : LPCWSTR
   ) return UINT;
   pragma import (Cpp,RegisterClipboardFormatW,"RegisterClipboardFormatW");
   function CountClipboardFormats return Interfaces.C.Int;
   pragma import (Cpp,CountClipboardFormats,"CountClipboardFormats");
   function EnumClipboardFormats(
      format : UINT
   ) return UINT;
   pragma import (Cpp,EnumClipboardFormats,"EnumClipboardFormats");
   function GetClipboardFormatNameA(
      format : UINT;
      lpszFormatName : LPSTR;
      cchMaxCount : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetClipboardFormatNameA,"GetClipboardFormatNameA");
   function GetClipboardFormatNameW(
      format : UINT;
      lpszFormatName : LPWSTR;
      cchMaxCount : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetClipboardFormatNameW,"GetClipboardFormatNameW");
   function EmptyClipboard return BOOL;
   pragma import (Cpp,EmptyClipboard,"EmptyClipboard");
   function IsClipboardFormatAvailable(
      format : UINT
   ) return BOOL;
   pragma import (Cpp,IsClipboardFormatAvailable,"IsClipboardFormatAvailable");
   function GetPriorityClipboardFormat(
      paFormatPriorityList : access UINT;
      cFormats : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetPriorityClipboardFormat,"GetPriorityClipboardFormat");
   function GetOpenClipboardWindow return HWND;
   pragma import (Cpp,GetOpenClipboardWindow,"GetOpenClipboardWindow");
   function AddClipboardFormatListener(
      hwnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,AddClipboardFormatListener,"AddClipboardFormatListener");
   function RemoveClipboardFormatListener(
      hwnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,RemoveClipboardFormatListener,"RemoveClipboardFormatListener");
   function GetUpdatedClipboardFormats(
      lpuiFormats : PUINT;
      cFormats : UINT;
      pcFormatsOut : PUINT
   ) return BOOL;
   pragma import (Cpp,GetUpdatedClipboardFormats,"GetUpdatedClipboardFormats");
   function CharToOemA(
      pSrc : LPCSTR;
      pDst : LPSTR
   ) return BOOL;
   pragma import (Cpp,CharToOemA,"CharToOemA");
   function CharToOemW(
      pSrc : LPCWSTR;
      pDst : LPSTR
   ) return BOOL;
   pragma import (Cpp,CharToOemW,"CharToOemW");
   function OemToCharA(
      pSrc : LPCSTR;
      pDst : LPSTR
   ) return BOOL;
   pragma import (Cpp,OemToCharA,"OemToCharA");
   function OemToCharW(
      pSrc : LPCSTR;
      pDst : LPWSTR
   ) return BOOL;
   pragma import (Cpp,OemToCharW,"OemToCharW");
   function CharToOemBuffA(
      lpszSrc : LPCSTR;
      lpszDst : LPSTR;
      cchDstLength : DWORD
   ) return BOOL;
   pragma import (Cpp,CharToOemBuffA,"CharToOemBuffA");
   function CharToOemBuffW(
      lpszSrc : LPCWSTR;
      lpszDst : LPSTR;
      cchDstLength : DWORD
   ) return BOOL;
   pragma import (Cpp,CharToOemBuffW,"CharToOemBuffW");
   function OemToCharBuffA(
      lpszSrc : LPCSTR;
      lpszDst : LPSTR;
      cchDstLength : DWORD
   ) return BOOL;
   pragma import (Cpp,OemToCharBuffA,"OemToCharBuffA");
   function OemToCharBuffW(
      lpszSrc : LPCSTR;
      lpszDst : LPWSTR;
      cchDstLength : DWORD
   ) return BOOL;
   pragma import (Cpp,OemToCharBuffW,"OemToCharBuffW");
   function CharUpperA(
      lpsz : LPSTR
   ) return LPSTR;
   pragma import (Cpp,CharUpperA,"CharUpperA");
   function CharUpperW(
      lpsz : LPWSTR
   ) return LPWSTR;
   pragma import (Cpp,CharUpperW,"CharUpperW");
   function CharUpperBuffA(
      lpsz : LPSTR;
      cchLength : DWORD
   ) return DWORD;
   pragma import (Cpp,CharUpperBuffA,"CharUpperBuffA");
   function CharUpperBuffW(
      lpsz : LPWSTR;
      cchLength : DWORD
   ) return DWORD;
   pragma import (Cpp,CharUpperBuffW,"CharUpperBuffW");
   function CharLowerA(
      lpsz : LPSTR
   ) return LPSTR;
   pragma import (Cpp,CharLowerA,"CharLowerA");
   function CharLowerW(
      lpsz : LPWSTR
   ) return LPWSTR;
   pragma import (Cpp,CharLowerW,"CharLowerW");
   function CharLowerBuffA(
      lpsz : LPSTR;
      cchLength : DWORD
   ) return DWORD;
   pragma import (Cpp,CharLowerBuffA,"CharLowerBuffA");
   function CharLowerBuffW(
      lpsz : LPWSTR;
      cchLength : DWORD
   ) return DWORD;
   pragma import (Cpp,CharLowerBuffW,"CharLowerBuffW");
   function CharNextA(
      lpsz : LPCSTR
   ) return LPSTR;
   pragma import (Cpp,CharNextA,"CharNextA");
   function CharNextW(
      lpsz : LPCWSTR
   ) return LPWSTR;
   pragma import (Cpp,CharNextW,"CharNextW");
   function CharPrevA(
      lpszStart : LPCSTR;
      lpszCurrent : LPCSTR
   ) return LPSTR;
   pragma import (Cpp,CharPrevA,"CharPrevA");
   function CharPrevW(
      lpszStart : LPCWSTR;
      lpszCurrent : LPCWSTR
   ) return LPWSTR;
   pragma import (Cpp,CharPrevW,"CharPrevW");
   function CharNextExA(
      CodePage : WORD;
      lpCurrentChar : LPCSTR;
      dwFlags : DWORD
   ) return LPSTR;
   pragma import (Cpp,CharNextExA,"CharNextExA");
   function CharPrevExA(
      CodePage : WORD;
      lpStart : LPCSTR;
      lpCurrentChar : LPCSTR;
      dwFlags : DWORD
   ) return LPSTR;
   pragma import (Cpp,CharPrevExA,"CharPrevExA");
   function IsCharAlphaA(
      ch : CHAR
   ) return BOOL;
   pragma import (Cpp,IsCharAlphaA,"IsCharAlphaA");
   function IsCharAlphaW(
      ch : WCHAR
   ) return BOOL;
   pragma import (Cpp,IsCharAlphaW,"IsCharAlphaW");
   function IsCharAlphaNumericA(
      ch : CHAR
   ) return BOOL;
   pragma import (Cpp,IsCharAlphaNumericA,"IsCharAlphaNumericA");
   function IsCharAlphaNumericW(
      ch : WCHAR
   ) return BOOL;
   pragma import (Cpp,IsCharAlphaNumericW,"IsCharAlphaNumericW");
   function IsCharUpperA(
      ch : CHAR
   ) return BOOL;
   pragma import (Cpp,IsCharUpperA,"IsCharUpperA");
   function IsCharUpperW(
      ch : WCHAR
   ) return BOOL;
   pragma import (Cpp,IsCharUpperW,"IsCharUpperW");
   function IsCharLowerA(
      ch : CHAR
   ) return BOOL;
   pragma import (Cpp,IsCharLowerA,"IsCharLowerA");
   function IsCharLowerW(
      ch : WCHAR
   ) return BOOL;
   pragma import (Cpp,IsCharLowerW,"IsCharLowerW");
   function SetFocus(
      hWnd_x : HWND
   ) return HWND;
   pragma import (Cpp,SetFocus,"SetFocus");
   function GetActiveWindow return HWND;
   pragma import (Cpp,GetActiveWindow,"GetActiveWindow");
   function GetFocus return HWND;
   pragma import (Cpp,GetFocus,"GetFocus");
   function GetKBCodePage return UINT;
   pragma import (Cpp,GetKBCodePage,"GetKBCodePage");
   function GetKeyState(
      nVirtKey : Interfaces.C.Int
   ) return SHORT;
   pragma import (Cpp,GetKeyState,"GetKeyState");
   function GetAsyncKeyState(
      vKey : Interfaces.C.Int
   ) return SHORT;
   pragma import (Cpp,GetAsyncKeyState,"GetAsyncKeyState");
   function GetKeyboardState(
      lpKeyState : PBYTE
   ) return BOOL;
   pragma import (Cpp,GetKeyboardState,"GetKeyboardState");
   function SetKeyboardState(
      lpKeyState : LPBYTE
   ) return BOOL;
   pragma import (Cpp,SetKeyboardState,"SetKeyboardState");
   function GetKeyNameTextA(
      lParam_x : LONG;
      lpString : LPSTR;
      cchSize : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetKeyNameTextA,"GetKeyNameTextA");
   function GetKeyNameTextW(
      lParam_x : LONG;
      lpString : LPWSTR;
      cchSize : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetKeyNameTextW,"GetKeyNameTextW");
   function GetKeyboardType(
      nTypeFlag : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetKeyboardType,"GetKeyboardType");
   function ToAscii_x(
      uVirtKey : UINT;
      uScanCode : UINT;
      lpKeyState : access constant BYTE;
      lpChar : LPWORD;
      uFlags : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,ToAscii_x,"ToAscii");
   function ToAsciiEx(
      uVirtKey : UINT;
      uScanCode : UINT;
      lpKeyState : access constant BYTE;
      lpChar : LPWORD;
      uFlags : UINT;
      dwhkl : HKL
   ) return Interfaces.C.Int;
   pragma import (Cpp,ToAsciiEx,"ToAsciiEx");
   function ToUnicode(
      wVirtKey : UINT;
      wScanCode : UINT;
      lpKeyState : access constant BYTE;
      pwszBuff : LPWSTR;
      cchBuff : Interfaces.C.Int;
      wFlags : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,ToUnicode,"ToUnicode");
   function OemKeyScan(
      wOemChar : WORD
   ) return DWORD;
   pragma import (Cpp,OemKeyScan,"OemKeyScan");
   function VkKeyScanA(
      ch : CHAR
   ) return SHORT;
   pragma import (Cpp,VkKeyScanA,"VkKeyScanA");
   function VkKeyScanW(
      ch : WCHAR
   ) return SHORT;
   pragma import (Cpp,VkKeyScanW,"VkKeyScanW");
   function VkKeyScanExA(
      ch : CHAR;
      dwhkl : HKL
   ) return SHORT;
   pragma import (Cpp,VkKeyScanExA,"VkKeyScanExA");
   function VkKeyScanExW(
      ch : WCHAR;
      dwhkl : HKL
   ) return SHORT;
   pragma import (Cpp,VkKeyScanExW,"VkKeyScanExW");
   procedure keybd_event(
      bVk : BYTE;
      bScan : BYTE;
      dwFlags : DWORD;
      dwExtraInfo : ULONG_PTR
   );
   pragma import (Cpp,keybd_event,"keybd_event");
   procedure mouse_event_Func(
      dwFlags : DWORD;
      dx : DWORD;
      dy : DWORD;
      dwData : DWORD;
      dwExtraInfo : ULONG_PTR
   );
   pragma import (Cpp,mouse_event_Func,"mouse_event");
   type tagMOUSEINPUT is record
      dx : LONG;
      dy : LONG;
      mouseData : DWORD;
      dwFlags : DWORD;
      time : DWORD;
      dwExtraInfo : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMOUSEINPUT);
   for tagMOUSEINPUT use record
      dx at 0 range 0..31;
      dy at 0 range 32..63;
      mouseData at 0 range 64..95;
      dwFlags at 0 range 96..127;
      time at 0 range 128..159;
      dwExtraInfo at 0 range 192..255;
   end record;
   for tagMOUSEINPUT'Size use 256;
   for tagMOUSEINPUT'Alignment use 8;
   subtype MOUSEINPUT is tagMOUSEINPUT;
   type PMOUSEINPUT is access all tagMOUSEINPUT;
   type LPMOUSEINPUT is access all tagMOUSEINPUT;
   type tagKEYBDINPUT is record
      wVk : WORD;
      wScan : WORD;
      dwFlags : DWORD;
      time : DWORD;
      dwExtraInfo : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagKEYBDINPUT);
   for tagKEYBDINPUT use record
      wVk at 0 range 0..15;
      wScan at 0 range 16..31;
      dwFlags at 0 range 32..63;
      time at 0 range 64..95;
      dwExtraInfo at 0 range 128..191;
   end record;
   for tagKEYBDINPUT'Size use 192;
   for tagKEYBDINPUT'Alignment use 8;
   subtype KEYBDINPUT is tagKEYBDINPUT;
   type PKEYBDINPUT is access all tagKEYBDINPUT;
   type LPKEYBDINPUT is access all tagKEYBDINPUT;
   type tagHARDWAREINPUT is record
      uMsg : DWORD;
      wParamL : WORD;
      wParamH : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagHARDWAREINPUT);
   for tagHARDWAREINPUT use record
      uMsg at 0 range 0..31;
      wParamL at 0 range 32..47;
      wParamH at 0 range 48..63;
   end record;
   for tagHARDWAREINPUT'Size use 64;
   for tagHARDWAREINPUT'Alignment use 4;
   subtype HARDWAREINPUT is tagHARDWAREINPUT;
   type PHARDWAREINPUT is access all tagHARDWAREINPUT;
   type LPHARDWAREINPUT is access all tagHARDWAREINPUT;
   type Anonymous_Record_189 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            mi : MOUSEINPUT;
         when 1 =>
            ki : KEYBDINPUT;
         when others => 
            hi : HARDWAREINPUT;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_189);
   pragma Unchecked_Union (Anonymous_Record_189);
   for Anonymous_Record_189'Size use 256;
   for Anonymous_Record_189'Alignment use 8;
   type tagINPUT is record
      type_x : DWORD;
      field_1 : Anonymous_Record_189;
   end record;
   pragma Convention (C_Pass_By_Copy,tagINPUT);
   for tagINPUT use record
      type_x at 0 range 0..31;
      field_1 at 0 range 32..287;
   end record;
   for tagINPUT'Size use 320;
   for tagINPUT'Alignment use 8;
   subtype INPUT is tagINPUT;
   type PINPUT is access all tagINPUT;
   type LPINPUT is access all tagINPUT;
   function SendInput(
      cInputs : UINT;
      pInputs : LPINPUT;
      cbSize : Interfaces.C.Int
   ) return UINT;
   pragma import (Cpp,SendInput,"SendInput");
   type HTOUCHINPUT_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HTOUCHINPUT_x);
   for HTOUCHINPUT_x use record
      unused at 0 range 0..31;
   end record;
   for HTOUCHINPUT_x'Size use 32;
   for HTOUCHINPUT_x'Alignment use 4;
   type HTOUCHINPUT is access all HTOUCHINPUT_x;
   type tagTOUCHINPUT is record
      x : LONG;
      y : LONG;
      hSource : HANDLE;
      dwID : DWORD;
      dwFlags : DWORD;
      dwMask : DWORD;
      dwTime : DWORD;
      dwExtraInfo : ULONG_PTR;
      cxContact : DWORD;
      cyContact : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTOUCHINPUT);
   for tagTOUCHINPUT use record
      x at 0 range 0..31;
      y at 0 range 32..63;
      hSource at 0 range 64..127;
      dwID at 0 range 128..159;
      dwFlags at 0 range 160..191;
      dwMask at 0 range 192..223;
      dwTime at 0 range 224..255;
      dwExtraInfo at 0 range 256..319;
      cxContact at 0 range 320..351;
      cyContact at 0 range 352..383;
   end record;
   for tagTOUCHINPUT'Size use 384;
   for tagTOUCHINPUT'Alignment use 8;
   subtype TOUCHINPUT is tagTOUCHINPUT;
   type PTOUCHINPUT is access all tagTOUCHINPUT;
   type PCTOUCHINPUT is access constant TOUCHINPUT;
   function GetTouchInputInfo(
      hTouchInput_x : HTOUCHINPUT;
      cInputs : UINT;
      pInputs : PTOUCHINPUT;
      cbSize : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,GetTouchInputInfo,"GetTouchInputInfo");
   function CloseTouchInputHandle(
      hTouchInput_x : HTOUCHINPUT
   ) return BOOL;
   pragma import (Cpp,CloseTouchInputHandle,"CloseTouchInputHandle");
   function RegisterTouchWindow(
      hwnd_x : HWND;
      ulFlags : ULONG
   ) return BOOL;
   pragma import (Cpp,RegisterTouchWindow,"RegisterTouchWindow");
   function UnregisterTouchWindow(
      hwnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,UnregisterTouchWindow,"UnregisterTouchWindow");
   function IsTouchWindow(
      hwnd_x : HWND;
      pulFlags : PULONG
   ) return BOOL;
   pragma import (Cpp,IsTouchWindow,"IsTouchWindow");
   type tagPOINTER_INPUT_TYPE is (
      PT_POINTER,
      PT_TOUCH,
      PT_PEN,
      PT_MOUSE,
      PT_TOUCHPAD
   );
   for tagPOINTER_INPUT_TYPE use (
      PT_POINTER => 1,
      PT_TOUCH => 2,
      PT_PEN => 3,
      PT_MOUSE => 4,
      PT_TOUCHPAD => 5
   );
   for tagPOINTER_INPUT_TYPE'Size use 32;
   subtype POINTER_INPUT_TYPE is DWORD;
   subtype POINTER_FLAGS is UINT32;
   type tagPOINTER_BUTTON_CHANGE_TYPE is (
      POINTER_CHANGE_NONE,
      POINTER_CHANGE_FIRSTBUTTON_DOWN,
      POINTER_CHANGE_FIRSTBUTTON_UP,
      POINTER_CHANGE_SECONDBUTTON_DOWN,
      POINTER_CHANGE_SECONDBUTTON_UP,
      POINTER_CHANGE_THIRDBUTTON_DOWN,
      POINTER_CHANGE_THIRDBUTTON_UP,
      POINTER_CHANGE_FOURTHBUTTON_DOWN,
      POINTER_CHANGE_FOURTHBUTTON_UP,
      POINTER_CHANGE_FIFTHBUTTON_DOWN,
      POINTER_CHANGE_FIFTHBUTTON_UP
   );
   for tagPOINTER_BUTTON_CHANGE_TYPE use (
      POINTER_CHANGE_NONE => 0,
      POINTER_CHANGE_FIRSTBUTTON_DOWN => 1,
      POINTER_CHANGE_FIRSTBUTTON_UP => 2,
      POINTER_CHANGE_SECONDBUTTON_DOWN => 3,
      POINTER_CHANGE_SECONDBUTTON_UP => 4,
      POINTER_CHANGE_THIRDBUTTON_DOWN => 5,
      POINTER_CHANGE_THIRDBUTTON_UP => 6,
      POINTER_CHANGE_FOURTHBUTTON_DOWN => 7,
      POINTER_CHANGE_FOURTHBUTTON_UP => 8,
      POINTER_CHANGE_FIFTHBUTTON_DOWN => 9,
      POINTER_CHANGE_FIFTHBUTTON_UP => 10
   );
   for tagPOINTER_BUTTON_CHANGE_TYPE'Size use 32;
   subtype POINTER_BUTTON_CHANGE_TYPE is tagPOINTER_BUTTON_CHANGE_TYPE;
   type tagPOINTER_INFO is record
      pointerType : POINTER_INPUT_TYPE;
      pointerId : UINT32;
      frameId : UINT32;
      pointerFlags : POINTER_FLAGS;
      sourceDevice : HANDLE;
      hwndTarget : HWND;
      ptPixelLocation : POINT;
      ptHimetricLocation : POINT;
      ptPixelLocationRaw : POINT;
      ptHimetricLocationRaw : POINT;
      dwTime : DWORD;
      historyCount : UINT32;
      InputData : INT32;
      dwKeyStates : DWORD;
      PerformanceCount : UINT64;
      ButtonChangeType : POINTER_BUTTON_CHANGE_TYPE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOINTER_INFO);
   for tagPOINTER_INFO use record
      pointerType at 0 range 0..31;
      pointerId at 0 range 32..63;
      frameId at 0 range 64..95;
      pointerFlags at 0 range 96..127;
      sourceDevice at 0 range 128..191;
      hwndTarget at 0 range 192..255;
      ptPixelLocation at 0 range 256..319;
      ptHimetricLocation at 0 range 320..383;
      ptPixelLocationRaw at 0 range 384..447;
      ptHimetricLocationRaw at 0 range 448..511;
      dwTime at 0 range 512..543;
      historyCount at 0 range 544..575;
      InputData at 0 range 576..607;
      dwKeyStates at 0 range 608..639;
      PerformanceCount at 0 range 640..703;
      ButtonChangeType at 0 range 704..735;
   end record;
   for tagPOINTER_INFO'Size use 768;
   for tagPOINTER_INFO'Alignment use 8;
   subtype POINTER_INFO is tagPOINTER_INFO;
   subtype TOUCH_FLAGS is UINT32;
   subtype TOUCH_MASK is UINT32;
   type tagPOINTER_TOUCH_INFO is record
      pointerInfo : POINTER_INFO;
      touchFlags : TOUCH_FLAGS;
      touchMask : TOUCH_MASK;
      rcContact : RECT;
      rcContactRaw : RECT;
      orientation : UINT32;
      pressure : UINT32;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOINTER_TOUCH_INFO);
   for tagPOINTER_TOUCH_INFO use record
      pointerInfo at 0 range 0..767;
      touchFlags at 0 range 768..799;
      touchMask at 0 range 800..831;
      rcContact at 0 range 832..959;
      rcContactRaw at 0 range 960..1087;
      orientation at 0 range 1088..1119;
      pressure at 0 range 1120..1151;
   end record;
   for tagPOINTER_TOUCH_INFO'Size use 1152;
   for tagPOINTER_TOUCH_INFO'Alignment use 8;
   subtype POINTER_TOUCH_INFO is tagPOINTER_TOUCH_INFO;
   subtype PEN_FLAGS is UINT32;
   subtype PEN_MASK is UINT32;
   type tagPOINTER_PEN_INFO is record
      pointerInfo : POINTER_INFO;
      penFlags : PEN_FLAGS;
      penMask : PEN_MASK;
      pressure : UINT32;
      rotation : UINT32;
      tiltX : INT32;
      tiltY : INT32;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOINTER_PEN_INFO);
   for tagPOINTER_PEN_INFO use record
      pointerInfo at 0 range 0..767;
      penFlags at 0 range 768..799;
      penMask at 0 range 800..831;
      pressure at 0 range 832..863;
      rotation at 0 range 864..895;
      tiltX at 0 range 896..927;
      tiltY at 0 range 928..959;
   end record;
   for tagPOINTER_PEN_INFO'Size use 960;
   for tagPOINTER_PEN_INFO'Alignment use 8;
   subtype POINTER_PEN_INFO is tagPOINTER_PEN_INFO;
   type POINTER_FEEDBACK_MODE is (
      POINTER_FEEDBACK_DEFAULT,
      POINTER_FEEDBACK_INDIRECT,
      POINTER_FEEDBACK_NONE
   );
   for POINTER_FEEDBACK_MODE use (
      POINTER_FEEDBACK_DEFAULT => 1,
      POINTER_FEEDBACK_INDIRECT => 2,
      POINTER_FEEDBACK_NONE => 3
   );
   for POINTER_FEEDBACK_MODE'Size use 32;
   function InitializeTouchInjection(
      maxCount : UINT32;
      dwMode : DWORD
   ) return BOOL;
   pragma import (Cpp,InitializeTouchInjection,"InitializeTouchInjection");
   function InjectTouchInput(
      count : UINT32;
      contacts : access constant POINTER_TOUCH_INFO
   ) return BOOL;
   pragma import (Cpp,InjectTouchInput,"InjectTouchInput");
   type tagUSAGE_PROPERTIES is record
      level : USHORT;
      page : USHORT;
      usage : USHORT;
      logicalMinimum : INT32;
      logicalMaximum : INT32;
      unit : USHORT;
      exponent : USHORT;
      count : BYTE;
      physicalMinimum : INT32;
      physicalMaximum : INT32;
   end record;
   pragma Convention (C_Pass_By_Copy,tagUSAGE_PROPERTIES);
   for tagUSAGE_PROPERTIES use record
      level at 0 range 0..15;
      page at 0 range 16..31;
      usage at 0 range 32..47;
      logicalMinimum at 0 range 64..95;
      logicalMaximum at 0 range 96..127;
      unit at 0 range 128..143;
      exponent at 0 range 144..159;
      count at 0 range 160..167;
      physicalMinimum at 0 range 192..223;
      physicalMaximum at 0 range 224..255;
   end record;
   for tagUSAGE_PROPERTIES'Size use 256;
   for tagUSAGE_PROPERTIES'Alignment use 4;
   subtype USAGE_PROPERTIES is tagUSAGE_PROPERTIES;
   type PUSAGE_PROPERTIES is access all tagUSAGE_PROPERTIES;
   type Anonymous_Record_190 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            touchInfo : POINTER_TOUCH_INFO;
         when others => 
            penInfo : POINTER_PEN_INFO;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_190);
   pragma Unchecked_Union (Anonymous_Record_190);
   for Anonymous_Record_190'Size use 1152;
   for Anonymous_Record_190'Alignment use 8;
   type tagPOINTER_TYPE_INFO is record
      type_x : POINTER_INPUT_TYPE;
      field_1 : Anonymous_Record_190;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOINTER_TYPE_INFO);
   for tagPOINTER_TYPE_INFO use record
      type_x at 0 range 0..31;
      field_1 at 0 range 32..1183;
   end record;
   for tagPOINTER_TYPE_INFO'Size use 1216;
   for tagPOINTER_TYPE_INFO'Alignment use 8;
   subtype POINTER_TYPE_INFO is tagPOINTER_TYPE_INFO;
   type PPOINTER_TYPE_INFO is access all tagPOINTER_TYPE_INFO;
   type tagINPUT_INJECTION_VALUE is record
      page : USHORT;
      usage : USHORT;
      value : INT32;
      index : USHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagINPUT_INJECTION_VALUE);
   for tagINPUT_INJECTION_VALUE use record
      page at 0 range 0..15;
      usage at 0 range 16..31;
      value at 0 range 32..63;
      index at 0 range 64..79;
   end record;
   for tagINPUT_INJECTION_VALUE'Size use 96;
   for tagINPUT_INJECTION_VALUE'Alignment use 4;
   subtype INPUT_INJECTION_VALUE is tagINPUT_INJECTION_VALUE;
   type PINPUT_INJECTION_VALUE is access all tagINPUT_INJECTION_VALUE;
   function GetPointerType(
      pointerId : UINT32;
      pointerType : access POINTER_INPUT_TYPE
   ) return BOOL;
   pragma import (Cpp,GetPointerType,"GetPointerType");
   function GetPointerCursorId(
      pointerId : UINT32;
      cursorId : access UINT32
   ) return BOOL;
   pragma import (Cpp,GetPointerCursorId,"GetPointerCursorId");
   function GetPointerInfo(
      pointerId : UINT32;
      pointerInfo : access POINTER_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerInfo,"GetPointerInfo");
   function GetPointerInfoHistory(
      pointerId : UINT32;
      entriesCount : access UINT32;
      pointerInfo : access POINTER_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerInfoHistory,"GetPointerInfoHistory");
   function GetPointerFrameInfo(
      pointerId : UINT32;
      pointerCount : access UINT32;
      pointerInfo : access POINTER_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerFrameInfo,"GetPointerFrameInfo");
   function GetPointerFrameInfoHistory(
      pointerId : UINT32;
      entriesCount : access UINT32;
      pointerCount : access UINT32;
      pointerInfo : access POINTER_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerFrameInfoHistory,"GetPointerFrameInfoHistory");
   function GetPointerTouchInfo(
      pointerId : UINT32;
      touchInfo : access POINTER_TOUCH_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerTouchInfo,"GetPointerTouchInfo");
   function GetPointerTouchInfoHistory(
      pointerId : UINT32;
      entriesCount : access UINT32;
      touchInfo : access POINTER_TOUCH_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerTouchInfoHistory,"GetPointerTouchInfoHistory");
   function GetPointerFrameTouchInfo(
      pointerId : UINT32;
      pointerCount : access UINT32;
      touchInfo : access POINTER_TOUCH_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerFrameTouchInfo,"GetPointerFrameTouchInfo");
   function GetPointerFrameTouchInfoHistory(
      pointerId : UINT32;
      entriesCount : access UINT32;
      pointerCount : access UINT32;
      touchInfo : access POINTER_TOUCH_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerFrameTouchInfoHistory,"GetPointerFrameTouchInfoHistory");
   function GetPointerPenInfo(
      pointerId : UINT32;
      penInfo : access POINTER_PEN_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerPenInfo,"GetPointerPenInfo");
   function GetPointerPenInfoHistory(
      pointerId : UINT32;
      entriesCount : access UINT32;
      penInfo : access POINTER_PEN_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerPenInfoHistory,"GetPointerPenInfoHistory");
   function GetPointerFramePenInfo(
      pointerId : UINT32;
      pointerCount : access UINT32;
      penInfo : access POINTER_PEN_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerFramePenInfo,"GetPointerFramePenInfo");
   function GetPointerFramePenInfoHistory(
      pointerId : UINT32;
      entriesCount : access UINT32;
      pointerCount : access UINT32;
      penInfo : access POINTER_PEN_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerFramePenInfoHistory,"GetPointerFramePenInfoHistory");
   function SkipPointerFrameMessages(
      pointerId : UINT32
   ) return BOOL;
   pragma import (Cpp,SkipPointerFrameMessages,"SkipPointerFrameMessages");
   function RegisterPointerInputTarget(
      hwnd_x : HWND;
      pointerType : POINTER_INPUT_TYPE
   ) return BOOL;
   pragma import (Cpp,RegisterPointerInputTarget,"RegisterPointerInputTarget");
   function UnregisterPointerInputTarget(
      hwnd_x : HWND;
      pointerType : POINTER_INPUT_TYPE
   ) return BOOL;
   pragma import (Cpp,UnregisterPointerInputTarget,"UnregisterPointerInputTarget");
   function RegisterPointerInputTargetEx(
      hwnd_x : HWND;
      pointerType : POINTER_INPUT_TYPE;
      fObserve : BOOL
   ) return BOOL;
   pragma import (Cpp,RegisterPointerInputTargetEx,"RegisterPointerInputTargetEx");
   function UnregisterPointerInputTargetEx(
      hwnd_x : HWND;
      pointerType : POINTER_INPUT_TYPE
   ) return BOOL;
   pragma import (Cpp,UnregisterPointerInputTargetEx,"UnregisterPointerInputTargetEx");
   type HSYNTHETICPOINTERDEVICE_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HSYNTHETICPOINTERDEVICE_x);
   for HSYNTHETICPOINTERDEVICE_x use record
      unused at 0 range 0..31;
   end record;
   for HSYNTHETICPOINTERDEVICE_x'Size use 32;
   for HSYNTHETICPOINTERDEVICE_x'Alignment use 4;
   type HSYNTHETICPOINTERDEVICE is access all HSYNTHETICPOINTERDEVICE_x;
   function CreateSyntheticPointerDevice(
      pointerType : POINTER_INPUT_TYPE;
      maxCount : ULONG;
      mode : POINTER_FEEDBACK_MODE
   ) return HSYNTHETICPOINTERDEVICE;
   pragma import (Cpp,CreateSyntheticPointerDevice,"CreateSyntheticPointerDevice");
   function InjectSyntheticPointerInput(
      device : HSYNTHETICPOINTERDEVICE;
      pointerInfo : access constant POINTER_TYPE_INFO;
      count : UINT32
   ) return BOOL;
   pragma import (Cpp,InjectSyntheticPointerInput,"InjectSyntheticPointerInput");
   procedure DestroySyntheticPointerDevice(
      device : HSYNTHETICPOINTERDEVICE
   );
   pragma import (Cpp,DestroySyntheticPointerDevice,"DestroySyntheticPointerDevice");
   function EnableMouseInPointer(
      fEnable : BOOL
   ) return BOOL;
   pragma import (Cpp,EnableMouseInPointer,"EnableMouseInPointer");
   function IsMouseInPointerEnabled return BOOL;
   pragma import (Cpp,IsMouseInPointerEnabled,"IsMouseInPointerEnabled");
   function EnableMouseInPointerForThread return BOOL;
   pragma import (Cpp,EnableMouseInPointerForThread,"EnableMouseInPointerForThread");
   function RegisterTouchHitTestingWindow(
      hwnd_x : HWND;
      value : ULONG
   ) return BOOL;
   pragma import (Cpp,RegisterTouchHitTestingWindow,"RegisterTouchHitTestingWindow");
   type tagTOUCH_HIT_TESTING_PROXIMITY_EVALUATION is record
      score : UINT16;
      adjustedPoint : POINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTOUCH_HIT_TESTING_PROXIMITY_EVALUATION);
   for tagTOUCH_HIT_TESTING_PROXIMITY_EVALUATION use record
      score at 0 range 0..15;
      adjustedPoint at 0 range 32..95;
   end record;
   for tagTOUCH_HIT_TESTING_PROXIMITY_EVALUATION'Size use 96;
   for tagTOUCH_HIT_TESTING_PROXIMITY_EVALUATION'Alignment use 4;
   subtype TOUCH_HIT_TESTING_PROXIMITY_EVALUATION is tagTOUCH_HIT_TESTING_PROXIMITY_EVALUATION;
   type PTOUCH_HIT_TESTING_PROXIMITY_EVALUATION is access all tagTOUCH_HIT_TESTING_PROXIMITY_EVALUATION;
   type tagTOUCH_HIT_TESTING_INPUT is record
      pointerId : UINT32;
      point_x : POINT;
      boundingBox : RECT;
      nonOccludedBoundingBox : RECT;
      orientation : UINT32;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTOUCH_HIT_TESTING_INPUT);
   for tagTOUCH_HIT_TESTING_INPUT use record
      pointerId at 0 range 0..31;
      point_x at 0 range 32..95;
      boundingBox at 0 range 96..223;
      nonOccludedBoundingBox at 0 range 224..351;
      orientation at 0 range 352..383;
   end record;
   for tagTOUCH_HIT_TESTING_INPUT'Size use 384;
   for tagTOUCH_HIT_TESTING_INPUT'Alignment use 4;
   subtype TOUCH_HIT_TESTING_INPUT is tagTOUCH_HIT_TESTING_INPUT;
   type PTOUCH_HIT_TESTING_INPUT is access all tagTOUCH_HIT_TESTING_INPUT;
   function EvaluateProximityToRect(
      controlBoundingBox : access constant RECT;
      pHitTestingInput : access constant TOUCH_HIT_TESTING_INPUT;
      pProximityEval : access TOUCH_HIT_TESTING_PROXIMITY_EVALUATION
   ) return BOOL;
   pragma import (Cpp,EvaluateProximityToRect,"EvaluateProximityToRect");
   function EvaluateProximityToPolygon(
      numVertices : UINT32;
      controlPolygon : access constant POINT;
      pHitTestingInput : access constant TOUCH_HIT_TESTING_INPUT;
      pProximityEval : access TOUCH_HIT_TESTING_PROXIMITY_EVALUATION
   ) return BOOL;
   pragma import (Cpp,EvaluateProximityToPolygon,"EvaluateProximityToPolygon");
   function PackTouchHitTestingProximityEvaluation(
      pHitTestingInput : access constant TOUCH_HIT_TESTING_INPUT;
      pProximityEval : access constant TOUCH_HIT_TESTING_PROXIMITY_EVALUATION
   ) return LRESULT;
   pragma import (Cpp,PackTouchHitTestingProximityEvaluation,"PackTouchHitTestingProximityEvaluation");
   type tagFEEDBACK_TYPE is (
      FEEDBACK_MAX,
      FEEDBACK_TOUCH_CONTACTVISUALIZATION,
      FEEDBACK_PEN_BARRELVISUALIZATION,
      FEEDBACK_PEN_TAP,
      FEEDBACK_PEN_DOUBLETAP,
      FEEDBACK_PEN_PRESSANDHOLD,
      FEEDBACK_PEN_RIGHTTAP,
      FEEDBACK_TOUCH_TAP,
      FEEDBACK_TOUCH_DOUBLETAP,
      FEEDBACK_TOUCH_PRESSANDHOLD,
      FEEDBACK_TOUCH_RIGHTTAP,
      FEEDBACK_GESTURE_PRESSANDTAP
   );
   for tagFEEDBACK_TYPE use (
      FEEDBACK_MAX => -1,
      FEEDBACK_TOUCH_CONTACTVISUALIZATION => 1,
      FEEDBACK_PEN_BARRELVISUALIZATION => 2,
      FEEDBACK_PEN_TAP => 3,
      FEEDBACK_PEN_DOUBLETAP => 4,
      FEEDBACK_PEN_PRESSANDHOLD => 5,
      FEEDBACK_PEN_RIGHTTAP => 6,
      FEEDBACK_TOUCH_TAP => 7,
      FEEDBACK_TOUCH_DOUBLETAP => 8,
      FEEDBACK_TOUCH_PRESSANDHOLD => 9,
      FEEDBACK_TOUCH_RIGHTTAP => 10,
      FEEDBACK_GESTURE_PRESSANDTAP => 11
   );
   for tagFEEDBACK_TYPE'Size use 32;
   subtype FEEDBACK_TYPE is tagFEEDBACK_TYPE;
   function GetWindowFeedbackSetting(
      hwnd_x : HWND;
      feedback : FEEDBACK_TYPE;
      dwFlags : DWORD;
      pSize_x : access UINT32;
      config : access Void
   ) return BOOL;
   pragma import (Cpp,GetWindowFeedbackSetting,"GetWindowFeedbackSetting");
   function SetWindowFeedbackSetting(
      hwnd_x : HWND;
      feedback : FEEDBACK_TYPE;
      dwFlags : DWORD;
      size_x : UINT32;
      configuration : access Void
   ) return BOOL;
   pragma import (Cpp,SetWindowFeedbackSetting,"SetWindowFeedbackSetting");
   type Anonymous_Record_192 is record
      x_11 : Standard.Float;
      x_12 : Standard.Float;
      x_13 : Standard.Float;
      x_14 : Standard.Float;
      x_21 : Standard.Float;
      x_22 : Standard.Float;
      x_23 : Standard.Float;
      x_24 : Standard.Float;
      x_31 : Standard.Float;
      x_32 : Standard.Float;
      x_33 : Standard.Float;
      x_34 : Standard.Float;
      x_41 : Standard.Float;
      x_42 : Standard.Float;
      x_43 : Standard.Float;
      x_44 : Standard.Float;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_192);
   for Anonymous_Record_192 use record
      x_11 at 0 range 0..31;
      x_12 at 0 range 32..63;
      x_13 at 0 range 64..95;
      x_14 at 0 range 96..127;
      x_21 at 0 range 128..159;
      x_22 at 0 range 160..191;
      x_23 at 0 range 192..223;
      x_24 at 0 range 224..255;
      x_31 at 0 range 256..287;
      x_32 at 0 range 288..319;
      x_33 at 0 range 320..351;
      x_34 at 0 range 352..383;
      x_41 at 0 range 384..415;
      x_42 at 0 range 416..447;
      x_43 at 0 range 448..479;
      x_44 at 0 range 480..511;
   end record;
   for Anonymous_Record_192'Size use 512;
   for Anonymous_Record_192'Alignment use 4;
   type Anonymous_Record_191_m_Array is array(1..4,1..4) of Standard.Float; -- Auto Generated Dependancy
   type Anonymous_Record_191 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_192;
         when others => 
            m : Anonymous_Record_191_m_Array;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_191);
   pragma Unchecked_Union (Anonymous_Record_191);
   for Anonymous_Record_191'Size use 512;
   for Anonymous_Record_191'Alignment use 4;
   type tagINPUT_TRANSFORM is record
      field_1 : Anonymous_Record_191;
   end record;
   pragma Convention (C_Pass_By_Copy,tagINPUT_TRANSFORM);
   for tagINPUT_TRANSFORM use record
      field_1 at 0 range 0..511;
   end record;
   for tagINPUT_TRANSFORM'Size use 512;
   for tagINPUT_TRANSFORM'Alignment use 4;
   subtype INPUT_TRANSFORM is tagINPUT_TRANSFORM;
   function GetPointerInputTransform(
      pointerId : UINT32;
      historyCount : UINT32;
      inputTransform : access INPUT_TRANSFORM
   ) return BOOL;
   pragma import (Cpp,GetPointerInputTransform,"GetPointerInputTransform");
   type tagLASTINPUTINFO is record
      cbSize : UINT;
      dwTime : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLASTINPUTINFO);
   for tagLASTINPUTINFO use record
      cbSize at 0 range 0..31;
      dwTime at 0 range 32..63;
   end record;
   for tagLASTINPUTINFO'Size use 64;
   for tagLASTINPUTINFO'Alignment use 4;
   subtype LASTINPUTINFO is tagLASTINPUTINFO;
   type PLASTINPUTINFO is access all tagLASTINPUTINFO;
   function GetLastInputInfo(
      plii : PLASTINPUTINFO
   ) return BOOL;
   pragma import (Cpp,GetLastInputInfo,"GetLastInputInfo");
   function MapVirtualKeyA(
      uCode : UINT;
      uMapType : UINT
   ) return UINT;
   pragma import (Cpp,MapVirtualKeyA,"MapVirtualKeyA");
   function MapVirtualKeyW(
      uCode : UINT;
      uMapType : UINT
   ) return UINT;
   pragma import (Cpp,MapVirtualKeyW,"MapVirtualKeyW");
   function MapVirtualKeyExA(
      uCode : UINT;
      uMapType : UINT;
      dwhkl : HKL
   ) return UINT;
   pragma import (Cpp,MapVirtualKeyExA,"MapVirtualKeyExA");
   function MapVirtualKeyExW(
      uCode : UINT;
      uMapType : UINT;
      dwhkl : HKL
   ) return UINT;
   pragma import (Cpp,MapVirtualKeyExW,"MapVirtualKeyExW");
   function GetInputState return BOOL;
   pragma import (Cpp,GetInputState,"GetInputState");
   function GetQueueStatus(
      flags : UINT
   ) return DWORD;
   pragma import (Cpp,GetQueueStatus,"GetQueueStatus");
   function GetCapture return HWND;
   pragma import (Cpp,GetCapture,"GetCapture");
   function SetCapture(
      hWnd_x : HWND
   ) return HWND;
   pragma import (Cpp,SetCapture,"SetCapture");
   function ReleaseCapture return BOOL;
   pragma import (Cpp,ReleaseCapture,"ReleaseCapture");
   function MsgWaitForMultipleObjects(
      nCount : DWORD;
      pHandles : access constant HANDLE;
      fWaitAll : BOOL;
      dwMilliseconds : DWORD;
      dwWakeMask : DWORD
   ) return DWORD;
   pragma import (Cpp,MsgWaitForMultipleObjects,"MsgWaitForMultipleObjects");
   function MsgWaitForMultipleObjectsEx(
      nCount : DWORD;
      pHandles : access constant HANDLE;
      dwMilliseconds : DWORD;
      dwWakeMask : DWORD;
      dwFlags : DWORD
   ) return DWORD;
   pragma import (Cpp,MsgWaitForMultipleObjectsEx,"MsgWaitForMultipleObjectsEx");
   function SetTimer(
      hWnd_x : HWND;
      nIDEvent : UINT_PTR;
      uElapse : UINT;
      lpTimerFunc : TIMERPROC
   ) return UINT_PTR;
   pragma import (Cpp,SetTimer,"SetTimer");
   function SetCoalescableTimer(
      hWnd_x : HWND;
      nIDEvent : UINT_PTR;
      uElapse : UINT;
      lpTimerFunc : TIMERPROC;
      uToleranceDelay : ULONG
   ) return UINT_PTR;
   pragma import (Cpp,SetCoalescableTimer,"SetCoalescableTimer");
   function KillTimer(
      hWnd_x : HWND;
      uIDEvent : UINT_PTR
   ) return BOOL;
   pragma import (Cpp,KillTimer,"KillTimer");
   function IsWindowUnicode(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,IsWindowUnicode,"IsWindowUnicode");
   function EnableWindow(
      hWnd_x : HWND;
      bEnable : BOOL
   ) return BOOL;
   pragma import (Cpp,EnableWindow,"EnableWindow");
   function IsWindowEnabled(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,IsWindowEnabled,"IsWindowEnabled");
   function LoadAcceleratorsA(
      hInstance_x : HINSTANCE;
      lpTableName : LPCSTR
   ) return HACCEL;
   pragma import (Cpp,LoadAcceleratorsA,"LoadAcceleratorsA");
   function LoadAcceleratorsW(
      hInstance_x : HINSTANCE;
      lpTableName : LPCWSTR
   ) return HACCEL;
   pragma import (Cpp,LoadAcceleratorsW,"LoadAcceleratorsW");
   function CreateAcceleratorTableA(
      paccel : LPACCEL;
      cAccel : Interfaces.C.Int
   ) return HACCEL;
   pragma import (Cpp,CreateAcceleratorTableA,"CreateAcceleratorTableA");
   function CreateAcceleratorTableW(
      paccel : LPACCEL;
      cAccel : Interfaces.C.Int
   ) return HACCEL;
   pragma import (Cpp,CreateAcceleratorTableW,"CreateAcceleratorTableW");
   function DestroyAcceleratorTable(
      hAccel_x : HACCEL
   ) return BOOL;
   pragma import (Cpp,DestroyAcceleratorTable,"DestroyAcceleratorTable");
   function CopyAcceleratorTableA(
      hAccelSrc : HACCEL;
      lpAccelDst : LPACCEL;
      cAccelEntries : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,CopyAcceleratorTableA,"CopyAcceleratorTableA");
   function CopyAcceleratorTableW(
      hAccelSrc : HACCEL;
      lpAccelDst : LPACCEL;
      cAccelEntries : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,CopyAcceleratorTableW,"CopyAcceleratorTableW");
   function TranslateAcceleratorA(
      hWnd_x : HWND;
      hAccTable : HACCEL;
      lpMsg_x : LPMSG
   ) return Interfaces.C.Int;
   pragma import (Cpp,TranslateAcceleratorA,"TranslateAcceleratorA");
   function TranslateAcceleratorW(
      hWnd_x : HWND;
      hAccTable : HACCEL;
      lpMsg_x : LPMSG
   ) return Interfaces.C.Int;
   pragma import (Cpp,TranslateAcceleratorW,"TranslateAcceleratorW");
   function GetSystemMetrics(
      nIndex : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetSystemMetrics,"GetSystemMetrics");
   function GetSystemMetricsForDpi(
      nIndex : Interfaces.C.Int;
      dpi : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetSystemMetricsForDpi,"GetSystemMetricsForDpi");
   function LoadMenuA(
      hInstance_x : HINSTANCE;
      lpMenuName : LPCSTR
   ) return HMENU;
   pragma import (Cpp,LoadMenuA,"LoadMenuA");
   function LoadMenuW(
      hInstance_x : HINSTANCE;
      lpMenuName : LPCWSTR
   ) return HMENU;
   pragma import (Cpp,LoadMenuW,"LoadMenuW");
   function LoadMenuIndirectA(
      lpMenuTemplate_x : access constant MENUTEMPLATEA
   ) return HMENU;
   pragma import (Cpp,LoadMenuIndirectA,"LoadMenuIndirectA");
   function LoadMenuIndirectW(
      lpMenuTemplate_x : access constant MENUTEMPLATEW
   ) return HMENU;
   pragma import (Cpp,LoadMenuIndirectW,"LoadMenuIndirectW");
   function GetMenu(
      hWnd_x : HWND
   ) return HMENU;
   pragma import (Cpp,GetMenu,"GetMenu");
   function SetMenu(
      hWnd_x : HWND;
      hMenu_x : HMENU
   ) return BOOL;
   pragma import (Cpp,SetMenu,"SetMenu");
   function ChangeMenuA(
      hMenu_x : HMENU;
      cmd : UINT;
      lpszNewItem : LPCSTR;
      cmdInsert : UINT;
      flags : UINT
   ) return BOOL;
   pragma import (Cpp,ChangeMenuA,"ChangeMenuA");
   function ChangeMenuW(
      hMenu_x : HMENU;
      cmd : UINT;
      lpszNewItem : LPCWSTR;
      cmdInsert : UINT;
      flags : UINT
   ) return BOOL;
   pragma import (Cpp,ChangeMenuW,"ChangeMenuW");
   function HiliteMenuItem(
      hWnd_x : HWND;
      hMenu_x : HMENU;
      uIDHiliteItem : UINT;
      uHilite : UINT
   ) return BOOL;
   pragma import (Cpp,HiliteMenuItem,"HiliteMenuItem");
   function GetMenuStringA(
      hMenu_x : HMENU;
      uIDItem : UINT;
      lpString : LPSTR;
      cchMax : Interfaces.C.Int;
      flags : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetMenuStringA,"GetMenuStringA");
   function GetMenuStringW(
      hMenu_x : HMENU;
      uIDItem : UINT;
      lpString : LPWSTR;
      cchMax : Interfaces.C.Int;
      flags : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetMenuStringW,"GetMenuStringW");
   function GetMenuState(
      hMenu_x : HMENU;
      uId : UINT;
      uFlags : UINT
   ) return UINT;
   pragma import (Cpp,GetMenuState,"GetMenuState");
   function DrawMenuBar(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,DrawMenuBar,"DrawMenuBar");
   function GetSystemMenu(
      hWnd_x : HWND;
      bRevert : BOOL
   ) return HMENU;
   pragma import (Cpp,GetSystemMenu,"GetSystemMenu");
   function CreateMenu return HMENU;
   pragma import (Cpp,CreateMenu,"CreateMenu");
   function CreatePopupMenu return HMENU;
   pragma import (Cpp,CreatePopupMenu,"CreatePopupMenu");
   function DestroyMenu(
      hMenu_x : HMENU
   ) return BOOL;
   pragma import (Cpp,DestroyMenu,"DestroyMenu");
   function CheckMenuItem(
      hMenu_x : HMENU;
      uIDCheckItem : UINT;
      uCheck : UINT
   ) return DWORD;
   pragma import (Cpp,CheckMenuItem,"CheckMenuItem");
   function EnableMenuItem(
      hMenu_x : HMENU;
      uIDEnableItem : UINT;
      uEnable : UINT
   ) return BOOL;
   pragma import (Cpp,EnableMenuItem,"EnableMenuItem");
   function GetSubMenu(
      hMenu_x : HMENU;
      nPos : Interfaces.C.Int
   ) return HMENU;
   pragma import (Cpp,GetSubMenu,"GetSubMenu");
   function GetMenuItemID(
      hMenu_x : HMENU;
      nPos : Interfaces.C.Int
   ) return UINT;
   pragma import (Cpp,GetMenuItemID,"GetMenuItemID");
   function GetMenuItemCount(
      hMenu_x : HMENU
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetMenuItemCount,"GetMenuItemCount");
   function InsertMenuA(
      hMenu_x : HMENU;
      uPosition : UINT;
      uFlags : UINT;
      uIDNewItem : UINT_PTR;
      lpNewItem : LPCSTR
   ) return BOOL;
   pragma import (Cpp,InsertMenuA,"InsertMenuA");
   function InsertMenuW(
      hMenu_x : HMENU;
      uPosition : UINT;
      uFlags : UINT;
      uIDNewItem : UINT_PTR;
      lpNewItem : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,InsertMenuW,"InsertMenuW");
   function AppendMenuA(
      hMenu_x : HMENU;
      uFlags : UINT;
      uIDNewItem : UINT_PTR;
      lpNewItem : LPCSTR
   ) return BOOL;
   pragma import (Cpp,AppendMenuA,"AppendMenuA");
   function AppendMenuW(
      hMenu_x : HMENU;
      uFlags : UINT;
      uIDNewItem : UINT_PTR;
      lpNewItem : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,AppendMenuW,"AppendMenuW");
   function ModifyMenuA(
      hMnu : HMENU;
      uPosition : UINT;
      uFlags : UINT;
      uIDNewItem : UINT_PTR;
      lpNewItem : LPCSTR
   ) return BOOL;
   pragma import (Cpp,ModifyMenuA,"ModifyMenuA");
   function ModifyMenuW(
      hMnu : HMENU;
      uPosition : UINT;
      uFlags : UINT;
      uIDNewItem : UINT_PTR;
      lpNewItem : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,ModifyMenuW,"ModifyMenuW");
   function RemoveMenu(
      hMenu_x : HMENU;
      uPosition : UINT;
      uFlags : UINT
   ) return BOOL;
   pragma import (Cpp,RemoveMenu,"RemoveMenu");
   function DeleteMenu(
      hMenu_x : HMENU;
      uPosition : UINT;
      uFlags : UINT
   ) return BOOL;
   pragma import (Cpp,DeleteMenu,"DeleteMenu");
   function SetMenuItemBitmaps(
      hMenu_x : HMENU;
      uPosition : UINT;
      uFlags : UINT;
      hBitmapUnchecked : HBITMAP;
      hBitmapChecked : HBITMAP
   ) return BOOL;
   pragma import (Cpp,SetMenuItemBitmaps,"SetMenuItemBitmaps");
   function GetMenuCheckMarkDimensions return LONG;
   pragma import (Cpp,GetMenuCheckMarkDimensions,"GetMenuCheckMarkDimensions");
   function TrackPopupMenu(
      hMenu_x : HMENU;
      uFlags : UINT;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      nReserved : Interfaces.C.Int;
      hWnd_x : HWND;
      prcRect : access constant RECT
   ) return BOOL;
   pragma import (Cpp,TrackPopupMenu,"TrackPopupMenu");
   type tagTPMPARAMS is record
      cbSize : UINT;
      rcExclude : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTPMPARAMS);
   for tagTPMPARAMS use record
      cbSize at 0 range 0..31;
      rcExclude at 0 range 32..159;
   end record;
   for tagTPMPARAMS'Size use 160;
   for tagTPMPARAMS'Alignment use 4;
   subtype TPMPARAMS is tagTPMPARAMS;
   type LPTPMPARAMS is access all TPMPARAMS;
   function TrackPopupMenuEx(
      hMenu_x : HMENU;
      uFlags : UINT;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      hwnd_x : HWND;
      lptpm : LPTPMPARAMS
   ) return BOOL;
   pragma import (Cpp,TrackPopupMenuEx,"TrackPopupMenuEx");
   function CalculatePopupWindowPosition(
      anchorPoint : access constant POINT;
      windowSize : access constant SIZE;
      flags : UINT;
      excludeRect : access RECT;
      popupWindowPosition : access RECT
   ) return BOOL;
   pragma import (Cpp,CalculatePopupWindowPosition,"CalculatePopupWindowPosition");
   type tagMENUINFO is record
      cbSize : DWORD;
      fMask : DWORD;
      dwStyle : DWORD;
      cyMax : UINT;
      hbrBack : HBRUSH;
      dwContextHelpID : DWORD;
      dwMenuData : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMENUINFO);
   for tagMENUINFO use record
      cbSize at 0 range 0..31;
      fMask at 0 range 32..63;
      dwStyle at 0 range 64..95;
      cyMax at 0 range 96..127;
      hbrBack at 0 range 128..191;
      dwContextHelpID at 0 range 192..223;
      dwMenuData at 0 range 256..319;
   end record;
   for tagMENUINFO'Size use 320;
   for tagMENUINFO'Alignment use 8;
   subtype MENUINFO is tagMENUINFO;
   type LPMENUINFO is access all tagMENUINFO;
   type LPCMENUINFO is access constant MENUINFO;
   function GetMenuInfo(
      param1 : HMENU;
      param2 : LPMENUINFO
   ) return BOOL;
   pragma import (Cpp,GetMenuInfo,"GetMenuInfo");
   function SetMenuInfo(
      param1 : HMENU;
      param2 : LPCMENUINFO
   ) return BOOL;
   pragma import (Cpp,SetMenuInfo,"SetMenuInfo");
   function EndMenu return BOOL;
   pragma import (Cpp,EndMenu,"EndMenu");
   type tagMENUGETOBJECTINFO is record
      dwFlags : DWORD;
      uPos : UINT;
      hmenu_x : HMENU;
      riid : PVOID;
      pvObj : PVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMENUGETOBJECTINFO);
   for tagMENUGETOBJECTINFO use record
      dwFlags at 0 range 0..31;
      uPos at 0 range 32..63;
      hmenu_x at 0 range 64..127;
      riid at 0 range 128..191;
      pvObj at 0 range 192..255;
   end record;
   for tagMENUGETOBJECTINFO'Size use 256;
   for tagMENUGETOBJECTINFO'Alignment use 8;
   subtype MENUGETOBJECTINFO is tagMENUGETOBJECTINFO;
   type PMENUGETOBJECTINFO is access all tagMENUGETOBJECTINFO;
   type tagMENUITEMINFOA is record
      cbSize : UINT;
      fMask : UINT;
      fType : UINT;
      fState : UINT;
      wID : UINT;
      hSubMenu : HMENU;
      hbmpChecked : HBITMAP;
      hbmpUnchecked : HBITMAP;
      dwItemData : ULONG_PTR;
      dwTypeData : LPSTR;
      cch : UINT;
      hbmpItem : HBITMAP;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMENUITEMINFOA);
   for tagMENUITEMINFOA use record
      cbSize at 0 range 0..31;
      fMask at 0 range 32..63;
      fType at 0 range 64..95;
      fState at 0 range 96..127;
      wID at 0 range 128..159;
      hSubMenu at 0 range 192..255;
      hbmpChecked at 0 range 256..319;
      hbmpUnchecked at 0 range 320..383;
      dwItemData at 0 range 384..447;
      dwTypeData at 0 range 448..511;
      cch at 0 range 512..543;
      hbmpItem at 0 range 576..639;
   end record;
   for tagMENUITEMINFOA'Size use 640;
   for tagMENUITEMINFOA'Alignment use 8;
   subtype MENUITEMINFOA is tagMENUITEMINFOA;
   type LPMENUITEMINFOA is access all tagMENUITEMINFOA;
   type tagMENUITEMINFOW is record
      cbSize : UINT;
      fMask : UINT;
      fType : UINT;
      fState : UINT;
      wID : UINT;
      hSubMenu : HMENU;
      hbmpChecked : HBITMAP;
      hbmpUnchecked : HBITMAP;
      dwItemData : ULONG_PTR;
      dwTypeData : LPWSTR;
      cch : UINT;
      hbmpItem : HBITMAP;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMENUITEMINFOW);
   for tagMENUITEMINFOW use record
      cbSize at 0 range 0..31;
      fMask at 0 range 32..63;
      fType at 0 range 64..95;
      fState at 0 range 96..127;
      wID at 0 range 128..159;
      hSubMenu at 0 range 192..255;
      hbmpChecked at 0 range 256..319;
      hbmpUnchecked at 0 range 320..383;
      dwItemData at 0 range 384..447;
      dwTypeData at 0 range 448..511;
      cch at 0 range 512..543;
      hbmpItem at 0 range 576..639;
   end record;
   for tagMENUITEMINFOW'Size use 640;
   for tagMENUITEMINFOW'Alignment use 8;
   subtype MENUITEMINFOW is tagMENUITEMINFOW;
   type LPMENUITEMINFOW is access all tagMENUITEMINFOW;
   subtype MENUITEMINFO is MENUITEMINFOA;
   subtype LPMENUITEMINFO is LPMENUITEMINFOA;
   type LPCMENUITEMINFOA is access constant MENUITEMINFOA;
   type LPCMENUITEMINFOW is access constant MENUITEMINFOW;
   subtype LPCMENUITEMINFO is LPCMENUITEMINFOA;
   function InsertMenuItemA(
      hmenu_x : HMENU;
      item : UINT;
      fByPosition : BOOL;
      lpmi : LPCMENUITEMINFOA
   ) return BOOL;
   pragma import (Cpp,InsertMenuItemA,"InsertMenuItemA");
   function InsertMenuItemW(
      hmenu_x : HMENU;
      item : UINT;
      fByPosition : BOOL;
      lpmi : LPCMENUITEMINFOW
   ) return BOOL;
   pragma import (Cpp,InsertMenuItemW,"InsertMenuItemW");
   function GetMenuItemInfoA(
      hmenu_x : HMENU;
      item : UINT;
      fByPosition : BOOL;
      lpmii : LPMENUITEMINFOA
   ) return BOOL;
   pragma import (Cpp,GetMenuItemInfoA,"GetMenuItemInfoA");
   function GetMenuItemInfoW(
      hmenu_x : HMENU;
      item : UINT;
      fByPosition : BOOL;
      lpmii : LPMENUITEMINFOW
   ) return BOOL;
   pragma import (Cpp,GetMenuItemInfoW,"GetMenuItemInfoW");
   function SetMenuItemInfoA(
      hmenu_x : HMENU;
      item : UINT;
      fByPositon : BOOL;
      lpmii : LPCMENUITEMINFOA
   ) return BOOL;
   pragma import (Cpp,SetMenuItemInfoA,"SetMenuItemInfoA");
   function SetMenuItemInfoW(
      hmenu_x : HMENU;
      item : UINT;
      fByPositon : BOOL;
      lpmii : LPCMENUITEMINFOW
   ) return BOOL;
   pragma import (Cpp,SetMenuItemInfoW,"SetMenuItemInfoW");
   function GetMenuDefaultItem(
      hMenu_x : HMENU;
      fByPos : UINT;
      gmdiFlags : UINT
   ) return UINT;
   pragma import (Cpp,GetMenuDefaultItem,"GetMenuDefaultItem");
   function SetMenuDefaultItem(
      hMenu_x : HMENU;
      uItem : UINT;
      fByPos : UINT
   ) return BOOL;
   pragma import (Cpp,SetMenuDefaultItem,"SetMenuDefaultItem");
   function GetMenuItemRect(
      hWnd_x : HWND;
      hMenu_x : HMENU;
      uItem : UINT;
      lprcItem : LPRECT
   ) return BOOL;
   pragma import (Cpp,GetMenuItemRect,"GetMenuItemRect");
   function MenuItemFromPoint(
      hWnd_x : HWND;
      hMenu_x : HMENU;
      ptScreen : POINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,MenuItemFromPoint,"MenuItemFromPoint");
   type tagDROPSTRUCT is record
      hwndSource : HWND;
      hwndSink : HWND;
      wFmt : DWORD;
      dwData : ULONG_PTR;
      ptDrop : POINT;
      dwControlData : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDROPSTRUCT);
   for tagDROPSTRUCT use record
      hwndSource at 0 range 0..63;
      hwndSink at 0 range 64..127;
      wFmt at 0 range 128..159;
      dwData at 0 range 192..255;
      ptDrop at 0 range 256..319;
      dwControlData at 0 range 320..351;
   end record;
   for tagDROPSTRUCT'Size use 384;
   for tagDROPSTRUCT'Alignment use 8;
   subtype DROPSTRUCT is tagDROPSTRUCT;
   type PDROPSTRUCT is access all tagDROPSTRUCT;
   type LPDROPSTRUCT is access all tagDROPSTRUCT;
   function DragObject(
      hwndParent : HWND;
      hwndFrom : HWND;
      fmt : UINT;
      data : ULONG_PTR;
      hcur : HCURSOR
   ) return DWORD;
   pragma import (Cpp,DragObject,"DragObject");
   function DragDetect(
      hwnd_x : HWND;
      pt : POINT
   ) return BOOL;
   pragma import (Cpp,DragDetect,"DragDetect");
   function DrawIcon(
      hDC_x : HDC;
      X : Interfaces.C.Int;
      Y : Interfaces.C.Int;
      hIcon_x : HICON
   ) return BOOL;
   pragma import (Cpp,DrawIcon,"DrawIcon");
   type tagDRAWTEXTPARAMS is record
      cbSize : UINT;
      iTabLength : Interfaces.C.Int;
      iLeftMargin : Interfaces.C.Int;
      iRightMargin : Interfaces.C.Int;
      uiLengthDrawn : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDRAWTEXTPARAMS);
   for tagDRAWTEXTPARAMS use record
      cbSize at 0 range 0..31;
      iTabLength at 0 range 32..63;
      iLeftMargin at 0 range 64..95;
      iRightMargin at 0 range 96..127;
      uiLengthDrawn at 0 range 128..159;
   end record;
   for tagDRAWTEXTPARAMS'Size use 160;
   for tagDRAWTEXTPARAMS'Alignment use 4;
   subtype DRAWTEXTPARAMS is tagDRAWTEXTPARAMS;
   type LPDRAWTEXTPARAMS is access all tagDRAWTEXTPARAMS;
   function DrawTextA(
      hdc_x : HDC;
      lpchText : LPCSTR;
      cchText : Interfaces.C.Int;
      lprc : LPRECT;
      format : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,DrawTextA,"DrawTextA");
   function DrawTextW(
      hdc_x : HDC;
      lpchText : LPCWSTR;
      cchText : Interfaces.C.Int;
      lprc : LPRECT;
      format : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,DrawTextW,"DrawTextW");
   function DrawTextExA(
      hdc_x : HDC;
      lpchText : LPSTR;
      cchText : Interfaces.C.Int;
      lprc : LPRECT;
      format : UINT;
      lpdtp : LPDRAWTEXTPARAMS
   ) return Interfaces.C.Int;
   pragma import (Cpp,DrawTextExA,"DrawTextExA");
   function DrawTextExW(
      hdc_x : HDC;
      lpchText : LPWSTR;
      cchText : Interfaces.C.Int;
      lprc : LPRECT;
      format : UINT;
      lpdtp : LPDRAWTEXTPARAMS
   ) return Interfaces.C.Int;
   pragma import (Cpp,DrawTextExW,"DrawTextExW");
   function GrayStringA(
      hDC_x : HDC;
      hBrush_x : HBRUSH;
      lpOutputFunc : GRAYSTRINGPROC;
      lpData : LPARAM;
      nCount : Interfaces.C.Int;
      X : Interfaces.C.Int;
      Y : Interfaces.C.Int;
      nWidth : Interfaces.C.Int;
      nHeight : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,GrayStringA,"GrayStringA");
   function GrayStringW(
      hDC_x : HDC;
      hBrush_x : HBRUSH;
      lpOutputFunc : GRAYSTRINGPROC;
      lpData : LPARAM;
      nCount : Interfaces.C.Int;
      X : Interfaces.C.Int;
      Y : Interfaces.C.Int;
      nWidth : Interfaces.C.Int;
      nHeight : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,GrayStringW,"GrayStringW");
   function DrawStateA(
      hdc_x : HDC;
      hbrFore : HBRUSH;
      qfnCallBack : DRAWSTATEPROC;
      lData : LPARAM;
      wData : WPARAM;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int;
      uFlags : UINT
   ) return BOOL;
   pragma import (Cpp,DrawStateA,"DrawStateA");
   function DrawStateW(
      hdc_x : HDC;
      hbrFore : HBRUSH;
      qfnCallBack : DRAWSTATEPROC;
      lData : LPARAM;
      wData : WPARAM;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int;
      uFlags : UINT
   ) return BOOL;
   pragma import (Cpp,DrawStateW,"DrawStateW");
   function TabbedTextOutA(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      lpString : LPCSTR;
      chCount : Interfaces.C.Int;
      nTabPositions : Interfaces.C.Int;
      lpnTabStopPositions : access constant INT;
      nTabOrigin : Interfaces.C.Int
   ) return LONG;
   pragma import (Cpp,TabbedTextOutA,"TabbedTextOutA");
   function TabbedTextOutW(
      hdc_x : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      lpString : LPCWSTR;
      chCount : Interfaces.C.Int;
      nTabPositions : Interfaces.C.Int;
      lpnTabStopPositions : access constant INT;
      nTabOrigin : Interfaces.C.Int
   ) return LONG;
   pragma import (Cpp,TabbedTextOutW,"TabbedTextOutW");
   function GetTabbedTextExtentA(
      hdc_x : HDC;
      lpString : LPCSTR;
      chCount : Interfaces.C.Int;
      nTabPositions : Interfaces.C.Int;
      lpnTabStopPositions : access constant INT
   ) return DWORD;
   pragma import (Cpp,GetTabbedTextExtentA,"GetTabbedTextExtentA");
   function GetTabbedTextExtentW(
      hdc_x : HDC;
      lpString : LPCWSTR;
      chCount : Interfaces.C.Int;
      nTabPositions : Interfaces.C.Int;
      lpnTabStopPositions : access constant INT
   ) return DWORD;
   pragma import (Cpp,GetTabbedTextExtentW,"GetTabbedTextExtentW");
   function UpdateWindow(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,UpdateWindow,"UpdateWindow");
   function SetActiveWindow(
      hWnd_x : HWND
   ) return HWND;
   pragma import (Cpp,SetActiveWindow,"SetActiveWindow");
   function GetForegroundWindow return HWND;
   pragma import (Cpp,GetForegroundWindow,"GetForegroundWindow");
   function PaintDesktop(
      hdc_x : HDC
   ) return BOOL;
   pragma import (Cpp,PaintDesktop,"PaintDesktop");
   procedure SwitchToThisWindow(
      hwnd_x : HWND;
      fUnknown : BOOL
   );
   pragma import (Cpp,SwitchToThisWindow,"SwitchToThisWindow");
   function SetForegroundWindow(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,SetForegroundWindow,"SetForegroundWindow");
   function AllowSetForegroundWindow(
      dwProcessId : DWORD
   ) return BOOL;
   pragma import (Cpp,AllowSetForegroundWindow,"AllowSetForegroundWindow");
   function LockSetForegroundWindow(
      uLockCode : UINT
   ) return BOOL;
   pragma import (Cpp,LockSetForegroundWindow,"LockSetForegroundWindow");
   function WindowFromDC(
      hDC_x : HDC
   ) return HWND;
   pragma import (Cpp,WindowFromDC,"WindowFromDC");
   function GetDC(
      hWnd_x : HWND
   ) return HDC;
   pragma import (Cpp,GetDC,"GetDC");
   function GetDCEx(
      hWnd_x : HWND;
      hrgnClip : HRGN;
      flags : DWORD
   ) return HDC;
   pragma import (Cpp,GetDCEx,"GetDCEx");
   function GetWindowDC(
      hWnd_x : HWND
   ) return HDC;
   pragma import (Cpp,GetWindowDC,"GetWindowDC");
   function ReleaseDC(
      hWnd_x : HWND;
      hDC_x : HDC
   ) return Interfaces.C.Int;
   pragma import (Cpp,ReleaseDC,"ReleaseDC");
   function BeginPaint(
      hWnd_x : HWND;
      lpPaint : LPPAINTSTRUCT
   ) return HDC;
   pragma import (Cpp,BeginPaint,"BeginPaint");
   function EndPaint(
      hWnd_x : HWND;
      lpPaint : access constant PAINTSTRUCT
   ) return BOOL;
   pragma import (Cpp,EndPaint,"EndPaint");
   function GetUpdateRect(
      hWnd_x : HWND;
      lpRect_x : LPRECT;
      bErase : BOOL
   ) return BOOL;
   pragma import (Cpp,GetUpdateRect,"GetUpdateRect");
   function GetUpdateRgn(
      hWnd_x : HWND;
      hRgn_x : HRGN;
      bErase : BOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetUpdateRgn,"GetUpdateRgn");
   function SetWindowRgn(
      hWnd_x : HWND;
      hRgn_x : HRGN;
      bRedraw : BOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetWindowRgn,"SetWindowRgn");
   function GetWindowRgn(
      hWnd_x : HWND;
      hRgn_x : HRGN
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetWindowRgn,"GetWindowRgn");
   function GetWindowRgnBox(
      hWnd_x : HWND;
      lprc : LPRECT
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetWindowRgnBox,"GetWindowRgnBox");
   function ExcludeUpdateRgn(
      hDC_x : HDC;
      hWnd_x : HWND
   ) return Interfaces.C.Int;
   pragma import (Cpp,ExcludeUpdateRgn,"ExcludeUpdateRgn");
   function InvalidateRect(
      hWnd_x : HWND;
      lpRect_x : access constant RECT;
      bErase : BOOL
   ) return BOOL;
   pragma import (Cpp,InvalidateRect,"InvalidateRect");
   function ValidateRect(
      hWnd_x : HWND;
      lpRect_x : access constant RECT
   ) return BOOL;
   pragma import (Cpp,ValidateRect,"ValidateRect");
   function InvalidateRgn(
      hWnd_x : HWND;
      hRgn_x : HRGN;
      bErase : BOOL
   ) return BOOL;
   pragma import (Cpp,InvalidateRgn,"InvalidateRgn");
   function ValidateRgn(
      hWnd_x : HWND;
      hRgn_x : HRGN
   ) return BOOL;
   pragma import (Cpp,ValidateRgn,"ValidateRgn");
   function RedrawWindow(
      hWnd_x : HWND;
      lprcUpdate : access constant RECT;
      hrgnUpdate : HRGN;
      flags : UINT
   ) return BOOL;
   pragma import (Cpp,RedrawWindow,"RedrawWindow");
   function LockWindowUpdate(
      hWndLock : HWND
   ) return BOOL;
   pragma import (Cpp,LockWindowUpdate,"LockWindowUpdate");
   function ScrollWindow(
      hWnd_x : HWND;
      XAmount : Interfaces.C.Int;
      YAmount : Interfaces.C.Int;
      lpRect_x : access constant RECT;
      lpClipRect : access constant RECT
   ) return BOOL;
   pragma import (Cpp,ScrollWindow,"ScrollWindow");
   function ScrollDC(
      hDC_x : HDC;
      dx : Interfaces.C.Int;
      dy : Interfaces.C.Int;
      lprcScroll : access constant RECT;
      lprcClip : access constant RECT;
      hrgnUpdate : HRGN;
      lprcUpdate : LPRECT
   ) return BOOL;
   pragma import (Cpp,ScrollDC,"ScrollDC");
   function ScrollWindowEx(
      hWnd_x : HWND;
      dx : Interfaces.C.Int;
      dy : Interfaces.C.Int;
      prcScroll : access constant RECT;
      prcClip : access constant RECT;
      hrgnUpdate : HRGN;
      prcUpdate : LPRECT;
      flags : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,ScrollWindowEx,"ScrollWindowEx");
   function SetScrollPos(
      hWnd_x : HWND;
      nBar : Interfaces.C.Int;
      nPos : Interfaces.C.Int;
      bRedraw : BOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetScrollPos,"SetScrollPos");
   function GetScrollPos(
      hWnd_x : HWND;
      nBar : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetScrollPos,"GetScrollPos");
   function SetScrollRange(
      hWnd_x : HWND;
      nBar : Interfaces.C.Int;
      nMinPos : Interfaces.C.Int;
      nMaxPos : Interfaces.C.Int;
      bRedraw : BOOL
   ) return BOOL;
   pragma import (Cpp,SetScrollRange,"SetScrollRange");
   function GetScrollRange(
      hWnd_x : HWND;
      nBar : Interfaces.C.Int;
      lpMinPos : LPINT;
      lpMaxPos : LPINT
   ) return BOOL;
   pragma import (Cpp,GetScrollRange,"GetScrollRange");
   function ShowScrollBar(
      hWnd_x : HWND;
      wBar : Interfaces.C.Int;
      bShow : BOOL
   ) return BOOL;
   pragma import (Cpp,ShowScrollBar,"ShowScrollBar");
   function EnableScrollBar(
      hWnd_x : HWND;
      wSBflags : UINT;
      wArrows : UINT
   ) return BOOL;
   pragma import (Cpp,EnableScrollBar,"EnableScrollBar");
   function SetPropA(
      hWnd_x : HWND;
      lpString : LPCSTR;
      hData : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetPropA,"SetPropA");
   function SetPropW(
      hWnd_x : HWND;
      lpString : LPCWSTR;
      hData : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetPropW,"SetPropW");
   function GetPropA(
      hWnd_x : HWND;
      lpString : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,GetPropA,"GetPropA");
   function GetPropW(
      hWnd_x : HWND;
      lpString : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,GetPropW,"GetPropW");
   function RemovePropA(
      hWnd_x : HWND;
      lpString : LPCSTR
   ) return HANDLE;
   pragma import (Cpp,RemovePropA,"RemovePropA");
   function RemovePropW(
      hWnd_x : HWND;
      lpString : LPCWSTR
   ) return HANDLE;
   pragma import (Cpp,RemovePropW,"RemovePropW");
   function EnumPropsExA(
      hWnd_x : HWND;
      lpEnumFunc : PROPENUMPROCEXA;
      lParam_x : LPARAM
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumPropsExA,"EnumPropsExA");
   function EnumPropsExW(
      hWnd_x : HWND;
      lpEnumFunc : PROPENUMPROCEXW;
      lParam_x : LPARAM
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumPropsExW,"EnumPropsExW");
   function EnumPropsA(
      hWnd_x : HWND;
      lpEnumFunc : PROPENUMPROCA
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumPropsA,"EnumPropsA");
   function EnumPropsW(
      hWnd_x : HWND;
      lpEnumFunc : PROPENUMPROCW
   ) return Interfaces.C.Int;
   pragma import (Cpp,EnumPropsW,"EnumPropsW");
   function SetWindowTextA(
      hWnd_x : HWND;
      lpString : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetWindowTextA,"SetWindowTextA");
   function SetWindowTextW(
      hWnd_x : HWND;
      lpString : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetWindowTextW,"SetWindowTextW");
   function GetWindowTextA(
      hWnd_x : HWND;
      lpString : LPSTR;
      nMaxCount : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetWindowTextA,"GetWindowTextA");
   function GetWindowTextW(
      hWnd_x : HWND;
      lpString : LPWSTR;
      nMaxCount : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetWindowTextW,"GetWindowTextW");
   function GetWindowTextLengthA(
      hWnd_x : HWND
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetWindowTextLengthA,"GetWindowTextLengthA");
   function GetWindowTextLengthW(
      hWnd_x : HWND
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetWindowTextLengthW,"GetWindowTextLengthW");
   function GetClientRect(
      hWnd_x : HWND;
      lpRect_x : LPRECT
   ) return BOOL;
   pragma import (Cpp,GetClientRect,"GetClientRect");
   function GetWindowRect(
      hWnd_x : HWND;
      lpRect_x : LPRECT
   ) return BOOL;
   pragma import (Cpp,GetWindowRect,"GetWindowRect");
   function AdjustWindowRect(
      lpRect_x : LPRECT;
      dwStyle : DWORD;
      bMenu : BOOL
   ) return BOOL;
   pragma import (Cpp,AdjustWindowRect,"AdjustWindowRect");
   function AdjustWindowRectEx(
      lpRect_x : LPRECT;
      dwStyle : DWORD;
      bMenu : BOOL;
      dwExStyle : DWORD
   ) return BOOL;
   pragma import (Cpp,AdjustWindowRectEx,"AdjustWindowRectEx");
   function AdjustWindowRectExForDpi(
      lpRect_x : LPRECT;
      dwStyle : DWORD;
      bMenu : BOOL;
      dwExStyle : DWORD;
      dpi : UINT
   ) return BOOL;
   pragma import (Cpp,AdjustWindowRectExForDpi,"AdjustWindowRectExForDpi");
   type tagHELPINFO is record
      cbSize : UINT;
      iContextType : Interfaces.C.Int;
      iCtrlId : Interfaces.C.Int;
      hItemHandle : HANDLE;
      dwContextId : DWORD_PTR;
      MousePos : POINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagHELPINFO);
   for tagHELPINFO use record
      cbSize at 0 range 0..31;
      iContextType at 0 range 32..63;
      iCtrlId at 0 range 64..95;
      hItemHandle at 0 range 128..191;
      dwContextId at 0 range 192..255;
      MousePos at 0 range 256..319;
   end record;
   for tagHELPINFO'Size use 320;
   for tagHELPINFO'Alignment use 8;
   subtype HELPINFO is tagHELPINFO;
   type LPHELPINFO is access all tagHELPINFO;
   function SetWindowContextHelpId(
      param1 : HWND;
      param2 : DWORD
   ) return BOOL;
   pragma import (Cpp,SetWindowContextHelpId,"SetWindowContextHelpId");
   function GetWindowContextHelpId(
      param1 : HWND
   ) return DWORD;
   pragma import (Cpp,GetWindowContextHelpId,"GetWindowContextHelpId");
   function SetMenuContextHelpId(
      param1 : HMENU;
      param2 : DWORD
   ) return BOOL;
   pragma import (Cpp,SetMenuContextHelpId,"SetMenuContextHelpId");
   function GetMenuContextHelpId(
      param1 : HMENU
   ) return DWORD;
   pragma import (Cpp,GetMenuContextHelpId,"GetMenuContextHelpId");
   function MessageBoxA(
      hWnd_x : HWND;
      lpText : LPCSTR;
      lpCaption : LPCSTR;
      uType : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,MessageBoxA,"MessageBoxA");
   function MessageBoxW(
      hWnd_x : HWND;
      lpText : LPCWSTR;
      lpCaption : LPCWSTR;
      uType : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,MessageBoxW,"MessageBoxW");
   function MessageBoxExA(
      hWnd_x : HWND;
      lpText : LPCSTR;
      lpCaption : LPCSTR;
      uType : UINT;
      wLanguageId : WORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,MessageBoxExA,"MessageBoxExA");
   function MessageBoxExW(
      hWnd_x : HWND;
      lpText : LPCWSTR;
      lpCaption : LPCWSTR;
      uType : UINT;
      wLanguageId : WORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,MessageBoxExW,"MessageBoxExW");
   type MSGBOXCALLBACK is access procedure (p1 : LPHELPINFO); -- void (LPHELPINFO)
   pragma Convention(C,MSGBOXCALLBACK);
   type tagMSGBOXPARAMSA is record
      cbSize : UINT;
      hwndOwner : HWND;
      hInstance_x : HINSTANCE;
      lpszText : LPCSTR;
      lpszCaption : LPCSTR;
      dwStyle : DWORD;
      lpszIcon : LPCSTR;
      dwContextHelpId : DWORD_PTR;
      lpfnMsgBoxCallback : MSGBOXCALLBACK;
      dwLanguageId : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMSGBOXPARAMSA);
   for tagMSGBOXPARAMSA use record
      cbSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      lpszText at 0 range 192..255;
      lpszCaption at 0 range 256..319;
      dwStyle at 0 range 320..351;
      lpszIcon at 0 range 384..447;
      dwContextHelpId at 0 range 448..511;
      lpfnMsgBoxCallback at 0 range 512..575;
      dwLanguageId at 0 range 576..607;
   end record;
   for tagMSGBOXPARAMSA'Size use 640;
   for tagMSGBOXPARAMSA'Alignment use 8;
   subtype MSGBOXPARAMSA is tagMSGBOXPARAMSA;
   type PMSGBOXPARAMSA is access all tagMSGBOXPARAMSA;
   type LPMSGBOXPARAMSA is access all tagMSGBOXPARAMSA;
   type tagMSGBOXPARAMSW is record
      cbSize : UINT;
      hwndOwner : HWND;
      hInstance_x : HINSTANCE;
      lpszText : LPCWSTR;
      lpszCaption : LPCWSTR;
      dwStyle : DWORD;
      lpszIcon : LPCWSTR;
      dwContextHelpId : DWORD_PTR;
      lpfnMsgBoxCallback : MSGBOXCALLBACK;
      dwLanguageId : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMSGBOXPARAMSW);
   for tagMSGBOXPARAMSW use record
      cbSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      lpszText at 0 range 192..255;
      lpszCaption at 0 range 256..319;
      dwStyle at 0 range 320..351;
      lpszIcon at 0 range 384..447;
      dwContextHelpId at 0 range 448..511;
      lpfnMsgBoxCallback at 0 range 512..575;
      dwLanguageId at 0 range 576..607;
   end record;
   for tagMSGBOXPARAMSW'Size use 640;
   for tagMSGBOXPARAMSW'Alignment use 8;
   subtype MSGBOXPARAMSW is tagMSGBOXPARAMSW;
   type PMSGBOXPARAMSW is access all tagMSGBOXPARAMSW;
   type LPMSGBOXPARAMSW is access all tagMSGBOXPARAMSW;
   subtype MSGBOXPARAMS is MSGBOXPARAMSA;
   subtype PMSGBOXPARAMS is PMSGBOXPARAMSA;
   subtype LPMSGBOXPARAMS is LPMSGBOXPARAMSA;
   function MessageBoxIndirectA(
      lpmbp : access constant MSGBOXPARAMSA
   ) return Interfaces.C.Int;
   pragma import (Cpp,MessageBoxIndirectA,"MessageBoxIndirectA");
   function MessageBoxIndirectW(
      lpmbp : access constant MSGBOXPARAMSW
   ) return Interfaces.C.Int;
   pragma import (Cpp,MessageBoxIndirectW,"MessageBoxIndirectW");
   function MessageBeep(
      uType : UINT
   ) return BOOL;
   pragma import (Cpp,MessageBeep,"MessageBeep");
   function ShowCursor(
      bShow : BOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,ShowCursor,"ShowCursor");
   function SetCursorPos(
      X : Interfaces.C.Int;
      Y : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,SetCursorPos,"SetCursorPos");
   function SetPhysicalCursorPos(
      X : Interfaces.C.Int;
      Y : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,SetPhysicalCursorPos,"SetPhysicalCursorPos");
   function SetCursor(
      hCursor_x : HCURSOR
   ) return HCURSOR;
   pragma import (Cpp,SetCursor,"SetCursor");
   function GetCursorPos(
      lpPoint_x : LPPOINT
   ) return BOOL;
   pragma import (Cpp,GetCursorPos,"GetCursorPos");
   function GetPhysicalCursorPos(
      lpPoint_x : LPPOINT
   ) return BOOL;
   pragma import (Cpp,GetPhysicalCursorPos,"GetPhysicalCursorPos");
   function GetClipCursor(
      lpRect_x : LPRECT
   ) return BOOL;
   pragma import (Cpp,GetClipCursor,"GetClipCursor");
   function GetCursor return HCURSOR;
   pragma import (Cpp,GetCursor,"GetCursor");
   function CreateCaret(
      hWnd_x : HWND;
      hBitmap_x : HBITMAP;
      nWidth : Interfaces.C.Int;
      nHeight : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,CreateCaret,"CreateCaret");
   function GetCaretBlinkTime return UINT;
   pragma import (Cpp,GetCaretBlinkTime,"GetCaretBlinkTime");
   function SetCaretBlinkTime(
      uMSeconds : UINT
   ) return BOOL;
   pragma import (Cpp,SetCaretBlinkTime,"SetCaretBlinkTime");
   function DestroyCaret return BOOL;
   pragma import (Cpp,DestroyCaret,"DestroyCaret");
   function HideCaret(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,HideCaret,"HideCaret");
   function ShowCaret(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,ShowCaret,"ShowCaret");
   function SetCaretPos(
      X : Interfaces.C.Int;
      Y : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,SetCaretPos,"SetCaretPos");
   function GetCaretPos(
      lpPoint_x : LPPOINT
   ) return BOOL;
   pragma import (Cpp,GetCaretPos,"GetCaretPos");
   function ClientToScreen(
      hWnd_x : HWND;
      lpPoint_x : LPPOINT
   ) return BOOL;
   pragma import (Cpp,ClientToScreen,"ClientToScreen");
   function ScreenToClient(
      hWnd_x : HWND;
      lpPoint_x : LPPOINT
   ) return BOOL;
   pragma import (Cpp,ScreenToClient,"ScreenToClient");
   function LogicalToPhysicalPoint(
      hWnd_x : HWND;
      lpPoint_x : LPPOINT
   ) return BOOL;
   pragma import (Cpp,LogicalToPhysicalPoint,"LogicalToPhysicalPoint");
   function PhysicalToLogicalPoint(
      hWnd_x : HWND;
      lpPoint_x : LPPOINT
   ) return BOOL;
   pragma import (Cpp,PhysicalToLogicalPoint,"PhysicalToLogicalPoint");
   function LogicalToPhysicalPointForPerMonitorDPI(
      hWnd_x : HWND;
      lpPoint_x : LPPOINT
   ) return BOOL;
   pragma import (Cpp,LogicalToPhysicalPointForPerMonitorDPI,"LogicalToPhysicalPointForPerMonitorDPI");
   function PhysicalToLogicalPointForPerMonitorDPI(
      hWnd_x : HWND;
      lpPoint_x : LPPOINT
   ) return BOOL;
   pragma import (Cpp,PhysicalToLogicalPointForPerMonitorDPI,"PhysicalToLogicalPointForPerMonitorDPI");
   function MapWindowPoints(
      hWndFrom : HWND;
      hWndTo : HWND;
      lpPoints_x : LPPOINT;
      cPoints : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,MapWindowPoints,"MapWindowPoints");
   function WindowFromPoint(
      Point_x : POINT
   ) return HWND;
   pragma import (Cpp,WindowFromPoint,"WindowFromPoint");
   function WindowFromPhysicalPoint(
      Point_x : POINT
   ) return HWND;
   pragma import (Cpp,WindowFromPhysicalPoint,"WindowFromPhysicalPoint");
   function ChildWindowFromPoint(
      hWndParent : HWND;
      Point_x : POINT
   ) return HWND;
   pragma import (Cpp,ChildWindowFromPoint,"ChildWindowFromPoint");
   function ClipCursor(
      lpRect_x : access constant RECT
   ) return BOOL;
   pragma import (Cpp,ClipCursor,"ClipCursor");
   function ChildWindowFromPointEx(
      hwnd_x : HWND;
      pt : POINT;
      flags : UINT
   ) return HWND;
   pragma import (Cpp,ChildWindowFromPointEx,"ChildWindowFromPointEx");
   function GetSysColor(
      nIndex : Interfaces.C.Int
   ) return DWORD;
   pragma import (Cpp,GetSysColor,"GetSysColor");
   function GetSysColorBrush(
      nIndex : Interfaces.C.Int
   ) return HBRUSH;
   pragma import (Cpp,GetSysColorBrush,"GetSysColorBrush");
   function SetSysColors(
      cElements : Interfaces.C.Int;
      lpaElements : access constant INT;
      lpaRgbValues : access constant COLORREF
   ) return BOOL;
   pragma import (Cpp,SetSysColors,"SetSysColors");
   function DrawFocusRect(
      hDC_x : HDC;
      lprc : access constant RECT
   ) return BOOL;
   pragma import (Cpp,DrawFocusRect,"DrawFocusRect");
   function FillRect(
      hDC_x : HDC;
      lprc : access constant RECT;
      hbr : HBRUSH
   ) return Interfaces.C.Int;
   pragma import (Cpp,FillRect,"FillRect");
   function FrameRect(
      hDC_x : HDC;
      lprc : access constant RECT;
      hbr : HBRUSH
   ) return Interfaces.C.Int;
   pragma import (Cpp,FrameRect,"FrameRect");
   function InvertRect(
      hDC_x : HDC;
      lprc : access constant RECT
   ) return BOOL;
   pragma import (Cpp,InvertRect,"InvertRect");
   function SetRect(
      lprc : LPRECT;
      xLeft : Interfaces.C.Int;
      yTop : Interfaces.C.Int;
      xRight : Interfaces.C.Int;
      yBottom : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,SetRect,"SetRect");
   function SetRectEmpty(
      lprc : LPRECT
   ) return BOOL;
   pragma import (Cpp,SetRectEmpty,"SetRectEmpty");
   function CopyRect(
      lprcDst : LPRECT;
      lprcSrc : access constant RECT
   ) return BOOL;
   pragma import (Cpp,CopyRect,"CopyRect");
   function InflateRect(
      lprc : LPRECT;
      dx : Interfaces.C.Int;
      dy : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,InflateRect,"InflateRect");
   function IntersectRect(
      lprcDst : LPRECT;
      lprcSrc1 : access constant RECT;
      lprcSrc2 : access constant RECT
   ) return BOOL;
   pragma import (Cpp,IntersectRect,"IntersectRect");
   function UnionRect(
      lprcDst : LPRECT;
      lprcSrc1 : access constant RECT;
      lprcSrc2 : access constant RECT
   ) return BOOL;
   pragma import (Cpp,UnionRect,"UnionRect");
   function SubtractRect(
      lprcDst : LPRECT;
      lprcSrc1 : access constant RECT;
      lprcSrc2 : access constant RECT
   ) return BOOL;
   pragma import (Cpp,SubtractRect,"SubtractRect");
   function OffsetRect(
      lprc : LPRECT;
      dx : Interfaces.C.Int;
      dy : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,OffsetRect,"OffsetRect");
   function IsRectEmpty(
      lprc : access constant RECT
   ) return BOOL;
   pragma import (Cpp,IsRectEmpty,"IsRectEmpty");
   function EqualRect(
      lprc1 : access constant RECT;
      lprc2 : access constant RECT
   ) return BOOL;
   pragma import (Cpp,EqualRect,"EqualRect");
   function PtInRect(
      lprc : access constant RECT;
      pt : POINT
   ) return BOOL;
   pragma import (Cpp,PtInRect,"PtInRect");
   function GetWindowWord(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int
   ) return WORD;
   pragma import (Cpp,GetWindowWord,"GetWindowWord");
   function SetWindowWord(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int;
      wNewWord : WORD
   ) return WORD;
   pragma import (Cpp,SetWindowWord,"SetWindowWord");
   function GetWindowLongA(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int
   ) return LONG;
   pragma import (Cpp,GetWindowLongA,"GetWindowLongA");
   function GetWindowLongW(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int
   ) return LONG;
   pragma import (Cpp,GetWindowLongW,"GetWindowLongW");
   function SetWindowLongA(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int;
      dwNewLong : LONG
   ) return LONG;
   pragma import (Cpp,SetWindowLongA,"SetWindowLongA");
   function SetWindowLongW(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int;
      dwNewLong : LONG
   ) return LONG;
   pragma import (Cpp,SetWindowLongW,"SetWindowLongW");
   function GetWindowLongPtrA(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int
   ) return LONG_PTR;
   pragma import (Cpp,GetWindowLongPtrA,"GetWindowLongPtrA");
   function GetWindowLongPtrW(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int
   ) return LONG_PTR;
   pragma import (Cpp,GetWindowLongPtrW,"GetWindowLongPtrW");
   function SetWindowLongPtrA(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int;
      dwNewLong : LONG_PTR
   ) return LONG_PTR;
   pragma import (Cpp,SetWindowLongPtrA,"SetWindowLongPtrA");
   function SetWindowLongPtrW(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int;
      dwNewLong : LONG_PTR
   ) return LONG_PTR;
   pragma import (Cpp,SetWindowLongPtrW,"SetWindowLongPtrW");
   function GetClassWord(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int
   ) return WORD;
   pragma import (Cpp,GetClassWord,"GetClassWord");
   function SetClassWord(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int;
      wNewWord : WORD
   ) return WORD;
   pragma import (Cpp,SetClassWord,"SetClassWord");
   function GetClassLongA(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int
   ) return DWORD;
   pragma import (Cpp,GetClassLongA,"GetClassLongA");
   function GetClassLongW(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int
   ) return DWORD;
   pragma import (Cpp,GetClassLongW,"GetClassLongW");
   function SetClassLongA(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int;
      dwNewLong : LONG
   ) return DWORD;
   pragma import (Cpp,SetClassLongA,"SetClassLongA");
   function SetClassLongW(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int;
      dwNewLong : LONG
   ) return DWORD;
   pragma import (Cpp,SetClassLongW,"SetClassLongW");
   function GetClassLongPtrA(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int
   ) return ULONG_PTR;
   pragma import (Cpp,GetClassLongPtrA,"GetClassLongPtrA");
   function GetClassLongPtrW(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int
   ) return ULONG_PTR;
   pragma import (Cpp,GetClassLongPtrW,"GetClassLongPtrW");
   function SetClassLongPtrA(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int;
      dwNewLong : LONG_PTR
   ) return ULONG_PTR;
   pragma import (Cpp,SetClassLongPtrA,"SetClassLongPtrA");
   function SetClassLongPtrW(
      hWnd_x : HWND;
      nIndex : Interfaces.C.Int;
      dwNewLong : LONG_PTR
   ) return ULONG_PTR;
   pragma import (Cpp,SetClassLongPtrW,"SetClassLongPtrW");
   function GetProcessDefaultLayout(
      pdwDefaultLayout : access DWORD
   ) return BOOL;
   pragma import (Cpp,GetProcessDefaultLayout,"GetProcessDefaultLayout");
   function SetProcessDefaultLayout(
      dwDefaultLayout : DWORD
   ) return BOOL;
   pragma import (Cpp,SetProcessDefaultLayout,"SetProcessDefaultLayout");
   function GetDesktopWindow return HWND;
   pragma import (Cpp,GetDesktopWindow,"GetDesktopWindow");
   function GetParent(
      hWnd_x : HWND
   ) return HWND;
   pragma import (Cpp,GetParent,"GetParent");
   function SetParent(
      hWndChild : HWND;
      hWndNewParent : HWND
   ) return HWND;
   pragma import (Cpp,SetParent,"SetParent");
   function EnumChildWindows(
      hWndParent : HWND;
      lpEnumFunc : WNDENUMPROC;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumChildWindows,"EnumChildWindows");
   function FindWindowA(
      lpClassName : LPCSTR;
      lpWindowName : LPCSTR
   ) return HWND;
   pragma import (Cpp,FindWindowA,"FindWindowA");
   function FindWindowW(
      lpClassName : LPCWSTR;
      lpWindowName : LPCWSTR
   ) return HWND;
   pragma import (Cpp,FindWindowW,"FindWindowW");
   function FindWindowExA(
      hWndParent : HWND;
      hWndChildAfter : HWND;
      lpszClass : LPCSTR;
      lpszWindow : LPCSTR
   ) return HWND;
   pragma import (Cpp,FindWindowExA,"FindWindowExA");
   function FindWindowExW(
      hWndParent : HWND;
      hWndChildAfter : HWND;
      lpszClass : LPCWSTR;
      lpszWindow : LPCWSTR
   ) return HWND;
   pragma import (Cpp,FindWindowExW,"FindWindowExW");
   function GetShellWindow return HWND;
   pragma import (Cpp,GetShellWindow,"GetShellWindow");
   function RegisterShellHookWindow(
      hwnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,RegisterShellHookWindow,"RegisterShellHookWindow");
   function DeregisterShellHookWindow(
      hwnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,DeregisterShellHookWindow,"DeregisterShellHookWindow");
   function EnumWindows(
      lpEnumFunc : WNDENUMPROC;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumWindows,"EnumWindows");
   function EnumThreadWindows(
      dwThreadId : DWORD;
      lpfn : WNDENUMPROC;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumThreadWindows,"EnumThreadWindows");
   function GetClassNameA(
      hWnd_x : HWND;
      lpClassName : LPSTR;
      nMaxCount : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetClassNameA,"GetClassNameA");
   function GetClassNameW(
      hWnd_x : HWND;
      lpClassName : LPWSTR;
      nMaxCount : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetClassNameW,"GetClassNameW");
   function GetTopWindow(
      hWnd_x : HWND
   ) return HWND;
   pragma import (Cpp,GetTopWindow,"GetTopWindow");
   function GetWindowThreadProcessId(
      hWnd_x : HWND;
      lpdwProcessId : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetWindowThreadProcessId,"GetWindowThreadProcessId");
   function IsGUIThread(
      bConvert : BOOL
   ) return BOOL;
   pragma import (Cpp,IsGUIThread,"IsGUIThread");
   function GetLastActivePopup(
      hWnd_x : HWND
   ) return HWND;
   pragma import (Cpp,GetLastActivePopup,"GetLastActivePopup");
   function GetWindow(
      hWnd_x : HWND;
      uCmd : UINT
   ) return HWND;
   pragma import (Cpp,GetWindow,"GetWindow");
   function SetWindowsHookA(
      nFilterType : Interfaces.C.Int;
      pfnFilterProc : HOOKPROC
   ) return HHOOK;
   pragma import (Cpp,SetWindowsHookA,"SetWindowsHookA");
   function SetWindowsHookW(
      nFilterType : Interfaces.C.Int;
      pfnFilterProc : HOOKPROC
   ) return HHOOK;
   pragma import (Cpp,SetWindowsHookW,"SetWindowsHookW");
   function UnhookWindowsHook(
      nCode : Interfaces.C.Int;
      pfnFilterProc : HOOKPROC
   ) return BOOL;
   pragma import (Cpp,UnhookWindowsHook,"UnhookWindowsHook");
   function SetWindowsHookExA(
      idHook : Interfaces.C.Int;
      lpfn : HOOKPROC;
      hmod : HINSTANCE;
      dwThreadId : DWORD
   ) return HHOOK;
   pragma import (Cpp,SetWindowsHookExA,"SetWindowsHookExA");
   function SetWindowsHookExW(
      idHook : Interfaces.C.Int;
      lpfn : HOOKPROC;
      hmod : HINSTANCE;
      dwThreadId : DWORD
   ) return HHOOK;
   pragma import (Cpp,SetWindowsHookExW,"SetWindowsHookExW");
   function UnhookWindowsHookEx(
      hhk : HHOOK
   ) return BOOL;
   pragma import (Cpp,UnhookWindowsHookEx,"UnhookWindowsHookEx");
   function CallNextHookEx(
      hhk : HHOOK;
      nCode : Interfaces.C.Int;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,CallNextHookEx,"CallNextHookEx");
   function CheckMenuRadioItem(
      hmenu_x : HMENU;
      first : UINT;
      last : UINT;
      check : UINT;
      flags : UINT
   ) return BOOL;
   pragma import (Cpp,CheckMenuRadioItem,"CheckMenuRadioItem");
   type MENUITEMTEMPLATEHEADER is record
      versionNumber : WORD;
      offset : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,MENUITEMTEMPLATEHEADER);
   for MENUITEMTEMPLATEHEADER use record
      versionNumber at 0 range 0..15;
      offset at 0 range 16..31;
   end record;
   for MENUITEMTEMPLATEHEADER'Size use 32;
   for MENUITEMTEMPLATEHEADER'Alignment use 2;
   type PMENUITEMTEMPLATEHEADER is access all MENUITEMTEMPLATEHEADER;
   type MENUITEMTEMPLATE_mtString_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type MENUITEMTEMPLATE is record
      mtOption : WORD;
      mtID : WORD;
      mtString : MENUITEMTEMPLATE_mtString_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,MENUITEMTEMPLATE);
   for MENUITEMTEMPLATE use record
      mtOption at 0 range 0..15;
      mtID at 0 range 16..31;
      mtString at 0 range 32..47;
   end record;
   for MENUITEMTEMPLATE'Size use 48;
   for MENUITEMTEMPLATE'Alignment use 2;
   type PMENUITEMTEMPLATE is access all MENUITEMTEMPLATE;
   function LoadBitmapA(
      hInstance_x : HINSTANCE;
      lpBitmapName : LPCSTR
   ) return HBITMAP;
   pragma import (Cpp,LoadBitmapA,"LoadBitmapA");
   function LoadBitmapW(
      hInstance_x : HINSTANCE;
      lpBitmapName : LPCWSTR
   ) return HBITMAP;
   pragma import (Cpp,LoadBitmapW,"LoadBitmapW");
   function LoadCursorA(
      hInstance_x : HINSTANCE;
      lpCursorName : LPCSTR
   ) return HCURSOR;
   pragma import (Cpp,LoadCursorA,"LoadCursorA");
   function LoadCursorW(
      hInstance_x : HINSTANCE;
      lpCursorName : LPCWSTR
   ) return HCURSOR;
   pragma import (Cpp,LoadCursorW,"LoadCursorW");
   function LoadCursorFromFileA(
      lpFileName : LPCSTR
   ) return HCURSOR;
   pragma import (Cpp,LoadCursorFromFileA,"LoadCursorFromFileA");
   function LoadCursorFromFileW(
      lpFileName : LPCWSTR
   ) return HCURSOR;
   pragma import (Cpp,LoadCursorFromFileW,"LoadCursorFromFileW");
   function CreateCursor(
      hInst : HINSTANCE;
      xHotSpot : Interfaces.C.Int;
      yHotSpot : Interfaces.C.Int;
      nWidth : Interfaces.C.Int;
      nHeight : Interfaces.C.Int;
      pvANDPlane : access Void;
      pvXORPlane : access Void
   ) return HCURSOR;
   pragma import (Cpp,CreateCursor,"CreateCursor");
   function DestroyCursor(
      hCursor_x : HCURSOR
   ) return BOOL;
   pragma import (Cpp,DestroyCursor,"DestroyCursor");
   function SetSystemCursor(
      hcur : HCURSOR;
      id : DWORD
   ) return BOOL;
   pragma import (Cpp,SetSystemCursor,"SetSystemCursor");
   type ICONINFO_x is record
      fIcon : BOOL;
      xHotspot : DWORD;
      yHotspot : DWORD;
      hbmMask : HBITMAP;
      hbmColor : HBITMAP;
   end record;
   pragma Convention (C_Pass_By_Copy,ICONINFO_x);
   for ICONINFO_x use record
      fIcon at 0 range 0..31;
      xHotspot at 0 range 32..63;
      yHotspot at 0 range 64..95;
      hbmMask at 0 range 128..191;
      hbmColor at 0 range 192..255;
   end record;
   for ICONINFO_x'Size use 256;
   for ICONINFO_x'Alignment use 8;
   subtype ICONINFO is ICONINFO_x;
   type PICONINFO is access all ICONINFO;
   function LoadIconA(
      hInstance_x : HINSTANCE;
      lpIconName : LPCSTR
   ) return HICON;
   pragma import (Cpp,LoadIconA,"LoadIconA");
   function LoadIconW(
      hInstance_x : HINSTANCE;
      lpIconName : LPCWSTR
   ) return HICON;
   pragma import (Cpp,LoadIconW,"LoadIconW");
   function PrivateExtractIconsA(
      szFileName : LPCSTR;
      nIconIndex : Interfaces.C.Int;
      cxIcon : Interfaces.C.Int;
      cyIcon : Interfaces.C.Int;
      phicon : access HICON;
      piconid : access UINT;
      nIcons : UINT;
      flags : UINT
   ) return UINT;
   pragma import (Cpp,PrivateExtractIconsA,"PrivateExtractIconsA");
   function PrivateExtractIconsW(
      szFileName : LPCWSTR;
      nIconIndex : Interfaces.C.Int;
      cxIcon : Interfaces.C.Int;
      cyIcon : Interfaces.C.Int;
      phicon : access HICON;
      piconid : access UINT;
      nIcons : UINT;
      flags : UINT
   ) return UINT;
   pragma import (Cpp,PrivateExtractIconsW,"PrivateExtractIconsW");
   function CreateIcon(
      hInstance_x : HINSTANCE;
      nWidth : Interfaces.C.Int;
      nHeight : Interfaces.C.Int;
      cPlanes : BYTE;
      cBitsPixel : BYTE;
      lpbANDbits : access constant BYTE;
      lpbXORbits : access constant BYTE
   ) return HICON;
   pragma import (Cpp,CreateIcon,"CreateIcon");
   function DestroyIcon(
      hIcon_x : HICON
   ) return BOOL;
   pragma import (Cpp,DestroyIcon,"DestroyIcon");
   function LookupIconIdFromDirectory(
      presbits : PBYTE;
      fIcon : BOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,LookupIconIdFromDirectory,"LookupIconIdFromDirectory");
   function LookupIconIdFromDirectoryEx(
      presbits : PBYTE;
      fIcon : BOOL;
      cxDesired : Interfaces.C.Int;
      cyDesired : Interfaces.C.Int;
      Flags : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,LookupIconIdFromDirectoryEx,"LookupIconIdFromDirectoryEx");
   function CreateIconFromResource(
      presbits : PBYTE;
      dwResSize : DWORD;
      fIcon : BOOL;
      dwVer : DWORD
   ) return HICON;
   pragma import (Cpp,CreateIconFromResource,"CreateIconFromResource");
   function CreateIconFromResourceEx(
      presbits : PBYTE;
      dwResSize : DWORD;
      fIcon : BOOL;
      dwVer : DWORD;
      cxDesired : Interfaces.C.Int;
      cyDesired : Interfaces.C.Int;
      Flags : UINT
   ) return HICON;
   pragma import (Cpp,CreateIconFromResourceEx,"CreateIconFromResourceEx");
   type tagCURSORSHAPE is record
      xHotSpot : Interfaces.C.Int;
      yHotSpot : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int;
      cbWidth : Interfaces.C.Int;
      Planes_x : BYTE;
      BitsPixel_x : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCURSORSHAPE);
   for tagCURSORSHAPE use record
      xHotSpot at 0 range 0..31;
      yHotSpot at 0 range 32..63;
      cx at 0 range 64..95;
      cy at 0 range 96..127;
      cbWidth at 0 range 128..159;
      Planes_x at 0 range 160..167;
      BitsPixel_x at 0 range 168..175;
   end record;
   for tagCURSORSHAPE'Size use 192;
   for tagCURSORSHAPE'Alignment use 4;
   subtype CURSORSHAPE is tagCURSORSHAPE;
   type LPCURSORSHAPE is access all tagCURSORSHAPE;
   function LoadImageA(
      hInst : HINSTANCE;
      name : LPCSTR;
      type_x : UINT;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int;
      fuLoad : UINT
   ) return HANDLE;
   pragma import (Cpp,LoadImageA,"LoadImageA");
   function LoadImageW(
      hInst : HINSTANCE;
      name : LPCWSTR;
      type_x : UINT;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int;
      fuLoad : UINT
   ) return HANDLE;
   pragma import (Cpp,LoadImageW,"LoadImageW");
   function CopyImage(
      h : HANDLE;
      type_x : UINT;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int;
      flags : UINT
   ) return HANDLE;
   pragma import (Cpp,CopyImage,"CopyImage");
   function DrawIconEx(
      hdc_x : HDC;
      xLeft : Interfaces.C.Int;
      yTop : Interfaces.C.Int;
      hIcon_x : HICON;
      cxWidth : Interfaces.C.Int;
      cyWidth : Interfaces.C.Int;
      istepIfAniCur : UINT;
      hbrFlickerFreeDraw : HBRUSH;
      diFlags : UINT
   ) return BOOL;
   pragma import (Cpp,DrawIconEx,"DrawIconEx");
   function CreateIconIndirect(
      piconinfo_x : PICONINFO
   ) return HICON;
   pragma import (Cpp,CreateIconIndirect,"CreateIconIndirect");
   function CopyIcon(
      hIcon_x : HICON
   ) return HICON;
   pragma import (Cpp,CopyIcon,"CopyIcon");
   function GetIconInfo(
      hIcon_x : HICON;
      piconinfo_x : PICONINFO
   ) return BOOL;
   pragma import (Cpp,GetIconInfo,"GetIconInfo");
   type ICONINFOEXA_x_szModName_Array is array(1..260) of CHAR; -- Auto Generated Dependancy
   type ICONINFOEXA_x_szResName_Array is array(1..260) of CHAR; -- Auto Generated Dependancy
   type ICONINFOEXA_x is record
      cbSize : DWORD;
      fIcon : BOOL;
      xHotspot : DWORD;
      yHotspot : DWORD;
      hbmMask : HBITMAP;
      hbmColor : HBITMAP;
      wResID : WORD;
      szModName : ICONINFOEXA_x_szModName_Array;
      szResName : ICONINFOEXA_x_szResName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,ICONINFOEXA_x);
   for ICONINFOEXA_x use record
      cbSize at 0 range 0..31;
      fIcon at 0 range 32..63;
      xHotspot at 0 range 64..95;
      yHotspot at 0 range 96..127;
      hbmMask at 0 range 128..191;
      hbmColor at 0 range 192..255;
      wResID at 0 range 256..271;
      szModName at 0 range 272..2351;
      szResName at 0 range 2352..4431;
   end record;
   for ICONINFOEXA_x'Size use 4480;
   for ICONINFOEXA_x'Alignment use 8;
   subtype ICONINFOEXA is ICONINFOEXA_x;
   type PICONINFOEXA is access all ICONINFOEXA_x;
   type ICONINFOEXW_x_szModName_Array is array(1..260) of WCHAR; -- Auto Generated Dependancy
   type ICONINFOEXW_x_szResName_Array is array(1..260) of WCHAR; -- Auto Generated Dependancy
   type ICONINFOEXW_x is record
      cbSize : DWORD;
      fIcon : BOOL;
      xHotspot : DWORD;
      yHotspot : DWORD;
      hbmMask : HBITMAP;
      hbmColor : HBITMAP;
      wResID : WORD;
      szModName : ICONINFOEXW_x_szModName_Array;
      szResName : ICONINFOEXW_x_szResName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,ICONINFOEXW_x);
   for ICONINFOEXW_x use record
      cbSize at 0 range 0..31;
      fIcon at 0 range 32..63;
      xHotspot at 0 range 64..95;
      yHotspot at 0 range 96..127;
      hbmMask at 0 range 128..191;
      hbmColor at 0 range 192..255;
      wResID at 0 range 256..271;
      szModName at 0 range 272..4431;
      szResName at 0 range 4432..8591;
   end record;
   for ICONINFOEXW_x'Size use 8640;
   for ICONINFOEXW_x'Alignment use 8;
   subtype ICONINFOEXW is ICONINFOEXW_x;
   type PICONINFOEXW is access all ICONINFOEXW_x;
   subtype ICONINFOEX is ICONINFOEXA;
   subtype PICONINFOEX is PICONINFOEXA;
   function GetIconInfoExA(
      hicon_x : HICON;
      piconinfo_x : PICONINFOEXA
   ) return BOOL;
   pragma import (Cpp,GetIconInfoExA,"GetIconInfoExA");
   function GetIconInfoExW(
      hicon_x : HICON;
      piconinfo_x : PICONINFOEXW
   ) return BOOL;
   pragma import (Cpp,GetIconInfoExW,"GetIconInfoExW");
   type EDIT_CONTROL_FEATURE is (
      EDIT_CONTROL_FEATURE_ENTERPRISE_DATA_PROTECTION_PASTE_SUPPORT,
      EDIT_CONTROL_FEATURE_PASTE_NOTIFICATIONS
   );
   for EDIT_CONTROL_FEATURE use (
      EDIT_CONTROL_FEATURE_ENTERPRISE_DATA_PROTECTION_PASTE_SUPPORT => 0,
      EDIT_CONTROL_FEATURE_PASTE_NOTIFICATIONS => 1
   );
   for EDIT_CONTROL_FEATURE'Size use 32;
   function IsDialogMessageA(
      hDlg : HWND;
      lpMsg_x : LPMSG
   ) return BOOL;
   pragma import (Cpp,IsDialogMessageA,"IsDialogMessageA");
   function IsDialogMessageW(
      hDlg : HWND;
      lpMsg_x : LPMSG
   ) return BOOL;
   pragma import (Cpp,IsDialogMessageW,"IsDialogMessageW");
   function MapDialogRect(
      hDlg : HWND;
      lpRect_x : LPRECT
   ) return BOOL;
   pragma import (Cpp,MapDialogRect,"MapDialogRect");
   function DlgDirListA(
      hDlg : HWND;
      lpPathSpec : LPSTR;
      nIDListBox : Interfaces.C.Int;
      nIDStaticPath : Interfaces.C.Int;
      uFileType : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,DlgDirListA,"DlgDirListA");
   function DlgDirListW(
      hDlg : HWND;
      lpPathSpec : LPWSTR;
      nIDListBox : Interfaces.C.Int;
      nIDStaticPath : Interfaces.C.Int;
      uFileType : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,DlgDirListW,"DlgDirListW");
   function DlgDirSelectExA(
      hwndDlg : HWND;
      lpString : LPSTR;
      chCount : Interfaces.C.Int;
      idListBox : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,DlgDirSelectExA,"DlgDirSelectExA");
   function DlgDirSelectExW(
      hwndDlg : HWND;
      lpString : LPWSTR;
      chCount : Interfaces.C.Int;
      idListBox : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,DlgDirSelectExW,"DlgDirSelectExW");
   function DlgDirListComboBoxA(
      hDlg : HWND;
      lpPathSpec : LPSTR;
      nIDComboBox : Interfaces.C.Int;
      nIDStaticPath : Interfaces.C.Int;
      uFiletype : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,DlgDirListComboBoxA,"DlgDirListComboBoxA");
   function DlgDirListComboBoxW(
      hDlg : HWND;
      lpPathSpec : LPWSTR;
      nIDComboBox : Interfaces.C.Int;
      nIDStaticPath : Interfaces.C.Int;
      uFiletype : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,DlgDirListComboBoxW,"DlgDirListComboBoxW");
   function DlgDirSelectComboBoxExA(
      hwndDlg : HWND;
      lpString : LPSTR;
      cchOut : Interfaces.C.Int;
      idComboBox : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,DlgDirSelectComboBoxExA,"DlgDirSelectComboBoxExA");
   function DlgDirSelectComboBoxExW(
      hwndDlg : HWND;
      lpString : LPWSTR;
      cchOut : Interfaces.C.Int;
      idComboBox : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,DlgDirSelectComboBoxExW,"DlgDirSelectComboBoxExW");
   type tagSCROLLINFO is record
      cbSize : UINT;
      fMask : UINT;
      nMin : Interfaces.C.Int;
      nMax : Interfaces.C.Int;
      nPage : UINT;
      nPos : Interfaces.C.Int;
      nTrackPos : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSCROLLINFO);
   for tagSCROLLINFO use record
      cbSize at 0 range 0..31;
      fMask at 0 range 32..63;
      nMin at 0 range 64..95;
      nMax at 0 range 96..127;
      nPage at 0 range 128..159;
      nPos at 0 range 160..191;
      nTrackPos at 0 range 192..223;
   end record;
   for tagSCROLLINFO'Size use 224;
   for tagSCROLLINFO'Alignment use 4;
   subtype SCROLLINFO is tagSCROLLINFO;
   type LPSCROLLINFO is access all tagSCROLLINFO;
   type LPCSCROLLINFO is access constant SCROLLINFO;
   function SetScrollInfo(
      hwnd_x : HWND;
      nBar : Interfaces.C.Int;
      lpsi : LPCSCROLLINFO;
      redraw : BOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,SetScrollInfo,"SetScrollInfo");
   function GetScrollInfo(
      hwnd_x : HWND;
      nBar : Interfaces.C.Int;
      lpsi : LPSCROLLINFO
   ) return BOOL;
   pragma import (Cpp,GetScrollInfo,"GetScrollInfo");
   type tagMDICREATESTRUCTA is record
      szClass : LPCSTR;
      szTitle : LPCSTR;
      hOwner : HANDLE;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int;
      style : DWORD;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMDICREATESTRUCTA);
   for tagMDICREATESTRUCTA use record
      szClass at 0 range 0..63;
      szTitle at 0 range 64..127;
      hOwner at 0 range 128..191;
      x at 0 range 192..223;
      y at 0 range 224..255;
      cx at 0 range 256..287;
      cy at 0 range 288..319;
      style at 0 range 320..351;
      lParam_x at 0 range 384..447;
   end record;
   for tagMDICREATESTRUCTA'Size use 448;
   for tagMDICREATESTRUCTA'Alignment use 8;
   subtype MDICREATESTRUCTA is tagMDICREATESTRUCTA;
   type LPMDICREATESTRUCTA is access all tagMDICREATESTRUCTA;
   type tagMDICREATESTRUCTW is record
      szClass : LPCWSTR;
      szTitle : LPCWSTR;
      hOwner : HANDLE;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      cy : Interfaces.C.Int;
      style : DWORD;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMDICREATESTRUCTW);
   for tagMDICREATESTRUCTW use record
      szClass at 0 range 0..63;
      szTitle at 0 range 64..127;
      hOwner at 0 range 128..191;
      x at 0 range 192..223;
      y at 0 range 224..255;
      cx at 0 range 256..287;
      cy at 0 range 288..319;
      style at 0 range 320..351;
      lParam_x at 0 range 384..447;
   end record;
   for tagMDICREATESTRUCTW'Size use 448;
   for tagMDICREATESTRUCTW'Alignment use 8;
   subtype MDICREATESTRUCTW is tagMDICREATESTRUCTW;
   type LPMDICREATESTRUCTW is access all tagMDICREATESTRUCTW;
   subtype MDICREATESTRUCT is MDICREATESTRUCTA;
   subtype LPMDICREATESTRUCT is LPMDICREATESTRUCTA;
   type tagCLIENTCREATESTRUCT is record
      hWindowMenu : HANDLE;
      idFirstChild : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCLIENTCREATESTRUCT);
   for tagCLIENTCREATESTRUCT use record
      hWindowMenu at 0 range 0..63;
      idFirstChild at 0 range 64..95;
   end record;
   for tagCLIENTCREATESTRUCT'Size use 128;
   for tagCLIENTCREATESTRUCT'Alignment use 8;
   subtype CLIENTCREATESTRUCT is tagCLIENTCREATESTRUCT;
   type LPCLIENTCREATESTRUCT is access all tagCLIENTCREATESTRUCT;
   function DefFrameProcA(
      hWnd_x : HWND;
      hWndMDIClient : HWND;
      uMsg : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,DefFrameProcA,"DefFrameProcA");
   function DefFrameProcW(
      hWnd_x : HWND;
      hWndMDIClient : HWND;
      uMsg : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,DefFrameProcW,"DefFrameProcW");
   function DefMDIChildProcA(
      hWnd_x : HWND;
      uMsg : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,DefMDIChildProcA,"DefMDIChildProcA");
   function DefMDIChildProcW(
      hWnd_x : HWND;
      uMsg : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,DefMDIChildProcW,"DefMDIChildProcW");
   function TranslateMDISysAccel(
      hWndClient : HWND;
      lpMsg_x : LPMSG
   ) return BOOL;
   pragma import (Cpp,TranslateMDISysAccel,"TranslateMDISysAccel");
   function ArrangeIconicWindows(
      hWnd_x : HWND
   ) return UINT;
   pragma import (Cpp,ArrangeIconicWindows,"ArrangeIconicWindows");
   function CreateMDIWindowA(
      lpClassName : LPCSTR;
      lpWindowName : LPCSTR;
      dwStyle : DWORD;
      X : Interfaces.C.Int;
      Y : Interfaces.C.Int;
      nWidth : Interfaces.C.Int;
      nHeight : Interfaces.C.Int;
      hWndParent : HWND;
      hInstance_x : HINSTANCE;
      lParam_x : LPARAM
   ) return HWND;
   pragma import (Cpp,CreateMDIWindowA,"CreateMDIWindowA");
   function CreateMDIWindowW(
      lpClassName : LPCWSTR;
      lpWindowName : LPCWSTR;
      dwStyle : DWORD;
      X : Interfaces.C.Int;
      Y : Interfaces.C.Int;
      nWidth : Interfaces.C.Int;
      nHeight : Interfaces.C.Int;
      hWndParent : HWND;
      hInstance_x : HINSTANCE;
      lParam_x : LPARAM
   ) return HWND;
   pragma import (Cpp,CreateMDIWindowW,"CreateMDIWindowW");
   function TileWindows(
      hwndParent : HWND;
      wHow : UINT;
      lpRect_x : access constant RECT;
      cKids : UINT;
      lpKids : access constant HWND
   ) return WORD;
   pragma import (Cpp,TileWindows,"TileWindows");
   function CascadeWindows(
      hwndParent : HWND;
      wHow : UINT;
      lpRect_x : access constant RECT;
      cKids : UINT;
      lpKids : access constant HWND
   ) return WORD;
   pragma import (Cpp,CascadeWindows,"CascadeWindows");
   subtype HELPPOLY is DWORD;
   type tagMULTIKEYHELPA_szKeyphrase_Array is array(1..1) of CHAR; -- Auto Generated Dependancy
   type tagMULTIKEYHELPA is record
      mkSize : DWORD;
      mkKeylist : CHAR;
      szKeyphrase : tagMULTIKEYHELPA_szKeyphrase_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMULTIKEYHELPA);
   for tagMULTIKEYHELPA use record
      mkSize at 0 range 0..31;
      mkKeylist at 0 range 32..39;
      szKeyphrase at 0 range 40..47;
   end record;
   for tagMULTIKEYHELPA'Size use 64;
   for tagMULTIKEYHELPA'Alignment use 4;
   subtype MULTIKEYHELPA is tagMULTIKEYHELPA;
   type PMULTIKEYHELPA is access all tagMULTIKEYHELPA;
   type LPMULTIKEYHELPA is access all tagMULTIKEYHELPA;
   type tagMULTIKEYHELPW_szKeyphrase_Array is array(1..1) of WCHAR; -- Auto Generated Dependancy
   type tagMULTIKEYHELPW is record
      mkSize : DWORD;
      mkKeylist : WCHAR;
      szKeyphrase : tagMULTIKEYHELPW_szKeyphrase_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMULTIKEYHELPW);
   for tagMULTIKEYHELPW use record
      mkSize at 0 range 0..31;
      mkKeylist at 0 range 32..47;
      szKeyphrase at 0 range 48..63;
   end record;
   for tagMULTIKEYHELPW'Size use 64;
   for tagMULTIKEYHELPW'Alignment use 4;
   subtype MULTIKEYHELPW is tagMULTIKEYHELPW;
   type PMULTIKEYHELPW is access all tagMULTIKEYHELPW;
   type LPMULTIKEYHELPW is access all tagMULTIKEYHELPW;
   subtype MULTIKEYHELP is MULTIKEYHELPA;
   subtype PMULTIKEYHELP is PMULTIKEYHELPA;
   subtype LPMULTIKEYHELP is LPMULTIKEYHELPA;
   type tagHELPWININFOA_rgchMember_Array is array(1..2) of CHAR; -- Auto Generated Dependancy
   type tagHELPWININFOA is record
      wStructSize : Interfaces.C.Int;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      dx : Interfaces.C.Int;
      dy : Interfaces.C.Int;
      wMax : Interfaces.C.Int;
      rgchMember : tagHELPWININFOA_rgchMember_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagHELPWININFOA);
   for tagHELPWININFOA use record
      wStructSize at 0 range 0..31;
      x at 0 range 32..63;
      y at 0 range 64..95;
      dx at 0 range 96..127;
      dy at 0 range 128..159;
      wMax at 0 range 160..191;
      rgchMember at 0 range 192..207;
   end record;
   for tagHELPWININFOA'Size use 224;
   for tagHELPWININFOA'Alignment use 4;
   subtype HELPWININFOA is tagHELPWININFOA;
   type PHELPWININFOA is access all tagHELPWININFOA;
   type LPHELPWININFOA is access all tagHELPWININFOA;
   type tagHELPWININFOW_rgchMember_Array is array(1..2) of WCHAR; -- Auto Generated Dependancy
   type tagHELPWININFOW is record
      wStructSize : Interfaces.C.Int;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      dx : Interfaces.C.Int;
      dy : Interfaces.C.Int;
      wMax : Interfaces.C.Int;
      rgchMember : tagHELPWININFOW_rgchMember_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagHELPWININFOW);
   for tagHELPWININFOW use record
      wStructSize at 0 range 0..31;
      x at 0 range 32..63;
      y at 0 range 64..95;
      dx at 0 range 96..127;
      dy at 0 range 128..159;
      wMax at 0 range 160..191;
      rgchMember at 0 range 192..223;
   end record;
   for tagHELPWININFOW'Size use 224;
   for tagHELPWININFOW'Alignment use 4;
   subtype HELPWININFOW is tagHELPWININFOW;
   type PHELPWININFOW is access all tagHELPWININFOW;
   type LPHELPWININFOW is access all tagHELPWININFOW;
   subtype HELPWININFO is HELPWININFOA;
   subtype PHELPWININFO is PHELPWININFOA;
   subtype LPHELPWININFO is LPHELPWININFOA;
   function WinHelpA(
      hWndMain : HWND;
      lpszHelp : LPCSTR;
      uCommand : UINT;
      dwData : ULONG_PTR
   ) return BOOL;
   pragma import (Cpp,WinHelpA,"WinHelpA");
   function WinHelpW(
      hWndMain : HWND;
      lpszHelp : LPCWSTR;
      uCommand : UINT;
      dwData : ULONG_PTR
   ) return BOOL;
   pragma import (Cpp,WinHelpW,"WinHelpW");
   function GetGuiResources(
      hProcess : HANDLE;
      uiFlags : DWORD
   ) return DWORD;
   pragma import (Cpp,GetGuiResources,"GetGuiResources");
   type tagTouchPredictionParameters is record
      cbSize : UINT;
      dwLatency : UINT;
      dwSampleTime : UINT;
      bUseHWTimeStamp : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTouchPredictionParameters);
   for tagTouchPredictionParameters use record
      cbSize at 0 range 0..31;
      dwLatency at 0 range 32..63;
      dwSampleTime at 0 range 64..95;
      bUseHWTimeStamp at 0 range 96..127;
   end record;
   for tagTouchPredictionParameters'Size use 128;
   for tagTouchPredictionParameters'Alignment use 4;
   subtype TOUCHPREDICTIONPARAMETERS is tagTouchPredictionParameters;
   type PTOUCHPREDICTIONPARAMETERS is access all tagTouchPredictionParameters;
   type tagHANDEDNESS is (
      HANDEDNESS_LEFT,
      HANDEDNESS_RIGHT
   );
   for tagHANDEDNESS use (
      HANDEDNESS_LEFT => 0,
      HANDEDNESS_RIGHT => 1
   );
   for tagHANDEDNESS'Size use 32;
   subtype HANDEDNESS is tagHANDEDNESS;
   type PHANDEDNESS is access all tagHANDEDNESS;
   type tagNONCLIENTMETRICSA is record
      cbSize : UINT;
      iBorderWidth : Interfaces.C.Int;
      iScrollWidth : Interfaces.C.Int;
      iScrollHeight : Interfaces.C.Int;
      iCaptionWidth : Interfaces.C.Int;
      iCaptionHeight : Interfaces.C.Int;
      lfCaptionFont : LOGFONTA;
      iSmCaptionWidth : Interfaces.C.Int;
      iSmCaptionHeight : Interfaces.C.Int;
      lfSmCaptionFont : LOGFONTA;
      iMenuWidth : Interfaces.C.Int;
      iMenuHeight : Interfaces.C.Int;
      lfMenuFont : LOGFONTA;
      lfStatusFont : LOGFONTA;
      lfMessageFont : LOGFONTA;
      iPaddedBorderWidth : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNONCLIENTMETRICSA);
   for tagNONCLIENTMETRICSA use record
      cbSize at 0 range 0..31;
      iBorderWidth at 0 range 32..63;
      iScrollWidth at 0 range 64..95;
      iScrollHeight at 0 range 96..127;
      iCaptionWidth at 0 range 128..159;
      iCaptionHeight at 0 range 160..191;
      lfCaptionFont at 0 range 192..671;
      iSmCaptionWidth at 0 range 672..703;
      iSmCaptionHeight at 0 range 704..735;
      lfSmCaptionFont at 0 range 736..1215;
      iMenuWidth at 0 range 1216..1247;
      iMenuHeight at 0 range 1248..1279;
      lfMenuFont at 0 range 1280..1759;
      lfStatusFont at 0 range 1760..2239;
      lfMessageFont at 0 range 2240..2719;
      iPaddedBorderWidth at 0 range 2720..2751;
   end record;
   for tagNONCLIENTMETRICSA'Size use 2752;
   for tagNONCLIENTMETRICSA'Alignment use 4;
   subtype NONCLIENTMETRICSA is tagNONCLIENTMETRICSA;
   type PNONCLIENTMETRICSA is access all tagNONCLIENTMETRICSA;
   type LPNONCLIENTMETRICSA is access all tagNONCLIENTMETRICSA;
   type tagNONCLIENTMETRICSW is record
      cbSize : UINT;
      iBorderWidth : Interfaces.C.Int;
      iScrollWidth : Interfaces.C.Int;
      iScrollHeight : Interfaces.C.Int;
      iCaptionWidth : Interfaces.C.Int;
      iCaptionHeight : Interfaces.C.Int;
      lfCaptionFont : LOGFONTW;
      iSmCaptionWidth : Interfaces.C.Int;
      iSmCaptionHeight : Interfaces.C.Int;
      lfSmCaptionFont : LOGFONTW;
      iMenuWidth : Interfaces.C.Int;
      iMenuHeight : Interfaces.C.Int;
      lfMenuFont : LOGFONTW;
      lfStatusFont : LOGFONTW;
      lfMessageFont : LOGFONTW;
      iPaddedBorderWidth : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNONCLIENTMETRICSW);
   for tagNONCLIENTMETRICSW use record
      cbSize at 0 range 0..31;
      iBorderWidth at 0 range 32..63;
      iScrollWidth at 0 range 64..95;
      iScrollHeight at 0 range 96..127;
      iCaptionWidth at 0 range 128..159;
      iCaptionHeight at 0 range 160..191;
      lfCaptionFont at 0 range 192..927;
      iSmCaptionWidth at 0 range 928..959;
      iSmCaptionHeight at 0 range 960..991;
      lfSmCaptionFont at 0 range 992..1727;
      iMenuWidth at 0 range 1728..1759;
      iMenuHeight at 0 range 1760..1791;
      lfMenuFont at 0 range 1792..2527;
      lfStatusFont at 0 range 2528..3263;
      lfMessageFont at 0 range 3264..3999;
      iPaddedBorderWidth at 0 range 4000..4031;
   end record;
   for tagNONCLIENTMETRICSW'Size use 4032;
   for tagNONCLIENTMETRICSW'Alignment use 4;
   subtype NONCLIENTMETRICSW is tagNONCLIENTMETRICSW;
   type PNONCLIENTMETRICSW is access all tagNONCLIENTMETRICSW;
   type LPNONCLIENTMETRICSW is access all tagNONCLIENTMETRICSW;
   subtype NONCLIENTMETRICS is NONCLIENTMETRICSA;
   subtype PNONCLIENTMETRICS is PNONCLIENTMETRICSA;
   subtype LPNONCLIENTMETRICS is LPNONCLIENTMETRICSA;
   type tagMINIMIZEDMETRICS is record
      cbSize : UINT;
      iWidth : Interfaces.C.Int;
      iHorzGap : Interfaces.C.Int;
      iVertGap : Interfaces.C.Int;
      iArrange : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMINIMIZEDMETRICS);
   for tagMINIMIZEDMETRICS use record
      cbSize at 0 range 0..31;
      iWidth at 0 range 32..63;
      iHorzGap at 0 range 64..95;
      iVertGap at 0 range 96..127;
      iArrange at 0 range 128..159;
   end record;
   for tagMINIMIZEDMETRICS'Size use 160;
   for tagMINIMIZEDMETRICS'Alignment use 4;
   subtype MINIMIZEDMETRICS is tagMINIMIZEDMETRICS;
   type PMINIMIZEDMETRICS is access all tagMINIMIZEDMETRICS;
   type LPMINIMIZEDMETRICS is access all tagMINIMIZEDMETRICS;
   type tagICONMETRICSA is record
      cbSize : UINT;
      iHorzSpacing : Interfaces.C.Int;
      iVertSpacing : Interfaces.C.Int;
      iTitleWrap : Interfaces.C.Int;
      lfFont : LOGFONTA;
   end record;
   pragma Convention (C_Pass_By_Copy,tagICONMETRICSA);
   for tagICONMETRICSA use record
      cbSize at 0 range 0..31;
      iHorzSpacing at 0 range 32..63;
      iVertSpacing at 0 range 64..95;
      iTitleWrap at 0 range 96..127;
      lfFont at 0 range 128..607;
   end record;
   for tagICONMETRICSA'Size use 608;
   for tagICONMETRICSA'Alignment use 4;
   subtype ICONMETRICSA is tagICONMETRICSA;
   type PICONMETRICSA is access all tagICONMETRICSA;
   type LPICONMETRICSA is access all tagICONMETRICSA;
   type tagICONMETRICSW is record
      cbSize : UINT;
      iHorzSpacing : Interfaces.C.Int;
      iVertSpacing : Interfaces.C.Int;
      iTitleWrap : Interfaces.C.Int;
      lfFont : LOGFONTW;
   end record;
   pragma Convention (C_Pass_By_Copy,tagICONMETRICSW);
   for tagICONMETRICSW use record
      cbSize at 0 range 0..31;
      iHorzSpacing at 0 range 32..63;
      iVertSpacing at 0 range 64..95;
      iTitleWrap at 0 range 96..127;
      lfFont at 0 range 128..863;
   end record;
   for tagICONMETRICSW'Size use 864;
   for tagICONMETRICSW'Alignment use 4;
   subtype ICONMETRICSW is tagICONMETRICSW;
   type PICONMETRICSW is access all tagICONMETRICSW;
   type LPICONMETRICSW is access all tagICONMETRICSW;
   subtype ICONMETRICS is ICONMETRICSA;
   subtype PICONMETRICS is PICONMETRICSA;
   subtype LPICONMETRICS is LPICONMETRICSA;
   type tagANIMATIONINFO is record
      cbSize : UINT;
      iMinAnimate : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagANIMATIONINFO);
   for tagANIMATIONINFO use record
      cbSize at 0 range 0..31;
      iMinAnimate at 0 range 32..63;
   end record;
   for tagANIMATIONINFO'Size use 64;
   for tagANIMATIONINFO'Alignment use 4;
   subtype ANIMATIONINFO is tagANIMATIONINFO;
   type LPANIMATIONINFO is access all tagANIMATIONINFO;
   type tagSERIALKEYSA is record
      cbSize : UINT;
      dwFlags : DWORD;
      lpszActivePort : LPSTR;
      lpszPort : LPSTR;
      iBaudRate : UINT;
      iPortState : UINT;
      iActive : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSERIALKEYSA);
   for tagSERIALKEYSA use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      lpszActivePort at 0 range 64..127;
      lpszPort at 0 range 128..191;
      iBaudRate at 0 range 192..223;
      iPortState at 0 range 224..255;
      iActive at 0 range 256..287;
   end record;
   for tagSERIALKEYSA'Size use 320;
   for tagSERIALKEYSA'Alignment use 8;
   subtype SERIALKEYSA is tagSERIALKEYSA;
   type LPSERIALKEYSA is access all tagSERIALKEYSA;
   type tagSERIALKEYSW is record
      cbSize : UINT;
      dwFlags : DWORD;
      lpszActivePort : LPWSTR;
      lpszPort : LPWSTR;
      iBaudRate : UINT;
      iPortState : UINT;
      iActive : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSERIALKEYSW);
   for tagSERIALKEYSW use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      lpszActivePort at 0 range 64..127;
      lpszPort at 0 range 128..191;
      iBaudRate at 0 range 192..223;
      iPortState at 0 range 224..255;
      iActive at 0 range 256..287;
   end record;
   for tagSERIALKEYSW'Size use 320;
   for tagSERIALKEYSW'Alignment use 8;
   subtype SERIALKEYSW is tagSERIALKEYSW;
   type LPSERIALKEYSW is access all tagSERIALKEYSW;
   subtype SERIALKEYS is SERIALKEYSA;
   subtype LPSERIALKEYS is LPSERIALKEYSA;
   type tagHIGHCONTRASTA is record
      cbSize : UINT;
      dwFlags : DWORD;
      lpszDefaultScheme : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagHIGHCONTRASTA);
   for tagHIGHCONTRASTA use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      lpszDefaultScheme at 0 range 64..127;
   end record;
   for tagHIGHCONTRASTA'Size use 128;
   for tagHIGHCONTRASTA'Alignment use 8;
   subtype HIGHCONTRASTA is tagHIGHCONTRASTA;
   type LPHIGHCONTRASTA is access all tagHIGHCONTRASTA;
   type tagHIGHCONTRASTW is record
      cbSize : UINT;
      dwFlags : DWORD;
      lpszDefaultScheme : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagHIGHCONTRASTW);
   for tagHIGHCONTRASTW use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      lpszDefaultScheme at 0 range 64..127;
   end record;
   for tagHIGHCONTRASTW'Size use 128;
   for tagHIGHCONTRASTW'Alignment use 8;
   subtype HIGHCONTRASTW is tagHIGHCONTRASTW;
   type LPHIGHCONTRASTW is access all tagHIGHCONTRASTW;
   subtype HIGHCONTRAST is HIGHCONTRASTA;
   subtype LPHIGHCONTRAST is LPHIGHCONTRASTA;
   -- #include <tvout.h>
   type VIDEOPARAMETERS_x_bOEMCopyProtection_Array is array(1..256) of UCHAR; -- Auto Generated Dependancy
   type VIDEOPARAMETERS_x is record
      Guid_x : GUID;
      dwOffset : ULONG;
      dwCommand : ULONG;
      dwFlags : ULONG;
      dwMode : ULONG;
      dwTVStandard : ULONG;
      dwAvailableModes : ULONG;
      dwAvailableTVStandard : ULONG;
      dwFlickerFilter : ULONG;
      dwOverScanX : ULONG;
      dwOverScanY : ULONG;
      dwMaxUnscaledX : ULONG;
      dwMaxUnscaledY : ULONG;
      dwPositionX : ULONG;
      dwPositionY : ULONG;
      dwBrightness : ULONG;
      dwContrast : ULONG;
      dwCPType : ULONG;
      dwCPCommand : ULONG;
      dwCPStandard : ULONG;
      dwCPKey : ULONG;
      bCP_APSTriggerBits : ULONG;
      bOEMCopyProtection : VIDEOPARAMETERS_x_bOEMCopyProtection_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,VIDEOPARAMETERS_x);
   for VIDEOPARAMETERS_x use record
      Guid_x at 0 range 0..127;
      dwOffset at 0 range 128..159;
      dwCommand at 0 range 160..191;
      dwFlags at 0 range 192..223;
      dwMode at 0 range 224..255;
      dwTVStandard at 0 range 256..287;
      dwAvailableModes at 0 range 288..319;
      dwAvailableTVStandard at 0 range 320..351;
      dwFlickerFilter at 0 range 352..383;
      dwOverScanX at 0 range 384..415;
      dwOverScanY at 0 range 416..447;
      dwMaxUnscaledX at 0 range 448..479;
      dwMaxUnscaledY at 0 range 480..511;
      dwPositionX at 0 range 512..543;
      dwPositionY at 0 range 544..575;
      dwBrightness at 0 range 576..607;
      dwContrast at 0 range 608..639;
      dwCPType at 0 range 640..671;
      dwCPCommand at 0 range 672..703;
      dwCPStandard at 0 range 704..735;
      dwCPKey at 0 range 736..767;
      bCP_APSTriggerBits at 0 range 768..799;
      bOEMCopyProtection at 0 range 800..2847;
   end record;
   for VIDEOPARAMETERS_x'Size use 2848;
   for VIDEOPARAMETERS_x'Alignment use 4;
   subtype VIDEOPARAMETERS is VIDEOPARAMETERS_x;
   type PVIDEOPARAMETERS is access all VIDEOPARAMETERS_x;
   type LPVIDEOPARAMETERS is access all VIDEOPARAMETERS_x;
   -- #include <winuser.h>
   function ChangeDisplaySettingsA(
      lpDevMode_x : access DEVMODEA;
      dwFlags : DWORD
   ) return LONG;
   pragma import (Cpp,ChangeDisplaySettingsA,"ChangeDisplaySettingsA");
   function ChangeDisplaySettingsW(
      lpDevMode_x : access DEVMODEW;
      dwFlags : DWORD
   ) return LONG;
   pragma import (Cpp,ChangeDisplaySettingsW,"ChangeDisplaySettingsW");
   function ChangeDisplaySettingsExA(
      lpszDeviceName : LPCSTR;
      lpDevMode_x : access DEVMODEA;
      hwnd_x : HWND;
      dwflags : DWORD;
      lParam_x : LPVOID
   ) return LONG;
   pragma import (Cpp,ChangeDisplaySettingsExA,"ChangeDisplaySettingsExA");
   function ChangeDisplaySettingsExW(
      lpszDeviceName : LPCWSTR;
      lpDevMode_x : access DEVMODEW;
      hwnd_x : HWND;
      dwflags : DWORD;
      lParam_x : LPVOID
   ) return LONG;
   pragma import (Cpp,ChangeDisplaySettingsExW,"ChangeDisplaySettingsExW");
   function EnumDisplaySettingsA(
      lpszDeviceName : LPCSTR;
      iModeNum : DWORD;
      lpDevMode_x : access DEVMODEA
   ) return BOOL;
   pragma import (Cpp,EnumDisplaySettingsA,"EnumDisplaySettingsA");
   function EnumDisplaySettingsW(
      lpszDeviceName : LPCWSTR;
      iModeNum : DWORD;
      lpDevMode_x : access DEVMODEW
   ) return BOOL;
   pragma import (Cpp,EnumDisplaySettingsW,"EnumDisplaySettingsW");
   function EnumDisplaySettingsExA(
      lpszDeviceName : LPCSTR;
      iModeNum : DWORD;
      lpDevMode_x : access DEVMODEA;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumDisplaySettingsExA,"EnumDisplaySettingsExA");
   function EnumDisplaySettingsExW(
      lpszDeviceName : LPCWSTR;
      iModeNum : DWORD;
      lpDevMode_x : access DEVMODEW;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumDisplaySettingsExW,"EnumDisplaySettingsExW");
   function EnumDisplayDevicesA(
      lpDevice : LPCSTR;
      iDevNum : DWORD;
      lpDisplayDevice : PDISPLAY_DEVICEA;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumDisplayDevicesA,"EnumDisplayDevicesA");
   function EnumDisplayDevicesW(
      lpDevice : LPCWSTR;
      iDevNum : DWORD;
      lpDisplayDevice : PDISPLAY_DEVICEW;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumDisplayDevicesW,"EnumDisplayDevicesW");
   function GetDisplayConfigBufferSizes(
      flags : UINT32;
      numPathArrayElements : access UINT32;
      numModeInfoArrayElements : access UINT32
   ) return LONG;
   pragma import (Cpp,GetDisplayConfigBufferSizes,"GetDisplayConfigBufferSizes");
   function SetDisplayConfig(
      numPathArrayElements : UINT32;
      pathArray : access DISPLAYCONFIG_PATH_INFO;
      numModeInfoArrayElements : UINT32;
      modeInfoArray : access DISPLAYCONFIG_MODE_INFO;
      flags : UINT32
   ) return LONG;
   pragma import (Cpp,SetDisplayConfig,"SetDisplayConfig");
   function QueryDisplayConfig(
      flags : UINT32;
      numPathArrayElements : access UINT32;
      pathArray : access DISPLAYCONFIG_PATH_INFO;
      numModeInfoArrayElements : access UINT32;
      modeInfoArray : access DISPLAYCONFIG_MODE_INFO;
      currentTopologyId : access DISPLAYCONFIG_TOPOLOGY_ID
   ) return LONG;
   pragma import (Cpp,QueryDisplayConfig,"QueryDisplayConfig");
   function DisplayConfigGetDeviceInfo(
      requestPacket : access DISPLAYCONFIG_DEVICE_INFO_HEADER
   ) return LONG;
   pragma import (Cpp,DisplayConfigGetDeviceInfo,"DisplayConfigGetDeviceInfo");
   function DisplayConfigSetDeviceInfo(
      setPacket : access DISPLAYCONFIG_DEVICE_INFO_HEADER
   ) return LONG;
   pragma import (Cpp,DisplayConfigSetDeviceInfo,"DisplayConfigSetDeviceInfo");
   function SystemParametersInfoA(
      uiAction : UINT;
      uiParam : UINT;
      pvParam : PVOID;
      fWinIni : UINT
   ) return BOOL;
   pragma import (Cpp,SystemParametersInfoA,"SystemParametersInfoA");
   function SystemParametersInfoW(
      uiAction : UINT;
      uiParam : UINT;
      pvParam : PVOID;
      fWinIni : UINT
   ) return BOOL;
   pragma import (Cpp,SystemParametersInfoW,"SystemParametersInfoW");
   function SystemParametersInfoForDpi(
      uiAction : UINT;
      uiParam : UINT;
      pvParam : PVOID;
      fWinIni : UINT;
      dpi : UINT
   ) return BOOL;
   pragma import (Cpp,SystemParametersInfoForDpi,"SystemParametersInfoForDpi");
   type tagFILTERKEYS is record
      cbSize : UINT;
      dwFlags : DWORD;
      iWaitMSec : DWORD;
      iDelayMSec : DWORD;
      iRepeatMSec : DWORD;
      iBounceMSec : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagFILTERKEYS);
   for tagFILTERKEYS use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      iWaitMSec at 0 range 64..95;
      iDelayMSec at 0 range 96..127;
      iRepeatMSec at 0 range 128..159;
      iBounceMSec at 0 range 160..191;
   end record;
   for tagFILTERKEYS'Size use 192;
   for tagFILTERKEYS'Alignment use 4;
   subtype FILTERKEYS is tagFILTERKEYS;
   type LPFILTERKEYS is access all tagFILTERKEYS;
   type tagSTICKYKEYS is record
      cbSize : UINT;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSTICKYKEYS);
   for tagSTICKYKEYS use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
   end record;
   for tagSTICKYKEYS'Size use 64;
   for tagSTICKYKEYS'Alignment use 4;
   subtype STICKYKEYS is tagSTICKYKEYS;
   type LPSTICKYKEYS is access all tagSTICKYKEYS;
   type tagMOUSEKEYS is record
      cbSize : UINT;
      dwFlags : DWORD;
      iMaxSpeed : DWORD;
      iTimeToMaxSpeed : DWORD;
      iCtrlSpeed : DWORD;
      dwReserved1 : DWORD;
      dwReserved2 : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMOUSEKEYS);
   for tagMOUSEKEYS use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      iMaxSpeed at 0 range 64..95;
      iTimeToMaxSpeed at 0 range 96..127;
      iCtrlSpeed at 0 range 128..159;
      dwReserved1 at 0 range 160..191;
      dwReserved2 at 0 range 192..223;
   end record;
   for tagMOUSEKEYS'Size use 224;
   for tagMOUSEKEYS'Alignment use 4;
   subtype MOUSEKEYS is tagMOUSEKEYS;
   type LPMOUSEKEYS is access all tagMOUSEKEYS;
   type tagACCESSTIMEOUT is record
      cbSize : UINT;
      dwFlags : DWORD;
      iTimeOutMSec : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagACCESSTIMEOUT);
   for tagACCESSTIMEOUT use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      iTimeOutMSec at 0 range 64..95;
   end record;
   for tagACCESSTIMEOUT'Size use 96;
   for tagACCESSTIMEOUT'Alignment use 4;
   subtype ACCESSTIMEOUT is tagACCESSTIMEOUT;
   type LPACCESSTIMEOUT is access all tagACCESSTIMEOUT;
   type tagSOUNDSENTRYA is record
      cbSize : UINT;
      dwFlags : DWORD;
      iFSTextEffect : DWORD;
      iFSTextEffectMSec : DWORD;
      iFSTextEffectColorBits : DWORD;
      iFSGrafEffect : DWORD;
      iFSGrafEffectMSec : DWORD;
      iFSGrafEffectColor : DWORD;
      iWindowsEffect : DWORD;
      iWindowsEffectMSec : DWORD;
      lpszWindowsEffectDLL : LPSTR;
      iWindowsEffectOrdinal : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSOUNDSENTRYA);
   for tagSOUNDSENTRYA use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      iFSTextEffect at 0 range 64..95;
      iFSTextEffectMSec at 0 range 96..127;
      iFSTextEffectColorBits at 0 range 128..159;
      iFSGrafEffect at 0 range 160..191;
      iFSGrafEffectMSec at 0 range 192..223;
      iFSGrafEffectColor at 0 range 224..255;
      iWindowsEffect at 0 range 256..287;
      iWindowsEffectMSec at 0 range 288..319;
      lpszWindowsEffectDLL at 0 range 320..383;
      iWindowsEffectOrdinal at 0 range 384..415;
   end record;
   for tagSOUNDSENTRYA'Size use 448;
   for tagSOUNDSENTRYA'Alignment use 8;
   subtype SOUNDSENTRYA is tagSOUNDSENTRYA;
   type LPSOUNDSENTRYA is access all tagSOUNDSENTRYA;
   type tagSOUNDSENTRYW is record
      cbSize : UINT;
      dwFlags : DWORD;
      iFSTextEffect : DWORD;
      iFSTextEffectMSec : DWORD;
      iFSTextEffectColorBits : DWORD;
      iFSGrafEffect : DWORD;
      iFSGrafEffectMSec : DWORD;
      iFSGrafEffectColor : DWORD;
      iWindowsEffect : DWORD;
      iWindowsEffectMSec : DWORD;
      lpszWindowsEffectDLL : LPWSTR;
      iWindowsEffectOrdinal : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSOUNDSENTRYW);
   for tagSOUNDSENTRYW use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      iFSTextEffect at 0 range 64..95;
      iFSTextEffectMSec at 0 range 96..127;
      iFSTextEffectColorBits at 0 range 128..159;
      iFSGrafEffect at 0 range 160..191;
      iFSGrafEffectMSec at 0 range 192..223;
      iFSGrafEffectColor at 0 range 224..255;
      iWindowsEffect at 0 range 256..287;
      iWindowsEffectMSec at 0 range 288..319;
      lpszWindowsEffectDLL at 0 range 320..383;
      iWindowsEffectOrdinal at 0 range 384..415;
   end record;
   for tagSOUNDSENTRYW'Size use 448;
   for tagSOUNDSENTRYW'Alignment use 8;
   subtype SOUNDSENTRYW is tagSOUNDSENTRYW;
   type LPSOUNDSENTRYW is access all tagSOUNDSENTRYW;
   subtype SOUNDSENTRY is SOUNDSENTRYA;
   subtype LPSOUNDSENTRY is LPSOUNDSENTRYA;
   function SoundSentry_x return BOOL;
   pragma import (Cpp,SoundSentry_x,"SoundSentry");
   type tagTOGGLEKEYS is record
      cbSize : UINT;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTOGGLEKEYS);
   for tagTOGGLEKEYS use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
   end record;
   for tagTOGGLEKEYS'Size use 64;
   for tagTOGGLEKEYS'Alignment use 4;
   subtype TOGGLEKEYS is tagTOGGLEKEYS;
   type LPTOGGLEKEYS is access all tagTOGGLEKEYS;
   type tagAUDIODESCRIPTION is record
      cbSize : UINT;
      Enabled : BOOL;
      Locale : LCID;
   end record;
   pragma Convention (C_Pass_By_Copy,tagAUDIODESCRIPTION);
   for tagAUDIODESCRIPTION use record
      cbSize at 0 range 0..31;
      Enabled at 0 range 32..63;
      Locale at 0 range 64..95;
   end record;
   for tagAUDIODESCRIPTION'Size use 96;
   for tagAUDIODESCRIPTION'Alignment use 4;
   subtype AUDIODESCRIPTION is tagAUDIODESCRIPTION;
   type LPAUDIODESCRIPTION is access all tagAUDIODESCRIPTION;
   procedure SetDebugErrorLevel(
      dwLevel : DWORD
   );
   pragma import (Cpp,SetDebugErrorLevel,"SetDebugErrorLevel");
   procedure SetLastErrorEx(
      dwErrCode : DWORD;
      dwType : DWORD
   );
   pragma import (Cpp,SetLastErrorEx,"SetLastErrorEx");
   function InternalGetWindowText(
      hWnd_x : HWND;
      pString : LPWSTR;
      cchMaxCount : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,InternalGetWindowText,"InternalGetWindowText");
   function CancelShutdown return BOOL;
   pragma import (Cpp,CancelShutdown,"CancelShutdown");
   function MonitorFromPoint(
      pt : POINT;
      dwFlags : DWORD
   ) return HMONITOR;
   pragma import (Cpp,MonitorFromPoint,"MonitorFromPoint");
   function MonitorFromRect(
      lprc : LPCRECT;
      dwFlags : DWORD
   ) return HMONITOR;
   pragma import (Cpp,MonitorFromRect,"MonitorFromRect");
   function MonitorFromWindow(
      hwnd_x : HWND;
      dwFlags : DWORD
   ) return HMONITOR;
   pragma import (Cpp,MonitorFromWindow,"MonitorFromWindow");
   type tagMONITORINFO is record
      cbSize : DWORD;
      rcMonitor : RECT;
      rcWork : RECT;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMONITORINFO);
   for tagMONITORINFO use record
      cbSize at 0 range 0..31;
      rcMonitor at 0 range 32..159;
      rcWork at 0 range 160..287;
      dwFlags at 0 range 288..319;
   end record;
   for tagMONITORINFO'Size use 320;
   for tagMONITORINFO'Alignment use 4;
   subtype MONITORINFO is tagMONITORINFO;
   type LPMONITORINFO is access all tagMONITORINFO;
   type tagMONITORINFOEXA_szDevice_Array is array(1..32) of CHAR; -- Auto Generated Dependancy
   type tagMONITORINFOEXA is record -- Base = [struct tagMONITORINFO]
      m_Base : tagMONITORINFO;
      szDevice : tagMONITORINFOEXA_szDevice_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMONITORINFOEXA);
   for tagMONITORINFOEXA use record
      m_Base at 0 range 0..319;
      szDevice at 0 range 320..575;
   end record;
   for tagMONITORINFOEXA'Size use 576;
   for tagMONITORINFOEXA'Alignment use 4;
   subtype MONITORINFOEXA is tagMONITORINFOEXA;
   type LPMONITORINFOEXA is access all tagMONITORINFOEXA;
   type tagMONITORINFOEXW_szDevice_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type tagMONITORINFOEXW is record -- Base = [struct tagMONITORINFO]
      m_Base : tagMONITORINFO;
      szDevice : tagMONITORINFOEXW_szDevice_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMONITORINFOEXW);
   for tagMONITORINFOEXW use record
      m_Base at 0 range 0..319;
      szDevice at 0 range 320..831;
   end record;
   for tagMONITORINFOEXW'Size use 832;
   for tagMONITORINFOEXW'Alignment use 4;
   subtype MONITORINFOEXW is tagMONITORINFOEXW;
   type LPMONITORINFOEXW is access all tagMONITORINFOEXW;
   subtype MONITORINFOEX is MONITORINFOEXA;
   subtype LPMONITORINFOEX is LPMONITORINFOEXA;
   function GetMonitorInfoA(
      hMonitor_x : HMONITOR;
      lpmi : LPMONITORINFO
   ) return BOOL;
   pragma import (Cpp,GetMonitorInfoA,"GetMonitorInfoA");
   function GetMonitorInfoW(
      hMonitor_x : HMONITOR;
      lpmi : LPMONITORINFO
   ) return BOOL;
   pragma import (Cpp,GetMonitorInfoW,"GetMonitorInfoW");
   type MONITORENUMPROC is access function (p1 : HMONITOR ; p2 : HDC ; p3 : LPRECT ; p4 : LPARAM) return BOOL; -- BOOL (HMONITOR, HDC, LPRECT, LPARAM)
   pragma Convention(C,MONITORENUMPROC);
   function EnumDisplayMonitors(
      hdc_x : HDC;
      lprcClip : LPCRECT;
      lpfnEnum : MONITORENUMPROC;
      dwData : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumDisplayMonitors,"EnumDisplayMonitors");
   procedure NotifyWinEvent(
      event : DWORD;
      hwnd_x : HWND;
      idObject : LONG;
      idChild : LONG
   );
   pragma import (Cpp,NotifyWinEvent,"NotifyWinEvent");
   type WINEVENTPROC is access procedure (p1 : HWINEVENTHOOK ; p2 : DWORD ; p3 : HWND ; p4 : LONG ; p5 : LONG ; p6 : DWORD ; p7 : DWORD); -- void (HWINEVENTHOOK, DWORD, HWND, LONG, LONG, DWORD, DWORD)
   pragma Convention(C,WINEVENTPROC);
   function SetWinEventHook(
      eventMin : DWORD;
      eventMax : DWORD;
      hmodWinEventProc : HMODULE;
      pfnWinEventProc : WINEVENTPROC;
      idProcess : DWORD;
      idThread : DWORD;
      dwFlags : DWORD
   ) return HWINEVENTHOOK;
   pragma import (Cpp,SetWinEventHook,"SetWinEventHook");
   function IsWinEventHookInstalled(
      event : DWORD
   ) return BOOL;
   pragma import (Cpp,IsWinEventHookInstalled,"IsWinEventHookInstalled");
   function UnhookWinEvent(
      hWinEventHook_x : HWINEVENTHOOK
   ) return BOOL;
   pragma import (Cpp,UnhookWinEvent,"UnhookWinEvent");
   type tagGUITHREADINFO is record
      cbSize : DWORD;
      flags : DWORD;
      hwndActive : HWND;
      hwndFocus : HWND;
      hwndCapture : HWND;
      hwndMenuOwner : HWND;
      hwndMoveSize : HWND;
      hwndCaret : HWND;
      rcCaret : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagGUITHREADINFO);
   for tagGUITHREADINFO use record
      cbSize at 0 range 0..31;
      flags at 0 range 32..63;
      hwndActive at 0 range 64..127;
      hwndFocus at 0 range 128..191;
      hwndCapture at 0 range 192..255;
      hwndMenuOwner at 0 range 256..319;
      hwndMoveSize at 0 range 320..383;
      hwndCaret at 0 range 384..447;
      rcCaret at 0 range 448..575;
   end record;
   for tagGUITHREADINFO'Size use 576;
   for tagGUITHREADINFO'Alignment use 8;
   subtype GUITHREADINFO is tagGUITHREADINFO;
   type PGUITHREADINFO is access all tagGUITHREADINFO;
   type LPGUITHREADINFO is access all tagGUITHREADINFO;
   function GetGUIThreadInfo(
      idThread : DWORD;
      pgui : PGUITHREADINFO
   ) return BOOL;
   pragma import (Cpp,GetGUIThreadInfo,"GetGUIThreadInfo");
   function BlockInput(
      fBlockIt : BOOL
   ) return BOOL;
   pragma import (Cpp,BlockInput,"BlockInput");
   function SetProcessDPIAware return BOOL;
   pragma import (Cpp,SetProcessDPIAware,"SetProcessDPIAware");
   function IsProcessDPIAware return BOOL;
   pragma import (Cpp,IsProcessDPIAware,"IsProcessDPIAware");
   function SetThreadDpiAwarenessContext(
      dpiContext : DPI_AWARENESS_CONTEXT
   ) return DPI_AWARENESS_CONTEXT;
   pragma import (Cpp,SetThreadDpiAwarenessContext,"SetThreadDpiAwarenessContext");
   function GetThreadDpiAwarenessContext return DPI_AWARENESS_CONTEXT;
   pragma import (Cpp,GetThreadDpiAwarenessContext,"GetThreadDpiAwarenessContext");
   function GetWindowDpiAwarenessContext(
      hwnd_x : HWND
   ) return DPI_AWARENESS_CONTEXT;
   pragma import (Cpp,GetWindowDpiAwarenessContext,"GetWindowDpiAwarenessContext");
   function GetAwarenessFromDpiAwarenessContext(
      value : DPI_AWARENESS_CONTEXT
   ) return DPI_AWARENESS;
   pragma import (Cpp,GetAwarenessFromDpiAwarenessContext,"GetAwarenessFromDpiAwarenessContext");
   function GetDpiFromDpiAwarenessContext(
      value : DPI_AWARENESS_CONTEXT
   ) return UINT;
   pragma import (Cpp,GetDpiFromDpiAwarenessContext,"GetDpiFromDpiAwarenessContext");
   function AreDpiAwarenessContextsEqual(
      dpiContextA : DPI_AWARENESS_CONTEXT;
      dpiContextB : DPI_AWARENESS_CONTEXT
   ) return BOOL;
   pragma import (Cpp,AreDpiAwarenessContextsEqual,"AreDpiAwarenessContextsEqual");
   function IsValidDpiAwarenessContext(
      value : DPI_AWARENESS_CONTEXT
   ) return BOOL;
   pragma import (Cpp,IsValidDpiAwarenessContext,"IsValidDpiAwarenessContext");
   function GetDpiForWindow(
      hwnd_x : HWND
   ) return UINT;
   pragma import (Cpp,GetDpiForWindow,"GetDpiForWindow");
   function GetDpiForSystem return UINT;
   pragma import (Cpp,GetDpiForSystem,"GetDpiForSystem");
   function GetSystemDpiForProcess(
      hProcess : HANDLE
   ) return UINT;
   pragma import (Cpp,GetSystemDpiForProcess,"GetSystemDpiForProcess");
   function EnableNonClientDpiScaling(
      hwnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,EnableNonClientDpiScaling,"EnableNonClientDpiScaling");
   function InheritWindowMonitor(
      hwnd_x : HWND;
      hwndInherit : HWND
   ) return BOOL;
   pragma import (Cpp,InheritWindowMonitor,"InheritWindowMonitor");
   function SetProcessDpiAwarenessContext(
      value : DPI_AWARENESS_CONTEXT
   ) return BOOL;
   pragma import (Cpp,SetProcessDpiAwarenessContext,"SetProcessDpiAwarenessContext");
   function GetDpiAwarenessContextForProcess(
      hProcess : HANDLE
   ) return DPI_AWARENESS_CONTEXT;
   pragma import (Cpp,GetDpiAwarenessContextForProcess,"GetDpiAwarenessContextForProcess");
   function SetThreadDpiHostingBehavior(
      value : DPI_HOSTING_BEHAVIOR
   ) return DPI_HOSTING_BEHAVIOR;
   pragma import (Cpp,SetThreadDpiHostingBehavior,"SetThreadDpiHostingBehavior");
   function GetThreadDpiHostingBehavior return DPI_HOSTING_BEHAVIOR;
   pragma import (Cpp,GetThreadDpiHostingBehavior,"GetThreadDpiHostingBehavior");
   function GetWindowDpiHostingBehavior(
      hwnd_x : HWND
   ) return DPI_HOSTING_BEHAVIOR;
   pragma import (Cpp,GetWindowDpiHostingBehavior,"GetWindowDpiHostingBehavior");
   function GetWindowModuleFileNameA(
      hwnd_x : HWND;
      pszFileName : LPSTR;
      cchFileNameMax : UINT
   ) return UINT;
   pragma import (Cpp,GetWindowModuleFileNameA,"GetWindowModuleFileNameA");
   function GetWindowModuleFileNameW(
      hwnd_x : HWND;
      pszFileName : LPWSTR;
      cchFileNameMax : UINT
   ) return UINT;
   pragma import (Cpp,GetWindowModuleFileNameW,"GetWindowModuleFileNameW");
   type tagCURSORINFO is record
      cbSize : DWORD;
      flags : DWORD;
      hCursor_x : HCURSOR;
      ptScreenPos : POINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCURSORINFO);
   for tagCURSORINFO use record
      cbSize at 0 range 0..31;
      flags at 0 range 32..63;
      hCursor_x at 0 range 64..127;
      ptScreenPos at 0 range 128..191;
   end record;
   for tagCURSORINFO'Size use 192;
   for tagCURSORINFO'Alignment use 8;
   subtype CURSORINFO is tagCURSORINFO;
   type PCURSORINFO is access all tagCURSORINFO;
   type LPCURSORINFO is access all tagCURSORINFO;
   function GetCursorInfo(
      pci : PCURSORINFO
   ) return BOOL;
   pragma import (Cpp,GetCursorInfo,"GetCursorInfo");
   type tagWINDOWINFO is record
      cbSize : DWORD;
      rcWindow : RECT;
      rcClient : RECT;
      dwStyle : DWORD;
      dwExStyle : DWORD;
      dwWindowStatus : DWORD;
      cxWindowBorders : UINT;
      cyWindowBorders : UINT;
      atomWindowType : ATOM;
      wCreatorVersion : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagWINDOWINFO);
   for tagWINDOWINFO use record
      cbSize at 0 range 0..31;
      rcWindow at 0 range 32..159;
      rcClient at 0 range 160..287;
      dwStyle at 0 range 288..319;
      dwExStyle at 0 range 320..351;
      dwWindowStatus at 0 range 352..383;
      cxWindowBorders at 0 range 384..415;
      cyWindowBorders at 0 range 416..447;
      atomWindowType at 0 range 448..463;
      wCreatorVersion at 0 range 464..479;
   end record;
   for tagWINDOWINFO'Size use 480;
   for tagWINDOWINFO'Alignment use 4;
   subtype WINDOWINFO is tagWINDOWINFO;
   type PWINDOWINFO is access all tagWINDOWINFO;
   type LPWINDOWINFO is access all tagWINDOWINFO;
   function GetWindowInfo(
      hwnd_x : HWND;
      pwi : PWINDOWINFO
   ) return BOOL;
   pragma import (Cpp,GetWindowInfo,"GetWindowInfo");
   type tagTITLEBARINFO_rgstate_Array is array(1..6) of DWORD; -- Auto Generated Dependancy
   type tagTITLEBARINFO is record
      cbSize : DWORD;
      rcTitleBar : RECT;
      rgstate : tagTITLEBARINFO_rgstate_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTITLEBARINFO);
   for tagTITLEBARINFO use record
      cbSize at 0 range 0..31;
      rcTitleBar at 0 range 32..159;
      rgstate at 0 range 160..351;
   end record;
   for tagTITLEBARINFO'Size use 352;
   for tagTITLEBARINFO'Alignment use 4;
   subtype TITLEBARINFO is tagTITLEBARINFO;
   type PTITLEBARINFO is access all tagTITLEBARINFO;
   type LPTITLEBARINFO is access all tagTITLEBARINFO;
   function GetTitleBarInfo(
      hwnd_x : HWND;
      pti : PTITLEBARINFO
   ) return BOOL;
   pragma import (Cpp,GetTitleBarInfo,"GetTitleBarInfo");
   type tagTITLEBARINFOEX_rgstate_Array is array(1..6) of DWORD; -- Auto Generated Dependancy
   type tagTITLEBARINFOEX_rgrect_Array is array(1..6) of RECT; -- Auto Generated Dependancy
   type tagTITLEBARINFOEX is record
      cbSize : DWORD;
      rcTitleBar : RECT;
      rgstate : tagTITLEBARINFOEX_rgstate_Array;
      rgrect : tagTITLEBARINFOEX_rgrect_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTITLEBARINFOEX);
   for tagTITLEBARINFOEX use record
      cbSize at 0 range 0..31;
      rcTitleBar at 0 range 32..159;
      rgstate at 0 range 160..351;
      rgrect at 0 range 352..1119;
   end record;
   for tagTITLEBARINFOEX'Size use 1120;
   for tagTITLEBARINFOEX'Alignment use 4;
   subtype TITLEBARINFOEX is tagTITLEBARINFOEX;
   type PTITLEBARINFOEX is access all tagTITLEBARINFOEX;
   type LPTITLEBARINFOEX is access all tagTITLEBARINFOEX;
   type tagMENUBARINFO is record
      cbSize : DWORD;
      rcBar : RECT;
      hMenu_x : HMENU;
      hwndMenu : HWND;
      fBarFocused : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fFocused : Interfaces.C.Extensions.Unsigned_63; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,tagMENUBARINFO);
   for tagMENUBARINFO use record
      cbSize at 0 range 0..31;
      rcBar at 0 range 32..159;
      hMenu_x at 0 range 192..255;
      hwndMenu at 0 range 256..319;
      fBarFocused at 0 range 320..320;
      fFocused at 0 range 321..383;
   end record;
   for tagMENUBARINFO'Size use 384;
   for tagMENUBARINFO'Alignment use 8;
   subtype MENUBARINFO is tagMENUBARINFO;
   type PMENUBARINFO is access all tagMENUBARINFO;
   type LPMENUBARINFO is access all tagMENUBARINFO;
   function GetMenuBarInfo(
      hwnd_x : HWND;
      idObject : LONG;
      idItem : LONG;
      pmbi : PMENUBARINFO
   ) return BOOL;
   pragma import (Cpp,GetMenuBarInfo,"GetMenuBarInfo");
   type tagSCROLLBARINFO_rgstate_Array is array(1..6) of DWORD; -- Auto Generated Dependancy
   type tagSCROLLBARINFO is record
      cbSize : DWORD;
      rcScrollBar : RECT;
      dxyLineButton : Interfaces.C.Int;
      xyThumbTop : Interfaces.C.Int;
      xyThumbBottom : Interfaces.C.Int;
      reserved : Interfaces.C.Int;
      rgstate : tagSCROLLBARINFO_rgstate_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSCROLLBARINFO);
   for tagSCROLLBARINFO use record
      cbSize at 0 range 0..31;
      rcScrollBar at 0 range 32..159;
      dxyLineButton at 0 range 160..191;
      xyThumbTop at 0 range 192..223;
      xyThumbBottom at 0 range 224..255;
      reserved at 0 range 256..287;
      rgstate at 0 range 288..479;
   end record;
   for tagSCROLLBARINFO'Size use 480;
   for tagSCROLLBARINFO'Alignment use 4;
   subtype SCROLLBARINFO is tagSCROLLBARINFO;
   type PSCROLLBARINFO is access all tagSCROLLBARINFO;
   type LPSCROLLBARINFO is access all tagSCROLLBARINFO;
   function GetScrollBarInfo(
      hwnd_x : HWND;
      idObject : LONG;
      psbi : PSCROLLBARINFO
   ) return BOOL;
   pragma import (Cpp,GetScrollBarInfo,"GetScrollBarInfo");
   type tagCOMBOBOXINFO is record
      cbSize : DWORD;
      rcItem : RECT;
      rcButton : RECT;
      stateButton : DWORD;
      hwndCombo : HWND;
      hwndItem : HWND;
      hwndList : HWND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCOMBOBOXINFO);
   for tagCOMBOBOXINFO use record
      cbSize at 0 range 0..31;
      rcItem at 0 range 32..159;
      rcButton at 0 range 160..287;
      stateButton at 0 range 288..319;
      hwndCombo at 0 range 320..383;
      hwndItem at 0 range 384..447;
      hwndList at 0 range 448..511;
   end record;
   for tagCOMBOBOXINFO'Size use 512;
   for tagCOMBOBOXINFO'Alignment use 8;
   subtype COMBOBOXINFO is tagCOMBOBOXINFO;
   type PCOMBOBOXINFO is access all tagCOMBOBOXINFO;
   type LPCOMBOBOXINFO is access all tagCOMBOBOXINFO;
   function GetComboBoxInfo(
      hwndCombo : HWND;
      pcbi : PCOMBOBOXINFO
   ) return BOOL;
   pragma import (Cpp,GetComboBoxInfo,"GetComboBoxInfo");
   function GetAncestor(
      hwnd_x : HWND;
      gaFlags : UINT
   ) return HWND;
   pragma import (Cpp,GetAncestor,"GetAncestor");
   function RealChildWindowFromPoint(
      hwndParent : HWND;
      ptParentClientCoords : POINT
   ) return HWND;
   pragma import (Cpp,RealChildWindowFromPoint,"RealChildWindowFromPoint");
   function RealGetWindowClassA(
      hwnd_x : HWND;
      ptszClassName : LPSTR;
      cchClassNameMax : UINT
   ) return UINT;
   pragma import (Cpp,RealGetWindowClassA,"RealGetWindowClassA");
   function RealGetWindowClassW(
      hwnd_x : HWND;
      ptszClassName : LPWSTR;
      cchClassNameMax : UINT
   ) return UINT;
   pragma import (Cpp,RealGetWindowClassW,"RealGetWindowClassW");
   type tagALTTABINFO is record
      cbSize : DWORD;
      cItems : Interfaces.C.Int;
      cColumns : Interfaces.C.Int;
      cRows : Interfaces.C.Int;
      iColFocus : Interfaces.C.Int;
      iRowFocus : Interfaces.C.Int;
      cxItem : Interfaces.C.Int;
      cyItem : Interfaces.C.Int;
      ptStart : POINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagALTTABINFO);
   for tagALTTABINFO use record
      cbSize at 0 range 0..31;
      cItems at 0 range 32..63;
      cColumns at 0 range 64..95;
      cRows at 0 range 96..127;
      iColFocus at 0 range 128..159;
      iRowFocus at 0 range 160..191;
      cxItem at 0 range 192..223;
      cyItem at 0 range 224..255;
      ptStart at 0 range 256..319;
   end record;
   for tagALTTABINFO'Size use 320;
   for tagALTTABINFO'Alignment use 4;
   subtype ALTTABINFO is tagALTTABINFO;
   type PALTTABINFO is access all tagALTTABINFO;
   type LPALTTABINFO is access all tagALTTABINFO;
   function GetAltTabInfoA(
      hwnd_x : HWND;
      iItem : Interfaces.C.Int;
      pati : PALTTABINFO;
      pszItemText : LPSTR;
      cchItemText : UINT
   ) return BOOL;
   pragma import (Cpp,GetAltTabInfoA,"GetAltTabInfoA");
   function GetAltTabInfoW(
      hwnd_x : HWND;
      iItem : Interfaces.C.Int;
      pati : PALTTABINFO;
      pszItemText : LPWSTR;
      cchItemText : UINT
   ) return BOOL;
   pragma import (Cpp,GetAltTabInfoW,"GetAltTabInfoW");
   function GetListBoxInfo(
      hwnd_x : HWND
   ) return DWORD;
   pragma import (Cpp,GetListBoxInfo,"GetListBoxInfo");
   function LockWorkStation return BOOL;
   pragma import (Cpp,LockWorkStation,"LockWorkStation");
   function UserHandleGrantAccess(
      hUserHandle : HANDLE;
      hJob : HANDLE;
      bGrant : BOOL
   ) return BOOL;
   pragma import (Cpp,UserHandleGrantAccess,"UserHandleGrantAccess");
   type HRAWINPUT_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HRAWINPUT_x);
   for HRAWINPUT_x use record
      unused at 0 range 0..31;
   end record;
   for HRAWINPUT_x'Size use 32;
   for HRAWINPUT_x'Alignment use 4;
   type HRAWINPUT is access all HRAWINPUT_x;
   type tagRAWINPUTHEADER is record
      dwType : DWORD;
      dwSize : DWORD;
      hDevice : HANDLE;
      wParam_x : WPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRAWINPUTHEADER);
   for tagRAWINPUTHEADER use record
      dwType at 0 range 0..31;
      dwSize at 0 range 32..63;
      hDevice at 0 range 64..127;
      wParam_x at 0 range 128..191;
   end record;
   for tagRAWINPUTHEADER'Size use 192;
   for tagRAWINPUTHEADER'Alignment use 8;
   subtype RAWINPUTHEADER is tagRAWINPUTHEADER;
   type PRAWINPUTHEADER is access all tagRAWINPUTHEADER;
   type LPRAWINPUTHEADER is access all tagRAWINPUTHEADER;
   type Anonymous_Record_194 is record
      usButtonFlags : USHORT;
      usButtonData : USHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_194);
   for Anonymous_Record_194 use record
      usButtonFlags at 0 range 0..15;
      usButtonData at 0 range 16..31;
   end record;
   for Anonymous_Record_194'Size use 32;
   for Anonymous_Record_194'Alignment use 2;
   type Anonymous_Record_193 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            ulButtons : ULONG;
         when others => 
            field_1 : Anonymous_Record_194;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_193);
   pragma Unchecked_Union (Anonymous_Record_193);
   for Anonymous_Record_193'Size use 32;
   for Anonymous_Record_193'Alignment use 4;
   type tagRAWMOUSE is record
      usFlags : USHORT;
      field_1 : Anonymous_Record_193;
      ulRawButtons : ULONG;
      lLastX : LONG;
      lLastY : LONG;
      ulExtraInformation : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRAWMOUSE);
   for tagRAWMOUSE use record
      usFlags at 0 range 0..15;
      field_1 at 0 range 16..47;
      ulRawButtons at 0 range 64..95;
      lLastX at 0 range 96..127;
      lLastY at 0 range 128..159;
      ulExtraInformation at 0 range 160..191;
   end record;
   for tagRAWMOUSE'Size use 192;
   for tagRAWMOUSE'Alignment use 4;
   subtype RAWMOUSE is tagRAWMOUSE;
   type PRAWMOUSE is access all tagRAWMOUSE;
   type LPRAWMOUSE is access all tagRAWMOUSE;
   type tagRAWKEYBOARD is record
      MakeCode : USHORT;
      Flags : USHORT;
      Reserved : USHORT;
      VKey : USHORT;
      Message : UINT;
      ExtraInformation : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRAWKEYBOARD);
   for tagRAWKEYBOARD use record
      MakeCode at 0 range 0..15;
      Flags at 0 range 16..31;
      Reserved at 0 range 32..47;
      VKey at 0 range 48..63;
      Message at 0 range 64..95;
      ExtraInformation at 0 range 96..127;
   end record;
   for tagRAWKEYBOARD'Size use 128;
   for tagRAWKEYBOARD'Alignment use 4;
   subtype RAWKEYBOARD is tagRAWKEYBOARD;
   type PRAWKEYBOARD is access all tagRAWKEYBOARD;
   type LPRAWKEYBOARD is access all tagRAWKEYBOARD;
   type tagRAWHID_bRawData_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagRAWHID is record
      dwSizeHid : DWORD;
      dwCount : DWORD;
      bRawData : tagRAWHID_bRawData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRAWHID);
   for tagRAWHID use record
      dwSizeHid at 0 range 0..31;
      dwCount at 0 range 32..63;
      bRawData at 0 range 64..71;
   end record;
   for tagRAWHID'Size use 96;
   for tagRAWHID'Alignment use 4;
   subtype RAWHID is tagRAWHID;
   type PRAWHID is access all tagRAWHID;
   type LPRAWHID is access all tagRAWHID;
   type Anonymous_Record_195 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            mouse : RAWMOUSE;
         when 1 =>
            keyboard : RAWKEYBOARD;
         when others => 
            hid : RAWHID;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_195);
   pragma Unchecked_Union (Anonymous_Record_195);
   for Anonymous_Record_195'Size use 192;
   for Anonymous_Record_195'Alignment use 4;
   type tagRAWINPUT is record
      header : RAWINPUTHEADER;
      field_1 : Anonymous_Record_195;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRAWINPUT);
   for tagRAWINPUT use record
      header at 0 range 0..191;
      field_1 at 0 range 192..383;
   end record;
   for tagRAWINPUT'Size use 384;
   for tagRAWINPUT'Alignment use 8;
   subtype RAWINPUT is tagRAWINPUT;
   type PRAWINPUT is access all tagRAWINPUT;
   type LPRAWINPUT is access all tagRAWINPUT;
   function GetRawInputData(
      hRawInput_x : HRAWINPUT;
      uiCommand : UINT;
      pData : LPVOID;
      pcbSize : PUINT;
      cbSizeHeader : UINT
   ) return UINT;
   pragma import (Cpp,GetRawInputData,"GetRawInputData");
   type tagRID_DEVICE_INFO_MOUSE is record
      dwId : DWORD;
      dwNumberOfButtons : DWORD;
      dwSampleRate : DWORD;
      fHasHorizontalWheel : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRID_DEVICE_INFO_MOUSE);
   for tagRID_DEVICE_INFO_MOUSE use record
      dwId at 0 range 0..31;
      dwNumberOfButtons at 0 range 32..63;
      dwSampleRate at 0 range 64..95;
      fHasHorizontalWheel at 0 range 96..127;
   end record;
   for tagRID_DEVICE_INFO_MOUSE'Size use 128;
   for tagRID_DEVICE_INFO_MOUSE'Alignment use 4;
   subtype RID_DEVICE_INFO_MOUSE is tagRID_DEVICE_INFO_MOUSE;
   type PRID_DEVICE_INFO_MOUSE is access all tagRID_DEVICE_INFO_MOUSE;
   type tagRID_DEVICE_INFO_KEYBOARD is record
      dwType : DWORD;
      dwSubType : DWORD;
      dwKeyboardMode : DWORD;
      dwNumberOfFunctionKeys : DWORD;
      dwNumberOfIndicators : DWORD;
      dwNumberOfKeysTotal : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRID_DEVICE_INFO_KEYBOARD);
   for tagRID_DEVICE_INFO_KEYBOARD use record
      dwType at 0 range 0..31;
      dwSubType at 0 range 32..63;
      dwKeyboardMode at 0 range 64..95;
      dwNumberOfFunctionKeys at 0 range 96..127;
      dwNumberOfIndicators at 0 range 128..159;
      dwNumberOfKeysTotal at 0 range 160..191;
   end record;
   for tagRID_DEVICE_INFO_KEYBOARD'Size use 192;
   for tagRID_DEVICE_INFO_KEYBOARD'Alignment use 4;
   subtype RID_DEVICE_INFO_KEYBOARD is tagRID_DEVICE_INFO_KEYBOARD;
   type PRID_DEVICE_INFO_KEYBOARD is access all tagRID_DEVICE_INFO_KEYBOARD;
   type tagRID_DEVICE_INFO_HID is record
      dwVendorId : DWORD;
      dwProductId : DWORD;
      dwVersionNumber : DWORD;
      usUsagePage : USHORT;
      usUsage : USHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRID_DEVICE_INFO_HID);
   for tagRID_DEVICE_INFO_HID use record
      dwVendorId at 0 range 0..31;
      dwProductId at 0 range 32..63;
      dwVersionNumber at 0 range 64..95;
      usUsagePage at 0 range 96..111;
      usUsage at 0 range 112..127;
   end record;
   for tagRID_DEVICE_INFO_HID'Size use 128;
   for tagRID_DEVICE_INFO_HID'Alignment use 4;
   subtype RID_DEVICE_INFO_HID is tagRID_DEVICE_INFO_HID;
   type PRID_DEVICE_INFO_HID is access all tagRID_DEVICE_INFO_HID;
   type Anonymous_Record_196 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            mouse : RID_DEVICE_INFO_MOUSE;
         when 1 =>
            keyboard : RID_DEVICE_INFO_KEYBOARD;
         when others => 
            hid : RID_DEVICE_INFO_HID;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_196);
   pragma Unchecked_Union (Anonymous_Record_196);
   for Anonymous_Record_196'Size use 192;
   for Anonymous_Record_196'Alignment use 4;
   type tagRID_DEVICE_INFO is record
      cbSize : DWORD;
      dwType : DWORD;
      field_1 : Anonymous_Record_196;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRID_DEVICE_INFO);
   for tagRID_DEVICE_INFO use record
      cbSize at 0 range 0..31;
      dwType at 0 range 32..63;
      field_1 at 0 range 64..255;
   end record;
   for tagRID_DEVICE_INFO'Size use 256;
   for tagRID_DEVICE_INFO'Alignment use 4;
   subtype RID_DEVICE_INFO is tagRID_DEVICE_INFO;
   type PRID_DEVICE_INFO is access all tagRID_DEVICE_INFO;
   type LPRID_DEVICE_INFO is access all tagRID_DEVICE_INFO;
   function GetRawInputDeviceInfoA(
      hDevice : HANDLE;
      uiCommand : UINT;
      pData : LPVOID;
      pcbSize : PUINT
   ) return UINT;
   pragma import (Cpp,GetRawInputDeviceInfoA,"GetRawInputDeviceInfoA");
   function GetRawInputDeviceInfoW(
      hDevice : HANDLE;
      uiCommand : UINT;
      pData : LPVOID;
      pcbSize : PUINT
   ) return UINT;
   pragma import (Cpp,GetRawInputDeviceInfoW,"GetRawInputDeviceInfoW");
   function GetRawInputBuffer(
      pData : PRAWINPUT;
      pcbSize : PUINT;
      cbSizeHeader : UINT
   ) return UINT;
   pragma import (Cpp,GetRawInputBuffer,"GetRawInputBuffer");
   type tagRAWINPUTDEVICE is record
      usUsagePage : USHORT;
      usUsage : USHORT;
      dwFlags : DWORD;
      hwndTarget : HWND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRAWINPUTDEVICE);
   for tagRAWINPUTDEVICE use record
      usUsagePage at 0 range 0..15;
      usUsage at 0 range 16..31;
      dwFlags at 0 range 32..63;
      hwndTarget at 0 range 64..127;
   end record;
   for tagRAWINPUTDEVICE'Size use 128;
   for tagRAWINPUTDEVICE'Alignment use 8;
   subtype RAWINPUTDEVICE is tagRAWINPUTDEVICE;
   type PRAWINPUTDEVICE is access all tagRAWINPUTDEVICE;
   type LPRAWINPUTDEVICE is access all tagRAWINPUTDEVICE;
   type PCRAWINPUTDEVICE is access constant RAWINPUTDEVICE;
   function RegisterRawInputDevices(
      pRawInputDevices : PCRAWINPUTDEVICE;
      uiNumDevices : UINT;
      cbSize : UINT
   ) return BOOL;
   pragma import (Cpp,RegisterRawInputDevices,"RegisterRawInputDevices");
   function GetRegisteredRawInputDevices(
      pRawInputDevices : PRAWINPUTDEVICE;
      puiNumDevices : PUINT;
      cbSize : UINT
   ) return UINT;
   pragma import (Cpp,GetRegisteredRawInputDevices,"GetRegisteredRawInputDevices");
   type tagRAWINPUTDEVICELIST is record
      hDevice : HANDLE;
      dwType : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRAWINPUTDEVICELIST);
   for tagRAWINPUTDEVICELIST use record
      hDevice at 0 range 0..63;
      dwType at 0 range 64..95;
   end record;
   for tagRAWINPUTDEVICELIST'Size use 128;
   for tagRAWINPUTDEVICELIST'Alignment use 8;
   subtype RAWINPUTDEVICELIST is tagRAWINPUTDEVICELIST;
   type PRAWINPUTDEVICELIST is access all tagRAWINPUTDEVICELIST;
   function GetRawInputDeviceList(
      pRawInputDeviceList_x : PRAWINPUTDEVICELIST;
      puiNumDevices : PUINT;
      cbSize : UINT
   ) return UINT;
   pragma import (Cpp,GetRawInputDeviceList,"GetRawInputDeviceList");
   function DefRawInputProc(
      paRawInput : access PRAWINPUT;
      nInput : INT;
      cbSizeHeader : UINT
   ) return LRESULT;
   pragma import (Cpp,DefRawInputProc,"DefRawInputProc");
   type tagPOINTER_DEVICE_TYPE is (
      POINTER_DEVICE_TYPE_MAX,
      POINTER_DEVICE_TYPE_INTEGRATED_PEN,
      POINTER_DEVICE_TYPE_EXTERNAL_PEN,
      POINTER_DEVICE_TYPE_TOUCH,
      POINTER_DEVICE_TYPE_TOUCH_PAD
   );
   for tagPOINTER_DEVICE_TYPE use (
      POINTER_DEVICE_TYPE_MAX => -1,
      POINTER_DEVICE_TYPE_INTEGRATED_PEN => 1,
      POINTER_DEVICE_TYPE_EXTERNAL_PEN => 2,
      POINTER_DEVICE_TYPE_TOUCH => 3,
      POINTER_DEVICE_TYPE_TOUCH_PAD => 4
   );
   for tagPOINTER_DEVICE_TYPE'Size use 32;
   subtype POINTER_DEVICE_TYPE is tagPOINTER_DEVICE_TYPE;
   type tagPOINTER_DEVICE_INFO_productString_Array is array(1..520) of WCHAR; -- Auto Generated Dependancy
   type tagPOINTER_DEVICE_INFO is record
      displayOrientation : DWORD;
      device : HANDLE;
      pointerDeviceType : POINTER_DEVICE_TYPE;
      monitor : HMONITOR;
      startingCursorId : ULONG;
      maxActiveContacts : USHORT;
      productString : tagPOINTER_DEVICE_INFO_productString_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOINTER_DEVICE_INFO);
   for tagPOINTER_DEVICE_INFO use record
      displayOrientation at 0 range 0..31;
      device at 0 range 64..127;
      pointerDeviceType at 0 range 128..159;
      monitor at 0 range 192..255;
      startingCursorId at 0 range 256..287;
      maxActiveContacts at 0 range 288..303;
      productString at 0 range 304..8623;
   end record;
   for tagPOINTER_DEVICE_INFO'Size use 8640;
   for tagPOINTER_DEVICE_INFO'Alignment use 8;
   subtype POINTER_DEVICE_INFO is tagPOINTER_DEVICE_INFO;
   type tagPOINTER_DEVICE_PROPERTY is record
      logicalMin : INT32;
      logicalMax : INT32;
      physicalMin : INT32;
      physicalMax : INT32;
      unit : UINT32;
      unitExponent : UINT32;
      usagePageId : USHORT;
      usageId : USHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOINTER_DEVICE_PROPERTY);
   for tagPOINTER_DEVICE_PROPERTY use record
      logicalMin at 0 range 0..31;
      logicalMax at 0 range 32..63;
      physicalMin at 0 range 64..95;
      physicalMax at 0 range 96..127;
      unit at 0 range 128..159;
      unitExponent at 0 range 160..191;
      usagePageId at 0 range 192..207;
      usageId at 0 range 208..223;
   end record;
   for tagPOINTER_DEVICE_PROPERTY'Size use 224;
   for tagPOINTER_DEVICE_PROPERTY'Alignment use 4;
   subtype POINTER_DEVICE_PROPERTY is tagPOINTER_DEVICE_PROPERTY;
   type tagPOINTER_DEVICE_CURSOR_TYPE is (
      POINTER_DEVICE_CURSOR_TYPE_MAX,
      POINTER_DEVICE_CURSOR_TYPE_UNKNOWN,
      POINTER_DEVICE_CURSOR_TYPE_TIP,
      POINTER_DEVICE_CURSOR_TYPE_ERASER
   );
   for tagPOINTER_DEVICE_CURSOR_TYPE use (
      POINTER_DEVICE_CURSOR_TYPE_MAX => -1,
      POINTER_DEVICE_CURSOR_TYPE_UNKNOWN => 0,
      POINTER_DEVICE_CURSOR_TYPE_TIP => 1,
      POINTER_DEVICE_CURSOR_TYPE_ERASER => 2
   );
   for tagPOINTER_DEVICE_CURSOR_TYPE'Size use 32;
   subtype POINTER_DEVICE_CURSOR_TYPE is tagPOINTER_DEVICE_CURSOR_TYPE;
   type tagPOINTER_DEVICE_CURSOR_INFO is record
      cursorId : UINT32;
      cursor : POINTER_DEVICE_CURSOR_TYPE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOINTER_DEVICE_CURSOR_INFO);
   for tagPOINTER_DEVICE_CURSOR_INFO use record
      cursorId at 0 range 0..31;
      cursor at 0 range 32..63;
   end record;
   for tagPOINTER_DEVICE_CURSOR_INFO'Size use 64;
   for tagPOINTER_DEVICE_CURSOR_INFO'Alignment use 4;
   subtype POINTER_DEVICE_CURSOR_INFO is tagPOINTER_DEVICE_CURSOR_INFO;
   function GetPointerDevices(
      deviceCount : access UINT32;
      pointerDevices : access POINTER_DEVICE_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerDevices,"GetPointerDevices");
   function GetPointerDevice(
      device : HANDLE;
      pointerDevice : access POINTER_DEVICE_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerDevice,"GetPointerDevice");
   function GetPointerDeviceProperties(
      device : HANDLE;
      propertyCount : access UINT32;
      pointerProperties : access POINTER_DEVICE_PROPERTY
   ) return BOOL;
   pragma import (Cpp,GetPointerDeviceProperties,"GetPointerDeviceProperties");
   function RegisterPointerDeviceNotifications(
      window : HWND;
      notifyRange : BOOL
   ) return BOOL;
   pragma import (Cpp,RegisterPointerDeviceNotifications,"RegisterPointerDeviceNotifications");
   function GetPointerDeviceRects(
      device : HANDLE;
      pointerDeviceRect : access RECT;
      displayRect : access RECT
   ) return BOOL;
   pragma import (Cpp,GetPointerDeviceRects,"GetPointerDeviceRects");
   function GetPointerDeviceCursors(
      device : HANDLE;
      cursorCount : access UINT32;
      deviceCursors : access POINTER_DEVICE_CURSOR_INFO
   ) return BOOL;
   pragma import (Cpp,GetPointerDeviceCursors,"GetPointerDeviceCursors");
   function GetRawPointerDeviceData(
      pointerId : UINT32;
      historyCount : UINT32;
      propertiesCount : UINT32;
      pProperties : access POINTER_DEVICE_PROPERTY;
      pValues : access LONG
   ) return BOOL;
   pragma import (Cpp,GetRawPointerDeviceData,"GetRawPointerDeviceData");
   function ChangeWindowMessageFilter(
      message : UINT;
      dwFlag : DWORD
   ) return BOOL;
   pragma import (Cpp,ChangeWindowMessageFilter,"ChangeWindowMessageFilter");
   type tagCHANGEFILTERSTRUCT is record
      cbSize : DWORD;
      ExtStatus : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCHANGEFILTERSTRUCT);
   for tagCHANGEFILTERSTRUCT use record
      cbSize at 0 range 0..31;
      ExtStatus at 0 range 32..63;
   end record;
   for tagCHANGEFILTERSTRUCT'Size use 64;
   for tagCHANGEFILTERSTRUCT'Alignment use 4;
   subtype CHANGEFILTERSTRUCT is tagCHANGEFILTERSTRUCT;
   type PCHANGEFILTERSTRUCT is access all tagCHANGEFILTERSTRUCT;
   function ChangeWindowMessageFilterEx(
      hwnd_x : HWND;
      message : UINT;
      action : DWORD;
      pChangeFilterStruct_x : PCHANGEFILTERSTRUCT
   ) return BOOL;
   pragma import (Cpp,ChangeWindowMessageFilterEx,"ChangeWindowMessageFilterEx");
   type HGESTUREINFO_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HGESTUREINFO_x);
   for HGESTUREINFO_x use record
      unused at 0 range 0..31;
   end record;
   for HGESTUREINFO_x'Size use 32;
   for HGESTUREINFO_x'Alignment use 4;
   type HGESTUREINFO is access all HGESTUREINFO_x;
   type tagGESTUREINFO is record
      cbSize : UINT;
      dwFlags : DWORD;
      dwID : DWORD;
      hwndTarget : HWND;
      ptsLocation : POINTS;
      dwInstanceID : DWORD;
      dwSequenceID : DWORD;
      ullArguments : ULONGLONG;
      cbExtraArgs : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagGESTUREINFO);
   for tagGESTUREINFO use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      dwID at 0 range 64..95;
      hwndTarget at 0 range 128..191;
      ptsLocation at 0 range 192..223;
      dwInstanceID at 0 range 224..255;
      dwSequenceID at 0 range 256..287;
      ullArguments at 0 range 320..383;
      cbExtraArgs at 0 range 384..415;
   end record;
   for tagGESTUREINFO'Size use 448;
   for tagGESTUREINFO'Alignment use 8;
   subtype GESTUREINFO is tagGESTUREINFO;
   type PGESTUREINFO is access all tagGESTUREINFO;
   type PCGESTUREINFO is access constant GESTUREINFO;
   type tagGESTURENOTIFYSTRUCT is record
      cbSize : UINT;
      dwFlags : DWORD;
      hwndTarget : HWND;
      ptsLocation : POINTS;
      dwInstanceID : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagGESTURENOTIFYSTRUCT);
   for tagGESTURENOTIFYSTRUCT use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hwndTarget at 0 range 64..127;
      ptsLocation at 0 range 128..159;
      dwInstanceID at 0 range 160..191;
   end record;
   for tagGESTURENOTIFYSTRUCT'Size use 192;
   for tagGESTURENOTIFYSTRUCT'Alignment use 8;
   subtype GESTURENOTIFYSTRUCT is tagGESTURENOTIFYSTRUCT;
   type PGESTURENOTIFYSTRUCT is access all tagGESTURENOTIFYSTRUCT;
   function GetGestureInfo(
      hGestureInfo_x : HGESTUREINFO;
      pGestureInfo_x : PGESTUREINFO
   ) return BOOL;
   pragma import (Cpp,GetGestureInfo,"GetGestureInfo");
   function GetGestureExtraArgs(
      hGestureInfo_x : HGESTUREINFO;
      cbExtraArgs : UINT;
      pExtraArgs : PBYTE
   ) return BOOL;
   pragma import (Cpp,GetGestureExtraArgs,"GetGestureExtraArgs");
   function CloseGestureInfoHandle(
      hGestureInfo_x : HGESTUREINFO
   ) return BOOL;
   pragma import (Cpp,CloseGestureInfoHandle,"CloseGestureInfoHandle");
   type tagGESTURECONFIG is record
      dwID : DWORD;
      dwWant : DWORD;
      dwBlock : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagGESTURECONFIG);
   for tagGESTURECONFIG use record
      dwID at 0 range 0..31;
      dwWant at 0 range 32..63;
      dwBlock at 0 range 64..95;
   end record;
   for tagGESTURECONFIG'Size use 96;
   for tagGESTURECONFIG'Alignment use 4;
   subtype GESTURECONFIG is tagGESTURECONFIG;
   type PGESTURECONFIG is access all tagGESTURECONFIG;
   function SetGestureConfig(
      hwnd_x : HWND;
      dwReserved : DWORD;
      cIDs : UINT;
      pGestureConfig_x : PGESTURECONFIG;
      cbSize : UINT
   ) return BOOL;
   pragma import (Cpp,SetGestureConfig,"SetGestureConfig");
   function GetGestureConfig(
      hwnd_x : HWND;
      dwReserved : DWORD;
      dwFlags : DWORD;
      pcIDs : PUINT;
      pGestureConfig_x : PGESTURECONFIG;
      cbSize : UINT
   ) return BOOL;
   pragma import (Cpp,GetGestureConfig,"GetGestureConfig");
   function ShutdownBlockReasonCreate(
      hWnd_x : HWND;
      pwszReason : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,ShutdownBlockReasonCreate,"ShutdownBlockReasonCreate");
   function ShutdownBlockReasonQuery(
      hWnd_x : HWND;
      pwszBuff : LPWSTR;
      pcchBuff : access DWORD
   ) return BOOL;
   pragma import (Cpp,ShutdownBlockReasonQuery,"ShutdownBlockReasonQuery");
   function ShutdownBlockReasonDestroy(
      hWnd_x : HWND
   ) return BOOL;
   pragma import (Cpp,ShutdownBlockReasonDestroy,"ShutdownBlockReasonDestroy");
   type tagINPUT_MESSAGE_DEVICE_TYPE is (
      IMDT_UNAVAILABLE,
      IMDT_KEYBOARD,
      IMDT_MOUSE,
      IMDT_TOUCH,
      IMDT_PEN,
      IMDT_TOUCHPAD
   );
   for tagINPUT_MESSAGE_DEVICE_TYPE use (
      IMDT_UNAVAILABLE => 0,
      IMDT_KEYBOARD => 1,
      IMDT_MOUSE => 2,
      IMDT_TOUCH => 4,
      IMDT_PEN => 8,
      IMDT_TOUCHPAD => 16
   );
   for tagINPUT_MESSAGE_DEVICE_TYPE'Size use 32;
   subtype INPUT_MESSAGE_DEVICE_TYPE is tagINPUT_MESSAGE_DEVICE_TYPE;
   type tagINPUT_MESSAGE_ORIGIN_ID is (
      IMO_UNAVAILABLE,
      IMO_HARDWARE,
      IMO_INJECTED,
      IMO_SYSTEM
   );
   for tagINPUT_MESSAGE_ORIGIN_ID use (
      IMO_UNAVAILABLE => 0,
      IMO_HARDWARE => 1,
      IMO_INJECTED => 2,
      IMO_SYSTEM => 4
   );
   for tagINPUT_MESSAGE_ORIGIN_ID'Size use 32;
   subtype INPUT_MESSAGE_ORIGIN_ID is tagINPUT_MESSAGE_ORIGIN_ID;
   type tagINPUT_MESSAGE_SOURCE is record
      deviceType : INPUT_MESSAGE_DEVICE_TYPE;
      originId : INPUT_MESSAGE_ORIGIN_ID;
   end record;
   pragma Convention (C_Pass_By_Copy,tagINPUT_MESSAGE_SOURCE);
   for tagINPUT_MESSAGE_SOURCE use record
      deviceType at 0 range 0..31;
      originId at 0 range 32..63;
   end record;
   for tagINPUT_MESSAGE_SOURCE'Size use 64;
   for tagINPUT_MESSAGE_SOURCE'Alignment use 4;
   subtype INPUT_MESSAGE_SOURCE is tagINPUT_MESSAGE_SOURCE;
   function GetCurrentInputMessageSource(
      inputMessageSource : access INPUT_MESSAGE_SOURCE
   ) return BOOL;
   pragma import (Cpp,GetCurrentInputMessageSource,"GetCurrentInputMessageSource");
   function GetCIMSSM(
      inputMessageSource : access INPUT_MESSAGE_SOURCE
   ) return BOOL;
   pragma import (Cpp,GetCIMSSM,"GetCIMSSM");
   type tagAR_STATE is (
      AR_ENABLED,
      AR_DISABLED,
      AR_SUPPRESSED,
      AR_REMOTESESSION,
      AR_MULTIMON,
      AR_NOSENSOR,
      AR_NOT_SUPPORTED,
      AR_DOCKED,
      AR_LAPTOP
   );
   for tagAR_STATE use (
      AR_ENABLED => 0,
      AR_DISABLED => 1,
      AR_SUPPRESSED => 2,
      AR_REMOTESESSION => 4,
      AR_MULTIMON => 8,
      AR_NOSENSOR => 16,
      AR_NOT_SUPPORTED => 32,
      AR_DOCKED => 64,
      AR_LAPTOP => 128
   );
   for tagAR_STATE'Size use 32;
   subtype AR_STATE is tagAR_STATE;
   type PAR_STATE is access all tagAR_STATE;
   -- operator|(); -- inlined function not supported
   -- operator|=(); -- inlined function not supported
   -- operator&(); -- inlined function not supported
   -- operator&=(); -- inlined function not supported
   -- operator~(); -- inlined function not supported
   -- operator^(); -- inlined function not supported
   -- operator^=(); -- inlined function not supported
   type ORIENTATION_PREFERENCE is (
      ORIENTATION_PREFERENCE_NONE,
      ORIENTATION_PREFERENCE_LANDSCAPE,
      ORIENTATION_PREFERENCE_PORTRAIT,
      ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED,
      ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED
   );
   for ORIENTATION_PREFERENCE use (
      ORIENTATION_PREFERENCE_NONE => 0,
      ORIENTATION_PREFERENCE_LANDSCAPE => 1,
      ORIENTATION_PREFERENCE_PORTRAIT => 2,
      ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED => 4,
      ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED => 8
   );
   for ORIENTATION_PREFERENCE'Size use 32;
   -- operator|(); -- inlined function not supported
   -- operator|=(); -- inlined function not supported
   -- operator&(); -- inlined function not supported
   -- operator&=(); -- inlined function not supported
   -- operator~(); -- inlined function not supported
   -- operator^(); -- inlined function not supported
   -- operator^=(); -- inlined function not supported
   function GetAutoRotationState(
      pState : PAR_STATE
   ) return BOOL;
   pragma import (Cpp,GetAutoRotationState,"GetAutoRotationState");
   function GetDisplayAutoRotationPreferences(
      pOrientation : access ORIENTATION_PREFERENCE
   ) return BOOL;
   pragma import (Cpp,GetDisplayAutoRotationPreferences,"GetDisplayAutoRotationPreferences");
   function GetDisplayAutoRotationPreferencesByProcessId(
      dwProcessId : DWORD;
      pOrientation : access ORIENTATION_PREFERENCE;
      fRotateScreen : access BOOL
   ) return BOOL;
   pragma import (Cpp,GetDisplayAutoRotationPreferencesByProcessId,"GetDisplayAutoRotationPreferencesByProcessId");
   function SetDisplayAutoRotationPreferences(
      orientation : ORIENTATION_PREFERENCE
   ) return BOOL;
   pragma import (Cpp,SetDisplayAutoRotationPreferences,"SetDisplayAutoRotationPreferences");
   function IsImmersiveProcess(
      hProcess : HANDLE
   ) return BOOL;
   pragma import (Cpp,IsImmersiveProcess,"IsImmersiveProcess");
   function SetProcessRestrictionExemption(
      fEnableExemption : BOOL
   ) return BOOL;
   pragma import (Cpp,SetProcessRestrictionExemption,"SetProcessRestrictionExemption");
   -- #include <winnls.h>
   -- #include <datetimeapi.h>
   function GetDateFormatA(
      Locale : LCID;
      dwFlags : DWORD;
      lpDate : access constant SYSTEMTIME;
      lpFormat : LPCSTR;
      lpDateStr : LPSTR;
      cchDate : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetDateFormatA,"GetDateFormatA");
   function GetDateFormatW(
      Locale : LCID;
      dwFlags : DWORD;
      lpDate : access constant SYSTEMTIME;
      lpFormat : LPCWSTR;
      lpDateStr : LPWSTR;
      cchDate : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetDateFormatW,"GetDateFormatW");
   function GetTimeFormatA(
      Locale : LCID;
      dwFlags : DWORD;
      lpTime : access constant SYSTEMTIME;
      lpFormat : LPCSTR;
      lpTimeStr : LPSTR;
      cchTime : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetTimeFormatA,"GetTimeFormatA");
   function GetTimeFormatW(
      Locale : LCID;
      dwFlags : DWORD;
      lpTime : access constant SYSTEMTIME;
      lpFormat : LPCWSTR;
      lpTimeStr : LPWSTR;
      cchTime : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetTimeFormatW,"GetTimeFormatW");
   function GetTimeFormatEx(
      lpLocaleName : LPCWSTR;
      dwFlags : DWORD;
      lpTime : access constant SYSTEMTIME;
      lpFormat : LPCWSTR;
      lpTimeStr : LPWSTR;
      cchTime : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetTimeFormatEx,"GetTimeFormatEx");
   function GetDateFormatEx(
      lpLocaleName : LPCWSTR;
      dwFlags : DWORD;
      lpDate : access constant SYSTEMTIME;
      lpFormat : LPCWSTR;
      lpDateStr : LPWSTR;
      cchDate : Interfaces.C.Int;
      lpCalendar : LPCWSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetDateFormatEx,"GetDateFormatEx");
   function GetDurationFormatEx(
      lpLocaleName : LPCWSTR;
      dwFlags : DWORD;
      lpDuration : access constant SYSTEMTIME;
      ullDuration : ULONGLONG;
      lpFormat : LPCWSTR;
      lpDurationStr : LPWSTR;
      cchDuration : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetDurationFormatEx,"GetDurationFormatEx");
   -- #include <winnls.h>
   subtype LGRPID is DWORD;
   subtype LCTYPE is DWORD;
   subtype CALTYPE is DWORD;
   subtype CALID is DWORD;
   type cpinfo_x_DefaultChar_Array is array(1..2) of BYTE; -- Auto Generated Dependancy
   type cpinfo_x_LeadByte_Array is array(1..12) of BYTE; -- Auto Generated Dependancy
   type cpinfo_x is record
      MaxCharSize : UINT;
      DefaultChar : cpinfo_x_DefaultChar_Array;
      LeadByte : cpinfo_x_LeadByte_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,cpinfo_x);
   for cpinfo_x use record
      MaxCharSize at 0 range 0..31;
      DefaultChar at 0 range 32..47;
      LeadByte at 0 range 48..143;
   end record;
   for cpinfo_x'Size use 160;
   for cpinfo_x'Alignment use 4;
   subtype CPINFO is cpinfo_x;
   type LPCPINFO is access all cpinfo_x;
   subtype GEOTYPE is DWORD;
   subtype GEOCLASS is DWORD;
   subtype GEOID is LONG;
   type cpinfoexA_x_DefaultChar_Array is array(1..2) of BYTE; -- Auto Generated Dependancy
   type cpinfoexA_x_LeadByte_Array is array(1..12) of BYTE; -- Auto Generated Dependancy
   type cpinfoexA_x_CodePageName_Array is array(1..260) of CHAR; -- Auto Generated Dependancy
   type cpinfoexA_x is record
      MaxCharSize : UINT;
      DefaultChar : cpinfoexA_x_DefaultChar_Array;
      LeadByte : cpinfoexA_x_LeadByte_Array;
      UnicodeDefaultChar : WCHAR;
      CodePage : UINT;
      CodePageName : cpinfoexA_x_CodePageName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,cpinfoexA_x);
   for cpinfoexA_x use record
      MaxCharSize at 0 range 0..31;
      DefaultChar at 0 range 32..47;
      LeadByte at 0 range 48..143;
      UnicodeDefaultChar at 0 range 144..159;
      CodePage at 0 range 160..191;
      CodePageName at 0 range 192..2271;
   end record;
   for cpinfoexA_x'Size use 2272;
   for cpinfoexA_x'Alignment use 4;
   subtype CPINFOEXA is cpinfoexA_x;
   type LPCPINFOEXA is access all cpinfoexA_x;
   type cpinfoexW_x_DefaultChar_Array is array(1..2) of BYTE; -- Auto Generated Dependancy
   type cpinfoexW_x_LeadByte_Array is array(1..12) of BYTE; -- Auto Generated Dependancy
   type cpinfoexW_x_CodePageName_Array is array(1..260) of WCHAR; -- Auto Generated Dependancy
   type cpinfoexW_x is record
      MaxCharSize : UINT;
      DefaultChar : cpinfoexW_x_DefaultChar_Array;
      LeadByte : cpinfoexW_x_LeadByte_Array;
      UnicodeDefaultChar : WCHAR;
      CodePage : UINT;
      CodePageName : cpinfoexW_x_CodePageName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,cpinfoexW_x);
   for cpinfoexW_x use record
      MaxCharSize at 0 range 0..31;
      DefaultChar at 0 range 32..47;
      LeadByte at 0 range 48..143;
      UnicodeDefaultChar at 0 range 144..159;
      CodePage at 0 range 160..191;
      CodePageName at 0 range 192..4351;
   end record;
   for cpinfoexW_x'Size use 4352;
   for cpinfoexW_x'Alignment use 4;
   subtype CPINFOEXW is cpinfoexW_x;
   type LPCPINFOEXW is access all cpinfoexW_x;
   subtype CPINFOEX is CPINFOEXA;
   subtype LPCPINFOEX is LPCPINFOEXA;
   type numberfmtA_x is record
      NumDigits : UINT;
      LeadingZero : UINT;
      Grouping : UINT;
      lpDecimalSep : LPSTR;
      lpThousandSep : LPSTR;
      NegativeOrder : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,numberfmtA_x);
   for numberfmtA_x use record
      NumDigits at 0 range 0..31;
      LeadingZero at 0 range 32..63;
      Grouping at 0 range 64..95;
      lpDecimalSep at 0 range 128..191;
      lpThousandSep at 0 range 192..255;
      NegativeOrder at 0 range 256..287;
   end record;
   for numberfmtA_x'Size use 320;
   for numberfmtA_x'Alignment use 8;
   subtype NUMBERFMTA is numberfmtA_x;
   type LPNUMBERFMTA is access all numberfmtA_x;
   type numberfmtW_x is record
      NumDigits : UINT;
      LeadingZero : UINT;
      Grouping : UINT;
      lpDecimalSep : LPWSTR;
      lpThousandSep : LPWSTR;
      NegativeOrder : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,numberfmtW_x);
   for numberfmtW_x use record
      NumDigits at 0 range 0..31;
      LeadingZero at 0 range 32..63;
      Grouping at 0 range 64..95;
      lpDecimalSep at 0 range 128..191;
      lpThousandSep at 0 range 192..255;
      NegativeOrder at 0 range 256..287;
   end record;
   for numberfmtW_x'Size use 320;
   for numberfmtW_x'Alignment use 8;
   subtype NUMBERFMTW is numberfmtW_x;
   type LPNUMBERFMTW is access all numberfmtW_x;
   subtype NUMBERFMT is NUMBERFMTA;
   subtype LPNUMBERFMT is LPNUMBERFMTA;
   type currencyfmtA_x is record
      NumDigits : UINT;
      LeadingZero : UINT;
      Grouping : UINT;
      lpDecimalSep : LPSTR;
      lpThousandSep : LPSTR;
      NegativeOrder : UINT;
      PositiveOrder : UINT;
      lpCurrencySymbol : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,currencyfmtA_x);
   for currencyfmtA_x use record
      NumDigits at 0 range 0..31;
      LeadingZero at 0 range 32..63;
      Grouping at 0 range 64..95;
      lpDecimalSep at 0 range 128..191;
      lpThousandSep at 0 range 192..255;
      NegativeOrder at 0 range 256..287;
      PositiveOrder at 0 range 288..319;
      lpCurrencySymbol at 0 range 320..383;
   end record;
   for currencyfmtA_x'Size use 384;
   for currencyfmtA_x'Alignment use 8;
   subtype CURRENCYFMTA is currencyfmtA_x;
   type LPCURRENCYFMTA is access all currencyfmtA_x;
   type currencyfmtW_x is record
      NumDigits : UINT;
      LeadingZero : UINT;
      Grouping : UINT;
      lpDecimalSep : LPWSTR;
      lpThousandSep : LPWSTR;
      NegativeOrder : UINT;
      PositiveOrder : UINT;
      lpCurrencySymbol : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,currencyfmtW_x);
   for currencyfmtW_x use record
      NumDigits at 0 range 0..31;
      LeadingZero at 0 range 32..63;
      Grouping at 0 range 64..95;
      lpDecimalSep at 0 range 128..191;
      lpThousandSep at 0 range 192..255;
      NegativeOrder at 0 range 256..287;
      PositiveOrder at 0 range 288..319;
      lpCurrencySymbol at 0 range 320..383;
   end record;
   for currencyfmtW_x'Size use 384;
   for currencyfmtW_x'Alignment use 8;
   subtype CURRENCYFMTW is currencyfmtW_x;
   type LPCURRENCYFMTW is access all currencyfmtW_x;
   subtype CURRENCYFMT is CURRENCYFMTA;
   subtype LPCURRENCYFMT is LPCURRENCYFMTA;
   type SYSNLS_FUNCTION is (
      COMPARE_STRING
   );
   for SYSNLS_FUNCTION use (
      COMPARE_STRING => 1
   );
   for SYSNLS_FUNCTION'Size use 32;
   subtype NLS_FUNCTION is DWORD;
   type nlsversioninfo_x is record
      dwNLSVersionInfoSize : DWORD;
      dwNLSVersion : DWORD;
      dwDefinedVersion : DWORD;
      dwEffectiveId : DWORD;
      guidCustomVersion : GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,nlsversioninfo_x);
   for nlsversioninfo_x use record
      dwNLSVersionInfoSize at 0 range 0..31;
      dwNLSVersion at 0 range 32..63;
      dwDefinedVersion at 0 range 64..95;
      dwEffectiveId at 0 range 96..127;
      guidCustomVersion at 0 range 128..255;
   end record;
   for nlsversioninfo_x'Size use 256;
   for nlsversioninfo_x'Alignment use 4;
   subtype NLSVERSIONINFO is nlsversioninfo_x;
   type LPNLSVERSIONINFO is access all nlsversioninfo_x;
   type nlsversioninfoex_x is record
      dwNLSVersionInfoSize : DWORD;
      dwNLSVersion : DWORD;
      dwDefinedVersion : DWORD;
      dwEffectiveId : DWORD;
      guidCustomVersion : GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,nlsversioninfoex_x);
   for nlsversioninfoex_x use record
      dwNLSVersionInfoSize at 0 range 0..31;
      dwNLSVersion at 0 range 32..63;
      dwDefinedVersion at 0 range 64..95;
      dwEffectiveId at 0 range 96..127;
      guidCustomVersion at 0 range 128..255;
   end record;
   for nlsversioninfoex_x'Size use 256;
   for nlsversioninfoex_x'Alignment use 4;
   subtype NLSVERSIONINFOEX is nlsversioninfoex_x;
   type LPNLSVERSIONINFOEX is access all nlsversioninfoex_x;
   type SYSGEOTYPE is (
      GEO_NATION,
      GEO_LATITUDE,
      GEO_LONGITUDE,
      GEO_ISO2,
      GEO_ISO3,
      GEO_RFC1766,
      GEO_LCID,
      GEO_FRIENDLYNAME,
      GEO_OFFICIALNAME,
      GEO_TIMEZONES,
      GEO_OFFICIALLANGUAGES,
      GEO_ISO_UN_NUMBER,
      GEO_PARENT,
      GEO_DIALINGCODE,
      GEO_CURRENCYCODE,
      GEO_CURRENCYSYMBOL,
      GEO_NAME,
      GEO_ID
   );
   for SYSGEOTYPE use (
      GEO_NATION => 1,
      GEO_LATITUDE => 2,
      GEO_LONGITUDE => 3,
      GEO_ISO2 => 4,
      GEO_ISO3 => 5,
      GEO_RFC1766 => 6,
      GEO_LCID => 7,
      GEO_FRIENDLYNAME => 8,
      GEO_OFFICIALNAME => 9,
      GEO_TIMEZONES => 10,
      GEO_OFFICIALLANGUAGES => 11,
      GEO_ISO_UN_NUMBER => 12,
      GEO_PARENT => 13,
      GEO_DIALINGCODE => 14,
      GEO_CURRENCYCODE => 15,
      GEO_CURRENCYSYMBOL => 16,
      GEO_NAME => 17,
      GEO_ID => 18
   );
   for SYSGEOTYPE'Size use 32;
   type SYSGEOCLASS is (
      GEOCLASS_ALL,
      GEOCLASS_REGION,
      GEOCLASS_NATION
   );
   for SYSGEOCLASS use (
      GEOCLASS_ALL => 0,
      GEOCLASS_REGION => 14,
      GEOCLASS_NATION => 16
   );
   for SYSGEOCLASS'Size use 32;
   type LOCALE_ENUMPROCA is access function (p1 : LPSTR) return BOOL; -- BOOL (LPSTR)
   pragma Convention(C,LOCALE_ENUMPROCA);
   type LOCALE_ENUMPROCW is access function (p1 : LPWSTR) return BOOL; -- BOOL (LPWSTR)
   pragma Convention(C,LOCALE_ENUMPROCW);
   type NORM_FORM_x is (
      NormalizationOther,
      NormalizationC,
      NormalizationD,
      NormalizationKC,
      NormalizationKD
   );
   for NORM_FORM_x use (
      NormalizationOther => 0,
      NormalizationC => 1,
      NormalizationD => 2,
      NormalizationKC => 5,
      NormalizationKD => 6
   );
   for NORM_FORM_x'Size use 32;
   subtype NORM_FORM is NORM_FORM_x;
   type LANGUAGEGROUP_ENUMPROCA is access function (p1 : LGRPID ; p2 : LPSTR ; p3 : LPSTR ; p4 : DWORD ; p5 : LONG_PTR) return BOOL; -- BOOL (LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR)
   pragma Convention(C,LANGUAGEGROUP_ENUMPROCA);
   type LANGGROUPLOCALE_ENUMPROCA is access function (p1 : LGRPID ; p2 : LCID ; p3 : LPSTR ; p4 : LONG_PTR) return BOOL; -- BOOL (LGRPID, LCID, LPSTR, LONG_PTR)
   pragma Convention(C,LANGGROUPLOCALE_ENUMPROCA);
   type UILANGUAGE_ENUMPROCA is access function (p1 : LPSTR ; p2 : LONG_PTR) return BOOL; -- BOOL (LPSTR, LONG_PTR)
   pragma Convention(C,UILANGUAGE_ENUMPROCA);
   type CODEPAGE_ENUMPROCA is access function (p1 : LPSTR) return BOOL; -- BOOL (LPSTR)
   pragma Convention(C,CODEPAGE_ENUMPROCA);
   type DATEFMT_ENUMPROCA is access function (p1 : LPSTR) return BOOL; -- BOOL (LPSTR)
   pragma Convention(C,DATEFMT_ENUMPROCA);
   type DATEFMT_ENUMPROCEXA is access function (p1 : LPSTR ; p2 : CALID) return BOOL; -- BOOL (LPSTR, CALID)
   pragma Convention(C,DATEFMT_ENUMPROCEXA);
   type TIMEFMT_ENUMPROCA is access function (p1 : LPSTR) return BOOL; -- BOOL (LPSTR)
   pragma Convention(C,TIMEFMT_ENUMPROCA);
   type CALINFO_ENUMPROCA is access function (p1 : LPSTR) return BOOL; -- BOOL (LPSTR)
   pragma Convention(C,CALINFO_ENUMPROCA);
   type CALINFO_ENUMPROCEXA is access function (p1 : LPSTR ; p2 : CALID) return BOOL; -- BOOL (LPSTR, CALID)
   pragma Convention(C,CALINFO_ENUMPROCEXA);
   type LANGUAGEGROUP_ENUMPROCW is access function (p1 : LGRPID ; p2 : LPWSTR ; p3 : LPWSTR ; p4 : DWORD ; p5 : LONG_PTR) return BOOL; -- BOOL (LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR)
   pragma Convention(C,LANGUAGEGROUP_ENUMPROCW);
   type LANGGROUPLOCALE_ENUMPROCW is access function (p1 : LGRPID ; p2 : LCID ; p3 : LPWSTR ; p4 : LONG_PTR) return BOOL; -- BOOL (LGRPID, LCID, LPWSTR, LONG_PTR)
   pragma Convention(C,LANGGROUPLOCALE_ENUMPROCW);
   type UILANGUAGE_ENUMPROCW is access function (p1 : LPWSTR ; p2 : LONG_PTR) return BOOL; -- BOOL (LPWSTR, LONG_PTR)
   pragma Convention(C,UILANGUAGE_ENUMPROCW);
   type CODEPAGE_ENUMPROCW is access function (p1 : LPWSTR) return BOOL; -- BOOL (LPWSTR)
   pragma Convention(C,CODEPAGE_ENUMPROCW);
   type DATEFMT_ENUMPROCW is access function (p1 : LPWSTR) return BOOL; -- BOOL (LPWSTR)
   pragma Convention(C,DATEFMT_ENUMPROCW);
   type DATEFMT_ENUMPROCEXW is access function (p1 : LPWSTR ; p2 : CALID) return BOOL; -- BOOL (LPWSTR, CALID)
   pragma Convention(C,DATEFMT_ENUMPROCEXW);
   type TIMEFMT_ENUMPROCW is access function (p1 : LPWSTR) return BOOL; -- BOOL (LPWSTR)
   pragma Convention(C,TIMEFMT_ENUMPROCW);
   type CALINFO_ENUMPROCW is access function (p1 : LPWSTR) return BOOL; -- BOOL (LPWSTR)
   pragma Convention(C,CALINFO_ENUMPROCW);
   type CALINFO_ENUMPROCEXW is access function (p1 : LPWSTR ; p2 : CALID) return BOOL; -- BOOL (LPWSTR, CALID)
   pragma Convention(C,CALINFO_ENUMPROCEXW);
   type GEO_ENUMPROC is access function (p1 : GEOID) return BOOL; -- BOOL (GEOID)
   pragma Convention(C,GEO_ENUMPROC);
   type GEO_ENUMNAMEPROC is access function (p1 : PWSTR ; p2 : LPARAM) return BOOL; -- BOOL (PWSTR, LPARAM)
   pragma Convention(C,GEO_ENUMNAMEPROC);
   type FILEMUIINFO_x_pChecksum_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type FILEMUIINFO_x_pServiceChecksum_Array is array(1..16) of BYTE; -- Auto Generated Dependancy
   type FILEMUIINFO_x_abBuffer_Array is array(1..8) of BYTE; -- Auto Generated Dependancy
   type FILEMUIINFO_x is record
      dwSize : DWORD;
      dwVersion : DWORD;
      dwFileType : DWORD;
      pChecksum : FILEMUIINFO_x_pChecksum_Array;
      pServiceChecksum : FILEMUIINFO_x_pServiceChecksum_Array;
      dwLanguageNameOffset : DWORD;
      dwTypeIDMainSize : DWORD;
      dwTypeIDMainOffset : DWORD;
      dwTypeNameMainOffset : DWORD;
      dwTypeIDMUISize : DWORD;
      dwTypeIDMUIOffset : DWORD;
      dwTypeNameMUIOffset : DWORD;
      abBuffer : FILEMUIINFO_x_abBuffer_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FILEMUIINFO_x);
   for FILEMUIINFO_x use record
      dwSize at 0 range 0..31;
      dwVersion at 0 range 32..63;
      dwFileType at 0 range 64..95;
      pChecksum at 0 range 96..223;
      pServiceChecksum at 0 range 224..351;
      dwLanguageNameOffset at 0 range 352..383;
      dwTypeIDMainSize at 0 range 384..415;
      dwTypeIDMainOffset at 0 range 416..447;
      dwTypeNameMainOffset at 0 range 448..479;
      dwTypeIDMUISize at 0 range 480..511;
      dwTypeIDMUIOffset at 0 range 512..543;
      dwTypeNameMUIOffset at 0 range 544..575;
      abBuffer at 0 range 576..639;
   end record;
   for FILEMUIINFO_x'Size use 640;
   for FILEMUIINFO_x'Alignment use 4;
   subtype FILEMUIINFO is FILEMUIINFO_x;
   type PFILEMUIINFO is access all FILEMUIINFO_x;
   -- #include <stringapiset.h>
   function CompareStringEx(
      lpLocaleName : LPCWSTR;
      dwCmpFlags : DWORD;
      lpString1 : LPCWCH;
      cchCount1 : Interfaces.C.Int;
      lpString2 : LPCWCH;
      cchCount2 : Interfaces.C.Int;
      lpVersionInformation : LPNLSVERSIONINFO;
      lpReserved : LPVOID;
      lParam_x : LPARAM
   ) return Interfaces.C.Int;
   pragma import (Cpp,CompareStringEx,"CompareStringEx");
   function CompareStringOrdinal(
      lpString1 : LPCWCH;
      cchCount1 : Interfaces.C.Int;
      lpString2 : LPCWCH;
      cchCount2 : Interfaces.C.Int;
      bIgnoreCase : BOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,CompareStringOrdinal,"CompareStringOrdinal");
   function CompareStringW(
      Locale : LCID;
      dwCmpFlags : DWORD;
      lpString1 : PCNZWCH;
      cchCount1 : Interfaces.C.Int;
      lpString2 : PCNZWCH;
      cchCount2 : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,CompareStringW,"CompareStringW");
   function FoldStringW(
      dwMapFlags : DWORD;
      lpSrcStr : LPCWCH;
      cchSrc : Interfaces.C.Int;
      lpDestStr : LPWSTR;
      cchDest : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,FoldStringW,"FoldStringW");
   function GetStringTypeExW(
      Locale : LCID;
      dwInfoType : DWORD;
      lpSrcStr : LPCWCH;
      cchSrc : Interfaces.C.Int;
      lpCharType : LPWORD
   ) return BOOL;
   pragma import (Cpp,GetStringTypeExW,"GetStringTypeExW");
   function GetStringTypeW(
      dwInfoType : DWORD;
      lpSrcStr : LPCWCH;
      cchSrc : Interfaces.C.Int;
      lpCharType : LPWORD
   ) return BOOL;
   pragma import (Cpp,GetStringTypeW,"GetStringTypeW");
   function MultiByteToWideChar(
      CodePage : UINT;
      dwFlags : DWORD;
      lpMultiByteStr : LPCCH;
      cbMultiByte : Interfaces.C.Int;
      lpWideCharStr : LPWSTR;
      cchWideChar : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,MultiByteToWideChar,"MultiByteToWideChar");
   function WideCharToMultiByte(
      CodePage : UINT;
      dwFlags : DWORD;
      lpWideCharStr : LPCWCH;
      cchWideChar : Interfaces.C.Int;
      lpMultiByteStr : LPSTR;
      cbMultiByte : Interfaces.C.Int;
      lpDefaultChar : LPCCH;
      lpUsedDefaultChar : LPBOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,WideCharToMultiByte,"WideCharToMultiByte");
   -- #include <winnls.h>
   function IsValidCodePage(
      CodePage : UINT
   ) return BOOL;
   pragma import (Cpp,IsValidCodePage,"IsValidCodePage");
   function GetACP return UINT;
   pragma import (Cpp,GetACP,"GetACP");
   function GetOEMCP return UINT;
   pragma import (Cpp,GetOEMCP,"GetOEMCP");
   function GetCPInfo(
      CodePage : UINT;
      lpCPInfo_x : LPCPINFO
   ) return BOOL;
   pragma import (Cpp,GetCPInfo,"GetCPInfo");
   function GetCPInfoExA(
      CodePage : UINT;
      dwFlags : DWORD;
      lpCPInfoEx_x : LPCPINFOEXA
   ) return BOOL;
   pragma import (Cpp,GetCPInfoExA,"GetCPInfoExA");
   function GetCPInfoExW(
      CodePage : UINT;
      dwFlags : DWORD;
      lpCPInfoEx_x : LPCPINFOEXW
   ) return BOOL;
   pragma import (Cpp,GetCPInfoExW,"GetCPInfoExW");
   function CompareStringA(
      Locale : LCID;
      dwCmpFlags : DWORD;
      lpString1 : PCNZCH;
      cchCount1 : Interfaces.C.Int;
      lpString2 : PCNZCH;
      cchCount2 : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,CompareStringA,"CompareStringA");
   function FindNLSString(
      Locale : LCID;
      dwFindNLSStringFlags : DWORD;
      lpStringSource : LPCWSTR;
      cchSource : Interfaces.C.Int;
      lpStringValue : LPCWSTR;
      cchValue : Interfaces.C.Int;
      pcchFound : LPINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,FindNLSString,"FindNLSString");
   function LCMapStringW(
      Locale : LCID;
      dwMapFlags : DWORD;
      lpSrcStr : LPCWSTR;
      cchSrc : Interfaces.C.Int;
      lpDestStr : LPWSTR;
      cchDest : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,LCMapStringW,"LCMapStringW");
   function LCMapStringA(
      Locale : LCID;
      dwMapFlags : DWORD;
      lpSrcStr : LPCSTR;
      cchSrc : Interfaces.C.Int;
      lpDestStr : LPSTR;
      cchDest : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,LCMapStringA,"LCMapStringA");
   function GetLocaleInfoW(
      Locale : LCID;
      LCType_x : LCTYPE;
      lpLCData : LPWSTR;
      cchData : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetLocaleInfoW,"GetLocaleInfoW");
   function GetLocaleInfoA(
      Locale : LCID;
      LCType_x : LCTYPE;
      lpLCData : LPSTR;
      cchData : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetLocaleInfoA,"GetLocaleInfoA");
   function SetLocaleInfoA(
      Locale : LCID;
      LCType_x : LCTYPE;
      lpLCData : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetLocaleInfoA,"SetLocaleInfoA");
   function SetLocaleInfoW(
      Locale : LCID;
      LCType_x : LCTYPE;
      lpLCData : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetLocaleInfoW,"SetLocaleInfoW");
   function GetCalendarInfoA(
      Locale : LCID;
      Calendar : CALID;
      CalType_x : CALTYPE;
      lpCalData : LPSTR;
      cchData : Interfaces.C.Int;
      lpValue : LPDWORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetCalendarInfoA,"GetCalendarInfoA");
   function GetCalendarInfoW(
      Locale : LCID;
      Calendar : CALID;
      CalType_x : CALTYPE;
      lpCalData : LPWSTR;
      cchData : Interfaces.C.Int;
      lpValue : LPDWORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetCalendarInfoW,"GetCalendarInfoW");
   function SetCalendarInfoA(
      Locale : LCID;
      Calendar : CALID;
      CalType_x : CALTYPE;
      lpCalData : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetCalendarInfoA,"SetCalendarInfoA");
   function SetCalendarInfoW(
      Locale : LCID;
      Calendar : CALID;
      CalType_x : CALTYPE;
      lpCalData : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetCalendarInfoW,"SetCalendarInfoW");
   function LoadStringByReference(
      Flags : DWORD;
      Language : PCWSTR;
      SourceString : PCWSTR;
      Buffer : PWSTR;
      cchBuffer : ULONG;
      Directory : PCWSTR;
      pcchBufferOut : PULONG
   ) return BOOL;
   pragma import (Cpp,LoadStringByReference,"LoadStringByReference");
   function IsDBCSLeadByte(
      TestChar : BYTE
   ) return BOOL;
   pragma import (Cpp,IsDBCSLeadByte,"IsDBCSLeadByte");
   function IsDBCSLeadByteEx(
      CodePage : UINT;
      TestChar : BYTE
   ) return BOOL;
   pragma import (Cpp,IsDBCSLeadByteEx,"IsDBCSLeadByteEx");
   function LocaleNameToLCID(
      lpName : LPCWSTR;
      dwFlags : DWORD
   ) return LCID;
   pragma import (Cpp,LocaleNameToLCID,"LocaleNameToLCID");
   function LCIDToLocaleName(
      Locale : LCID;
      lpName : LPWSTR;
      cchName : Interfaces.C.Int;
      dwFlags : DWORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,LCIDToLocaleName,"LCIDToLocaleName");
   function GetDurationFormat(
      Locale : LCID;
      dwFlags : DWORD;
      lpDuration : access constant SYSTEMTIME;
      ullDuration : ULONGLONG;
      lpFormat : LPCWSTR;
      lpDurationStr : LPWSTR;
      cchDuration : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetDurationFormat,"GetDurationFormat");
   function GetNumberFormatA(
      Locale : LCID;
      dwFlags : DWORD;
      lpValue : LPCSTR;
      lpFormat : access constant NUMBERFMTA;
      lpNumberStr : LPSTR;
      cchNumber : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetNumberFormatA,"GetNumberFormatA");
   function GetNumberFormatW(
      Locale : LCID;
      dwFlags : DWORD;
      lpValue : LPCWSTR;
      lpFormat : access constant NUMBERFMTW;
      lpNumberStr : LPWSTR;
      cchNumber : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetNumberFormatW,"GetNumberFormatW");
   function GetCurrencyFormatA(
      Locale : LCID;
      dwFlags : DWORD;
      lpValue : LPCSTR;
      lpFormat : access constant CURRENCYFMTA;
      lpCurrencyStr : LPSTR;
      cchCurrency : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetCurrencyFormatA,"GetCurrencyFormatA");
   function GetCurrencyFormatW(
      Locale : LCID;
      dwFlags : DWORD;
      lpValue : LPCWSTR;
      lpFormat : access constant CURRENCYFMTW;
      lpCurrencyStr : LPWSTR;
      cchCurrency : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetCurrencyFormatW,"GetCurrencyFormatW");
   function EnumCalendarInfoA(
      lpCalInfoEnumProc : CALINFO_ENUMPROCA;
      Locale : LCID;
      Calendar : CALID;
      CalType_x : CALTYPE
   ) return BOOL;
   pragma import (Cpp,EnumCalendarInfoA,"EnumCalendarInfoA");
   function EnumCalendarInfoW(
      lpCalInfoEnumProc : CALINFO_ENUMPROCW;
      Locale : LCID;
      Calendar : CALID;
      CalType_x : CALTYPE
   ) return BOOL;
   pragma import (Cpp,EnumCalendarInfoW,"EnumCalendarInfoW");
   function EnumCalendarInfoExA(
      lpCalInfoEnumProcEx : CALINFO_ENUMPROCEXA;
      Locale : LCID;
      Calendar : CALID;
      CalType_x : CALTYPE
   ) return BOOL;
   pragma import (Cpp,EnumCalendarInfoExA,"EnumCalendarInfoExA");
   function EnumCalendarInfoExW(
      lpCalInfoEnumProcEx : CALINFO_ENUMPROCEXW;
      Locale : LCID;
      Calendar : CALID;
      CalType_x : CALTYPE
   ) return BOOL;
   pragma import (Cpp,EnumCalendarInfoExW,"EnumCalendarInfoExW");
   function EnumTimeFormatsA(
      lpTimeFmtEnumProc : TIMEFMT_ENUMPROCA;
      Locale : LCID;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumTimeFormatsA,"EnumTimeFormatsA");
   function EnumTimeFormatsW(
      lpTimeFmtEnumProc : TIMEFMT_ENUMPROCW;
      Locale : LCID;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumTimeFormatsW,"EnumTimeFormatsW");
   function EnumDateFormatsA(
      lpDateFmtEnumProc : DATEFMT_ENUMPROCA;
      Locale : LCID;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumDateFormatsA,"EnumDateFormatsA");
   function EnumDateFormatsW(
      lpDateFmtEnumProc : DATEFMT_ENUMPROCW;
      Locale : LCID;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumDateFormatsW,"EnumDateFormatsW");
   function EnumDateFormatsExA(
      lpDateFmtEnumProcEx : DATEFMT_ENUMPROCEXA;
      Locale : LCID;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumDateFormatsExA,"EnumDateFormatsExA");
   function EnumDateFormatsExW(
      lpDateFmtEnumProcEx : DATEFMT_ENUMPROCEXW;
      Locale : LCID;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumDateFormatsExW,"EnumDateFormatsExW");
   function IsValidLanguageGroup(
      LanguageGroup : LGRPID;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,IsValidLanguageGroup,"IsValidLanguageGroup");
   function GetNLSVersion(
      function_x : NLS_FUNCTION;
      Locale : LCID;
      lpVersionInformation : LPNLSVERSIONINFO
   ) return BOOL;
   pragma import (Cpp,GetNLSVersion,"GetNLSVersion");
   function IsValidLocale(
      Locale : LCID;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,IsValidLocale,"IsValidLocale");
   function GetGeoInfoA(
      Location : GEOID;
      GeoType_x : GEOTYPE;
      lpGeoData : LPSTR;
      cchData : Interfaces.C.Int;
      LangId_x : LANGID
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetGeoInfoA,"GetGeoInfoA");
   function GetGeoInfoW(
      Location : GEOID;
      GeoType_x : GEOTYPE;
      lpGeoData : LPWSTR;
      cchData : Interfaces.C.Int;
      LangId_x : LANGID
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetGeoInfoW,"GetGeoInfoW");
   function GetGeoInfoEx(
      location : PWSTR;
      geoType_x : GEOTYPE;
      geoData : PWSTR;
      geoDataCount : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetGeoInfoEx,"GetGeoInfoEx");
   function EnumSystemGeoID(
      GeoClass_x : GEOCLASS;
      ParentGeoId : GEOID;
      lpGeoEnumProc : GEO_ENUMPROC
   ) return BOOL;
   pragma import (Cpp,EnumSystemGeoID,"EnumSystemGeoID");
   function EnumSystemGeoNames(
      geoClass_x : GEOCLASS;
      geoEnumProc : GEO_ENUMNAMEPROC;
      data : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumSystemGeoNames,"EnumSystemGeoNames");
   function GetUserGeoID(
      GeoClass_x : GEOCLASS
   ) return GEOID;
   pragma import (Cpp,GetUserGeoID,"GetUserGeoID");
   function GetUserDefaultGeoName(
      geoName : LPWSTR;
      geoNameCount : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetUserDefaultGeoName,"GetUserDefaultGeoName");
   function SetUserGeoID(
      GeoId_x : GEOID
   ) return BOOL;
   pragma import (Cpp,SetUserGeoID,"SetUserGeoID");
   function SetUserGeoName(
      geoName : PWSTR
   ) return BOOL;
   pragma import (Cpp,SetUserGeoName,"SetUserGeoName");
   function ConvertDefaultLocale(
      Locale : LCID
   ) return LCID;
   pragma import (Cpp,ConvertDefaultLocale,"ConvertDefaultLocale");
   function GetSystemDefaultUILanguage return LANGID;
   pragma import (Cpp,GetSystemDefaultUILanguage,"GetSystemDefaultUILanguage");
   function GetThreadLocale return LCID;
   pragma import (Cpp,GetThreadLocale,"GetThreadLocale");
   function SetThreadLocale(
      Locale : LCID
   ) return BOOL;
   pragma import (Cpp,SetThreadLocale,"SetThreadLocale");
   function GetUserDefaultUILanguage return LANGID;
   pragma import (Cpp,GetUserDefaultUILanguage,"GetUserDefaultUILanguage");
   function GetUserDefaultLangID return LANGID;
   pragma import (Cpp,GetUserDefaultLangID,"GetUserDefaultLangID");
   function GetSystemDefaultLangID return LANGID;
   pragma import (Cpp,GetSystemDefaultLangID,"GetSystemDefaultLangID");
   function GetSystemDefaultLCID return LCID;
   pragma import (Cpp,GetSystemDefaultLCID,"GetSystemDefaultLCID");
   function GetUserDefaultLCID return LCID;
   pragma import (Cpp,GetUserDefaultLCID,"GetUserDefaultLCID");
   function SetThreadUILanguage(
      LangId_x : LANGID
   ) return LANGID;
   pragma import (Cpp,SetThreadUILanguage,"SetThreadUILanguage");
   function GetThreadUILanguage return LANGID;
   pragma import (Cpp,GetThreadUILanguage,"GetThreadUILanguage");
   function GetProcessPreferredUILanguages(
      dwFlags : DWORD;
      pulNumLanguages : PULONG;
      pwszLanguagesBuffer : PZZWSTR;
      pcchLanguagesBuffer : PULONG
   ) return BOOL;
   pragma import (Cpp,GetProcessPreferredUILanguages,"GetProcessPreferredUILanguages");
   function SetProcessPreferredUILanguages(
      dwFlags : DWORD;
      pwszLanguagesBuffer : PCZZWSTR;
      pulNumLanguages : PULONG
   ) return BOOL;
   pragma import (Cpp,SetProcessPreferredUILanguages,"SetProcessPreferredUILanguages");
   function GetUserPreferredUILanguages(
      dwFlags : DWORD;
      pulNumLanguages : PULONG;
      pwszLanguagesBuffer : PZZWSTR;
      pcchLanguagesBuffer : PULONG
   ) return BOOL;
   pragma import (Cpp,GetUserPreferredUILanguages,"GetUserPreferredUILanguages");
   function GetSystemPreferredUILanguages(
      dwFlags : DWORD;
      pulNumLanguages : PULONG;
      pwszLanguagesBuffer : PZZWSTR;
      pcchLanguagesBuffer : PULONG
   ) return BOOL;
   pragma import (Cpp,GetSystemPreferredUILanguages,"GetSystemPreferredUILanguages");
   function GetThreadPreferredUILanguages(
      dwFlags : DWORD;
      pulNumLanguages : PULONG;
      pwszLanguagesBuffer : PZZWSTR;
      pcchLanguagesBuffer : PULONG
   ) return BOOL;
   pragma import (Cpp,GetThreadPreferredUILanguages,"GetThreadPreferredUILanguages");
   function SetThreadPreferredUILanguages(
      dwFlags : DWORD;
      pwszLanguagesBuffer : PCZZWSTR;
      pulNumLanguages : PULONG
   ) return BOOL;
   pragma import (Cpp,SetThreadPreferredUILanguages,"SetThreadPreferredUILanguages");
   function GetFileMUIInfo(
      dwFlags : DWORD;
      pcwszFilePath : PCWSTR;
      pFileMUIInfo_x : PFILEMUIINFO;
      pcbFileMUIInfo : access DWORD
   ) return BOOL;
   pragma import (Cpp,GetFileMUIInfo,"GetFileMUIInfo");
   function GetFileMUIPath(
      dwFlags : DWORD;
      pcwszFilePath : PCWSTR;
      pwszLanguage : PWSTR;
      pcchLanguage : PULONG;
      pwszFileMUIPath : PWSTR;
      pcchFileMUIPath : PULONG;
      pululEnumerator : PULONGLONG
   ) return BOOL;
   pragma import (Cpp,GetFileMUIPath,"GetFileMUIPath");
   function GetUILanguageInfo(
      dwFlags : DWORD;
      pwmszLanguage : PCZZWSTR;
      pwszFallbackLanguages : PZZWSTR;
      pcchFallbackLanguages : PDWORD;
      pAttributes : PDWORD
   ) return BOOL;
   pragma import (Cpp,GetUILanguageInfo,"GetUILanguageInfo");
   type HSAVEDUILANGUAGES_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HSAVEDUILANGUAGES_x);
   for HSAVEDUILANGUAGES_x use record
      unused at 0 range 0..31;
   end record;
   for HSAVEDUILANGUAGES_x'Size use 32;
   for HSAVEDUILANGUAGES_x'Alignment use 4;
   type HSAVEDUILANGUAGES is access all HSAVEDUILANGUAGES_x;
   function SetThreadPreferredUILanguages2(
      flags : ULONG;
      languages : PCZZWSTR;
      numLanguagesSet : PULONG;
      snapshot : access HSAVEDUILANGUAGES
   ) return BOOL;
   pragma import (Cpp,SetThreadPreferredUILanguages2,"SetThreadPreferredUILanguages2");
   procedure RestoreThreadPreferredUILanguages(
      snapshot : HSAVEDUILANGUAGES
   );
   pragma import (Cpp,RestoreThreadPreferredUILanguages,"RestoreThreadPreferredUILanguages");
   function NotifyUILanguageChange(
      dwFlags : DWORD;
      pcwstrNewLanguage : PCWSTR;
      pcwstrPreviousLanguage : PCWSTR;
      dwReserved : DWORD;
      pdwStatusRtrn : PDWORD
   ) return BOOL;
   pragma import (Cpp,NotifyUILanguageChange,"NotifyUILanguageChange");
   function GetStringTypeExA(
      Locale : LCID;
      dwInfoType : DWORD;
      lpSrcStr : LPCSTR;
      cchSrc : Interfaces.C.Int;
      lpCharType : LPWORD
   ) return BOOL;
   pragma import (Cpp,GetStringTypeExA,"GetStringTypeExA");
   function GetStringTypeA(
      Locale : LCID;
      dwInfoType : DWORD;
      lpSrcStr : LPCSTR;
      cchSrc : Interfaces.C.Int;
      lpCharType : LPWORD
   ) return BOOL;
   pragma import (Cpp,GetStringTypeA,"GetStringTypeA");
   function FoldStringA(
      dwMapFlags : DWORD;
      lpSrcStr : LPCSTR;
      cchSrc : Interfaces.C.Int;
      lpDestStr : LPSTR;
      cchDest : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,FoldStringA,"FoldStringA");
   function EnumSystemLocalesA(
      lpLocaleEnumProc : LOCALE_ENUMPROCA;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumSystemLocalesA,"EnumSystemLocalesA");
   function EnumSystemLocalesW(
      lpLocaleEnumProc : LOCALE_ENUMPROCW;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumSystemLocalesW,"EnumSystemLocalesW");
   function EnumSystemLanguageGroupsA(
      lpLanguageGroupEnumProc : LANGUAGEGROUP_ENUMPROCA;
      dwFlags : DWORD;
      lParam_x : LONG_PTR
   ) return BOOL;
   pragma import (Cpp,EnumSystemLanguageGroupsA,"EnumSystemLanguageGroupsA");
   function EnumSystemLanguageGroupsW(
      lpLanguageGroupEnumProc : LANGUAGEGROUP_ENUMPROCW;
      dwFlags : DWORD;
      lParam_x : LONG_PTR
   ) return BOOL;
   pragma import (Cpp,EnumSystemLanguageGroupsW,"EnumSystemLanguageGroupsW");
   function EnumLanguageGroupLocalesA(
      lpLangGroupLocaleEnumProc : LANGGROUPLOCALE_ENUMPROCA;
      LanguageGroup : LGRPID;
      dwFlags : DWORD;
      lParam_x : LONG_PTR
   ) return BOOL;
   pragma import (Cpp,EnumLanguageGroupLocalesA,"EnumLanguageGroupLocalesA");
   function EnumLanguageGroupLocalesW(
      lpLangGroupLocaleEnumProc : LANGGROUPLOCALE_ENUMPROCW;
      LanguageGroup : LGRPID;
      dwFlags : DWORD;
      lParam_x : LONG_PTR
   ) return BOOL;
   pragma import (Cpp,EnumLanguageGroupLocalesW,"EnumLanguageGroupLocalesW");
   function EnumUILanguagesA(
      lpUILanguageEnumProc : UILANGUAGE_ENUMPROCA;
      dwFlags : DWORD;
      lParam_x : LONG_PTR
   ) return BOOL;
   pragma import (Cpp,EnumUILanguagesA,"EnumUILanguagesA");
   function EnumUILanguagesW(
      lpUILanguageEnumProc : UILANGUAGE_ENUMPROCW;
      dwFlags : DWORD;
      lParam_x : LONG_PTR
   ) return BOOL;
   pragma import (Cpp,EnumUILanguagesW,"EnumUILanguagesW");
   function EnumSystemCodePagesA(
      lpCodePageEnumProc : CODEPAGE_ENUMPROCA;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumSystemCodePagesA,"EnumSystemCodePagesA");
   function EnumSystemCodePagesW(
      lpCodePageEnumProc : CODEPAGE_ENUMPROCW;
      dwFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,EnumSystemCodePagesW,"EnumSystemCodePagesW");
   function IdnToAscii(
      dwFlags : DWORD;
      lpUnicodeCharStr : LPCWSTR;
      cchUnicodeChar : Interfaces.C.Int;
      lpASCIICharStr : LPWSTR;
      cchASCIIChar : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,IdnToAscii,"IdnToAscii");
   function IdnToUnicode(
      dwFlags : DWORD;
      lpASCIICharStr : LPCWSTR;
      cchASCIIChar : Interfaces.C.Int;
      lpUnicodeCharStr : LPWSTR;
      cchUnicodeChar : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,IdnToUnicode,"IdnToUnicode");
   function IdnToNameprepUnicode(
      dwFlags : DWORD;
      lpUnicodeCharStr : LPCWSTR;
      cchUnicodeChar : Interfaces.C.Int;
      lpNameprepCharStr : LPWSTR;
      cchNameprepChar : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,IdnToNameprepUnicode,"IdnToNameprepUnicode");
   function NormalizeString(
      NormForm : NORM_FORM;
      lpSrcString : LPCWSTR;
      cwSrcLength : Interfaces.C.Int;
      lpDstString : LPWSTR;
      cwDstLength : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,NormalizeString,"NormalizeString");
   function IsNormalizedString(
      NormForm : NORM_FORM;
      lpString : LPCWSTR;
      cwLength : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,IsNormalizedString,"IsNormalizedString");
   function VerifyScripts(
      dwFlags : DWORD;
      lpLocaleScripts : LPCWSTR;
      cchLocaleScripts : Interfaces.C.Int;
      lpTestScripts : LPCWSTR;
      cchTestScripts : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,VerifyScripts,"VerifyScripts");
   function GetStringScripts(
      dwFlags : DWORD;
      lpString : LPCWSTR;
      cchString : Interfaces.C.Int;
      lpScripts : LPWSTR;
      cchScripts : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetStringScripts,"GetStringScripts");
   function GetLocaleInfoEx(
      lpLocaleName : LPCWSTR;
      LCType_x : LCTYPE;
      lpLCData : LPWSTR;
      cchData : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetLocaleInfoEx,"GetLocaleInfoEx");
   function GetCalendarInfoEx(
      lpLocaleName : LPCWSTR;
      Calendar : CALID;
      lpReserved : LPCWSTR;
      CalType_x : CALTYPE;
      lpCalData : LPWSTR;
      cchData : Interfaces.C.Int;
      lpValue : LPDWORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetCalendarInfoEx,"GetCalendarInfoEx");
   function GetNumberFormatEx(
      lpLocaleName : LPCWSTR;
      dwFlags : DWORD;
      lpValue : LPCWSTR;
      lpFormat : access constant NUMBERFMTW;
      lpNumberStr : LPWSTR;
      cchNumber : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetNumberFormatEx,"GetNumberFormatEx");
   function GetCurrencyFormatEx(
      lpLocaleName : LPCWSTR;
      dwFlags : DWORD;
      lpValue : LPCWSTR;
      lpFormat : access constant CURRENCYFMTW;
      lpCurrencyStr : LPWSTR;
      cchCurrency : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetCurrencyFormatEx,"GetCurrencyFormatEx");
   function GetUserDefaultLocaleName(
      lpLocaleName : LPWSTR;
      cchLocaleName : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetUserDefaultLocaleName,"GetUserDefaultLocaleName");
   function GetSystemDefaultLocaleName(
      lpLocaleName : LPWSTR;
      cchLocaleName : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetSystemDefaultLocaleName,"GetSystemDefaultLocaleName");
   function IsNLSDefinedString(
      function_x : NLS_FUNCTION;
      dwFlags : DWORD;
      lpVersionInformation : LPNLSVERSIONINFO;
      lpString : LPCWSTR;
      cchStr : INT
   ) return BOOL;
   pragma import (Cpp,IsNLSDefinedString,"IsNLSDefinedString");
   function GetNLSVersionEx(
      function_x : NLS_FUNCTION;
      lpLocaleName : LPCWSTR;
      lpVersionInformation : LPNLSVERSIONINFOEX
   ) return BOOL;
   pragma import (Cpp,GetNLSVersionEx,"GetNLSVersionEx");
   function IsValidNLSVersion(
      function_x : NLS_FUNCTION;
      lpLocaleName : LPCWSTR;
      lpVersionInformation : LPNLSVERSIONINFOEX
   ) return DWORD;
   pragma import (Cpp,IsValidNLSVersion,"IsValidNLSVersion");
   function FindNLSStringEx(
      lpLocaleName : LPCWSTR;
      dwFindNLSStringFlags : DWORD;
      lpStringSource : LPCWSTR;
      cchSource : Interfaces.C.Int;
      lpStringValue : LPCWSTR;
      cchValue : Interfaces.C.Int;
      pcchFound : LPINT;
      lpVersionInformation : LPNLSVERSIONINFO;
      lpReserved : LPVOID;
      sortHandle : LPARAM
   ) return Interfaces.C.Int;
   pragma import (Cpp,FindNLSStringEx,"FindNLSStringEx");
   function LCMapStringEx(
      lpLocaleName : LPCWSTR;
      dwMapFlags : DWORD;
      lpSrcStr : LPCWSTR;
      cchSrc : Interfaces.C.Int;
      lpDestStr : LPWSTR;
      cchDest : Interfaces.C.Int;
      lpVersionInformation : LPNLSVERSIONINFO;
      lpReserved : LPVOID;
      sortHandle : LPARAM
   ) return Interfaces.C.Int;
   pragma import (Cpp,LCMapStringEx,"LCMapStringEx");
   function IsValidLocaleName(
      lpLocaleName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,IsValidLocaleName,"IsValidLocaleName");
   type CALINFO_ENUMPROCEXEX is access function (p1 : LPWSTR ; p2 : CALID ; p3 : LPWSTR ; p4 : LPARAM) return BOOL; -- BOOL (LPWSTR, CALID, LPWSTR, LPARAM)
   pragma Convention(C,CALINFO_ENUMPROCEXEX);
   function EnumCalendarInfoExEx(
      pCalInfoEnumProcExEx : CALINFO_ENUMPROCEXEX;
      lpLocaleName : LPCWSTR;
      Calendar : CALID;
      lpReserved : LPCWSTR;
      CalType_x : CALTYPE;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumCalendarInfoExEx,"EnumCalendarInfoExEx");
   type DATEFMT_ENUMPROCEXEX is access function (p1 : LPWSTR ; p2 : CALID ; p3 : LPARAM) return BOOL; -- BOOL (LPWSTR, CALID, LPARAM)
   pragma Convention(C,DATEFMT_ENUMPROCEXEX);
   function EnumDateFormatsExEx(
      lpDateFmtEnumProcExEx : DATEFMT_ENUMPROCEXEX;
      lpLocaleName : LPCWSTR;
      dwFlags : DWORD;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumDateFormatsExEx,"EnumDateFormatsExEx");
   type TIMEFMT_ENUMPROCEX is access function (p1 : LPWSTR ; p2 : LPARAM) return BOOL; -- BOOL (LPWSTR, LPARAM)
   pragma Convention(C,TIMEFMT_ENUMPROCEX);
   function EnumTimeFormatsEx(
      lpTimeFmtEnumProcEx : TIMEFMT_ENUMPROCEX;
      lpLocaleName : LPCWSTR;
      dwFlags : DWORD;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,EnumTimeFormatsEx,"EnumTimeFormatsEx");
   type LOCALE_ENUMPROCEX is access function (p1 : LPWSTR ; p2 : DWORD ; p3 : LPARAM) return BOOL; -- BOOL (LPWSTR, DWORD, LPARAM)
   pragma Convention(C,LOCALE_ENUMPROCEX);
   function EnumSystemLocalesEx(
      lpLocaleEnumProcEx : LOCALE_ENUMPROCEX;
      dwFlags : DWORD;
      lParam_x : LPARAM;
      lpReserved : LPVOID
   ) return BOOL;
   pragma import (Cpp,EnumSystemLocalesEx,"EnumSystemLocalesEx");
   function ResolveLocaleName(
      lpNameToResolve : LPCWSTR;
      lpLocaleName : LPWSTR;
      cchLocaleName : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,ResolveLocaleName,"ResolveLocaleName");
   -- #include <wincon.h>
   -- #include <wincontypes.h>
   type COORD_x is record
      X : SHORT;
      Y : SHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,COORD_x);
   for COORD_x use record
      X at 0 range 0..15;
      Y at 0 range 16..31;
   end record;
   for COORD_x'Size use 32;
   for COORD_x'Alignment use 2;
   subtype COORD is COORD_x;
   type PCOORD is access all COORD_x;
   type SMALL_RECT_x is record
      Left : SHORT;
      Top : SHORT;
      Right : SHORT;
      Bottom : SHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,SMALL_RECT_x);
   for SMALL_RECT_x use record
      Left at 0 range 0..15;
      Top at 0 range 16..31;
      Right at 0 range 32..47;
      Bottom at 0 range 48..63;
   end record;
   for SMALL_RECT_x'Size use 64;
   for SMALL_RECT_x'Alignment use 2;
   subtype SMALL_RECT is SMALL_RECT_x;
   type PSMALL_RECT is access all SMALL_RECT_x;
   type Anonymous_Record_197 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            UnicodeChar : WCHAR;
         when others => 
            AsciiChar : CHAR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_197);
   pragma Unchecked_Union (Anonymous_Record_197);
   for Anonymous_Record_197'Size use 16;
   for Anonymous_Record_197'Alignment use 2;
   type KEY_EVENT_RECORD_x is record
      bKeyDown : BOOL;
      wRepeatCount : WORD;
      wVirtualKeyCode : WORD;
      wVirtualScanCode : WORD;
      field_1 : Anonymous_Record_197;
      dwControlKeyState : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,KEY_EVENT_RECORD_x);
   for KEY_EVENT_RECORD_x use record
      bKeyDown at 0 range 0..31;
      wRepeatCount at 0 range 32..47;
      wVirtualKeyCode at 0 range 48..63;
      wVirtualScanCode at 0 range 64..79;
      field_1 at 0 range 80..95;
      dwControlKeyState at 0 range 96..127;
   end record;
   for KEY_EVENT_RECORD_x'Size use 128;
   for KEY_EVENT_RECORD_x'Alignment use 4;
   subtype KEY_EVENT_RECORD is KEY_EVENT_RECORD_x;
   type PKEY_EVENT_RECORD is access all KEY_EVENT_RECORD_x;
   type MOUSE_EVENT_RECORD_x is record
      dwMousePosition : COORD;
      dwButtonState : DWORD;
      dwControlKeyState : DWORD;
      dwEventFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,MOUSE_EVENT_RECORD_x);
   for MOUSE_EVENT_RECORD_x use record
      dwMousePosition at 0 range 0..31;
      dwButtonState at 0 range 32..63;
      dwControlKeyState at 0 range 64..95;
      dwEventFlags at 0 range 96..127;
   end record;
   for MOUSE_EVENT_RECORD_x'Size use 128;
   for MOUSE_EVENT_RECORD_x'Alignment use 4;
   subtype MOUSE_EVENT_RECORD is MOUSE_EVENT_RECORD_x;
   type PMOUSE_EVENT_RECORD is access all MOUSE_EVENT_RECORD_x;
   type WINDOW_BUFFER_SIZE_RECORD_x is record
      dwSize : COORD;
   end record;
   pragma Convention (C_Pass_By_Copy,WINDOW_BUFFER_SIZE_RECORD_x);
   for WINDOW_BUFFER_SIZE_RECORD_x use record
      dwSize at 0 range 0..31;
   end record;
   for WINDOW_BUFFER_SIZE_RECORD_x'Size use 32;
   for WINDOW_BUFFER_SIZE_RECORD_x'Alignment use 2;
   subtype WINDOW_BUFFER_SIZE_RECORD is WINDOW_BUFFER_SIZE_RECORD_x;
   type PWINDOW_BUFFER_SIZE_RECORD is access all WINDOW_BUFFER_SIZE_RECORD_x;
   type MENU_EVENT_RECORD_x is record
      dwCommandId : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,MENU_EVENT_RECORD_x);
   for MENU_EVENT_RECORD_x use record
      dwCommandId at 0 range 0..31;
   end record;
   for MENU_EVENT_RECORD_x'Size use 32;
   for MENU_EVENT_RECORD_x'Alignment use 4;
   subtype MENU_EVENT_RECORD is MENU_EVENT_RECORD_x;
   type PMENU_EVENT_RECORD is access all MENU_EVENT_RECORD_x;
   type FOCUS_EVENT_RECORD_x is record
      bSetFocus : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,FOCUS_EVENT_RECORD_x);
   for FOCUS_EVENT_RECORD_x use record
      bSetFocus at 0 range 0..31;
   end record;
   for FOCUS_EVENT_RECORD_x'Size use 32;
   for FOCUS_EVENT_RECORD_x'Alignment use 4;
   subtype FOCUS_EVENT_RECORD is FOCUS_EVENT_RECORD_x;
   type PFOCUS_EVENT_RECORD is access all FOCUS_EVENT_RECORD_x;
   type Anonymous_Record_198 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            KeyEvent : KEY_EVENT_RECORD;
         when 1 =>
            MouseEvent : MOUSE_EVENT_RECORD;
         when 2 =>
            WindowBufferSizeEvent : WINDOW_BUFFER_SIZE_RECORD;
         when 3 =>
            MenuEvent : MENU_EVENT_RECORD;
         when others => 
            FocusEvent : FOCUS_EVENT_RECORD;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_198);
   pragma Unchecked_Union (Anonymous_Record_198);
   for Anonymous_Record_198'Size use 128;
   for Anonymous_Record_198'Alignment use 4;
   type INPUT_RECORD_x is record
      EventType : WORD;
      field_1 : Anonymous_Record_198;
   end record;
   pragma Convention (C_Pass_By_Copy,INPUT_RECORD_x);
   for INPUT_RECORD_x use record
      EventType at 0 range 0..15;
      field_1 at 0 range 16..143;
   end record;
   for INPUT_RECORD_x'Size use 160;
   for INPUT_RECORD_x'Alignment use 4;
   subtype INPUT_RECORD is INPUT_RECORD_x;
   type PINPUT_RECORD is access all INPUT_RECORD_x;
   type Anonymous_Record_199 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            UnicodeChar : WCHAR;
         when others => 
            AsciiChar : CHAR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_199);
   pragma Unchecked_Union (Anonymous_Record_199);
   for Anonymous_Record_199'Size use 16;
   for Anonymous_Record_199'Alignment use 2;
   type CHAR_INFO_x is record
      field_1 : Anonymous_Record_199;
      Attributes : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CHAR_INFO_x);
   for CHAR_INFO_x use record
      field_1 at 0 range 0..15;
      Attributes at 0 range 16..31;
   end record;
   for CHAR_INFO_x'Size use 32;
   for CHAR_INFO_x'Alignment use 2;
   subtype CHAR_INFO is CHAR_INFO_x;
   type PCHAR_INFO is access all CHAR_INFO_x;
   type CONSOLE_FONT_INFO_x is record
      nFont : DWORD;
      dwFontSize : COORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CONSOLE_FONT_INFO_x);
   for CONSOLE_FONT_INFO_x use record
      nFont at 0 range 0..31;
      dwFontSize at 0 range 32..63;
   end record;
   for CONSOLE_FONT_INFO_x'Size use 64;
   for CONSOLE_FONT_INFO_x'Alignment use 4;
   subtype CONSOLE_FONT_INFO is CONSOLE_FONT_INFO_x;
   type PCONSOLE_FONT_INFO is access all CONSOLE_FONT_INFO_x;
   type HPCON is access all Void;
   -- #include <consoleapi.h>
   function AllocConsole return BOOL;
   pragma import (Cpp,AllocConsole,"AllocConsole");
   function FreeConsole return BOOL;
   pragma import (Cpp,FreeConsole,"FreeConsole");
   function AttachConsole(
      dwProcessId : DWORD
   ) return BOOL;
   pragma import (Cpp,AttachConsole,"AttachConsole");
   function GetConsoleCP return UINT;
   pragma import (Cpp,GetConsoleCP,"GetConsoleCP");
   function GetConsoleOutputCP return UINT;
   pragma import (Cpp,GetConsoleOutputCP,"GetConsoleOutputCP");
   function GetConsoleMode(
      hConsoleHandle : HANDLE;
      lpMode : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetConsoleMode,"GetConsoleMode");
   function SetConsoleMode(
      hConsoleHandle : HANDLE;
      dwMode : DWORD
   ) return BOOL;
   pragma import (Cpp,SetConsoleMode,"SetConsoleMode");
   function GetNumberOfConsoleInputEvents(
      hConsoleInput : HANDLE;
      lpNumberOfEvents : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetNumberOfConsoleInputEvents,"GetNumberOfConsoleInputEvents");
   function ReadConsoleInputA(
      hConsoleInput : HANDLE;
      lpBuffer : PINPUT_RECORD;
      nLength : DWORD;
      lpNumberOfEventsRead : LPDWORD
   ) return BOOL;
   pragma import (Cpp,ReadConsoleInputA,"ReadConsoleInputA");
   function ReadConsoleInputW(
      hConsoleInput : HANDLE;
      lpBuffer : PINPUT_RECORD;
      nLength : DWORD;
      lpNumberOfEventsRead : LPDWORD
   ) return BOOL;
   pragma import (Cpp,ReadConsoleInputW,"ReadConsoleInputW");
   function PeekConsoleInputA(
      hConsoleInput : HANDLE;
      lpBuffer : PINPUT_RECORD;
      nLength : DWORD;
      lpNumberOfEventsRead : LPDWORD
   ) return BOOL;
   pragma import (Cpp,PeekConsoleInputA,"PeekConsoleInputA");
   function PeekConsoleInputW(
      hConsoleInput : HANDLE;
      lpBuffer : PINPUT_RECORD;
      nLength : DWORD;
      lpNumberOfEventsRead : LPDWORD
   ) return BOOL;
   pragma import (Cpp,PeekConsoleInputW,"PeekConsoleInputW");
   type CONSOLE_READCONSOLE_CONTROL_x is record
      nLength : ULONG;
      nInitialChars : ULONG;
      dwCtrlWakeupMask : ULONG;
      dwControlKeyState : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,CONSOLE_READCONSOLE_CONTROL_x);
   for CONSOLE_READCONSOLE_CONTROL_x use record
      nLength at 0 range 0..31;
      nInitialChars at 0 range 32..63;
      dwCtrlWakeupMask at 0 range 64..95;
      dwControlKeyState at 0 range 96..127;
   end record;
   for CONSOLE_READCONSOLE_CONTROL_x'Size use 128;
   for CONSOLE_READCONSOLE_CONTROL_x'Alignment use 4;
   subtype CONSOLE_READCONSOLE_CONTROL is CONSOLE_READCONSOLE_CONTROL_x;
   type PCONSOLE_READCONSOLE_CONTROL is access all CONSOLE_READCONSOLE_CONTROL_x;
   function ReadConsoleA(
      hConsoleInput : HANDLE;
      lpBuffer : LPVOID;
      nNumberOfCharsToRead : DWORD;
      lpNumberOfCharsRead : LPDWORD;
      pInputControl : PCONSOLE_READCONSOLE_CONTROL
   ) return BOOL;
   pragma import (Cpp,ReadConsoleA,"ReadConsoleA");
   function ReadConsoleW(
      hConsoleInput : HANDLE;
      lpBuffer : LPVOID;
      nNumberOfCharsToRead : DWORD;
      lpNumberOfCharsRead : LPDWORD;
      pInputControl : PCONSOLE_READCONSOLE_CONTROL
   ) return BOOL;
   pragma import (Cpp,ReadConsoleW,"ReadConsoleW");
   function WriteConsoleA(
      hConsoleOutput : HANDLE;
      lpBuffer : access Void;
      nNumberOfCharsToWrite : DWORD;
      lpNumberOfCharsWritten : LPDWORD;
      lpReserved : LPVOID
   ) return BOOL;
   pragma import (Cpp,WriteConsoleA,"WriteConsoleA");
   function WriteConsoleW(
      hConsoleOutput : HANDLE;
      lpBuffer : access Void;
      nNumberOfCharsToWrite : DWORD;
      lpNumberOfCharsWritten : LPDWORD;
      lpReserved : LPVOID
   ) return BOOL;
   pragma import (Cpp,WriteConsoleW,"WriteConsoleW");
   type PHANDLER_ROUTINE is access function (p1 : DWORD) return BOOL; -- BOOL (DWORD)
   pragma Convention(C,PHANDLER_ROUTINE);
   function SetConsoleCtrlHandler(
      HandlerRoutine : PHANDLER_ROUTINE;
      Add : BOOL
   ) return BOOL;
   pragma import (Cpp,SetConsoleCtrlHandler,"SetConsoleCtrlHandler");
   function CreatePseudoConsole(
      size_x : COORD;
      hInput : HANDLE;
      hOutput : HANDLE;
      dwFlags : DWORD;
      phPC : access HPCON
   ) return HRESULT;
   pragma import (Cpp,CreatePseudoConsole,"CreatePseudoConsole");
   function ResizePseudoConsole(
      hPC : HPCON;
      size_x : COORD
   ) return HRESULT;
   pragma import (Cpp,ResizePseudoConsole,"ResizePseudoConsole");
   procedure ClosePseudoConsole(
      hPC : HPCON
   );
   pragma import (Cpp,ClosePseudoConsole,"ClosePseudoConsole");
   -- #include <consoleapi2.h>
   function FillConsoleOutputCharacterA(
      hConsoleOutput : HANDLE;
      cCharacter : CHAR;
      nLength : DWORD;
      dwWriteCoord : COORD;
      lpNumberOfCharsWritten : LPDWORD
   ) return BOOL;
   pragma import (Cpp,FillConsoleOutputCharacterA,"FillConsoleOutputCharacterA");
   function FillConsoleOutputCharacterW(
      hConsoleOutput : HANDLE;
      cCharacter : WCHAR;
      nLength : DWORD;
      dwWriteCoord : COORD;
      lpNumberOfCharsWritten : LPDWORD
   ) return BOOL;
   pragma import (Cpp,FillConsoleOutputCharacterW,"FillConsoleOutputCharacterW");
   function FillConsoleOutputAttribute(
      hConsoleOutput : HANDLE;
      wAttribute : WORD;
      nLength : DWORD;
      dwWriteCoord : COORD;
      lpNumberOfAttrsWritten : LPDWORD
   ) return BOOL;
   pragma import (Cpp,FillConsoleOutputAttribute,"FillConsoleOutputAttribute");
   function GenerateConsoleCtrlEvent(
      dwCtrlEvent : DWORD;
      dwProcessGroupId : DWORD
   ) return BOOL;
   pragma import (Cpp,GenerateConsoleCtrlEvent,"GenerateConsoleCtrlEvent");
   function CreateConsoleScreenBuffer(
      dwDesiredAccess : DWORD;
      dwShareMode : DWORD;
      lpSecurityAttributes : access constant SECURITY_ATTRIBUTES;
      dwFlags : DWORD;
      lpScreenBufferData : LPVOID
   ) return HANDLE;
   pragma import (Cpp,CreateConsoleScreenBuffer,"CreateConsoleScreenBuffer");
   function SetConsoleActiveScreenBuffer(
      hConsoleOutput : HANDLE
   ) return BOOL;
   pragma import (Cpp,SetConsoleActiveScreenBuffer,"SetConsoleActiveScreenBuffer");
   function FlushConsoleInputBuffer(
      hConsoleInput : HANDLE
   ) return BOOL;
   pragma import (Cpp,FlushConsoleInputBuffer,"FlushConsoleInputBuffer");
   function SetConsoleCP(
      wCodePageID : UINT
   ) return BOOL;
   pragma import (Cpp,SetConsoleCP,"SetConsoleCP");
   function SetConsoleOutputCP(
      wCodePageID : UINT
   ) return BOOL;
   pragma import (Cpp,SetConsoleOutputCP,"SetConsoleOutputCP");
   type CONSOLE_CURSOR_INFO_x is record
      dwSize : DWORD;
      bVisible : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,CONSOLE_CURSOR_INFO_x);
   for CONSOLE_CURSOR_INFO_x use record
      dwSize at 0 range 0..31;
      bVisible at 0 range 32..63;
   end record;
   for CONSOLE_CURSOR_INFO_x'Size use 64;
   for CONSOLE_CURSOR_INFO_x'Alignment use 4;
   subtype CONSOLE_CURSOR_INFO is CONSOLE_CURSOR_INFO_x;
   type PCONSOLE_CURSOR_INFO is access all CONSOLE_CURSOR_INFO_x;
   function GetConsoleCursorInfo(
      hConsoleOutput : HANDLE;
      lpConsoleCursorInfo : PCONSOLE_CURSOR_INFO
   ) return BOOL;
   pragma import (Cpp,GetConsoleCursorInfo,"GetConsoleCursorInfo");
   function SetConsoleCursorInfo(
      hConsoleOutput : HANDLE;
      lpConsoleCursorInfo : access constant CONSOLE_CURSOR_INFO
   ) return BOOL;
   pragma import (Cpp,SetConsoleCursorInfo,"SetConsoleCursorInfo");
   type CONSOLE_SCREEN_BUFFER_INFO_x is record
      dwSize : COORD;
      dwCursorPosition : COORD;
      wAttributes : WORD;
      srWindow : SMALL_RECT;
      dwMaximumWindowSize : COORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CONSOLE_SCREEN_BUFFER_INFO_x);
   for CONSOLE_SCREEN_BUFFER_INFO_x use record
      dwSize at 0 range 0..31;
      dwCursorPosition at 0 range 32..63;
      wAttributes at 0 range 64..79;
      srWindow at 0 range 80..143;
      dwMaximumWindowSize at 0 range 144..175;
   end record;
   for CONSOLE_SCREEN_BUFFER_INFO_x'Size use 176;
   for CONSOLE_SCREEN_BUFFER_INFO_x'Alignment use 2;
   subtype CONSOLE_SCREEN_BUFFER_INFO is CONSOLE_SCREEN_BUFFER_INFO_x;
   type PCONSOLE_SCREEN_BUFFER_INFO is access all CONSOLE_SCREEN_BUFFER_INFO_x;
   function GetConsoleScreenBufferInfo(
      hConsoleOutput : HANDLE;
      lpConsoleScreenBufferInfo : PCONSOLE_SCREEN_BUFFER_INFO
   ) return BOOL;
   pragma import (Cpp,GetConsoleScreenBufferInfo,"GetConsoleScreenBufferInfo");
   type CONSOLE_SCREEN_BUFFER_INFOEX_x_ColorTable_Array is array(1..16) of COLORREF; -- Auto Generated Dependancy
   type CONSOLE_SCREEN_BUFFER_INFOEX_x is record
      cbSize : ULONG;
      dwSize : COORD;
      dwCursorPosition : COORD;
      wAttributes : WORD;
      srWindow : SMALL_RECT;
      dwMaximumWindowSize : COORD;
      wPopupAttributes : WORD;
      bFullscreenSupported : BOOL;
      ColorTable : CONSOLE_SCREEN_BUFFER_INFOEX_x_ColorTable_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,CONSOLE_SCREEN_BUFFER_INFOEX_x);
   for CONSOLE_SCREEN_BUFFER_INFOEX_x use record
      cbSize at 0 range 0..31;
      dwSize at 0 range 32..63;
      dwCursorPosition at 0 range 64..95;
      wAttributes at 0 range 96..111;
      srWindow at 0 range 112..175;
      dwMaximumWindowSize at 0 range 176..207;
      wPopupAttributes at 0 range 208..223;
      bFullscreenSupported at 0 range 224..255;
      ColorTable at 0 range 256..767;
   end record;
   for CONSOLE_SCREEN_BUFFER_INFOEX_x'Size use 768;
   for CONSOLE_SCREEN_BUFFER_INFOEX_x'Alignment use 4;
   subtype CONSOLE_SCREEN_BUFFER_INFOEX is CONSOLE_SCREEN_BUFFER_INFOEX_x;
   type PCONSOLE_SCREEN_BUFFER_INFOEX is access all CONSOLE_SCREEN_BUFFER_INFOEX_x;
   function GetConsoleScreenBufferInfoEx(
      hConsoleOutput : HANDLE;
      lpConsoleScreenBufferInfoEx : PCONSOLE_SCREEN_BUFFER_INFOEX
   ) return BOOL;
   pragma import (Cpp,GetConsoleScreenBufferInfoEx,"GetConsoleScreenBufferInfoEx");
   function SetConsoleScreenBufferInfoEx(
      hConsoleOutput : HANDLE;
      lpConsoleScreenBufferInfoEx : PCONSOLE_SCREEN_BUFFER_INFOEX
   ) return BOOL;
   pragma import (Cpp,SetConsoleScreenBufferInfoEx,"SetConsoleScreenBufferInfoEx");
   function SetConsoleScreenBufferSize(
      hConsoleOutput : HANDLE;
      dwSize : COORD
   ) return BOOL;
   pragma import (Cpp,SetConsoleScreenBufferSize,"SetConsoleScreenBufferSize");
   function SetConsoleCursorPosition(
      hConsoleOutput : HANDLE;
      dwCursorPosition : COORD
   ) return BOOL;
   pragma import (Cpp,SetConsoleCursorPosition,"SetConsoleCursorPosition");
   function GetLargestConsoleWindowSize(
      hConsoleOutput : HANDLE
   ) return COORD;
   pragma import (Cpp,GetLargestConsoleWindowSize,"GetLargestConsoleWindowSize");
   function SetConsoleTextAttribute(
      hConsoleOutput : HANDLE;
      wAttributes : WORD
   ) return BOOL;
   pragma import (Cpp,SetConsoleTextAttribute,"SetConsoleTextAttribute");
   function SetConsoleWindowInfo(
      hConsoleOutput : HANDLE;
      bAbsolute : BOOL;
      lpConsoleWindow : access constant SMALL_RECT
   ) return BOOL;
   pragma import (Cpp,SetConsoleWindowInfo,"SetConsoleWindowInfo");
   function WriteConsoleOutputCharacterA(
      hConsoleOutput : HANDLE;
      lpCharacter : LPCSTR;
      nLength : DWORD;
      dwWriteCoord : COORD;
      lpNumberOfCharsWritten : LPDWORD
   ) return BOOL;
   pragma import (Cpp,WriteConsoleOutputCharacterA,"WriteConsoleOutputCharacterA");
   function WriteConsoleOutputCharacterW(
      hConsoleOutput : HANDLE;
      lpCharacter : LPCWSTR;
      nLength : DWORD;
      dwWriteCoord : COORD;
      lpNumberOfCharsWritten : LPDWORD
   ) return BOOL;
   pragma import (Cpp,WriteConsoleOutputCharacterW,"WriteConsoleOutputCharacterW");
   function WriteConsoleOutputAttribute(
      hConsoleOutput : HANDLE;
      lpAttribute : access constant WORD;
      nLength : DWORD;
      dwWriteCoord : COORD;
      lpNumberOfAttrsWritten : LPDWORD
   ) return BOOL;
   pragma import (Cpp,WriteConsoleOutputAttribute,"WriteConsoleOutputAttribute");
   function ReadConsoleOutputCharacterA(
      hConsoleOutput : HANDLE;
      lpCharacter : LPSTR;
      nLength : DWORD;
      dwReadCoord : COORD;
      lpNumberOfCharsRead : LPDWORD
   ) return BOOL;
   pragma import (Cpp,ReadConsoleOutputCharacterA,"ReadConsoleOutputCharacterA");
   function ReadConsoleOutputCharacterW(
      hConsoleOutput : HANDLE;
      lpCharacter : LPWSTR;
      nLength : DWORD;
      dwReadCoord : COORD;
      lpNumberOfCharsRead : LPDWORD
   ) return BOOL;
   pragma import (Cpp,ReadConsoleOutputCharacterW,"ReadConsoleOutputCharacterW");
   function ReadConsoleOutputAttribute(
      hConsoleOutput : HANDLE;
      lpAttribute : LPWORD;
      nLength : DWORD;
      dwReadCoord : COORD;
      lpNumberOfAttrsRead : LPDWORD
   ) return BOOL;
   pragma import (Cpp,ReadConsoleOutputAttribute,"ReadConsoleOutputAttribute");
   function WriteConsoleInputA(
      hConsoleInput : HANDLE;
      lpBuffer : access constant INPUT_RECORD;
      nLength : DWORD;
      lpNumberOfEventsWritten : LPDWORD
   ) return BOOL;
   pragma import (Cpp,WriteConsoleInputA,"WriteConsoleInputA");
   function WriteConsoleInputW(
      hConsoleInput : HANDLE;
      lpBuffer : access constant INPUT_RECORD;
      nLength : DWORD;
      lpNumberOfEventsWritten : LPDWORD
   ) return BOOL;
   pragma import (Cpp,WriteConsoleInputW,"WriteConsoleInputW");
   function ScrollConsoleScreenBufferA(
      hConsoleOutput : HANDLE;
      lpScrollRectangle : access constant SMALL_RECT;
      lpClipRectangle : access constant SMALL_RECT;
      dwDestinationOrigin : COORD;
      lpFill : access constant CHAR_INFO
   ) return BOOL;
   pragma import (Cpp,ScrollConsoleScreenBufferA,"ScrollConsoleScreenBufferA");
   function ScrollConsoleScreenBufferW(
      hConsoleOutput : HANDLE;
      lpScrollRectangle : access constant SMALL_RECT;
      lpClipRectangle : access constant SMALL_RECT;
      dwDestinationOrigin : COORD;
      lpFill : access constant CHAR_INFO
   ) return BOOL;
   pragma import (Cpp,ScrollConsoleScreenBufferW,"ScrollConsoleScreenBufferW");
   function WriteConsoleOutputA(
      hConsoleOutput : HANDLE;
      lpBuffer : access constant CHAR_INFO;
      dwBufferSize : COORD;
      dwBufferCoord : COORD;
      lpWriteRegion : PSMALL_RECT
   ) return BOOL;
   pragma import (Cpp,WriteConsoleOutputA,"WriteConsoleOutputA");
   function WriteConsoleOutputW(
      hConsoleOutput : HANDLE;
      lpBuffer : access constant CHAR_INFO;
      dwBufferSize : COORD;
      dwBufferCoord : COORD;
      lpWriteRegion : PSMALL_RECT
   ) return BOOL;
   pragma import (Cpp,WriteConsoleOutputW,"WriteConsoleOutputW");
   function ReadConsoleOutputA(
      hConsoleOutput : HANDLE;
      lpBuffer : PCHAR_INFO;
      dwBufferSize : COORD;
      dwBufferCoord : COORD;
      lpReadRegion : PSMALL_RECT
   ) return BOOL;
   pragma import (Cpp,ReadConsoleOutputA,"ReadConsoleOutputA");
   function ReadConsoleOutputW(
      hConsoleOutput : HANDLE;
      lpBuffer : PCHAR_INFO;
      dwBufferSize : COORD;
      dwBufferCoord : COORD;
      lpReadRegion : PSMALL_RECT
   ) return BOOL;
   pragma import (Cpp,ReadConsoleOutputW,"ReadConsoleOutputW");
   function GetConsoleTitleA(
      lpConsoleTitle : LPSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetConsoleTitleA,"GetConsoleTitleA");
   function GetConsoleTitleW(
      lpConsoleTitle : LPWSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetConsoleTitleW,"GetConsoleTitleW");
   function GetConsoleOriginalTitleA(
      lpConsoleTitle : LPSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetConsoleOriginalTitleA,"GetConsoleOriginalTitleA");
   function GetConsoleOriginalTitleW(
      lpConsoleTitle : LPWSTR;
      nSize : DWORD
   ) return DWORD;
   pragma import (Cpp,GetConsoleOriginalTitleW,"GetConsoleOriginalTitleW");
   function SetConsoleTitleA(
      lpConsoleTitle : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetConsoleTitleA,"SetConsoleTitleA");
   function SetConsoleTitleW(
      lpConsoleTitle : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetConsoleTitleW,"SetConsoleTitleW");
   -- #include <consoleapi3.h>
   function GetNumberOfConsoleMouseButtons(
      lpNumberOfMouseButtons : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetNumberOfConsoleMouseButtons,"GetNumberOfConsoleMouseButtons");
   function GetConsoleFontSize(
      hConsoleOutput : HANDLE;
      nFont : DWORD
   ) return COORD;
   pragma import (Cpp,GetConsoleFontSize,"GetConsoleFontSize");
   function GetCurrentConsoleFont(
      hConsoleOutput : HANDLE;
      bMaximumWindow : BOOL;
      lpConsoleCurrentFont : PCONSOLE_FONT_INFO
   ) return BOOL;
   pragma import (Cpp,GetCurrentConsoleFont,"GetCurrentConsoleFont");
   type CONSOLE_FONT_INFOEX_x_FaceName_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type CONSOLE_FONT_INFOEX_x is record
      cbSize : ULONG;
      nFont : DWORD;
      dwFontSize : COORD;
      FontFamily : UINT;
      FontWeight : UINT;
      FaceName : CONSOLE_FONT_INFOEX_x_FaceName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,CONSOLE_FONT_INFOEX_x);
   for CONSOLE_FONT_INFOEX_x use record
      cbSize at 0 range 0..31;
      nFont at 0 range 32..63;
      dwFontSize at 0 range 64..95;
      FontFamily at 0 range 96..127;
      FontWeight at 0 range 128..159;
      FaceName at 0 range 160..671;
   end record;
   for CONSOLE_FONT_INFOEX_x'Size use 672;
   for CONSOLE_FONT_INFOEX_x'Alignment use 4;
   subtype CONSOLE_FONT_INFOEX is CONSOLE_FONT_INFOEX_x;
   type PCONSOLE_FONT_INFOEX is access all CONSOLE_FONT_INFOEX_x;
   function GetCurrentConsoleFontEx(
      hConsoleOutput : HANDLE;
      bMaximumWindow : BOOL;
      lpConsoleCurrentFontEx : PCONSOLE_FONT_INFOEX
   ) return BOOL;
   pragma import (Cpp,GetCurrentConsoleFontEx,"GetCurrentConsoleFontEx");
   function SetCurrentConsoleFontEx(
      hConsoleOutput : HANDLE;
      bMaximumWindow : BOOL;
      lpConsoleCurrentFontEx : PCONSOLE_FONT_INFOEX
   ) return BOOL;
   pragma import (Cpp,SetCurrentConsoleFontEx,"SetCurrentConsoleFontEx");
   type CONSOLE_SELECTION_INFO_x is record
      dwFlags : DWORD;
      dwSelectionAnchor : COORD;
      srSelection : SMALL_RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,CONSOLE_SELECTION_INFO_x);
   for CONSOLE_SELECTION_INFO_x use record
      dwFlags at 0 range 0..31;
      dwSelectionAnchor at 0 range 32..63;
      srSelection at 0 range 64..127;
   end record;
   for CONSOLE_SELECTION_INFO_x'Size use 128;
   for CONSOLE_SELECTION_INFO_x'Alignment use 4;
   subtype CONSOLE_SELECTION_INFO is CONSOLE_SELECTION_INFO_x;
   type PCONSOLE_SELECTION_INFO is access all CONSOLE_SELECTION_INFO_x;
   function GetConsoleSelectionInfo(
      lpConsoleSelectionInfo : PCONSOLE_SELECTION_INFO
   ) return BOOL;
   pragma import (Cpp,GetConsoleSelectionInfo,"GetConsoleSelectionInfo");
   type CONSOLE_HISTORY_INFO_x is record
      cbSize : UINT;
      HistoryBufferSize : UINT;
      NumberOfHistoryBuffers : UINT;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CONSOLE_HISTORY_INFO_x);
   for CONSOLE_HISTORY_INFO_x use record
      cbSize at 0 range 0..31;
      HistoryBufferSize at 0 range 32..63;
      NumberOfHistoryBuffers at 0 range 64..95;
      dwFlags at 0 range 96..127;
   end record;
   for CONSOLE_HISTORY_INFO_x'Size use 128;
   for CONSOLE_HISTORY_INFO_x'Alignment use 4;
   subtype CONSOLE_HISTORY_INFO is CONSOLE_HISTORY_INFO_x;
   type PCONSOLE_HISTORY_INFO is access all CONSOLE_HISTORY_INFO_x;
   function GetConsoleHistoryInfo(
      lpConsoleHistoryInfo : PCONSOLE_HISTORY_INFO
   ) return BOOL;
   pragma import (Cpp,GetConsoleHistoryInfo,"GetConsoleHistoryInfo");
   function SetConsoleHistoryInfo(
      lpConsoleHistoryInfo : PCONSOLE_HISTORY_INFO
   ) return BOOL;
   pragma import (Cpp,SetConsoleHistoryInfo,"SetConsoleHistoryInfo");
   function GetConsoleDisplayMode(
      lpModeFlags : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetConsoleDisplayMode,"GetConsoleDisplayMode");
   function SetConsoleDisplayMode(
      hConsoleOutput : HANDLE;
      dwFlags : DWORD;
      lpNewScreenBufferDimensions : PCOORD
   ) return BOOL;
   pragma import (Cpp,SetConsoleDisplayMode,"SetConsoleDisplayMode");
   function GetConsoleWindow return HWND;
   pragma import (Cpp,GetConsoleWindow,"GetConsoleWindow");
   function AddConsoleAliasA(
      Source : LPSTR;
      Target : LPSTR;
      ExeName : LPSTR
   ) return BOOL;
   pragma import (Cpp,AddConsoleAliasA,"AddConsoleAliasA");
   function AddConsoleAliasW(
      Source : LPWSTR;
      Target : LPWSTR;
      ExeName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,AddConsoleAliasW,"AddConsoleAliasW");
   function GetConsoleAliasA(
      Source : LPSTR;
      TargetBuffer : LPSTR;
      TargetBufferLength : DWORD;
      ExeName : LPSTR
   ) return DWORD;
   pragma import (Cpp,GetConsoleAliasA,"GetConsoleAliasA");
   function GetConsoleAliasW(
      Source : LPWSTR;
      TargetBuffer : LPWSTR;
      TargetBufferLength : DWORD;
      ExeName : LPWSTR
   ) return DWORD;
   pragma import (Cpp,GetConsoleAliasW,"GetConsoleAliasW");
   function GetConsoleAliasesLengthA(
      ExeName : LPSTR
   ) return DWORD;
   pragma import (Cpp,GetConsoleAliasesLengthA,"GetConsoleAliasesLengthA");
   function GetConsoleAliasesLengthW(
      ExeName : LPWSTR
   ) return DWORD;
   pragma import (Cpp,GetConsoleAliasesLengthW,"GetConsoleAliasesLengthW");
   function GetConsoleAliasExesLengthA return DWORD;
   pragma import (Cpp,GetConsoleAliasExesLengthA,"GetConsoleAliasExesLengthA");
   function GetConsoleAliasExesLengthW return DWORD;
   pragma import (Cpp,GetConsoleAliasExesLengthW,"GetConsoleAliasExesLengthW");
   function GetConsoleAliasesA(
      AliasBuffer : LPSTR;
      AliasBufferLength : DWORD;
      ExeName : LPSTR
   ) return DWORD;
   pragma import (Cpp,GetConsoleAliasesA,"GetConsoleAliasesA");
   function GetConsoleAliasesW(
      AliasBuffer : LPWSTR;
      AliasBufferLength : DWORD;
      ExeName : LPWSTR
   ) return DWORD;
   pragma import (Cpp,GetConsoleAliasesW,"GetConsoleAliasesW");
   function GetConsoleAliasExesA(
      ExeNameBuffer : LPSTR;
      ExeNameBufferLength : DWORD
   ) return DWORD;
   pragma import (Cpp,GetConsoleAliasExesA,"GetConsoleAliasExesA");
   function GetConsoleAliasExesW(
      ExeNameBuffer : LPWSTR;
      ExeNameBufferLength : DWORD
   ) return DWORD;
   pragma import (Cpp,GetConsoleAliasExesW,"GetConsoleAliasExesW");
   procedure ExpungeConsoleCommandHistoryA(
      ExeName : LPSTR
   );
   pragma import (Cpp,ExpungeConsoleCommandHistoryA,"ExpungeConsoleCommandHistoryA");
   procedure ExpungeConsoleCommandHistoryW(
      ExeName : LPWSTR
   );
   pragma import (Cpp,ExpungeConsoleCommandHistoryW,"ExpungeConsoleCommandHistoryW");
   function SetConsoleNumberOfCommandsA(
      Number : DWORD;
      ExeName : LPSTR
   ) return BOOL;
   pragma import (Cpp,SetConsoleNumberOfCommandsA,"SetConsoleNumberOfCommandsA");
   function SetConsoleNumberOfCommandsW(
      Number : DWORD;
      ExeName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,SetConsoleNumberOfCommandsW,"SetConsoleNumberOfCommandsW");
   function GetConsoleCommandHistoryLengthA(
      ExeName : LPSTR
   ) return DWORD;
   pragma import (Cpp,GetConsoleCommandHistoryLengthA,"GetConsoleCommandHistoryLengthA");
   function GetConsoleCommandHistoryLengthW(
      ExeName : LPWSTR
   ) return DWORD;
   pragma import (Cpp,GetConsoleCommandHistoryLengthW,"GetConsoleCommandHistoryLengthW");
   function GetConsoleCommandHistoryA(
      Commands : LPSTR;
      CommandBufferLength : DWORD;
      ExeName : LPSTR
   ) return DWORD;
   pragma import (Cpp,GetConsoleCommandHistoryA,"GetConsoleCommandHistoryA");
   function GetConsoleCommandHistoryW(
      Commands : LPWSTR;
      CommandBufferLength : DWORD;
      ExeName : LPWSTR
   ) return DWORD;
   pragma import (Cpp,GetConsoleCommandHistoryW,"GetConsoleCommandHistoryW");
   function GetConsoleProcessList(
      lpdwProcessList : LPDWORD;
      dwProcessCount : DWORD
   ) return DWORD;
   pragma import (Cpp,GetConsoleProcessList,"GetConsoleProcessList");
   -- #include <verrsrc.h>
   type tagVS_FIXEDFILEINFO is record
      dwSignature : DWORD;
      dwStrucVersion : DWORD;
      dwFileVersionMS : DWORD;
      dwFileVersionLS : DWORD;
      dwProductVersionMS : DWORD;
      dwProductVersionLS : DWORD;
      dwFileFlagsMask : DWORD;
      dwFileFlags : DWORD;
      dwFileOS : DWORD;
      dwFileType : DWORD;
      dwFileSubtype : DWORD;
      dwFileDateMS : DWORD;
      dwFileDateLS : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagVS_FIXEDFILEINFO);
   for tagVS_FIXEDFILEINFO use record
      dwSignature at 0 range 0..31;
      dwStrucVersion at 0 range 32..63;
      dwFileVersionMS at 0 range 64..95;
      dwFileVersionLS at 0 range 96..127;
      dwProductVersionMS at 0 range 128..159;
      dwProductVersionLS at 0 range 160..191;
      dwFileFlagsMask at 0 range 192..223;
      dwFileFlags at 0 range 224..255;
      dwFileOS at 0 range 256..287;
      dwFileType at 0 range 288..319;
      dwFileSubtype at 0 range 320..351;
      dwFileDateMS at 0 range 352..383;
      dwFileDateLS at 0 range 384..415;
   end record;
   for tagVS_FIXEDFILEINFO'Size use 416;
   for tagVS_FIXEDFILEINFO'Alignment use 4;
   subtype VS_FIXEDFILEINFO is tagVS_FIXEDFILEINFO;
   -- #include <winver.h>
   function VerFindFileA(
      uFlags : DWORD;
      szFileName : LPCSTR;
      szWinDir : LPCSTR;
      szAppDir : LPCSTR;
      szCurDir : LPSTR;
      puCurDirLen : PUINT;
      szDestDir : LPSTR;
      puDestDirLen : PUINT
   ) return DWORD;
   pragma import (Cpp,VerFindFileA,"VerFindFileA");
   function VerFindFileW(
      uFlags : DWORD;
      szFileName : LPCWSTR;
      szWinDir : LPCWSTR;
      szAppDir : LPCWSTR;
      szCurDir : LPWSTR;
      puCurDirLen : PUINT;
      szDestDir : LPWSTR;
      puDestDirLen : PUINT
   ) return DWORD;
   pragma import (Cpp,VerFindFileW,"VerFindFileW");
   function VerInstallFileA(
      uFlags : DWORD;
      szSrcFileName : LPCSTR;
      szDestFileName : LPCSTR;
      szSrcDir : LPCSTR;
      szDestDir : LPCSTR;
      szCurDir : LPCSTR;
      szTmpFile : LPSTR;
      puTmpFileLen : PUINT
   ) return DWORD;
   pragma import (Cpp,VerInstallFileA,"VerInstallFileA");
   function VerInstallFileW(
      uFlags : DWORD;
      szSrcFileName : LPCWSTR;
      szDestFileName : LPCWSTR;
      szSrcDir : LPCWSTR;
      szDestDir : LPCWSTR;
      szCurDir : LPCWSTR;
      szTmpFile : LPWSTR;
      puTmpFileLen : PUINT
   ) return DWORD;
   pragma import (Cpp,VerInstallFileW,"VerInstallFileW");
   function GetFileVersionInfoSizeA(
      lptstrFilename : LPCSTR;
      lpdwHandle : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetFileVersionInfoSizeA,"GetFileVersionInfoSizeA");
   function GetFileVersionInfoSizeW(
      lptstrFilename : LPCWSTR;
      lpdwHandle : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetFileVersionInfoSizeW,"GetFileVersionInfoSizeW");
   function GetFileVersionInfoA(
      lptstrFilename : LPCSTR;
      dwHandle : DWORD;
      dwLen : DWORD;
      lpData : LPVOID
   ) return BOOL;
   pragma import (Cpp,GetFileVersionInfoA,"GetFileVersionInfoA");
   function GetFileVersionInfoW(
      lptstrFilename : LPCWSTR;
      dwHandle : DWORD;
      dwLen : DWORD;
      lpData : LPVOID
   ) return BOOL;
   pragma import (Cpp,GetFileVersionInfoW,"GetFileVersionInfoW");
   function GetFileVersionInfoSizeExA(
      dwFlags : DWORD;
      lpwstrFilename : LPCSTR;
      lpdwHandle : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetFileVersionInfoSizeExA,"GetFileVersionInfoSizeExA");
   function GetFileVersionInfoSizeExW(
      dwFlags : DWORD;
      lpwstrFilename : LPCWSTR;
      lpdwHandle : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetFileVersionInfoSizeExW,"GetFileVersionInfoSizeExW");
   function GetFileVersionInfoExA(
      dwFlags : DWORD;
      lpwstrFilename : LPCSTR;
      dwHandle : DWORD;
      dwLen : DWORD;
      lpData : LPVOID
   ) return BOOL;
   pragma import (Cpp,GetFileVersionInfoExA,"GetFileVersionInfoExA");
   function GetFileVersionInfoExW(
      dwFlags : DWORD;
      lpwstrFilename : LPCWSTR;
      dwHandle : DWORD;
      dwLen : DWORD;
      lpData : LPVOID
   ) return BOOL;
   pragma import (Cpp,GetFileVersionInfoExW,"GetFileVersionInfoExW");
   function VerLanguageNameA(
      wLang : DWORD;
      szLang : LPSTR;
      cchLang : DWORD
   ) return DWORD;
   pragma import (Cpp,VerLanguageNameA,"VerLanguageNameA");
   function VerLanguageNameW(
      wLang : DWORD;
      szLang : LPWSTR;
      cchLang : DWORD
   ) return DWORD;
   pragma import (Cpp,VerLanguageNameW,"VerLanguageNameW");
   function VerQueryValueA(
      pBlock : LPCVOID;
      lpSubBlock : LPCSTR;
      lplpBuffer : access LPVOID;
      puLen : PUINT
   ) return BOOL;
   pragma import (Cpp,VerQueryValueA,"VerQueryValueA");
   function VerQueryValueW(
      pBlock : LPCVOID;
      lpSubBlock : LPCWSTR;
      lplpBuffer : access LPVOID;
      puLen : PUINT
   ) return BOOL;
   pragma import (Cpp,VerQueryValueW,"VerQueryValueW");
   -- #include <winreg.h>
   subtype LSTATUS is LONG;
   subtype REGSAM is ACCESS_MASK;
   type val_context is record
      valuelen : Interfaces.C.Int;
      value_context : LPVOID;
      val_buff_ptr : LPVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,val_context);
   for val_context use record
      valuelen at 0 range 0..31;
      value_context at 0 range 64..127;
      val_buff_ptr at 0 range 128..191;
   end record;
   for val_context'Size use 192;
   for val_context'Alignment use 8;
   type PVALCONTEXT is access all val_context;
   type pvalueA is record
      pv_valuename : LPSTR;
      pv_valuelen : Interfaces.C.Int;
      pv_value_context : LPVOID;
      pv_type : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,pvalueA);
   for pvalueA use record
      pv_valuename at 0 range 0..63;
      pv_valuelen at 0 range 64..95;
      pv_value_context at 0 range 128..191;
      pv_type at 0 range 192..223;
   end record;
   for pvalueA'Size use 256;
   for pvalueA'Alignment use 8;
   -- subtype PVALUEA is pvalueA; --  [Note: Type already defined (case sensitive issue)]
   type PPVALUEA is access all pvalueA;
   type pvalueW is record
      pv_valuename : LPWSTR;
      pv_valuelen : Interfaces.C.Int;
      pv_value_context : LPVOID;
      pv_type : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,pvalueW);
   for pvalueW use record
      pv_valuename at 0 range 0..63;
      pv_valuelen at 0 range 64..95;
      pv_value_context at 0 range 128..191;
      pv_type at 0 range 192..223;
   end record;
   for pvalueW'Size use 256;
   for pvalueW'Alignment use 8;
   -- subtype PVALUEW is pvalueW; --  [Note: Type already defined (case sensitive issue)]
   type PPVALUEW is access all pvalueW;
   subtype PVALUE is PVALUEA;
   subtype PPVALUE is PPVALUEA;
   subtype QUERYHANDLER is System.Address; -- [Note - CXType_FunctionProto] Profile - DWORD (LPVOID, PVALCONTEXT, DWORD, LPVOID, DWORD *, DWORD)
   type PQUERYHANDLER is access function (p1 : LPVOID ; p2 : PVALCONTEXT ; p3 : DWORD ; p4 : LPVOID ; p5 : access DWORD ; p6 : DWORD) return DWORD; -- DWORD (LPVOID, PVALCONTEXT, DWORD, LPVOID, DWORD *, DWORD)
   pragma Convention(C,PQUERYHANDLER);
   type provider_info is record
      pi_R0_1val : PQUERYHANDLER;
      pi_R0_allvals : PQUERYHANDLER;
      pi_R3_1val : PQUERYHANDLER;
      pi_R3_allvals : PQUERYHANDLER;
      pi_flags : DWORD;
      pi_key_context : LPVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,provider_info);
   for provider_info use record
      pi_R0_1val at 0 range 0..63;
      pi_R0_allvals at 0 range 64..127;
      pi_R3_1val at 0 range 128..191;
      pi_R3_allvals at 0 range 192..255;
      pi_flags at 0 range 256..287;
      pi_key_context at 0 range 320..383;
   end record;
   for provider_info'Size use 384;
   for provider_info'Alignment use 8;
   subtype REG_PROVIDER is provider_info;
   type PPROVIDER is access all provider_info;
   type value_entA is record
      ve_valuename : LPSTR;
      ve_valuelen : DWORD;
      ve_valueptr : DWORD_PTR;
      ve_type : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,value_entA);
   for value_entA use record
      ve_valuename at 0 range 0..63;
      ve_valuelen at 0 range 64..95;
      ve_valueptr at 0 range 128..191;
      ve_type at 0 range 192..223;
   end record;
   for value_entA'Size use 256;
   for value_entA'Alignment use 8;
   subtype VALENTA is value_entA;
   type PVALENTA is access all value_entA;
   type value_entW is record
      ve_valuename : LPWSTR;
      ve_valuelen : DWORD;
      ve_valueptr : DWORD_PTR;
      ve_type : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,value_entW);
   for value_entW use record
      ve_valuename at 0 range 0..63;
      ve_valuelen at 0 range 64..95;
      ve_valueptr at 0 range 128..191;
      ve_type at 0 range 192..223;
   end record;
   for value_entW'Size use 256;
   for value_entW'Alignment use 8;
   subtype VALENTW is value_entW;
   type PVALENTW is access all value_entW;
   subtype VALENT is VALENTA;
   subtype PVALENT is PVALENTA;
   function RegCloseKey(
      hKey_x : HKEY
   ) return LSTATUS;
   pragma import (Cpp,RegCloseKey,"RegCloseKey");
   function RegOverridePredefKey(
      hKey_x : HKEY;
      hNewHKey : HKEY
   ) return LSTATUS;
   pragma import (Cpp,RegOverridePredefKey,"RegOverridePredefKey");
   function RegOpenUserClassesRoot(
      hToken : HANDLE;
      dwOptions : DWORD;
      samDesired : REGSAM;
      phkResult : PHKEY
   ) return LSTATUS;
   pragma import (Cpp,RegOpenUserClassesRoot,"RegOpenUserClassesRoot");
   function RegOpenCurrentUser(
      samDesired : REGSAM;
      phkResult : PHKEY
   ) return LSTATUS;
   pragma import (Cpp,RegOpenCurrentUser,"RegOpenCurrentUser");
   function RegDisablePredefinedCache return LSTATUS;
   pragma import (Cpp,RegDisablePredefinedCache,"RegDisablePredefinedCache");
   function RegDisablePredefinedCacheEx return LSTATUS;
   pragma import (Cpp,RegDisablePredefinedCacheEx,"RegDisablePredefinedCacheEx");
   function RegConnectRegistryA(
      lpMachineName : LPCSTR;
      hKey_x : HKEY;
      phkResult : PHKEY
   ) return LSTATUS;
   pragma import (Cpp,RegConnectRegistryA,"RegConnectRegistryA");
   function RegConnectRegistryW(
      lpMachineName : LPCWSTR;
      hKey_x : HKEY;
      phkResult : PHKEY
   ) return LSTATUS;
   pragma import (Cpp,RegConnectRegistryW,"RegConnectRegistryW");
   function RegConnectRegistryExA(
      lpMachineName : LPCSTR;
      hKey_x : HKEY;
      Flags : ULONG;
      phkResult : PHKEY
   ) return LSTATUS;
   pragma import (Cpp,RegConnectRegistryExA,"RegConnectRegistryExA");
   function RegConnectRegistryExW(
      lpMachineName : LPCWSTR;
      hKey_x : HKEY;
      Flags : ULONG;
      phkResult : PHKEY
   ) return LSTATUS;
   pragma import (Cpp,RegConnectRegistryExW,"RegConnectRegistryExW");
   function RegCreateKeyA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      phkResult : PHKEY
   ) return LSTATUS;
   pragma import (Cpp,RegCreateKeyA,"RegCreateKeyA");
   function RegCreateKeyW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      phkResult : PHKEY
   ) return LSTATUS;
   pragma import (Cpp,RegCreateKeyW,"RegCreateKeyW");
   function RegCreateKeyExA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      Reserved : DWORD;
      lpClass : LPSTR;
      dwOptions : DWORD;
      samDesired : REGSAM;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      phkResult : PHKEY;
      lpdwDisposition : LPDWORD
   ) return LSTATUS;
   pragma import (Cpp,RegCreateKeyExA,"RegCreateKeyExA");
   function RegCreateKeyExW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      Reserved : DWORD;
      lpClass : LPWSTR;
      dwOptions : DWORD;
      samDesired : REGSAM;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      phkResult : PHKEY;
      lpdwDisposition : LPDWORD
   ) return LSTATUS;
   pragma import (Cpp,RegCreateKeyExW,"RegCreateKeyExW");
   function RegCreateKeyTransactedA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      Reserved : DWORD;
      lpClass : LPSTR;
      dwOptions : DWORD;
      samDesired : REGSAM;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      phkResult : PHKEY;
      lpdwDisposition : LPDWORD;
      hTransaction : HANDLE;
      pExtendedParemeter : PVOID
   ) return LSTATUS;
   pragma import (Cpp,RegCreateKeyTransactedA,"RegCreateKeyTransactedA");
   function RegCreateKeyTransactedW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      Reserved : DWORD;
      lpClass : LPWSTR;
      dwOptions : DWORD;
      samDesired : REGSAM;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      phkResult : PHKEY;
      lpdwDisposition : LPDWORD;
      hTransaction : HANDLE;
      pExtendedParemeter : PVOID
   ) return LSTATUS;
   pragma import (Cpp,RegCreateKeyTransactedW,"RegCreateKeyTransactedW");
   function RegDeleteKeyA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR
   ) return LSTATUS;
   pragma import (Cpp,RegDeleteKeyA,"RegDeleteKeyA");
   function RegDeleteKeyW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR
   ) return LSTATUS;
   pragma import (Cpp,RegDeleteKeyW,"RegDeleteKeyW");
   function RegDeleteKeyExA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      samDesired : REGSAM;
      Reserved : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegDeleteKeyExA,"RegDeleteKeyExA");
   function RegDeleteKeyExW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      samDesired : REGSAM;
      Reserved : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegDeleteKeyExW,"RegDeleteKeyExW");
   function RegDeleteKeyTransactedA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      samDesired : REGSAM;
      Reserved : DWORD;
      hTransaction : HANDLE;
      pExtendedParameter : PVOID
   ) return LSTATUS;
   pragma import (Cpp,RegDeleteKeyTransactedA,"RegDeleteKeyTransactedA");
   function RegDeleteKeyTransactedW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      samDesired : REGSAM;
      Reserved : DWORD;
      hTransaction : HANDLE;
      pExtendedParameter : PVOID
   ) return LSTATUS;
   pragma import (Cpp,RegDeleteKeyTransactedW,"RegDeleteKeyTransactedW");
   function RegDisableReflectionKey(
      hBase : HKEY
   ) return LONG;
   pragma import (Cpp,RegDisableReflectionKey,"RegDisableReflectionKey");
   function RegEnableReflectionKey(
      hBase : HKEY
   ) return LONG;
   pragma import (Cpp,RegEnableReflectionKey,"RegEnableReflectionKey");
   function RegQueryReflectionKey(
      hBase : HKEY;
      bIsReflectionDisabled : access BOOL
   ) return LONG;
   pragma import (Cpp,RegQueryReflectionKey,"RegQueryReflectionKey");
   function RegDeleteValueA(
      hKey_x : HKEY;
      lpValueName : LPCSTR
   ) return LSTATUS;
   pragma import (Cpp,RegDeleteValueA,"RegDeleteValueA");
   function RegDeleteValueW(
      hKey_x : HKEY;
      lpValueName : LPCWSTR
   ) return LSTATUS;
   pragma import (Cpp,RegDeleteValueW,"RegDeleteValueW");
   function RegEnumKeyA(
      hKey_x : HKEY;
      dwIndex : DWORD;
      lpName : LPSTR;
      cchName : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegEnumKeyA,"RegEnumKeyA");
   function RegEnumKeyW(
      hKey_x : HKEY;
      dwIndex : DWORD;
      lpName : LPWSTR;
      cchName : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegEnumKeyW,"RegEnumKeyW");
   function RegEnumKeyExA(
      hKey_x : HKEY;
      dwIndex : DWORD;
      lpName : LPSTR;
      lpcchName : LPDWORD;
      lpReserved : LPDWORD;
      lpClass : LPSTR;
      lpcchClass : LPDWORD;
      lpftLastWriteTime : PFILETIME
   ) return LSTATUS;
   pragma import (Cpp,RegEnumKeyExA,"RegEnumKeyExA");
   function RegEnumKeyExW(
      hKey_x : HKEY;
      dwIndex : DWORD;
      lpName : LPWSTR;
      lpcchName : LPDWORD;
      lpReserved : LPDWORD;
      lpClass : LPWSTR;
      lpcchClass : LPDWORD;
      lpftLastWriteTime : PFILETIME
   ) return LSTATUS;
   pragma import (Cpp,RegEnumKeyExW,"RegEnumKeyExW");
   function RegEnumValueA(
      hKey_x : HKEY;
      dwIndex : DWORD;
      lpValueName : LPSTR;
      lpcchValueName : LPDWORD;
      lpReserved : LPDWORD;
      lpType : LPDWORD;
      lpData : LPBYTE;
      lpcbData : LPDWORD
   ) return LSTATUS;
   pragma import (Cpp,RegEnumValueA,"RegEnumValueA");
   function RegEnumValueW(
      hKey_x : HKEY;
      dwIndex : DWORD;
      lpValueName : LPWSTR;
      lpcchValueName : LPDWORD;
      lpReserved : LPDWORD;
      lpType : LPDWORD;
      lpData : LPBYTE;
      lpcbData : LPDWORD
   ) return LSTATUS;
   pragma import (Cpp,RegEnumValueW,"RegEnumValueW");
   function RegFlushKey(
      hKey_x : HKEY
   ) return LSTATUS;
   pragma import (Cpp,RegFlushKey,"RegFlushKey");
   function RegGetKeySecurity(
      hKey_x : HKEY;
      SecurityInformation : SECURITY_INFORMATION;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      lpcbSecurityDescriptor : LPDWORD
   ) return LSTATUS;
   pragma import (Cpp,RegGetKeySecurity,"RegGetKeySecurity");
   function RegLoadKeyA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      lpFile : LPCSTR
   ) return LSTATUS;
   pragma import (Cpp,RegLoadKeyA,"RegLoadKeyA");
   function RegLoadKeyW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      lpFile : LPCWSTR
   ) return LSTATUS;
   pragma import (Cpp,RegLoadKeyW,"RegLoadKeyW");
   function RegNotifyChangeKeyValue(
      hKey_x : HKEY;
      bWatchSubtree : BOOL;
      dwNotifyFilter : DWORD;
      hEvent : HANDLE;
      fAsynchronous : BOOL
   ) return LSTATUS;
   pragma import (Cpp,RegNotifyChangeKeyValue,"RegNotifyChangeKeyValue");
   function RegOpenKeyA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      phkResult : PHKEY
   ) return LSTATUS;
   pragma import (Cpp,RegOpenKeyA,"RegOpenKeyA");
   function RegOpenKeyW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      phkResult : PHKEY
   ) return LSTATUS;
   pragma import (Cpp,RegOpenKeyW,"RegOpenKeyW");
   function RegOpenKeyExA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      ulOptions : DWORD;
      samDesired : REGSAM;
      phkResult : PHKEY
   ) return LSTATUS;
   pragma import (Cpp,RegOpenKeyExA,"RegOpenKeyExA");
   function RegOpenKeyExW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      ulOptions : DWORD;
      samDesired : REGSAM;
      phkResult : PHKEY
   ) return LSTATUS;
   pragma import (Cpp,RegOpenKeyExW,"RegOpenKeyExW");
   function RegOpenKeyTransactedA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      ulOptions : DWORD;
      samDesired : REGSAM;
      phkResult : PHKEY;
      hTransaction : HANDLE;
      pExtendedParemeter : PVOID
   ) return LSTATUS;
   pragma import (Cpp,RegOpenKeyTransactedA,"RegOpenKeyTransactedA");
   function RegOpenKeyTransactedW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      ulOptions : DWORD;
      samDesired : REGSAM;
      phkResult : PHKEY;
      hTransaction : HANDLE;
      pExtendedParemeter : PVOID
   ) return LSTATUS;
   pragma import (Cpp,RegOpenKeyTransactedW,"RegOpenKeyTransactedW");
   function RegQueryInfoKeyA(
      hKey_x : HKEY;
      lpClass : LPSTR;
      lpcchClass : LPDWORD;
      lpReserved : LPDWORD;
      lpcSubKeys : LPDWORD;
      lpcbMaxSubKeyLen : LPDWORD;
      lpcbMaxClassLen : LPDWORD;
      lpcValues : LPDWORD;
      lpcbMaxValueNameLen : LPDWORD;
      lpcbMaxValueLen : LPDWORD;
      lpcbSecurityDescriptor : LPDWORD;
      lpftLastWriteTime : PFILETIME
   ) return LSTATUS;
   pragma import (Cpp,RegQueryInfoKeyA,"RegQueryInfoKeyA");
   function RegQueryInfoKeyW(
      hKey_x : HKEY;
      lpClass : LPWSTR;
      lpcchClass : LPDWORD;
      lpReserved : LPDWORD;
      lpcSubKeys : LPDWORD;
      lpcbMaxSubKeyLen : LPDWORD;
      lpcbMaxClassLen : LPDWORD;
      lpcValues : LPDWORD;
      lpcbMaxValueNameLen : LPDWORD;
      lpcbMaxValueLen : LPDWORD;
      lpcbSecurityDescriptor : LPDWORD;
      lpftLastWriteTime : PFILETIME
   ) return LSTATUS;
   pragma import (Cpp,RegQueryInfoKeyW,"RegQueryInfoKeyW");
   function RegQueryValueA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      lpData : LPSTR;
      lpcbData : PLONG
   ) return LSTATUS;
   pragma import (Cpp,RegQueryValueA,"RegQueryValueA");
   function RegQueryValueW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      lpData : LPWSTR;
      lpcbData : PLONG
   ) return LSTATUS;
   pragma import (Cpp,RegQueryValueW,"RegQueryValueW");
   function RegQueryMultipleValuesA(
      hKey_x : HKEY;
      val_list : PVALENTA;
      num_vals : DWORD;
      lpValueBuf : LPSTR;
      ldwTotsize : LPDWORD
   ) return LSTATUS;
   pragma import (Cpp,RegQueryMultipleValuesA,"RegQueryMultipleValuesA");
   function RegQueryMultipleValuesW(
      hKey_x : HKEY;
      val_list : PVALENTW;
      num_vals : DWORD;
      lpValueBuf : LPWSTR;
      ldwTotsize : LPDWORD
   ) return LSTATUS;
   pragma import (Cpp,RegQueryMultipleValuesW,"RegQueryMultipleValuesW");
   function RegQueryValueExA(
      hKey_x : HKEY;
      lpValueName : LPCSTR;
      lpReserved : LPDWORD;
      lpType : LPDWORD;
      lpData : LPBYTE;
      lpcbData : LPDWORD
   ) return LSTATUS;
   pragma import (Cpp,RegQueryValueExA,"RegQueryValueExA");
   function RegQueryValueExW(
      hKey_x : HKEY;
      lpValueName : LPCWSTR;
      lpReserved : LPDWORD;
      lpType : LPDWORD;
      lpData : LPBYTE;
      lpcbData : LPDWORD
   ) return LSTATUS;
   pragma import (Cpp,RegQueryValueExW,"RegQueryValueExW");
   function RegReplaceKeyA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      lpNewFile : LPCSTR;
      lpOldFile : LPCSTR
   ) return LSTATUS;
   pragma import (Cpp,RegReplaceKeyA,"RegReplaceKeyA");
   function RegReplaceKeyW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      lpNewFile : LPCWSTR;
      lpOldFile : LPCWSTR
   ) return LSTATUS;
   pragma import (Cpp,RegReplaceKeyW,"RegReplaceKeyW");
   function RegRestoreKeyA(
      hKey_x : HKEY;
      lpFile : LPCSTR;
      dwFlags : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegRestoreKeyA,"RegRestoreKeyA");
   function RegRestoreKeyW(
      hKey_x : HKEY;
      lpFile : LPCWSTR;
      dwFlags : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegRestoreKeyW,"RegRestoreKeyW");
   function RegRenameKey(
      hKey_x : HKEY;
      lpSubKeyName : LPCWSTR;
      lpNewKeyName : LPCWSTR
   ) return LSTATUS;
   pragma import (Cpp,RegRenameKey,"RegRenameKey");
   function RegSaveKeyA(
      hKey_x : HKEY;
      lpFile : LPCSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return LSTATUS;
   pragma import (Cpp,RegSaveKeyA,"RegSaveKeyA");
   function RegSaveKeyW(
      hKey_x : HKEY;
      lpFile : LPCWSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES
   ) return LSTATUS;
   pragma import (Cpp,RegSaveKeyW,"RegSaveKeyW");
   function RegSetKeySecurity(
      hKey_x : HKEY;
      SecurityInformation : SECURITY_INFORMATION;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR
   ) return LSTATUS;
   pragma import (Cpp,RegSetKeySecurity,"RegSetKeySecurity");
   function RegSetValueA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      dwType : DWORD;
      lpData : LPCSTR;
      cbData : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegSetValueA,"RegSetValueA");
   function RegSetValueW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      dwType : DWORD;
      lpData : LPCWSTR;
      cbData : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegSetValueW,"RegSetValueW");
   function RegSetValueExA(
      hKey_x : HKEY;
      lpValueName : LPCSTR;
      Reserved : DWORD;
      dwType : DWORD;
      lpData : access constant BYTE;
      cbData : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegSetValueExA,"RegSetValueExA");
   function RegSetValueExW(
      hKey_x : HKEY;
      lpValueName : LPCWSTR;
      Reserved : DWORD;
      dwType : DWORD;
      lpData : access constant BYTE;
      cbData : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegSetValueExW,"RegSetValueExW");
   function RegUnLoadKeyA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR
   ) return LSTATUS;
   pragma import (Cpp,RegUnLoadKeyA,"RegUnLoadKeyA");
   function RegUnLoadKeyW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR
   ) return LSTATUS;
   pragma import (Cpp,RegUnLoadKeyW,"RegUnLoadKeyW");
   function RegDeleteKeyValueA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      lpValueName : LPCSTR
   ) return LSTATUS;
   pragma import (Cpp,RegDeleteKeyValueA,"RegDeleteKeyValueA");
   function RegDeleteKeyValueW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      lpValueName : LPCWSTR
   ) return LSTATUS;
   pragma import (Cpp,RegDeleteKeyValueW,"RegDeleteKeyValueW");
   function RegSetKeyValueA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR;
      lpValueName : LPCSTR;
      dwType : DWORD;
      lpData : LPCVOID;
      cbData : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegSetKeyValueA,"RegSetKeyValueA");
   function RegSetKeyValueW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR;
      lpValueName : LPCWSTR;
      dwType : DWORD;
      lpData : LPCVOID;
      cbData : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegSetKeyValueW,"RegSetKeyValueW");
   function RegDeleteTreeA(
      hKey_x : HKEY;
      lpSubKey : LPCSTR
   ) return LSTATUS;
   pragma import (Cpp,RegDeleteTreeA,"RegDeleteTreeA");
   function RegDeleteTreeW(
      hKey_x : HKEY;
      lpSubKey : LPCWSTR
   ) return LSTATUS;
   pragma import (Cpp,RegDeleteTreeW,"RegDeleteTreeW");
   function RegCopyTreeA(
      hKeySrc : HKEY;
      lpSubKey : LPCSTR;
      hKeyDest : HKEY
   ) return LSTATUS;
   pragma import (Cpp,RegCopyTreeA,"RegCopyTreeA");
   function RegGetValueA(
      hkey_x : HKEY;
      lpSubKey : LPCSTR;
      lpValue : LPCSTR;
      dwFlags : DWORD;
      pdwType : LPDWORD;
      pvData : PVOID;
      pcbData : LPDWORD
   ) return LSTATUS;
   pragma import (Cpp,RegGetValueA,"RegGetValueA");
   function RegGetValueW(
      hkey_x : HKEY;
      lpSubKey : LPCWSTR;
      lpValue : LPCWSTR;
      dwFlags : DWORD;
      pdwType : LPDWORD;
      pvData : PVOID;
      pcbData : LPDWORD
   ) return LSTATUS;
   pragma import (Cpp,RegGetValueW,"RegGetValueW");
   function RegCopyTreeW(
      hKeySrc : HKEY;
      lpSubKey : LPCWSTR;
      hKeyDest : HKEY
   ) return LSTATUS;
   pragma import (Cpp,RegCopyTreeW,"RegCopyTreeW");
   function RegLoadMUIStringA(
      hKey_x : HKEY;
      pszValue : LPCSTR;
      pszOutBuf : LPSTR;
      cbOutBuf : DWORD;
      pcbData : LPDWORD;
      Flags : DWORD;
      pszDirectory : LPCSTR
   ) return LSTATUS;
   pragma import (Cpp,RegLoadMUIStringA,"RegLoadMUIStringA");
   function RegLoadMUIStringW(
      hKey_x : HKEY;
      pszValue : LPCWSTR;
      pszOutBuf : LPWSTR;
      cbOutBuf : DWORD;
      pcbData : LPDWORD;
      Flags : DWORD;
      pszDirectory : LPCWSTR
   ) return LSTATUS;
   pragma import (Cpp,RegLoadMUIStringW,"RegLoadMUIStringW");
   function RegLoadAppKeyA(
      lpFile : LPCSTR;
      phkResult : PHKEY;
      samDesired : REGSAM;
      dwOptions : DWORD;
      Reserved : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegLoadAppKeyA,"RegLoadAppKeyA");
   function RegLoadAppKeyW(
      lpFile : LPCWSTR;
      phkResult : PHKEY;
      samDesired : REGSAM;
      dwOptions : DWORD;
      Reserved : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegLoadAppKeyW,"RegLoadAppKeyW");
   function InitiateSystemShutdownA(
      lpMachineName : LPSTR;
      lpMessage : LPSTR;
      dwTimeout : DWORD;
      bForceAppsClosed : BOOL;
      bRebootAfterShutdown : BOOL
   ) return BOOL;
   pragma import (Cpp,InitiateSystemShutdownA,"InitiateSystemShutdownA");
   function InitiateSystemShutdownW(
      lpMachineName : LPWSTR;
      lpMessage : LPWSTR;
      dwTimeout : DWORD;
      bForceAppsClosed : BOOL;
      bRebootAfterShutdown : BOOL
   ) return BOOL;
   pragma import (Cpp,InitiateSystemShutdownW,"InitiateSystemShutdownW");
   function AbortSystemShutdownA(
      lpMachineName : LPSTR
   ) return BOOL;
   pragma import (Cpp,AbortSystemShutdownA,"AbortSystemShutdownA");
   function AbortSystemShutdownW(
      lpMachineName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,AbortSystemShutdownW,"AbortSystemShutdownW");
   function InitiateSystemShutdownExA(
      lpMachineName : LPSTR;
      lpMessage : LPSTR;
      dwTimeout : DWORD;
      bForceAppsClosed : BOOL;
      bRebootAfterShutdown : BOOL;
      dwReason : DWORD
   ) return BOOL;
   pragma import (Cpp,InitiateSystemShutdownExA,"InitiateSystemShutdownExA");
   function InitiateSystemShutdownExW(
      lpMachineName : LPWSTR;
      lpMessage : LPWSTR;
      dwTimeout : DWORD;
      bForceAppsClosed : BOOL;
      bRebootAfterShutdown : BOOL;
      dwReason : DWORD
   ) return BOOL;
   pragma import (Cpp,InitiateSystemShutdownExW,"InitiateSystemShutdownExW");
   function InitiateShutdownA(
      lpMachineName : LPSTR;
      lpMessage : LPSTR;
      dwGracePeriod : DWORD;
      dwShutdownFlags : DWORD;
      dwReason : DWORD
   ) return DWORD;
   pragma import (Cpp,InitiateShutdownA,"InitiateShutdownA");
   function InitiateShutdownW(
      lpMachineName : LPWSTR;
      lpMessage : LPWSTR;
      dwGracePeriod : DWORD;
      dwShutdownFlags : DWORD;
      dwReason : DWORD
   ) return DWORD;
   pragma import (Cpp,InitiateShutdownW,"InitiateShutdownW");
   function CheckForHiberboot(
      pHiberboot : PBOOLEAN;
      bClearFlag : BOOLEAN
   ) return DWORD;
   pragma import (Cpp,CheckForHiberboot,"CheckForHiberboot");
   function RegSaveKeyExA(
      hKey_x : HKEY;
      lpFile : LPCSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      Flags : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegSaveKeyExA,"RegSaveKeyExA");
   function RegSaveKeyExW(
      hKey_x : HKEY;
      lpFile : LPCWSTR;
      lpSecurityAttributes : LPSECURITY_ATTRIBUTES;
      Flags : DWORD
   ) return LSTATUS;
   pragma import (Cpp,RegSaveKeyExW,"RegSaveKeyExW");
   -- #include <winnetwk.h>
   type NETRESOURCEA_x is record
      dwScope : DWORD;
      dwType : DWORD;
      dwDisplayType : DWORD;
      dwUsage : DWORD;
      lpLocalName : LPSTR;
      lpRemoteName : LPSTR;
      lpComment : LPSTR;
      lpProvider : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,NETRESOURCEA_x);
   for NETRESOURCEA_x use record
      dwScope at 0 range 0..31;
      dwType at 0 range 32..63;
      dwDisplayType at 0 range 64..95;
      dwUsage at 0 range 96..127;
      lpLocalName at 0 range 128..191;
      lpRemoteName at 0 range 192..255;
      lpComment at 0 range 256..319;
      lpProvider at 0 range 320..383;
   end record;
   for NETRESOURCEA_x'Size use 384;
   for NETRESOURCEA_x'Alignment use 8;
   subtype NETRESOURCEA is NETRESOURCEA_x;
   type LPNETRESOURCEA is access all NETRESOURCEA_x;
   type NETRESOURCEW_x is record
      dwScope : DWORD;
      dwType : DWORD;
      dwDisplayType : DWORD;
      dwUsage : DWORD;
      lpLocalName : LPWSTR;
      lpRemoteName : LPWSTR;
      lpComment : LPWSTR;
      lpProvider : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,NETRESOURCEW_x);
   for NETRESOURCEW_x use record
      dwScope at 0 range 0..31;
      dwType at 0 range 32..63;
      dwDisplayType at 0 range 64..95;
      dwUsage at 0 range 96..127;
      lpLocalName at 0 range 128..191;
      lpRemoteName at 0 range 192..255;
      lpComment at 0 range 256..319;
      lpProvider at 0 range 320..383;
   end record;
   for NETRESOURCEW_x'Size use 384;
   for NETRESOURCEW_x'Alignment use 8;
   subtype NETRESOURCEW is NETRESOURCEW_x;
   type LPNETRESOURCEW is access all NETRESOURCEW_x;
   subtype NETRESOURCE is NETRESOURCEA;
   subtype LPNETRESOURCE is LPNETRESOURCEA;
   function WNetAddConnectionA(
      lpRemoteName : LPCSTR;
      lpPassword : LPCSTR;
      lpLocalName : LPCSTR
   ) return DWORD;
   pragma import (Cpp,WNetAddConnectionA,"WNetAddConnectionA");
   function WNetAddConnectionW(
      lpRemoteName : LPCWSTR;
      lpPassword : LPCWSTR;
      lpLocalName : LPCWSTR
   ) return DWORD;
   pragma import (Cpp,WNetAddConnectionW,"WNetAddConnectionW");
   function WNetAddConnection2A(
      lpNetResource_x : LPNETRESOURCEA;
      lpPassword : LPCSTR;
      lpUserName : LPCSTR;
      dwFlags : DWORD
   ) return DWORD;
   pragma import (Cpp,WNetAddConnection2A,"WNetAddConnection2A");
   function WNetAddConnection2W(
      lpNetResource_x : LPNETRESOURCEW;
      lpPassword : LPCWSTR;
      lpUserName : LPCWSTR;
      dwFlags : DWORD
   ) return DWORD;
   pragma import (Cpp,WNetAddConnection2W,"WNetAddConnection2W");
   function WNetAddConnection3A(
      hwndOwner : HWND;
      lpNetResource_x : LPNETRESOURCEA;
      lpPassword : LPCSTR;
      lpUserName : LPCSTR;
      dwFlags : DWORD
   ) return DWORD;
   pragma import (Cpp,WNetAddConnection3A,"WNetAddConnection3A");
   function WNetAddConnection3W(
      hwndOwner : HWND;
      lpNetResource_x : LPNETRESOURCEW;
      lpPassword : LPCWSTR;
      lpUserName : LPCWSTR;
      dwFlags : DWORD
   ) return DWORD;
   pragma import (Cpp,WNetAddConnection3W,"WNetAddConnection3W");
   function WNetAddConnection4A(
      hwndOwner : HWND;
      lpNetResource_x : LPNETRESOURCEA;
      pAuthBuffer : PVOID;
      cbAuthBuffer : DWORD;
      dwFlags : DWORD;
      lpUseOptions : PBYTE;
      cbUseOptions : DWORD
   ) return DWORD;
   pragma import (Cpp,WNetAddConnection4A,"WNetAddConnection4A");
   function WNetAddConnection4W(
      hwndOwner : HWND;
      lpNetResource_x : LPNETRESOURCEW;
      pAuthBuffer : PVOID;
      cbAuthBuffer : DWORD;
      dwFlags : DWORD;
      lpUseOptions : PBYTE;
      cbUseOptions : DWORD
   ) return DWORD;
   pragma import (Cpp,WNetAddConnection4W,"WNetAddConnection4W");
   function WNetCancelConnectionA(
      lpName : LPCSTR;
      fForce : BOOL
   ) return DWORD;
   pragma import (Cpp,WNetCancelConnectionA,"WNetCancelConnectionA");
   function WNetCancelConnectionW(
      lpName : LPCWSTR;
      fForce : BOOL
   ) return DWORD;
   pragma import (Cpp,WNetCancelConnectionW,"WNetCancelConnectionW");
   function WNetCancelConnection2A(
      lpName : LPCSTR;
      dwFlags : DWORD;
      fForce : BOOL
   ) return DWORD;
   pragma import (Cpp,WNetCancelConnection2A,"WNetCancelConnection2A");
   function WNetCancelConnection2W(
      lpName : LPCWSTR;
      dwFlags : DWORD;
      fForce : BOOL
   ) return DWORD;
   pragma import (Cpp,WNetCancelConnection2W,"WNetCancelConnection2W");
   function WNetGetConnectionA(
      lpLocalName : LPCSTR;
      lpRemoteName : LPSTR;
      lpnLength : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetGetConnectionA,"WNetGetConnectionA");
   function WNetGetConnectionW(
      lpLocalName : LPCWSTR;
      lpRemoteName : LPWSTR;
      lpnLength : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetGetConnectionW,"WNetGetConnectionW");
   function WNetRestoreSingleConnectionW(
      hwndParent : HWND;
      lpDevice : LPCWSTR;
      fUseUI : BOOL
   ) return DWORD;
   pragma import (Cpp,WNetRestoreSingleConnectionW,"WNetRestoreSingleConnectionW");
   function WNetUseConnectionA(
      hwndOwner : HWND;
      lpNetResource_x : LPNETRESOURCEA;
      lpPassword : LPCSTR;
      lpUserId : LPCSTR;
      dwFlags : DWORD;
      lpAccessName : LPSTR;
      lpBufferSize : LPDWORD;
      lpResult : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetUseConnectionA,"WNetUseConnectionA");
   function WNetUseConnectionW(
      hwndOwner : HWND;
      lpNetResource_x : LPNETRESOURCEW;
      lpPassword : LPCWSTR;
      lpUserId : LPCWSTR;
      dwFlags : DWORD;
      lpAccessName : LPWSTR;
      lpBufferSize : LPDWORD;
      lpResult : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetUseConnectionW,"WNetUseConnectionW");
   function WNetUseConnection4A(
      hwndOwner : HWND;
      lpNetResource_x : LPNETRESOURCEA;
      pAuthBuffer : PVOID;
      cbAuthBuffer : DWORD;
      dwFlags : DWORD;
      lpUseOptions : PBYTE;
      cbUseOptions : DWORD;
      lpAccessName : LPSTR;
      lpBufferSize : LPDWORD;
      lpResult : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetUseConnection4A,"WNetUseConnection4A");
   function WNetUseConnection4W(
      hwndOwner : HWND;
      lpNetResource_x : LPNETRESOURCEW;
      pAuthBuffer : PVOID;
      cbAuthBuffer : DWORD;
      dwFlags : DWORD;
      lpUseOptions : PBYTE;
      cbUseOptions : DWORD;
      lpAccessName : LPWSTR;
      lpBufferSize : LPDWORD;
      lpResult : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetUseConnection4W,"WNetUseConnection4W");
   function WNetConnectionDialog(
      hwnd_x : HWND;
      dwType : DWORD
   ) return DWORD;
   pragma import (Cpp,WNetConnectionDialog,"WNetConnectionDialog");
   function WNetDisconnectDialog(
      hwnd_x : HWND;
      dwType : DWORD
   ) return DWORD;
   pragma import (Cpp,WNetDisconnectDialog,"WNetDisconnectDialog");
   type CONNECTDLGSTRUCTA_x is record
      cbStructure : DWORD;
      hwndOwner : HWND;
      lpConnRes : LPNETRESOURCEA;
      dwFlags : DWORD;
      dwDevNum : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CONNECTDLGSTRUCTA_x);
   for CONNECTDLGSTRUCTA_x use record
      cbStructure at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      lpConnRes at 0 range 128..191;
      dwFlags at 0 range 192..223;
      dwDevNum at 0 range 224..255;
   end record;
   for CONNECTDLGSTRUCTA_x'Size use 256;
   for CONNECTDLGSTRUCTA_x'Alignment use 8;
   subtype CONNECTDLGSTRUCTA is CONNECTDLGSTRUCTA_x;
   type LPCONNECTDLGSTRUCTA is access all CONNECTDLGSTRUCTA_x;
   type CONNECTDLGSTRUCTW_x is record
      cbStructure : DWORD;
      hwndOwner : HWND;
      lpConnRes : LPNETRESOURCEW;
      dwFlags : DWORD;
      dwDevNum : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CONNECTDLGSTRUCTW_x);
   for CONNECTDLGSTRUCTW_x use record
      cbStructure at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      lpConnRes at 0 range 128..191;
      dwFlags at 0 range 192..223;
      dwDevNum at 0 range 224..255;
   end record;
   for CONNECTDLGSTRUCTW_x'Size use 256;
   for CONNECTDLGSTRUCTW_x'Alignment use 8;
   subtype CONNECTDLGSTRUCTW is CONNECTDLGSTRUCTW_x;
   type LPCONNECTDLGSTRUCTW is access all CONNECTDLGSTRUCTW_x;
   subtype CONNECTDLGSTRUCT is CONNECTDLGSTRUCTA;
   subtype LPCONNECTDLGSTRUCT is LPCONNECTDLGSTRUCTA;
   function WNetConnectionDialog1A(
      lpConnDlgStruct : LPCONNECTDLGSTRUCTA
   ) return DWORD;
   pragma import (Cpp,WNetConnectionDialog1A,"WNetConnectionDialog1A");
   function WNetConnectionDialog1W(
      lpConnDlgStruct : LPCONNECTDLGSTRUCTW
   ) return DWORD;
   pragma import (Cpp,WNetConnectionDialog1W,"WNetConnectionDialog1W");
   type DISCDLGSTRUCTA_x is record
      cbStructure : DWORD;
      hwndOwner : HWND;
      lpLocalName : LPSTR;
      lpRemoteName : LPSTR;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DISCDLGSTRUCTA_x);
   for DISCDLGSTRUCTA_x use record
      cbStructure at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      lpLocalName at 0 range 128..191;
      lpRemoteName at 0 range 192..255;
      dwFlags at 0 range 256..287;
   end record;
   for DISCDLGSTRUCTA_x'Size use 320;
   for DISCDLGSTRUCTA_x'Alignment use 8;
   subtype DISCDLGSTRUCTA is DISCDLGSTRUCTA_x;
   type LPDISCDLGSTRUCTA is access all DISCDLGSTRUCTA_x;
   type DISCDLGSTRUCTW_x is record
      cbStructure : DWORD;
      hwndOwner : HWND;
      lpLocalName : LPWSTR;
      lpRemoteName : LPWSTR;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DISCDLGSTRUCTW_x);
   for DISCDLGSTRUCTW_x use record
      cbStructure at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      lpLocalName at 0 range 128..191;
      lpRemoteName at 0 range 192..255;
      dwFlags at 0 range 256..287;
   end record;
   for DISCDLGSTRUCTW_x'Size use 320;
   for DISCDLGSTRUCTW_x'Alignment use 8;
   subtype DISCDLGSTRUCTW is DISCDLGSTRUCTW_x;
   type LPDISCDLGSTRUCTW is access all DISCDLGSTRUCTW_x;
   subtype DISCDLGSTRUCT is DISCDLGSTRUCTA;
   subtype LPDISCDLGSTRUCT is LPDISCDLGSTRUCTA;
   function WNetDisconnectDialog1A(
      lpConnDlgStruct : LPDISCDLGSTRUCTA
   ) return DWORD;
   pragma import (Cpp,WNetDisconnectDialog1A,"WNetDisconnectDialog1A");
   function WNetDisconnectDialog1W(
      lpConnDlgStruct : LPDISCDLGSTRUCTW
   ) return DWORD;
   pragma import (Cpp,WNetDisconnectDialog1W,"WNetDisconnectDialog1W");
   function WNetOpenEnumA(
      dwScope : DWORD;
      dwType : DWORD;
      dwUsage : DWORD;
      lpNetResource_x : LPNETRESOURCEA;
      lphEnum : LPHANDLE
   ) return DWORD;
   pragma import (Cpp,WNetOpenEnumA,"WNetOpenEnumA");
   function WNetOpenEnumW(
      dwScope : DWORD;
      dwType : DWORD;
      dwUsage : DWORD;
      lpNetResource_x : LPNETRESOURCEW;
      lphEnum : LPHANDLE
   ) return DWORD;
   pragma import (Cpp,WNetOpenEnumW,"WNetOpenEnumW");
   function WNetEnumResourceA(
      hEnum : HANDLE;
      lpcCount : LPDWORD;
      lpBuffer : LPVOID;
      lpBufferSize : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetEnumResourceA,"WNetEnumResourceA");
   function WNetEnumResourceW(
      hEnum : HANDLE;
      lpcCount : LPDWORD;
      lpBuffer : LPVOID;
      lpBufferSize : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetEnumResourceW,"WNetEnumResourceW");
   function WNetCloseEnum(
      hEnum : HANDLE
   ) return DWORD;
   pragma import (Cpp,WNetCloseEnum,"WNetCloseEnum");
   function WNetGetResourceParentA(
      lpNetResource_x : LPNETRESOURCEA;
      lpBuffer : LPVOID;
      lpcbBuffer : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetGetResourceParentA,"WNetGetResourceParentA");
   function WNetGetResourceParentW(
      lpNetResource_x : LPNETRESOURCEW;
      lpBuffer : LPVOID;
      lpcbBuffer : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetGetResourceParentW,"WNetGetResourceParentW");
   function WNetGetResourceInformationA(
      lpNetResource_x : LPNETRESOURCEA;
      lpBuffer : LPVOID;
      lpcbBuffer : LPDWORD;
      lplpSystem : access LPSTR
   ) return DWORD;
   pragma import (Cpp,WNetGetResourceInformationA,"WNetGetResourceInformationA");
   function WNetGetResourceInformationW(
      lpNetResource_x : LPNETRESOURCEW;
      lpBuffer : LPVOID;
      lpcbBuffer : LPDWORD;
      lplpSystem : access LPWSTR
   ) return DWORD;
   pragma import (Cpp,WNetGetResourceInformationW,"WNetGetResourceInformationW");
   type UNIVERSAL_NAME_INFOA_x is record
      lpUniversalName : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,UNIVERSAL_NAME_INFOA_x);
   for UNIVERSAL_NAME_INFOA_x use record
      lpUniversalName at 0 range 0..63;
   end record;
   for UNIVERSAL_NAME_INFOA_x'Size use 64;
   for UNIVERSAL_NAME_INFOA_x'Alignment use 8;
   subtype UNIVERSAL_NAME_INFOA is UNIVERSAL_NAME_INFOA_x;
   type LPUNIVERSAL_NAME_INFOA is access all UNIVERSAL_NAME_INFOA_x;
   type UNIVERSAL_NAME_INFOW_x is record
      lpUniversalName : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,UNIVERSAL_NAME_INFOW_x);
   for UNIVERSAL_NAME_INFOW_x use record
      lpUniversalName at 0 range 0..63;
   end record;
   for UNIVERSAL_NAME_INFOW_x'Size use 64;
   for UNIVERSAL_NAME_INFOW_x'Alignment use 8;
   subtype UNIVERSAL_NAME_INFOW is UNIVERSAL_NAME_INFOW_x;
   type LPUNIVERSAL_NAME_INFOW is access all UNIVERSAL_NAME_INFOW_x;
   subtype UNIVERSAL_NAME_INFO is UNIVERSAL_NAME_INFOA;
   subtype LPUNIVERSAL_NAME_INFO is LPUNIVERSAL_NAME_INFOA;
   type REMOTE_NAME_INFOA_x is record
      lpUniversalName : LPSTR;
      lpConnectionName : LPSTR;
      lpRemainingPath : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,REMOTE_NAME_INFOA_x);
   for REMOTE_NAME_INFOA_x use record
      lpUniversalName at 0 range 0..63;
      lpConnectionName at 0 range 64..127;
      lpRemainingPath at 0 range 128..191;
   end record;
   for REMOTE_NAME_INFOA_x'Size use 192;
   for REMOTE_NAME_INFOA_x'Alignment use 8;
   subtype REMOTE_NAME_INFOA is REMOTE_NAME_INFOA_x;
   type LPREMOTE_NAME_INFOA is access all REMOTE_NAME_INFOA_x;
   type REMOTE_NAME_INFOW_x is record
      lpUniversalName : LPWSTR;
      lpConnectionName : LPWSTR;
      lpRemainingPath : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,REMOTE_NAME_INFOW_x);
   for REMOTE_NAME_INFOW_x use record
      lpUniversalName at 0 range 0..63;
      lpConnectionName at 0 range 64..127;
      lpRemainingPath at 0 range 128..191;
   end record;
   for REMOTE_NAME_INFOW_x'Size use 192;
   for REMOTE_NAME_INFOW_x'Alignment use 8;
   subtype REMOTE_NAME_INFOW is REMOTE_NAME_INFOW_x;
   type LPREMOTE_NAME_INFOW is access all REMOTE_NAME_INFOW_x;
   subtype REMOTE_NAME_INFO is REMOTE_NAME_INFOA;
   subtype LPREMOTE_NAME_INFO is LPREMOTE_NAME_INFOA;
   function WNetGetUniversalNameA(
      lpLocalPath : LPCSTR;
      dwInfoLevel : DWORD;
      lpBuffer : LPVOID;
      lpBufferSize : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetGetUniversalNameA,"WNetGetUniversalNameA");
   function WNetGetUniversalNameW(
      lpLocalPath : LPCWSTR;
      dwInfoLevel : DWORD;
      lpBuffer : LPVOID;
      lpBufferSize : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetGetUniversalNameW,"WNetGetUniversalNameW");
   function WNetGetUserA(
      lpName : LPCSTR;
      lpUserName : LPSTR;
      lpnLength : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetGetUserA,"WNetGetUserA");
   function WNetGetUserW(
      lpName : LPCWSTR;
      lpUserName : LPWSTR;
      lpnLength : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetGetUserW,"WNetGetUserW");
   function WNetGetProviderNameA(
      dwNetType : DWORD;
      lpProviderName : LPSTR;
      lpBufferSize : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetGetProviderNameA,"WNetGetProviderNameA");
   function WNetGetProviderNameW(
      dwNetType : DWORD;
      lpProviderName : LPWSTR;
      lpBufferSize : LPDWORD
   ) return DWORD;
   pragma import (Cpp,WNetGetProviderNameW,"WNetGetProviderNameW");
   type NETINFOSTRUCT_x is record
      cbStructure : DWORD;
      dwProviderVersion : DWORD;
      dwStatus : DWORD;
      dwCharacteristics : DWORD;
      dwHandle : ULONG_PTR;
      wNetType : WORD;
      dwPrinters : DWORD;
      dwDrives : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,NETINFOSTRUCT_x);
   for NETINFOSTRUCT_x use record
      cbStructure at 0 range 0..31;
      dwProviderVersion at 0 range 32..63;
      dwStatus at 0 range 64..95;
      dwCharacteristics at 0 range 96..127;
      dwHandle at 0 range 128..191;
      wNetType at 0 range 192..207;
      dwPrinters at 0 range 224..255;
      dwDrives at 0 range 256..287;
   end record;
   for NETINFOSTRUCT_x'Size use 320;
   for NETINFOSTRUCT_x'Alignment use 8;
   subtype NETINFOSTRUCT is NETINFOSTRUCT_x;
   type LPNETINFOSTRUCT is access all NETINFOSTRUCT_x;
   function WNetGetNetworkInformationA(
      lpProvider : LPCSTR;
      lpNetInfoStruct_x : LPNETINFOSTRUCT
   ) return DWORD;
   pragma import (Cpp,WNetGetNetworkInformationA,"WNetGetNetworkInformationA");
   function WNetGetNetworkInformationW(
      lpProvider : LPCWSTR;
      lpNetInfoStruct_x : LPNETINFOSTRUCT
   ) return DWORD;
   pragma import (Cpp,WNetGetNetworkInformationW,"WNetGetNetworkInformationW");
   function WNetGetLastErrorA(
      lpError : LPDWORD;
      lpErrorBuf : LPSTR;
      nErrorBufSize : DWORD;
      lpNameBuf : LPSTR;
      nNameBufSize : DWORD
   ) return DWORD;
   pragma import (Cpp,WNetGetLastErrorA,"WNetGetLastErrorA");
   function WNetGetLastErrorW(
      lpError : LPDWORD;
      lpErrorBuf : LPWSTR;
      nErrorBufSize : DWORD;
      lpNameBuf : LPWSTR;
      nNameBufSize : DWORD
   ) return DWORD;
   pragma import (Cpp,WNetGetLastErrorW,"WNetGetLastErrorW");
   type NETCONNECTINFOSTRUCT_x is record
      cbStructure : DWORD;
      dwFlags : DWORD;
      dwSpeed : DWORD;
      dwDelay : DWORD;
      dwOptDataSize : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,NETCONNECTINFOSTRUCT_x);
   for NETCONNECTINFOSTRUCT_x use record
      cbStructure at 0 range 0..31;
      dwFlags at 0 range 32..63;
      dwSpeed at 0 range 64..95;
      dwDelay at 0 range 96..127;
      dwOptDataSize at 0 range 128..159;
   end record;
   for NETCONNECTINFOSTRUCT_x'Size use 160;
   for NETCONNECTINFOSTRUCT_x'Alignment use 4;
   subtype NETCONNECTINFOSTRUCT is NETCONNECTINFOSTRUCT_x;
   type LPNETCONNECTINFOSTRUCT is access all NETCONNECTINFOSTRUCT_x;
   function MultinetGetConnectionPerformanceA(
      lpNetResource_x : LPNETRESOURCEA;
      lpNetConnectInfoStruct_x : LPNETCONNECTINFOSTRUCT
   ) return DWORD;
   pragma import (Cpp,MultinetGetConnectionPerformanceA,"MultinetGetConnectionPerformanceA");
   function MultinetGetConnectionPerformanceW(
      lpNetResource_x : LPNETRESOURCEW;
      lpNetConnectInfoStruct_x : LPNETCONNECTINFOSTRUCT
   ) return DWORD;
   pragma import (Cpp,MultinetGetConnectionPerformanceW,"MultinetGetConnectionPerformanceW");
   -- #include <stralign.h>
   function uaw_CharUpperW(
      String : LPUWSTR
   ) return LPUWSTR;
   pragma import (Cpp,uaw_CharUpperW,"uaw_CharUpperW");
   function uaw_lstrcmpW(
      String1 : PCUWSTR;
      String2 : PCUWSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,uaw_lstrcmpW,"uaw_lstrcmpW");
   function uaw_lstrcmpiW(
      String1 : PCUWSTR;
      String2 : PCUWSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,uaw_lstrcmpiW,"uaw_lstrcmpiW");
   function uaw_lstrlenW(
      String : LPCUWSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,uaw_lstrlenW,"uaw_lstrlenW");
   function uaw_wcschr(
      String : PCUWSTR;
      Character : WCHAR
   ) return PUWSTR;
   pragma import (Cpp,uaw_wcschr,"uaw_wcschr");
   function uaw_wcscpy(
      Destination : PUWSTR;
      Source : PCUWSTR
   ) return PUWSTR;
   pragma import (Cpp,uaw_wcscpy,"uaw_wcscpy");
   function uaw_wcsicmp(
      String1 : PCUWSTR;
      String2 : PCUWSTR
   ) return Interfaces.C.Int;
   pragma import (Cpp,uaw_wcsicmp,"uaw_wcsicmp");
   function uaw_wcslen(
      String : PCUWSTR
   ) return size_t;
   pragma import (Cpp,uaw_wcslen,"uaw_wcslen");
   function uaw_wcsrchr(
      String : PCUWSTR;
      Character : WCHAR
   ) return PUWSTR;
   pragma import (Cpp,uaw_wcsrchr,"uaw_wcsrchr");
   -- ua_CharUpperW(); -- inlined function not supported
   -- ua_lstrcmpW(); -- inlined function not supported
   -- ua_lstrcmpiW(); -- inlined function not supported
   -- ua_lstrlenW(); -- inlined function not supported
   type PUWSTR_C is access constant WCHAR;
   -- ua_wcschr(); -- inlined function not supported
   -- ua_wcsrchr(); -- inlined function not supported
   -- ua_wcscpy(); -- inlined function not supported
   -- ua_wcscpy_s(); -- inlined function not supported
   -- ua_wcslen(); -- inlined function not supported
   -- ua_wcsicmp(); -- inlined function not supported
   -- #include <winsvc.h>
   type SERVICE_TRIGGER_CUSTOM_STATE_ID_Data_Array is array(1..2) of DWORD; -- Auto Generated Dependancy
   type SERVICE_TRIGGER_CUSTOM_STATE_ID is record
      Data : SERVICE_TRIGGER_CUSTOM_STATE_ID_Data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_TRIGGER_CUSTOM_STATE_ID);
   for SERVICE_TRIGGER_CUSTOM_STATE_ID use record
      Data at 0 range 0..63;
   end record;
   for SERVICE_TRIGGER_CUSTOM_STATE_ID'Size use 64;
   for SERVICE_TRIGGER_CUSTOM_STATE_ID'Alignment use 4;
   type Anonymous_Record_201_Data_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type Anonymous_Record_201 is record
      DataOffset : DWORD;
      Data : Anonymous_Record_201_Data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_201);
   for Anonymous_Record_201 use record
      DataOffset at 0 range 0..31;
      Data at 0 range 32..39;
   end record;
   for Anonymous_Record_201'Size use 64;
   for Anonymous_Record_201'Alignment use 4;
   type Anonymous_Record_200 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            CustomStateId : SERVICE_TRIGGER_CUSTOM_STATE_ID;
         when others => 
            field_1 : Anonymous_Record_201;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_200);
   pragma Unchecked_Union (Anonymous_Record_200);
   for Anonymous_Record_200'Size use 64;
   for Anonymous_Record_200'Alignment use 4;
   type SERVICE_CUSTOM_SYSTEM_STATE_CHANGE_DATA_ITEM_x is record
      field_1 : Anonymous_Record_200;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_CUSTOM_SYSTEM_STATE_CHANGE_DATA_ITEM_x);
   for SERVICE_CUSTOM_SYSTEM_STATE_CHANGE_DATA_ITEM_x use record
      field_1 at 0 range 0..63;
   end record;
   for SERVICE_CUSTOM_SYSTEM_STATE_CHANGE_DATA_ITEM_x'Size use 64;
   for SERVICE_CUSTOM_SYSTEM_STATE_CHANGE_DATA_ITEM_x'Alignment use 4;
   subtype SERVICE_CUSTOM_SYSTEM_STATE_CHANGE_DATA_ITEM is SERVICE_CUSTOM_SYSTEM_STATE_CHANGE_DATA_ITEM_x;
   type LPSERVICE_CUSTOM_SYSTEM_STATE_CHANGE_DATA_ITEM is access all SERVICE_CUSTOM_SYSTEM_STATE_CHANGE_DATA_ITEM_x;
   type SERVICE_DESCRIPTIONA_x is record
      lpDescription : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_DESCRIPTIONA_x);
   for SERVICE_DESCRIPTIONA_x use record
      lpDescription at 0 range 0..63;
   end record;
   for SERVICE_DESCRIPTIONA_x'Size use 64;
   for SERVICE_DESCRIPTIONA_x'Alignment use 8;
   subtype SERVICE_DESCRIPTIONA is SERVICE_DESCRIPTIONA_x;
   type LPSERVICE_DESCRIPTIONA is access all SERVICE_DESCRIPTIONA_x;
   type SERVICE_DESCRIPTIONW_x is record
      lpDescription : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_DESCRIPTIONW_x);
   for SERVICE_DESCRIPTIONW_x use record
      lpDescription at 0 range 0..63;
   end record;
   for SERVICE_DESCRIPTIONW_x'Size use 64;
   for SERVICE_DESCRIPTIONW_x'Alignment use 8;
   subtype SERVICE_DESCRIPTIONW is SERVICE_DESCRIPTIONW_x;
   type LPSERVICE_DESCRIPTIONW is access all SERVICE_DESCRIPTIONW_x;
   subtype SERVICE_DESCRIPTION is SERVICE_DESCRIPTIONA;
   subtype LPSERVICE_DESCRIPTION is LPSERVICE_DESCRIPTIONA;
   type SC_ACTION_TYPE_x is (
      SC_ACTION_NONE,
      SC_ACTION_RESTART,
      SC_ACTION_REBOOT,
      SC_ACTION_RUN_COMMAND,
      SC_ACTION_OWN_RESTART
   );
   for SC_ACTION_TYPE_x use (
      SC_ACTION_NONE => 0,
      SC_ACTION_RESTART => 1,
      SC_ACTION_REBOOT => 2,
      SC_ACTION_RUN_COMMAND => 3,
      SC_ACTION_OWN_RESTART => 4
   );
   for SC_ACTION_TYPE_x'Size use 32;
   subtype SC_ACTION_TYPE is SC_ACTION_TYPE_x;
   type SC_ACTION_x is record
      type_x : SC_ACTION_TYPE;
      delay_x : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SC_ACTION_x);
   for SC_ACTION_x use record
      type_x at 0 range 0..31;
      delay_x at 0 range 32..63;
   end record;
   for SC_ACTION_x'Size use 64;
   for SC_ACTION_x'Alignment use 4;
   subtype SC_ACTION is SC_ACTION_x;
   type LPSC_ACTION is access all SC_ACTION_x;
   type SERVICE_FAILURE_ACTIONSA_x is record
      dwResetPeriod : DWORD;
      lpRebootMsg : LPSTR;
      lpCommand : LPSTR;
      cActions : DWORD;
      lpsaActions : access SC_ACTION;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_FAILURE_ACTIONSA_x);
   for SERVICE_FAILURE_ACTIONSA_x use record
      dwResetPeriod at 0 range 0..31;
      lpRebootMsg at 0 range 64..127;
      lpCommand at 0 range 128..191;
      cActions at 0 range 192..223;
      lpsaActions at 0 range 256..319;
   end record;
   for SERVICE_FAILURE_ACTIONSA_x'Size use 320;
   for SERVICE_FAILURE_ACTIONSA_x'Alignment use 8;
   subtype SERVICE_FAILURE_ACTIONSA is SERVICE_FAILURE_ACTIONSA_x;
   type LPSERVICE_FAILURE_ACTIONSA is access all SERVICE_FAILURE_ACTIONSA_x;
   type SERVICE_FAILURE_ACTIONSW_x is record
      dwResetPeriod : DWORD;
      lpRebootMsg : LPWSTR;
      lpCommand : LPWSTR;
      cActions : DWORD;
      lpsaActions : access SC_ACTION;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_FAILURE_ACTIONSW_x);
   for SERVICE_FAILURE_ACTIONSW_x use record
      dwResetPeriod at 0 range 0..31;
      lpRebootMsg at 0 range 64..127;
      lpCommand at 0 range 128..191;
      cActions at 0 range 192..223;
      lpsaActions at 0 range 256..319;
   end record;
   for SERVICE_FAILURE_ACTIONSW_x'Size use 320;
   for SERVICE_FAILURE_ACTIONSW_x'Alignment use 8;
   subtype SERVICE_FAILURE_ACTIONSW is SERVICE_FAILURE_ACTIONSW_x;
   type LPSERVICE_FAILURE_ACTIONSW is access all SERVICE_FAILURE_ACTIONSW_x;
   subtype SERVICE_FAILURE_ACTIONS is SERVICE_FAILURE_ACTIONSA;
   subtype LPSERVICE_FAILURE_ACTIONS is LPSERVICE_FAILURE_ACTIONSA;
   type SERVICE_DELAYED_AUTO_START_INFO_x is record
      fDelayedAutostart : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_DELAYED_AUTO_START_INFO_x);
   for SERVICE_DELAYED_AUTO_START_INFO_x use record
      fDelayedAutostart at 0 range 0..31;
   end record;
   for SERVICE_DELAYED_AUTO_START_INFO_x'Size use 32;
   for SERVICE_DELAYED_AUTO_START_INFO_x'Alignment use 4;
   subtype SERVICE_DELAYED_AUTO_START_INFO is SERVICE_DELAYED_AUTO_START_INFO_x;
   type LPSERVICE_DELAYED_AUTO_START_INFO is access all SERVICE_DELAYED_AUTO_START_INFO_x;
   type SERVICE_FAILURE_ACTIONS_FLAG_x is record
      fFailureActionsOnNonCrashFailures : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_FAILURE_ACTIONS_FLAG_x);
   for SERVICE_FAILURE_ACTIONS_FLAG_x use record
      fFailureActionsOnNonCrashFailures at 0 range 0..31;
   end record;
   for SERVICE_FAILURE_ACTIONS_FLAG_x'Size use 32;
   for SERVICE_FAILURE_ACTIONS_FLAG_x'Alignment use 4;
   subtype SERVICE_FAILURE_ACTIONS_FLAG is SERVICE_FAILURE_ACTIONS_FLAG_x;
   type LPSERVICE_FAILURE_ACTIONS_FLAG is access all SERVICE_FAILURE_ACTIONS_FLAG_x;
   type SERVICE_SID_INFO_x is record
      dwServiceSidType : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_SID_INFO_x);
   for SERVICE_SID_INFO_x use record
      dwServiceSidType at 0 range 0..31;
   end record;
   for SERVICE_SID_INFO_x'Size use 32;
   for SERVICE_SID_INFO_x'Alignment use 4;
   subtype SERVICE_SID_INFO is SERVICE_SID_INFO_x;
   type LPSERVICE_SID_INFO is access all SERVICE_SID_INFO_x;
   type SERVICE_REQUIRED_PRIVILEGES_INFOA_x is record
      pmszRequiredPrivileges : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_REQUIRED_PRIVILEGES_INFOA_x);
   for SERVICE_REQUIRED_PRIVILEGES_INFOA_x use record
      pmszRequiredPrivileges at 0 range 0..63;
   end record;
   for SERVICE_REQUIRED_PRIVILEGES_INFOA_x'Size use 64;
   for SERVICE_REQUIRED_PRIVILEGES_INFOA_x'Alignment use 8;
   subtype SERVICE_REQUIRED_PRIVILEGES_INFOA is SERVICE_REQUIRED_PRIVILEGES_INFOA_x;
   type LPSERVICE_REQUIRED_PRIVILEGES_INFOA is access all SERVICE_REQUIRED_PRIVILEGES_INFOA_x;
   type SERVICE_REQUIRED_PRIVILEGES_INFOW_x is record
      pmszRequiredPrivileges : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_REQUIRED_PRIVILEGES_INFOW_x);
   for SERVICE_REQUIRED_PRIVILEGES_INFOW_x use record
      pmszRequiredPrivileges at 0 range 0..63;
   end record;
   for SERVICE_REQUIRED_PRIVILEGES_INFOW_x'Size use 64;
   for SERVICE_REQUIRED_PRIVILEGES_INFOW_x'Alignment use 8;
   subtype SERVICE_REQUIRED_PRIVILEGES_INFOW is SERVICE_REQUIRED_PRIVILEGES_INFOW_x;
   type LPSERVICE_REQUIRED_PRIVILEGES_INFOW is access all SERVICE_REQUIRED_PRIVILEGES_INFOW_x;
   subtype SERVICE_REQUIRED_PRIVILEGES_INFO is SERVICE_REQUIRED_PRIVILEGES_INFOA;
   subtype LPSERVICE_REQUIRED_PRIVILEGES_INFO is LPSERVICE_REQUIRED_PRIVILEGES_INFOA;
   type SERVICE_PRESHUTDOWN_INFO_x is record
      dwPreshutdownTimeout : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_PRESHUTDOWN_INFO_x);
   for SERVICE_PRESHUTDOWN_INFO_x use record
      dwPreshutdownTimeout at 0 range 0..31;
   end record;
   for SERVICE_PRESHUTDOWN_INFO_x'Size use 32;
   for SERVICE_PRESHUTDOWN_INFO_x'Alignment use 4;
   subtype SERVICE_PRESHUTDOWN_INFO is SERVICE_PRESHUTDOWN_INFO_x;
   type LPSERVICE_PRESHUTDOWN_INFO is access all SERVICE_PRESHUTDOWN_INFO_x;
   type SERVICE_TRIGGER_SPECIFIC_DATA_ITEM_x is record
      dwDataType : DWORD;
      cbData : DWORD;
      pData : PBYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_TRIGGER_SPECIFIC_DATA_ITEM_x);
   for SERVICE_TRIGGER_SPECIFIC_DATA_ITEM_x use record
      dwDataType at 0 range 0..31;
      cbData at 0 range 32..63;
      pData at 0 range 64..127;
   end record;
   for SERVICE_TRIGGER_SPECIFIC_DATA_ITEM_x'Size use 128;
   for SERVICE_TRIGGER_SPECIFIC_DATA_ITEM_x'Alignment use 8;
   subtype SERVICE_TRIGGER_SPECIFIC_DATA_ITEM is SERVICE_TRIGGER_SPECIFIC_DATA_ITEM_x;
   type PSERVICE_TRIGGER_SPECIFIC_DATA_ITEM is access all SERVICE_TRIGGER_SPECIFIC_DATA_ITEM_x;
   type SERVICE_TRIGGER_x is record
      dwTriggerType : DWORD;
      dwAction : DWORD;
      pTriggerSubtype : access GUID;
      cDataItems : DWORD;
      pDataItems : PSERVICE_TRIGGER_SPECIFIC_DATA_ITEM;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_TRIGGER_x);
   for SERVICE_TRIGGER_x use record
      dwTriggerType at 0 range 0..31;
      dwAction at 0 range 32..63;
      pTriggerSubtype at 0 range 64..127;
      cDataItems at 0 range 128..159;
      pDataItems at 0 range 192..255;
   end record;
   for SERVICE_TRIGGER_x'Size use 256;
   for SERVICE_TRIGGER_x'Alignment use 8;
   subtype SERVICE_TRIGGER is SERVICE_TRIGGER_x;
   type PSERVICE_TRIGGER is access all SERVICE_TRIGGER_x;
   type SERVICE_TRIGGER_INFO_x is record
      cTriggers : DWORD;
      pTriggers : PSERVICE_TRIGGER;
      pReserved : PBYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_TRIGGER_INFO_x);
   for SERVICE_TRIGGER_INFO_x use record
      cTriggers at 0 range 0..31;
      pTriggers at 0 range 64..127;
      pReserved at 0 range 128..191;
   end record;
   for SERVICE_TRIGGER_INFO_x'Size use 192;
   for SERVICE_TRIGGER_INFO_x'Alignment use 8;
   subtype SERVICE_TRIGGER_INFO is SERVICE_TRIGGER_INFO_x;
   type PSERVICE_TRIGGER_INFO is access all SERVICE_TRIGGER_INFO_x;
   type SERVICE_PREFERRED_NODE_INFO_x is record
      usPreferredNode : USHORT;
      fDelete : BOOLEAN;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_PREFERRED_NODE_INFO_x);
   for SERVICE_PREFERRED_NODE_INFO_x use record
      usPreferredNode at 0 range 0..15;
      fDelete at 0 range 16..23;
   end record;
   for SERVICE_PREFERRED_NODE_INFO_x'Size use 32;
   for SERVICE_PREFERRED_NODE_INFO_x'Alignment use 2;
   subtype SERVICE_PREFERRED_NODE_INFO is SERVICE_PREFERRED_NODE_INFO_x;
   type LPSERVICE_PREFERRED_NODE_INFO is access all SERVICE_PREFERRED_NODE_INFO_x;
   type SERVICE_TIMECHANGE_INFO_x is record
      liNewTime : LARGE_INTEGER;
      liOldTime : LARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_TIMECHANGE_INFO_x);
   for SERVICE_TIMECHANGE_INFO_x use record
      liNewTime at 0 range 0..63;
      liOldTime at 0 range 64..127;
   end record;
   for SERVICE_TIMECHANGE_INFO_x'Size use 128;
   for SERVICE_TIMECHANGE_INFO_x'Alignment use 8;
   subtype SERVICE_TIMECHANGE_INFO is SERVICE_TIMECHANGE_INFO_x;
   type PSERVICE_TIMECHANGE_INFO is access all SERVICE_TIMECHANGE_INFO_x;
   type SERVICE_LAUNCH_PROTECTED_INFO_x is record
      dwLaunchProtected : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_LAUNCH_PROTECTED_INFO_x);
   for SERVICE_LAUNCH_PROTECTED_INFO_x use record
      dwLaunchProtected at 0 range 0..31;
   end record;
   for SERVICE_LAUNCH_PROTECTED_INFO_x'Size use 32;
   for SERVICE_LAUNCH_PROTECTED_INFO_x'Alignment use 4;
   subtype SERVICE_LAUNCH_PROTECTED_INFO is SERVICE_LAUNCH_PROTECTED_INFO_x;
   type PSERVICE_LAUNCH_PROTECTED_INFO is access all SERVICE_LAUNCH_PROTECTED_INFO_x;
   type SC_HANDLE_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,SC_HANDLE_x);
   for SC_HANDLE_x use record
      unused at 0 range 0..31;
   end record;
   for SC_HANDLE_x'Size use 32;
   for SC_HANDLE_x'Alignment use 4;
   type SC_HANDLE is access all SC_HANDLE_x;
   type LPSC_HANDLE is access all SC_HANDLE;
   type SERVICE_STATUS_HANDLE_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_STATUS_HANDLE_x);
   for SERVICE_STATUS_HANDLE_x use record
      unused at 0 range 0..31;
   end record;
   for SERVICE_STATUS_HANDLE_x'Size use 32;
   for SERVICE_STATUS_HANDLE_x'Alignment use 4;
   type SERVICE_STATUS_HANDLE is access all SERVICE_STATUS_HANDLE_x;
   type SC_STATUS_TYPE_x is (
      SC_STATUS_PROCESS_INFO
   );
   for SC_STATUS_TYPE_x use (
      SC_STATUS_PROCESS_INFO => 0
   );
   for SC_STATUS_TYPE_x'Size use 32;
   subtype SC_STATUS_TYPE is SC_STATUS_TYPE_x;
   type SC_ENUM_TYPE_x is (
      SC_ENUM_PROCESS_INFO
   );
   for SC_ENUM_TYPE_x use (
      SC_ENUM_PROCESS_INFO => 0
   );
   for SC_ENUM_TYPE_x'Size use 32;
   subtype SC_ENUM_TYPE is SC_ENUM_TYPE_x;
   type SERVICE_STATUS_x is record
      dwServiceType : DWORD;
      dwCurrentState : DWORD;
      dwControlsAccepted : DWORD;
      dwWin32ExitCode : DWORD;
      dwServiceSpecificExitCode : DWORD;
      dwCheckPoint : DWORD;
      dwWaitHint : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_STATUS_x);
   for SERVICE_STATUS_x use record
      dwServiceType at 0 range 0..31;
      dwCurrentState at 0 range 32..63;
      dwControlsAccepted at 0 range 64..95;
      dwWin32ExitCode at 0 range 96..127;
      dwServiceSpecificExitCode at 0 range 128..159;
      dwCheckPoint at 0 range 160..191;
      dwWaitHint at 0 range 192..223;
   end record;
   for SERVICE_STATUS_x'Size use 224;
   for SERVICE_STATUS_x'Alignment use 4;
   subtype SERVICE_STATUS is SERVICE_STATUS_x;
   type LPSERVICE_STATUS is access all SERVICE_STATUS_x;
   type SERVICE_STATUS_PROCESS_x is record
      dwServiceType : DWORD;
      dwCurrentState : DWORD;
      dwControlsAccepted : DWORD;
      dwWin32ExitCode : DWORD;
      dwServiceSpecificExitCode : DWORD;
      dwCheckPoint : DWORD;
      dwWaitHint : DWORD;
      dwProcessId : DWORD;
      dwServiceFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_STATUS_PROCESS_x);
   for SERVICE_STATUS_PROCESS_x use record
      dwServiceType at 0 range 0..31;
      dwCurrentState at 0 range 32..63;
      dwControlsAccepted at 0 range 64..95;
      dwWin32ExitCode at 0 range 96..127;
      dwServiceSpecificExitCode at 0 range 128..159;
      dwCheckPoint at 0 range 160..191;
      dwWaitHint at 0 range 192..223;
      dwProcessId at 0 range 224..255;
      dwServiceFlags at 0 range 256..287;
   end record;
   for SERVICE_STATUS_PROCESS_x'Size use 288;
   for SERVICE_STATUS_PROCESS_x'Alignment use 4;
   subtype SERVICE_STATUS_PROCESS is SERVICE_STATUS_PROCESS_x;
   type LPSERVICE_STATUS_PROCESS is access all SERVICE_STATUS_PROCESS_x;
   type ENUM_SERVICE_STATUSA_x is record
      lpServiceName : LPSTR;
      lpDisplayName : LPSTR;
      ServiceStatus : SERVICE_STATUS;
   end record;
   pragma Convention (C_Pass_By_Copy,ENUM_SERVICE_STATUSA_x);
   for ENUM_SERVICE_STATUSA_x use record
      lpServiceName at 0 range 0..63;
      lpDisplayName at 0 range 64..127;
      ServiceStatus at 0 range 128..351;
   end record;
   for ENUM_SERVICE_STATUSA_x'Size use 384;
   for ENUM_SERVICE_STATUSA_x'Alignment use 8;
   subtype ENUM_SERVICE_STATUSA is ENUM_SERVICE_STATUSA_x;
   type LPENUM_SERVICE_STATUSA is access all ENUM_SERVICE_STATUSA_x;
   type ENUM_SERVICE_STATUSW_x is record
      lpServiceName : LPWSTR;
      lpDisplayName : LPWSTR;
      ServiceStatus : SERVICE_STATUS;
   end record;
   pragma Convention (C_Pass_By_Copy,ENUM_SERVICE_STATUSW_x);
   for ENUM_SERVICE_STATUSW_x use record
      lpServiceName at 0 range 0..63;
      lpDisplayName at 0 range 64..127;
      ServiceStatus at 0 range 128..351;
   end record;
   for ENUM_SERVICE_STATUSW_x'Size use 384;
   for ENUM_SERVICE_STATUSW_x'Alignment use 8;
   subtype ENUM_SERVICE_STATUSW is ENUM_SERVICE_STATUSW_x;
   type LPENUM_SERVICE_STATUSW is access all ENUM_SERVICE_STATUSW_x;
   subtype ENUM_SERVICE_STATUS is ENUM_SERVICE_STATUSA;
   subtype LPENUM_SERVICE_STATUS is LPENUM_SERVICE_STATUSA;
   type ENUM_SERVICE_STATUS_PROCESSA_x is record
      lpServiceName : LPSTR;
      lpDisplayName : LPSTR;
      ServiceStatusProcess : SERVICE_STATUS_PROCESS;
   end record;
   pragma Convention (C_Pass_By_Copy,ENUM_SERVICE_STATUS_PROCESSA_x);
   for ENUM_SERVICE_STATUS_PROCESSA_x use record
      lpServiceName at 0 range 0..63;
      lpDisplayName at 0 range 64..127;
      ServiceStatusProcess at 0 range 128..415;
   end record;
   for ENUM_SERVICE_STATUS_PROCESSA_x'Size use 448;
   for ENUM_SERVICE_STATUS_PROCESSA_x'Alignment use 8;
   subtype ENUM_SERVICE_STATUS_PROCESSA is ENUM_SERVICE_STATUS_PROCESSA_x;
   type LPENUM_SERVICE_STATUS_PROCESSA is access all ENUM_SERVICE_STATUS_PROCESSA_x;
   type ENUM_SERVICE_STATUS_PROCESSW_x is record
      lpServiceName : LPWSTR;
      lpDisplayName : LPWSTR;
      ServiceStatusProcess : SERVICE_STATUS_PROCESS;
   end record;
   pragma Convention (C_Pass_By_Copy,ENUM_SERVICE_STATUS_PROCESSW_x);
   for ENUM_SERVICE_STATUS_PROCESSW_x use record
      lpServiceName at 0 range 0..63;
      lpDisplayName at 0 range 64..127;
      ServiceStatusProcess at 0 range 128..415;
   end record;
   for ENUM_SERVICE_STATUS_PROCESSW_x'Size use 448;
   for ENUM_SERVICE_STATUS_PROCESSW_x'Alignment use 8;
   subtype ENUM_SERVICE_STATUS_PROCESSW is ENUM_SERVICE_STATUS_PROCESSW_x;
   type LPENUM_SERVICE_STATUS_PROCESSW is access all ENUM_SERVICE_STATUS_PROCESSW_x;
   subtype ENUM_SERVICE_STATUS_PROCESS is ENUM_SERVICE_STATUS_PROCESSA;
   subtype LPENUM_SERVICE_STATUS_PROCESS is LPENUM_SERVICE_STATUS_PROCESSA;
   subtype SC_LOCK is LPVOID;
   type QUERY_SERVICE_LOCK_STATUSA_x is record
      fIsLocked : DWORD;
      lpLockOwner : LPSTR;
      dwLockDuration : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,QUERY_SERVICE_LOCK_STATUSA_x);
   for QUERY_SERVICE_LOCK_STATUSA_x use record
      fIsLocked at 0 range 0..31;
      lpLockOwner at 0 range 64..127;
      dwLockDuration at 0 range 128..159;
   end record;
   for QUERY_SERVICE_LOCK_STATUSA_x'Size use 192;
   for QUERY_SERVICE_LOCK_STATUSA_x'Alignment use 8;
   subtype QUERY_SERVICE_LOCK_STATUSA is QUERY_SERVICE_LOCK_STATUSA_x;
   type LPQUERY_SERVICE_LOCK_STATUSA is access all QUERY_SERVICE_LOCK_STATUSA_x;
   type QUERY_SERVICE_LOCK_STATUSW_x is record
      fIsLocked : DWORD;
      lpLockOwner : LPWSTR;
      dwLockDuration : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,QUERY_SERVICE_LOCK_STATUSW_x);
   for QUERY_SERVICE_LOCK_STATUSW_x use record
      fIsLocked at 0 range 0..31;
      lpLockOwner at 0 range 64..127;
      dwLockDuration at 0 range 128..159;
   end record;
   for QUERY_SERVICE_LOCK_STATUSW_x'Size use 192;
   for QUERY_SERVICE_LOCK_STATUSW_x'Alignment use 8;
   subtype QUERY_SERVICE_LOCK_STATUSW is QUERY_SERVICE_LOCK_STATUSW_x;
   type LPQUERY_SERVICE_LOCK_STATUSW is access all QUERY_SERVICE_LOCK_STATUSW_x;
   subtype QUERY_SERVICE_LOCK_STATUS is QUERY_SERVICE_LOCK_STATUSA;
   subtype LPQUERY_SERVICE_LOCK_STATUS is LPQUERY_SERVICE_LOCK_STATUSA;
   type QUERY_SERVICE_CONFIGA_x is record
      dwServiceType : DWORD;
      dwStartType : DWORD;
      dwErrorControl : DWORD;
      lpBinaryPathName : LPSTR;
      lpLoadOrderGroup : LPSTR;
      dwTagId : DWORD;
      lpDependencies : LPSTR;
      lpServiceStartName : LPSTR;
      lpDisplayName : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,QUERY_SERVICE_CONFIGA_x);
   for QUERY_SERVICE_CONFIGA_x use record
      dwServiceType at 0 range 0..31;
      dwStartType at 0 range 32..63;
      dwErrorControl at 0 range 64..95;
      lpBinaryPathName at 0 range 128..191;
      lpLoadOrderGroup at 0 range 192..255;
      dwTagId at 0 range 256..287;
      lpDependencies at 0 range 320..383;
      lpServiceStartName at 0 range 384..447;
      lpDisplayName at 0 range 448..511;
   end record;
   for QUERY_SERVICE_CONFIGA_x'Size use 512;
   for QUERY_SERVICE_CONFIGA_x'Alignment use 8;
   subtype QUERY_SERVICE_CONFIGA is QUERY_SERVICE_CONFIGA_x;
   type LPQUERY_SERVICE_CONFIGA is access all QUERY_SERVICE_CONFIGA_x;
   type QUERY_SERVICE_CONFIGW_x is record
      dwServiceType : DWORD;
      dwStartType : DWORD;
      dwErrorControl : DWORD;
      lpBinaryPathName : LPWSTR;
      lpLoadOrderGroup : LPWSTR;
      dwTagId : DWORD;
      lpDependencies : LPWSTR;
      lpServiceStartName : LPWSTR;
      lpDisplayName : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,QUERY_SERVICE_CONFIGW_x);
   for QUERY_SERVICE_CONFIGW_x use record
      dwServiceType at 0 range 0..31;
      dwStartType at 0 range 32..63;
      dwErrorControl at 0 range 64..95;
      lpBinaryPathName at 0 range 128..191;
      lpLoadOrderGroup at 0 range 192..255;
      dwTagId at 0 range 256..287;
      lpDependencies at 0 range 320..383;
      lpServiceStartName at 0 range 384..447;
      lpDisplayName at 0 range 448..511;
   end record;
   for QUERY_SERVICE_CONFIGW_x'Size use 512;
   for QUERY_SERVICE_CONFIGW_x'Alignment use 8;
   subtype QUERY_SERVICE_CONFIGW is QUERY_SERVICE_CONFIGW_x;
   type LPQUERY_SERVICE_CONFIGW is access all QUERY_SERVICE_CONFIGW_x;
   subtype QUERY_SERVICE_CONFIG is QUERY_SERVICE_CONFIGA;
   subtype LPQUERY_SERVICE_CONFIG is LPQUERY_SERVICE_CONFIGA;
   subtype SERVICE_MAIN_FUNCTIONW is System.Address; -- [Note - CXType_FunctionProto] Profile - void (DWORD, LPWSTR *)
   subtype SERVICE_MAIN_FUNCTIONA is System.Address; -- [Note - CXType_FunctionProto] Profile - void (DWORD, LPTSTR *)
   type LPSERVICE_MAIN_FUNCTIONW is access procedure (p1 : DWORD ; p2 : access LPWSTR); -- void (DWORD, LPWSTR *)
   pragma Convention(C,LPSERVICE_MAIN_FUNCTIONW);
   type LPSERVICE_MAIN_FUNCTIONA is access procedure (p1 : DWORD ; p2 : access LPSTR); -- void (DWORD, LPSTR *)
   pragma Convention(C,LPSERVICE_MAIN_FUNCTIONA);
   type SERVICE_TABLE_ENTRYA_x is record
      lpServiceName : LPSTR;
      lpServiceProc : LPSERVICE_MAIN_FUNCTIONA;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_TABLE_ENTRYA_x);
   for SERVICE_TABLE_ENTRYA_x use record
      lpServiceName at 0 range 0..63;
      lpServiceProc at 0 range 64..127;
   end record;
   for SERVICE_TABLE_ENTRYA_x'Size use 128;
   for SERVICE_TABLE_ENTRYA_x'Alignment use 8;
   subtype SERVICE_TABLE_ENTRYA is SERVICE_TABLE_ENTRYA_x;
   type LPSERVICE_TABLE_ENTRYA is access all SERVICE_TABLE_ENTRYA_x;
   type SERVICE_TABLE_ENTRYW_x is record
      lpServiceName : LPWSTR;
      lpServiceProc : LPSERVICE_MAIN_FUNCTIONW;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_TABLE_ENTRYW_x);
   for SERVICE_TABLE_ENTRYW_x use record
      lpServiceName at 0 range 0..63;
      lpServiceProc at 0 range 64..127;
   end record;
   for SERVICE_TABLE_ENTRYW_x'Size use 128;
   for SERVICE_TABLE_ENTRYW_x'Alignment use 8;
   subtype SERVICE_TABLE_ENTRYW is SERVICE_TABLE_ENTRYW_x;
   type LPSERVICE_TABLE_ENTRYW is access all SERVICE_TABLE_ENTRYW_x;
   subtype SERVICE_TABLE_ENTRY is SERVICE_TABLE_ENTRYA;
   subtype LPSERVICE_TABLE_ENTRY is LPSERVICE_TABLE_ENTRYA;
   subtype HANDLER_FUNCTION is System.Address; -- [Note - CXType_FunctionProto] Profile - void (DWORD)
   subtype HANDLER_FUNCTION_EX is System.Address; -- [Note - CXType_FunctionProto] Profile - DWORD (DWORD, DWORD, LPVOID, LPVOID)
   type LPHANDLER_FUNCTION is access procedure (p1 : DWORD); -- void (DWORD)
   pragma Convention(C,LPHANDLER_FUNCTION);
   type LPHANDLER_FUNCTION_EX is access function (p1 : DWORD ; p2 : DWORD ; p3 : LPVOID ; p4 : LPVOID) return DWORD; -- DWORD (DWORD, DWORD, LPVOID, LPVOID)
   pragma Convention(C,LPHANDLER_FUNCTION_EX);
   type PFN_SC_NOTIFY_CALLBACK is access procedure (p1 : PVOID); -- void (PVOID)
   pragma Convention(C,PFN_SC_NOTIFY_CALLBACK);
   type SERVICE_NOTIFY_1_x is record
      dwVersion : DWORD;
      pfnNotifyCallback : PFN_SC_NOTIFY_CALLBACK;
      pContext_x : PVOID;
      dwNotificationStatus : DWORD;
      ServiceStatus : SERVICE_STATUS_PROCESS;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_NOTIFY_1_x);
   for SERVICE_NOTIFY_1_x use record
      dwVersion at 0 range 0..31;
      pfnNotifyCallback at 0 range 64..127;
      pContext_x at 0 range 128..191;
      dwNotificationStatus at 0 range 192..223;
      ServiceStatus at 0 range 224..511;
   end record;
   for SERVICE_NOTIFY_1_x'Size use 512;
   for SERVICE_NOTIFY_1_x'Alignment use 8;
   subtype SERVICE_NOTIFY_1 is SERVICE_NOTIFY_1_x;
   type PSERVICE_NOTIFY_1 is access all SERVICE_NOTIFY_1_x;
   type SERVICE_NOTIFY_2A_x is record
      dwVersion : DWORD;
      pfnNotifyCallback : PFN_SC_NOTIFY_CALLBACK;
      pContext_x : PVOID;
      dwNotificationStatus : DWORD;
      ServiceStatus : SERVICE_STATUS_PROCESS;
      dwNotificationTriggered : DWORD;
      pszServiceNames : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_NOTIFY_2A_x);
   for SERVICE_NOTIFY_2A_x use record
      dwVersion at 0 range 0..31;
      pfnNotifyCallback at 0 range 64..127;
      pContext_x at 0 range 128..191;
      dwNotificationStatus at 0 range 192..223;
      ServiceStatus at 0 range 224..511;
      dwNotificationTriggered at 0 range 512..543;
      pszServiceNames at 0 range 576..639;
   end record;
   for SERVICE_NOTIFY_2A_x'Size use 640;
   for SERVICE_NOTIFY_2A_x'Alignment use 8;
   subtype SERVICE_NOTIFY_2A is SERVICE_NOTIFY_2A_x;
   type PSERVICE_NOTIFY_2A is access all SERVICE_NOTIFY_2A_x;
   type SERVICE_NOTIFY_2W_x is record
      dwVersion : DWORD;
      pfnNotifyCallback : PFN_SC_NOTIFY_CALLBACK;
      pContext_x : PVOID;
      dwNotificationStatus : DWORD;
      ServiceStatus : SERVICE_STATUS_PROCESS;
      dwNotificationTriggered : DWORD;
      pszServiceNames : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_NOTIFY_2W_x);
   for SERVICE_NOTIFY_2W_x use record
      dwVersion at 0 range 0..31;
      pfnNotifyCallback at 0 range 64..127;
      pContext_x at 0 range 128..191;
      dwNotificationStatus at 0 range 192..223;
      ServiceStatus at 0 range 224..511;
      dwNotificationTriggered at 0 range 512..543;
      pszServiceNames at 0 range 576..639;
   end record;
   for SERVICE_NOTIFY_2W_x'Size use 640;
   for SERVICE_NOTIFY_2W_x'Alignment use 8;
   subtype SERVICE_NOTIFY_2W is SERVICE_NOTIFY_2W_x;
   type PSERVICE_NOTIFY_2W is access all SERVICE_NOTIFY_2W_x;
   subtype SERVICE_NOTIFY_2 is SERVICE_NOTIFY_2A;
   subtype PSERVICE_NOTIFY_2 is PSERVICE_NOTIFY_2A;
   subtype SERVICE_NOTIFYA is SERVICE_NOTIFY_2A;
   type PSERVICE_NOTIFYA is access all SERVICE_NOTIFY_2A;
   subtype SERVICE_NOTIFYW is SERVICE_NOTIFY_2W;
   type PSERVICE_NOTIFYW is access all SERVICE_NOTIFY_2W;
   subtype SERVICE_NOTIFY is SERVICE_NOTIFYA;
   subtype PSERVICE_NOTIFY is PSERVICE_NOTIFYA;
   type SERVICE_CONTROL_STATUS_REASON_PARAMSA_x is record
      dwReason : DWORD;
      pszComment : LPSTR;
      ServiceStatus : SERVICE_STATUS_PROCESS;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_CONTROL_STATUS_REASON_PARAMSA_x);
   for SERVICE_CONTROL_STATUS_REASON_PARAMSA_x use record
      dwReason at 0 range 0..31;
      pszComment at 0 range 64..127;
      ServiceStatus at 0 range 128..415;
   end record;
   for SERVICE_CONTROL_STATUS_REASON_PARAMSA_x'Size use 448;
   for SERVICE_CONTROL_STATUS_REASON_PARAMSA_x'Alignment use 8;
   subtype SERVICE_CONTROL_STATUS_REASON_PARAMSA is SERVICE_CONTROL_STATUS_REASON_PARAMSA_x;
   type PSERVICE_CONTROL_STATUS_REASON_PARAMSA is access all SERVICE_CONTROL_STATUS_REASON_PARAMSA_x;
   type SERVICE_CONTROL_STATUS_REASON_PARAMSW_x is record
      dwReason : DWORD;
      pszComment : LPWSTR;
      ServiceStatus : SERVICE_STATUS_PROCESS;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_CONTROL_STATUS_REASON_PARAMSW_x);
   for SERVICE_CONTROL_STATUS_REASON_PARAMSW_x use record
      dwReason at 0 range 0..31;
      pszComment at 0 range 64..127;
      ServiceStatus at 0 range 128..415;
   end record;
   for SERVICE_CONTROL_STATUS_REASON_PARAMSW_x'Size use 448;
   for SERVICE_CONTROL_STATUS_REASON_PARAMSW_x'Alignment use 8;
   subtype SERVICE_CONTROL_STATUS_REASON_PARAMSW is SERVICE_CONTROL_STATUS_REASON_PARAMSW_x;
   type PSERVICE_CONTROL_STATUS_REASON_PARAMSW is access all SERVICE_CONTROL_STATUS_REASON_PARAMSW_x;
   subtype SERVICE_CONTROL_STATUS_REASON_PARAMS is SERVICE_CONTROL_STATUS_REASON_PARAMSA;
   subtype PSERVICE_CONTROL_STATUS_REASON_PARAMS is PSERVICE_CONTROL_STATUS_REASON_PARAMSA;
   type SERVICE_START_REASON_x is record
      dwReason : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,SERVICE_START_REASON_x);
   for SERVICE_START_REASON_x use record
      dwReason at 0 range 0..31;
   end record;
   for SERVICE_START_REASON_x'Size use 32;
   for SERVICE_START_REASON_x'Alignment use 4;
   subtype SERVICE_START_REASON is SERVICE_START_REASON_x;
   type PSERVICE_START_REASON is access all SERVICE_START_REASON_x;
   function ChangeServiceConfigA(
      hService : SC_HANDLE;
      dwServiceType : DWORD;
      dwStartType : DWORD;
      dwErrorControl : DWORD;
      lpBinaryPathName : LPCSTR;
      lpLoadOrderGroup : LPCSTR;
      lpdwTagId : LPDWORD;
      lpDependencies : LPCSTR;
      lpServiceStartName : LPCSTR;
      lpPassword : LPCSTR;
      lpDisplayName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,ChangeServiceConfigA,"ChangeServiceConfigA");
   function ChangeServiceConfigW(
      hService : SC_HANDLE;
      dwServiceType : DWORD;
      dwStartType : DWORD;
      dwErrorControl : DWORD;
      lpBinaryPathName : LPCWSTR;
      lpLoadOrderGroup : LPCWSTR;
      lpdwTagId : LPDWORD;
      lpDependencies : LPCWSTR;
      lpServiceStartName : LPCWSTR;
      lpPassword : LPCWSTR;
      lpDisplayName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,ChangeServiceConfigW,"ChangeServiceConfigW");
   function ChangeServiceConfig2A(
      hService : SC_HANDLE;
      dwInfoLevel : DWORD;
      lpInfo : LPVOID
   ) return BOOL;
   pragma import (Cpp,ChangeServiceConfig2A,"ChangeServiceConfig2A");
   function ChangeServiceConfig2W(
      hService : SC_HANDLE;
      dwInfoLevel : DWORD;
      lpInfo : LPVOID
   ) return BOOL;
   pragma import (Cpp,ChangeServiceConfig2W,"ChangeServiceConfig2W");
   function CloseServiceHandle(
      hSCObject : SC_HANDLE
   ) return BOOL;
   pragma import (Cpp,CloseServiceHandle,"CloseServiceHandle");
   function ControlService(
      hService : SC_HANDLE;
      dwControl : DWORD;
      lpServiceStatus : LPSERVICE_STATUS
   ) return BOOL;
   pragma import (Cpp,ControlService,"ControlService");
   function CreateServiceA(
      hSCManager : SC_HANDLE;
      lpServiceName : LPCSTR;
      lpDisplayName : LPCSTR;
      dwDesiredAccess : DWORD;
      dwServiceType : DWORD;
      dwStartType : DWORD;
      dwErrorControl : DWORD;
      lpBinaryPathName : LPCSTR;
      lpLoadOrderGroup : LPCSTR;
      lpdwTagId : LPDWORD;
      lpDependencies : LPCSTR;
      lpServiceStartName : LPCSTR;
      lpPassword : LPCSTR
   ) return SC_HANDLE;
   pragma import (Cpp,CreateServiceA,"CreateServiceA");
   function CreateServiceW(
      hSCManager : SC_HANDLE;
      lpServiceName : LPCWSTR;
      lpDisplayName : LPCWSTR;
      dwDesiredAccess : DWORD;
      dwServiceType : DWORD;
      dwStartType : DWORD;
      dwErrorControl : DWORD;
      lpBinaryPathName : LPCWSTR;
      lpLoadOrderGroup : LPCWSTR;
      lpdwTagId : LPDWORD;
      lpDependencies : LPCWSTR;
      lpServiceStartName : LPCWSTR;
      lpPassword : LPCWSTR
   ) return SC_HANDLE;
   pragma import (Cpp,CreateServiceW,"CreateServiceW");
   function DeleteService(
      hService : SC_HANDLE
   ) return BOOL;
   pragma import (Cpp,DeleteService,"DeleteService");
   function EnumDependentServicesA(
      hService : SC_HANDLE;
      dwServiceState : DWORD;
      lpServices : LPENUM_SERVICE_STATUSA;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD;
      lpServicesReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumDependentServicesA,"EnumDependentServicesA");
   function EnumDependentServicesW(
      hService : SC_HANDLE;
      dwServiceState : DWORD;
      lpServices : LPENUM_SERVICE_STATUSW;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD;
      lpServicesReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumDependentServicesW,"EnumDependentServicesW");
   function EnumServicesStatusA(
      hSCManager : SC_HANDLE;
      dwServiceType : DWORD;
      dwServiceState : DWORD;
      lpServices : LPENUM_SERVICE_STATUSA;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD;
      lpServicesReturned : LPDWORD;
      lpResumeHandle : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumServicesStatusA,"EnumServicesStatusA");
   function EnumServicesStatusW(
      hSCManager : SC_HANDLE;
      dwServiceType : DWORD;
      dwServiceState : DWORD;
      lpServices : LPENUM_SERVICE_STATUSW;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD;
      lpServicesReturned : LPDWORD;
      lpResumeHandle : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumServicesStatusW,"EnumServicesStatusW");
   function EnumServicesStatusExA(
      hSCManager : SC_HANDLE;
      InfoLevel : SC_ENUM_TYPE;
      dwServiceType : DWORD;
      dwServiceState : DWORD;
      lpServices : LPBYTE;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD;
      lpServicesReturned : LPDWORD;
      lpResumeHandle : LPDWORD;
      pszGroupName : LPCSTR
   ) return BOOL;
   pragma import (Cpp,EnumServicesStatusExA,"EnumServicesStatusExA");
   function EnumServicesStatusExW(
      hSCManager : SC_HANDLE;
      InfoLevel : SC_ENUM_TYPE;
      dwServiceType : DWORD;
      dwServiceState : DWORD;
      lpServices : LPBYTE;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD;
      lpServicesReturned : LPDWORD;
      lpResumeHandle : LPDWORD;
      pszGroupName : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,EnumServicesStatusExW,"EnumServicesStatusExW");
   function GetServiceKeyNameA(
      hSCManager : SC_HANDLE;
      lpDisplayName : LPCSTR;
      lpServiceName : LPSTR;
      lpcchBuffer : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetServiceKeyNameA,"GetServiceKeyNameA");
   function GetServiceKeyNameW(
      hSCManager : SC_HANDLE;
      lpDisplayName : LPCWSTR;
      lpServiceName : LPWSTR;
      lpcchBuffer : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetServiceKeyNameW,"GetServiceKeyNameW");
   function GetServiceDisplayNameA(
      hSCManager : SC_HANDLE;
      lpServiceName : LPCSTR;
      lpDisplayName : LPSTR;
      lpcchBuffer : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetServiceDisplayNameA,"GetServiceDisplayNameA");
   function GetServiceDisplayNameW(
      hSCManager : SC_HANDLE;
      lpServiceName : LPCWSTR;
      lpDisplayName : LPWSTR;
      lpcchBuffer : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetServiceDisplayNameW,"GetServiceDisplayNameW");
   function LockServiceDatabase(
      hSCManager : SC_HANDLE
   ) return SC_LOCK;
   pragma import (Cpp,LockServiceDatabase,"LockServiceDatabase");
   function NotifyBootConfigStatus(
      BootAcceptable : BOOL
   ) return BOOL;
   pragma import (Cpp,NotifyBootConfigStatus,"NotifyBootConfigStatus");
   function OpenSCManagerA(
      lpMachineName : LPCSTR;
      lpDatabaseName : LPCSTR;
      dwDesiredAccess : DWORD
   ) return SC_HANDLE;
   pragma import (Cpp,OpenSCManagerA,"OpenSCManagerA");
   function OpenSCManagerW(
      lpMachineName : LPCWSTR;
      lpDatabaseName : LPCWSTR;
      dwDesiredAccess : DWORD
   ) return SC_HANDLE;
   pragma import (Cpp,OpenSCManagerW,"OpenSCManagerW");
   function OpenServiceA(
      hSCManager : SC_HANDLE;
      lpServiceName : LPCSTR;
      dwDesiredAccess : DWORD
   ) return SC_HANDLE;
   pragma import (Cpp,OpenServiceA,"OpenServiceA");
   function OpenServiceW(
      hSCManager : SC_HANDLE;
      lpServiceName : LPCWSTR;
      dwDesiredAccess : DWORD
   ) return SC_HANDLE;
   pragma import (Cpp,OpenServiceW,"OpenServiceW");
   function QueryServiceConfigA(
      hService : SC_HANDLE;
      lpServiceConfig : LPQUERY_SERVICE_CONFIGA;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,QueryServiceConfigA,"QueryServiceConfigA");
   function QueryServiceConfigW(
      hService : SC_HANDLE;
      lpServiceConfig : LPQUERY_SERVICE_CONFIGW;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,QueryServiceConfigW,"QueryServiceConfigW");
   function QueryServiceConfig2A(
      hService : SC_HANDLE;
      dwInfoLevel : DWORD;
      lpBuffer : LPBYTE;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,QueryServiceConfig2A,"QueryServiceConfig2A");
   function QueryServiceConfig2W(
      hService : SC_HANDLE;
      dwInfoLevel : DWORD;
      lpBuffer : LPBYTE;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,QueryServiceConfig2W,"QueryServiceConfig2W");
   function QueryServiceLockStatusA(
      hSCManager : SC_HANDLE;
      lpLockStatus : LPQUERY_SERVICE_LOCK_STATUSA;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,QueryServiceLockStatusA,"QueryServiceLockStatusA");
   function QueryServiceLockStatusW(
      hSCManager : SC_HANDLE;
      lpLockStatus : LPQUERY_SERVICE_LOCK_STATUSW;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,QueryServiceLockStatusW,"QueryServiceLockStatusW");
   function QueryServiceObjectSecurity(
      hService : SC_HANDLE;
      dwSecurityInformation : SECURITY_INFORMATION;
      lpSecurityDescriptor : PSECURITY_DESCRIPTOR;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,QueryServiceObjectSecurity,"QueryServiceObjectSecurity");
   function QueryServiceStatus(
      hService : SC_HANDLE;
      lpServiceStatus : LPSERVICE_STATUS
   ) return BOOL;
   pragma import (Cpp,QueryServiceStatus,"QueryServiceStatus");
   function QueryServiceStatusEx(
      hService : SC_HANDLE;
      InfoLevel : SC_STATUS_TYPE;
      lpBuffer : LPBYTE;
      cbBufSize : DWORD;
      pcbBytesNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,QueryServiceStatusEx,"QueryServiceStatusEx");
   function RegisterServiceCtrlHandlerA(
      lpServiceName : LPCSTR;
      lpHandlerProc : LPHANDLER_FUNCTION
   ) return SERVICE_STATUS_HANDLE;
   pragma import (Cpp,RegisterServiceCtrlHandlerA,"RegisterServiceCtrlHandlerA");
   function RegisterServiceCtrlHandlerW(
      lpServiceName : LPCWSTR;
      lpHandlerProc : LPHANDLER_FUNCTION
   ) return SERVICE_STATUS_HANDLE;
   pragma import (Cpp,RegisterServiceCtrlHandlerW,"RegisterServiceCtrlHandlerW");
   function RegisterServiceCtrlHandlerExA(
      lpServiceName : LPCSTR;
      lpHandlerProc : LPHANDLER_FUNCTION_EX;
      lpContext_x : LPVOID
   ) return SERVICE_STATUS_HANDLE;
   pragma import (Cpp,RegisterServiceCtrlHandlerExA,"RegisterServiceCtrlHandlerExA");
   function RegisterServiceCtrlHandlerExW(
      lpServiceName : LPCWSTR;
      lpHandlerProc : LPHANDLER_FUNCTION_EX;
      lpContext_x : LPVOID
   ) return SERVICE_STATUS_HANDLE;
   pragma import (Cpp,RegisterServiceCtrlHandlerExW,"RegisterServiceCtrlHandlerExW");
   function SetServiceObjectSecurity(
      hService : SC_HANDLE;
      dwSecurityInformation : SECURITY_INFORMATION;
      lpSecurityDescriptor : PSECURITY_DESCRIPTOR
   ) return BOOL;
   pragma import (Cpp,SetServiceObjectSecurity,"SetServiceObjectSecurity");
   function SetServiceStatus(
      hServiceStatus : SERVICE_STATUS_HANDLE;
      lpServiceStatus : LPSERVICE_STATUS
   ) return BOOL;
   pragma import (Cpp,SetServiceStatus,"SetServiceStatus");
   function StartServiceCtrlDispatcherA(
      lpServiceStartTable : access constant SERVICE_TABLE_ENTRYA
   ) return BOOL;
   pragma import (Cpp,StartServiceCtrlDispatcherA,"StartServiceCtrlDispatcherA");
   function StartServiceCtrlDispatcherW(
      lpServiceStartTable : access constant SERVICE_TABLE_ENTRYW
   ) return BOOL;
   pragma import (Cpp,StartServiceCtrlDispatcherW,"StartServiceCtrlDispatcherW");
   function StartServiceA(
      hService : SC_HANDLE;
      dwNumServiceArgs : DWORD;
      lpServiceArgVectors : access LPCSTR
   ) return BOOL;
   pragma import (Cpp,StartServiceA,"StartServiceA");
   function StartServiceW(
      hService : SC_HANDLE;
      dwNumServiceArgs : DWORD;
      lpServiceArgVectors : access LPCWSTR
   ) return BOOL;
   pragma import (Cpp,StartServiceW,"StartServiceW");
   function UnlockServiceDatabase(
      ScLock : SC_LOCK
   ) return BOOL;
   pragma import (Cpp,UnlockServiceDatabase,"UnlockServiceDatabase");
   function NotifyServiceStatusChangeA(
      hService : SC_HANDLE;
      dwNotifyMask : DWORD;
      pNotifyBuffer : PSERVICE_NOTIFYA
   ) return DWORD;
   pragma import (Cpp,NotifyServiceStatusChangeA,"NotifyServiceStatusChangeA");
   function NotifyServiceStatusChangeW(
      hService : SC_HANDLE;
      dwNotifyMask : DWORD;
      pNotifyBuffer : PSERVICE_NOTIFYW
   ) return DWORD;
   pragma import (Cpp,NotifyServiceStatusChangeW,"NotifyServiceStatusChangeW");
   function ControlServiceExA(
      hService : SC_HANDLE;
      dwControl : DWORD;
      dwInfoLevel : DWORD;
      pControlParams : PVOID
   ) return BOOL;
   pragma import (Cpp,ControlServiceExA,"ControlServiceExA");
   function ControlServiceExW(
      hService : SC_HANDLE;
      dwControl : DWORD;
      dwInfoLevel : DWORD;
      pControlParams : PVOID
   ) return BOOL;
   pragma import (Cpp,ControlServiceExW,"ControlServiceExW");
   function QueryServiceDynamicInformation(
      hServiceStatus : SERVICE_STATUS_HANDLE;
      dwInfoLevel : DWORD;
      ppDynamicInfo : access PVOID
   ) return BOOL;
   pragma import (Cpp,QueryServiceDynamicInformation,"QueryServiceDynamicInformation");
   type SC_EVENT_TYPE_x is (
      SC_EVENT_DATABASE_CHANGE,
      SC_EVENT_PROPERTY_CHANGE,
      SC_EVENT_STATUS_CHANGE
   );
   for SC_EVENT_TYPE_x use (
      SC_EVENT_DATABASE_CHANGE => 0,
      SC_EVENT_PROPERTY_CHANGE => 1,
      SC_EVENT_STATUS_CHANGE => 2
   );
   for SC_EVENT_TYPE_x'Size use 32;
   subtype SC_EVENT_TYPE is SC_EVENT_TYPE_x;
   type PSC_EVENT_TYPE is access all SC_EVENT_TYPE_x;
   subtype SC_NOTIFICATION_CALLBACK is System.Address; -- [Note - CXType_FunctionProto] Profile - void (DWORD, PVOID)
   type PSC_NOTIFICATION_CALLBACK is access procedure (p1 : DWORD ; p2 : PVOID); -- void (DWORD, PVOID)
   pragma Convention(C,PSC_NOTIFICATION_CALLBACK);
   type SC_NOTIFICATION_REGISTRATION_x;
   type PSC_NOTIFICATION_REGISTRATION is access all SC_NOTIFICATION_REGISTRATION_x;
   function SubscribeServiceChangeNotifications(
      hService : SC_HANDLE;
      eEventType : SC_EVENT_TYPE;
      pCallback : PSC_NOTIFICATION_CALLBACK;
      pCallbackContext : PVOID;
      pSubscription : access PSC_NOTIFICATION_REGISTRATION
   ) return DWORD;
   pragma import (Cpp,SubscribeServiceChangeNotifications,"SubscribeServiceChangeNotifications");
   procedure UnsubscribeServiceChangeNotifications(
      pSubscription : PSC_NOTIFICATION_REGISTRATION
   );
   pragma import (Cpp,UnsubscribeServiceChangeNotifications,"UnsubscribeServiceChangeNotifications");
   function WaitServiceState(
      hService : SC_HANDLE;
      dwNotify : DWORD;
      dwTimeout : DWORD;
      hCancelEvent : HANDLE
   ) return DWORD;
   pragma import (Cpp,WaitServiceState,"WaitServiceState");
   type SERVICE_REGISTRY_STATE_TYPE is (
      ServiceRegistryStateParameters,
      ServiceRegistryStatePersistent,
      MaxServiceRegistryStateType
   );
   for SERVICE_REGISTRY_STATE_TYPE use (
      ServiceRegistryStateParameters => 0,
      ServiceRegistryStatePersistent => 1,
      MaxServiceRegistryStateType => 2
   );
   for SERVICE_REGISTRY_STATE_TYPE'Size use 32;
   function GetServiceRegistryStateKey(
      ServiceStatusHandle : SERVICE_STATUS_HANDLE;
      StateType : SERVICE_REGISTRY_STATE_TYPE;
      AccessMask : DWORD;
      ServiceStateKey : access HKEY
   ) return DWORD;
   pragma import (Cpp,GetServiceRegistryStateKey,"GetServiceRegistryStateKey");
   type SERVICE_DIRECTORY_TYPE is (
      ServiceDirectoryPersistentState,
      ServiceDirectoryTypeMax
   );
   for SERVICE_DIRECTORY_TYPE use (
      ServiceDirectoryPersistentState => 0,
      ServiceDirectoryTypeMax => 1
   );
   for SERVICE_DIRECTORY_TYPE'Size use 32;
   function GetServiceDirectory(
      hServiceStatus : SERVICE_STATUS_HANDLE;
      eDirectoryType : SERVICE_DIRECTORY_TYPE;
      lpPathBuffer : PWCHAR;
      cchPathBufferLength : DWORD;
      lpcchRequiredBufferLength : access DWORD
   ) return DWORD;
   pragma import (Cpp,GetServiceDirectory,"GetServiceDirectory");
   -- #include <mcx.h>
   type MODEMDEVCAPS_x_abVariablePortion_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type MODEMDEVCAPS_x is record
      dwActualSize : DWORD;
      dwRequiredSize : DWORD;
      dwDevSpecificOffset : DWORD;
      dwDevSpecificSize : DWORD;
      dwModemProviderVersion : DWORD;
      dwModemManufacturerOffset : DWORD;
      dwModemManufacturerSize : DWORD;
      dwModemModelOffset : DWORD;
      dwModemModelSize : DWORD;
      dwModemVersionOffset : DWORD;
      dwModemVersionSize : DWORD;
      dwDialOptions : DWORD;
      dwCallSetupFailTimer : DWORD;
      dwInactivityTimeout : DWORD;
      dwSpeakerVolume : DWORD;
      dwSpeakerMode : DWORD;
      dwModemOptions : DWORD;
      dwMaxDTERate : DWORD;
      dwMaxDCERate : DWORD;
      abVariablePortion : MODEMDEVCAPS_x_abVariablePortion_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,MODEMDEVCAPS_x);
   for MODEMDEVCAPS_x use record
      dwActualSize at 0 range 0..31;
      dwRequiredSize at 0 range 32..63;
      dwDevSpecificOffset at 0 range 64..95;
      dwDevSpecificSize at 0 range 96..127;
      dwModemProviderVersion at 0 range 128..159;
      dwModemManufacturerOffset at 0 range 160..191;
      dwModemManufacturerSize at 0 range 192..223;
      dwModemModelOffset at 0 range 224..255;
      dwModemModelSize at 0 range 256..287;
      dwModemVersionOffset at 0 range 288..319;
      dwModemVersionSize at 0 range 320..351;
      dwDialOptions at 0 range 352..383;
      dwCallSetupFailTimer at 0 range 384..415;
      dwInactivityTimeout at 0 range 416..447;
      dwSpeakerVolume at 0 range 448..479;
      dwSpeakerMode at 0 range 480..511;
      dwModemOptions at 0 range 512..543;
      dwMaxDTERate at 0 range 544..575;
      dwMaxDCERate at 0 range 576..607;
      abVariablePortion at 0 range 608..615;
   end record;
   for MODEMDEVCAPS_x'Size use 640;
   for MODEMDEVCAPS_x'Alignment use 4;
   subtype MODEMDEVCAPS is MODEMDEVCAPS_x;
   type PMODEMDEVCAPS is access all MODEMDEVCAPS_x;
   type LPMODEMDEVCAPS is access all MODEMDEVCAPS_x;
   type MODEMSETTINGS_x_abVariablePortion_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type MODEMSETTINGS_x is record
      dwActualSize : DWORD;
      dwRequiredSize : DWORD;
      dwDevSpecificOffset : DWORD;
      dwDevSpecificSize : DWORD;
      dwCallSetupFailTimer : DWORD;
      dwInactivityTimeout : DWORD;
      dwSpeakerVolume : DWORD;
      dwSpeakerMode : DWORD;
      dwPreferredModemOptions : DWORD;
      dwNegotiatedModemOptions : DWORD;
      dwNegotiatedDCERate : DWORD;
      abVariablePortion : MODEMSETTINGS_x_abVariablePortion_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,MODEMSETTINGS_x);
   for MODEMSETTINGS_x use record
      dwActualSize at 0 range 0..31;
      dwRequiredSize at 0 range 32..63;
      dwDevSpecificOffset at 0 range 64..95;
      dwDevSpecificSize at 0 range 96..127;
      dwCallSetupFailTimer at 0 range 128..159;
      dwInactivityTimeout at 0 range 160..191;
      dwSpeakerVolume at 0 range 192..223;
      dwSpeakerMode at 0 range 224..255;
      dwPreferredModemOptions at 0 range 256..287;
      dwNegotiatedModemOptions at 0 range 288..319;
      dwNegotiatedDCERate at 0 range 320..351;
      abVariablePortion at 0 range 352..359;
   end record;
   for MODEMSETTINGS_x'Size use 384;
   for MODEMSETTINGS_x'Alignment use 4;
   subtype MODEMSETTINGS is MODEMSETTINGS_x;
   type PMODEMSETTINGS is access all MODEMSETTINGS_x;
   type LPMODEMSETTINGS is access all MODEMSETTINGS_x;
   -- #include <imm.h>
   type HIMC_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HIMC_x);
   for HIMC_x use record
      unused at 0 range 0..31;
   end record;
   for HIMC_x'Size use 32;
   for HIMC_x'Alignment use 4;
   type HIMC is access all HIMC_x;
   type HIMCC_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HIMCC_x);
   for HIMCC_x use record
      unused at 0 range 0..31;
   end record;
   for HIMCC_x'Size use 32;
   for HIMCC_x'Alignment use 4;
   type HIMCC is access all HIMCC_x;
   type LPHKL is access all HKL;
   type LPUINT is access all UINT;
   type tagCOMPOSITIONFORM is record
      dwStyle : DWORD;
      ptCurrentPos : POINT;
      rcArea : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCOMPOSITIONFORM);
   for tagCOMPOSITIONFORM use record
      dwStyle at 0 range 0..31;
      ptCurrentPos at 0 range 32..95;
      rcArea at 0 range 96..223;
   end record;
   for tagCOMPOSITIONFORM'Size use 224;
   for tagCOMPOSITIONFORM'Alignment use 4;
   subtype COMPOSITIONFORM is tagCOMPOSITIONFORM;
   type PCOMPOSITIONFORM is access all tagCOMPOSITIONFORM;
   type NPCOMPOSITIONFORM is access all tagCOMPOSITIONFORM;
   type LPCOMPOSITIONFORM is access all tagCOMPOSITIONFORM;
   type tagCANDIDATEFORM is record
      dwIndex : DWORD;
      dwStyle : DWORD;
      ptCurrentPos : POINT;
      rcArea : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCANDIDATEFORM);
   for tagCANDIDATEFORM use record
      dwIndex at 0 range 0..31;
      dwStyle at 0 range 32..63;
      ptCurrentPos at 0 range 64..127;
      rcArea at 0 range 128..255;
   end record;
   for tagCANDIDATEFORM'Size use 256;
   for tagCANDIDATEFORM'Alignment use 4;
   subtype CANDIDATEFORM is tagCANDIDATEFORM;
   type PCANDIDATEFORM is access all tagCANDIDATEFORM;
   type NPCANDIDATEFORM is access all tagCANDIDATEFORM;
   type LPCANDIDATEFORM is access all tagCANDIDATEFORM;
   type tagCANDIDATELIST_dwOffset_Array is array(1..1) of DWORD; -- Auto Generated Dependancy
   type tagCANDIDATELIST is record
      dwSize : DWORD;
      dwStyle : DWORD;
      dwCount : DWORD;
      dwSelection : DWORD;
      dwPageStart : DWORD;
      dwPageSize : DWORD;
      dwOffset : tagCANDIDATELIST_dwOffset_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCANDIDATELIST);
   for tagCANDIDATELIST use record
      dwSize at 0 range 0..31;
      dwStyle at 0 range 32..63;
      dwCount at 0 range 64..95;
      dwSelection at 0 range 96..127;
      dwPageStart at 0 range 128..159;
      dwPageSize at 0 range 160..191;
      dwOffset at 0 range 192..223;
   end record;
   for tagCANDIDATELIST'Size use 224;
   for tagCANDIDATELIST'Alignment use 4;
   subtype CANDIDATELIST is tagCANDIDATELIST;
   type PCANDIDATELIST is access all tagCANDIDATELIST;
   type NPCANDIDATELIST is access all tagCANDIDATELIST;
   type LPCANDIDATELIST is access all tagCANDIDATELIST;
   type tagREGISTERWORDA is record
      lpReading : LPSTR;
      lpWord_x : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagREGISTERWORDA);
   for tagREGISTERWORDA use record
      lpReading at 0 range 0..63;
      lpWord_x at 0 range 64..127;
   end record;
   for tagREGISTERWORDA'Size use 128;
   for tagREGISTERWORDA'Alignment use 8;
   subtype REGISTERWORDA is tagREGISTERWORDA;
   type PREGISTERWORDA is access all tagREGISTERWORDA;
   type NPREGISTERWORDA is access all tagREGISTERWORDA;
   type LPREGISTERWORDA is access all tagREGISTERWORDA;
   type tagREGISTERWORDW is record
      lpReading : LPWSTR;
      lpWord_x : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagREGISTERWORDW);
   for tagREGISTERWORDW use record
      lpReading at 0 range 0..63;
      lpWord_x at 0 range 64..127;
   end record;
   for tagREGISTERWORDW'Size use 128;
   for tagREGISTERWORDW'Alignment use 8;
   subtype REGISTERWORDW is tagREGISTERWORDW;
   type PREGISTERWORDW is access all tagREGISTERWORDW;
   type NPREGISTERWORDW is access all tagREGISTERWORDW;
   type LPREGISTERWORDW is access all tagREGISTERWORDW;
   subtype REGISTERWORD is REGISTERWORDA;
   subtype PREGISTERWORD is PREGISTERWORDA;
   subtype NPREGISTERWORD is NPREGISTERWORDA;
   subtype LPREGISTERWORD is LPREGISTERWORDA;
   type tagRECONVERTSTRING is record
      dwSize : DWORD;
      dwVersion : DWORD;
      dwStrLen : DWORD;
      dwStrOffset : DWORD;
      dwCompStrLen : DWORD;
      dwCompStrOffset : DWORD;
      dwTargetStrLen : DWORD;
      dwTargetStrOffset : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRECONVERTSTRING);
   for tagRECONVERTSTRING use record
      dwSize at 0 range 0..31;
      dwVersion at 0 range 32..63;
      dwStrLen at 0 range 64..95;
      dwStrOffset at 0 range 96..127;
      dwCompStrLen at 0 range 128..159;
      dwCompStrOffset at 0 range 160..191;
      dwTargetStrLen at 0 range 192..223;
      dwTargetStrOffset at 0 range 224..255;
   end record;
   for tagRECONVERTSTRING'Size use 256;
   for tagRECONVERTSTRING'Alignment use 4;
   subtype RECONVERTSTRING is tagRECONVERTSTRING;
   type PRECONVERTSTRING is access all tagRECONVERTSTRING;
   type NPRECONVERTSTRING is access all tagRECONVERTSTRING;
   type LPRECONVERTSTRING is access all tagRECONVERTSTRING;
   type tagSTYLEBUFA_szDescription_Array is array(1..32) of CHAR; -- Auto Generated Dependancy
   type tagSTYLEBUFA is record
      dwStyle : DWORD;
      szDescription : tagSTYLEBUFA_szDescription_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSTYLEBUFA);
   for tagSTYLEBUFA use record
      dwStyle at 0 range 0..31;
      szDescription at 0 range 32..287;
   end record;
   for tagSTYLEBUFA'Size use 288;
   for tagSTYLEBUFA'Alignment use 4;
   subtype STYLEBUFA is tagSTYLEBUFA;
   type PSTYLEBUFA is access all tagSTYLEBUFA;
   type NPSTYLEBUFA is access all tagSTYLEBUFA;
   type LPSTYLEBUFA is access all tagSTYLEBUFA;
   type tagSTYLEBUFW_szDescription_Array is array(1..32) of WCHAR; -- Auto Generated Dependancy
   type tagSTYLEBUFW is record
      dwStyle : DWORD;
      szDescription : tagSTYLEBUFW_szDescription_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSTYLEBUFW);
   for tagSTYLEBUFW use record
      dwStyle at 0 range 0..31;
      szDescription at 0 range 32..543;
   end record;
   for tagSTYLEBUFW'Size use 544;
   for tagSTYLEBUFW'Alignment use 4;
   subtype STYLEBUFW is tagSTYLEBUFW;
   type PSTYLEBUFW is access all tagSTYLEBUFW;
   type NPSTYLEBUFW is access all tagSTYLEBUFW;
   type LPSTYLEBUFW is access all tagSTYLEBUFW;
   subtype STYLEBUF is STYLEBUFA;
   subtype PSTYLEBUF is PSTYLEBUFA;
   subtype NPSTYLEBUF is NPSTYLEBUFA;
   subtype LPSTYLEBUF is LPSTYLEBUFA;
   type tagIMEMENUITEMINFOA_szString_Array is array(1..80) of CHAR; -- Auto Generated Dependancy
   type tagIMEMENUITEMINFOA is record
      cbSize : UINT;
      fType : UINT;
      fState : UINT;
      wID : UINT;
      hbmpChecked : HBITMAP;
      hbmpUnchecked : HBITMAP;
      dwItemData : DWORD;
      szString : tagIMEMENUITEMINFOA_szString_Array;
      hbmpItem : HBITMAP;
   end record;
   pragma Convention (C_Pass_By_Copy,tagIMEMENUITEMINFOA);
   for tagIMEMENUITEMINFOA use record
      cbSize at 0 range 0..31;
      fType at 0 range 32..63;
      fState at 0 range 64..95;
      wID at 0 range 96..127;
      hbmpChecked at 0 range 128..191;
      hbmpUnchecked at 0 range 192..255;
      dwItemData at 0 range 256..287;
      szString at 0 range 288..927;
      hbmpItem at 0 range 960..1023;
   end record;
   for tagIMEMENUITEMINFOA'Size use 1024;
   for tagIMEMENUITEMINFOA'Alignment use 8;
   subtype IMEMENUITEMINFOA is tagIMEMENUITEMINFOA;
   type PIMEMENUITEMINFOA is access all tagIMEMENUITEMINFOA;
   type NPIMEMENUITEMINFOA is access all tagIMEMENUITEMINFOA;
   type LPIMEMENUITEMINFOA is access all tagIMEMENUITEMINFOA;
   type tagIMEMENUITEMINFOW_szString_Array is array(1..80) of WCHAR; -- Auto Generated Dependancy
   type tagIMEMENUITEMINFOW is record
      cbSize : UINT;
      fType : UINT;
      fState : UINT;
      wID : UINT;
      hbmpChecked : HBITMAP;
      hbmpUnchecked : HBITMAP;
      dwItemData : DWORD;
      szString : tagIMEMENUITEMINFOW_szString_Array;
      hbmpItem : HBITMAP;
   end record;
   pragma Convention (C_Pass_By_Copy,tagIMEMENUITEMINFOW);
   for tagIMEMENUITEMINFOW use record
      cbSize at 0 range 0..31;
      fType at 0 range 32..63;
      fState at 0 range 64..95;
      wID at 0 range 96..127;
      hbmpChecked at 0 range 128..191;
      hbmpUnchecked at 0 range 192..255;
      dwItemData at 0 range 256..287;
      szString at 0 range 288..1567;
      hbmpItem at 0 range 1600..1663;
   end record;
   for tagIMEMENUITEMINFOW'Size use 1664;
   for tagIMEMENUITEMINFOW'Alignment use 8;
   subtype IMEMENUITEMINFOW is tagIMEMENUITEMINFOW;
   type PIMEMENUITEMINFOW is access all tagIMEMENUITEMINFOW;
   type NPIMEMENUITEMINFOW is access all tagIMEMENUITEMINFOW;
   type LPIMEMENUITEMINFOW is access all tagIMEMENUITEMINFOW;
   subtype IMEMENUITEMINFO is IMEMENUITEMINFOA;
   subtype PIMEMENUITEMINFO is PIMEMENUITEMINFOA;
   subtype NPIMEMENUITEMINFO is NPIMEMENUITEMINFOA;
   subtype LPIMEMENUITEMINFO is LPIMEMENUITEMINFOA;
   type tagIMECHARPOSITION is record
      dwSize : DWORD;
      dwCharPos : DWORD;
      pt : POINT;
      cLineHeight : UINT;
      rcDocument : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagIMECHARPOSITION);
   for tagIMECHARPOSITION use record
      dwSize at 0 range 0..31;
      dwCharPos at 0 range 32..63;
      pt at 0 range 64..127;
      cLineHeight at 0 range 128..159;
      rcDocument at 0 range 160..287;
   end record;
   for tagIMECHARPOSITION'Size use 288;
   for tagIMECHARPOSITION'Alignment use 4;
   subtype IMECHARPOSITION is tagIMECHARPOSITION;
   type PIMECHARPOSITION is access all tagIMECHARPOSITION;
   type NPIMECHARPOSITION is access all tagIMECHARPOSITION;
   type LPIMECHARPOSITION is access all tagIMECHARPOSITION;
   type IMCENUMPROC is access function (p1 : HIMC ; p2 : LPARAM) return BOOL; -- BOOL (HIMC, LPARAM)
   pragma Convention(C,IMCENUMPROC);
   function ImmInstallIMEA(
      lpszIMEFileName : LPCSTR;
      lpszLayoutText : LPCSTR
   ) return HKL;
   pragma import (Cpp,ImmInstallIMEA,"ImmInstallIMEA");
   function ImmInstallIMEW(
      lpszIMEFileName : LPCWSTR;
      lpszLayoutText : LPCWSTR
   ) return HKL;
   pragma import (Cpp,ImmInstallIMEW,"ImmInstallIMEW");
   function ImmGetDefaultIMEWnd(
      param1 : HWND
   ) return HWND;
   pragma import (Cpp,ImmGetDefaultIMEWnd,"ImmGetDefaultIMEWnd");
   function ImmGetDescriptionA(
      param1 : HKL;
      lpszDescription : LPSTR;
      uBufLen : UINT
   ) return UINT;
   pragma import (Cpp,ImmGetDescriptionA,"ImmGetDescriptionA");
   function ImmGetDescriptionW(
      param1 : HKL;
      lpszDescription : LPWSTR;
      uBufLen : UINT
   ) return UINT;
   pragma import (Cpp,ImmGetDescriptionW,"ImmGetDescriptionW");
   function ImmGetIMEFileNameA(
      param1 : HKL;
      lpszFileName : LPSTR;
      uBufLen : UINT
   ) return UINT;
   pragma import (Cpp,ImmGetIMEFileNameA,"ImmGetIMEFileNameA");
   function ImmGetIMEFileNameW(
      param1 : HKL;
      lpszFileName : LPWSTR;
      uBufLen : UINT
   ) return UINT;
   pragma import (Cpp,ImmGetIMEFileNameW,"ImmGetIMEFileNameW");
   function ImmGetProperty(
      param1 : HKL;
      param2 : DWORD
   ) return DWORD;
   pragma import (Cpp,ImmGetProperty,"ImmGetProperty");
   function ImmIsIME(
      param1 : HKL
   ) return BOOL;
   pragma import (Cpp,ImmIsIME,"ImmIsIME");
   function ImmSimulateHotKey(
      param1 : HWND;
      param2 : DWORD
   ) return BOOL;
   pragma import (Cpp,ImmSimulateHotKey,"ImmSimulateHotKey");
   function ImmCreateContext return HIMC;
   pragma import (Cpp,ImmCreateContext,"ImmCreateContext");
   function ImmDestroyContext(
      param1 : HIMC
   ) return BOOL;
   pragma import (Cpp,ImmDestroyContext,"ImmDestroyContext");
   function ImmGetContext(
      param1 : HWND
   ) return HIMC;
   pragma import (Cpp,ImmGetContext,"ImmGetContext");
   function ImmReleaseContext(
      param1 : HWND;
      param2 : HIMC
   ) return BOOL;
   pragma import (Cpp,ImmReleaseContext,"ImmReleaseContext");
   function ImmAssociateContext(
      param1 : HWND;
      param2 : HIMC
   ) return HIMC;
   pragma import (Cpp,ImmAssociateContext,"ImmAssociateContext");
   function ImmAssociateContextEx(
      param1 : HWND;
      param2 : HIMC;
      param3 : DWORD
   ) return BOOL;
   pragma import (Cpp,ImmAssociateContextEx,"ImmAssociateContextEx");
   function ImmGetCompositionStringA(
      param1 : HIMC;
      param2 : DWORD;
      lpBuf : LPVOID;
      dwBufLen : DWORD
   ) return LONG;
   pragma import (Cpp,ImmGetCompositionStringA,"ImmGetCompositionStringA");
   function ImmGetCompositionStringW(
      param1 : HIMC;
      param2 : DWORD;
      lpBuf : LPVOID;
      dwBufLen : DWORD
   ) return LONG;
   pragma import (Cpp,ImmGetCompositionStringW,"ImmGetCompositionStringW");
   function ImmSetCompositionStringA(
      param1 : HIMC;
      dwIndex : DWORD;
      lpComp : LPVOID;
      dwCompLen : DWORD;
      lpRead : LPVOID;
      dwReadLen : DWORD
   ) return BOOL;
   pragma import (Cpp,ImmSetCompositionStringA,"ImmSetCompositionStringA");
   function ImmSetCompositionStringW(
      param1 : HIMC;
      dwIndex : DWORD;
      lpComp : LPVOID;
      dwCompLen : DWORD;
      lpRead : LPVOID;
      dwReadLen : DWORD
   ) return BOOL;
   pragma import (Cpp,ImmSetCompositionStringW,"ImmSetCompositionStringW");
   function ImmGetCandidateListCountA(
      param1 : HIMC;
      lpdwListCount : LPDWORD
   ) return DWORD;
   pragma import (Cpp,ImmGetCandidateListCountA,"ImmGetCandidateListCountA");
   function ImmGetCandidateListCountW(
      param1 : HIMC;
      lpdwListCount : LPDWORD
   ) return DWORD;
   pragma import (Cpp,ImmGetCandidateListCountW,"ImmGetCandidateListCountW");
   function ImmGetCandidateListA(
      param1 : HIMC;
      deIndex : DWORD;
      lpCandList : LPCANDIDATELIST;
      dwBufLen : DWORD
   ) return DWORD;
   pragma import (Cpp,ImmGetCandidateListA,"ImmGetCandidateListA");
   function ImmGetCandidateListW(
      param1 : HIMC;
      deIndex : DWORD;
      lpCandList : LPCANDIDATELIST;
      dwBufLen : DWORD
   ) return DWORD;
   pragma import (Cpp,ImmGetCandidateListW,"ImmGetCandidateListW");
   function ImmGetGuideLineA(
      param1 : HIMC;
      dwIndex : DWORD;
      lpBuf : LPSTR;
      dwBufLen : DWORD
   ) return DWORD;
   pragma import (Cpp,ImmGetGuideLineA,"ImmGetGuideLineA");
   function ImmGetGuideLineW(
      param1 : HIMC;
      dwIndex : DWORD;
      lpBuf : LPWSTR;
      dwBufLen : DWORD
   ) return DWORD;
   pragma import (Cpp,ImmGetGuideLineW,"ImmGetGuideLineW");
   function ImmGetConversionStatus(
      param1 : HIMC;
      lpfdwConversion : LPDWORD;
      lpfdwSentence : LPDWORD
   ) return BOOL;
   pragma import (Cpp,ImmGetConversionStatus,"ImmGetConversionStatus");
   function ImmSetConversionStatus(
      param1 : HIMC;
      param2 : DWORD;
      param3 : DWORD
   ) return BOOL;
   pragma import (Cpp,ImmSetConversionStatus,"ImmSetConversionStatus");
   function ImmGetOpenStatus(
      param1 : HIMC
   ) return BOOL;
   pragma import (Cpp,ImmGetOpenStatus,"ImmGetOpenStatus");
   function ImmSetOpenStatus(
      param1 : HIMC;
      param2 : BOOL
   ) return BOOL;
   pragma import (Cpp,ImmSetOpenStatus,"ImmSetOpenStatus");
   function ImmGetCompositionFontA(
      param1 : HIMC;
      lplf : LPLOGFONTA
   ) return BOOL;
   pragma import (Cpp,ImmGetCompositionFontA,"ImmGetCompositionFontA");
   function ImmGetCompositionFontW(
      param1 : HIMC;
      lplf : LPLOGFONTW
   ) return BOOL;
   pragma import (Cpp,ImmGetCompositionFontW,"ImmGetCompositionFontW");
   function ImmSetCompositionFontA(
      param1 : HIMC;
      lplf : LPLOGFONTA
   ) return BOOL;
   pragma import (Cpp,ImmSetCompositionFontA,"ImmSetCompositionFontA");
   function ImmSetCompositionFontW(
      param1 : HIMC;
      lplf : LPLOGFONTW
   ) return BOOL;
   pragma import (Cpp,ImmSetCompositionFontW,"ImmSetCompositionFontW");
   function ImmConfigureIMEA(
      param1 : HKL;
      param2 : HWND;
      param3 : DWORD;
      param4 : LPVOID
   ) return BOOL;
   pragma import (Cpp,ImmConfigureIMEA,"ImmConfigureIMEA");
   function ImmConfigureIMEW(
      param1 : HKL;
      param2 : HWND;
      param3 : DWORD;
      param4 : LPVOID
   ) return BOOL;
   pragma import (Cpp,ImmConfigureIMEW,"ImmConfigureIMEW");
   function ImmEscapeA(
      param1 : HKL;
      param2 : HIMC;
      param3 : UINT;
      param4 : LPVOID
   ) return LRESULT;
   pragma import (Cpp,ImmEscapeA,"ImmEscapeA");
   function ImmEscapeW(
      param1 : HKL;
      param2 : HIMC;
      param3 : UINT;
      param4 : LPVOID
   ) return LRESULT;
   pragma import (Cpp,ImmEscapeW,"ImmEscapeW");
   function ImmGetConversionListA(
      param1 : HKL;
      param2 : HIMC;
      lpSrc : LPCSTR;
      lpDst : LPCANDIDATELIST;
      dwBufLen : DWORD;
      uFlag : UINT
   ) return DWORD;
   pragma import (Cpp,ImmGetConversionListA,"ImmGetConversionListA");
   function ImmGetConversionListW(
      param1 : HKL;
      param2 : HIMC;
      lpSrc : LPCWSTR;
      lpDst : LPCANDIDATELIST;
      dwBufLen : DWORD;
      uFlag : UINT
   ) return DWORD;
   pragma import (Cpp,ImmGetConversionListW,"ImmGetConversionListW");
   function ImmNotifyIME(
      param1 : HIMC;
      dwAction : DWORD;
      dwIndex : DWORD;
      dwValue : DWORD
   ) return BOOL;
   pragma import (Cpp,ImmNotifyIME,"ImmNotifyIME");
   function ImmGetStatusWindowPos(
      param1 : HIMC;
      lpptPos : LPPOINT
   ) return BOOL;
   pragma import (Cpp,ImmGetStatusWindowPos,"ImmGetStatusWindowPos");
   function ImmSetStatusWindowPos(
      param1 : HIMC;
      lpptPos : LPPOINT
   ) return BOOL;
   pragma import (Cpp,ImmSetStatusWindowPos,"ImmSetStatusWindowPos");
   function ImmGetCompositionWindow(
      param1 : HIMC;
      lpCompForm : LPCOMPOSITIONFORM
   ) return BOOL;
   pragma import (Cpp,ImmGetCompositionWindow,"ImmGetCompositionWindow");
   function ImmSetCompositionWindow(
      param1 : HIMC;
      lpCompForm : LPCOMPOSITIONFORM
   ) return BOOL;
   pragma import (Cpp,ImmSetCompositionWindow,"ImmSetCompositionWindow");
   function ImmGetCandidateWindow(
      param1 : HIMC;
      param2 : DWORD;
      lpCandidate : LPCANDIDATEFORM
   ) return BOOL;
   pragma import (Cpp,ImmGetCandidateWindow,"ImmGetCandidateWindow");
   function ImmSetCandidateWindow(
      param1 : HIMC;
      lpCandidate : LPCANDIDATEFORM
   ) return BOOL;
   pragma import (Cpp,ImmSetCandidateWindow,"ImmSetCandidateWindow");
   function ImmIsUIMessageA(
      param1 : HWND;
      param2 : UINT;
      param3 : WPARAM;
      param4 : LPARAM
   ) return BOOL;
   pragma import (Cpp,ImmIsUIMessageA,"ImmIsUIMessageA");
   function ImmIsUIMessageW(
      param1 : HWND;
      param2 : UINT;
      param3 : WPARAM;
      param4 : LPARAM
   ) return BOOL;
   pragma import (Cpp,ImmIsUIMessageW,"ImmIsUIMessageW");
   function ImmGetVirtualKey(
      param1 : HWND
   ) return UINT;
   pragma import (Cpp,ImmGetVirtualKey,"ImmGetVirtualKey");
   type REGISTERWORDENUMPROCA is access function (p1 : LPCSTR ; p2 : DWORD ; p3 : LPCSTR ; p4 : LPVOID) return int; -- int (LPCSTR, DWORD, LPCSTR, LPVOID)
   pragma Convention(C,REGISTERWORDENUMPROCA);
   type REGISTERWORDENUMPROCW is access function (p1 : LPCWSTR ; p2 : DWORD ; p3 : LPCWSTR ; p4 : LPVOID) return int; -- int (LPCWSTR, DWORD, LPCWSTR, LPVOID)
   pragma Convention(C,REGISTERWORDENUMPROCW);
   function ImmRegisterWordA(
      param1 : HKL;
      lpszReading : LPCSTR;
      param3 : DWORD;
      lpszRegister : LPCSTR
   ) return BOOL;
   pragma import (Cpp,ImmRegisterWordA,"ImmRegisterWordA");
   function ImmRegisterWordW(
      param1 : HKL;
      lpszReading : LPCWSTR;
      param3 : DWORD;
      lpszRegister : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,ImmRegisterWordW,"ImmRegisterWordW");
   function ImmUnregisterWordA(
      param1 : HKL;
      lpszReading : LPCSTR;
      param3 : DWORD;
      lpszUnregister : LPCSTR
   ) return BOOL;
   pragma import (Cpp,ImmUnregisterWordA,"ImmUnregisterWordA");
   function ImmUnregisterWordW(
      param1 : HKL;
      lpszReading : LPCWSTR;
      param3 : DWORD;
      lpszUnregister : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,ImmUnregisterWordW,"ImmUnregisterWordW");
   function ImmGetRegisterWordStyleA(
      param1 : HKL;
      nItem : UINT;
      lpStyleBuf_x : LPSTYLEBUFA
   ) return UINT;
   pragma import (Cpp,ImmGetRegisterWordStyleA,"ImmGetRegisterWordStyleA");
   function ImmGetRegisterWordStyleW(
      param1 : HKL;
      nItem : UINT;
      lpStyleBuf_x : LPSTYLEBUFW
   ) return UINT;
   pragma import (Cpp,ImmGetRegisterWordStyleW,"ImmGetRegisterWordStyleW");
   function ImmEnumRegisterWordA(
      param1 : HKL;
      param2 : REGISTERWORDENUMPROCA;
      lpszReading : LPCSTR;
      param4 : DWORD;
      lpszRegister : LPCSTR;
      param6 : LPVOID
   ) return UINT;
   pragma import (Cpp,ImmEnumRegisterWordA,"ImmEnumRegisterWordA");
   function ImmEnumRegisterWordW(
      param1 : HKL;
      param2 : REGISTERWORDENUMPROCW;
      lpszReading : LPCWSTR;
      param4 : DWORD;
      lpszRegister : LPCWSTR;
      param6 : LPVOID
   ) return UINT;
   pragma import (Cpp,ImmEnumRegisterWordW,"ImmEnumRegisterWordW");
   function ImmDisableIME(
      param1 : DWORD
   ) return BOOL;
   pragma import (Cpp,ImmDisableIME,"ImmDisableIME");
   function ImmEnumInputContext(
      idThread : DWORD;
      lpfn : IMCENUMPROC;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,ImmEnumInputContext,"ImmEnumInputContext");
   function ImmGetImeMenuItemsA(
      param1 : HIMC;
      param2 : DWORD;
      param3 : DWORD;
      lpImeParentMenu : LPIMEMENUITEMINFOA;
      lpImeMenu : LPIMEMENUITEMINFOA;
      dwSize : DWORD
   ) return DWORD;
   pragma import (Cpp,ImmGetImeMenuItemsA,"ImmGetImeMenuItemsA");
   function ImmGetImeMenuItemsW(
      param1 : HIMC;
      param2 : DWORD;
      param3 : DWORD;
      lpImeParentMenu : LPIMEMENUITEMINFOW;
      lpImeMenu : LPIMEMENUITEMINFOW;
      dwSize : DWORD
   ) return DWORD;
   pragma import (Cpp,ImmGetImeMenuItemsW,"ImmGetImeMenuItemsW");
   function ImmDisableTextFrameService(
      idThread : DWORD
   ) return BOOL;
   pragma import (Cpp,ImmDisableTextFrameService,"ImmDisableTextFrameService");
   function ImmDisableLegacyIME return BOOL;
   pragma import (Cpp,ImmDisableLegacyIME,"ImmDisableLegacyIME");
   -- #include <shellapi.h>
   function CommandLineToArgvW(
      lpCmdLine : LPCWSTR;
      pNumArgs : access Interfaces.C.Int
   ) return access LPWSTR;
   pragma import (Cpp,CommandLineToArgvW,"CommandLineToArgvW");
   type HDROP_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HDROP_x);
   for HDROP_x use record
      unused at 0 range 0..31;
   end record;
   for HDROP_x'Size use 32;
   for HDROP_x'Alignment use 4;
   type HDROP is access all HDROP_x;
   function DragQueryFileA(
      hDrop_x : HDROP;
      iFile : UINT;
      lpszFile : LPSTR;
      cch : UINT
   ) return UINT;
   pragma import (Cpp,DragQueryFileA,"DragQueryFileA");
   function DragQueryFileW(
      hDrop_x : HDROP;
      iFile : UINT;
      lpszFile : LPWSTR;
      cch : UINT
   ) return UINT;
   pragma import (Cpp,DragQueryFileW,"DragQueryFileW");
   function DragQueryPoint(
      hDrop_x : HDROP;
      ppt : access POINT
   ) return BOOL;
   pragma import (Cpp,DragQueryPoint,"DragQueryPoint");
   procedure DragFinish(
      hDrop_x : HDROP
   );
   pragma import (Cpp,DragFinish,"DragFinish");
   procedure DragAcceptFiles(
      hWnd_x : HWND;
      fAccept : BOOL
   );
   pragma import (Cpp,DragAcceptFiles,"DragAcceptFiles");
   function ShellExecuteA(
      hwnd_x : HWND;
      lpOperation : LPCSTR;
      lpFile : LPCSTR;
      lpParameters : LPCSTR;
      lpDirectory : LPCSTR;
      nShowCmd : INT
   ) return HINSTANCE;
   pragma import (Cpp,ShellExecuteA,"ShellExecuteA");
   function ShellExecuteW(
      hwnd_x : HWND;
      lpOperation : LPCWSTR;
      lpFile : LPCWSTR;
      lpParameters : LPCWSTR;
      lpDirectory : LPCWSTR;
      nShowCmd : INT
   ) return HINSTANCE;
   pragma import (Cpp,ShellExecuteW,"ShellExecuteW");
   function FindExecutableA(
      lpFile : LPCSTR;
      lpDirectory : LPCSTR;
      lpResult : LPSTR
   ) return HINSTANCE;
   pragma import (Cpp,FindExecutableA,"FindExecutableA");
   function FindExecutableW(
      lpFile : LPCWSTR;
      lpDirectory : LPCWSTR;
      lpResult : LPWSTR
   ) return HINSTANCE;
   pragma import (Cpp,FindExecutableW,"FindExecutableW");
   function ShellAboutA(
      hWnd_x : HWND;
      szApp : LPCSTR;
      szOtherStuff : LPCSTR;
      hIcon_x : HICON
   ) return INT;
   pragma import (Cpp,ShellAboutA,"ShellAboutA");
   function ShellAboutW(
      hWnd_x : HWND;
      szApp : LPCWSTR;
      szOtherStuff : LPCWSTR;
      hIcon_x : HICON
   ) return INT;
   pragma import (Cpp,ShellAboutW,"ShellAboutW");
   function DuplicateIcon(
      hInst : HINSTANCE;
      hIcon_x : HICON
   ) return HICON;
   pragma import (Cpp,DuplicateIcon,"DuplicateIcon");
   function ExtractAssociatedIconA(
      hInst : HINSTANCE;
      pszIconPath : LPSTR;
      piIcon : access WORD
   ) return HICON;
   pragma import (Cpp,ExtractAssociatedIconA,"ExtractAssociatedIconA");
   function ExtractAssociatedIconW(
      hInst : HINSTANCE;
      pszIconPath : LPWSTR;
      piIcon : access WORD
   ) return HICON;
   pragma import (Cpp,ExtractAssociatedIconW,"ExtractAssociatedIconW");
   function ExtractAssociatedIconExA(
      hInst : HINSTANCE;
      pszIconPath : LPSTR;
      piIconIndex : access WORD;
      piIconId : access WORD
   ) return HICON;
   pragma import (Cpp,ExtractAssociatedIconExA,"ExtractAssociatedIconExA");
   function ExtractAssociatedIconExW(
      hInst : HINSTANCE;
      pszIconPath : LPWSTR;
      piIconIndex : access WORD;
      piIconId : access WORD
   ) return HICON;
   pragma import (Cpp,ExtractAssociatedIconExW,"ExtractAssociatedIconExW");
   function ExtractIconA(
      hInst : HINSTANCE;
      pszExeFileName : LPCSTR;
      nIconIndex : UINT
   ) return HICON;
   pragma import (Cpp,ExtractIconA,"ExtractIconA");
   function ExtractIconW(
      hInst : HINSTANCE;
      pszExeFileName : LPCWSTR;
      nIconIndex : UINT
   ) return HICON;
   pragma import (Cpp,ExtractIconW,"ExtractIconW");
   type DRAGINFOA_x is record
      uSize : UINT;
      pt : POINT;
      fNC : BOOL;
      lpFileList : PZZSTR;
      grfKeyState : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DRAGINFOA_x);
   for DRAGINFOA_x use record
      uSize at 0 range 0..31;
      pt at 0 range 32..95;
      fNC at 0 range 96..127;
      lpFileList at 0 range 128..191;
      grfKeyState at 0 range 192..223;
   end record;
   for DRAGINFOA_x'Size use 256;
   for DRAGINFOA_x'Alignment use 8;
   subtype DRAGINFOA is DRAGINFOA_x;
   type LPDRAGINFOA is access all DRAGINFOA_x;
   type DRAGINFOW_x is record
      uSize : UINT;
      pt : POINT;
      fNC : BOOL;
      lpFileList : PZZWSTR;
      grfKeyState : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DRAGINFOW_x);
   for DRAGINFOW_x use record
      uSize at 0 range 0..31;
      pt at 0 range 32..95;
      fNC at 0 range 96..127;
      lpFileList at 0 range 128..191;
      grfKeyState at 0 range 192..223;
   end record;
   for DRAGINFOW_x'Size use 256;
   for DRAGINFOW_x'Alignment use 8;
   subtype DRAGINFOW is DRAGINFOW_x;
   type LPDRAGINFOW is access all DRAGINFOW_x;
   subtype DRAGINFO is DRAGINFOA;
   subtype LPDRAGINFO is LPDRAGINFOA;
   type AppBarData_x is record
      cbSize : DWORD;
      hWnd_x : HWND;
      uCallbackMessage : UINT;
      uEdge : UINT;
      rc : RECT;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,AppBarData_x);
   for AppBarData_x use record
      cbSize at 0 range 0..31;
      hWnd_x at 0 range 64..127;
      uCallbackMessage at 0 range 128..159;
      uEdge at 0 range 160..191;
      rc at 0 range 192..319;
      lParam_x at 0 range 320..383;
   end record;
   for AppBarData_x'Size use 384;
   for AppBarData_x'Alignment use 8;
   subtype APPBARDATA is AppBarData_x;
   type PAPPBARDATA is access all AppBarData_x;
   function SHAppBarMessage(
      dwMessage : DWORD;
      pData : PAPPBARDATA
   ) return UINT_PTR;
   pragma import (Cpp,SHAppBarMessage,"SHAppBarMessage");
   function DoEnvironmentSubstA(
      pszSrc : LPSTR;
      cchSrc : UINT
   ) return DWORD;
   pragma import (Cpp,DoEnvironmentSubstA,"DoEnvironmentSubstA");
   function DoEnvironmentSubstW(
      pszSrc : LPWSTR;
      cchSrc : UINT
   ) return DWORD;
   pragma import (Cpp,DoEnvironmentSubstW,"DoEnvironmentSubstW");
   function ExtractIconExA(
      lpszFile : LPCSTR;
      nIconIndex : Interfaces.C.Int;
      phiconLarge : access HICON;
      phiconSmall : access HICON;
      nIcons : UINT
   ) return UINT;
   pragma import (Cpp,ExtractIconExA,"ExtractIconExA");
   function ExtractIconExW(
      lpszFile : LPCWSTR;
      nIconIndex : Interfaces.C.Int;
      phiconLarge : access HICON;
      phiconSmall : access HICON;
      nIcons : UINT
   ) return UINT;
   pragma import (Cpp,ExtractIconExW,"ExtractIconExW");
   subtype FILEOP_FLAGS is WORD;
   subtype PRINTEROP_FLAGS is WORD;
   type SHFILEOPSTRUCTA_x is record
      hwnd_x : HWND;
      wFunc : UINT;
      pFrom : PCZZSTR;
      pTo : PCZZSTR;
      fFlags : FILEOP_FLAGS;
      fAnyOperationsAborted : BOOL;
      hNameMappings : LPVOID;
      lpszProgressTitle : PCSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,SHFILEOPSTRUCTA_x);
   for SHFILEOPSTRUCTA_x use record
      hwnd_x at 0 range 0..63;
      wFunc at 0 range 64..95;
      pFrom at 0 range 128..191;
      pTo at 0 range 192..255;
      fFlags at 0 range 256..271;
      fAnyOperationsAborted at 0 range 288..319;
      hNameMappings at 0 range 320..383;
      lpszProgressTitle at 0 range 384..447;
   end record;
   for SHFILEOPSTRUCTA_x'Size use 448;
   for SHFILEOPSTRUCTA_x'Alignment use 8;
   subtype SHFILEOPSTRUCTA is SHFILEOPSTRUCTA_x;
   type LPSHFILEOPSTRUCTA is access all SHFILEOPSTRUCTA_x;
   type SHFILEOPSTRUCTW_x is record
      hwnd_x : HWND;
      wFunc : UINT;
      pFrom : PCZZWSTR;
      pTo : PCZZWSTR;
      fFlags : FILEOP_FLAGS;
      fAnyOperationsAborted : BOOL;
      hNameMappings : LPVOID;
      lpszProgressTitle : PCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,SHFILEOPSTRUCTW_x);
   for SHFILEOPSTRUCTW_x use record
      hwnd_x at 0 range 0..63;
      wFunc at 0 range 64..95;
      pFrom at 0 range 128..191;
      pTo at 0 range 192..255;
      fFlags at 0 range 256..271;
      fAnyOperationsAborted at 0 range 288..319;
      hNameMappings at 0 range 320..383;
      lpszProgressTitle at 0 range 384..447;
   end record;
   for SHFILEOPSTRUCTW_x'Size use 448;
   for SHFILEOPSTRUCTW_x'Alignment use 8;
   subtype SHFILEOPSTRUCTW is SHFILEOPSTRUCTW_x;
   type LPSHFILEOPSTRUCTW is access all SHFILEOPSTRUCTW_x;
   subtype SHFILEOPSTRUCT is SHFILEOPSTRUCTA;
   subtype LPSHFILEOPSTRUCT is LPSHFILEOPSTRUCTA;
   function SHFileOperationA(
      lpFileOp : LPSHFILEOPSTRUCTA
   ) return Interfaces.C.Int;
   pragma import (Cpp,SHFileOperationA,"SHFileOperationA");
   function SHFileOperationW(
      lpFileOp : LPSHFILEOPSTRUCTW
   ) return Interfaces.C.Int;
   pragma import (Cpp,SHFileOperationW,"SHFileOperationW");
   procedure SHFreeNameMappings(
      hNameMappings : HANDLE
   );
   pragma import (Cpp,SHFreeNameMappings,"SHFreeNameMappings");
   type SHNAMEMAPPINGA_x is record
      pszOldPath : LPSTR;
      pszNewPath : LPSTR;
      cchOldPath : Interfaces.C.Int;
      cchNewPath : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,SHNAMEMAPPINGA_x);
   for SHNAMEMAPPINGA_x use record
      pszOldPath at 0 range 0..63;
      pszNewPath at 0 range 64..127;
      cchOldPath at 0 range 128..159;
      cchNewPath at 0 range 160..191;
   end record;
   for SHNAMEMAPPINGA_x'Size use 192;
   for SHNAMEMAPPINGA_x'Alignment use 8;
   subtype SHNAMEMAPPINGA is SHNAMEMAPPINGA_x;
   type LPSHNAMEMAPPINGA is access all SHNAMEMAPPINGA_x;
   type SHNAMEMAPPINGW_x is record
      pszOldPath : LPWSTR;
      pszNewPath : LPWSTR;
      cchOldPath : Interfaces.C.Int;
      cchNewPath : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,SHNAMEMAPPINGW_x);
   for SHNAMEMAPPINGW_x use record
      pszOldPath at 0 range 0..63;
      pszNewPath at 0 range 64..127;
      cchOldPath at 0 range 128..159;
      cchNewPath at 0 range 160..191;
   end record;
   for SHNAMEMAPPINGW_x'Size use 192;
   for SHNAMEMAPPINGW_x'Alignment use 8;
   subtype SHNAMEMAPPINGW is SHNAMEMAPPINGW_x;
   type LPSHNAMEMAPPINGW is access all SHNAMEMAPPINGW_x;
   subtype SHNAMEMAPPING is SHNAMEMAPPINGA;
   subtype LPSHNAMEMAPPING is LPSHNAMEMAPPINGA;
   type Anonymous_Record_202 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HANDLE;
         when others => 
            hMonitor_x : HANDLE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_202);
   pragma Unchecked_Union (Anonymous_Record_202);
   for Anonymous_Record_202'Size use 64;
   for Anonymous_Record_202'Alignment use 8;
   type SHELLEXECUTEINFOA_x is record
      cbSize : DWORD;
      fMask : ULONG;
      hwnd_x : HWND;
      lpVerb : LPCSTR;
      lpFile : LPCSTR;
      lpParameters : LPCSTR;
      lpDirectory : LPCSTR;
      nShow : Interfaces.C.Int;
      hInstApp : HINSTANCE;
      lpIDList : access Void;
      lpClass : LPCSTR;
      hkeyClass : HKEY;
      dwHotKey : DWORD;
      field_1 : Anonymous_Record_202;
      hProcess : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,SHELLEXECUTEINFOA_x);
   for SHELLEXECUTEINFOA_x use record
      cbSize at 0 range 0..31;
      fMask at 0 range 32..63;
      hwnd_x at 0 range 64..127;
      lpVerb at 0 range 128..191;
      lpFile at 0 range 192..255;
      lpParameters at 0 range 256..319;
      lpDirectory at 0 range 320..383;
      nShow at 0 range 384..415;
      hInstApp at 0 range 448..511;
      lpIDList at 0 range 512..575;
      lpClass at 0 range 576..639;
      hkeyClass at 0 range 640..703;
      dwHotKey at 0 range 704..735;
      field_1 at 0 range 736..799;
      hProcess at 0 range 832..895;
   end record;
   for SHELLEXECUTEINFOA_x'Size use 896;
   for SHELLEXECUTEINFOA_x'Alignment use 8;
   subtype SHELLEXECUTEINFOA is SHELLEXECUTEINFOA_x;
   type LPSHELLEXECUTEINFOA is access all SHELLEXECUTEINFOA_x;
   type Anonymous_Record_203 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HANDLE;
         when others => 
            hMonitor_x : HANDLE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_203);
   pragma Unchecked_Union (Anonymous_Record_203);
   for Anonymous_Record_203'Size use 64;
   for Anonymous_Record_203'Alignment use 8;
   type SHELLEXECUTEINFOW_x is record
      cbSize : DWORD;
      fMask : ULONG;
      hwnd_x : HWND;
      lpVerb : LPCWSTR;
      lpFile : LPCWSTR;
      lpParameters : LPCWSTR;
      lpDirectory : LPCWSTR;
      nShow : Interfaces.C.Int;
      hInstApp : HINSTANCE;
      lpIDList : access Void;
      lpClass : LPCWSTR;
      hkeyClass : HKEY;
      dwHotKey : DWORD;
      field_1 : Anonymous_Record_203;
      hProcess : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,SHELLEXECUTEINFOW_x);
   for SHELLEXECUTEINFOW_x use record
      cbSize at 0 range 0..31;
      fMask at 0 range 32..63;
      hwnd_x at 0 range 64..127;
      lpVerb at 0 range 128..191;
      lpFile at 0 range 192..255;
      lpParameters at 0 range 256..319;
      lpDirectory at 0 range 320..383;
      nShow at 0 range 384..415;
      hInstApp at 0 range 448..511;
      lpIDList at 0 range 512..575;
      lpClass at 0 range 576..639;
      hkeyClass at 0 range 640..703;
      dwHotKey at 0 range 704..735;
      field_1 at 0 range 736..799;
      hProcess at 0 range 832..895;
   end record;
   for SHELLEXECUTEINFOW_x'Size use 896;
   for SHELLEXECUTEINFOW_x'Alignment use 8;
   subtype SHELLEXECUTEINFOW is SHELLEXECUTEINFOW_x;
   type LPSHELLEXECUTEINFOW is access all SHELLEXECUTEINFOW_x;
   subtype SHELLEXECUTEINFO is SHELLEXECUTEINFOA;
   subtype LPSHELLEXECUTEINFO is LPSHELLEXECUTEINFOA;
   function ShellExecuteExA(
      pExecInfo : access SHELLEXECUTEINFOA
   ) return BOOL;
   pragma import (Cpp,ShellExecuteExA,"ShellExecuteExA");
   function ShellExecuteExW(
      pExecInfo : access SHELLEXECUTEINFOW
   ) return BOOL;
   pragma import (Cpp,ShellExecuteExW,"ShellExecuteExW");
   type SHCREATEPROCESSINFOW_x is record
      cbSize : DWORD;
      fMask : ULONG;
      hwnd_x : HWND;
      pszFile : LPCWSTR;
      pszParameters : LPCWSTR;
      pszCurrentDirectory : LPCWSTR;
      hUserToken : HANDLE;
      lpProcessAttributes : LPSECURITY_ATTRIBUTES;
      lpThreadAttributes : LPSECURITY_ATTRIBUTES;
      bInheritHandles : BOOL;
      dwCreationFlags : DWORD;
      lpStartupInfo_x : LPSTARTUPINFOW;
      lpProcessInformation : LPPROCESS_INFORMATION;
   end record;
   pragma Convention (C_Pass_By_Copy,SHCREATEPROCESSINFOW_x);
   for SHCREATEPROCESSINFOW_x use record
      cbSize at 0 range 0..31;
      fMask at 0 range 32..63;
      hwnd_x at 0 range 64..127;
      pszFile at 0 range 128..191;
      pszParameters at 0 range 192..255;
      pszCurrentDirectory at 0 range 256..319;
      hUserToken at 0 range 320..383;
      lpProcessAttributes at 0 range 384..447;
      lpThreadAttributes at 0 range 448..511;
      bInheritHandles at 0 range 512..543;
      dwCreationFlags at 0 range 544..575;
      lpStartupInfo_x at 0 range 576..639;
      lpProcessInformation at 0 range 640..703;
   end record;
   for SHCREATEPROCESSINFOW_x'Size use 704;
   for SHCREATEPROCESSINFOW_x'Alignment use 8;
   subtype SHCREATEPROCESSINFOW is SHCREATEPROCESSINFOW_x;
   type PSHCREATEPROCESSINFOW is access all SHCREATEPROCESSINFOW_x;
   function SHCreateProcessAsUserW(
      pscpi : PSHCREATEPROCESSINFOW
   ) return BOOL;
   pragma import (Cpp,SHCreateProcessAsUserW,"SHCreateProcessAsUserW");
   function SHEvaluateSystemCommandTemplate(
      pszCmdTemplate : PCWSTR;
      ppszApplication : access PWSTR;
      ppszCommandLine : access PWSTR;
      ppszParameters : access PWSTR
   ) return HRESULT;
   pragma import (Cpp,SHEvaluateSystemCommandTemplate,"SHEvaluateSystemCommandTemplate");
   type ASSOCCLASS is (
      ASSOCCLASS_SHELL_KEY,
      ASSOCCLASS_PROGID_KEY,
      ASSOCCLASS_PROGID_STR,
      ASSOCCLASS_CLSID_KEY,
      ASSOCCLASS_CLSID_STR,
      ASSOCCLASS_APP_KEY,
      ASSOCCLASS_APP_STR,
      ASSOCCLASS_SYSTEM_STR,
      ASSOCCLASS_FOLDER,
      ASSOCCLASS_STAR,
      ASSOCCLASS_FIXED_PROGID_STR,
      ASSOCCLASS_PROTOCOL_STR
   );
   for ASSOCCLASS use (
      ASSOCCLASS_SHELL_KEY => 0,
      ASSOCCLASS_PROGID_KEY => 1,
      ASSOCCLASS_PROGID_STR => 2,
      ASSOCCLASS_CLSID_KEY => 3,
      ASSOCCLASS_CLSID_STR => 4,
      ASSOCCLASS_APP_KEY => 5,
      ASSOCCLASS_APP_STR => 6,
      ASSOCCLASS_SYSTEM_STR => 7,
      ASSOCCLASS_FOLDER => 8,
      ASSOCCLASS_STAR => 9,
      ASSOCCLASS_FIXED_PROGID_STR => 10,
      ASSOCCLASS_PROTOCOL_STR => 11
   );
   for ASSOCCLASS'Size use 32;
   type ASSOCIATIONELEMENT is record
      ac : ASSOCCLASS;
      hkClass : HKEY;
      pszClass : PCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,ASSOCIATIONELEMENT);
   for ASSOCIATIONELEMENT use record
      ac at 0 range 0..31;
      hkClass at 0 range 64..127;
      pszClass at 0 range 128..191;
   end record;
   for ASSOCIATIONELEMENT'Size use 192;
   for ASSOCIATIONELEMENT'Alignment use 8;
   function AssocCreateForClasses(
      rgClasses : access constant ASSOCIATIONELEMENT;
      cClasses : ULONG;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,AssocCreateForClasses,"AssocCreateForClasses");
   type SHQUERYRBINFO_x is record
      cbSize : DWORD;
      i64Size : Interfaces.C.Extensions.long_long;
      i64NumItems : Interfaces.C.Extensions.long_long;
   end record;
   pragma Convention (C_Pass_By_Copy,SHQUERYRBINFO_x);
   for SHQUERYRBINFO_x use record
      cbSize at 0 range 0..31;
      i64Size at 0 range 64..127;
      i64NumItems at 0 range 128..191;
   end record;
   for SHQUERYRBINFO_x'Size use 192;
   for SHQUERYRBINFO_x'Alignment use 8;
   subtype SHQUERYRBINFO is SHQUERYRBINFO_x;
   type LPSHQUERYRBINFO is access all SHQUERYRBINFO_x;
   function SHQueryRecycleBinA(
      pszRootPath : LPCSTR;
      pSHQueryRBInfo : LPSHQUERYRBINFO
   ) return HRESULT;
   pragma import (Cpp,SHQueryRecycleBinA,"SHQueryRecycleBinA");
   function SHQueryRecycleBinW(
      pszRootPath : LPCWSTR;
      pSHQueryRBInfo : LPSHQUERYRBINFO
   ) return HRESULT;
   pragma import (Cpp,SHQueryRecycleBinW,"SHQueryRecycleBinW");
   function SHEmptyRecycleBinA(
      hwnd_x : HWND;
      pszRootPath : LPCSTR;
      dwFlags : DWORD
   ) return HRESULT;
   pragma import (Cpp,SHEmptyRecycleBinA,"SHEmptyRecycleBinA");
   function SHEmptyRecycleBinW(
      hwnd_x : HWND;
      pszRootPath : LPCWSTR;
      dwFlags : DWORD
   ) return HRESULT;
   pragma import (Cpp,SHEmptyRecycleBinW,"SHEmptyRecycleBinW");
   type QUERY_USER_NOTIFICATION_STATE is (
      QUNS_NOT_PRESENT,
      QUNS_BUSY,
      QUNS_RUNNING_D3D_FULL_SCREEN,
      QUNS_PRESENTATION_MODE,
      QUNS_ACCEPTS_NOTIFICATIONS,
      QUNS_QUIET_TIME,
      QUNS_APP
   );
   for QUERY_USER_NOTIFICATION_STATE use (
      QUNS_NOT_PRESENT => 1,
      QUNS_BUSY => 2,
      QUNS_RUNNING_D3D_FULL_SCREEN => 3,
      QUNS_PRESENTATION_MODE => 4,
      QUNS_ACCEPTS_NOTIFICATIONS => 5,
      QUNS_QUIET_TIME => 6,
      QUNS_APP => 7
   );
   for QUERY_USER_NOTIFICATION_STATE'Size use 32;
   function SHQueryUserNotificationState(
      pquns : access QUERY_USER_NOTIFICATION_STATE
   ) return HRESULT;
   pragma import (Cpp,SHQueryUserNotificationState,"SHQueryUserNotificationState");
   function SHGetPropertyStoreForWindow(
      hwnd_x : HWND;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,SHGetPropertyStoreForWindow,"SHGetPropertyStoreForWindow");
   type Anonymous_Record_204 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            uTimeout : UINT;
         when others => 
            uVersion : UINT;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_204);
   pragma Unchecked_Union (Anonymous_Record_204);
   for Anonymous_Record_204'Size use 32;
   for Anonymous_Record_204'Alignment use 4;
   type NOTIFYICONDATAA_x_szTip_Array is array(1..128) of CHAR; -- Auto Generated Dependancy
   type NOTIFYICONDATAA_x_szInfo_Array is array(1..256) of CHAR; -- Auto Generated Dependancy
   type NOTIFYICONDATAA_x_szInfoTitle_Array is array(1..64) of CHAR; -- Auto Generated Dependancy
   type NOTIFYICONDATAA_x is record
      cbSize : DWORD;
      hWnd_x : HWND;
      uID : UINT;
      uFlags : UINT;
      uCallbackMessage : UINT;
      hIcon_x : HICON;
      szTip : NOTIFYICONDATAA_x_szTip_Array;
      dwState : DWORD;
      dwStateMask : DWORD;
      szInfo : NOTIFYICONDATAA_x_szInfo_Array;
      field_1 : Anonymous_Record_204;
      szInfoTitle : NOTIFYICONDATAA_x_szInfoTitle_Array;
      dwInfoFlags : DWORD;
      guidItem : GUID;
      hBalloonIcon : HICON;
   end record;
   pragma Convention (C_Pass_By_Copy,NOTIFYICONDATAA_x);
   for NOTIFYICONDATAA_x use record
      cbSize at 0 range 0..31;
      hWnd_x at 0 range 64..127;
      uID at 0 range 128..159;
      uFlags at 0 range 160..191;
      uCallbackMessage at 0 range 192..223;
      hIcon_x at 0 range 256..319;
      szTip at 0 range 320..1343;
      dwState at 0 range 1344..1375;
      dwStateMask at 0 range 1376..1407;
      szInfo at 0 range 1408..3455;
      field_1 at 0 range 3456..3487;
      szInfoTitle at 0 range 3488..3999;
      dwInfoFlags at 0 range 4000..4031;
      guidItem at 0 range 4032..4159;
      hBalloonIcon at 0 range 4160..4223;
   end record;
   for NOTIFYICONDATAA_x'Size use 4224;
   for NOTIFYICONDATAA_x'Alignment use 8;
   subtype NOTIFYICONDATAA is NOTIFYICONDATAA_x;
   type PNOTIFYICONDATAA is access all NOTIFYICONDATAA_x;
   type Anonymous_Record_205 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            uTimeout : UINT;
         when others => 
            uVersion : UINT;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_205);
   pragma Unchecked_Union (Anonymous_Record_205);
   for Anonymous_Record_205'Size use 32;
   for Anonymous_Record_205'Alignment use 4;
   type NOTIFYICONDATAW_x_szTip_Array is array(1..128) of WCHAR; -- Auto Generated Dependancy
   type NOTIFYICONDATAW_x_szInfo_Array is array(1..256) of WCHAR; -- Auto Generated Dependancy
   type NOTIFYICONDATAW_x_szInfoTitle_Array is array(1..64) of WCHAR; -- Auto Generated Dependancy
   type NOTIFYICONDATAW_x is record
      cbSize : DWORD;
      hWnd_x : HWND;
      uID : UINT;
      uFlags : UINT;
      uCallbackMessage : UINT;
      hIcon_x : HICON;
      szTip : NOTIFYICONDATAW_x_szTip_Array;
      dwState : DWORD;
      dwStateMask : DWORD;
      szInfo : NOTIFYICONDATAW_x_szInfo_Array;
      field_1 : Anonymous_Record_205;
      szInfoTitle : NOTIFYICONDATAW_x_szInfoTitle_Array;
      dwInfoFlags : DWORD;
      guidItem : GUID;
      hBalloonIcon : HICON;
   end record;
   pragma Convention (C_Pass_By_Copy,NOTIFYICONDATAW_x);
   for NOTIFYICONDATAW_x use record
      cbSize at 0 range 0..31;
      hWnd_x at 0 range 64..127;
      uID at 0 range 128..159;
      uFlags at 0 range 160..191;
      uCallbackMessage at 0 range 192..223;
      hIcon_x at 0 range 256..319;
      szTip at 0 range 320..2367;
      dwState at 0 range 2368..2399;
      dwStateMask at 0 range 2400..2431;
      szInfo at 0 range 2432..6527;
      field_1 at 0 range 6528..6559;
      szInfoTitle at 0 range 6560..7583;
      dwInfoFlags at 0 range 7584..7615;
      guidItem at 0 range 7616..7743;
      hBalloonIcon at 0 range 7744..7807;
   end record;
   for NOTIFYICONDATAW_x'Size use 7808;
   for NOTIFYICONDATAW_x'Alignment use 8;
   subtype NOTIFYICONDATAW is NOTIFYICONDATAW_x;
   type PNOTIFYICONDATAW is access all NOTIFYICONDATAW_x;
   subtype NOTIFYICONDATA is NOTIFYICONDATAA;
   subtype PNOTIFYICONDATA is PNOTIFYICONDATAA;
   type NOTIFYICONIDENTIFIER_x is record
      cbSize : DWORD;
      hWnd_x : HWND;
      uID : UINT;
      guidItem : GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,NOTIFYICONIDENTIFIER_x);
   for NOTIFYICONIDENTIFIER_x use record
      cbSize at 0 range 0..31;
      hWnd_x at 0 range 64..127;
      uID at 0 range 128..159;
      guidItem at 0 range 160..287;
   end record;
   for NOTIFYICONIDENTIFIER_x'Size use 320;
   for NOTIFYICONIDENTIFIER_x'Alignment use 8;
   subtype NOTIFYICONIDENTIFIER is NOTIFYICONIDENTIFIER_x;
   type PNOTIFYICONIDENTIFIER is access all NOTIFYICONIDENTIFIER_x;
   function Shell_NotifyIconA(
      dwMessage : DWORD;
      lpData : PNOTIFYICONDATAA
   ) return BOOL;
   pragma import (Cpp,Shell_NotifyIconA,"Shell_NotifyIconA");
   function Shell_NotifyIconW(
      dwMessage : DWORD;
      lpData : PNOTIFYICONDATAW
   ) return BOOL;
   pragma import (Cpp,Shell_NotifyIconW,"Shell_NotifyIconW");
   function Shell_NotifyIconGetRect(
      identifier : access constant NOTIFYICONIDENTIFIER;
      iconLocation : access RECT
   ) return HRESULT;
   pragma import (Cpp,Shell_NotifyIconGetRect,"Shell_NotifyIconGetRect");
   type SHFILEINFOA_x_szDisplayName_Array is array(1..260) of CHAR; -- Auto Generated Dependancy
   type SHFILEINFOA_x_szTypeName_Array is array(1..80) of CHAR; -- Auto Generated Dependancy
   type SHFILEINFOA_x is record
      hIcon_x : HICON;
      iIcon : Interfaces.C.Int;
      dwAttributes : DWORD;
      szDisplayName : SHFILEINFOA_x_szDisplayName_Array;
      szTypeName : SHFILEINFOA_x_szTypeName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SHFILEINFOA_x);
   for SHFILEINFOA_x use record
      hIcon_x at 0 range 0..63;
      iIcon at 0 range 64..95;
      dwAttributes at 0 range 96..127;
      szDisplayName at 0 range 128..2207;
      szTypeName at 0 range 2208..2847;
   end record;
   for SHFILEINFOA_x'Size use 2880;
   for SHFILEINFOA_x'Alignment use 8;
   subtype SHFILEINFOA is SHFILEINFOA_x;
   type SHFILEINFOW_x_szDisplayName_Array is array(1..260) of WCHAR; -- Auto Generated Dependancy
   type SHFILEINFOW_x_szTypeName_Array is array(1..80) of WCHAR; -- Auto Generated Dependancy
   type SHFILEINFOW_x is record
      hIcon_x : HICON;
      iIcon : Interfaces.C.Int;
      dwAttributes : DWORD;
      szDisplayName : SHFILEINFOW_x_szDisplayName_Array;
      szTypeName : SHFILEINFOW_x_szTypeName_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SHFILEINFOW_x);
   for SHFILEINFOW_x use record
      hIcon_x at 0 range 0..63;
      iIcon at 0 range 64..95;
      dwAttributes at 0 range 96..127;
      szDisplayName at 0 range 128..4287;
      szTypeName at 0 range 4288..5567;
   end record;
   for SHFILEINFOW_x'Size use 5568;
   for SHFILEINFOW_x'Alignment use 8;
   subtype SHFILEINFOW is SHFILEINFOW_x;
   subtype SHFILEINFO is SHFILEINFOA;
   function SHGetFileInfoA(
      pszPath : LPCSTR;
      dwFileAttributes : DWORD;
      psfi : access SHFILEINFOA;
      cbFileInfo : UINT;
      uFlags : UINT
   ) return DWORD_PTR;
   pragma import (Cpp,SHGetFileInfoA,"SHGetFileInfoA");
   function SHGetFileInfoW(
      pszPath : LPCWSTR;
      dwFileAttributes : DWORD;
      psfi : access SHFILEINFOW;
      cbFileInfo : UINT;
      uFlags : UINT
   ) return DWORD_PTR;
   pragma import (Cpp,SHGetFileInfoW,"SHGetFileInfoW");
   type SHSTOCKICONINFO_x_szPath_Array is array(1..260) of WCHAR; -- Auto Generated Dependancy
   type SHSTOCKICONINFO_x is record
      cbSize : DWORD;
      hIcon_x : HICON;
      iSysImageIndex : Interfaces.C.Int;
      iIcon : Interfaces.C.Int;
      szPath : SHSTOCKICONINFO_x_szPath_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SHSTOCKICONINFO_x);
   for SHSTOCKICONINFO_x use record
      cbSize at 0 range 0..31;
      hIcon_x at 0 range 64..127;
      iSysImageIndex at 0 range 128..159;
      iIcon at 0 range 160..191;
      szPath at 0 range 192..4351;
   end record;
   for SHSTOCKICONINFO_x'Size use 4352;
   for SHSTOCKICONINFO_x'Alignment use 8;
   subtype SHSTOCKICONINFO is SHSTOCKICONINFO_x;
   type SHSTOCKICONID is (
      SIID_DOCNOASSOC,
      SIID_DOCASSOC,
      SIID_APPLICATION,
      SIID_FOLDER,
      SIID_FOLDEROPEN,
      SIID_DRIVE525,
      SIID_DRIVE35,
      SIID_DRIVEREMOVE,
      SIID_DRIVEFIXED,
      SIID_DRIVENET,
      SIID_DRIVENETDISABLED,
      SIID_DRIVECD,
      SIID_DRIVERAM,
      SIID_WORLD,
      SIID_SERVER,
      SIID_PRINTER,
      SIID_MYNETWORK,
      SIID_FIND,
      SIID_HELP,
      SIID_SHARE,
      SIID_LINK,
      SIID_SLOWFILE,
      SIID_RECYCLER,
      SIID_RECYCLERFULL,
      SIID_MEDIACDAUDIO,
      SIID_LOCK,
      SIID_AUTOLIST,
      SIID_PRINTERNET,
      SIID_SERVERSHARE,
      SIID_PRINTERFAX,
      SIID_PRINTERFAXNET,
      SIID_PRINTERFILE,
      SIID_STACK,
      SIID_MEDIASVCD,
      SIID_STUFFEDFOLDER,
      SIID_DRIVEUNKNOWN,
      SIID_DRIVEDVD,
      SIID_MEDIADVD,
      SIID_MEDIADVDRAM,
      SIID_MEDIADVDRW,
      SIID_MEDIADVDR,
      SIID_MEDIADVDROM,
      SIID_MEDIACDAUDIOPLUS,
      SIID_MEDIACDRW,
      SIID_MEDIACDR,
      SIID_MEDIACDBURN,
      SIID_MEDIABLANKCD,
      SIID_MEDIACDROM,
      SIID_AUDIOFILES,
      SIID_IMAGEFILES,
      SIID_VIDEOFILES,
      SIID_MIXEDFILES,
      SIID_FOLDERBACK,
      SIID_FOLDERFRONT,
      SIID_SHIELD,
      SIID_WARNING,
      SIID_INFO,
      SIID_ERROR,
      SIID_KEY,
      SIID_SOFTWARE,
      SIID_RENAME,
      SIID_DELETE,
      SIID_MEDIAAUDIODVD,
      SIID_MEDIAMOVIEDVD,
      SIID_MEDIAENHANCEDCD,
      SIID_MEDIAENHANCEDDVD,
      SIID_MEDIAHDDVD,
      SIID_MEDIABLURAY,
      SIID_MEDIAVCD,
      SIID_MEDIADVDPLUSR,
      SIID_MEDIADVDPLUSRW,
      SIID_DESKTOPPC,
      SIID_MOBILEPC,
      SIID_USERS,
      SIID_MEDIASMARTMEDIA,
      SIID_MEDIACOMPACTFLASH,
      SIID_DEVICECELLPHONE,
      SIID_DEVICECAMERA,
      SIID_DEVICEVIDEOCAMERA,
      SIID_DEVICEAUDIOPLAYER,
      SIID_NETWORKCONNECT,
      SIID_INTERNET,
      SIID_ZIPFILE,
      SIID_SETTINGS,
      SIID_DRIVEHDDVD,
      SIID_DRIVEBD,
      SIID_MEDIAHDDVDROM,
      SIID_MEDIAHDDVDR,
      SIID_MEDIAHDDVDRAM,
      SIID_MEDIABDROM,
      SIID_MEDIABDR,
      SIID_MEDIABDRE,
      SIID_CLUSTEREDDRIVE,
      SIID_MAX_ICONS
   );
   for SHSTOCKICONID use (
      SIID_DOCNOASSOC => 0,
      SIID_DOCASSOC => 1,
      SIID_APPLICATION => 2,
      SIID_FOLDER => 3,
      SIID_FOLDEROPEN => 4,
      SIID_DRIVE525 => 5,
      SIID_DRIVE35 => 6,
      SIID_DRIVEREMOVE => 7,
      SIID_DRIVEFIXED => 8,
      SIID_DRIVENET => 9,
      SIID_DRIVENETDISABLED => 10,
      SIID_DRIVECD => 11,
      SIID_DRIVERAM => 12,
      SIID_WORLD => 13,
      SIID_SERVER => 15,
      SIID_PRINTER => 16,
      SIID_MYNETWORK => 17,
      SIID_FIND => 22,
      SIID_HELP => 23,
      SIID_SHARE => 28,
      SIID_LINK => 29,
      SIID_SLOWFILE => 30,
      SIID_RECYCLER => 31,
      SIID_RECYCLERFULL => 32,
      SIID_MEDIACDAUDIO => 40,
      SIID_LOCK => 47,
      SIID_AUTOLIST => 49,
      SIID_PRINTERNET => 50,
      SIID_SERVERSHARE => 51,
      SIID_PRINTERFAX => 52,
      SIID_PRINTERFAXNET => 53,
      SIID_PRINTERFILE => 54,
      SIID_STACK => 55,
      SIID_MEDIASVCD => 56,
      SIID_STUFFEDFOLDER => 57,
      SIID_DRIVEUNKNOWN => 58,
      SIID_DRIVEDVD => 59,
      SIID_MEDIADVD => 60,
      SIID_MEDIADVDRAM => 61,
      SIID_MEDIADVDRW => 62,
      SIID_MEDIADVDR => 63,
      SIID_MEDIADVDROM => 64,
      SIID_MEDIACDAUDIOPLUS => 65,
      SIID_MEDIACDRW => 66,
      SIID_MEDIACDR => 67,
      SIID_MEDIACDBURN => 68,
      SIID_MEDIABLANKCD => 69,
      SIID_MEDIACDROM => 70,
      SIID_AUDIOFILES => 71,
      SIID_IMAGEFILES => 72,
      SIID_VIDEOFILES => 73,
      SIID_MIXEDFILES => 74,
      SIID_FOLDERBACK => 75,
      SIID_FOLDERFRONT => 76,
      SIID_SHIELD => 77,
      SIID_WARNING => 78,
      SIID_INFO => 79,
      SIID_ERROR => 80,
      SIID_KEY => 81,
      SIID_SOFTWARE => 82,
      SIID_RENAME => 83,
      SIID_DELETE => 84,
      SIID_MEDIAAUDIODVD => 85,
      SIID_MEDIAMOVIEDVD => 86,
      SIID_MEDIAENHANCEDCD => 87,
      SIID_MEDIAENHANCEDDVD => 88,
      SIID_MEDIAHDDVD => 89,
      SIID_MEDIABLURAY => 90,
      SIID_MEDIAVCD => 91,
      SIID_MEDIADVDPLUSR => 92,
      SIID_MEDIADVDPLUSRW => 93,
      SIID_DESKTOPPC => 94,
      SIID_MOBILEPC => 95,
      SIID_USERS => 96,
      SIID_MEDIASMARTMEDIA => 97,
      SIID_MEDIACOMPACTFLASH => 98,
      SIID_DEVICECELLPHONE => 99,
      SIID_DEVICECAMERA => 100,
      SIID_DEVICEVIDEOCAMERA => 101,
      SIID_DEVICEAUDIOPLAYER => 102,
      SIID_NETWORKCONNECT => 103,
      SIID_INTERNET => 104,
      SIID_ZIPFILE => 105,
      SIID_SETTINGS => 106,
      SIID_DRIVEHDDVD => 132,
      SIID_DRIVEBD => 133,
      SIID_MEDIAHDDVDROM => 134,
      SIID_MEDIAHDDVDR => 135,
      SIID_MEDIAHDDVDRAM => 136,
      SIID_MEDIABDROM => 137,
      SIID_MEDIABDR => 138,
      SIID_MEDIABDRE => 139,
      SIID_CLUSTEREDDRIVE => 140,
      SIID_MAX_ICONS => 181
   );
   for SHSTOCKICONID'Size use 32;
   function SHGetStockIconInfo(
      siid : SHSTOCKICONID;
      uFlags : UINT;
      psii : access SHSTOCKICONINFO
   ) return HRESULT;
   pragma import (Cpp,SHGetStockIconInfo,"SHGetStockIconInfo");
   function SHGetDiskFreeSpaceExA(
      pszDirectoryName : LPCSTR;
      pulFreeBytesAvailableToCaller : access ULARGE_INTEGER;
      pulTotalNumberOfBytes : access ULARGE_INTEGER;
      pulTotalNumberOfFreeBytes : access ULARGE_INTEGER
   ) return BOOL;
   pragma import (Cpp,SHGetDiskFreeSpaceExA,"SHGetDiskFreeSpaceExA");
   function SHGetDiskFreeSpaceExW(
      pszDirectoryName : LPCWSTR;
      pulFreeBytesAvailableToCaller : access ULARGE_INTEGER;
      pulTotalNumberOfBytes : access ULARGE_INTEGER;
      pulTotalNumberOfFreeBytes : access ULARGE_INTEGER
   ) return BOOL;
   pragma import (Cpp,SHGetDiskFreeSpaceExW,"SHGetDiskFreeSpaceExW");
   function SHGetNewLinkInfoA(
      pszLinkTo : LPCSTR;
      pszDir : LPCSTR;
      pszName : LPSTR;
      pfMustCopy : access BOOL;
      uFlags : UINT
   ) return BOOL;
   pragma import (Cpp,SHGetNewLinkInfoA,"SHGetNewLinkInfoA");
   function SHGetNewLinkInfoW(
      pszLinkTo : LPCWSTR;
      pszDir : LPCWSTR;
      pszName : LPWSTR;
      pfMustCopy : access BOOL;
      uFlags : UINT
   ) return BOOL;
   pragma import (Cpp,SHGetNewLinkInfoW,"SHGetNewLinkInfoW");
   function SHInvokePrinterCommandA(
      hwnd_x : HWND;
      uAction : UINT;
      lpBuf1 : LPCSTR;
      lpBuf2 : LPCSTR;
      fModal : BOOL
   ) return BOOL;
   pragma import (Cpp,SHInvokePrinterCommandA,"SHInvokePrinterCommandA");
   function SHInvokePrinterCommandW(
      hwnd_x : HWND;
      uAction : UINT;
      lpBuf1 : LPCWSTR;
      lpBuf2 : LPCWSTR;
      fModal : BOOL
   ) return BOOL;
   pragma import (Cpp,SHInvokePrinterCommandW,"SHInvokePrinterCommandW");
   type OPEN_PRINTER_PROPS_INFOA_x is record
      dwSize : DWORD;
      pszSheetName : LPSTR;
      uSheetIndex : UINT;
      dwFlags : DWORD;
      bModal : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,OPEN_PRINTER_PROPS_INFOA_x);
   for OPEN_PRINTER_PROPS_INFOA_x use record
      dwSize at 0 range 0..31;
      pszSheetName at 0 range 64..127;
      uSheetIndex at 0 range 128..159;
      dwFlags at 0 range 160..191;
      bModal at 0 range 192..223;
   end record;
   for OPEN_PRINTER_PROPS_INFOA_x'Size use 256;
   for OPEN_PRINTER_PROPS_INFOA_x'Alignment use 8;
   subtype OPEN_PRINTER_PROPS_INFOA is OPEN_PRINTER_PROPS_INFOA_x;
   type POPEN_PRINTER_PROPS_INFOA is access all OPEN_PRINTER_PROPS_INFOA_x;
   type OPEN_PRINTER_PROPS_INFOW_x is record
      dwSize : DWORD;
      pszSheetName : LPWSTR;
      uSheetIndex : UINT;
      dwFlags : DWORD;
      bModal : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,OPEN_PRINTER_PROPS_INFOW_x);
   for OPEN_PRINTER_PROPS_INFOW_x use record
      dwSize at 0 range 0..31;
      pszSheetName at 0 range 64..127;
      uSheetIndex at 0 range 128..159;
      dwFlags at 0 range 160..191;
      bModal at 0 range 192..223;
   end record;
   for OPEN_PRINTER_PROPS_INFOW_x'Size use 256;
   for OPEN_PRINTER_PROPS_INFOW_x'Alignment use 8;
   subtype OPEN_PRINTER_PROPS_INFOW is OPEN_PRINTER_PROPS_INFOW_x;
   type POPEN_PRINTER_PROPS_INFOW is access all OPEN_PRINTER_PROPS_INFOW_x;
   subtype OPEN_PRINTER_PROPS_INFO is OPEN_PRINTER_PROPS_INFOA;
   subtype POPEN_PRINTER_PROPS_INFO is POPEN_PRINTER_PROPS_INFOA;
   function SHLoadNonloadedIconOverlayIdentifiers return HRESULT;
   pragma import (Cpp,SHLoadNonloadedIconOverlayIdentifiers,"SHLoadNonloadedIconOverlayIdentifiers");
   function SHIsFileAvailableOffline(
      pwszPath : PCWSTR;
      pdwStatus : access DWORD
   ) return HRESULT;
   pragma import (Cpp,SHIsFileAvailableOffline,"SHIsFileAvailableOffline");
   function SHSetLocalizedName(
      pszPath : PCWSTR;
      pszResModule : PCWSTR;
      idsRes : Interfaces.C.Int
   ) return HRESULT;
   pragma import (Cpp,SHSetLocalizedName,"SHSetLocalizedName");
   function SHRemoveLocalizedName(
      pszPath : PCWSTR
   ) return HRESULT;
   pragma import (Cpp,SHRemoveLocalizedName,"SHRemoveLocalizedName");
   function SHGetLocalizedName(
      pszPath : PCWSTR;
      pszResModule : PWSTR;
      cch : UINT;
      pidsRes : access Interfaces.C.Int
   ) return HRESULT;
   pragma import (Cpp,SHGetLocalizedName,"SHGetLocalizedName");
   -- ShellMessageBoxA(...); -- variadic function not supported
   -- ShellMessageBoxW(...); -- variadic function not supported
   function IsLFNDriveA(
      pszPath : LPCSTR
   ) return BOOL;
   pragma import (Cpp,IsLFNDriveA,"IsLFNDriveA");
   function IsLFNDriveW(
      pszPath : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,IsLFNDriveW,"IsLFNDriveW");
   function SHEnumerateUnreadMailAccountsA(
      hKeyUser : HKEY;
      dwIndex : DWORD;
      pszMailAddress : LPSTR;
      cchMailAddress : Interfaces.C.Int
   ) return HRESULT;
   pragma import (Cpp,SHEnumerateUnreadMailAccountsA,"SHEnumerateUnreadMailAccountsA");
   function SHEnumerateUnreadMailAccountsW(
      hKeyUser : HKEY;
      dwIndex : DWORD;
      pszMailAddress : LPWSTR;
      cchMailAddress : Interfaces.C.Int
   ) return HRESULT;
   pragma import (Cpp,SHEnumerateUnreadMailAccountsW,"SHEnumerateUnreadMailAccountsW");
   function SHGetUnreadMailCountA(
      hKeyUser : HKEY;
      pszMailAddress : LPCSTR;
      pdwCount : access DWORD;
      pFileTime_x : access FILETIME;
      pszShellExecuteCommand : LPSTR;
      cchShellExecuteCommand : Interfaces.C.Int
   ) return HRESULT;
   pragma import (Cpp,SHGetUnreadMailCountA,"SHGetUnreadMailCountA");
   function SHGetUnreadMailCountW(
      hKeyUser : HKEY;
      pszMailAddress : LPCWSTR;
      pdwCount : access DWORD;
      pFileTime_x : access FILETIME;
      pszShellExecuteCommand : LPWSTR;
      cchShellExecuteCommand : Interfaces.C.Int
   ) return HRESULT;
   pragma import (Cpp,SHGetUnreadMailCountW,"SHGetUnreadMailCountW");
   function SHSetUnreadMailCountA(
      pszMailAddress : LPCSTR;
      dwCount : DWORD;
      pszShellExecuteCommand : LPCSTR
   ) return HRESULT;
   pragma import (Cpp,SHSetUnreadMailCountA,"SHSetUnreadMailCountA");
   function SHSetUnreadMailCountW(
      pszMailAddress : LPCWSTR;
      dwCount : DWORD;
      pszShellExecuteCommand : LPCWSTR
   ) return HRESULT;
   pragma import (Cpp,SHSetUnreadMailCountW,"SHSetUnreadMailCountW");
   function SHTestTokenMembership(
      hToken : HANDLE;
      ulRID : ULONG
   ) return BOOL;
   pragma import (Cpp,SHTestTokenMembership,"SHTestTokenMembership");
   function SHGetImageList(
      iImageList : Interfaces.C.Int;
      riid : access constant IID;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,SHGetImageList,"SHGetImageList");
   type PFNCANSHAREFOLDERW is access function (p1 : PCWSTR) return HRESULT; -- HRESULT (PCWSTR)
   pragma Convention(C,PFNCANSHAREFOLDERW);
   type PFNSHOWSHAREFOLDERUIW is access function (p1 : HWND ; p2 : PCWSTR) return HRESULT; -- HRESULT (HWND, PCWSTR)
   pragma Convention(C,PFNSHOWSHAREFOLDERUIW);
   function InitNetworkAddressControl return BOOL;
   pragma import (Cpp,InitNetworkAddressControl,"InitNetworkAddressControl");
   type NET_ADDRESS_INFO_x;
   type tagNC_ADDRESS is record
      pAddrInfo : access NET_ADDRESS_INFO_x;
      PortNumber : USHORT;
      PrefixLength : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNC_ADDRESS);
   for tagNC_ADDRESS use record
      pAddrInfo at 0 range 0..63;
      PortNumber at 0 range 64..79;
      PrefixLength at 0 range 80..87;
   end record;
   for tagNC_ADDRESS'Size use 128;
   for tagNC_ADDRESS'Alignment use 8;
   subtype NC_ADDRESS is tagNC_ADDRESS;
   type PNC_ADDRESS is access all tagNC_ADDRESS;
   function SHGetDriveMedia(
      pszDrive : PCWSTR;
      pdwMediaContent : access DWORD
   ) return HRESULT;
   pragma import (Cpp,SHGetDriveMedia,"SHGetDriveMedia");
   -- #include <winperf.h>
   type PERF_DATA_BLOCK_x_Signature_Array is array(1..4) of WCHAR; -- Auto Generated Dependancy
   type PERF_DATA_BLOCK_x is record
      Signature : PERF_DATA_BLOCK_x_Signature_Array;
      LittleEndian_x : DWORD;
      Version : DWORD;
      Revision : DWORD;
      TotalByteLength : DWORD;
      HeaderLength : DWORD;
      NumObjectTypes : DWORD;
      DefaultObject : LONG;
      SystemTime_x : SYSTEMTIME;
      PerfTime : LARGE_INTEGER;
      PerfFreq : LARGE_INTEGER;
      PerfTime100nSec : LARGE_INTEGER;
      SystemNameLength : DWORD;
      SystemNameOffset : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PERF_DATA_BLOCK_x);
   for PERF_DATA_BLOCK_x use record
      Signature at 0 range 0..63;
      LittleEndian_x at 0 range 64..95;
      Version at 0 range 96..127;
      Revision at 0 range 128..159;
      TotalByteLength at 0 range 160..191;
      HeaderLength at 0 range 192..223;
      NumObjectTypes at 0 range 224..255;
      DefaultObject at 0 range 256..287;
      SystemTime_x at 0 range 288..415;
      PerfTime at 0 range 448..511;
      PerfFreq at 0 range 512..575;
      PerfTime100nSec at 0 range 576..639;
      SystemNameLength at 0 range 640..671;
      SystemNameOffset at 0 range 672..703;
   end record;
   for PERF_DATA_BLOCK_x'Size use 704;
   for PERF_DATA_BLOCK_x'Alignment use 8;
   subtype PERF_DATA_BLOCK is PERF_DATA_BLOCK_x;
   type PPERF_DATA_BLOCK is access all PERF_DATA_BLOCK_x;
   type PERF_OBJECT_TYPE_x is record
      TotalByteLength : DWORD;
      DefinitionLength : DWORD;
      HeaderLength : DWORD;
      ObjectNameTitleIndex : DWORD;
      ObjectNameTitle : DWORD;
      ObjectHelpTitleIndex : DWORD;
      ObjectHelpTitle : DWORD;
      DetailLevel : DWORD;
      NumCounters : DWORD;
      DefaultCounter : LONG;
      NumInstances : LONG;
      CodePage : DWORD;
      PerfTime : LARGE_INTEGER;
      PerfFreq : LARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,PERF_OBJECT_TYPE_x);
   for PERF_OBJECT_TYPE_x use record
      TotalByteLength at 0 range 0..31;
      DefinitionLength at 0 range 32..63;
      HeaderLength at 0 range 64..95;
      ObjectNameTitleIndex at 0 range 96..127;
      ObjectNameTitle at 0 range 128..159;
      ObjectHelpTitleIndex at 0 range 160..191;
      ObjectHelpTitle at 0 range 192..223;
      DetailLevel at 0 range 224..255;
      NumCounters at 0 range 256..287;
      DefaultCounter at 0 range 288..319;
      NumInstances at 0 range 320..351;
      CodePage at 0 range 352..383;
      PerfTime at 0 range 384..447;
      PerfFreq at 0 range 448..511;
   end record;
   for PERF_OBJECT_TYPE_x'Size use 512;
   for PERF_OBJECT_TYPE_x'Alignment use 8;
   subtype PERF_OBJECT_TYPE is PERF_OBJECT_TYPE_x;
   type PPERF_OBJECT_TYPE is access all PERF_OBJECT_TYPE_x;
   type PERF_COUNTER_DEFINITION_x is record
      ByteLength : DWORD;
      CounterNameTitleIndex : DWORD;
      CounterNameTitle : DWORD;
      CounterHelpTitleIndex : DWORD;
      CounterHelpTitle : DWORD;
      DefaultScale : LONG;
      DetailLevel : DWORD;
      CounterType : DWORD;
      CounterSize : DWORD;
      CounterOffset : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PERF_COUNTER_DEFINITION_x);
   for PERF_COUNTER_DEFINITION_x use record
      ByteLength at 0 range 0..31;
      CounterNameTitleIndex at 0 range 32..63;
      CounterNameTitle at 0 range 64..95;
      CounterHelpTitleIndex at 0 range 96..127;
      CounterHelpTitle at 0 range 128..159;
      DefaultScale at 0 range 160..191;
      DetailLevel at 0 range 192..223;
      CounterType at 0 range 224..255;
      CounterSize at 0 range 256..287;
      CounterOffset at 0 range 288..319;
   end record;
   for PERF_COUNTER_DEFINITION_x'Size use 320;
   for PERF_COUNTER_DEFINITION_x'Alignment use 4;
   subtype PERF_COUNTER_DEFINITION is PERF_COUNTER_DEFINITION_x;
   type PPERF_COUNTER_DEFINITION is access all PERF_COUNTER_DEFINITION_x;
   type PERF_INSTANCE_DEFINITION_x is record
      ByteLength : DWORD;
      ParentObjectTitleIndex : DWORD;
      ParentObjectInstance : DWORD;
      UniqueID : LONG;
      NameOffset : DWORD;
      NameLength : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PERF_INSTANCE_DEFINITION_x);
   for PERF_INSTANCE_DEFINITION_x use record
      ByteLength at 0 range 0..31;
      ParentObjectTitleIndex at 0 range 32..63;
      ParentObjectInstance at 0 range 64..95;
      UniqueID at 0 range 96..127;
      NameOffset at 0 range 128..159;
      NameLength at 0 range 160..191;
   end record;
   for PERF_INSTANCE_DEFINITION_x'Size use 192;
   for PERF_INSTANCE_DEFINITION_x'Alignment use 4;
   subtype PERF_INSTANCE_DEFINITION is PERF_INSTANCE_DEFINITION_x;
   type PPERF_INSTANCE_DEFINITION is access all PERF_INSTANCE_DEFINITION_x;
   type PERF_COUNTER_BLOCK_x is record
      ByteLength : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PERF_COUNTER_BLOCK_x);
   for PERF_COUNTER_BLOCK_x use record
      ByteLength at 0 range 0..31;
   end record;
   for PERF_COUNTER_BLOCK_x'Size use 32;
   for PERF_COUNTER_BLOCK_x'Alignment use 4;
   subtype PERF_COUNTER_BLOCK is PERF_COUNTER_BLOCK_x;
   type PPERF_COUNTER_BLOCK is access all PERF_COUNTER_BLOCK_x;
   subtype PM_OPEN_PROC is System.Address; -- [FIXME - CXType_Unexposed]
   subtype PM_COLLECT_PROC is System.Address; -- [FIXME - CXType_Unexposed]
   subtype PM_CLOSE_PROC is System.Address; -- [FIXME - CXType_Unexposed]
   subtype PM_QUERY_PROC is System.Address; -- [FIXME - CXType_Unexposed]
   -- #include <Winsock2.h>
   subtype u_char is Interfaces.C.unsigned_char;
   subtype u_short is Interfaces.C.unsigned_short;
   subtype u_int is Interfaces.C.unsigned;
   subtype u_long is Interfaces.C.unsigned_long;
   subtype u_int64 is Interfaces.C.Extensions.unsigned_long_long;
   -- #include <ws2def.h>
   -- #include <inaddr.h>
   type Anonymous_Record_207 is record
      s_b1 : UCHAR;
      s_b2 : UCHAR;
      s_b3 : UCHAR;
      s_b4 : UCHAR;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_207);
   for Anonymous_Record_207 use record
      s_b1 at 0 range 0..7;
      s_b2 at 0 range 8..15;
      s_b3 at 0 range 16..23;
      s_b4 at 0 range 24..31;
   end record;
   for Anonymous_Record_207'Size use 32;
   for Anonymous_Record_207'Alignment use 1;
   type Anonymous_Record_208 is record
      s_w1 : USHORT;
      s_w2 : USHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_208);
   for Anonymous_Record_208 use record
      s_w1 at 0 range 0..15;
      s_w2 at 0 range 16..31;
   end record;
   for Anonymous_Record_208'Size use 32;
   for Anonymous_Record_208'Alignment use 2;
   type Anonymous_Record_206 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_207;
         when 1 =>
            field_2 : Anonymous_Record_208;
         when others => 
            S_addr : ULONG;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_206);
   pragma Unchecked_Union (Anonymous_Record_206);
   for Anonymous_Record_206'Size use 32;
   for Anonymous_Record_206'Alignment use 4;
   type in_addr is record
      field_1 : Anonymous_Record_206;
   end record;
   pragma Convention (C_Pass_By_Copy,in_addr);
   for in_addr use record
      field_1 at 0 range 0..31;
   end record;
   for in_addr'Size use 32;
   for in_addr'Alignment use 4;
   -- subtype IN_ADDR is in_addr; --  [Note: Type already defined (case sensitive issue)]
   type PIN_ADDR is access all in_addr;
   type LPIN_ADDR is access all in_addr;
   -- #include <ws2def.h>
   subtype ADDRESS_FAMILY is USHORT;
   type sockaddr_sa_data_Array is array(1..14) of CHAR; -- Auto Generated Dependancy
   type sockaddr is record
      sa_family : ADDRESS_FAMILY;
      sa_data : sockaddr_sa_data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,sockaddr);
   for sockaddr use record
      sa_family at 0 range 0..15;
      sa_data at 0 range 16..127;
   end record;
   for sockaddr'Size use 128;
   for sockaddr'Alignment use 2;
   -- subtype SOCKADDR is sockaddr; --  [Note: Type already defined (case sensitive issue)]
   type PSOCKADDR is access all sockaddr;
   type LPSOCKADDR is access all sockaddr;
   type SOCKET_ADDRESS_x is record
      lpSockaddr_x : LPSOCKADDR;
      iSockaddrLength : INT;
   end record;
   pragma Convention (C_Pass_By_Copy,SOCKET_ADDRESS_x);
   for SOCKET_ADDRESS_x use record
      lpSockaddr_x at 0 range 0..63;
      iSockaddrLength at 0 range 64..95;
   end record;
   for SOCKET_ADDRESS_x'Size use 128;
   for SOCKET_ADDRESS_x'Alignment use 8;
   subtype SOCKET_ADDRESS is SOCKET_ADDRESS_x;
   type PSOCKET_ADDRESS is access all SOCKET_ADDRESS_x;
   type LPSOCKET_ADDRESS is access all SOCKET_ADDRESS_x;
   type SOCKET_ADDRESS_LIST_x_Address_Array is array(1..1) of SOCKET_ADDRESS; -- Auto Generated Dependancy
   type SOCKET_ADDRESS_LIST_x is record
      iAddressCount : INT;
      Address : SOCKET_ADDRESS_LIST_x_Address_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,SOCKET_ADDRESS_LIST_x);
   for SOCKET_ADDRESS_LIST_x use record
      iAddressCount at 0 range 0..31;
      Address at 0 range 64..191;
   end record;
   for SOCKET_ADDRESS_LIST_x'Size use 192;
   for SOCKET_ADDRESS_LIST_x'Alignment use 8;
   subtype SOCKET_ADDRESS_LIST is SOCKET_ADDRESS_LIST_x;
   type PSOCKET_ADDRESS_LIST is access all SOCKET_ADDRESS_LIST_x;
   type LPSOCKET_ADDRESS_LIST is access all SOCKET_ADDRESS_LIST_x;
   type CSADDR_INFO_x is record
      LocalAddr : SOCKET_ADDRESS;
      RemoteAddr : SOCKET_ADDRESS;
      iSocketType : INT;
      iProtocol : INT;
   end record;
   pragma Convention (C_Pass_By_Copy,CSADDR_INFO_x);
   for CSADDR_INFO_x use record
      LocalAddr at 0 range 0..127;
      RemoteAddr at 0 range 128..255;
      iSocketType at 0 range 256..287;
      iProtocol at 0 range 288..319;
   end record;
   for CSADDR_INFO_x'Size use 320;
   for CSADDR_INFO_x'Alignment use 8;
   subtype CSADDR_INFO is CSADDR_INFO_x;
   type PCSADDR_INFO is access all CSADDR_INFO_x;
   type LPCSADDR_INFO is access all CSADDR_INFO_x;
   type sockaddr_storage_ss_pad1_x_Array is array(1..6) of CHAR; -- Auto Generated Dependancy
   type sockaddr_storage_ss_pad2_x_Array is array(1..112) of CHAR; -- Auto Generated Dependancy
   type sockaddr_storage is record
      ss_family : ADDRESS_FAMILY;
      ss_pad1 : sockaddr_storage_ss_pad1_x_Array;
      ss_align : Interfaces.C.Extensions.long_long;
      ss_pad2 : sockaddr_storage_ss_pad2_x_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,sockaddr_storage);
   for sockaddr_storage use record
      ss_family at 0 range 0..15;
      ss_pad1 at 0 range 16..63;
      ss_align at 0 range 64..127;
      ss_pad2 at 0 range 128..1023;
   end record;
   for sockaddr_storage'Size use 1024;
   for sockaddr_storage'Alignment use 8;
   subtype SOCKADDR_STORAGE_LH is sockaddr_storage;
   type PSOCKADDR_STORAGE_LH is access all sockaddr_storage;
   type LPSOCKADDR_STORAGE_LH is access all sockaddr_storage;
   type sockaddr_storage_xp_ss_pad1_x_Array is array(1..6) of CHAR; -- Auto Generated Dependancy
   type sockaddr_storage_xp_ss_pad2_x_Array is array(1..112) of CHAR; -- Auto Generated Dependancy
   type sockaddr_storage_xp is record
      ss_family : Interfaces.C.Short;
      ss_pad1 : sockaddr_storage_xp_ss_pad1_x_Array;
      ss_align : Interfaces.C.Extensions.long_long;
      ss_pad2 : sockaddr_storage_xp_ss_pad2_x_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,sockaddr_storage_xp);
   for sockaddr_storage_xp use record
      ss_family at 0 range 0..15;
      ss_pad1 at 0 range 16..63;
      ss_align at 0 range 64..127;
      ss_pad2 at 0 range 128..1023;
   end record;
   for sockaddr_storage_xp'Size use 1024;
   for sockaddr_storage_xp'Alignment use 8;
   -- subtype SOCKADDR_STORAGE_XP is sockaddr_storage_xp; --  [Note: Type already defined (case sensitive issue)]
   type PSOCKADDR_STORAGE_XP is access all sockaddr_storage_xp;
   type LPSOCKADDR_STORAGE_XP is access all sockaddr_storage_xp;
   -- subtype SOCKADDR_STORAGE is SOCKADDR_STORAGE_LH; --  [Note: Type already defined (case sensitive issue)]
   type PSOCKADDR_STORAGE is access all SOCKADDR_STORAGE;
   type LPSOCKADDR_STORAGE is access all SOCKADDR_STORAGE;
   type SOCKET_PROCESSOR_AFFINITY_x is record
      Processor : PROCESSOR_NUMBER;
      NumaNodeId : USHORT;
      Reserved : USHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,SOCKET_PROCESSOR_AFFINITY_x);
   for SOCKET_PROCESSOR_AFFINITY_x use record
      Processor at 0 range 0..31;
      NumaNodeId at 0 range 32..47;
      Reserved at 0 range 48..63;
   end record;
   for SOCKET_PROCESSOR_AFFINITY_x'Size use 64;
   for SOCKET_PROCESSOR_AFFINITY_x'Alignment use 2;
   subtype SOCKET_PROCESSOR_AFFINITY is SOCKET_PROCESSOR_AFFINITY_x;
   type PSOCKET_PROCESSOR_AFFINITY is access all SOCKET_PROCESSOR_AFFINITY_x;
   type IPPROTO is (
      IPPROTO_HOPOPTS,
      IPPROTO_ICMP,
      IPPROTO_IGMP,
      IPPROTO_GGP,
      IPPROTO_IPV4,
      IPPROTO_ST,
      IPPROTO_TCP,
      IPPROTO_CBT,
      IPPROTO_EGP,
      IPPROTO_IGP,
      IPPROTO_PUP,
      IPPROTO_UDP,
      IPPROTO_IDP,
      IPPROTO_RDP,
      IPPROTO_IPV6,
      IPPROTO_ROUTING,
      IPPROTO_FRAGMENT,
      IPPROTO_ESP,
      IPPROTO_AH,
      IPPROTO_ICMPV6,
      IPPROTO_NONE,
      IPPROTO_DSTOPTS,
      IPPROTO_ND,
      IPPROTO_ICLFXBM,
      IPPROTO_PIM,
      IPPROTO_PGM,
      IPPROTO_L2TP,
      IPPROTO_SCTP,
      IPPROTO_RAW,
      IPPROTO_MAX,
      IPPROTO_RESERVED_RAW,
      IPPROTO_RESERVED_IPSEC,
      IPPROTO_RESERVED_IPSECOFFLOAD,
      IPPROTO_RESERVED_WNV,
      IPPROTO_RESERVED_MAX
   );
   for IPPROTO use (
      IPPROTO_HOPOPTS => 0,
      IPPROTO_ICMP => 1,
      IPPROTO_IGMP => 2,
      IPPROTO_GGP => 3,
      IPPROTO_IPV4 => 4,
      IPPROTO_ST => 5,
      IPPROTO_TCP => 6,
      IPPROTO_CBT => 7,
      IPPROTO_EGP => 8,
      IPPROTO_IGP => 9,
      IPPROTO_PUP => 12,
      IPPROTO_UDP => 17,
      IPPROTO_IDP => 22,
      IPPROTO_RDP => 27,
      IPPROTO_IPV6 => 41,
      IPPROTO_ROUTING => 43,
      IPPROTO_FRAGMENT => 44,
      IPPROTO_ESP => 50,
      IPPROTO_AH => 51,
      IPPROTO_ICMPV6 => 58,
      IPPROTO_NONE => 59,
      IPPROTO_DSTOPTS => 60,
      IPPROTO_ND => 77,
      IPPROTO_ICLFXBM => 78,
      IPPROTO_PIM => 103,
      IPPROTO_PGM => 113,
      IPPROTO_L2TP => 115,
      IPPROTO_SCTP => 132,
      IPPROTO_RAW => 255,
      IPPROTO_MAX => 256,
      IPPROTO_RESERVED_RAW => 257,
      IPPROTO_RESERVED_IPSEC => 258,
      IPPROTO_RESERVED_IPSECOFFLOAD => 259,
      IPPROTO_RESERVED_WNV => 260,
      IPPROTO_RESERVED_MAX => 261
   );
   for IPPROTO'Size use 32;
   type PIPROTO is access all IPPROTO;
   type SCOPE_LEVEL is (
      ScopeLevelInterface,
      ScopeLevelLink,
      ScopeLevelSubnet,
      ScopeLevelAdmin,
      ScopeLevelSite,
      ScopeLevelOrganization,
      ScopeLevelGlobal,
      ScopeLevelCount
   );
   for SCOPE_LEVEL use (
      ScopeLevelInterface => 1,
      ScopeLevelLink => 2,
      ScopeLevelSubnet => 3,
      ScopeLevelAdmin => 4,
      ScopeLevelSite => 5,
      ScopeLevelOrganization => 8,
      ScopeLevelGlobal => 14,
      ScopeLevelCount => 16
   );
   for SCOPE_LEVEL'Size use 32;
   type Anonymous_Record_210 is record
      Zone : Interfaces.C.Extensions.Unsigned_28; -- bit field
      Level : Interfaces.C.Extensions.Unsigned_4; -- bit field
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_210);
   for Anonymous_Record_210 use record
      Zone at 0 range 0..27;
      Level at 0 range 28..31;
   end record;
   for Anonymous_Record_210'Size use 32;
   for Anonymous_Record_210'Alignment use 4;
   type Anonymous_Record_209 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_210;
         when others => 
            Value : ULONG;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_209);
   pragma Unchecked_Union (Anonymous_Record_209);
   for Anonymous_Record_209'Size use 32;
   for Anonymous_Record_209'Alignment use 4;
   type SCOPE_ID is record
      field_1 : Anonymous_Record_209;
   end record;
   pragma Convention (C_Pass_By_Copy,SCOPE_ID);
   for SCOPE_ID use record
      field_1 at 0 range 0..31;
   end record;
   for SCOPE_ID'Size use 32;
   for SCOPE_ID'Alignment use 4;
   type PSCOPE_ID is access all SCOPE_ID;
   type sockaddr_in_sin_zero_Array is array(1..8) of CHAR; -- Auto Generated Dependancy
   type sockaddr_in is record
      sin_family : ADDRESS_FAMILY;
      sin_port : USHORT;
      sin_addr : IN_ADDR;
      sin_zero : sockaddr_in_sin_zero_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,sockaddr_in);
   for sockaddr_in use record
      sin_family at 0 range 0..15;
      sin_port at 0 range 16..31;
      sin_addr at 0 range 32..63;
      sin_zero at 0 range 64..127;
   end record;
   for sockaddr_in'Size use 128;
   for sockaddr_in'Alignment use 4;
   -- subtype SOCKADDR_IN is sockaddr_in; --  [Note: Type already defined (case sensitive issue)]
   type PSOCKADDR_IN is access all sockaddr_in;
   type sockaddr_dl_sdl_data_Array is array(1..8) of UCHAR; -- Auto Generated Dependancy
   type sockaddr_dl_sdl_zero_Array is array(1..4) of UCHAR; -- Auto Generated Dependancy
   type sockaddr_dl is record
      sdl_family : ADDRESS_FAMILY;
      sdl_data : sockaddr_dl_sdl_data_Array;
      sdl_zero : sockaddr_dl_sdl_zero_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,sockaddr_dl);
   for sockaddr_dl use record
      sdl_family at 0 range 0..15;
      sdl_data at 0 range 16..79;
      sdl_zero at 0 range 80..111;
   end record;
   for sockaddr_dl'Size use 112;
   for sockaddr_dl'Alignment use 2;
   -- subtype SOCKADDR_DL is sockaddr_dl; --  [Note: Type already defined (case sensitive issue)]
   type PSOCKADDR_DL is access all sockaddr_dl;
   type WSABUF_x is record
      len : ULONG;
      buf : access CHAR;
   end record;
   pragma Convention (C_Pass_By_Copy,WSABUF_x);
   for WSABUF_x use record
      len at 0 range 0..31;
      buf at 0 range 64..127;
   end record;
   for WSABUF_x'Size use 128;
   for WSABUF_x'Alignment use 8;
   subtype WSABUF is WSABUF_x;
   type LPWSABUF is access all WSABUF_x;
   type WSAMSG_x is record
      name : LPSOCKADDR;
      namelen : INT;
      lpBuffers : LPWSABUF;
      dwBufferCount : ULONG;
      Control : WSABUF;
      dwFlags : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,WSAMSG_x);
   for WSAMSG_x use record
      name at 0 range 0..63;
      namelen at 0 range 64..95;
      lpBuffers at 0 range 128..191;
      dwBufferCount at 0 range 192..223;
      Control at 0 range 256..383;
      dwFlags at 0 range 384..415;
   end record;
   for WSAMSG_x'Size use 448;
   for WSAMSG_x'Alignment use 8;
   subtype WSAMSG is WSAMSG_x;
   type PWSAMSG is access all WSAMSG_x;
   type LPWSAMSG is access all WSAMSG_x;
   type cmsghdr is record
      cmsg_len : SIZE_T;
      cmsg_level : INT;
      cmsg_type : INT;
   end record;
   pragma Convention (C_Pass_By_Copy,cmsghdr);
   for cmsghdr use record
      cmsg_len at 0 range 0..63;
      cmsg_level at 0 range 64..95;
      cmsg_type at 0 range 96..127;
   end record;
   for cmsghdr'Size use 128;
   for cmsghdr'Alignment use 8;
   subtype WSACMSGHDR is cmsghdr;
   type PWSACMSGHDR is access all cmsghdr;
   type LPWSACMSGHDR is access all cmsghdr;
   -- subtype CMSGHDR is WSACMSGHDR; --  [Note: Type already defined (case sensitive issue)]
   type PCMSGHDR is access all WSACMSGHDR;
   type addrinfo;
   subtype ADDRINFOA is addrinfo;
   type addrinfo is record
      ai_flags : Interfaces.C.Int;
      ai_family : Interfaces.C.Int;
      ai_socktype : Interfaces.C.Int;
      ai_protocol : Interfaces.C.Int;
      ai_addrlen : size_t;
      ai_canonname_x : access Character;
      ai_addr : access sockaddr;
      ai_next : access addrinfo;
   end record;
   pragma Convention (C_Pass_By_Copy,addrinfo);
   for addrinfo use record
      ai_flags at 0 range 0..31;
      ai_family at 0 range 32..63;
      ai_socktype at 0 range 64..95;
      ai_protocol at 0 range 96..127;
      ai_addrlen at 0 range 128..191;
      ai_canonname_x at 0 range 192..255;
      ai_addr at 0 range 256..319;
      ai_next at 0 range 320..383;
   end record;
   for addrinfo'Size use 384;
   for addrinfo'Alignment use 8;
   type PADDRINFOA is access all addrinfo;
   type addrinfoW;
   -- subtype ADDRINFOW is addrinfoW; --  [Note: Type already defined (case sensitive issue)]
   type addrinfoW is record
      ai_flags : Interfaces.C.Int;
      ai_family : Interfaces.C.Int;
      ai_socktype : Interfaces.C.Int;
      ai_protocol : Interfaces.C.Int;
      ai_addrlen : size_t;
      ai_canonname_x : PWSTR;
      ai_addr : access sockaddr;
      ai_next : access addrinfoW;
   end record;
   pragma Convention (C_Pass_By_Copy,addrinfoW);
   for addrinfoW use record
      ai_flags at 0 range 0..31;
      ai_family at 0 range 32..63;
      ai_socktype at 0 range 64..95;
      ai_protocol at 0 range 96..127;
      ai_addrlen at 0 range 128..191;
      ai_canonname_x at 0 range 192..255;
      ai_addr at 0 range 256..319;
      ai_next at 0 range 320..383;
   end record;
   for addrinfoW'Size use 384;
   for addrinfoW'Alignment use 8;
   type PADDRINFOW is access all addrinfoW;
   type addrinfoexA;
   -- subtype ADDRINFOEXA is addrinfoexA; --  [Note: Type already defined (case sensitive issue)]
   type addrinfoexA is record
      ai_flags : Interfaces.C.Int;
      ai_family : Interfaces.C.Int;
      ai_socktype : Interfaces.C.Int;
      ai_protocol : Interfaces.C.Int;
      ai_addrlen : size_t;
      ai_canonname_x : access Character;
      ai_addr : access sockaddr;
      ai_blob : access Void;
      ai_bloblen : size_t;
      ai_provider : LPGUID;
      ai_next : access addrinfoexA;
   end record;
   pragma Convention (C_Pass_By_Copy,addrinfoexA);
   for addrinfoexA use record
      ai_flags at 0 range 0..31;
      ai_family at 0 range 32..63;
      ai_socktype at 0 range 64..95;
      ai_protocol at 0 range 96..127;
      ai_addrlen at 0 range 128..191;
      ai_canonname_x at 0 range 192..255;
      ai_addr at 0 range 256..319;
      ai_blob at 0 range 320..383;
      ai_bloblen at 0 range 384..447;
      ai_provider at 0 range 448..511;
      ai_next at 0 range 512..575;
   end record;
   for addrinfoexA'Size use 576;
   for addrinfoexA'Alignment use 8;
   type PADDRINFOEXA is access all addrinfoexA;
   type LPADDRINFOEXA is access all addrinfoexA;
   type addrinfoexW;
   -- subtype ADDRINFOEXW is addrinfoexW; --  [Note: Type already defined (case sensitive issue)]
   type addrinfoexW is record
      ai_flags : Interfaces.C.Int;
      ai_family : Interfaces.C.Int;
      ai_socktype : Interfaces.C.Int;
      ai_protocol : Interfaces.C.Int;
      ai_addrlen : size_t;
      ai_canonname_x : PWSTR;
      ai_addr : access sockaddr;
      ai_blob : access Void;
      ai_bloblen : size_t;
      ai_provider : LPGUID;
      ai_next : access addrinfoexW;
   end record;
   pragma Convention (C_Pass_By_Copy,addrinfoexW);
   for addrinfoexW use record
      ai_flags at 0 range 0..31;
      ai_family at 0 range 32..63;
      ai_socktype at 0 range 64..95;
      ai_protocol at 0 range 96..127;
      ai_addrlen at 0 range 128..191;
      ai_canonname_x at 0 range 192..255;
      ai_addr at 0 range 256..319;
      ai_blob at 0 range 320..383;
      ai_bloblen at 0 range 384..447;
      ai_provider at 0 range 448..511;
      ai_next at 0 range 512..575;
   end record;
   for addrinfoexW'Size use 576;
   for addrinfoexW'Alignment use 8;
   type PADDRINFOEXW is access all addrinfoexW;
   type LPADDRINFOEXW is access all addrinfoexW;
   type addrinfoex2A;
   -- subtype ADDRINFOEX2A is addrinfoex2A; --  [Note: Type already defined (case sensitive issue)]
   type addrinfoex2A is record
      ai_flags : Interfaces.C.Int;
      ai_family : Interfaces.C.Int;
      ai_socktype : Interfaces.C.Int;
      ai_protocol : Interfaces.C.Int;
      ai_addrlen : size_t;
      ai_canonname_x : access Character;
      ai_addr : access sockaddr;
      ai_blob : access Void;
      ai_bloblen : size_t;
      ai_provider : LPGUID;
      ai_next : access addrinfoex2A;
      ai_version : Interfaces.C.Int;
      ai_fqdn_x : access Character;
   end record;
   pragma Convention (C_Pass_By_Copy,addrinfoex2A);
   for addrinfoex2A use record
      ai_flags at 0 range 0..31;
      ai_family at 0 range 32..63;
      ai_socktype at 0 range 64..95;
      ai_protocol at 0 range 96..127;
      ai_addrlen at 0 range 128..191;
      ai_canonname_x at 0 range 192..255;
      ai_addr at 0 range 256..319;
      ai_blob at 0 range 320..383;
      ai_bloblen at 0 range 384..447;
      ai_provider at 0 range 448..511;
      ai_next at 0 range 512..575;
      ai_version at 0 range 576..607;
      ai_fqdn_x at 0 range 640..703;
   end record;
   for addrinfoex2A'Size use 704;
   for addrinfoex2A'Alignment use 8;
   type PADDRINFOEX2A is access all addrinfoex2A;
   type LPADDRINFOEX2A is access all addrinfoex2A;
   type addrinfoex2W;
   -- subtype ADDRINFOEX2W is addrinfoex2W; --  [Note: Type already defined (case sensitive issue)]
   type addrinfoex2W is record
      ai_flags : Interfaces.C.Int;
      ai_family : Interfaces.C.Int;
      ai_socktype : Interfaces.C.Int;
      ai_protocol : Interfaces.C.Int;
      ai_addrlen : size_t;
      ai_canonname_x : PWSTR;
      ai_addr : access sockaddr;
      ai_blob : access Void;
      ai_bloblen : size_t;
      ai_provider : LPGUID;
      ai_next : access addrinfoex2W;
      ai_version : Interfaces.C.Int;
      ai_fqdn_x : PWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,addrinfoex2W);
   for addrinfoex2W use record
      ai_flags at 0 range 0..31;
      ai_family at 0 range 32..63;
      ai_socktype at 0 range 64..95;
      ai_protocol at 0 range 96..127;
      ai_addrlen at 0 range 128..191;
      ai_canonname_x at 0 range 192..255;
      ai_addr at 0 range 256..319;
      ai_blob at 0 range 320..383;
      ai_bloblen at 0 range 384..447;
      ai_provider at 0 range 448..511;
      ai_next at 0 range 512..575;
      ai_version at 0 range 576..607;
      ai_fqdn_x at 0 range 640..703;
   end record;
   for addrinfoex2W'Size use 704;
   for addrinfoex2W'Alignment use 8;
   type PADDRINFOEX2W is access all addrinfoex2W;
   type LPADDRINFOEX2W is access all addrinfoex2W;
   type addrinfoex3;
   -- subtype ADDRINFOEX3 is addrinfoex3; --  [Note: Type already defined (case sensitive issue)]
   type addrinfoex3 is record
      ai_flags : Interfaces.C.Int;
      ai_family : Interfaces.C.Int;
      ai_socktype : Interfaces.C.Int;
      ai_protocol : Interfaces.C.Int;
      ai_addrlen : size_t;
      ai_canonname_x : PWSTR;
      ai_addr : access sockaddr;
      ai_blob : access Void;
      ai_bloblen : size_t;
      ai_provider : LPGUID;
      ai_next : access addrinfoex3;
      ai_version : Interfaces.C.Int;
      ai_fqdn_x : PWSTR;
      ai_interfaceindex : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,addrinfoex3);
   for addrinfoex3 use record
      ai_flags at 0 range 0..31;
      ai_family at 0 range 32..63;
      ai_socktype at 0 range 64..95;
      ai_protocol at 0 range 96..127;
      ai_addrlen at 0 range 128..191;
      ai_canonname_x at 0 range 192..255;
      ai_addr at 0 range 256..319;
      ai_blob at 0 range 320..383;
      ai_bloblen at 0 range 384..447;
      ai_provider at 0 range 448..511;
      ai_next at 0 range 512..575;
      ai_version at 0 range 576..607;
      ai_fqdn_x at 0 range 640..703;
      ai_interfaceindex at 0 range 704..735;
   end record;
   for addrinfoex3'Size use 768;
   for addrinfoex3'Alignment use 8;
   type PADDRINFOEX3 is access all addrinfoex3;
   type LPADDRINFOEX3 is access all addrinfoex3;
   type addrinfoex4;
   -- subtype ADDRINFOEX4 is addrinfoex4; --  [Note: Type already defined (case sensitive issue)]
   type addrinfoex4 is record
      ai_flags : Interfaces.C.Int;
      ai_family : Interfaces.C.Int;
      ai_socktype : Interfaces.C.Int;
      ai_protocol : Interfaces.C.Int;
      ai_addrlen : size_t;
      ai_canonname_x : PWSTR;
      ai_addr : access sockaddr;
      ai_blob : access Void;
      ai_bloblen : size_t;
      ai_provider : access GUID;
      ai_next : access addrinfoex4;
      ai_version : Interfaces.C.Int;
      ai_fqdn_x : PWSTR;
      ai_interfaceindex : Interfaces.C.Int;
      ai_resolutionhandle : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,addrinfoex4);
   for addrinfoex4 use record
      ai_flags at 0 range 0..31;
      ai_family at 0 range 32..63;
      ai_socktype at 0 range 64..95;
      ai_protocol at 0 range 96..127;
      ai_addrlen at 0 range 128..191;
      ai_canonname_x at 0 range 192..255;
      ai_addr at 0 range 256..319;
      ai_blob at 0 range 320..383;
      ai_bloblen at 0 range 384..447;
      ai_provider at 0 range 448..511;
      ai_next at 0 range 512..575;
      ai_version at 0 range 576..607;
      ai_fqdn_x at 0 range 640..703;
      ai_interfaceindex at 0 range 704..735;
      ai_resolutionhandle at 0 range 768..831;
   end record;
   for addrinfoex4'Size use 832;
   for addrinfoex4'Alignment use 8;
   type PADDRINFOEX4 is access all addrinfoex4;
   type LPADDRINFOEX4 is access all addrinfoex4;
   -- #include <Winsock2.h>
   subtype SOCKET is UINT_PTR;
   type fd_set_fd_array_Array is array(1..64) of SOCKET; -- Auto Generated Dependancy
   type fd_set is record
      fd_count : u_int;
      fd_array : fd_set_fd_array_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,fd_set);
   for fd_set use record
      fd_count at 0 range 0..31;
      fd_array at 0 range 64..4159;
   end record;
   for fd_set'Size use 4160;
   for fd_set'Alignment use 8;
   function WSAFDIsSet(
      fd : SOCKET;
      param2 : access fd_set
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSAFDIsSet,"__WSAFDIsSet");
   type timeval is record
      tv_sec : Interfaces.C.Long;
      tv_usec : Interfaces.C.Long;
   end record;
   pragma Convention (C_Pass_By_Copy,timeval);
   for timeval use record
      tv_sec at 0 range 0..31;
      tv_usec at 0 range 32..63;
   end record;
   for timeval'Size use 64;
   for timeval'Alignment use 4;
   type hostent is record
      h_name : access Character;
      h_aliases : access va_list;
      h_addrtype : Interfaces.C.Short;
      h_length : Interfaces.C.Short;
      h_addr_list : access va_list;
   end record;
   pragma Convention (C_Pass_By_Copy,hostent);
   for hostent use record
      h_name at 0 range 0..63;
      h_aliases at 0 range 64..127;
      h_addrtype at 0 range 128..143;
      h_length at 0 range 144..159;
      h_addr_list at 0 range 192..255;
   end record;
   for hostent'Size use 256;
   for hostent'Alignment use 8;
   type netent is record
      n_name : access Character;
      n_aliases : access va_list;
      n_addrtype : Interfaces.C.Short;
      n_net : u_long;
   end record;
   pragma Convention (C_Pass_By_Copy,netent);
   for netent use record
      n_name at 0 range 0..63;
      n_aliases at 0 range 64..127;
      n_addrtype at 0 range 128..143;
      n_net at 0 range 160..191;
   end record;
   for netent'Size use 192;
   for netent'Alignment use 8;
   type servent is record
      s_name : access Character;
      s_aliases : access va_list;
      s_proto : access Character;
      s_port : Interfaces.C.Short;
   end record;
   pragma Convention (C_Pass_By_Copy,servent);
   for servent use record
      s_name at 0 range 0..63;
      s_aliases at 0 range 64..127;
      s_proto at 0 range 128..191;
      s_port at 0 range 192..207;
   end record;
   for servent'Size use 256;
   for servent'Alignment use 8;
   type protoent is record
      p_name : access Character;
      p_aliases : access va_list;
      p_proto : Interfaces.C.Short;
   end record;
   pragma Convention (C_Pass_By_Copy,protoent);
   for protoent use record
      p_name at 0 range 0..63;
      p_aliases at 0 range 64..127;
      p_proto at 0 range 128..143;
   end record;
   for protoent'Size use 192;
   for protoent'Alignment use 8;
   type WSAData_szDescription_Array is array(1..257) of Character; -- Auto Generated Dependancy
   type WSAData_szSystemStatus_Array is array(1..129) of Character; -- Auto Generated Dependancy
   type WSAData is record
      wVersion : WORD;
      wHighVersion : WORD;
      iMaxSockets : Interfaces.C.unsigned_short;
      iMaxUdpDg : Interfaces.C.unsigned_short;
      lpVendorInfo : access Character;
      szDescription : WSAData_szDescription_Array;
      szSystemStatus : WSAData_szSystemStatus_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,WSAData);
   for WSAData use record
      wVersion at 0 range 0..15;
      wHighVersion at 0 range 16..31;
      iMaxSockets at 0 range 32..47;
      iMaxUdpDg at 0 range 48..63;
      lpVendorInfo at 0 range 64..127;
      szDescription at 0 range 128..2183;
      szSystemStatus at 0 range 2184..3215;
   end record;
   for WSAData'Size use 3264;
   for WSAData'Alignment use 8;
   -- subtype WSADATA is WSAData; --  [Note: Type already defined (case sensitive issue)]
   type LPWSADATA is access all WSAData;
   type sockproto is record
      sp_family : u_short;
      sp_protocol : u_short;
   end record;
   pragma Convention (C_Pass_By_Copy,sockproto);
   for sockproto use record
      sp_family at 0 range 0..15;
      sp_protocol at 0 range 16..31;
   end record;
   for sockproto'Size use 32;
   for sockproto'Alignment use 2;
   type linger is record
      l_onoff : u_short;
      l_linger : u_short;
   end record;
   pragma Convention (C_Pass_By_Copy,linger);
   for linger use record
      l_onoff at 0 range 0..15;
      l_linger at 0 range 16..31;
   end record;
   for linger'Size use 32;
   for linger'Alignment use 2;
   type LPWSAOVERLAPPED is access all OVERLAPPED_x;
   -- #include <qos.h>
   subtype SERVICETYPE is ULONG;
   type flowspec_x is record
      TokenRate : ULONG;
      TokenBucketSize : ULONG;
      PeakBandwidth : ULONG;
      Latency : ULONG;
      DelayVariation : ULONG;
      ServiceType_x : SERVICETYPE;
      MaxSduSize : ULONG;
      MinimumPolicedSize : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,flowspec_x);
   for flowspec_x use record
      TokenRate at 0 range 0..31;
      TokenBucketSize at 0 range 32..63;
      PeakBandwidth at 0 range 64..95;
      Latency at 0 range 96..127;
      DelayVariation at 0 range 128..159;
      ServiceType_x at 0 range 160..191;
      MaxSduSize at 0 range 192..223;
      MinimumPolicedSize at 0 range 224..255;
   end record;
   for flowspec_x'Size use 256;
   for flowspec_x'Alignment use 4;
   subtype FLOWSPEC is flowspec_x;
   type PFLOWSPEC is access all flowspec_x;
   type LPFLOWSPEC is access all flowspec_x;
   type QOS_OBJECT_HDR is record
      ObjectType : ULONG;
      ObjectLength : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,QOS_OBJECT_HDR);
   for QOS_OBJECT_HDR use record
      ObjectType at 0 range 0..31;
      ObjectLength at 0 range 32..63;
   end record;
   for QOS_OBJECT_HDR'Size use 64;
   for QOS_OBJECT_HDR'Alignment use 4;
   type LPQOS_OBJECT_HDR is access all QOS_OBJECT_HDR;
   type QOS_SD_MODE_x is record
      ObjectHdr : QOS_OBJECT_HDR;
      ShapeDiscardMode : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,QOS_SD_MODE_x);
   for QOS_SD_MODE_x use record
      ObjectHdr at 0 range 0..63;
      ShapeDiscardMode at 0 range 64..95;
   end record;
   for QOS_SD_MODE_x'Size use 96;
   for QOS_SD_MODE_x'Alignment use 4;
   subtype QOS_SD_MODE is QOS_SD_MODE_x;
   type LPQOS_SD_MODE is access all QOS_SD_MODE_x;
   type QOS_SHAPING_RATE_x is record
      ObjectHdr : QOS_OBJECT_HDR;
      ShapingRate : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,QOS_SHAPING_RATE_x);
   for QOS_SHAPING_RATE_x use record
      ObjectHdr at 0 range 0..63;
      ShapingRate at 0 range 64..95;
   end record;
   for QOS_SHAPING_RATE_x'Size use 96;
   for QOS_SHAPING_RATE_x'Alignment use 4;
   subtype QOS_SHAPING_RATE is QOS_SHAPING_RATE_x;
   type LPQOS_SHAPING_RATE is access all QOS_SHAPING_RATE_x;
   -- #include <Winsock2.h>
   type QualityOfService_x is record
      SendingFlowspec : FLOWSPEC;
      ReceivingFlowspec : FLOWSPEC;
      ProviderSpecific : WSABUF;
   end record;
   pragma Convention (C_Pass_By_Copy,QualityOfService_x);
   for QualityOfService_x use record
      SendingFlowspec at 0 range 0..255;
      ReceivingFlowspec at 0 range 256..511;
      ProviderSpecific at 0 range 512..639;
   end record;
   for QualityOfService_x'Size use 640;
   for QualityOfService_x'Alignment use 8;
   subtype QOS is QualityOfService_x;
   type LPQOS is access all QualityOfService_x;
   subtype GROUP is Interfaces.C.unsigned;
   type WSANETWORKEVENTS_x_iErrorCode_Array is array(1..10) of Interfaces.C.Int; -- Auto Generated Dependancy
   type WSANETWORKEVENTS_x is record
      lNetworkEvents : Interfaces.C.Long;
      iErrorCode : WSANETWORKEVENTS_x_iErrorCode_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,WSANETWORKEVENTS_x);
   for WSANETWORKEVENTS_x use record
      lNetworkEvents at 0 range 0..31;
      iErrorCode at 0 range 32..351;
   end record;
   for WSANETWORKEVENTS_x'Size use 352;
   for WSANETWORKEVENTS_x'Alignment use 4;
   subtype WSANETWORKEVENTS is WSANETWORKEVENTS_x;
   type LPWSANETWORKEVENTS is access all WSANETWORKEVENTS_x;
   type WSAPROTOCOLCHAIN_x_ChainEntries_Array is array(1..7) of DWORD; -- Auto Generated Dependancy
   type WSAPROTOCOLCHAIN_x is record
      ChainLen : Interfaces.C.Int;
      ChainEntries : WSAPROTOCOLCHAIN_x_ChainEntries_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,WSAPROTOCOLCHAIN_x);
   for WSAPROTOCOLCHAIN_x use record
      ChainLen at 0 range 0..31;
      ChainEntries at 0 range 32..255;
   end record;
   for WSAPROTOCOLCHAIN_x'Size use 256;
   for WSAPROTOCOLCHAIN_x'Alignment use 4;
   subtype WSAPROTOCOLCHAIN is WSAPROTOCOLCHAIN_x;
   type LPWSAPROTOCOLCHAIN is access all WSAPROTOCOLCHAIN_x;
   type WSAPROTOCOL_INFOA_x_szProtocol_Array is array(1..256) of CHAR; -- Auto Generated Dependancy
   type WSAPROTOCOL_INFOA_x is record
      dwServiceFlags1 : DWORD;
      dwServiceFlags2 : DWORD;
      dwServiceFlags3 : DWORD;
      dwServiceFlags4 : DWORD;
      dwProviderFlags : DWORD;
      ProviderId : GUID;
      dwCatalogEntryId : DWORD;
      ProtocolChain : WSAPROTOCOLCHAIN;
      iVersion : Interfaces.C.Int;
      iAddressFamily : Interfaces.C.Int;
      iMaxSockAddr : Interfaces.C.Int;
      iMinSockAddr : Interfaces.C.Int;
      iSocketType : Interfaces.C.Int;
      iProtocol : Interfaces.C.Int;
      iProtocolMaxOffset : Interfaces.C.Int;
      iNetworkByteOrder : Interfaces.C.Int;
      iSecurityScheme : Interfaces.C.Int;
      dwMessageSize : DWORD;
      dwProviderReserved : DWORD;
      szProtocol : WSAPROTOCOL_INFOA_x_szProtocol_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,WSAPROTOCOL_INFOA_x);
   for WSAPROTOCOL_INFOA_x use record
      dwServiceFlags1 at 0 range 0..31;
      dwServiceFlags2 at 0 range 32..63;
      dwServiceFlags3 at 0 range 64..95;
      dwServiceFlags4 at 0 range 96..127;
      dwProviderFlags at 0 range 128..159;
      ProviderId at 0 range 160..287;
      dwCatalogEntryId at 0 range 288..319;
      ProtocolChain at 0 range 320..575;
      iVersion at 0 range 576..607;
      iAddressFamily at 0 range 608..639;
      iMaxSockAddr at 0 range 640..671;
      iMinSockAddr at 0 range 672..703;
      iSocketType at 0 range 704..735;
      iProtocol at 0 range 736..767;
      iProtocolMaxOffset at 0 range 768..799;
      iNetworkByteOrder at 0 range 800..831;
      iSecurityScheme at 0 range 832..863;
      dwMessageSize at 0 range 864..895;
      dwProviderReserved at 0 range 896..927;
      szProtocol at 0 range 928..2975;
   end record;
   for WSAPROTOCOL_INFOA_x'Size use 2976;
   for WSAPROTOCOL_INFOA_x'Alignment use 4;
   subtype WSAPROTOCOL_INFOA is WSAPROTOCOL_INFOA_x;
   type LPWSAPROTOCOL_INFOA is access all WSAPROTOCOL_INFOA_x;
   type WSAPROTOCOL_INFOW_x_szProtocol_Array is array(1..256) of WCHAR; -- Auto Generated Dependancy
   type WSAPROTOCOL_INFOW_x is record
      dwServiceFlags1 : DWORD;
      dwServiceFlags2 : DWORD;
      dwServiceFlags3 : DWORD;
      dwServiceFlags4 : DWORD;
      dwProviderFlags : DWORD;
      ProviderId : GUID;
      dwCatalogEntryId : DWORD;
      ProtocolChain : WSAPROTOCOLCHAIN;
      iVersion : Interfaces.C.Int;
      iAddressFamily : Interfaces.C.Int;
      iMaxSockAddr : Interfaces.C.Int;
      iMinSockAddr : Interfaces.C.Int;
      iSocketType : Interfaces.C.Int;
      iProtocol : Interfaces.C.Int;
      iProtocolMaxOffset : Interfaces.C.Int;
      iNetworkByteOrder : Interfaces.C.Int;
      iSecurityScheme : Interfaces.C.Int;
      dwMessageSize : DWORD;
      dwProviderReserved : DWORD;
      szProtocol : WSAPROTOCOL_INFOW_x_szProtocol_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,WSAPROTOCOL_INFOW_x);
   for WSAPROTOCOL_INFOW_x use record
      dwServiceFlags1 at 0 range 0..31;
      dwServiceFlags2 at 0 range 32..63;
      dwServiceFlags3 at 0 range 64..95;
      dwServiceFlags4 at 0 range 96..127;
      dwProviderFlags at 0 range 128..159;
      ProviderId at 0 range 160..287;
      dwCatalogEntryId at 0 range 288..319;
      ProtocolChain at 0 range 320..575;
      iVersion at 0 range 576..607;
      iAddressFamily at 0 range 608..639;
      iMaxSockAddr at 0 range 640..671;
      iMinSockAddr at 0 range 672..703;
      iSocketType at 0 range 704..735;
      iProtocol at 0 range 736..767;
      iProtocolMaxOffset at 0 range 768..799;
      iNetworkByteOrder at 0 range 800..831;
      iSecurityScheme at 0 range 832..863;
      dwMessageSize at 0 range 864..895;
      dwProviderReserved at 0 range 896..927;
      szProtocol at 0 range 928..5023;
   end record;
   for WSAPROTOCOL_INFOW_x'Size use 5024;
   for WSAPROTOCOL_INFOW_x'Alignment use 4;
   subtype WSAPROTOCOL_INFOW is WSAPROTOCOL_INFOW_x;
   type LPWSAPROTOCOL_INFOW is access all WSAPROTOCOL_INFOW_x;
   subtype WSAPROTOCOL_INFO is WSAPROTOCOL_INFOA;
   subtype LPWSAPROTOCOL_INFO is LPWSAPROTOCOL_INFOA;
   type LPCONDITIONPROC is access function (p1 : LPWSABUF ; p2 : LPWSABUF ; p3 : LPQOS ; p4 : LPQOS ; p5 : LPWSABUF ; p6 : LPWSABUF ; p7 : access GROUP ; p8 : DWORD_PTR) return int; -- int (LPWSABUF, LPWSABUF, LPQOS, LPQOS, LPWSABUF, LPWSABUF, GROUP *, DWORD_PTR)
   pragma Convention(C,LPCONDITIONPROC);
   type LPWSAOVERLAPPED_COMPLETION_ROUTINE is access procedure (p1 : DWORD ; p2 : DWORD ; p3 : LPWSAOVERLAPPED ; p4 : DWORD); -- void (DWORD, DWORD, LPWSAOVERLAPPED, DWORD)
   pragma Convention(C,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
   type WSACOMPLETIONTYPE_x is (
      NSP_NOTIFY_IMMEDIATELY,
      NSP_NOTIFY_HWND,
      NSP_NOTIFY_EVENT,
      NSP_NOTIFY_PORT,
      NSP_NOTIFY_APC
   );
   for WSACOMPLETIONTYPE_x use (
      NSP_NOTIFY_IMMEDIATELY => 0,
      NSP_NOTIFY_HWND => 1,
      NSP_NOTIFY_EVENT => 2,
      NSP_NOTIFY_PORT => 3,
      NSP_NOTIFY_APC => 4
   );
   for WSACOMPLETIONTYPE_x'Size use 32;
   subtype WSACOMPLETIONTYPE is WSACOMPLETIONTYPE_x;
   type PWSACOMPLETIONTYPE is access all WSACOMPLETIONTYPE_x;
   type LPWSACOMPLETIONTYPE is access all WSACOMPLETIONTYPE_x;
   type Anonymous_Record_212 is record
      hWnd_x : HWND;
      uMsg : UINT;
      context_x : WPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_212);
   for Anonymous_Record_212 use record
      hWnd_x at 0 range 0..63;
      uMsg at 0 range 64..95;
      context_x at 0 range 128..191;
   end record;
   for Anonymous_Record_212'Size use 192;
   for Anonymous_Record_212'Alignment use 8;
   type Anonymous_Record_213 is record
      lpOverlapped_x : LPWSAOVERLAPPED;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_213);
   for Anonymous_Record_213 use record
      lpOverlapped_x at 0 range 0..63;
   end record;
   for Anonymous_Record_213'Size use 64;
   for Anonymous_Record_213'Alignment use 8;
   type Anonymous_Record_214 is record
      lpOverlapped_x : LPWSAOVERLAPPED;
      lpfnCompletionProc : LPWSAOVERLAPPED_COMPLETION_ROUTINE;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_214);
   for Anonymous_Record_214 use record
      lpOverlapped_x at 0 range 0..63;
      lpfnCompletionProc at 0 range 64..127;
   end record;
   for Anonymous_Record_214'Size use 128;
   for Anonymous_Record_214'Alignment use 8;
   type Anonymous_Record_215 is record
      lpOverlapped_x : LPWSAOVERLAPPED;
      hPort : HANDLE;
      Key : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_215);
   for Anonymous_Record_215 use record
      lpOverlapped_x at 0 range 0..63;
      hPort at 0 range 64..127;
      Key at 0 range 128..191;
   end record;
   for Anonymous_Record_215'Size use 192;
   for Anonymous_Record_215'Alignment use 8;
   type Anonymous_Record_211 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_212;
         when 1 =>
            field_2 : Anonymous_Record_213;
         when 2 =>
            field_3 : Anonymous_Record_214;
         when others => 
            field_4 : Anonymous_Record_215;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_211);
   pragma Unchecked_Union (Anonymous_Record_211);
   for Anonymous_Record_211'Size use 192;
   for Anonymous_Record_211'Alignment use 8;
   type WSACOMPLETION_x is record
      type_x : WSACOMPLETIONTYPE;
      field_1 : Anonymous_Record_211;
   end record;
   pragma Convention (C_Pass_By_Copy,WSACOMPLETION_x);
   for WSACOMPLETION_x use record
      type_x at 0 range 0..31;
      field_1 at 0 range 32..223;
   end record;
   for WSACOMPLETION_x'Size use 256;
   for WSACOMPLETION_x'Alignment use 8;
   subtype WSACOMPLETION is WSACOMPLETION_x;
   type PWSACOMPLETION is access all WSACOMPLETION_x;
   type LPWSACOMPLETION is access all WSACOMPLETION_x;
   type BLOB_x is record
      cbSize : ULONG;
      pBlobData : access BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,BLOB_x);
   for BLOB_x use record
      cbSize at 0 range 0..31;
      pBlobData at 0 range 64..127;
   end record;
   for BLOB_x'Size use 128;
   for BLOB_x'Alignment use 8;
   subtype BLOB is BLOB_x;
   type LPBLOB is access all BLOB_x;
   type AFPROTOCOLS_x is record
      iAddressFamily : INT;
      iProtocol : INT;
   end record;
   pragma Convention (C_Pass_By_Copy,AFPROTOCOLS_x);
   for AFPROTOCOLS_x use record
      iAddressFamily at 0 range 0..31;
      iProtocol at 0 range 32..63;
   end record;
   for AFPROTOCOLS_x'Size use 64;
   for AFPROTOCOLS_x'Alignment use 4;
   subtype AFPROTOCOLS is AFPROTOCOLS_x;
   type PAFPROTOCOLS is access all AFPROTOCOLS_x;
   type LPAFPROTOCOLS is access all AFPROTOCOLS_x;
   type WSAEcomparator_x is (
      COMP_EQUAL,
      COMP_NOTLESS
   );
   for WSAEcomparator_x use (
      COMP_EQUAL => 0,
      COMP_NOTLESS => 1
   );
   for WSAEcomparator_x'Size use 32;
   subtype WSAECOMPARATOR is WSAEcomparator_x;
   type PWSAECOMPARATOR is access all WSAEcomparator_x;
   type LPWSAECOMPARATOR is access all WSAEcomparator_x;
   type WSAVersion_x is record
      dwVersion : DWORD;
      ecHow : WSAECOMPARATOR;
   end record;
   pragma Convention (C_Pass_By_Copy,WSAVersion_x);
   for WSAVersion_x use record
      dwVersion at 0 range 0..31;
      ecHow at 0 range 32..63;
   end record;
   for WSAVersion_x'Size use 64;
   for WSAVersion_x'Alignment use 4;
   subtype WSAVERSION is WSAVersion_x;
   type PWSAVERSION is access all WSAVersion_x;
   type LPWSAVERSION is access all WSAVersion_x;
   type WSAQuerySetA_x is record
      dwSize : DWORD;
      lpszServiceInstanceName : LPSTR;
      lpServiceClassId : LPGUID;
      lpVersion : LPWSAVERSION;
      lpszComment : LPSTR;
      dwNameSpace : DWORD;
      lpNSProviderId : LPGUID;
      lpszContext : LPSTR;
      dwNumberOfProtocols : DWORD;
      lpafpProtocols : LPAFPROTOCOLS;
      lpszQueryString : LPSTR;
      dwNumberOfCsAddrs : DWORD;
      lpcsaBuffer : LPCSADDR_INFO;
      dwOutputFlags : DWORD;
      lpBlob_x : LPBLOB;
   end record;
   pragma Convention (C_Pass_By_Copy,WSAQuerySetA_x);
   for WSAQuerySetA_x use record
      dwSize at 0 range 0..31;
      lpszServiceInstanceName at 0 range 64..127;
      lpServiceClassId at 0 range 128..191;
      lpVersion at 0 range 192..255;
      lpszComment at 0 range 256..319;
      dwNameSpace at 0 range 320..351;
      lpNSProviderId at 0 range 384..447;
      lpszContext at 0 range 448..511;
      dwNumberOfProtocols at 0 range 512..543;
      lpafpProtocols at 0 range 576..639;
      lpszQueryString at 0 range 640..703;
      dwNumberOfCsAddrs at 0 range 704..735;
      lpcsaBuffer at 0 range 768..831;
      dwOutputFlags at 0 range 832..863;
      lpBlob_x at 0 range 896..959;
   end record;
   for WSAQuerySetA_x'Size use 960;
   for WSAQuerySetA_x'Alignment use 8;
   subtype WSAQUERYSETA is WSAQuerySetA_x;
   type PWSAQUERYSETA is access all WSAQuerySetA_x;
   type LPWSAQUERYSETA is access all WSAQuerySetA_x;
   type WSAQuerySetW_x is record
      dwSize : DWORD;
      lpszServiceInstanceName : LPWSTR;
      lpServiceClassId : LPGUID;
      lpVersion : LPWSAVERSION;
      lpszComment : LPWSTR;
      dwNameSpace : DWORD;
      lpNSProviderId : LPGUID;
      lpszContext : LPWSTR;
      dwNumberOfProtocols : DWORD;
      lpafpProtocols : LPAFPROTOCOLS;
      lpszQueryString : LPWSTR;
      dwNumberOfCsAddrs : DWORD;
      lpcsaBuffer : LPCSADDR_INFO;
      dwOutputFlags : DWORD;
      lpBlob_x : LPBLOB;
   end record;
   pragma Convention (C_Pass_By_Copy,WSAQuerySetW_x);
   for WSAQuerySetW_x use record
      dwSize at 0 range 0..31;
      lpszServiceInstanceName at 0 range 64..127;
      lpServiceClassId at 0 range 128..191;
      lpVersion at 0 range 192..255;
      lpszComment at 0 range 256..319;
      dwNameSpace at 0 range 320..351;
      lpNSProviderId at 0 range 384..447;
      lpszContext at 0 range 448..511;
      dwNumberOfProtocols at 0 range 512..543;
      lpafpProtocols at 0 range 576..639;
      lpszQueryString at 0 range 640..703;
      dwNumberOfCsAddrs at 0 range 704..735;
      lpcsaBuffer at 0 range 768..831;
      dwOutputFlags at 0 range 832..863;
      lpBlob_x at 0 range 896..959;
   end record;
   for WSAQuerySetW_x'Size use 960;
   for WSAQuerySetW_x'Alignment use 8;
   subtype WSAQUERYSETW is WSAQuerySetW_x;
   type PWSAQUERYSETW is access all WSAQuerySetW_x;
   type LPWSAQUERYSETW is access all WSAQuerySetW_x;
   type WSAQuerySet2A_x is record
      dwSize : DWORD;
      lpszServiceInstanceName : LPSTR;
      lpVersion : LPWSAVERSION;
      lpszComment : LPSTR;
      dwNameSpace : DWORD;
      lpNSProviderId : LPGUID;
      lpszContext : LPSTR;
      dwNumberOfProtocols : DWORD;
      lpafpProtocols : LPAFPROTOCOLS;
      lpszQueryString : LPSTR;
      dwNumberOfCsAddrs : DWORD;
      lpcsaBuffer : LPCSADDR_INFO;
      dwOutputFlags : DWORD;
      lpBlob_x : LPBLOB;
   end record;
   pragma Convention (C_Pass_By_Copy,WSAQuerySet2A_x);
   for WSAQuerySet2A_x use record
      dwSize at 0 range 0..31;
      lpszServiceInstanceName at 0 range 64..127;
      lpVersion at 0 range 128..191;
      lpszComment at 0 range 192..255;
      dwNameSpace at 0 range 256..287;
      lpNSProviderId at 0 range 320..383;
      lpszContext at 0 range 384..447;
      dwNumberOfProtocols at 0 range 448..479;
      lpafpProtocols at 0 range 512..575;
      lpszQueryString at 0 range 576..639;
      dwNumberOfCsAddrs at 0 range 640..671;
      lpcsaBuffer at 0 range 704..767;
      dwOutputFlags at 0 range 768..799;
      lpBlob_x at 0 range 832..895;
   end record;
   for WSAQuerySet2A_x'Size use 896;
   for WSAQuerySet2A_x'Alignment use 8;
   subtype WSAQUERYSET2A is WSAQuerySet2A_x;
   type PWSAQUERYSET2A is access all WSAQuerySet2A_x;
   type LPWSAQUERYSET2A is access all WSAQuerySet2A_x;
   type WSAQuerySet2W_x is record
      dwSize : DWORD;
      lpszServiceInstanceName : LPWSTR;
      lpVersion : LPWSAVERSION;
      lpszComment : LPWSTR;
      dwNameSpace : DWORD;
      lpNSProviderId : LPGUID;
      lpszContext : LPWSTR;
      dwNumberOfProtocols : DWORD;
      lpafpProtocols : LPAFPROTOCOLS;
      lpszQueryString : LPWSTR;
      dwNumberOfCsAddrs : DWORD;
      lpcsaBuffer : LPCSADDR_INFO;
      dwOutputFlags : DWORD;
      lpBlob_x : LPBLOB;
   end record;
   pragma Convention (C_Pass_By_Copy,WSAQuerySet2W_x);
   for WSAQuerySet2W_x use record
      dwSize at 0 range 0..31;
      lpszServiceInstanceName at 0 range 64..127;
      lpVersion at 0 range 128..191;
      lpszComment at 0 range 192..255;
      dwNameSpace at 0 range 256..287;
      lpNSProviderId at 0 range 320..383;
      lpszContext at 0 range 384..447;
      dwNumberOfProtocols at 0 range 448..479;
      lpafpProtocols at 0 range 512..575;
      lpszQueryString at 0 range 576..639;
      dwNumberOfCsAddrs at 0 range 640..671;
      lpcsaBuffer at 0 range 704..767;
      dwOutputFlags at 0 range 768..799;
      lpBlob_x at 0 range 832..895;
   end record;
   for WSAQuerySet2W_x'Size use 896;
   for WSAQuerySet2W_x'Alignment use 8;
   subtype WSAQUERYSET2W is WSAQuerySet2W_x;
   type PWSAQUERYSET2W is access all WSAQuerySet2W_x;
   type LPWSAQUERYSET2W is access all WSAQuerySet2W_x;
   subtype WSAQUERYSET is WSAQUERYSETA;
   subtype PWSAQUERYSET is PWSAQUERYSETA;
   subtype LPWSAQUERYSET is LPWSAQUERYSETA;
   subtype WSAQUERYSET2 is WSAQUERYSET2A;
   subtype PWSAQUERYSET2 is PWSAQUERYSET2A;
   subtype LPWSAQUERYSET2 is LPWSAQUERYSET2A;
   type WSAESETSERVICEOP_x is (
      RNRSERVICE_REGISTER,
      RNRSERVICE_DEREGISTER,
      RNRSERVICE_DELETE
   );
   for WSAESETSERVICEOP_x use (
      RNRSERVICE_REGISTER => 0,
      RNRSERVICE_DEREGISTER => 1,
      RNRSERVICE_DELETE => 2
   );
   for WSAESETSERVICEOP_x'Size use 32;
   subtype WSAESETSERVICEOP is WSAESETSERVICEOP_x;
   type PWSAESETSERVICEOP is access all WSAESETSERVICEOP_x;
   type LPWSAESETSERVICEOP is access all WSAESETSERVICEOP_x;
   type WSANSClassInfoA_x is record
      lpszName : LPSTR;
      dwNameSpace : DWORD;
      dwValueType : DWORD;
      dwValueSize : DWORD;
      lpValue : LPVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,WSANSClassInfoA_x);
   for WSANSClassInfoA_x use record
      lpszName at 0 range 0..63;
      dwNameSpace at 0 range 64..95;
      dwValueType at 0 range 96..127;
      dwValueSize at 0 range 128..159;
      lpValue at 0 range 192..255;
   end record;
   for WSANSClassInfoA_x'Size use 256;
   for WSANSClassInfoA_x'Alignment use 8;
   subtype WSANSCLASSINFOA is WSANSClassInfoA_x;
   type PWSANSCLASSINFOA is access all WSANSClassInfoA_x;
   type LPWSANSCLASSINFOA is access all WSANSClassInfoA_x;
   type WSANSClassInfoW_x is record
      lpszName : LPWSTR;
      dwNameSpace : DWORD;
      dwValueType : DWORD;
      dwValueSize : DWORD;
      lpValue : LPVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,WSANSClassInfoW_x);
   for WSANSClassInfoW_x use record
      lpszName at 0 range 0..63;
      dwNameSpace at 0 range 64..95;
      dwValueType at 0 range 96..127;
      dwValueSize at 0 range 128..159;
      lpValue at 0 range 192..255;
   end record;
   for WSANSClassInfoW_x'Size use 256;
   for WSANSClassInfoW_x'Alignment use 8;
   subtype WSANSCLASSINFOW is WSANSClassInfoW_x;
   type PWSANSCLASSINFOW is access all WSANSClassInfoW_x;
   type LPWSANSCLASSINFOW is access all WSANSClassInfoW_x;
   subtype WSANSCLASSINFO is WSANSCLASSINFOA;
   subtype PWSANSCLASSINFO is PWSANSCLASSINFOA;
   subtype LPWSANSCLASSINFO is LPWSANSCLASSINFOA;
   type WSAServiceClassInfoA_x is record
      lpServiceClassId : LPGUID;
      lpszServiceClassName : LPSTR;
      dwCount : DWORD;
      lpClassInfos : LPWSANSCLASSINFOA;
   end record;
   pragma Convention (C_Pass_By_Copy,WSAServiceClassInfoA_x);
   for WSAServiceClassInfoA_x use record
      lpServiceClassId at 0 range 0..63;
      lpszServiceClassName at 0 range 64..127;
      dwCount at 0 range 128..159;
      lpClassInfos at 0 range 192..255;
   end record;
   for WSAServiceClassInfoA_x'Size use 256;
   for WSAServiceClassInfoA_x'Alignment use 8;
   subtype WSASERVICECLASSINFOA is WSAServiceClassInfoA_x;
   type PWSASERVICECLASSINFOA is access all WSAServiceClassInfoA_x;
   type LPWSASERVICECLASSINFOA is access all WSAServiceClassInfoA_x;
   type WSAServiceClassInfoW_x is record
      lpServiceClassId : LPGUID;
      lpszServiceClassName : LPWSTR;
      dwCount : DWORD;
      lpClassInfos : LPWSANSCLASSINFOW;
   end record;
   pragma Convention (C_Pass_By_Copy,WSAServiceClassInfoW_x);
   for WSAServiceClassInfoW_x use record
      lpServiceClassId at 0 range 0..63;
      lpszServiceClassName at 0 range 64..127;
      dwCount at 0 range 128..159;
      lpClassInfos at 0 range 192..255;
   end record;
   for WSAServiceClassInfoW_x'Size use 256;
   for WSAServiceClassInfoW_x'Alignment use 8;
   subtype WSASERVICECLASSINFOW is WSAServiceClassInfoW_x;
   type PWSASERVICECLASSINFOW is access all WSAServiceClassInfoW_x;
   type LPWSASERVICECLASSINFOW is access all WSAServiceClassInfoW_x;
   subtype WSASERVICECLASSINFO is WSASERVICECLASSINFOA;
   subtype PWSASERVICECLASSINFO is PWSASERVICECLASSINFOA;
   subtype LPWSASERVICECLASSINFO is LPWSASERVICECLASSINFOA;
   type WSANAMESPACE_INFOA_x is record
      NSProviderId : GUID;
      dwNameSpace : DWORD;
      fActive : BOOL;
      dwVersion : DWORD;
      lpszIdentifier : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,WSANAMESPACE_INFOA_x);
   for WSANAMESPACE_INFOA_x use record
      NSProviderId at 0 range 0..127;
      dwNameSpace at 0 range 128..159;
      fActive at 0 range 160..191;
      dwVersion at 0 range 192..223;
      lpszIdentifier at 0 range 256..319;
   end record;
   for WSANAMESPACE_INFOA_x'Size use 320;
   for WSANAMESPACE_INFOA_x'Alignment use 8;
   subtype WSANAMESPACE_INFOA is WSANAMESPACE_INFOA_x;
   type PWSANAMESPACE_INFOA is access all WSANAMESPACE_INFOA_x;
   type LPWSANAMESPACE_INFOA is access all WSANAMESPACE_INFOA_x;
   type WSANAMESPACE_INFOW_x is record
      NSProviderId : GUID;
      dwNameSpace : DWORD;
      fActive : BOOL;
      dwVersion : DWORD;
      lpszIdentifier : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,WSANAMESPACE_INFOW_x);
   for WSANAMESPACE_INFOW_x use record
      NSProviderId at 0 range 0..127;
      dwNameSpace at 0 range 128..159;
      fActive at 0 range 160..191;
      dwVersion at 0 range 192..223;
      lpszIdentifier at 0 range 256..319;
   end record;
   for WSANAMESPACE_INFOW_x'Size use 320;
   for WSANAMESPACE_INFOW_x'Alignment use 8;
   subtype WSANAMESPACE_INFOW is WSANAMESPACE_INFOW_x;
   type PWSANAMESPACE_INFOW is access all WSANAMESPACE_INFOW_x;
   type LPWSANAMESPACE_INFOW is access all WSANAMESPACE_INFOW_x;
   type WSANAMESPACE_INFOEXA_x is record
      NSProviderId : GUID;
      dwNameSpace : DWORD;
      fActive : BOOL;
      dwVersion : DWORD;
      lpszIdentifier : LPSTR;
      ProviderSpecific : BLOB;
   end record;
   pragma Convention (C_Pass_By_Copy,WSANAMESPACE_INFOEXA_x);
   for WSANAMESPACE_INFOEXA_x use record
      NSProviderId at 0 range 0..127;
      dwNameSpace at 0 range 128..159;
      fActive at 0 range 160..191;
      dwVersion at 0 range 192..223;
      lpszIdentifier at 0 range 256..319;
      ProviderSpecific at 0 range 320..447;
   end record;
   for WSANAMESPACE_INFOEXA_x'Size use 448;
   for WSANAMESPACE_INFOEXA_x'Alignment use 8;
   subtype WSANAMESPACE_INFOEXA is WSANAMESPACE_INFOEXA_x;
   type PWSANAMESPACE_INFOEXA is access all WSANAMESPACE_INFOEXA_x;
   type LPWSANAMESPACE_INFOEXA is access all WSANAMESPACE_INFOEXA_x;
   type WSANAMESPACE_INFOEXW_x is record
      NSProviderId : GUID;
      dwNameSpace : DWORD;
      fActive : BOOL;
      dwVersion : DWORD;
      lpszIdentifier : LPWSTR;
      ProviderSpecific : BLOB;
   end record;
   pragma Convention (C_Pass_By_Copy,WSANAMESPACE_INFOEXW_x);
   for WSANAMESPACE_INFOEXW_x use record
      NSProviderId at 0 range 0..127;
      dwNameSpace at 0 range 128..159;
      fActive at 0 range 160..191;
      dwVersion at 0 range 192..223;
      lpszIdentifier at 0 range 256..319;
      ProviderSpecific at 0 range 320..447;
   end record;
   for WSANAMESPACE_INFOEXW_x'Size use 448;
   for WSANAMESPACE_INFOEXW_x'Alignment use 8;
   subtype WSANAMESPACE_INFOEXW is WSANAMESPACE_INFOEXW_x;
   type PWSANAMESPACE_INFOEXW is access all WSANAMESPACE_INFOEXW_x;
   type LPWSANAMESPACE_INFOEXW is access all WSANAMESPACE_INFOEXW_x;
   subtype WSANAMESPACE_INFO is WSANAMESPACE_INFOA;
   subtype PWSANAMESPACE_INFO is PWSANAMESPACE_INFOA;
   subtype LPWSANAMESPACE_INFO is LPWSANAMESPACE_INFOA;
   subtype WSANAMESPACE_INFOEX is WSANAMESPACE_INFOEXA;
   subtype PWSANAMESPACE_INFOEX is PWSANAMESPACE_INFOEXA;
   subtype LPWSANAMESPACE_INFOEX is LPWSANAMESPACE_INFOEXA;
   type pollfd is record
      fd : SOCKET;
      events : SHORT;
      revents : SHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,pollfd);
   for pollfd use record
      fd at 0 range 0..63;
      events at 0 range 64..79;
      revents at 0 range 80..95;
   end record;
   for pollfd'Size use 128;
   for pollfd'Alignment use 8;
   subtype WSAPOLLFD is pollfd;
   type PWSAPOLLFD is access all pollfd;
   type LPWSAPOLLFD is access all pollfd;
   function accept_x(
      s : SOCKET;
      addr : access sockaddr;
      addrlen : access Interfaces.C.Int
   ) return SOCKET;
   pragma import (Cpp,accept_x,"accept");
   function bind(
      s : SOCKET;
      name : access constant sockaddr;
      namelen : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,bind,"bind");
   function closesocket(
      s : SOCKET
   ) return Interfaces.C.Int;
   pragma import (Cpp,closesocket,"closesocket");
   function connect(
      s : SOCKET;
      name : access constant sockaddr;
      namelen : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,connect,"connect");
   function ioctlsocket(
      s : SOCKET;
      cmd : Interfaces.C.Long;
      argp : access u_long
   ) return Interfaces.C.Int;
   pragma import (Cpp,ioctlsocket,"ioctlsocket");
   function getpeername(
      s : SOCKET;
      name : access sockaddr;
      namelen : access Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,getpeername,"getpeername");
   function getsockname(
      s : SOCKET;
      name : access sockaddr;
      namelen : access Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,getsockname,"getsockname");
   function getsockopt(
      s : SOCKET;
      level : Interfaces.C.Int;
      optname : Interfaces.C.Int;
      optval : access Character;
      optlen : access Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,getsockopt,"getsockopt");
   function htonl(
      hostlong : u_long
   ) return u_long;
   pragma import (Cpp,htonl,"htonl");
   function htons(
      hostshort : u_short
   ) return u_short;
   pragma import (Cpp,htons,"htons");
   function inet_addr(
      cp : access Character
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,inet_addr,"inet_addr");
   function inet_ntoa(
      in_x : in_addr
   ) return LPSTR;
   pragma import (Cpp,inet_ntoa,"inet_ntoa");
   -- htonll(); -- inlined function not supported
   -- ntohll(); -- inlined function not supported
   -- htonf(); -- inlined function not supported
   -- ntohf(); -- inlined function not supported
   -- htond(); -- inlined function not supported
   -- ntohd(); -- inlined function not supported
   function listen(
      s : SOCKET;
      backlog : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,listen,"listen");
   function ntohl(
      netlong : u_long
   ) return u_long;
   pragma import (Cpp,ntohl,"ntohl");
   function ntohs(
      netshort : u_short
   ) return u_short;
   pragma import (Cpp,ntohs,"ntohs");
   function recv(
      s : SOCKET;
      buf : access Character;
      len : Interfaces.C.Int;
      flags : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,recv,"recv");
   function recvfrom(
      s : SOCKET;
      buf : access Character;
      len : Interfaces.C.Int;
      flags : Interfaces.C.Int;
      from : access sockaddr;
      fromlen : access Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,recvfrom,"recvfrom");
   function select_x(
      nfds : Interfaces.C.Int;
      readfds : access fd_set;
      writefds : access fd_set;
      exceptfds : access fd_set;
      timeout : access constant timeval
   ) return Interfaces.C.Int;
   pragma import (Cpp,select_x,"select");
   function send(
      s : SOCKET;
      buf : access Character;
      len : Interfaces.C.Int;
      flags : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,send,"send");
   function sendto(
      s : SOCKET;
      buf : access Character;
      len : Interfaces.C.Int;
      flags : Interfaces.C.Int;
      to : access constant sockaddr;
      tolen : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,sendto,"sendto");
   function setsockopt(
      s : SOCKET;
      level : Interfaces.C.Int;
      optname : Interfaces.C.Int;
      optval : access Character;
      optlen : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,setsockopt,"setsockopt");
   function shutdown(
      s : SOCKET;
      how : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,shutdown,"shutdown");
   function socket_x(
      af : Interfaces.C.Int;
      type_x : Interfaces.C.Int;
      protocol : Interfaces.C.Int
   ) return SOCKET;
   pragma import (Cpp,socket_x,"socket");
   function gethostbyaddr(
      addr : access Character;
      len : Interfaces.C.Int;
      type_x : Interfaces.C.Int
   ) return access hostent;
   pragma import (Cpp,gethostbyaddr,"gethostbyaddr");
   function gethostbyname(
      name : access Character
   ) return access hostent;
   pragma import (Cpp,gethostbyname,"gethostbyname");
   function gethostname(
      name : access Character;
      namelen : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,gethostname,"gethostname");
   function GetHostNameW(
      name : PWSTR;
      namelen : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,GetHostNameW,"GetHostNameW");
   function getservbyport(
      port : Interfaces.C.Int;
      proto : access Character
   ) return access servent;
   pragma import (Cpp,getservbyport,"getservbyport");
   function getservbyname(
      name : access Character;
      proto : access Character
   ) return access servent;
   pragma import (Cpp,getservbyname,"getservbyname");
   function getprotobynumber(
      number : Interfaces.C.Int
   ) return access protoent;
   pragma import (Cpp,getprotobynumber,"getprotobynumber");
   function getprotobyname(
      name : access Character
   ) return access protoent;
   pragma import (Cpp,getprotobyname,"getprotobyname");
   function WSAStartup(
      wVersionRequested : WORD;
      lpWSAData_x : LPWSADATA
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSAStartup,"WSAStartup");
   function WSACleanup return Interfaces.C.Int;
   pragma import (Cpp,WSACleanup,"WSACleanup");
   procedure WSASetLastError(
      iError : Interfaces.C.Int
   );
   pragma import (Cpp,WSASetLastError,"WSASetLastError");
   function WSAGetLastError return Interfaces.C.Int;
   pragma import (Cpp,WSAGetLastError,"WSAGetLastError");
   function WSAIsBlocking return BOOL;
   pragma import (Cpp,WSAIsBlocking,"WSAIsBlocking");
   function WSAUnhookBlockingHook return Interfaces.C.Int;
   pragma import (Cpp,WSAUnhookBlockingHook,"WSAUnhookBlockingHook");
   function WSASetBlockingHook(
      lpBlockFunc : FARPROC
   ) return FARPROC;
   pragma import (Cpp,WSASetBlockingHook,"WSASetBlockingHook");
   function WSACancelBlockingCall return Interfaces.C.Int;
   pragma import (Cpp,WSACancelBlockingCall,"WSACancelBlockingCall");
   function WSAAsyncGetServByName(
      hWnd_x : HWND;
      wMsg : u_int;
      name : access Character;
      proto : access Character;
      buf : access Character;
      buflen : Interfaces.C.Int
   ) return HANDLE;
   pragma import (Cpp,WSAAsyncGetServByName,"WSAAsyncGetServByName");
   function WSAAsyncGetServByPort(
      hWnd_x : HWND;
      wMsg : u_int;
      port : Interfaces.C.Int;
      proto : access Character;
      buf : access Character;
      buflen : Interfaces.C.Int
   ) return HANDLE;
   pragma import (Cpp,WSAAsyncGetServByPort,"WSAAsyncGetServByPort");
   function WSAAsyncGetProtoByName(
      hWnd_x : HWND;
      wMsg : u_int;
      name : access Character;
      buf : access Character;
      buflen : Interfaces.C.Int
   ) return HANDLE;
   pragma import (Cpp,WSAAsyncGetProtoByName,"WSAAsyncGetProtoByName");
   function WSAAsyncGetProtoByNumber(
      hWnd_x : HWND;
      wMsg : u_int;
      number : Interfaces.C.Int;
      buf : access Character;
      buflen : Interfaces.C.Int
   ) return HANDLE;
   pragma import (Cpp,WSAAsyncGetProtoByNumber,"WSAAsyncGetProtoByNumber");
   function WSAAsyncGetHostByName(
      hWnd_x : HWND;
      wMsg : u_int;
      name : access Character;
      buf : access Character;
      buflen : Interfaces.C.Int
   ) return HANDLE;
   pragma import (Cpp,WSAAsyncGetHostByName,"WSAAsyncGetHostByName");
   function WSAAsyncGetHostByAddr(
      hWnd_x : HWND;
      wMsg : u_int;
      addr : access Character;
      len : Interfaces.C.Int;
      type_x : Interfaces.C.Int;
      buf : access Character;
      buflen : Interfaces.C.Int
   ) return HANDLE;
   pragma import (Cpp,WSAAsyncGetHostByAddr,"WSAAsyncGetHostByAddr");
   function WSACancelAsyncRequest(
      hAsyncTaskHandle : HANDLE
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSACancelAsyncRequest,"WSACancelAsyncRequest");
   function WSAAsyncSelect(
      s : SOCKET;
      hWnd_x : HWND;
      wMsg : u_int;
      lEvent : Interfaces.C.Long
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSAAsyncSelect,"WSAAsyncSelect");
   function WSAAccept(
      s : SOCKET;
      addr : access sockaddr;
      addrlen : LPINT;
      lpfnCondition : LPCONDITIONPROC;
      dwCallbackData : DWORD_PTR
   ) return SOCKET;
   pragma import (Cpp,WSAAccept,"WSAAccept");
   function WSACloseEvent(
      hEvent : HANDLE
   ) return BOOL;
   pragma import (Cpp,WSACloseEvent,"WSACloseEvent");
   function WSAConnect(
      s : SOCKET;
      name : access constant sockaddr;
      namelen : Interfaces.C.Int;
      lpCallerData : LPWSABUF;
      lpCalleeData : LPWSABUF;
      lpSQOS : LPQOS;
      lpGQOS : LPQOS
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSAConnect,"WSAConnect");
   function WSAConnectByNameW(
      s : SOCKET;
      nodename : LPWSTR;
      servicename : LPWSTR;
      LocalAddressLength : LPDWORD;
      LocalAddress : LPSOCKADDR;
      RemoteAddressLength : LPDWORD;
      RemoteAddress : LPSOCKADDR;
      timeout : access constant timeval;
      Reserved : LPWSAOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,WSAConnectByNameW,"WSAConnectByNameW");
   function WSAConnectByNameA(
      s : SOCKET;
      nodename : LPCSTR;
      servicename : LPCSTR;
      LocalAddressLength : LPDWORD;
      LocalAddress : LPSOCKADDR;
      RemoteAddressLength : LPDWORD;
      RemoteAddress : LPSOCKADDR;
      timeout : access constant timeval;
      Reserved : LPWSAOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,WSAConnectByNameA,"WSAConnectByNameA");
   function WSAConnectByList(
      s : SOCKET;
      SocketAddress : PSOCKET_ADDRESS_LIST;
      LocalAddressLength : LPDWORD;
      LocalAddress : LPSOCKADDR;
      RemoteAddressLength : LPDWORD;
      RemoteAddress : LPSOCKADDR;
      timeout : access constant timeval;
      Reserved : LPWSAOVERLAPPED
   ) return BOOL;
   pragma import (Cpp,WSAConnectByList,"WSAConnectByList");
   function WSACreateEvent return HANDLE;
   pragma import (Cpp,WSACreateEvent,"WSACreateEvent");
   function WSADuplicateSocketA(
      s : SOCKET;
      dwProcessId : DWORD;
      lpProtocolInfo : LPWSAPROTOCOL_INFOA
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSADuplicateSocketA,"WSADuplicateSocketA");
   function WSADuplicateSocketW(
      s : SOCKET;
      dwProcessId : DWORD;
      lpProtocolInfo : LPWSAPROTOCOL_INFOW
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSADuplicateSocketW,"WSADuplicateSocketW");
   function WSAEnumNetworkEvents(
      s : SOCKET;
      hEventObject : HANDLE;
      lpNetworkEvents : LPWSANETWORKEVENTS
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSAEnumNetworkEvents,"WSAEnumNetworkEvents");
   function WSAEnumProtocolsA(
      lpiProtocols : LPINT;
      lpProtocolBuffer : LPWSAPROTOCOL_INFOA;
      lpdwBufferLength : LPDWORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSAEnumProtocolsA,"WSAEnumProtocolsA");
   function WSAEnumProtocolsW(
      lpiProtocols : LPINT;
      lpProtocolBuffer : LPWSAPROTOCOL_INFOW;
      lpdwBufferLength : LPDWORD
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSAEnumProtocolsW,"WSAEnumProtocolsW");
   function WSAEventSelect(
      s : SOCKET;
      hEventObject : HANDLE;
      lNetworkEvents : Interfaces.C.Long
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSAEventSelect,"WSAEventSelect");
   function WSAGetOverlappedResult(
      s : SOCKET;
      lpOverlapped_x : LPWSAOVERLAPPED;
      lpcbTransfer : LPDWORD;
      fWait : BOOL;
      lpdwFlags : LPDWORD
   ) return BOOL;
   pragma import (Cpp,WSAGetOverlappedResult,"WSAGetOverlappedResult");
   function WSAGetQOSByName(
      s : SOCKET;
      lpQOSName : LPWSABUF;
      lpQOS_x : LPQOS
   ) return BOOL;
   pragma import (Cpp,WSAGetQOSByName,"WSAGetQOSByName");
   function WSAHtonl(
      s : SOCKET;
      hostlong : u_long;
      lpnetlong : access u_long
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSAHtonl,"WSAHtonl");
   function WSAHtons(
      s : SOCKET;
      hostshort : u_short;
      lpnetshort : access u_short
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSAHtons,"WSAHtons");
   function WSAIoctl(
      s : SOCKET;
      dwIoControlCode : DWORD;
      lpvInBuffer : LPVOID;
      cbInBuffer : DWORD;
      lpvOutBuffer : LPVOID;
      cbOutBuffer : DWORD;
      lpcbBytesReturned : LPDWORD;
      lpOverlapped_x : LPWSAOVERLAPPED;
      lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSAIoctl,"WSAIoctl");
   function WSAJoinLeaf(
      s : SOCKET;
      name : access constant sockaddr;
      namelen : Interfaces.C.Int;
      lpCallerData : LPWSABUF;
      lpCalleeData : LPWSABUF;
      lpSQOS : LPQOS;
      lpGQOS : LPQOS;
      dwFlags : DWORD
   ) return SOCKET;
   pragma import (Cpp,WSAJoinLeaf,"WSAJoinLeaf");
   function WSANtohl(
      s : SOCKET;
      netlong : u_long;
      lphostlong : access u_long
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSANtohl,"WSANtohl");
   function WSANtohs(
      s : SOCKET;
      netshort : u_short;
      lphostshort : access u_short
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSANtohs,"WSANtohs");
   function WSARecv(
      s : SOCKET;
      lpBuffers : LPWSABUF;
      dwBufferCount : DWORD;
      lpNumberOfBytesRecvd : LPDWORD;
      lpFlags : LPDWORD;
      lpOverlapped_x : LPWSAOVERLAPPED;
      lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSARecv,"WSARecv");
   function WSARecvDisconnect(
      s : SOCKET;
      lpInboundDisconnectData : LPWSABUF
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSARecvDisconnect,"WSARecvDisconnect");
   function WSARecvFrom(
      s : SOCKET;
      lpBuffers : LPWSABUF;
      dwBufferCount : DWORD;
      lpNumberOfBytesRecvd : LPDWORD;
      lpFlags : LPDWORD;
      lpFrom : access sockaddr;
      lpFromlen : LPINT;
      lpOverlapped_x : LPWSAOVERLAPPED;
      lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSARecvFrom,"WSARecvFrom");
   function WSAResetEvent(
      hEvent : HANDLE
   ) return BOOL;
   pragma import (Cpp,WSAResetEvent,"WSAResetEvent");
   function WSASend(
      s : SOCKET;
      lpBuffers : LPWSABUF;
      dwBufferCount : DWORD;
      lpNumberOfBytesSent : LPDWORD;
      dwFlags : DWORD;
      lpOverlapped_x : LPWSAOVERLAPPED;
      lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSASend,"WSASend");
   function WSASendMsg(
      Handle_x : SOCKET;
      lpMsg_x : LPWSAMSG;
      dwFlags : DWORD;
      lpNumberOfBytesSent : LPDWORD;
      lpOverlapped_x : LPWSAOVERLAPPED;
      lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSASendMsg,"WSASendMsg");
   function WSASendDisconnect(
      s : SOCKET;
      lpOutboundDisconnectData : LPWSABUF
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSASendDisconnect,"WSASendDisconnect");
   function WSASendTo(
      s : SOCKET;
      lpBuffers : LPWSABUF;
      dwBufferCount : DWORD;
      lpNumberOfBytesSent : LPDWORD;
      dwFlags : DWORD;
      lpTo : access constant sockaddr;
      iTolen : Interfaces.C.Int;
      lpOverlapped_x : LPWSAOVERLAPPED;
      lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSASendTo,"WSASendTo");
   function WSASetEvent(
      hEvent : HANDLE
   ) return BOOL;
   pragma import (Cpp,WSASetEvent,"WSASetEvent");
   function WSASocketA(
      af : Interfaces.C.Int;
      type_x : Interfaces.C.Int;
      protocol : Interfaces.C.Int;
      lpProtocolInfo : LPWSAPROTOCOL_INFOA;
      g : GROUP;
      dwFlags : DWORD
   ) return SOCKET;
   pragma import (Cpp,WSASocketA,"WSASocketA");
   function WSASocketW(
      af : Interfaces.C.Int;
      type_x : Interfaces.C.Int;
      protocol : Interfaces.C.Int;
      lpProtocolInfo : LPWSAPROTOCOL_INFOW;
      g : GROUP;
      dwFlags : DWORD
   ) return SOCKET;
   pragma import (Cpp,WSASocketW,"WSASocketW");
   function WSAWaitForMultipleEvents(
      cEvents : DWORD;
      lphEvents : access constant HANDLE;
      fWaitAll : BOOL;
      dwTimeout : DWORD;
      fAlertable : BOOL
   ) return DWORD;
   pragma import (Cpp,WSAWaitForMultipleEvents,"WSAWaitForMultipleEvents");
   function WSAAddressToStringA(
      lpsaAddress : LPSOCKADDR;
      dwAddressLength : DWORD;
      lpProtocolInfo : LPWSAPROTOCOL_INFOA;
      lpszAddressString : LPSTR;
      lpdwAddressStringLength : LPDWORD
   ) return INT;
   pragma import (Cpp,WSAAddressToStringA,"WSAAddressToStringA");
   function WSAAddressToStringW(
      lpsaAddress : LPSOCKADDR;
      dwAddressLength : DWORD;
      lpProtocolInfo : LPWSAPROTOCOL_INFOW;
      lpszAddressString : LPWSTR;
      lpdwAddressStringLength : LPDWORD
   ) return INT;
   pragma import (Cpp,WSAAddressToStringW,"WSAAddressToStringW");
   function WSAStringToAddressA(
      AddressString : LPSTR;
      AddressFamily : INT;
      lpProtocolInfo : LPWSAPROTOCOL_INFOA;
      lpAddress : LPSOCKADDR;
      lpAddressLength : LPINT
   ) return INT;
   pragma import (Cpp,WSAStringToAddressA,"WSAStringToAddressA");
   function WSAStringToAddressW(
      AddressString : LPWSTR;
      AddressFamily : INT;
      lpProtocolInfo : LPWSAPROTOCOL_INFOW;
      lpAddress : LPSOCKADDR;
      lpAddressLength : LPINT
   ) return INT;
   pragma import (Cpp,WSAStringToAddressW,"WSAStringToAddressW");
   function WSALookupServiceBeginA(
      lpqsRestrictions : LPWSAQUERYSETA;
      dwControlFlags : DWORD;
      lphLookup : LPHANDLE
   ) return INT;
   pragma import (Cpp,WSALookupServiceBeginA,"WSALookupServiceBeginA");
   function WSALookupServiceBeginW(
      lpqsRestrictions : LPWSAQUERYSETW;
      dwControlFlags : DWORD;
      lphLookup : LPHANDLE
   ) return INT;
   pragma import (Cpp,WSALookupServiceBeginW,"WSALookupServiceBeginW");
   function WSALookupServiceNextA(
      hLookup : HANDLE;
      dwControlFlags : DWORD;
      lpdwBufferLength : LPDWORD;
      lpqsResults : LPWSAQUERYSETA
   ) return INT;
   pragma import (Cpp,WSALookupServiceNextA,"WSALookupServiceNextA");
   function WSALookupServiceNextW(
      hLookup : HANDLE;
      dwControlFlags : DWORD;
      lpdwBufferLength : LPDWORD;
      lpqsResults : LPWSAQUERYSETW
   ) return INT;
   pragma import (Cpp,WSALookupServiceNextW,"WSALookupServiceNextW");
   function WSANSPIoctl(
      hLookup : HANDLE;
      dwControlCode : DWORD;
      lpvInBuffer : LPVOID;
      cbInBuffer : DWORD;
      lpvOutBuffer : LPVOID;
      cbOutBuffer : DWORD;
      lpcbBytesReturned : LPDWORD;
      lpCompletion : LPWSACOMPLETION
   ) return INT;
   pragma import (Cpp,WSANSPIoctl,"WSANSPIoctl");
   function WSALookupServiceEnd(
      hLookup : HANDLE
   ) return INT;
   pragma import (Cpp,WSALookupServiceEnd,"WSALookupServiceEnd");
   function WSAInstallServiceClassA(
      lpServiceClassInfo : LPWSASERVICECLASSINFOA
   ) return INT;
   pragma import (Cpp,WSAInstallServiceClassA,"WSAInstallServiceClassA");
   function WSAInstallServiceClassW(
      lpServiceClassInfo : LPWSASERVICECLASSINFOW
   ) return INT;
   pragma import (Cpp,WSAInstallServiceClassW,"WSAInstallServiceClassW");
   function WSARemoveServiceClass(
      lpServiceClassId : LPGUID
   ) return INT;
   pragma import (Cpp,WSARemoveServiceClass,"WSARemoveServiceClass");
   function WSAGetServiceClassInfoA(
      lpProviderId : LPGUID;
      lpServiceClassId : LPGUID;
      lpdwBufSize : LPDWORD;
      lpServiceClassInfo : LPWSASERVICECLASSINFOA
   ) return INT;
   pragma import (Cpp,WSAGetServiceClassInfoA,"WSAGetServiceClassInfoA");
   function WSAGetServiceClassInfoW(
      lpProviderId : LPGUID;
      lpServiceClassId : LPGUID;
      lpdwBufSize : LPDWORD;
      lpServiceClassInfo : LPWSASERVICECLASSINFOW
   ) return INT;
   pragma import (Cpp,WSAGetServiceClassInfoW,"WSAGetServiceClassInfoW");
   function WSAEnumNameSpaceProvidersA(
      lpdwBufferLength : LPDWORD;
      lpnspBuffer : LPWSANAMESPACE_INFOA
   ) return INT;
   pragma import (Cpp,WSAEnumNameSpaceProvidersA,"WSAEnumNameSpaceProvidersA");
   function WSAEnumNameSpaceProvidersW(
      lpdwBufferLength : LPDWORD;
      lpnspBuffer : LPWSANAMESPACE_INFOW
   ) return INT;
   pragma import (Cpp,WSAEnumNameSpaceProvidersW,"WSAEnumNameSpaceProvidersW");
   function WSAEnumNameSpaceProvidersExA(
      lpdwBufferLength : LPDWORD;
      lpnspBuffer : LPWSANAMESPACE_INFOEXA
   ) return INT;
   pragma import (Cpp,WSAEnumNameSpaceProvidersExA,"WSAEnumNameSpaceProvidersExA");
   function WSAEnumNameSpaceProvidersExW(
      lpdwBufferLength : LPDWORD;
      lpnspBuffer : LPWSANAMESPACE_INFOEXW
   ) return INT;
   pragma import (Cpp,WSAEnumNameSpaceProvidersExW,"WSAEnumNameSpaceProvidersExW");
   function WSAGetServiceClassNameByClassIdA(
      lpServiceClassId : LPGUID;
      lpszServiceClassName : LPSTR;
      lpdwBufferLength : LPDWORD
   ) return INT;
   pragma import (Cpp,WSAGetServiceClassNameByClassIdA,"WSAGetServiceClassNameByClassIdA");
   function WSAGetServiceClassNameByClassIdW(
      lpServiceClassId : LPGUID;
      lpszServiceClassName : LPWSTR;
      lpdwBufferLength : LPDWORD
   ) return INT;
   pragma import (Cpp,WSAGetServiceClassNameByClassIdW,"WSAGetServiceClassNameByClassIdW");
   function WSASetServiceA(
      lpqsRegInfo : LPWSAQUERYSETA;
      essoperation : WSAESETSERVICEOP;
      dwControlFlags : DWORD
   ) return INT;
   pragma import (Cpp,WSASetServiceA,"WSASetServiceA");
   function WSASetServiceW(
      lpqsRegInfo : LPWSAQUERYSETW;
      essoperation : WSAESETSERVICEOP;
      dwControlFlags : DWORD
   ) return INT;
   pragma import (Cpp,WSASetServiceW,"WSASetServiceW");
   function WSAProviderConfigChange(
      lpNotificationHandle : LPHANDLE;
      lpOverlapped_x : LPWSAOVERLAPPED;
      lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE
   ) return INT;
   pragma import (Cpp,WSAProviderConfigChange,"WSAProviderConfigChange");
   function WSAPoll(
      fdArray : LPWSAPOLLFD;
      fds : ULONG;
      timeout : INT
   ) return Interfaces.C.Int;
   pragma import (Cpp,WSAPoll,"WSAPoll");
   type LPSOCKADDR_IN is access all sockaddr_in;
   -- subtype LINGER is linger; --  [Note: Type already defined (case sensitive issue)]
   type PLINGER is access all linger;
   type LPLINGER is access all linger;
   -- subtype FD_SET is fd_set; --  [Note: Type already defined (case sensitive issue)]
   type PFD_SET is access all fd_set;
   type LPFD_SET is access all fd_set;
   -- subtype HOSTENT is hostent; --  [Note: Type already defined (case sensitive issue)]
   type PHOSTENT is access all hostent;
   type LPHOSTENT is access all hostent;
   -- subtype SERVENT is servent; --  [Note: Type already defined (case sensitive issue)]
   type PSERVENT is access all servent;
   type LPSERVENT is access all servent;
   -- subtype PROTOENT is protoent; --  [Note: Type already defined (case sensitive issue)]
   type PPROTOENT is access all protoent;
   type LPPROTOENT is access all protoent;
   -- subtype TIMEVAL is timeval; --  [Note: Type already defined (case sensitive issue)]
   type PTIMEVAL is access all timeval;
   type LPTIMEVAL is access all timeval;
   -- #include <prsht.h>
   type PSP_x;
   type HPROPSHEETPAGE is access all PSP_x;
   type PROPSHEETPAGEA_x;
   type PROPSHEETPAGEW_x;
   type LPFNPSPCALLBACKA is access function (p1 : HWND ; p2 : UINT ; p3 : access PROPSHEETPAGEA_x) return UINT; -- UINT (HWND, UINT, struct _PROPSHEETPAGEA *)
   pragma Convention(C,LPFNPSPCALLBACKA);
   type LPFNPSPCALLBACKW is access function (p1 : HWND ; p2 : UINT ; p3 : access PROPSHEETPAGEW_x) return UINT; -- UINT (HWND, UINT, struct _PROPSHEETPAGEW *)
   pragma Convention(C,LPFNPSPCALLBACKW);
   subtype PROPSHEETPAGE_RESOURCE is LPCDLGTEMPLATE;
   type Anonymous_Record_216 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            pszTemplate : LPCSTR;
         when others => 
            pResource : PROPSHEETPAGE_RESOURCE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_216);
   pragma Unchecked_Union (Anonymous_Record_216);
   for Anonymous_Record_216'Size use 64;
   for Anonymous_Record_216'Alignment use 8;
   type Anonymous_Record_217 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HICON;
         when others => 
            pszIcon : LPCSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_217);
   pragma Unchecked_Union (Anonymous_Record_217);
   for Anonymous_Record_217'Size use 64;
   for Anonymous_Record_217'Alignment use 8;
   type PROPSHEETPAGEA_V1_x is record
      dwSize : DWORD;
      dwFlags : DWORD;
      hInstance_x : HINSTANCE;
      field_1 : Anonymous_Record_216;
      field_2 : Anonymous_Record_217;
      pszTitle : LPCSTR;
      pfnDlgProc : DLGPROC;
      lParam_x : LPARAM;
      pfnCallback : LPFNPSPCALLBACKA;
      pcRefParent : access UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,PROPSHEETPAGEA_V1_x);
   for PROPSHEETPAGEA_V1_x use record
      dwSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hInstance_x at 0 range 64..127;
      field_1 at 0 range 128..191;
      field_2 at 0 range 192..255;
      pszTitle at 0 range 256..319;
      pfnDlgProc at 0 range 320..383;
      lParam_x at 0 range 384..447;
      pfnCallback at 0 range 448..511;
      pcRefParent at 0 range 512..575;
   end record;
   for PROPSHEETPAGEA_V1_x'Size use 576;
   for PROPSHEETPAGEA_V1_x'Alignment use 8;
   subtype PROPSHEETPAGEA_V1 is PROPSHEETPAGEA_V1_x;
   type LPPROPSHEETPAGEA_V1 is access all PROPSHEETPAGEA_V1_x;
   type LPCPROPSHEETPAGEA_V1 is access constant PROPSHEETPAGEA_V1;
   type Anonymous_Record_218 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            pszTemplate : LPCSTR;
         when others => 
            pResource : PROPSHEETPAGE_RESOURCE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_218);
   pragma Unchecked_Union (Anonymous_Record_218);
   for Anonymous_Record_218'Size use 64;
   for Anonymous_Record_218'Alignment use 8;
   type Anonymous_Record_219 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HICON;
         when others => 
            pszIcon : LPCSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_219);
   pragma Unchecked_Union (Anonymous_Record_219);
   for Anonymous_Record_219'Size use 64;
   for Anonymous_Record_219'Alignment use 8;
   type PROPSHEETPAGEA_V2_x is record
      dwSize : DWORD;
      dwFlags : DWORD;
      hInstance_x : HINSTANCE;
      field_1 : Anonymous_Record_218;
      field_2 : Anonymous_Record_219;
      pszTitle : LPCSTR;
      pfnDlgProc : DLGPROC;
      lParam_x : LPARAM;
      pfnCallback : LPFNPSPCALLBACKA;
      pcRefParent : access UINT;
      pszHeaderTitle : LPCSTR;
      pszHeaderSubTitle : LPCSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PROPSHEETPAGEA_V2_x);
   for PROPSHEETPAGEA_V2_x use record
      dwSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hInstance_x at 0 range 64..127;
      field_1 at 0 range 128..191;
      field_2 at 0 range 192..255;
      pszTitle at 0 range 256..319;
      pfnDlgProc at 0 range 320..383;
      lParam_x at 0 range 384..447;
      pfnCallback at 0 range 448..511;
      pcRefParent at 0 range 512..575;
      pszHeaderTitle at 0 range 576..639;
      pszHeaderSubTitle at 0 range 640..703;
   end record;
   for PROPSHEETPAGEA_V2_x'Size use 704;
   for PROPSHEETPAGEA_V2_x'Alignment use 8;
   subtype PROPSHEETPAGEA_V2 is PROPSHEETPAGEA_V2_x;
   type LPPROPSHEETPAGEA_V2 is access all PROPSHEETPAGEA_V2_x;
   type LPCPROPSHEETPAGEA_V2 is access constant PROPSHEETPAGEA_V2;
   type Anonymous_Record_220 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            pszTemplate : LPCSTR;
         when others => 
            pResource : PROPSHEETPAGE_RESOURCE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_220);
   pragma Unchecked_Union (Anonymous_Record_220);
   for Anonymous_Record_220'Size use 64;
   for Anonymous_Record_220'Alignment use 8;
   type Anonymous_Record_221 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HICON;
         when others => 
            pszIcon : LPCSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_221);
   pragma Unchecked_Union (Anonymous_Record_221);
   for Anonymous_Record_221'Size use 64;
   for Anonymous_Record_221'Alignment use 8;
   type PROPSHEETPAGEA_V3_x is record
      dwSize : DWORD;
      dwFlags : DWORD;
      hInstance_x : HINSTANCE;
      field_1 : Anonymous_Record_220;
      field_2 : Anonymous_Record_221;
      pszTitle : LPCSTR;
      pfnDlgProc : DLGPROC;
      lParam_x : LPARAM;
      pfnCallback : LPFNPSPCALLBACKA;
      pcRefParent : access UINT;
      pszHeaderTitle : LPCSTR;
      pszHeaderSubTitle : LPCSTR;
      hActCtx : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,PROPSHEETPAGEA_V3_x);
   for PROPSHEETPAGEA_V3_x use record
      dwSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hInstance_x at 0 range 64..127;
      field_1 at 0 range 128..191;
      field_2 at 0 range 192..255;
      pszTitle at 0 range 256..319;
      pfnDlgProc at 0 range 320..383;
      lParam_x at 0 range 384..447;
      pfnCallback at 0 range 448..511;
      pcRefParent at 0 range 512..575;
      pszHeaderTitle at 0 range 576..639;
      pszHeaderSubTitle at 0 range 640..703;
      hActCtx at 0 range 704..767;
   end record;
   for PROPSHEETPAGEA_V3_x'Size use 768;
   for PROPSHEETPAGEA_V3_x'Alignment use 8;
   subtype PROPSHEETPAGEA_V3 is PROPSHEETPAGEA_V3_x;
   type LPPROPSHEETPAGEA_V3 is access all PROPSHEETPAGEA_V3_x;
   type LPCPROPSHEETPAGEA_V3 is access constant PROPSHEETPAGEA_V3;
   type Anonymous_Record_222 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            pszTemplate : LPCSTR;
         when others => 
            pResource : PROPSHEETPAGE_RESOURCE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_222);
   pragma Unchecked_Union (Anonymous_Record_222);
   for Anonymous_Record_222'Size use 64;
   for Anonymous_Record_222'Alignment use 8;
   type Anonymous_Record_223 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HICON;
         when others => 
            pszIcon : LPCSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_223);
   pragma Unchecked_Union (Anonymous_Record_223);
   for Anonymous_Record_223'Size use 64;
   for Anonymous_Record_223'Alignment use 8;
   type Anonymous_Record_224 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hbmHeader : HBITMAP;
         when others => 
            pszbmHeader : LPCSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_224);
   pragma Unchecked_Union (Anonymous_Record_224);
   for Anonymous_Record_224'Size use 64;
   for Anonymous_Record_224'Alignment use 8;
   type PROPSHEETPAGEA_x is record
      dwSize : DWORD;
      dwFlags : DWORD;
      hInstance_x : HINSTANCE;
      field_1 : Anonymous_Record_222;
      field_2 : Anonymous_Record_223;
      pszTitle : LPCSTR;
      pfnDlgProc : DLGPROC;
      lParam_x : LPARAM;
      pfnCallback : LPFNPSPCALLBACKA;
      pcRefParent : access UINT;
      pszHeaderTitle : LPCSTR;
      pszHeaderSubTitle : LPCSTR;
      hActCtx : HANDLE;
      field_3 : Anonymous_Record_224;
   end record;
   pragma Convention (C_Pass_By_Copy,PROPSHEETPAGEA_x);
   for PROPSHEETPAGEA_x use record
      dwSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hInstance_x at 0 range 64..127;
      field_1 at 0 range 128..191;
      field_2 at 0 range 192..255;
      pszTitle at 0 range 256..319;
      pfnDlgProc at 0 range 320..383;
      lParam_x at 0 range 384..447;
      pfnCallback at 0 range 448..511;
      pcRefParent at 0 range 512..575;
      pszHeaderTitle at 0 range 576..639;
      pszHeaderSubTitle at 0 range 640..703;
      hActCtx at 0 range 704..767;
      field_3 at 0 range 768..831;
   end record;
   for PROPSHEETPAGEA_x'Size use 832;
   for PROPSHEETPAGEA_x'Alignment use 8;
   subtype PROPSHEETPAGEA_V4 is PROPSHEETPAGEA_x;
   type LPPROPSHEETPAGEA_V4 is access all PROPSHEETPAGEA_x;
   type LPCPROPSHEETPAGEA_V4 is access constant PROPSHEETPAGEA_V4;
   type Anonymous_Record_225 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            pszTemplate : LPCWSTR;
         when others => 
            pResource : PROPSHEETPAGE_RESOURCE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_225);
   pragma Unchecked_Union (Anonymous_Record_225);
   for Anonymous_Record_225'Size use 64;
   for Anonymous_Record_225'Alignment use 8;
   type Anonymous_Record_226 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HICON;
         when others => 
            pszIcon : LPCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_226);
   pragma Unchecked_Union (Anonymous_Record_226);
   for Anonymous_Record_226'Size use 64;
   for Anonymous_Record_226'Alignment use 8;
   type PROPSHEETPAGEW_V1_x is record
      dwSize : DWORD;
      dwFlags : DWORD;
      hInstance_x : HINSTANCE;
      field_1 : Anonymous_Record_225;
      field_2 : Anonymous_Record_226;
      pszTitle : LPCWSTR;
      pfnDlgProc : DLGPROC;
      lParam_x : LPARAM;
      pfnCallback : LPFNPSPCALLBACKW;
      pcRefParent : access UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,PROPSHEETPAGEW_V1_x);
   for PROPSHEETPAGEW_V1_x use record
      dwSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hInstance_x at 0 range 64..127;
      field_1 at 0 range 128..191;
      field_2 at 0 range 192..255;
      pszTitle at 0 range 256..319;
      pfnDlgProc at 0 range 320..383;
      lParam_x at 0 range 384..447;
      pfnCallback at 0 range 448..511;
      pcRefParent at 0 range 512..575;
   end record;
   for PROPSHEETPAGEW_V1_x'Size use 576;
   for PROPSHEETPAGEW_V1_x'Alignment use 8;
   subtype PROPSHEETPAGEW_V1 is PROPSHEETPAGEW_V1_x;
   type LPPROPSHEETPAGEW_V1 is access all PROPSHEETPAGEW_V1_x;
   type LPCPROPSHEETPAGEW_V1 is access constant PROPSHEETPAGEW_V1;
   type Anonymous_Record_227 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            pszTemplate : LPCWSTR;
         when others => 
            pResource : PROPSHEETPAGE_RESOURCE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_227);
   pragma Unchecked_Union (Anonymous_Record_227);
   for Anonymous_Record_227'Size use 64;
   for Anonymous_Record_227'Alignment use 8;
   type Anonymous_Record_228 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HICON;
         when others => 
            pszIcon : LPCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_228);
   pragma Unchecked_Union (Anonymous_Record_228);
   for Anonymous_Record_228'Size use 64;
   for Anonymous_Record_228'Alignment use 8;
   type PROPSHEETPAGEW_V2_x is record
      dwSize : DWORD;
      dwFlags : DWORD;
      hInstance_x : HINSTANCE;
      field_1 : Anonymous_Record_227;
      field_2 : Anonymous_Record_228;
      pszTitle : LPCWSTR;
      pfnDlgProc : DLGPROC;
      lParam_x : LPARAM;
      pfnCallback : LPFNPSPCALLBACKW;
      pcRefParent : access UINT;
      pszHeaderTitle : LPCWSTR;
      pszHeaderSubTitle : LPCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PROPSHEETPAGEW_V2_x);
   for PROPSHEETPAGEW_V2_x use record
      dwSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hInstance_x at 0 range 64..127;
      field_1 at 0 range 128..191;
      field_2 at 0 range 192..255;
      pszTitle at 0 range 256..319;
      pfnDlgProc at 0 range 320..383;
      lParam_x at 0 range 384..447;
      pfnCallback at 0 range 448..511;
      pcRefParent at 0 range 512..575;
      pszHeaderTitle at 0 range 576..639;
      pszHeaderSubTitle at 0 range 640..703;
   end record;
   for PROPSHEETPAGEW_V2_x'Size use 704;
   for PROPSHEETPAGEW_V2_x'Alignment use 8;
   subtype PROPSHEETPAGEW_V2 is PROPSHEETPAGEW_V2_x;
   type LPPROPSHEETPAGEW_V2 is access all PROPSHEETPAGEW_V2_x;
   type LPCPROPSHEETPAGEW_V2 is access constant PROPSHEETPAGEW_V2;
   type Anonymous_Record_229 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            pszTemplate : LPCWSTR;
         when others => 
            pResource : PROPSHEETPAGE_RESOURCE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_229);
   pragma Unchecked_Union (Anonymous_Record_229);
   for Anonymous_Record_229'Size use 64;
   for Anonymous_Record_229'Alignment use 8;
   type Anonymous_Record_230 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HICON;
         when others => 
            pszIcon : LPCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_230);
   pragma Unchecked_Union (Anonymous_Record_230);
   for Anonymous_Record_230'Size use 64;
   for Anonymous_Record_230'Alignment use 8;
   type PROPSHEETPAGEW_V3_x is record
      dwSize : DWORD;
      dwFlags : DWORD;
      hInstance_x : HINSTANCE;
      field_1 : Anonymous_Record_229;
      field_2 : Anonymous_Record_230;
      pszTitle : LPCWSTR;
      pfnDlgProc : DLGPROC;
      lParam_x : LPARAM;
      pfnCallback : LPFNPSPCALLBACKW;
      pcRefParent : access UINT;
      pszHeaderTitle : LPCWSTR;
      pszHeaderSubTitle : LPCWSTR;
      hActCtx : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,PROPSHEETPAGEW_V3_x);
   for PROPSHEETPAGEW_V3_x use record
      dwSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hInstance_x at 0 range 64..127;
      field_1 at 0 range 128..191;
      field_2 at 0 range 192..255;
      pszTitle at 0 range 256..319;
      pfnDlgProc at 0 range 320..383;
      lParam_x at 0 range 384..447;
      pfnCallback at 0 range 448..511;
      pcRefParent at 0 range 512..575;
      pszHeaderTitle at 0 range 576..639;
      pszHeaderSubTitle at 0 range 640..703;
      hActCtx at 0 range 704..767;
   end record;
   for PROPSHEETPAGEW_V3_x'Size use 768;
   for PROPSHEETPAGEW_V3_x'Alignment use 8;
   subtype PROPSHEETPAGEW_V3 is PROPSHEETPAGEW_V3_x;
   type LPPROPSHEETPAGEW_V3 is access all PROPSHEETPAGEW_V3_x;
   type LPCPROPSHEETPAGEW_V3 is access constant PROPSHEETPAGEW_V3;
   type Anonymous_Record_231 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            pszTemplate : LPCWSTR;
         when others => 
            pResource : PROPSHEETPAGE_RESOURCE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_231);
   pragma Unchecked_Union (Anonymous_Record_231);
   for Anonymous_Record_231'Size use 64;
   for Anonymous_Record_231'Alignment use 8;
   type Anonymous_Record_232 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HICON;
         when others => 
            pszIcon : LPCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_232);
   pragma Unchecked_Union (Anonymous_Record_232);
   for Anonymous_Record_232'Size use 64;
   for Anonymous_Record_232'Alignment use 8;
   type Anonymous_Record_233 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hbmHeader : HBITMAP;
         when others => 
            pszbmHeader : LPCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_233);
   pragma Unchecked_Union (Anonymous_Record_233);
   for Anonymous_Record_233'Size use 64;
   for Anonymous_Record_233'Alignment use 8;
   type PROPSHEETPAGEW_x is record
      dwSize : DWORD;
      dwFlags : DWORD;
      hInstance_x : HINSTANCE;
      field_1 : Anonymous_Record_231;
      field_2 : Anonymous_Record_232;
      pszTitle : LPCWSTR;
      pfnDlgProc : DLGPROC;
      lParam_x : LPARAM;
      pfnCallback : LPFNPSPCALLBACKW;
      pcRefParent : access UINT;
      pszHeaderTitle : LPCWSTR;
      pszHeaderSubTitle : LPCWSTR;
      hActCtx : HANDLE;
      field_3 : Anonymous_Record_233;
   end record;
   pragma Convention (C_Pass_By_Copy,PROPSHEETPAGEW_x);
   for PROPSHEETPAGEW_x use record
      dwSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hInstance_x at 0 range 64..127;
      field_1 at 0 range 128..191;
      field_2 at 0 range 192..255;
      pszTitle at 0 range 256..319;
      pfnDlgProc at 0 range 320..383;
      lParam_x at 0 range 384..447;
      pfnCallback at 0 range 448..511;
      pcRefParent at 0 range 512..575;
      pszHeaderTitle at 0 range 576..639;
      pszHeaderSubTitle at 0 range 640..703;
      hActCtx at 0 range 704..767;
      field_3 at 0 range 768..831;
   end record;
   for PROPSHEETPAGEW_x'Size use 832;
   for PROPSHEETPAGEW_x'Alignment use 8;
   subtype PROPSHEETPAGEW_V4 is PROPSHEETPAGEW_x;
   type LPPROPSHEETPAGEW_V4 is access all PROPSHEETPAGEW_x;
   type LPCPROPSHEETPAGEW_V4 is access constant PROPSHEETPAGEW_V4;
   subtype PROPSHEETPAGEA_LATEST is PROPSHEETPAGEA_V4;
   subtype PROPSHEETPAGEW_LATEST is PROPSHEETPAGEW_V4;
   subtype LPPROPSHEETPAGEA_LATEST is LPPROPSHEETPAGEA_V4;
   subtype LPPROPSHEETPAGEW_LATEST is LPPROPSHEETPAGEW_V4;
   subtype LPCPROPSHEETPAGEA_LATEST is LPCPROPSHEETPAGEA_V4;
   subtype LPCPROPSHEETPAGEW_LATEST is LPCPROPSHEETPAGEW_V4;
   subtype PROPSHEETPAGEA is PROPSHEETPAGEA_V4;
   subtype PROPSHEETPAGEW is PROPSHEETPAGEW_V4;
   subtype LPPROPSHEETPAGEA is LPPROPSHEETPAGEA_V4;
   subtype LPPROPSHEETPAGEW is LPPROPSHEETPAGEW_V4;
   subtype LPCPROPSHEETPAGEA is LPCPROPSHEETPAGEA_V4;
   subtype LPCPROPSHEETPAGEW is LPCPROPSHEETPAGEW_V4;
   type PFNPROPSHEETCALLBACK is access function (p1 : HWND ; p2 : UINT ; p3 : LPARAM) return int; -- int (HWND, UINT, LPARAM)
   pragma Convention(C,PFNPROPSHEETCALLBACK);
   type Anonymous_Record_234 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HICON;
         when others => 
            pszIcon : LPCSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_234);
   pragma Unchecked_Union (Anonymous_Record_234);
   for Anonymous_Record_234'Size use 64;
   for Anonymous_Record_234'Alignment use 8;
   type Anonymous_Record_235 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            nStartPage : UINT;
         when others => 
            pStartPage : LPCSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_235);
   pragma Unchecked_Union (Anonymous_Record_235);
   for Anonymous_Record_235'Size use 64;
   for Anonymous_Record_235'Alignment use 8;
   type Anonymous_Record_236 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            ppsp : LPCPROPSHEETPAGEA;
         when others => 
            phpage : access HPROPSHEETPAGE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_236);
   pragma Unchecked_Union (Anonymous_Record_236);
   for Anonymous_Record_236'Size use 64;
   for Anonymous_Record_236'Alignment use 8;
   type PROPSHEETHEADERA_V1_x is record
      dwSize : DWORD;
      dwFlags : DWORD;
      hwndParent : HWND;
      hInstance_x : HINSTANCE;
      field_1 : Anonymous_Record_234;
      pszCaption : LPCSTR;
      nPages : UINT;
      field_2 : Anonymous_Record_235;
      field_3 : Anonymous_Record_236;
      pfnCallback : PFNPROPSHEETCALLBACK;
   end record;
   pragma Convention (C_Pass_By_Copy,PROPSHEETHEADERA_V1_x);
   for PROPSHEETHEADERA_V1_x use record
      dwSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hwndParent at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      field_1 at 0 range 192..255;
      pszCaption at 0 range 256..319;
      nPages at 0 range 320..351;
      field_2 at 0 range 352..415;
      field_3 at 0 range 416..479;
      pfnCallback at 0 range 512..575;
   end record;
   for PROPSHEETHEADERA_V1_x'Size use 576;
   for PROPSHEETHEADERA_V1_x'Alignment use 8;
   subtype PROPSHEETHEADERA_V1 is PROPSHEETHEADERA_V1_x;
   type LPPROPSHEETHEADERA_V1 is access all PROPSHEETHEADERA_V1_x;
   type LPCPROPSHEETHEADERA_V1 is access constant PROPSHEETHEADERA_V1;
   type Anonymous_Record_237 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HICON;
         when others => 
            pszIcon : LPCSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_237);
   pragma Unchecked_Union (Anonymous_Record_237);
   for Anonymous_Record_237'Size use 64;
   for Anonymous_Record_237'Alignment use 8;
   type Anonymous_Record_238 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            nStartPage : UINT;
         when others => 
            pStartPage : LPCSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_238);
   pragma Unchecked_Union (Anonymous_Record_238);
   for Anonymous_Record_238'Size use 64;
   for Anonymous_Record_238'Alignment use 8;
   type Anonymous_Record_239 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            ppsp : LPCPROPSHEETPAGEA;
         when others => 
            phpage : access HPROPSHEETPAGE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_239);
   pragma Unchecked_Union (Anonymous_Record_239);
   for Anonymous_Record_239'Size use 64;
   for Anonymous_Record_239'Alignment use 8;
   type Anonymous_Record_240 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hbmWatermark : HBITMAP;
         when others => 
            pszbmWatermark : LPCSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_240);
   pragma Unchecked_Union (Anonymous_Record_240);
   for Anonymous_Record_240'Size use 64;
   for Anonymous_Record_240'Alignment use 8;
   type Anonymous_Record_241 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hbmHeader : HBITMAP;
         when others => 
            pszbmHeader : LPCSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_241);
   pragma Unchecked_Union (Anonymous_Record_241);
   for Anonymous_Record_241'Size use 64;
   for Anonymous_Record_241'Alignment use 8;
   type PROPSHEETHEADERA_V2_x is record
      dwSize : DWORD;
      dwFlags : DWORD;
      hwndParent : HWND;
      hInstance_x : HINSTANCE;
      field_1 : Anonymous_Record_237;
      pszCaption : LPCSTR;
      nPages : UINT;
      field_2 : Anonymous_Record_238;
      field_3 : Anonymous_Record_239;
      pfnCallback : PFNPROPSHEETCALLBACK;
      field_4 : Anonymous_Record_240;
      hplWatermark : HPALETTE;
      field_5 : Anonymous_Record_241;
   end record;
   pragma Convention (C_Pass_By_Copy,PROPSHEETHEADERA_V2_x);
   for PROPSHEETHEADERA_V2_x use record
      dwSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hwndParent at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      field_1 at 0 range 192..255;
      pszCaption at 0 range 256..319;
      nPages at 0 range 320..351;
      field_2 at 0 range 352..415;
      field_3 at 0 range 416..479;
      pfnCallback at 0 range 512..575;
      field_4 at 0 range 576..639;
      hplWatermark at 0 range 640..703;
      field_5 at 0 range 704..767;
   end record;
   for PROPSHEETHEADERA_V2_x'Size use 768;
   for PROPSHEETHEADERA_V2_x'Alignment use 8;
   subtype PROPSHEETHEADERA_V2 is PROPSHEETHEADERA_V2_x;
   type LPPROPSHEETHEADERA_V2 is access all PROPSHEETHEADERA_V2_x;
   type LPCPROPSHEETHEADERA_V2 is access constant PROPSHEETHEADERA_V2;
   type Anonymous_Record_242 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HICON;
         when others => 
            pszIcon : LPCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_242);
   pragma Unchecked_Union (Anonymous_Record_242);
   for Anonymous_Record_242'Size use 64;
   for Anonymous_Record_242'Alignment use 8;
   type Anonymous_Record_243 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            nStartPage : UINT;
         when others => 
            pStartPage : LPCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_243);
   pragma Unchecked_Union (Anonymous_Record_243);
   for Anonymous_Record_243'Size use 64;
   for Anonymous_Record_243'Alignment use 8;
   type Anonymous_Record_244 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            ppsp : LPCPROPSHEETPAGEW;
         when others => 
            phpage : access HPROPSHEETPAGE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_244);
   pragma Unchecked_Union (Anonymous_Record_244);
   for Anonymous_Record_244'Size use 64;
   for Anonymous_Record_244'Alignment use 8;
   type PROPSHEETHEADERW_V1_x is record
      dwSize : DWORD;
      dwFlags : DWORD;
      hwndParent : HWND;
      hInstance_x : HINSTANCE;
      field_1 : Anonymous_Record_242;
      pszCaption : LPCWSTR;
      nPages : UINT;
      field_2 : Anonymous_Record_243;
      field_3 : Anonymous_Record_244;
      pfnCallback : PFNPROPSHEETCALLBACK;
   end record;
   pragma Convention (C_Pass_By_Copy,PROPSHEETHEADERW_V1_x);
   for PROPSHEETHEADERW_V1_x use record
      dwSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hwndParent at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      field_1 at 0 range 192..255;
      pszCaption at 0 range 256..319;
      nPages at 0 range 320..351;
      field_2 at 0 range 352..415;
      field_3 at 0 range 416..479;
      pfnCallback at 0 range 512..575;
   end record;
   for PROPSHEETHEADERW_V1_x'Size use 576;
   for PROPSHEETHEADERW_V1_x'Alignment use 8;
   subtype PROPSHEETHEADERW_V1 is PROPSHEETHEADERW_V1_x;
   type LPPROPSHEETHEADERW_V1 is access all PROPSHEETHEADERW_V1_x;
   type LPCPROPSHEETHEADERW_V1 is access constant PROPSHEETHEADERW_V1;
   type Anonymous_Record_245 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hIcon_x : HICON;
         when others => 
            pszIcon : LPCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_245);
   pragma Unchecked_Union (Anonymous_Record_245);
   for Anonymous_Record_245'Size use 64;
   for Anonymous_Record_245'Alignment use 8;
   type Anonymous_Record_246 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            nStartPage : UINT;
         when others => 
            pStartPage : LPCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_246);
   pragma Unchecked_Union (Anonymous_Record_246);
   for Anonymous_Record_246'Size use 64;
   for Anonymous_Record_246'Alignment use 8;
   type Anonymous_Record_247 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            ppsp : LPCPROPSHEETPAGEW;
         when others => 
            phpage : access HPROPSHEETPAGE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_247);
   pragma Unchecked_Union (Anonymous_Record_247);
   for Anonymous_Record_247'Size use 64;
   for Anonymous_Record_247'Alignment use 8;
   type Anonymous_Record_248 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hbmWatermark : HBITMAP;
         when others => 
            pszbmWatermark : LPCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_248);
   pragma Unchecked_Union (Anonymous_Record_248);
   for Anonymous_Record_248'Size use 64;
   for Anonymous_Record_248'Alignment use 8;
   type Anonymous_Record_249 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hbmHeader : HBITMAP;
         when others => 
            pszbmHeader : LPCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_249);
   pragma Unchecked_Union (Anonymous_Record_249);
   for Anonymous_Record_249'Size use 64;
   for Anonymous_Record_249'Alignment use 8;
   type PROPSHEETHEADERW_V2_x is record
      dwSize : DWORD;
      dwFlags : DWORD;
      hwndParent : HWND;
      hInstance_x : HINSTANCE;
      field_1 : Anonymous_Record_245;
      pszCaption : LPCWSTR;
      nPages : UINT;
      field_2 : Anonymous_Record_246;
      field_3 : Anonymous_Record_247;
      pfnCallback : PFNPROPSHEETCALLBACK;
      field_4 : Anonymous_Record_248;
      hplWatermark : HPALETTE;
      field_5 : Anonymous_Record_249;
   end record;
   pragma Convention (C_Pass_By_Copy,PROPSHEETHEADERW_V2_x);
   for PROPSHEETHEADERW_V2_x use record
      dwSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      hwndParent at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      field_1 at 0 range 192..255;
      pszCaption at 0 range 256..319;
      nPages at 0 range 320..351;
      field_2 at 0 range 352..415;
      field_3 at 0 range 416..479;
      pfnCallback at 0 range 512..575;
      field_4 at 0 range 576..639;
      hplWatermark at 0 range 640..703;
      field_5 at 0 range 704..767;
   end record;
   for PROPSHEETHEADERW_V2_x'Size use 768;
   for PROPSHEETHEADERW_V2_x'Alignment use 8;
   subtype PROPSHEETHEADERW_V2 is PROPSHEETHEADERW_V2_x;
   type LPPROPSHEETHEADERW_V2 is access all PROPSHEETHEADERW_V2_x;
   type LPCPROPSHEETHEADERW_V2 is access constant PROPSHEETHEADERW_V2;
   subtype PROPSHEETHEADERA is PROPSHEETHEADERA_V2;
   subtype PROPSHEETHEADERW is PROPSHEETHEADERW_V2;
   subtype LPPROPSHEETHEADERA is LPPROPSHEETHEADERA_V2;
   subtype LPPROPSHEETHEADERW is LPPROPSHEETHEADERW_V2;
   subtype LPCPROPSHEETHEADERA is LPCPROPSHEETHEADERA_V2;
   subtype LPCPROPSHEETHEADERW is LPCPROPSHEETHEADERW_V2;
   function CreatePropertySheetPageA(
      constPropSheetPagePointer : LPCPROPSHEETPAGEA
   ) return HPROPSHEETPAGE;
   pragma import (Cpp,CreatePropertySheetPageA,"CreatePropertySheetPageA");
   function CreatePropertySheetPageW(
      constPropSheetPagePointer : LPCPROPSHEETPAGEW
   ) return HPROPSHEETPAGE;
   pragma import (Cpp,CreatePropertySheetPageW,"CreatePropertySheetPageW");
   function DestroyPropertySheetPage(
      param1 : HPROPSHEETPAGE
   ) return BOOL;
   pragma import (Cpp,DestroyPropertySheetPage,"DestroyPropertySheetPage");
   function PropertySheetA(
      param1 : LPCPROPSHEETHEADERA
   ) return INT_PTR;
   pragma import (Cpp,PropertySheetA,"PropertySheetA");
   function PropertySheetW(
      param1 : LPCPROPSHEETHEADERW
   ) return INT_PTR;
   pragma import (Cpp,PropertySheetW,"PropertySheetW");
   type LPFNADDPROPSHEETPAGE is access function (p1 : HPROPSHEETPAGE ; p2 : LPARAM) return BOOL; -- BOOL (HPROPSHEETPAGE, LPARAM)
   pragma Convention(C,LPFNADDPROPSHEETPAGE);
   type LPFNADDPROPSHEETPAGES is access function (p1 : LPVOID ; p2 : LPFNADDPROPSHEETPAGE ; p3 : LPARAM) return BOOL; -- BOOL (LPVOID, LPFNADDPROPSHEETPAGE, LPARAM)
   pragma Convention(C,LPFNADDPROPSHEETPAGES);
   type PSHNOTIFY_x is record
      hdr : NMHDR;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,PSHNOTIFY_x);
   for PSHNOTIFY_x use record
      hdr at 0 range 0..191;
      lParam_x at 0 range 192..255;
   end record;
   for PSHNOTIFY_x'Size use 256;
   for PSHNOTIFY_x'Alignment use 8;
   subtype PSHNOTIFY is PSHNOTIFY_x;
   type LPPSHNOTIFY is access all PSHNOTIFY_x;
   -- #include <winspool.h>
   type PRINTER_INFO_1A_x is record
      Flags : DWORD;
      pDescription : LPSTR;
      pName : LPSTR;
      pComment : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_1A_x);
   for PRINTER_INFO_1A_x use record
      Flags at 0 range 0..31;
      pDescription at 0 range 64..127;
      pName at 0 range 128..191;
      pComment at 0 range 192..255;
   end record;
   for PRINTER_INFO_1A_x'Size use 256;
   for PRINTER_INFO_1A_x'Alignment use 8;
   subtype PRINTER_INFO_1A is PRINTER_INFO_1A_x;
   type PPRINTER_INFO_1A is access all PRINTER_INFO_1A_x;
   type LPPRINTER_INFO_1A is access all PRINTER_INFO_1A_x;
   type PRINTER_INFO_1W_x is record
      Flags : DWORD;
      pDescription : LPWSTR;
      pName : LPWSTR;
      pComment : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_1W_x);
   for PRINTER_INFO_1W_x use record
      Flags at 0 range 0..31;
      pDescription at 0 range 64..127;
      pName at 0 range 128..191;
      pComment at 0 range 192..255;
   end record;
   for PRINTER_INFO_1W_x'Size use 256;
   for PRINTER_INFO_1W_x'Alignment use 8;
   subtype PRINTER_INFO_1W is PRINTER_INFO_1W_x;
   type PPRINTER_INFO_1W is access all PRINTER_INFO_1W_x;
   type LPPRINTER_INFO_1W is access all PRINTER_INFO_1W_x;
   subtype PRINTER_INFO_1 is PRINTER_INFO_1A;
   subtype PPRINTER_INFO_1 is PPRINTER_INFO_1A;
   subtype LPPRINTER_INFO_1 is LPPRINTER_INFO_1A;
   type PRINTER_INFO_2A_x is record
      pServerName : LPSTR;
      pPrinterName : LPSTR;
      pShareName : LPSTR;
      pPortName : LPSTR;
      pDriverName : LPSTR;
      pComment : LPSTR;
      pLocation : LPSTR;
      pDevMode_x : LPDEVMODEA;
      pSepFile : LPSTR;
      pPrintProcessor : LPSTR;
      pDatatype : LPSTR;
      pParameters : LPSTR;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      Attributes : DWORD;
      Priority : DWORD;
      DefaultPriority : DWORD;
      StartTime : DWORD;
      UntilTime : DWORD;
      Status : DWORD;
      cJobs : DWORD;
      AveragePPM : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_2A_x);
   for PRINTER_INFO_2A_x use record
      pServerName at 0 range 0..63;
      pPrinterName at 0 range 64..127;
      pShareName at 0 range 128..191;
      pPortName at 0 range 192..255;
      pDriverName at 0 range 256..319;
      pComment at 0 range 320..383;
      pLocation at 0 range 384..447;
      pDevMode_x at 0 range 448..511;
      pSepFile at 0 range 512..575;
      pPrintProcessor at 0 range 576..639;
      pDatatype at 0 range 640..703;
      pParameters at 0 range 704..767;
      pSecurityDescriptor at 0 range 768..831;
      Attributes at 0 range 832..863;
      Priority at 0 range 864..895;
      DefaultPriority at 0 range 896..927;
      StartTime at 0 range 928..959;
      UntilTime at 0 range 960..991;
      Status at 0 range 992..1023;
      cJobs at 0 range 1024..1055;
      AveragePPM at 0 range 1056..1087;
   end record;
   for PRINTER_INFO_2A_x'Size use 1088;
   for PRINTER_INFO_2A_x'Alignment use 8;
   subtype PRINTER_INFO_2A is PRINTER_INFO_2A_x;
   type PPRINTER_INFO_2A is access all PRINTER_INFO_2A_x;
   type LPPRINTER_INFO_2A is access all PRINTER_INFO_2A_x;
   type PRINTER_INFO_2W_x is record
      pServerName : LPWSTR;
      pPrinterName : LPWSTR;
      pShareName : LPWSTR;
      pPortName : LPWSTR;
      pDriverName : LPWSTR;
      pComment : LPWSTR;
      pLocation : LPWSTR;
      pDevMode_x : LPDEVMODEW;
      pSepFile : LPWSTR;
      pPrintProcessor : LPWSTR;
      pDatatype : LPWSTR;
      pParameters : LPWSTR;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      Attributes : DWORD;
      Priority : DWORD;
      DefaultPriority : DWORD;
      StartTime : DWORD;
      UntilTime : DWORD;
      Status : DWORD;
      cJobs : DWORD;
      AveragePPM : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_2W_x);
   for PRINTER_INFO_2W_x use record
      pServerName at 0 range 0..63;
      pPrinterName at 0 range 64..127;
      pShareName at 0 range 128..191;
      pPortName at 0 range 192..255;
      pDriverName at 0 range 256..319;
      pComment at 0 range 320..383;
      pLocation at 0 range 384..447;
      pDevMode_x at 0 range 448..511;
      pSepFile at 0 range 512..575;
      pPrintProcessor at 0 range 576..639;
      pDatatype at 0 range 640..703;
      pParameters at 0 range 704..767;
      pSecurityDescriptor at 0 range 768..831;
      Attributes at 0 range 832..863;
      Priority at 0 range 864..895;
      DefaultPriority at 0 range 896..927;
      StartTime at 0 range 928..959;
      UntilTime at 0 range 960..991;
      Status at 0 range 992..1023;
      cJobs at 0 range 1024..1055;
      AveragePPM at 0 range 1056..1087;
   end record;
   for PRINTER_INFO_2W_x'Size use 1088;
   for PRINTER_INFO_2W_x'Alignment use 8;
   subtype PRINTER_INFO_2W is PRINTER_INFO_2W_x;
   type PPRINTER_INFO_2W is access all PRINTER_INFO_2W_x;
   type LPPRINTER_INFO_2W is access all PRINTER_INFO_2W_x;
   subtype PRINTER_INFO_2 is PRINTER_INFO_2A;
   subtype PPRINTER_INFO_2 is PPRINTER_INFO_2A;
   subtype LPPRINTER_INFO_2 is LPPRINTER_INFO_2A;
   type PRINTER_INFO_3_x is record
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_3_x);
   for PRINTER_INFO_3_x use record
      pSecurityDescriptor at 0 range 0..63;
   end record;
   for PRINTER_INFO_3_x'Size use 64;
   for PRINTER_INFO_3_x'Alignment use 8;
   subtype PRINTER_INFO_3 is PRINTER_INFO_3_x;
   type PPRINTER_INFO_3 is access all PRINTER_INFO_3_x;
   type LPPRINTER_INFO_3 is access all PRINTER_INFO_3_x;
   type PRINTER_INFO_4A_x is record
      pPrinterName : LPSTR;
      pServerName : LPSTR;
      Attributes : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_4A_x);
   for PRINTER_INFO_4A_x use record
      pPrinterName at 0 range 0..63;
      pServerName at 0 range 64..127;
      Attributes at 0 range 128..159;
   end record;
   for PRINTER_INFO_4A_x'Size use 192;
   for PRINTER_INFO_4A_x'Alignment use 8;
   subtype PRINTER_INFO_4A is PRINTER_INFO_4A_x;
   type PPRINTER_INFO_4A is access all PRINTER_INFO_4A_x;
   type LPPRINTER_INFO_4A is access all PRINTER_INFO_4A_x;
   type PRINTER_INFO_4W_x is record
      pPrinterName : LPWSTR;
      pServerName : LPWSTR;
      Attributes : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_4W_x);
   for PRINTER_INFO_4W_x use record
      pPrinterName at 0 range 0..63;
      pServerName at 0 range 64..127;
      Attributes at 0 range 128..159;
   end record;
   for PRINTER_INFO_4W_x'Size use 192;
   for PRINTER_INFO_4W_x'Alignment use 8;
   subtype PRINTER_INFO_4W is PRINTER_INFO_4W_x;
   type PPRINTER_INFO_4W is access all PRINTER_INFO_4W_x;
   type LPPRINTER_INFO_4W is access all PRINTER_INFO_4W_x;
   subtype PRINTER_INFO_4 is PRINTER_INFO_4A;
   subtype PPRINTER_INFO_4 is PPRINTER_INFO_4A;
   subtype LPPRINTER_INFO_4 is LPPRINTER_INFO_4A;
   type PRINTER_INFO_5A_x is record
      pPrinterName : LPSTR;
      pPortName : LPSTR;
      Attributes : DWORD;
      DeviceNotSelectedTimeout : DWORD;
      TransmissionRetryTimeout : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_5A_x);
   for PRINTER_INFO_5A_x use record
      pPrinterName at 0 range 0..63;
      pPortName at 0 range 64..127;
      Attributes at 0 range 128..159;
      DeviceNotSelectedTimeout at 0 range 160..191;
      TransmissionRetryTimeout at 0 range 192..223;
   end record;
   for PRINTER_INFO_5A_x'Size use 256;
   for PRINTER_INFO_5A_x'Alignment use 8;
   subtype PRINTER_INFO_5A is PRINTER_INFO_5A_x;
   type PPRINTER_INFO_5A is access all PRINTER_INFO_5A_x;
   type LPPRINTER_INFO_5A is access all PRINTER_INFO_5A_x;
   type PRINTER_INFO_5W_x is record
      pPrinterName : LPWSTR;
      pPortName : LPWSTR;
      Attributes : DWORD;
      DeviceNotSelectedTimeout : DWORD;
      TransmissionRetryTimeout : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_5W_x);
   for PRINTER_INFO_5W_x use record
      pPrinterName at 0 range 0..63;
      pPortName at 0 range 64..127;
      Attributes at 0 range 128..159;
      DeviceNotSelectedTimeout at 0 range 160..191;
      TransmissionRetryTimeout at 0 range 192..223;
   end record;
   for PRINTER_INFO_5W_x'Size use 256;
   for PRINTER_INFO_5W_x'Alignment use 8;
   subtype PRINTER_INFO_5W is PRINTER_INFO_5W_x;
   type PPRINTER_INFO_5W is access all PRINTER_INFO_5W_x;
   type LPPRINTER_INFO_5W is access all PRINTER_INFO_5W_x;
   subtype PRINTER_INFO_5 is PRINTER_INFO_5A;
   subtype PPRINTER_INFO_5 is PPRINTER_INFO_5A;
   subtype LPPRINTER_INFO_5 is LPPRINTER_INFO_5A;
   type PRINTER_INFO_6_x is record
      dwStatus : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_6_x);
   for PRINTER_INFO_6_x use record
      dwStatus at 0 range 0..31;
   end record;
   for PRINTER_INFO_6_x'Size use 32;
   for PRINTER_INFO_6_x'Alignment use 4;
   subtype PRINTER_INFO_6 is PRINTER_INFO_6_x;
   type PPRINTER_INFO_6 is access all PRINTER_INFO_6_x;
   type LPPRINTER_INFO_6 is access all PRINTER_INFO_6_x;
   type PRINTER_INFO_7A_x is record
      pszObjectGUID : LPSTR;
      dwAction : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_7A_x);
   for PRINTER_INFO_7A_x use record
      pszObjectGUID at 0 range 0..63;
      dwAction at 0 range 64..95;
   end record;
   for PRINTER_INFO_7A_x'Size use 128;
   for PRINTER_INFO_7A_x'Alignment use 8;
   subtype PRINTER_INFO_7A is PRINTER_INFO_7A_x;
   type PPRINTER_INFO_7A is access all PRINTER_INFO_7A_x;
   type LPPRINTER_INFO_7A is access all PRINTER_INFO_7A_x;
   type PRINTER_INFO_7W_x is record
      pszObjectGUID : LPWSTR;
      dwAction : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_7W_x);
   for PRINTER_INFO_7W_x use record
      pszObjectGUID at 0 range 0..63;
      dwAction at 0 range 64..95;
   end record;
   for PRINTER_INFO_7W_x'Size use 128;
   for PRINTER_INFO_7W_x'Alignment use 8;
   subtype PRINTER_INFO_7W is PRINTER_INFO_7W_x;
   type PPRINTER_INFO_7W is access all PRINTER_INFO_7W_x;
   type LPPRINTER_INFO_7W is access all PRINTER_INFO_7W_x;
   subtype PRINTER_INFO_7 is PRINTER_INFO_7A;
   subtype PPRINTER_INFO_7 is PPRINTER_INFO_7A;
   subtype LPPRINTER_INFO_7 is LPPRINTER_INFO_7A;
   type PRINTER_INFO_8A_x is record
      pDevMode_x : LPDEVMODEA;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_8A_x);
   for PRINTER_INFO_8A_x use record
      pDevMode_x at 0 range 0..63;
   end record;
   for PRINTER_INFO_8A_x'Size use 64;
   for PRINTER_INFO_8A_x'Alignment use 8;
   subtype PRINTER_INFO_8A is PRINTER_INFO_8A_x;
   type PPRINTER_INFO_8A is access all PRINTER_INFO_8A_x;
   type LPPRINTER_INFO_8A is access all PRINTER_INFO_8A_x;
   type PRINTER_INFO_8W_x is record
      pDevMode_x : LPDEVMODEW;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_8W_x);
   for PRINTER_INFO_8W_x use record
      pDevMode_x at 0 range 0..63;
   end record;
   for PRINTER_INFO_8W_x'Size use 64;
   for PRINTER_INFO_8W_x'Alignment use 8;
   subtype PRINTER_INFO_8W is PRINTER_INFO_8W_x;
   type PPRINTER_INFO_8W is access all PRINTER_INFO_8W_x;
   type LPPRINTER_INFO_8W is access all PRINTER_INFO_8W_x;
   subtype PRINTER_INFO_8 is PRINTER_INFO_8A;
   subtype PPRINTER_INFO_8 is PPRINTER_INFO_8A;
   subtype LPPRINTER_INFO_8 is LPPRINTER_INFO_8A;
   type PRINTER_INFO_9A_x is record
      pDevMode_x : LPDEVMODEA;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_9A_x);
   for PRINTER_INFO_9A_x use record
      pDevMode_x at 0 range 0..63;
   end record;
   for PRINTER_INFO_9A_x'Size use 64;
   for PRINTER_INFO_9A_x'Alignment use 8;
   subtype PRINTER_INFO_9A is PRINTER_INFO_9A_x;
   type PPRINTER_INFO_9A is access all PRINTER_INFO_9A_x;
   type LPPRINTER_INFO_9A is access all PRINTER_INFO_9A_x;
   type PRINTER_INFO_9W_x is record
      pDevMode_x : LPDEVMODEW;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_INFO_9W_x);
   for PRINTER_INFO_9W_x use record
      pDevMode_x at 0 range 0..63;
   end record;
   for PRINTER_INFO_9W_x'Size use 64;
   for PRINTER_INFO_9W_x'Alignment use 8;
   subtype PRINTER_INFO_9W is PRINTER_INFO_9W_x;
   type PPRINTER_INFO_9W is access all PRINTER_INFO_9W_x;
   type LPPRINTER_INFO_9W is access all PRINTER_INFO_9W_x;
   subtype PRINTER_INFO_9 is PRINTER_INFO_9A;
   subtype PPRINTER_INFO_9 is PPRINTER_INFO_9A;
   subtype LPPRINTER_INFO_9 is LPPRINTER_INFO_9A;
   type JOB_INFO_1A_x is record
      JobId : DWORD;
      pPrinterName : LPSTR;
      pMachineName : LPSTR;
      pUserName : LPSTR;
      pDocument : LPSTR;
      pDatatype : LPSTR;
      pStatus : LPSTR;
      Status : DWORD;
      Priority : DWORD;
      Position : DWORD;
      TotalPages : DWORD;
      PagesPrinted : DWORD;
      Submitted : SYSTEMTIME;
   end record;
   pragma Convention (C_Pass_By_Copy,JOB_INFO_1A_x);
   for JOB_INFO_1A_x use record
      JobId at 0 range 0..31;
      pPrinterName at 0 range 64..127;
      pMachineName at 0 range 128..191;
      pUserName at 0 range 192..255;
      pDocument at 0 range 256..319;
      pDatatype at 0 range 320..383;
      pStatus at 0 range 384..447;
      Status at 0 range 448..479;
      Priority at 0 range 480..511;
      Position at 0 range 512..543;
      TotalPages at 0 range 544..575;
      PagesPrinted at 0 range 576..607;
      Submitted at 0 range 608..735;
   end record;
   for JOB_INFO_1A_x'Size use 768;
   for JOB_INFO_1A_x'Alignment use 8;
   subtype JOB_INFO_1A is JOB_INFO_1A_x;
   type PJOB_INFO_1A is access all JOB_INFO_1A_x;
   type LPJOB_INFO_1A is access all JOB_INFO_1A_x;
   type JOB_INFO_1W_x is record
      JobId : DWORD;
      pPrinterName : LPWSTR;
      pMachineName : LPWSTR;
      pUserName : LPWSTR;
      pDocument : LPWSTR;
      pDatatype : LPWSTR;
      pStatus : LPWSTR;
      Status : DWORD;
      Priority : DWORD;
      Position : DWORD;
      TotalPages : DWORD;
      PagesPrinted : DWORD;
      Submitted : SYSTEMTIME;
   end record;
   pragma Convention (C_Pass_By_Copy,JOB_INFO_1W_x);
   for JOB_INFO_1W_x use record
      JobId at 0 range 0..31;
      pPrinterName at 0 range 64..127;
      pMachineName at 0 range 128..191;
      pUserName at 0 range 192..255;
      pDocument at 0 range 256..319;
      pDatatype at 0 range 320..383;
      pStatus at 0 range 384..447;
      Status at 0 range 448..479;
      Priority at 0 range 480..511;
      Position at 0 range 512..543;
      TotalPages at 0 range 544..575;
      PagesPrinted at 0 range 576..607;
      Submitted at 0 range 608..735;
   end record;
   for JOB_INFO_1W_x'Size use 768;
   for JOB_INFO_1W_x'Alignment use 8;
   subtype JOB_INFO_1W is JOB_INFO_1W_x;
   type PJOB_INFO_1W is access all JOB_INFO_1W_x;
   type LPJOB_INFO_1W is access all JOB_INFO_1W_x;
   subtype JOB_INFO_1 is JOB_INFO_1A;
   subtype PJOB_INFO_1 is PJOB_INFO_1A;
   subtype LPJOB_INFO_1 is LPJOB_INFO_1A;
   type JOB_INFO_2A_x is record
      JobId : DWORD;
      pPrinterName : LPSTR;
      pMachineName : LPSTR;
      pUserName : LPSTR;
      pDocument : LPSTR;
      pNotifyName : LPSTR;
      pDatatype : LPSTR;
      pPrintProcessor : LPSTR;
      pParameters : LPSTR;
      pDriverName : LPSTR;
      pDevMode_x : LPDEVMODEA;
      pStatus : LPSTR;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      Status : DWORD;
      Priority : DWORD;
      Position : DWORD;
      StartTime : DWORD;
      UntilTime : DWORD;
      TotalPages : DWORD;
      Size_x : DWORD;
      Submitted : SYSTEMTIME;
      Time : DWORD;
      PagesPrinted : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,JOB_INFO_2A_x);
   for JOB_INFO_2A_x use record
      JobId at 0 range 0..31;
      pPrinterName at 0 range 64..127;
      pMachineName at 0 range 128..191;
      pUserName at 0 range 192..255;
      pDocument at 0 range 256..319;
      pNotifyName at 0 range 320..383;
      pDatatype at 0 range 384..447;
      pPrintProcessor at 0 range 448..511;
      pParameters at 0 range 512..575;
      pDriverName at 0 range 576..639;
      pDevMode_x at 0 range 640..703;
      pStatus at 0 range 704..767;
      pSecurityDescriptor at 0 range 768..831;
      Status at 0 range 832..863;
      Priority at 0 range 864..895;
      Position at 0 range 896..927;
      StartTime at 0 range 928..959;
      UntilTime at 0 range 960..991;
      TotalPages at 0 range 992..1023;
      Size_x at 0 range 1024..1055;
      Submitted at 0 range 1056..1183;
      Time at 0 range 1184..1215;
      PagesPrinted at 0 range 1216..1247;
   end record;
   for JOB_INFO_2A_x'Size use 1280;
   for JOB_INFO_2A_x'Alignment use 8;
   subtype JOB_INFO_2A is JOB_INFO_2A_x;
   type PJOB_INFO_2A is access all JOB_INFO_2A_x;
   type LPJOB_INFO_2A is access all JOB_INFO_2A_x;
   type JOB_INFO_2W_x is record
      JobId : DWORD;
      pPrinterName : LPWSTR;
      pMachineName : LPWSTR;
      pUserName : LPWSTR;
      pDocument : LPWSTR;
      pNotifyName : LPWSTR;
      pDatatype : LPWSTR;
      pPrintProcessor : LPWSTR;
      pParameters : LPWSTR;
      pDriverName : LPWSTR;
      pDevMode_x : LPDEVMODEW;
      pStatus : LPWSTR;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      Status : DWORD;
      Priority : DWORD;
      Position : DWORD;
      StartTime : DWORD;
      UntilTime : DWORD;
      TotalPages : DWORD;
      Size_x : DWORD;
      Submitted : SYSTEMTIME;
      Time : DWORD;
      PagesPrinted : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,JOB_INFO_2W_x);
   for JOB_INFO_2W_x use record
      JobId at 0 range 0..31;
      pPrinterName at 0 range 64..127;
      pMachineName at 0 range 128..191;
      pUserName at 0 range 192..255;
      pDocument at 0 range 256..319;
      pNotifyName at 0 range 320..383;
      pDatatype at 0 range 384..447;
      pPrintProcessor at 0 range 448..511;
      pParameters at 0 range 512..575;
      pDriverName at 0 range 576..639;
      pDevMode_x at 0 range 640..703;
      pStatus at 0 range 704..767;
      pSecurityDescriptor at 0 range 768..831;
      Status at 0 range 832..863;
      Priority at 0 range 864..895;
      Position at 0 range 896..927;
      StartTime at 0 range 928..959;
      UntilTime at 0 range 960..991;
      TotalPages at 0 range 992..1023;
      Size_x at 0 range 1024..1055;
      Submitted at 0 range 1056..1183;
      Time at 0 range 1184..1215;
      PagesPrinted at 0 range 1216..1247;
   end record;
   for JOB_INFO_2W_x'Size use 1280;
   for JOB_INFO_2W_x'Alignment use 8;
   subtype JOB_INFO_2W is JOB_INFO_2W_x;
   type PJOB_INFO_2W is access all JOB_INFO_2W_x;
   type LPJOB_INFO_2W is access all JOB_INFO_2W_x;
   subtype JOB_INFO_2 is JOB_INFO_2A;
   subtype PJOB_INFO_2 is PJOB_INFO_2A;
   subtype LPJOB_INFO_2 is LPJOB_INFO_2A;
   type JOB_INFO_3_x is record
      JobId : DWORD;
      NextJobId : DWORD;
      Reserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,JOB_INFO_3_x);
   for JOB_INFO_3_x use record
      JobId at 0 range 0..31;
      NextJobId at 0 range 32..63;
      Reserved at 0 range 64..95;
   end record;
   for JOB_INFO_3_x'Size use 96;
   for JOB_INFO_3_x'Alignment use 4;
   subtype JOB_INFO_3 is JOB_INFO_3_x;
   type PJOB_INFO_3 is access all JOB_INFO_3_x;
   type LPJOB_INFO_3 is access all JOB_INFO_3_x;
   type JOB_INFO_4A_x is record
      JobId : DWORD;
      pPrinterName : LPSTR;
      pMachineName : LPSTR;
      pUserName : LPSTR;
      pDocument : LPSTR;
      pNotifyName : LPSTR;
      pDatatype : LPSTR;
      pPrintProcessor : LPSTR;
      pParameters : LPSTR;
      pDriverName : LPSTR;
      pDevMode_x : LPDEVMODEA;
      pStatus : LPSTR;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      Status : DWORD;
      Priority : DWORD;
      Position : DWORD;
      StartTime : DWORD;
      UntilTime : DWORD;
      TotalPages : DWORD;
      Size_x : DWORD;
      Submitted : SYSTEMTIME;
      Time : DWORD;
      PagesPrinted : DWORD;
      SizeHigh : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,JOB_INFO_4A_x);
   for JOB_INFO_4A_x use record
      JobId at 0 range 0..31;
      pPrinterName at 0 range 64..127;
      pMachineName at 0 range 128..191;
      pUserName at 0 range 192..255;
      pDocument at 0 range 256..319;
      pNotifyName at 0 range 320..383;
      pDatatype at 0 range 384..447;
      pPrintProcessor at 0 range 448..511;
      pParameters at 0 range 512..575;
      pDriverName at 0 range 576..639;
      pDevMode_x at 0 range 640..703;
      pStatus at 0 range 704..767;
      pSecurityDescriptor at 0 range 768..831;
      Status at 0 range 832..863;
      Priority at 0 range 864..895;
      Position at 0 range 896..927;
      StartTime at 0 range 928..959;
      UntilTime at 0 range 960..991;
      TotalPages at 0 range 992..1023;
      Size_x at 0 range 1024..1055;
      Submitted at 0 range 1056..1183;
      Time at 0 range 1184..1215;
      PagesPrinted at 0 range 1216..1247;
      SizeHigh at 0 range 1248..1279;
   end record;
   for JOB_INFO_4A_x'Size use 1280;
   for JOB_INFO_4A_x'Alignment use 8;
   subtype JOB_INFO_4A is JOB_INFO_4A_x;
   type PJOB_INFO_4A is access all JOB_INFO_4A_x;
   type LPJOB_INFO_4A is access all JOB_INFO_4A_x;
   type JOB_INFO_4W_x is record
      JobId : DWORD;
      pPrinterName : LPWSTR;
      pMachineName : LPWSTR;
      pUserName : LPWSTR;
      pDocument : LPWSTR;
      pNotifyName : LPWSTR;
      pDatatype : LPWSTR;
      pPrintProcessor : LPWSTR;
      pParameters : LPWSTR;
      pDriverName : LPWSTR;
      pDevMode_x : LPDEVMODEW;
      pStatus : LPWSTR;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      Status : DWORD;
      Priority : DWORD;
      Position : DWORD;
      StartTime : DWORD;
      UntilTime : DWORD;
      TotalPages : DWORD;
      Size_x : DWORD;
      Submitted : SYSTEMTIME;
      Time : DWORD;
      PagesPrinted : DWORD;
      SizeHigh : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,JOB_INFO_4W_x);
   for JOB_INFO_4W_x use record
      JobId at 0 range 0..31;
      pPrinterName at 0 range 64..127;
      pMachineName at 0 range 128..191;
      pUserName at 0 range 192..255;
      pDocument at 0 range 256..319;
      pNotifyName at 0 range 320..383;
      pDatatype at 0 range 384..447;
      pPrintProcessor at 0 range 448..511;
      pParameters at 0 range 512..575;
      pDriverName at 0 range 576..639;
      pDevMode_x at 0 range 640..703;
      pStatus at 0 range 704..767;
      pSecurityDescriptor at 0 range 768..831;
      Status at 0 range 832..863;
      Priority at 0 range 864..895;
      Position at 0 range 896..927;
      StartTime at 0 range 928..959;
      UntilTime at 0 range 960..991;
      TotalPages at 0 range 992..1023;
      Size_x at 0 range 1024..1055;
      Submitted at 0 range 1056..1183;
      Time at 0 range 1184..1215;
      PagesPrinted at 0 range 1216..1247;
      SizeHigh at 0 range 1248..1279;
   end record;
   for JOB_INFO_4W_x'Size use 1280;
   for JOB_INFO_4W_x'Alignment use 8;
   subtype JOB_INFO_4W is JOB_INFO_4W_x;
   type PJOB_INFO_4W is access all JOB_INFO_4W_x;
   type LPJOB_INFO_4W is access all JOB_INFO_4W_x;
   subtype JOB_INFO_4 is JOB_INFO_4A;
   subtype PJOB_INFO_4 is PJOB_INFO_4A;
   subtype LPJOB_INFO_4 is LPJOB_INFO_4A;
   type ADDJOB_INFO_1A_x is record
      Path : LPSTR;
      JobId : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ADDJOB_INFO_1A_x);
   for ADDJOB_INFO_1A_x use record
      Path at 0 range 0..63;
      JobId at 0 range 64..95;
   end record;
   for ADDJOB_INFO_1A_x'Size use 128;
   for ADDJOB_INFO_1A_x'Alignment use 8;
   subtype ADDJOB_INFO_1A is ADDJOB_INFO_1A_x;
   type PADDJOB_INFO_1A is access all ADDJOB_INFO_1A_x;
   type LPADDJOB_INFO_1A is access all ADDJOB_INFO_1A_x;
   type ADDJOB_INFO_1W_x is record
      Path : LPWSTR;
      JobId : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ADDJOB_INFO_1W_x);
   for ADDJOB_INFO_1W_x use record
      Path at 0 range 0..63;
      JobId at 0 range 64..95;
   end record;
   for ADDJOB_INFO_1W_x'Size use 128;
   for ADDJOB_INFO_1W_x'Alignment use 8;
   subtype ADDJOB_INFO_1W is ADDJOB_INFO_1W_x;
   type PADDJOB_INFO_1W is access all ADDJOB_INFO_1W_x;
   type LPADDJOB_INFO_1W is access all ADDJOB_INFO_1W_x;
   subtype ADDJOB_INFO_1 is ADDJOB_INFO_1A;
   subtype PADDJOB_INFO_1 is PADDJOB_INFO_1A;
   subtype LPADDJOB_INFO_1 is LPADDJOB_INFO_1A;
   type DRIVER_INFO_1A_x is record
      pName : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_1A_x);
   for DRIVER_INFO_1A_x use record
      pName at 0 range 0..63;
   end record;
   for DRIVER_INFO_1A_x'Size use 64;
   for DRIVER_INFO_1A_x'Alignment use 8;
   subtype DRIVER_INFO_1A is DRIVER_INFO_1A_x;
   type PDRIVER_INFO_1A is access all DRIVER_INFO_1A_x;
   type LPDRIVER_INFO_1A is access all DRIVER_INFO_1A_x;
   type DRIVER_INFO_1W_x is record
      pName : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_1W_x);
   for DRIVER_INFO_1W_x use record
      pName at 0 range 0..63;
   end record;
   for DRIVER_INFO_1W_x'Size use 64;
   for DRIVER_INFO_1W_x'Alignment use 8;
   subtype DRIVER_INFO_1W is DRIVER_INFO_1W_x;
   type PDRIVER_INFO_1W is access all DRIVER_INFO_1W_x;
   type LPDRIVER_INFO_1W is access all DRIVER_INFO_1W_x;
   subtype DRIVER_INFO_1 is DRIVER_INFO_1A;
   subtype PDRIVER_INFO_1 is PDRIVER_INFO_1A;
   subtype LPDRIVER_INFO_1 is LPDRIVER_INFO_1A;
   type DRIVER_INFO_2A_x is record
      cVersion : DWORD;
      pName : LPSTR;
      pEnvironment : LPSTR;
      pDriverPath : LPSTR;
      pDataFile : LPSTR;
      pConfigFile : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_2A_x);
   for DRIVER_INFO_2A_x use record
      cVersion at 0 range 0..31;
      pName at 0 range 64..127;
      pEnvironment at 0 range 128..191;
      pDriverPath at 0 range 192..255;
      pDataFile at 0 range 256..319;
      pConfigFile at 0 range 320..383;
   end record;
   for DRIVER_INFO_2A_x'Size use 384;
   for DRIVER_INFO_2A_x'Alignment use 8;
   subtype DRIVER_INFO_2A is DRIVER_INFO_2A_x;
   type PDRIVER_INFO_2A is access all DRIVER_INFO_2A_x;
   type LPDRIVER_INFO_2A is access all DRIVER_INFO_2A_x;
   type DRIVER_INFO_2W_x is record
      cVersion : DWORD;
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pDriverPath : LPWSTR;
      pDataFile : LPWSTR;
      pConfigFile : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_2W_x);
   for DRIVER_INFO_2W_x use record
      cVersion at 0 range 0..31;
      pName at 0 range 64..127;
      pEnvironment at 0 range 128..191;
      pDriverPath at 0 range 192..255;
      pDataFile at 0 range 256..319;
      pConfigFile at 0 range 320..383;
   end record;
   for DRIVER_INFO_2W_x'Size use 384;
   for DRIVER_INFO_2W_x'Alignment use 8;
   subtype DRIVER_INFO_2W is DRIVER_INFO_2W_x;
   type PDRIVER_INFO_2W is access all DRIVER_INFO_2W_x;
   type LPDRIVER_INFO_2W is access all DRIVER_INFO_2W_x;
   subtype DRIVER_INFO_2 is DRIVER_INFO_2A;
   subtype PDRIVER_INFO_2 is PDRIVER_INFO_2A;
   subtype LPDRIVER_INFO_2 is LPDRIVER_INFO_2A;
   type DRIVER_INFO_3A_x is record
      cVersion : DWORD;
      pName : LPSTR;
      pEnvironment : LPSTR;
      pDriverPath : LPSTR;
      pDataFile : LPSTR;
      pConfigFile : LPSTR;
      pHelpFile : LPSTR;
      pDependentFiles : LPSTR;
      pMonitorName : LPSTR;
      pDefaultDataType : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_3A_x);
   for DRIVER_INFO_3A_x use record
      cVersion at 0 range 0..31;
      pName at 0 range 64..127;
      pEnvironment at 0 range 128..191;
      pDriverPath at 0 range 192..255;
      pDataFile at 0 range 256..319;
      pConfigFile at 0 range 320..383;
      pHelpFile at 0 range 384..447;
      pDependentFiles at 0 range 448..511;
      pMonitorName at 0 range 512..575;
      pDefaultDataType at 0 range 576..639;
   end record;
   for DRIVER_INFO_3A_x'Size use 640;
   for DRIVER_INFO_3A_x'Alignment use 8;
   subtype DRIVER_INFO_3A is DRIVER_INFO_3A_x;
   type PDRIVER_INFO_3A is access all DRIVER_INFO_3A_x;
   type LPDRIVER_INFO_3A is access all DRIVER_INFO_3A_x;
   type DRIVER_INFO_3W_x is record
      cVersion : DWORD;
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pDriverPath : LPWSTR;
      pDataFile : LPWSTR;
      pConfigFile : LPWSTR;
      pHelpFile : LPWSTR;
      pDependentFiles : LPWSTR;
      pMonitorName : LPWSTR;
      pDefaultDataType : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_3W_x);
   for DRIVER_INFO_3W_x use record
      cVersion at 0 range 0..31;
      pName at 0 range 64..127;
      pEnvironment at 0 range 128..191;
      pDriverPath at 0 range 192..255;
      pDataFile at 0 range 256..319;
      pConfigFile at 0 range 320..383;
      pHelpFile at 0 range 384..447;
      pDependentFiles at 0 range 448..511;
      pMonitorName at 0 range 512..575;
      pDefaultDataType at 0 range 576..639;
   end record;
   for DRIVER_INFO_3W_x'Size use 640;
   for DRIVER_INFO_3W_x'Alignment use 8;
   subtype DRIVER_INFO_3W is DRIVER_INFO_3W_x;
   type PDRIVER_INFO_3W is access all DRIVER_INFO_3W_x;
   type LPDRIVER_INFO_3W is access all DRIVER_INFO_3W_x;
   subtype DRIVER_INFO_3 is DRIVER_INFO_3A;
   subtype PDRIVER_INFO_3 is PDRIVER_INFO_3A;
   subtype LPDRIVER_INFO_3 is LPDRIVER_INFO_3A;
   type DRIVER_INFO_4A_x is record
      cVersion : DWORD;
      pName : LPSTR;
      pEnvironment : LPSTR;
      pDriverPath : LPSTR;
      pDataFile : LPSTR;
      pConfigFile : LPSTR;
      pHelpFile : LPSTR;
      pDependentFiles : LPSTR;
      pMonitorName : LPSTR;
      pDefaultDataType : LPSTR;
      pszzPreviousNames : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_4A_x);
   for DRIVER_INFO_4A_x use record
      cVersion at 0 range 0..31;
      pName at 0 range 64..127;
      pEnvironment at 0 range 128..191;
      pDriverPath at 0 range 192..255;
      pDataFile at 0 range 256..319;
      pConfigFile at 0 range 320..383;
      pHelpFile at 0 range 384..447;
      pDependentFiles at 0 range 448..511;
      pMonitorName at 0 range 512..575;
      pDefaultDataType at 0 range 576..639;
      pszzPreviousNames at 0 range 640..703;
   end record;
   for DRIVER_INFO_4A_x'Size use 704;
   for DRIVER_INFO_4A_x'Alignment use 8;
   subtype DRIVER_INFO_4A is DRIVER_INFO_4A_x;
   type PDRIVER_INFO_4A is access all DRIVER_INFO_4A_x;
   type LPDRIVER_INFO_4A is access all DRIVER_INFO_4A_x;
   type DRIVER_INFO_4W_x is record
      cVersion : DWORD;
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pDriverPath : LPWSTR;
      pDataFile : LPWSTR;
      pConfigFile : LPWSTR;
      pHelpFile : LPWSTR;
      pDependentFiles : LPWSTR;
      pMonitorName : LPWSTR;
      pDefaultDataType : LPWSTR;
      pszzPreviousNames : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_4W_x);
   for DRIVER_INFO_4W_x use record
      cVersion at 0 range 0..31;
      pName at 0 range 64..127;
      pEnvironment at 0 range 128..191;
      pDriverPath at 0 range 192..255;
      pDataFile at 0 range 256..319;
      pConfigFile at 0 range 320..383;
      pHelpFile at 0 range 384..447;
      pDependentFiles at 0 range 448..511;
      pMonitorName at 0 range 512..575;
      pDefaultDataType at 0 range 576..639;
      pszzPreviousNames at 0 range 640..703;
   end record;
   for DRIVER_INFO_4W_x'Size use 704;
   for DRIVER_INFO_4W_x'Alignment use 8;
   subtype DRIVER_INFO_4W is DRIVER_INFO_4W_x;
   type PDRIVER_INFO_4W is access all DRIVER_INFO_4W_x;
   type LPDRIVER_INFO_4W is access all DRIVER_INFO_4W_x;
   subtype DRIVER_INFO_4 is DRIVER_INFO_4A;
   subtype PDRIVER_INFO_4 is PDRIVER_INFO_4A;
   subtype LPDRIVER_INFO_4 is LPDRIVER_INFO_4A;
   type DRIVER_INFO_5A_x is record
      cVersion : DWORD;
      pName : LPSTR;
      pEnvironment : LPSTR;
      pDriverPath : LPSTR;
      pDataFile : LPSTR;
      pConfigFile : LPSTR;
      dwDriverAttributes : DWORD;
      dwConfigVersion : DWORD;
      dwDriverVersion : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_5A_x);
   for DRIVER_INFO_5A_x use record
      cVersion at 0 range 0..31;
      pName at 0 range 64..127;
      pEnvironment at 0 range 128..191;
      pDriverPath at 0 range 192..255;
      pDataFile at 0 range 256..319;
      pConfigFile at 0 range 320..383;
      dwDriverAttributes at 0 range 384..415;
      dwConfigVersion at 0 range 416..447;
      dwDriverVersion at 0 range 448..479;
   end record;
   for DRIVER_INFO_5A_x'Size use 512;
   for DRIVER_INFO_5A_x'Alignment use 8;
   subtype DRIVER_INFO_5A is DRIVER_INFO_5A_x;
   type PDRIVER_INFO_5A is access all DRIVER_INFO_5A_x;
   type LPDRIVER_INFO_5A is access all DRIVER_INFO_5A_x;
   type DRIVER_INFO_5W_x is record
      cVersion : DWORD;
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pDriverPath : LPWSTR;
      pDataFile : LPWSTR;
      pConfigFile : LPWSTR;
      dwDriverAttributes : DWORD;
      dwConfigVersion : DWORD;
      dwDriverVersion : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_5W_x);
   for DRIVER_INFO_5W_x use record
      cVersion at 0 range 0..31;
      pName at 0 range 64..127;
      pEnvironment at 0 range 128..191;
      pDriverPath at 0 range 192..255;
      pDataFile at 0 range 256..319;
      pConfigFile at 0 range 320..383;
      dwDriverAttributes at 0 range 384..415;
      dwConfigVersion at 0 range 416..447;
      dwDriverVersion at 0 range 448..479;
   end record;
   for DRIVER_INFO_5W_x'Size use 512;
   for DRIVER_INFO_5W_x'Alignment use 8;
   subtype DRIVER_INFO_5W is DRIVER_INFO_5W_x;
   type PDRIVER_INFO_5W is access all DRIVER_INFO_5W_x;
   type LPDRIVER_INFO_5W is access all DRIVER_INFO_5W_x;
   subtype DRIVER_INFO_5 is DRIVER_INFO_5A;
   subtype PDRIVER_INFO_5 is PDRIVER_INFO_5A;
   subtype LPDRIVER_INFO_5 is LPDRIVER_INFO_5A;
   type DRIVER_INFO_6A_x is record
      cVersion : DWORD;
      pName : LPSTR;
      pEnvironment : LPSTR;
      pDriverPath : LPSTR;
      pDataFile : LPSTR;
      pConfigFile : LPSTR;
      pHelpFile : LPSTR;
      pDependentFiles : LPSTR;
      pMonitorName : LPSTR;
      pDefaultDataType : LPSTR;
      pszzPreviousNames : LPSTR;
      ftDriverDate : FILETIME;
      dwlDriverVersion : DWORDLONG;
      pszMfgName : LPSTR;
      pszOEMUrl : LPSTR;
      pszHardwareID : LPSTR;
      pszProvider : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_6A_x);
   for DRIVER_INFO_6A_x use record
      cVersion at 0 range 0..31;
      pName at 0 range 64..127;
      pEnvironment at 0 range 128..191;
      pDriverPath at 0 range 192..255;
      pDataFile at 0 range 256..319;
      pConfigFile at 0 range 320..383;
      pHelpFile at 0 range 384..447;
      pDependentFiles at 0 range 448..511;
      pMonitorName at 0 range 512..575;
      pDefaultDataType at 0 range 576..639;
      pszzPreviousNames at 0 range 640..703;
      ftDriverDate at 0 range 704..767;
      dwlDriverVersion at 0 range 768..831;
      pszMfgName at 0 range 832..895;
      pszOEMUrl at 0 range 896..959;
      pszHardwareID at 0 range 960..1023;
      pszProvider at 0 range 1024..1087;
   end record;
   for DRIVER_INFO_6A_x'Size use 1088;
   for DRIVER_INFO_6A_x'Alignment use 8;
   subtype DRIVER_INFO_6A is DRIVER_INFO_6A_x;
   type PDRIVER_INFO_6A is access all DRIVER_INFO_6A_x;
   type LPDRIVER_INFO_6A is access all DRIVER_INFO_6A_x;
   type DRIVER_INFO_6W_x is record
      cVersion : DWORD;
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pDriverPath : LPWSTR;
      pDataFile : LPWSTR;
      pConfigFile : LPWSTR;
      pHelpFile : LPWSTR;
      pDependentFiles : LPWSTR;
      pMonitorName : LPWSTR;
      pDefaultDataType : LPWSTR;
      pszzPreviousNames : LPWSTR;
      ftDriverDate : FILETIME;
      dwlDriverVersion : DWORDLONG;
      pszMfgName : LPWSTR;
      pszOEMUrl : LPWSTR;
      pszHardwareID : LPWSTR;
      pszProvider : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_6W_x);
   for DRIVER_INFO_6W_x use record
      cVersion at 0 range 0..31;
      pName at 0 range 64..127;
      pEnvironment at 0 range 128..191;
      pDriverPath at 0 range 192..255;
      pDataFile at 0 range 256..319;
      pConfigFile at 0 range 320..383;
      pHelpFile at 0 range 384..447;
      pDependentFiles at 0 range 448..511;
      pMonitorName at 0 range 512..575;
      pDefaultDataType at 0 range 576..639;
      pszzPreviousNames at 0 range 640..703;
      ftDriverDate at 0 range 704..767;
      dwlDriverVersion at 0 range 768..831;
      pszMfgName at 0 range 832..895;
      pszOEMUrl at 0 range 896..959;
      pszHardwareID at 0 range 960..1023;
      pszProvider at 0 range 1024..1087;
   end record;
   for DRIVER_INFO_6W_x'Size use 1088;
   for DRIVER_INFO_6W_x'Alignment use 8;
   subtype DRIVER_INFO_6W is DRIVER_INFO_6W_x;
   type PDRIVER_INFO_6W is access all DRIVER_INFO_6W_x;
   type LPDRIVER_INFO_6W is access all DRIVER_INFO_6W_x;
   subtype DRIVER_INFO_6 is DRIVER_INFO_6A;
   subtype PDRIVER_INFO_6 is PDRIVER_INFO_6A;
   subtype LPDRIVER_INFO_6 is LPDRIVER_INFO_6A;
   type DRIVER_INFO_8A_x is record
      cVersion : DWORD;
      pName : LPSTR;
      pEnvironment : LPSTR;
      pDriverPath : LPSTR;
      pDataFile : LPSTR;
      pConfigFile : LPSTR;
      pHelpFile : LPSTR;
      pDependentFiles : LPSTR;
      pMonitorName : LPSTR;
      pDefaultDataType : LPSTR;
      pszzPreviousNames : LPSTR;
      ftDriverDate : FILETIME;
      dwlDriverVersion : DWORDLONG;
      pszMfgName : LPSTR;
      pszOEMUrl : LPSTR;
      pszHardwareID : LPSTR;
      pszProvider : LPSTR;
      pszPrintProcessor : LPSTR;
      pszVendorSetup : LPSTR;
      pszzColorProfiles : LPSTR;
      pszInfPath : LPSTR;
      dwPrinterDriverAttributes : DWORD;
      pszzCoreDriverDependencies : LPSTR;
      ftMinInboxDriverVerDate : FILETIME;
      dwlMinInboxDriverVerVersion : DWORDLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_8A_x);
   for DRIVER_INFO_8A_x use record
      cVersion at 0 range 0..31;
      pName at 0 range 64..127;
      pEnvironment at 0 range 128..191;
      pDriverPath at 0 range 192..255;
      pDataFile at 0 range 256..319;
      pConfigFile at 0 range 320..383;
      pHelpFile at 0 range 384..447;
      pDependentFiles at 0 range 448..511;
      pMonitorName at 0 range 512..575;
      pDefaultDataType at 0 range 576..639;
      pszzPreviousNames at 0 range 640..703;
      ftDriverDate at 0 range 704..767;
      dwlDriverVersion at 0 range 768..831;
      pszMfgName at 0 range 832..895;
      pszOEMUrl at 0 range 896..959;
      pszHardwareID at 0 range 960..1023;
      pszProvider at 0 range 1024..1087;
      pszPrintProcessor at 0 range 1088..1151;
      pszVendorSetup at 0 range 1152..1215;
      pszzColorProfiles at 0 range 1216..1279;
      pszInfPath at 0 range 1280..1343;
      dwPrinterDriverAttributes at 0 range 1344..1375;
      pszzCoreDriverDependencies at 0 range 1408..1471;
      ftMinInboxDriverVerDate at 0 range 1472..1535;
      dwlMinInboxDriverVerVersion at 0 range 1536..1599;
   end record;
   for DRIVER_INFO_8A_x'Size use 1600;
   for DRIVER_INFO_8A_x'Alignment use 8;
   subtype DRIVER_INFO_8A is DRIVER_INFO_8A_x;
   type PDRIVER_INFO_8A is access all DRIVER_INFO_8A_x;
   type LPDRIVER_INFO_8A is access all DRIVER_INFO_8A_x;
   type DRIVER_INFO_8W_x is record
      cVersion : DWORD;
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pDriverPath : LPWSTR;
      pDataFile : LPWSTR;
      pConfigFile : LPWSTR;
      pHelpFile : LPWSTR;
      pDependentFiles : LPWSTR;
      pMonitorName : LPWSTR;
      pDefaultDataType : LPWSTR;
      pszzPreviousNames : LPWSTR;
      ftDriverDate : FILETIME;
      dwlDriverVersion : DWORDLONG;
      pszMfgName : LPWSTR;
      pszOEMUrl : LPWSTR;
      pszHardwareID : LPWSTR;
      pszProvider : LPWSTR;
      pszPrintProcessor : LPWSTR;
      pszVendorSetup : LPWSTR;
      pszzColorProfiles : LPWSTR;
      pszInfPath : LPWSTR;
      dwPrinterDriverAttributes : DWORD;
      pszzCoreDriverDependencies : LPWSTR;
      ftMinInboxDriverVerDate : FILETIME;
      dwlMinInboxDriverVerVersion : DWORDLONG;
   end record;
   pragma Convention (C_Pass_By_Copy,DRIVER_INFO_8W_x);
   for DRIVER_INFO_8W_x use record
      cVersion at 0 range 0..31;
      pName at 0 range 64..127;
      pEnvironment at 0 range 128..191;
      pDriverPath at 0 range 192..255;
      pDataFile at 0 range 256..319;
      pConfigFile at 0 range 320..383;
      pHelpFile at 0 range 384..447;
      pDependentFiles at 0 range 448..511;
      pMonitorName at 0 range 512..575;
      pDefaultDataType at 0 range 576..639;
      pszzPreviousNames at 0 range 640..703;
      ftDriverDate at 0 range 704..767;
      dwlDriverVersion at 0 range 768..831;
      pszMfgName at 0 range 832..895;
      pszOEMUrl at 0 range 896..959;
      pszHardwareID at 0 range 960..1023;
      pszProvider at 0 range 1024..1087;
      pszPrintProcessor at 0 range 1088..1151;
      pszVendorSetup at 0 range 1152..1215;
      pszzColorProfiles at 0 range 1216..1279;
      pszInfPath at 0 range 1280..1343;
      dwPrinterDriverAttributes at 0 range 1344..1375;
      pszzCoreDriverDependencies at 0 range 1408..1471;
      ftMinInboxDriverVerDate at 0 range 1472..1535;
      dwlMinInboxDriverVerVersion at 0 range 1536..1599;
   end record;
   for DRIVER_INFO_8W_x'Size use 1600;
   for DRIVER_INFO_8W_x'Alignment use 8;
   subtype DRIVER_INFO_8W is DRIVER_INFO_8W_x;
   type PDRIVER_INFO_8W is access all DRIVER_INFO_8W_x;
   type LPDRIVER_INFO_8W is access all DRIVER_INFO_8W_x;
   subtype DRIVER_INFO_8 is DRIVER_INFO_8A;
   subtype PDRIVER_INFO_8 is PDRIVER_INFO_8A;
   subtype LPDRIVER_INFO_8 is LPDRIVER_INFO_8A;
   type DOC_INFO_1A_x is record
      pDocName : LPSTR;
      pOutputFile : LPSTR;
      pDatatype : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DOC_INFO_1A_x);
   for DOC_INFO_1A_x use record
      pDocName at 0 range 0..63;
      pOutputFile at 0 range 64..127;
      pDatatype at 0 range 128..191;
   end record;
   for DOC_INFO_1A_x'Size use 192;
   for DOC_INFO_1A_x'Alignment use 8;
   subtype DOC_INFO_1A is DOC_INFO_1A_x;
   type PDOC_INFO_1A is access all DOC_INFO_1A_x;
   type LPDOC_INFO_1A is access all DOC_INFO_1A_x;
   type DOC_INFO_1W_x is record
      pDocName : LPWSTR;
      pOutputFile : LPWSTR;
      pDatatype : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DOC_INFO_1W_x);
   for DOC_INFO_1W_x use record
      pDocName at 0 range 0..63;
      pOutputFile at 0 range 64..127;
      pDatatype at 0 range 128..191;
   end record;
   for DOC_INFO_1W_x'Size use 192;
   for DOC_INFO_1W_x'Alignment use 8;
   subtype DOC_INFO_1W is DOC_INFO_1W_x;
   type PDOC_INFO_1W is access all DOC_INFO_1W_x;
   type LPDOC_INFO_1W is access all DOC_INFO_1W_x;
   subtype DOC_INFO_1 is DOC_INFO_1A;
   subtype PDOC_INFO_1 is PDOC_INFO_1A;
   subtype LPDOC_INFO_1 is LPDOC_INFO_1A;
   type FORM_INFO_1A_x is record
      Flags : DWORD;
      pName : LPSTR;
      Size_x : SIZEL;
      ImageableArea : RECTL;
   end record;
   pragma Convention (C_Pass_By_Copy,FORM_INFO_1A_x);
   for FORM_INFO_1A_x use record
      Flags at 0 range 0..31;
      pName at 0 range 64..127;
      Size_x at 0 range 128..191;
      ImageableArea at 0 range 192..319;
   end record;
   for FORM_INFO_1A_x'Size use 320;
   for FORM_INFO_1A_x'Alignment use 8;
   subtype FORM_INFO_1A is FORM_INFO_1A_x;
   type PFORM_INFO_1A is access all FORM_INFO_1A_x;
   type LPFORM_INFO_1A is access all FORM_INFO_1A_x;
   type FORM_INFO_1W_x is record
      Flags : DWORD;
      pName : LPWSTR;
      Size_x : SIZEL;
      ImageableArea : RECTL;
   end record;
   pragma Convention (C_Pass_By_Copy,FORM_INFO_1W_x);
   for FORM_INFO_1W_x use record
      Flags at 0 range 0..31;
      pName at 0 range 64..127;
      Size_x at 0 range 128..191;
      ImageableArea at 0 range 192..319;
   end record;
   for FORM_INFO_1W_x'Size use 320;
   for FORM_INFO_1W_x'Alignment use 8;
   subtype FORM_INFO_1W is FORM_INFO_1W_x;
   type PFORM_INFO_1W is access all FORM_INFO_1W_x;
   type LPFORM_INFO_1W is access all FORM_INFO_1W_x;
   subtype FORM_INFO_1 is FORM_INFO_1A;
   subtype PFORM_INFO_1 is PFORM_INFO_1A;
   subtype LPFORM_INFO_1 is LPFORM_INFO_1A;
   type FORM_INFO_2A_x is record
      Flags : DWORD;
      pName : LPCSTR;
      Size_x : SIZEL;
      ImageableArea : RECTL;
      pKeyword : LPCSTR;
      StringType : DWORD;
      pMuiDll : LPCSTR;
      dwResourceId : DWORD;
      pDisplayName : LPCSTR;
      wLangId : LANGID;
   end record;
   pragma Convention (C_Pass_By_Copy,FORM_INFO_2A_x);
   for FORM_INFO_2A_x use record
      Flags at 0 range 0..31;
      pName at 0 range 64..127;
      Size_x at 0 range 128..191;
      ImageableArea at 0 range 192..319;
      pKeyword at 0 range 320..383;
      StringType at 0 range 384..415;
      pMuiDll at 0 range 448..511;
      dwResourceId at 0 range 512..543;
      pDisplayName at 0 range 576..639;
      wLangId at 0 range 640..655;
   end record;
   for FORM_INFO_2A_x'Size use 704;
   for FORM_INFO_2A_x'Alignment use 8;
   subtype FORM_INFO_2A is FORM_INFO_2A_x;
   type PFORM_INFO_2A is access all FORM_INFO_2A_x;
   type LPFORM_INFO_2A is access all FORM_INFO_2A_x;
   type FORM_INFO_2W_x is record
      Flags : DWORD;
      pName : LPCWSTR;
      Size_x : SIZEL;
      ImageableArea : RECTL;
      pKeyword : LPCSTR;
      StringType : DWORD;
      pMuiDll : LPCWSTR;
      dwResourceId : DWORD;
      pDisplayName : LPCWSTR;
      wLangId : LANGID;
   end record;
   pragma Convention (C_Pass_By_Copy,FORM_INFO_2W_x);
   for FORM_INFO_2W_x use record
      Flags at 0 range 0..31;
      pName at 0 range 64..127;
      Size_x at 0 range 128..191;
      ImageableArea at 0 range 192..319;
      pKeyword at 0 range 320..383;
      StringType at 0 range 384..415;
      pMuiDll at 0 range 448..511;
      dwResourceId at 0 range 512..543;
      pDisplayName at 0 range 576..639;
      wLangId at 0 range 640..655;
   end record;
   for FORM_INFO_2W_x'Size use 704;
   for FORM_INFO_2W_x'Alignment use 8;
   subtype FORM_INFO_2W is FORM_INFO_2W_x;
   type PFORM_INFO_2W is access all FORM_INFO_2W_x;
   type LPFORM_INFO_2W is access all FORM_INFO_2W_x;
   subtype FORM_INFO_2 is FORM_INFO_2A;
   subtype PFORM_INFO_2 is PFORM_INFO_2A;
   subtype LPFORM_INFO_2 is LPFORM_INFO_2A;
   type DOC_INFO_2A_x is record
      pDocName : LPSTR;
      pOutputFile : LPSTR;
      pDatatype : LPSTR;
      dwMode : DWORD;
      JobId : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DOC_INFO_2A_x);
   for DOC_INFO_2A_x use record
      pDocName at 0 range 0..63;
      pOutputFile at 0 range 64..127;
      pDatatype at 0 range 128..191;
      dwMode at 0 range 192..223;
      JobId at 0 range 224..255;
   end record;
   for DOC_INFO_2A_x'Size use 256;
   for DOC_INFO_2A_x'Alignment use 8;
   subtype DOC_INFO_2A is DOC_INFO_2A_x;
   type PDOC_INFO_2A is access all DOC_INFO_2A_x;
   type LPDOC_INFO_2A is access all DOC_INFO_2A_x;
   type DOC_INFO_2W_x is record
      pDocName : LPWSTR;
      pOutputFile : LPWSTR;
      pDatatype : LPWSTR;
      dwMode : DWORD;
      JobId : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DOC_INFO_2W_x);
   for DOC_INFO_2W_x use record
      pDocName at 0 range 0..63;
      pOutputFile at 0 range 64..127;
      pDatatype at 0 range 128..191;
      dwMode at 0 range 192..223;
      JobId at 0 range 224..255;
   end record;
   for DOC_INFO_2W_x'Size use 256;
   for DOC_INFO_2W_x'Alignment use 8;
   subtype DOC_INFO_2W is DOC_INFO_2W_x;
   type PDOC_INFO_2W is access all DOC_INFO_2W_x;
   type LPDOC_INFO_2W is access all DOC_INFO_2W_x;
   subtype DOC_INFO_2 is DOC_INFO_2A;
   subtype PDOC_INFO_2 is PDOC_INFO_2A;
   subtype LPDOC_INFO_2 is LPDOC_INFO_2A;
   type DOC_INFO_3A_x is record
      pDocName : LPSTR;
      pOutputFile : LPSTR;
      pDatatype : LPSTR;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DOC_INFO_3A_x);
   for DOC_INFO_3A_x use record
      pDocName at 0 range 0..63;
      pOutputFile at 0 range 64..127;
      pDatatype at 0 range 128..191;
      dwFlags at 0 range 192..223;
   end record;
   for DOC_INFO_3A_x'Size use 256;
   for DOC_INFO_3A_x'Alignment use 8;
   subtype DOC_INFO_3A is DOC_INFO_3A_x;
   type PDOC_INFO_3A is access all DOC_INFO_3A_x;
   type LPDOC_INFO_3A is access all DOC_INFO_3A_x;
   type DOC_INFO_3W_x is record
      pDocName : LPWSTR;
      pOutputFile : LPWSTR;
      pDatatype : LPWSTR;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,DOC_INFO_3W_x);
   for DOC_INFO_3W_x use record
      pDocName at 0 range 0..63;
      pOutputFile at 0 range 64..127;
      pDatatype at 0 range 128..191;
      dwFlags at 0 range 192..223;
   end record;
   for DOC_INFO_3W_x'Size use 256;
   for DOC_INFO_3W_x'Alignment use 8;
   subtype DOC_INFO_3W is DOC_INFO_3W_x;
   type PDOC_INFO_3W is access all DOC_INFO_3W_x;
   type LPDOC_INFO_3W is access all DOC_INFO_3W_x;
   subtype DOC_INFO_3 is DOC_INFO_3A;
   subtype PDOC_INFO_3 is PDOC_INFO_3A;
   subtype LPDOC_INFO_3 is LPDOC_INFO_3A;
   type PRINTPROCESSOR_INFO_1A_x is record
      pName : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTPROCESSOR_INFO_1A_x);
   for PRINTPROCESSOR_INFO_1A_x use record
      pName at 0 range 0..63;
   end record;
   for PRINTPROCESSOR_INFO_1A_x'Size use 64;
   for PRINTPROCESSOR_INFO_1A_x'Alignment use 8;
   subtype PRINTPROCESSOR_INFO_1A is PRINTPROCESSOR_INFO_1A_x;
   type PPRINTPROCESSOR_INFO_1A is access all PRINTPROCESSOR_INFO_1A_x;
   type LPPRINTPROCESSOR_INFO_1A is access all PRINTPROCESSOR_INFO_1A_x;
   type PRINTPROCESSOR_INFO_1W_x is record
      pName : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTPROCESSOR_INFO_1W_x);
   for PRINTPROCESSOR_INFO_1W_x use record
      pName at 0 range 0..63;
   end record;
   for PRINTPROCESSOR_INFO_1W_x'Size use 64;
   for PRINTPROCESSOR_INFO_1W_x'Alignment use 8;
   subtype PRINTPROCESSOR_INFO_1W is PRINTPROCESSOR_INFO_1W_x;
   type PPRINTPROCESSOR_INFO_1W is access all PRINTPROCESSOR_INFO_1W_x;
   type LPPRINTPROCESSOR_INFO_1W is access all PRINTPROCESSOR_INFO_1W_x;
   subtype PRINTPROCESSOR_INFO_1 is PRINTPROCESSOR_INFO_1A;
   subtype PPRINTPROCESSOR_INFO_1 is PPRINTPROCESSOR_INFO_1A;
   subtype LPPRINTPROCESSOR_INFO_1 is LPPRINTPROCESSOR_INFO_1A;
   type PRINTPROCESSOR_CAPS_1_x is record
      dwLevel : DWORD;
      dwNupOptions : DWORD;
      dwPageOrderFlags : DWORD;
      dwNumberOfCopies : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTPROCESSOR_CAPS_1_x);
   for PRINTPROCESSOR_CAPS_1_x use record
      dwLevel at 0 range 0..31;
      dwNupOptions at 0 range 32..63;
      dwPageOrderFlags at 0 range 64..95;
      dwNumberOfCopies at 0 range 96..127;
   end record;
   for PRINTPROCESSOR_CAPS_1_x'Size use 128;
   for PRINTPROCESSOR_CAPS_1_x'Alignment use 4;
   subtype PRINTPROCESSOR_CAPS_1 is PRINTPROCESSOR_CAPS_1_x;
   type PPRINTPROCESSOR_CAPS_1 is access all PRINTPROCESSOR_CAPS_1_x;
   type PRINTPROCESSOR_CAPS_2_x is record
      dwLevel : DWORD;
      dwNupOptions : DWORD;
      dwPageOrderFlags : DWORD;
      dwNumberOfCopies : DWORD;
      dwDuplexHandlingCaps : DWORD;
      dwNupDirectionCaps : DWORD;
      dwNupBorderCaps : DWORD;
      dwBookletHandlingCaps : DWORD;
      dwScalingCaps : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTPROCESSOR_CAPS_2_x);
   for PRINTPROCESSOR_CAPS_2_x use record
      dwLevel at 0 range 0..31;
      dwNupOptions at 0 range 32..63;
      dwPageOrderFlags at 0 range 64..95;
      dwNumberOfCopies at 0 range 96..127;
      dwDuplexHandlingCaps at 0 range 128..159;
      dwNupDirectionCaps at 0 range 160..191;
      dwNupBorderCaps at 0 range 192..223;
      dwBookletHandlingCaps at 0 range 224..255;
      dwScalingCaps at 0 range 256..287;
   end record;
   for PRINTPROCESSOR_CAPS_2_x'Size use 288;
   for PRINTPROCESSOR_CAPS_2_x'Alignment use 4;
   subtype PRINTPROCESSOR_CAPS_2 is PRINTPROCESSOR_CAPS_2_x;
   type PPRINTPROCESSOR_CAPS_2 is access all PRINTPROCESSOR_CAPS_2_x;
   type PORT_INFO_1A_x is record
      pName : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PORT_INFO_1A_x);
   for PORT_INFO_1A_x use record
      pName at 0 range 0..63;
   end record;
   for PORT_INFO_1A_x'Size use 64;
   for PORT_INFO_1A_x'Alignment use 8;
   subtype PORT_INFO_1A is PORT_INFO_1A_x;
   type PPORT_INFO_1A is access all PORT_INFO_1A_x;
   type LPPORT_INFO_1A is access all PORT_INFO_1A_x;
   type PORT_INFO_1W_x is record
      pName : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PORT_INFO_1W_x);
   for PORT_INFO_1W_x use record
      pName at 0 range 0..63;
   end record;
   for PORT_INFO_1W_x'Size use 64;
   for PORT_INFO_1W_x'Alignment use 8;
   subtype PORT_INFO_1W is PORT_INFO_1W_x;
   type PPORT_INFO_1W is access all PORT_INFO_1W_x;
   type LPPORT_INFO_1W is access all PORT_INFO_1W_x;
   subtype PORT_INFO_1 is PORT_INFO_1A;
   subtype PPORT_INFO_1 is PPORT_INFO_1A;
   subtype LPPORT_INFO_1 is LPPORT_INFO_1A;
   type PORT_INFO_2A_x is record
      pPortName : LPSTR;
      pMonitorName : LPSTR;
      pDescription : LPSTR;
      fPortType : DWORD;
      Reserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PORT_INFO_2A_x);
   for PORT_INFO_2A_x use record
      pPortName at 0 range 0..63;
      pMonitorName at 0 range 64..127;
      pDescription at 0 range 128..191;
      fPortType at 0 range 192..223;
      Reserved at 0 range 224..255;
   end record;
   for PORT_INFO_2A_x'Size use 256;
   for PORT_INFO_2A_x'Alignment use 8;
   subtype PORT_INFO_2A is PORT_INFO_2A_x;
   type PPORT_INFO_2A is access all PORT_INFO_2A_x;
   type LPPORT_INFO_2A is access all PORT_INFO_2A_x;
   type PORT_INFO_2W_x is record
      pPortName : LPWSTR;
      pMonitorName : LPWSTR;
      pDescription : LPWSTR;
      fPortType : DWORD;
      Reserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PORT_INFO_2W_x);
   for PORT_INFO_2W_x use record
      pPortName at 0 range 0..63;
      pMonitorName at 0 range 64..127;
      pDescription at 0 range 128..191;
      fPortType at 0 range 192..223;
      Reserved at 0 range 224..255;
   end record;
   for PORT_INFO_2W_x'Size use 256;
   for PORT_INFO_2W_x'Alignment use 8;
   subtype PORT_INFO_2W is PORT_INFO_2W_x;
   type PPORT_INFO_2W is access all PORT_INFO_2W_x;
   type LPPORT_INFO_2W is access all PORT_INFO_2W_x;
   subtype PORT_INFO_2 is PORT_INFO_2A;
   subtype PPORT_INFO_2 is PPORT_INFO_2A;
   subtype LPPORT_INFO_2 is LPPORT_INFO_2A;
   type PORT_INFO_3A_x is record
      dwStatus : DWORD;
      pszStatus : LPSTR;
      dwSeverity : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PORT_INFO_3A_x);
   for PORT_INFO_3A_x use record
      dwStatus at 0 range 0..31;
      pszStatus at 0 range 64..127;
      dwSeverity at 0 range 128..159;
   end record;
   for PORT_INFO_3A_x'Size use 192;
   for PORT_INFO_3A_x'Alignment use 8;
   subtype PORT_INFO_3A is PORT_INFO_3A_x;
   type PPORT_INFO_3A is access all PORT_INFO_3A_x;
   type LPPORT_INFO_3A is access all PORT_INFO_3A_x;
   type PORT_INFO_3W_x is record
      dwStatus : DWORD;
      pszStatus : LPWSTR;
      dwSeverity : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PORT_INFO_3W_x);
   for PORT_INFO_3W_x use record
      dwStatus at 0 range 0..31;
      pszStatus at 0 range 64..127;
      dwSeverity at 0 range 128..159;
   end record;
   for PORT_INFO_3W_x'Size use 192;
   for PORT_INFO_3W_x'Alignment use 8;
   subtype PORT_INFO_3W is PORT_INFO_3W_x;
   type PPORT_INFO_3W is access all PORT_INFO_3W_x;
   type LPPORT_INFO_3W is access all PORT_INFO_3W_x;
   subtype PORT_INFO_3 is PORT_INFO_3A;
   subtype PPORT_INFO_3 is PPORT_INFO_3A;
   subtype LPPORT_INFO_3 is LPPORT_INFO_3A;
   type MONITOR_INFO_1A_x is record
      pName : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,MONITOR_INFO_1A_x);
   for MONITOR_INFO_1A_x use record
      pName at 0 range 0..63;
   end record;
   for MONITOR_INFO_1A_x'Size use 64;
   for MONITOR_INFO_1A_x'Alignment use 8;
   subtype MONITOR_INFO_1A is MONITOR_INFO_1A_x;
   type PMONITOR_INFO_1A is access all MONITOR_INFO_1A_x;
   type LPMONITOR_INFO_1A is access all MONITOR_INFO_1A_x;
   type MONITOR_INFO_1W_x is record
      pName : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,MONITOR_INFO_1W_x);
   for MONITOR_INFO_1W_x use record
      pName at 0 range 0..63;
   end record;
   for MONITOR_INFO_1W_x'Size use 64;
   for MONITOR_INFO_1W_x'Alignment use 8;
   subtype MONITOR_INFO_1W is MONITOR_INFO_1W_x;
   type PMONITOR_INFO_1W is access all MONITOR_INFO_1W_x;
   type LPMONITOR_INFO_1W is access all MONITOR_INFO_1W_x;
   subtype MONITOR_INFO_1 is MONITOR_INFO_1A;
   subtype PMONITOR_INFO_1 is PMONITOR_INFO_1A;
   subtype LPMONITOR_INFO_1 is LPMONITOR_INFO_1A;
   type MONITOR_INFO_2A_x is record
      pName : LPSTR;
      pEnvironment : LPSTR;
      pDLLName : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,MONITOR_INFO_2A_x);
   for MONITOR_INFO_2A_x use record
      pName at 0 range 0..63;
      pEnvironment at 0 range 64..127;
      pDLLName at 0 range 128..191;
   end record;
   for MONITOR_INFO_2A_x'Size use 192;
   for MONITOR_INFO_2A_x'Alignment use 8;
   subtype MONITOR_INFO_2A is MONITOR_INFO_2A_x;
   type PMONITOR_INFO_2A is access all MONITOR_INFO_2A_x;
   type LPMONITOR_INFO_2A is access all MONITOR_INFO_2A_x;
   type MONITOR_INFO_2W_x is record
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pDLLName : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,MONITOR_INFO_2W_x);
   for MONITOR_INFO_2W_x use record
      pName at 0 range 0..63;
      pEnvironment at 0 range 64..127;
      pDLLName at 0 range 128..191;
   end record;
   for MONITOR_INFO_2W_x'Size use 192;
   for MONITOR_INFO_2W_x'Alignment use 8;
   subtype MONITOR_INFO_2W is MONITOR_INFO_2W_x;
   type PMONITOR_INFO_2W is access all MONITOR_INFO_2W_x;
   type LPMONITOR_INFO_2W is access all MONITOR_INFO_2W_x;
   subtype MONITOR_INFO_2 is MONITOR_INFO_2A;
   subtype PMONITOR_INFO_2 is PMONITOR_INFO_2A;
   subtype LPMONITOR_INFO_2 is LPMONITOR_INFO_2A;
   type DATATYPES_INFO_1A_x is record
      pName : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DATATYPES_INFO_1A_x);
   for DATATYPES_INFO_1A_x use record
      pName at 0 range 0..63;
   end record;
   for DATATYPES_INFO_1A_x'Size use 64;
   for DATATYPES_INFO_1A_x'Alignment use 8;
   subtype DATATYPES_INFO_1A is DATATYPES_INFO_1A_x;
   type PDATATYPES_INFO_1A is access all DATATYPES_INFO_1A_x;
   type LPDATATYPES_INFO_1A is access all DATATYPES_INFO_1A_x;
   type DATATYPES_INFO_1W_x is record
      pName : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,DATATYPES_INFO_1W_x);
   for DATATYPES_INFO_1W_x use record
      pName at 0 range 0..63;
   end record;
   for DATATYPES_INFO_1W_x'Size use 64;
   for DATATYPES_INFO_1W_x'Alignment use 8;
   subtype DATATYPES_INFO_1W is DATATYPES_INFO_1W_x;
   type PDATATYPES_INFO_1W is access all DATATYPES_INFO_1W_x;
   type LPDATATYPES_INFO_1W is access all DATATYPES_INFO_1W_x;
   subtype DATATYPES_INFO_1 is DATATYPES_INFO_1A;
   subtype PDATATYPES_INFO_1 is PDATATYPES_INFO_1A;
   subtype LPDATATYPES_INFO_1 is LPDATATYPES_INFO_1A;
   type PRINTER_DEFAULTSA_x is record
      pDatatype : LPSTR;
      pDevMode_x : LPDEVMODEA;
      DesiredAccess : ACCESS_MASK;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_DEFAULTSA_x);
   for PRINTER_DEFAULTSA_x use record
      pDatatype at 0 range 0..63;
      pDevMode_x at 0 range 64..127;
      DesiredAccess at 0 range 128..159;
   end record;
   for PRINTER_DEFAULTSA_x'Size use 192;
   for PRINTER_DEFAULTSA_x'Alignment use 8;
   subtype PRINTER_DEFAULTSA is PRINTER_DEFAULTSA_x;
   type PPRINTER_DEFAULTSA is access all PRINTER_DEFAULTSA_x;
   type LPPRINTER_DEFAULTSA is access all PRINTER_DEFAULTSA_x;
   type PRINTER_DEFAULTSW_x is record
      pDatatype : LPWSTR;
      pDevMode_x : LPDEVMODEW;
      DesiredAccess : ACCESS_MASK;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_DEFAULTSW_x);
   for PRINTER_DEFAULTSW_x use record
      pDatatype at 0 range 0..63;
      pDevMode_x at 0 range 64..127;
      DesiredAccess at 0 range 128..159;
   end record;
   for PRINTER_DEFAULTSW_x'Size use 192;
   for PRINTER_DEFAULTSW_x'Alignment use 8;
   subtype PRINTER_DEFAULTSW is PRINTER_DEFAULTSW_x;
   type PPRINTER_DEFAULTSW is access all PRINTER_DEFAULTSW_x;
   type LPPRINTER_DEFAULTSW is access all PRINTER_DEFAULTSW_x;
   subtype PRINTER_DEFAULTS is PRINTER_DEFAULTSA;
   subtype PPRINTER_DEFAULTS is PPRINTER_DEFAULTSA;
   subtype LPPRINTER_DEFAULTS is LPPRINTER_DEFAULTSA;
   type PRINTER_ENUM_VALUESA_x is record
      pValueName : LPSTR;
      cbValueName : DWORD;
      dwType : DWORD;
      pData : LPBYTE;
      cbData : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_ENUM_VALUESA_x);
   for PRINTER_ENUM_VALUESA_x use record
      pValueName at 0 range 0..63;
      cbValueName at 0 range 64..95;
      dwType at 0 range 96..127;
      pData at 0 range 128..191;
      cbData at 0 range 192..223;
   end record;
   for PRINTER_ENUM_VALUESA_x'Size use 256;
   for PRINTER_ENUM_VALUESA_x'Alignment use 8;
   subtype PRINTER_ENUM_VALUESA is PRINTER_ENUM_VALUESA_x;
   type PPRINTER_ENUM_VALUESA is access all PRINTER_ENUM_VALUESA_x;
   type LPPRINTER_ENUM_VALUESA is access all PRINTER_ENUM_VALUESA_x;
   type PRINTER_ENUM_VALUESW_x is record
      pValueName : LPWSTR;
      cbValueName : DWORD;
      dwType : DWORD;
      pData : LPBYTE;
      cbData : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_ENUM_VALUESW_x);
   for PRINTER_ENUM_VALUESW_x use record
      pValueName at 0 range 0..63;
      cbValueName at 0 range 64..95;
      dwType at 0 range 96..127;
      pData at 0 range 128..191;
      cbData at 0 range 192..223;
   end record;
   for PRINTER_ENUM_VALUESW_x'Size use 256;
   for PRINTER_ENUM_VALUESW_x'Alignment use 8;
   subtype PRINTER_ENUM_VALUESW is PRINTER_ENUM_VALUESW_x;
   type PPRINTER_ENUM_VALUESW is access all PRINTER_ENUM_VALUESW_x;
   type LPPRINTER_ENUM_VALUESW is access all PRINTER_ENUM_VALUESW_x;
   subtype PRINTER_ENUM_VALUES is PRINTER_ENUM_VALUESA;
   subtype PPRINTER_ENUM_VALUES is PPRINTER_ENUM_VALUESA;
   subtype LPPRINTER_ENUM_VALUES is LPPRINTER_ENUM_VALUESA;
   function EnumPrintersA(
      Flags : DWORD;
      Name : LPSTR;
      Level : DWORD;
      pPrinterEnum : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumPrintersA,"EnumPrintersA");
   function EnumPrintersW(
      Flags : DWORD;
      Name : LPWSTR;
      Level : DWORD;
      pPrinterEnum : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumPrintersW,"EnumPrintersW");
   function GetSpoolFileHandle(
      hPrinter : HANDLE
   ) return HANDLE;
   pragma import (Cpp,GetSpoolFileHandle,"GetSpoolFileHandle");
   function CommitSpoolData(
      hPrinter : HANDLE;
      hSpoolFile : HANDLE;
      cbCommit : DWORD
   ) return HANDLE;
   pragma import (Cpp,CommitSpoolData,"CommitSpoolData");
   function CloseSpoolFileHandle(
      hPrinter : HANDLE;
      hSpoolFile : HANDLE
   ) return BOOL;
   pragma import (Cpp,CloseSpoolFileHandle,"CloseSpoolFileHandle");
   function OpenPrinterA(
      pPrinterName : LPSTR;
      phPrinter : LPHANDLE;
      pDefault : LPPRINTER_DEFAULTSA
   ) return BOOL;
   pragma import (Cpp,OpenPrinterA,"OpenPrinterA");
   function OpenPrinterW(
      pPrinterName : LPWSTR;
      phPrinter : LPHANDLE;
      pDefault : LPPRINTER_DEFAULTSW
   ) return BOOL;
   pragma import (Cpp,OpenPrinterW,"OpenPrinterW");
   function ResetPrinterA(
      hPrinter : HANDLE;
      pDefault : LPPRINTER_DEFAULTSA
   ) return BOOL;
   pragma import (Cpp,ResetPrinterA,"ResetPrinterA");
   function ResetPrinterW(
      hPrinter : HANDLE;
      pDefault : LPPRINTER_DEFAULTSW
   ) return BOOL;
   pragma import (Cpp,ResetPrinterW,"ResetPrinterW");
   function SetJobA(
      hPrinter : HANDLE;
      JobId : DWORD;
      Level : DWORD;
      pJob : LPBYTE;
      Command : DWORD
   ) return BOOL;
   pragma import (Cpp,SetJobA,"SetJobA");
   function SetJobW(
      hPrinter : HANDLE;
      JobId : DWORD;
      Level : DWORD;
      pJob : LPBYTE;
      Command : DWORD
   ) return BOOL;
   pragma import (Cpp,SetJobW,"SetJobW");
   function GetJobA(
      hPrinter : HANDLE;
      JobId : DWORD;
      Level : DWORD;
      pJob : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetJobA,"GetJobA");
   function GetJobW(
      hPrinter : HANDLE;
      JobId : DWORD;
      Level : DWORD;
      pJob : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetJobW,"GetJobW");
   function EnumJobsA(
      hPrinter : HANDLE;
      FirstJob : DWORD;
      NoJobs : DWORD;
      Level : DWORD;
      pJob : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumJobsA,"EnumJobsA");
   function EnumJobsW(
      hPrinter : HANDLE;
      FirstJob : DWORD;
      NoJobs : DWORD;
      Level : DWORD;
      pJob : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumJobsW,"EnumJobsW");
   function AddPrinterA(
      pName : LPSTR;
      Level : DWORD;
      pPrinter : LPBYTE
   ) return HANDLE;
   pragma import (Cpp,AddPrinterA,"AddPrinterA");
   function AddPrinterW(
      pName : LPWSTR;
      Level : DWORD;
      pPrinter : LPBYTE
   ) return HANDLE;
   pragma import (Cpp,AddPrinterW,"AddPrinterW");
   function DeletePrinter(
      hPrinter : HANDLE
   ) return BOOL;
   pragma import (Cpp,DeletePrinter,"DeletePrinter");
   function SetPrinterA(
      hPrinter : HANDLE;
      Level : DWORD;
      pPrinter : LPBYTE;
      Command : DWORD
   ) return BOOL;
   pragma import (Cpp,SetPrinterA,"SetPrinterA");
   function SetPrinterW(
      hPrinter : HANDLE;
      Level : DWORD;
      pPrinter : LPBYTE;
      Command : DWORD
   ) return BOOL;
   pragma import (Cpp,SetPrinterW,"SetPrinterW");
   function GetPrinterA(
      hPrinter : HANDLE;
      Level : DWORD;
      pPrinter : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetPrinterA,"GetPrinterA");
   function GetPrinterW(
      hPrinter : HANDLE;
      Level : DWORD;
      pPrinter : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetPrinterW,"GetPrinterW");
   function AddPrinterDriverA(
      pName : LPSTR;
      Level : DWORD;
      pDriverInfo : LPBYTE
   ) return BOOL;
   pragma import (Cpp,AddPrinterDriverA,"AddPrinterDriverA");
   function AddPrinterDriverW(
      pName : LPWSTR;
      Level : DWORD;
      pDriverInfo : LPBYTE
   ) return BOOL;
   pragma import (Cpp,AddPrinterDriverW,"AddPrinterDriverW");
   function AddPrinterDriverExA(
      pName : LPSTR;
      Level : DWORD;
      lpbDriverInfo : PBYTE;
      dwFileCopyFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,AddPrinterDriverExA,"AddPrinterDriverExA");
   function AddPrinterDriverExW(
      pName : LPWSTR;
      Level : DWORD;
      lpbDriverInfo : PBYTE;
      dwFileCopyFlags : DWORD
   ) return BOOL;
   pragma import (Cpp,AddPrinterDriverExW,"AddPrinterDriverExW");
   function EnumPrinterDriversA(
      pName : LPSTR;
      pEnvironment : LPSTR;
      Level : DWORD;
      pDriverInfo : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumPrinterDriversA,"EnumPrinterDriversA");
   function EnumPrinterDriversW(
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      Level : DWORD;
      pDriverInfo : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumPrinterDriversW,"EnumPrinterDriversW");
   function GetPrinterDriverA(
      hPrinter : HANDLE;
      pEnvironment : LPSTR;
      Level : DWORD;
      pDriverInfo : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetPrinterDriverA,"GetPrinterDriverA");
   function GetPrinterDriverW(
      hPrinter : HANDLE;
      pEnvironment : LPWSTR;
      Level : DWORD;
      pDriverInfo : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetPrinterDriverW,"GetPrinterDriverW");
   function GetPrinterDriverDirectoryA(
      pName : LPSTR;
      pEnvironment : LPSTR;
      Level : DWORD;
      pDriverDirectory : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetPrinterDriverDirectoryA,"GetPrinterDriverDirectoryA");
   function GetPrinterDriverDirectoryW(
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      Level : DWORD;
      pDriverDirectory : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetPrinterDriverDirectoryW,"GetPrinterDriverDirectoryW");
   function DeletePrinterDriverA(
      pName : LPSTR;
      pEnvironment : LPSTR;
      pDriverName : LPSTR
   ) return BOOL;
   pragma import (Cpp,DeletePrinterDriverA,"DeletePrinterDriverA");
   function DeletePrinterDriverW(
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pDriverName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,DeletePrinterDriverW,"DeletePrinterDriverW");
   function DeletePrinterDriverExA(
      pName : LPSTR;
      pEnvironment : LPSTR;
      pDriverName : LPSTR;
      dwDeleteFlag : DWORD;
      dwVersionFlag : DWORD
   ) return BOOL;
   pragma import (Cpp,DeletePrinterDriverExA,"DeletePrinterDriverExA");
   function DeletePrinterDriverExW(
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pDriverName : LPWSTR;
      dwDeleteFlag : DWORD;
      dwVersionFlag : DWORD
   ) return BOOL;
   pragma import (Cpp,DeletePrinterDriverExW,"DeletePrinterDriverExW");
   function AddPrintProcessorA(
      pName : LPSTR;
      pEnvironment : LPSTR;
      pPathName : LPSTR;
      pPrintProcessorName : LPSTR
   ) return BOOL;
   pragma import (Cpp,AddPrintProcessorA,"AddPrintProcessorA");
   function AddPrintProcessorW(
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pPathName : LPWSTR;
      pPrintProcessorName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,AddPrintProcessorW,"AddPrintProcessorW");
   function EnumPrintProcessorsA(
      pName : LPSTR;
      pEnvironment : LPSTR;
      Level : DWORD;
      pPrintProcessorInfo : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumPrintProcessorsA,"EnumPrintProcessorsA");
   function EnumPrintProcessorsW(
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      Level : DWORD;
      pPrintProcessorInfo : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumPrintProcessorsW,"EnumPrintProcessorsW");
   function GetPrintProcessorDirectoryA(
      pName : LPSTR;
      pEnvironment : LPSTR;
      Level : DWORD;
      pPrintProcessorInfo : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetPrintProcessorDirectoryA,"GetPrintProcessorDirectoryA");
   function GetPrintProcessorDirectoryW(
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      Level : DWORD;
      pPrintProcessorInfo : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetPrintProcessorDirectoryW,"GetPrintProcessorDirectoryW");
   function EnumPrintProcessorDatatypesA(
      pName : LPSTR;
      pPrintProcessorName : LPSTR;
      Level : DWORD;
      pDatatypes : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumPrintProcessorDatatypesA,"EnumPrintProcessorDatatypesA");
   function EnumPrintProcessorDatatypesW(
      pName : LPWSTR;
      pPrintProcessorName : LPWSTR;
      Level : DWORD;
      pDatatypes : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumPrintProcessorDatatypesW,"EnumPrintProcessorDatatypesW");
   function DeletePrintProcessorA(
      pName : LPSTR;
      pEnvironment : LPSTR;
      pPrintProcessorName : LPSTR
   ) return BOOL;
   pragma import (Cpp,DeletePrintProcessorA,"DeletePrintProcessorA");
   function DeletePrintProcessorW(
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pPrintProcessorName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,DeletePrintProcessorW,"DeletePrintProcessorW");
   function StartDocPrinterA(
      hPrinter : HANDLE;
      Level : DWORD;
      pDocInfo : LPBYTE
   ) return DWORD;
   pragma import (Cpp,StartDocPrinterA,"StartDocPrinterA");
   function StartDocPrinterW(
      hPrinter : HANDLE;
      Level : DWORD;
      pDocInfo : LPBYTE
   ) return DWORD;
   pragma import (Cpp,StartDocPrinterW,"StartDocPrinterW");
   function StartPagePrinter(
      hPrinter : HANDLE
   ) return BOOL;
   pragma import (Cpp,StartPagePrinter,"StartPagePrinter");
   function WritePrinter(
      hPrinter : HANDLE;
      pBuf : LPVOID;
      cbBuf : DWORD;
      pcWritten : LPDWORD
   ) return BOOL;
   pragma import (Cpp,WritePrinter,"WritePrinter");
   function FlushPrinter(
      hPrinter : HANDLE;
      pBuf : LPVOID;
      cbBuf : DWORD;
      pcWritten : LPDWORD;
      cSleep : DWORD
   ) return BOOL;
   pragma import (Cpp,FlushPrinter,"FlushPrinter");
   function EndPagePrinter(
      hPrinter : HANDLE
   ) return BOOL;
   pragma import (Cpp,EndPagePrinter,"EndPagePrinter");
   function AbortPrinter(
      hPrinter : HANDLE
   ) return BOOL;
   pragma import (Cpp,AbortPrinter,"AbortPrinter");
   function ReadPrinter(
      hPrinter : HANDLE;
      pBuf : LPVOID;
      cbBuf : DWORD;
      pNoBytesRead : LPDWORD
   ) return BOOL;
   pragma import (Cpp,ReadPrinter,"ReadPrinter");
   function EndDocPrinter(
      hPrinter : HANDLE
   ) return BOOL;
   pragma import (Cpp,EndDocPrinter,"EndDocPrinter");
   function AddJobA(
      hPrinter : HANDLE;
      Level : DWORD;
      pData : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,AddJobA,"AddJobA");
   function AddJobW(
      hPrinter : HANDLE;
      Level : DWORD;
      pData : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,AddJobW,"AddJobW");
   function ScheduleJob(
      hPrinter : HANDLE;
      JobId : DWORD
   ) return BOOL;
   pragma import (Cpp,ScheduleJob,"ScheduleJob");
   function PrinterProperties(
      hWnd_x : HWND;
      hPrinter : HANDLE
   ) return BOOL;
   pragma import (Cpp,PrinterProperties,"PrinterProperties");
   function DocumentPropertiesA(
      hWnd_x : HWND;
      hPrinter : HANDLE;
      pDeviceName : LPSTR;
      pDevModeOutput : PDEVMODEA;
      pDevModeInput : PDEVMODEA;
      fMode : DWORD
   ) return LONG;
   pragma import (Cpp,DocumentPropertiesA,"DocumentPropertiesA");
   function DocumentPropertiesW(
      hWnd_x : HWND;
      hPrinter : HANDLE;
      pDeviceName : LPWSTR;
      pDevModeOutput : PDEVMODEW;
      pDevModeInput : PDEVMODEW;
      fMode : DWORD
   ) return LONG;
   pragma import (Cpp,DocumentPropertiesW,"DocumentPropertiesW");
   function AdvancedDocumentPropertiesA(
      hWnd_x : HWND;
      hPrinter : HANDLE;
      pDeviceName : LPSTR;
      pDevModeOutput : PDEVMODEA;
      pDevModeInput : PDEVMODEA
   ) return LONG;
   pragma import (Cpp,AdvancedDocumentPropertiesA,"AdvancedDocumentPropertiesA");
   function AdvancedDocumentPropertiesW(
      hWnd_x : HWND;
      hPrinter : HANDLE;
      pDeviceName : LPWSTR;
      pDevModeOutput : PDEVMODEW;
      pDevModeInput : PDEVMODEW
   ) return LONG;
   pragma import (Cpp,AdvancedDocumentPropertiesW,"AdvancedDocumentPropertiesW");
   function ExtDeviceMode(
      hWnd_x : HWND;
      hInst : HANDLE;
      pDevModeOutput : LPDEVMODEA;
      pDeviceName : LPSTR;
      pPort : LPSTR;
      pDevModeInput : LPDEVMODEA;
      pProfile : LPSTR;
      fMode : DWORD
   ) return LONG;
   pragma import (Cpp,ExtDeviceMode,"ExtDeviceMode");
   function GetPrinterDataA(
      hPrinter : HANDLE;
      pValueName : LPSTR;
      pType : LPDWORD;
      pData : LPBYTE;
      nSize : DWORD;
      pcbNeeded : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetPrinterDataA,"GetPrinterDataA");
   function GetPrinterDataW(
      hPrinter : HANDLE;
      pValueName : LPWSTR;
      pType : LPDWORD;
      pData : LPBYTE;
      nSize : DWORD;
      pcbNeeded : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetPrinterDataW,"GetPrinterDataW");
   function GetPrinterDataExA(
      hPrinter : HANDLE;
      pKeyName : LPCSTR;
      pValueName : LPCSTR;
      pType : LPDWORD;
      pData : LPBYTE;
      nSize : DWORD;
      pcbNeeded : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetPrinterDataExA,"GetPrinterDataExA");
   function GetPrinterDataExW(
      hPrinter : HANDLE;
      pKeyName : LPCWSTR;
      pValueName : LPCWSTR;
      pType : LPDWORD;
      pData : LPBYTE;
      nSize : DWORD;
      pcbNeeded : LPDWORD
   ) return DWORD;
   pragma import (Cpp,GetPrinterDataExW,"GetPrinterDataExW");
   function EnumPrinterDataA(
      hPrinter : HANDLE;
      dwIndex : DWORD;
      pValueName : LPSTR;
      cbValueName : DWORD;
      pcbValueName : LPDWORD;
      pType : LPDWORD;
      pData : LPBYTE;
      cbData : DWORD;
      pcbData : LPDWORD
   ) return DWORD;
   pragma import (Cpp,EnumPrinterDataA,"EnumPrinterDataA");
   function EnumPrinterDataW(
      hPrinter : HANDLE;
      dwIndex : DWORD;
      pValueName : LPWSTR;
      cbValueName : DWORD;
      pcbValueName : LPDWORD;
      pType : LPDWORD;
      pData : LPBYTE;
      cbData : DWORD;
      pcbData : LPDWORD
   ) return DWORD;
   pragma import (Cpp,EnumPrinterDataW,"EnumPrinterDataW");
   function EnumPrinterDataExA(
      hPrinter : HANDLE;
      pKeyName : LPCSTR;
      pEnumValues : LPBYTE;
      cbEnumValues : DWORD;
      pcbEnumValues : LPDWORD;
      pnEnumValues : LPDWORD
   ) return DWORD;
   pragma import (Cpp,EnumPrinterDataExA,"EnumPrinterDataExA");
   function EnumPrinterDataExW(
      hPrinter : HANDLE;
      pKeyName : LPCWSTR;
      pEnumValues : LPBYTE;
      cbEnumValues : DWORD;
      pcbEnumValues : LPDWORD;
      pnEnumValues : LPDWORD
   ) return DWORD;
   pragma import (Cpp,EnumPrinterDataExW,"EnumPrinterDataExW");
   function EnumPrinterKeyA(
      hPrinter : HANDLE;
      pKeyName : LPCSTR;
      pSubkey : LPSTR;
      cbSubkey : DWORD;
      pcbSubkey : LPDWORD
   ) return DWORD;
   pragma import (Cpp,EnumPrinterKeyA,"EnumPrinterKeyA");
   function EnumPrinterKeyW(
      hPrinter : HANDLE;
      pKeyName : LPCWSTR;
      pSubkey : LPWSTR;
      cbSubkey : DWORD;
      pcbSubkey : LPDWORD
   ) return DWORD;
   pragma import (Cpp,EnumPrinterKeyW,"EnumPrinterKeyW");
   function SetPrinterDataA(
      hPrinter : HANDLE;
      pValueName : LPSTR;
      type_x : DWORD;
      pData : LPBYTE;
      cbData : DWORD
   ) return DWORD;
   pragma import (Cpp,SetPrinterDataA,"SetPrinterDataA");
   function SetPrinterDataW(
      hPrinter : HANDLE;
      pValueName : LPWSTR;
      type_x : DWORD;
      pData : LPBYTE;
      cbData : DWORD
   ) return DWORD;
   pragma import (Cpp,SetPrinterDataW,"SetPrinterDataW");
   function SetPrinterDataExA(
      hPrinter : HANDLE;
      pKeyName : LPCSTR;
      pValueName : LPCSTR;
      type_x : DWORD;
      pData : LPBYTE;
      cbData : DWORD
   ) return DWORD;
   pragma import (Cpp,SetPrinterDataExA,"SetPrinterDataExA");
   function SetPrinterDataExW(
      hPrinter : HANDLE;
      pKeyName : LPCWSTR;
      pValueName : LPCWSTR;
      type_x : DWORD;
      pData : LPBYTE;
      cbData : DWORD
   ) return DWORD;
   pragma import (Cpp,SetPrinterDataExW,"SetPrinterDataExW");
   function DeletePrinterDataA(
      hPrinter : HANDLE;
      pValueName : LPSTR
   ) return DWORD;
   pragma import (Cpp,DeletePrinterDataA,"DeletePrinterDataA");
   function DeletePrinterDataW(
      hPrinter : HANDLE;
      pValueName : LPWSTR
   ) return DWORD;
   pragma import (Cpp,DeletePrinterDataW,"DeletePrinterDataW");
   function DeletePrinterDataExA(
      hPrinter : HANDLE;
      pKeyName : LPCSTR;
      pValueName : LPCSTR
   ) return DWORD;
   pragma import (Cpp,DeletePrinterDataExA,"DeletePrinterDataExA");
   function DeletePrinterDataExW(
      hPrinter : HANDLE;
      pKeyName : LPCWSTR;
      pValueName : LPCWSTR
   ) return DWORD;
   pragma import (Cpp,DeletePrinterDataExW,"DeletePrinterDataExW");
   function DeletePrinterKeyA(
      hPrinter : HANDLE;
      pKeyName : LPCSTR
   ) return DWORD;
   pragma import (Cpp,DeletePrinterKeyA,"DeletePrinterKeyA");
   function DeletePrinterKeyW(
      hPrinter : HANDLE;
      pKeyName : LPCWSTR
   ) return DWORD;
   pragma import (Cpp,DeletePrinterKeyW,"DeletePrinterKeyW");
   type PRINTER_NOTIFY_OPTIONS_TYPE_x is record
      type_x : WORD;
      Reserved0 : WORD;
      Reserved1 : DWORD;
      Reserved2 : DWORD;
      Count : DWORD;
      pFields : PWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_NOTIFY_OPTIONS_TYPE_x);
   for PRINTER_NOTIFY_OPTIONS_TYPE_x use record
      type_x at 0 range 0..15;
      Reserved0 at 0 range 16..31;
      Reserved1 at 0 range 32..63;
      Reserved2 at 0 range 64..95;
      Count at 0 range 96..127;
      pFields at 0 range 128..191;
   end record;
   for PRINTER_NOTIFY_OPTIONS_TYPE_x'Size use 192;
   for PRINTER_NOTIFY_OPTIONS_TYPE_x'Alignment use 8;
   subtype PRINTER_NOTIFY_OPTIONS_TYPE is PRINTER_NOTIFY_OPTIONS_TYPE_x;
   type PPRINTER_NOTIFY_OPTIONS_TYPE is access all PRINTER_NOTIFY_OPTIONS_TYPE_x;
   type LPPRINTER_NOTIFY_OPTIONS_TYPE is access all PRINTER_NOTIFY_OPTIONS_TYPE_x;
   type PRINTER_NOTIFY_OPTIONS_x is record
      Version : DWORD;
      Flags : DWORD;
      Count : DWORD;
      pTypes : PPRINTER_NOTIFY_OPTIONS_TYPE;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_NOTIFY_OPTIONS_x);
   for PRINTER_NOTIFY_OPTIONS_x use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      Count at 0 range 64..95;
      pTypes at 0 range 128..191;
   end record;
   for PRINTER_NOTIFY_OPTIONS_x'Size use 192;
   for PRINTER_NOTIFY_OPTIONS_x'Alignment use 8;
   subtype PRINTER_NOTIFY_OPTIONS is PRINTER_NOTIFY_OPTIONS_x;
   type PPRINTER_NOTIFY_OPTIONS is access all PRINTER_NOTIFY_OPTIONS_x;
   type LPPRINTER_NOTIFY_OPTIONS is access all PRINTER_NOTIFY_OPTIONS_x;
   type Anonymous_Record_251 is record
      cbBuf : DWORD;
      pBuf : LPVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_251);
   for Anonymous_Record_251 use record
      cbBuf at 0 range 0..31;
      pBuf at 0 range 64..127;
   end record;
   for Anonymous_Record_251'Size use 128;
   for Anonymous_Record_251'Alignment use 8;
   type Anonymous_Record_250_adwData_Array is array(1..2) of DWORD; -- Auto Generated Dependancy
   type Anonymous_Record_250 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            adwData : Anonymous_Record_250_adwData_Array;
         when others => 
            field_1 : Anonymous_Record_251;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_250);
   pragma Unchecked_Union (Anonymous_Record_250);
   for Anonymous_Record_250'Size use 128;
   for Anonymous_Record_250'Alignment use 8;
   type PRINTER_NOTIFY_INFO_DATA_x is record
      type_x : WORD;
      Field : WORD;
      Reserved : DWORD;
      Id : DWORD;
      field_1 : Anonymous_Record_250;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_NOTIFY_INFO_DATA_x);
   for PRINTER_NOTIFY_INFO_DATA_x use record
      type_x at 0 range 0..15;
      Field at 0 range 16..31;
      Reserved at 0 range 32..63;
      Id at 0 range 64..95;
      field_1 at 0 range 96..223;
   end record;
   for PRINTER_NOTIFY_INFO_DATA_x'Size use 256;
   for PRINTER_NOTIFY_INFO_DATA_x'Alignment use 8;
   subtype PRINTER_NOTIFY_INFO_DATA is PRINTER_NOTIFY_INFO_DATA_x;
   type PPRINTER_NOTIFY_INFO_DATA is access all PRINTER_NOTIFY_INFO_DATA_x;
   type LPPRINTER_NOTIFY_INFO_DATA is access all PRINTER_NOTIFY_INFO_DATA_x;
   type PRINTER_NOTIFY_INFO_x_aData_Array is array(1..1) of PRINTER_NOTIFY_INFO_DATA; -- Auto Generated Dependancy
   type PRINTER_NOTIFY_INFO_x is record
      Version : DWORD;
      Flags : DWORD;
      Count : DWORD;
      aData : PRINTER_NOTIFY_INFO_x_aData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_NOTIFY_INFO_x);
   for PRINTER_NOTIFY_INFO_x use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      Count at 0 range 64..95;
      aData at 0 range 128..383;
   end record;
   for PRINTER_NOTIFY_INFO_x'Size use 384;
   for PRINTER_NOTIFY_INFO_x'Alignment use 8;
   subtype PRINTER_NOTIFY_INFO is PRINTER_NOTIFY_INFO_x;
   type PPRINTER_NOTIFY_INFO is access all PRINTER_NOTIFY_INFO_x;
   type LPPRINTER_NOTIFY_INFO is access all PRINTER_NOTIFY_INFO_x;
   type BINARY_CONTAINER_x is record
      cbBuf : DWORD;
      pData : LPBYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,BINARY_CONTAINER_x);
   for BINARY_CONTAINER_x use record
      cbBuf at 0 range 0..31;
      pData at 0 range 64..127;
   end record;
   for BINARY_CONTAINER_x'Size use 128;
   for BINARY_CONTAINER_x'Alignment use 8;
   subtype BINARY_CONTAINER is BINARY_CONTAINER_x;
   type PBINARY_CONTAINER is access all BINARY_CONTAINER_x;
   type Anonymous_Record_252 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            bData : BOOL;
         when 1 =>
            iData : LONG;
         when 2 =>
            sData : LPWSTR;
         when 3 =>
            fData : FLOAT;
         when others => 
            biData : BINARY_CONTAINER;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_252);
   pragma Unchecked_Union (Anonymous_Record_252);
   for Anonymous_Record_252'Size use 128;
   for Anonymous_Record_252'Alignment use 8;
   type BIDI_DATA_x is record
      dwBidiType : DWORD;
      field_1 : Anonymous_Record_252;
   end record;
   pragma Convention (C_Pass_By_Copy,BIDI_DATA_x);
   for BIDI_DATA_x use record
      dwBidiType at 0 range 0..31;
      field_1 at 0 range 32..159;
   end record;
   for BIDI_DATA_x'Size use 192;
   for BIDI_DATA_x'Alignment use 8;
   subtype BIDI_DATA is BIDI_DATA_x;
   type PBIDI_DATA is access all BIDI_DATA_x;
   type LPBIDI_DATA is access all BIDI_DATA_x;
   type BIDI_REQUEST_DATA_x is record
      dwReqNumber : DWORD;
      pSchema : LPWSTR;
      data : BIDI_DATA;
   end record;
   pragma Convention (C_Pass_By_Copy,BIDI_REQUEST_DATA_x);
   for BIDI_REQUEST_DATA_x use record
      dwReqNumber at 0 range 0..31;
      pSchema at 0 range 64..127;
      data at 0 range 128..319;
   end record;
   for BIDI_REQUEST_DATA_x'Size use 320;
   for BIDI_REQUEST_DATA_x'Alignment use 8;
   subtype BIDI_REQUEST_DATA is BIDI_REQUEST_DATA_x;
   type PBIDI_REQUEST_DATA is access all BIDI_REQUEST_DATA_x;
   type LPBIDI_REQUEST_DATA is access all BIDI_REQUEST_DATA_x;
   type BIDI_REQUEST_CONTAINER_x_aData_Array is array(1..1) of BIDI_REQUEST_DATA; -- Auto Generated Dependancy
   type BIDI_REQUEST_CONTAINER_x is record
      Version : DWORD;
      Flags : DWORD;
      Count : DWORD;
      aData : BIDI_REQUEST_CONTAINER_x_aData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,BIDI_REQUEST_CONTAINER_x);
   for BIDI_REQUEST_CONTAINER_x use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      Count at 0 range 64..95;
      aData at 0 range 128..447;
   end record;
   for BIDI_REQUEST_CONTAINER_x'Size use 448;
   for BIDI_REQUEST_CONTAINER_x'Alignment use 8;
   subtype BIDI_REQUEST_CONTAINER is BIDI_REQUEST_CONTAINER_x;
   type PBIDI_REQUEST_CONTAINER is access all BIDI_REQUEST_CONTAINER_x;
   type LPBIDI_REQUEST_CONTAINER is access all BIDI_REQUEST_CONTAINER_x;
   type BIDI_RESPONSE_DATA_x is record
      dwResult : DWORD;
      dwReqNumber : DWORD;
      pSchema : LPWSTR;
      data : BIDI_DATA;
   end record;
   pragma Convention (C_Pass_By_Copy,BIDI_RESPONSE_DATA_x);
   for BIDI_RESPONSE_DATA_x use record
      dwResult at 0 range 0..31;
      dwReqNumber at 0 range 32..63;
      pSchema at 0 range 64..127;
      data at 0 range 128..319;
   end record;
   for BIDI_RESPONSE_DATA_x'Size use 320;
   for BIDI_RESPONSE_DATA_x'Alignment use 8;
   subtype BIDI_RESPONSE_DATA is BIDI_RESPONSE_DATA_x;
   type PBIDI_RESPONSE_DATA is access all BIDI_RESPONSE_DATA_x;
   type LPBIDI_RESPONSE_DATA is access all BIDI_RESPONSE_DATA_x;
   type BIDI_RESPONSE_CONTAINER_x_aData_Array is array(1..1) of BIDI_RESPONSE_DATA; -- Auto Generated Dependancy
   type BIDI_RESPONSE_CONTAINER_x is record
      Version : DWORD;
      Flags : DWORD;
      Count : DWORD;
      aData : BIDI_RESPONSE_CONTAINER_x_aData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,BIDI_RESPONSE_CONTAINER_x);
   for BIDI_RESPONSE_CONTAINER_x use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      Count at 0 range 64..95;
      aData at 0 range 128..447;
   end record;
   for BIDI_RESPONSE_CONTAINER_x'Size use 448;
   for BIDI_RESPONSE_CONTAINER_x'Alignment use 8;
   subtype BIDI_RESPONSE_CONTAINER is BIDI_RESPONSE_CONTAINER_x;
   type PBIDI_RESPONSE_CONTAINER is access all BIDI_RESPONSE_CONTAINER_x;
   type LPBIDI_RESPONSE_CONTAINER is access all BIDI_RESPONSE_CONTAINER_x;
   type BIDI_TYPE is (
      BIDI_NULL,
      BIDI_INT,
      BIDI_FLOAT,
      BIDI_BOOL,
      BIDI_STRING,
      BIDI_TEXT,
      BIDI_ENUM,
      BIDI_BLOB
   );
   for BIDI_TYPE use (
      BIDI_NULL => 0,
      BIDI_INT => 1,
      BIDI_FLOAT => 2,
      BIDI_BOOL => 3,
      BIDI_STRING => 4,
      BIDI_TEXT => 5,
      BIDI_ENUM => 6,
      BIDI_BLOB => 7
   );
   for BIDI_TYPE'Size use 32;
   function WaitForPrinterChange(
      hPrinter : HANDLE;
      Flags : DWORD
   ) return DWORD;
   pragma import (Cpp,WaitForPrinterChange,"WaitForPrinterChange");
   function FindFirstPrinterChangeNotification(
      hPrinter : HANDLE;
      fdwFilter : DWORD;
      fdwOptions : DWORD;
      pPrinterNotifyOptions : PVOID
   ) return HANDLE;
   pragma import (Cpp,FindFirstPrinterChangeNotification,"FindFirstPrinterChangeNotification");
   function FindNextPrinterChangeNotification(
      hChange : HANDLE;
      pdwChange : PDWORD;
      pvReserved : LPVOID;
      ppPrinterNotifyInfo : access LPVOID
   ) return BOOL;
   pragma import (Cpp,FindNextPrinterChangeNotification,"FindNextPrinterChangeNotification");
   function FreePrinterNotifyInfo(
      pPrinterNotifyInfo : PPRINTER_NOTIFY_INFO
   ) return BOOL;
   pragma import (Cpp,FreePrinterNotifyInfo,"FreePrinterNotifyInfo");
   function FindClosePrinterChangeNotification(
      hChange : HANDLE
   ) return BOOL;
   pragma import (Cpp,FindClosePrinterChangeNotification,"FindClosePrinterChangeNotification");
   function PrinterMessageBoxA(
      hPrinter : HANDLE;
      Error_x : DWORD;
      hWnd_x : HWND;
      pText : LPSTR;
      pCaption : LPSTR;
      dwType : DWORD
   ) return DWORD;
   pragma import (Cpp,PrinterMessageBoxA,"PrinterMessageBoxA");
   function PrinterMessageBoxW(
      hPrinter : HANDLE;
      Error_x : DWORD;
      hWnd_x : HWND;
      pText : LPWSTR;
      pCaption : LPWSTR;
      dwType : DWORD
   ) return DWORD;
   pragma import (Cpp,PrinterMessageBoxW,"PrinterMessageBoxW");
   function ClosePrinter(
      hPrinter : HANDLE
   ) return BOOL;
   pragma import (Cpp,ClosePrinter,"ClosePrinter");
   function AddFormA(
      hPrinter : HANDLE;
      Level : DWORD;
      pForm : LPBYTE
   ) return BOOL;
   pragma import (Cpp,AddFormA,"AddFormA");
   function AddFormW(
      hPrinter : HANDLE;
      Level : DWORD;
      pForm : LPBYTE
   ) return BOOL;
   pragma import (Cpp,AddFormW,"AddFormW");
   function DeleteFormA(
      hPrinter : HANDLE;
      pFormName : LPSTR
   ) return BOOL;
   pragma import (Cpp,DeleteFormA,"DeleteFormA");
   function DeleteFormW(
      hPrinter : HANDLE;
      pFormName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,DeleteFormW,"DeleteFormW");
   function GetFormA(
      hPrinter : HANDLE;
      pFormName : LPSTR;
      Level : DWORD;
      pForm : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetFormA,"GetFormA");
   function GetFormW(
      hPrinter : HANDLE;
      pFormName : LPWSTR;
      Level : DWORD;
      pForm : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetFormW,"GetFormW");
   function SetFormA(
      hPrinter : HANDLE;
      pFormName : LPSTR;
      Level : DWORD;
      pForm : LPBYTE
   ) return BOOL;
   pragma import (Cpp,SetFormA,"SetFormA");
   function SetFormW(
      hPrinter : HANDLE;
      pFormName : LPWSTR;
      Level : DWORD;
      pForm : LPBYTE
   ) return BOOL;
   pragma import (Cpp,SetFormW,"SetFormW");
   function EnumFormsA(
      hPrinter : HANDLE;
      Level : DWORD;
      pForm : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumFormsA,"EnumFormsA");
   function EnumFormsW(
      hPrinter : HANDLE;
      Level : DWORD;
      pForm : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumFormsW,"EnumFormsW");
   function EnumMonitorsA(
      pName : LPSTR;
      Level : DWORD;
      pMonitor : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumMonitorsA,"EnumMonitorsA");
   function EnumMonitorsW(
      pName : LPWSTR;
      Level : DWORD;
      pMonitor : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumMonitorsW,"EnumMonitorsW");
   function AddMonitorA(
      pName : LPSTR;
      Level : DWORD;
      pMonitors : LPBYTE
   ) return BOOL;
   pragma import (Cpp,AddMonitorA,"AddMonitorA");
   function AddMonitorW(
      pName : LPWSTR;
      Level : DWORD;
      pMonitors : LPBYTE
   ) return BOOL;
   pragma import (Cpp,AddMonitorW,"AddMonitorW");
   function DeleteMonitorA(
      pName : LPSTR;
      pEnvironment : LPSTR;
      pMonitorName : LPSTR
   ) return BOOL;
   pragma import (Cpp,DeleteMonitorA,"DeleteMonitorA");
   function DeleteMonitorW(
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pMonitorName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,DeleteMonitorW,"DeleteMonitorW");
   function EnumPortsA(
      pName : LPSTR;
      Level : DWORD;
      pPort : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumPortsA,"EnumPortsA");
   function EnumPortsW(
      pName : LPWSTR;
      Level : DWORD;
      pPort : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD;
      pcReturned : LPDWORD
   ) return BOOL;
   pragma import (Cpp,EnumPortsW,"EnumPortsW");
   function AddPortA(
      pName : LPSTR;
      hWnd_x : HWND;
      pMonitorName : LPSTR
   ) return BOOL;
   pragma import (Cpp,AddPortA,"AddPortA");
   function AddPortW(
      pName : LPWSTR;
      hWnd_x : HWND;
      pMonitorName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,AddPortW,"AddPortW");
   function ConfigurePortA(
      pName : LPSTR;
      hWnd_x : HWND;
      pPortName : LPSTR
   ) return BOOL;
   pragma import (Cpp,ConfigurePortA,"ConfigurePortA");
   function ConfigurePortW(
      pName : LPWSTR;
      hWnd_x : HWND;
      pPortName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,ConfigurePortW,"ConfigurePortW");
   function DeletePortA(
      pName : LPSTR;
      hWnd_x : HWND;
      pPortName : LPSTR
   ) return BOOL;
   pragma import (Cpp,DeletePortA,"DeletePortA");
   function DeletePortW(
      pName : LPWSTR;
      hWnd_x : HWND;
      pPortName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,DeletePortW,"DeletePortW");
   function XcvDataW(
      hXcv : HANDLE;
      pszDataName : PCWSTR;
      pInputData : PBYTE;
      cbInputData : DWORD;
      pOutputData : PBYTE;
      cbOutputData : DWORD;
      pcbOutputNeeded : PDWORD;
      pdwStatus : PDWORD
   ) return BOOL;
   pragma import (Cpp,XcvDataW,"XcvDataW");
   function GetDefaultPrinterA(
      pszBuffer : LPSTR;
      pcchBuffer : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetDefaultPrinterA,"GetDefaultPrinterA");
   function GetDefaultPrinterW(
      pszBuffer : LPWSTR;
      pcchBuffer : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetDefaultPrinterW,"GetDefaultPrinterW");
   function SetDefaultPrinterA(
      pszPrinter : LPCSTR
   ) return BOOL;
   pragma import (Cpp,SetDefaultPrinterA,"SetDefaultPrinterA");
   function SetDefaultPrinterW(
      pszPrinter : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,SetDefaultPrinterW,"SetDefaultPrinterW");
   function SetPortA(
      pName : LPSTR;
      pPortName : LPSTR;
      dwLevel : DWORD;
      pPortInfo : LPBYTE
   ) return BOOL;
   pragma import (Cpp,SetPortA,"SetPortA");
   function SetPortW(
      pName : LPWSTR;
      pPortName : LPWSTR;
      dwLevel : DWORD;
      pPortInfo : LPBYTE
   ) return BOOL;
   pragma import (Cpp,SetPortW,"SetPortW");
   function AddPrinterConnectionA(
      pName : LPSTR
   ) return BOOL;
   pragma import (Cpp,AddPrinterConnectionA,"AddPrinterConnectionA");
   function AddPrinterConnectionW(
      pName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,AddPrinterConnectionW,"AddPrinterConnectionW");
   function DeletePrinterConnectionA(
      pName : LPSTR
   ) return BOOL;
   pragma import (Cpp,DeletePrinterConnectionA,"DeletePrinterConnectionA");
   function DeletePrinterConnectionW(
      pName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,DeletePrinterConnectionW,"DeletePrinterConnectionW");
   function ConnectToPrinterDlg(
      hwnd_x : HWND;
      Flags : DWORD
   ) return HANDLE;
   pragma import (Cpp,ConnectToPrinterDlg,"ConnectToPrinterDlg");
   type PROVIDOR_INFO_1A_x is record
      pName : LPSTR;
      pEnvironment : LPSTR;
      pDLLName : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PROVIDOR_INFO_1A_x);
   for PROVIDOR_INFO_1A_x use record
      pName at 0 range 0..63;
      pEnvironment at 0 range 64..127;
      pDLLName at 0 range 128..191;
   end record;
   for PROVIDOR_INFO_1A_x'Size use 192;
   for PROVIDOR_INFO_1A_x'Alignment use 8;
   subtype PROVIDOR_INFO_1A is PROVIDOR_INFO_1A_x;
   type PPROVIDOR_INFO_1A is access all PROVIDOR_INFO_1A_x;
   type LPPROVIDOR_INFO_1A is access all PROVIDOR_INFO_1A_x;
   type PROVIDOR_INFO_1W_x is record
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pDLLName : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PROVIDOR_INFO_1W_x);
   for PROVIDOR_INFO_1W_x use record
      pName at 0 range 0..63;
      pEnvironment at 0 range 64..127;
      pDLLName at 0 range 128..191;
   end record;
   for PROVIDOR_INFO_1W_x'Size use 192;
   for PROVIDOR_INFO_1W_x'Alignment use 8;
   subtype PROVIDOR_INFO_1W is PROVIDOR_INFO_1W_x;
   type PPROVIDOR_INFO_1W is access all PROVIDOR_INFO_1W_x;
   type LPPROVIDOR_INFO_1W is access all PROVIDOR_INFO_1W_x;
   subtype PROVIDOR_INFO_1 is PROVIDOR_INFO_1A;
   subtype PPROVIDOR_INFO_1 is PPROVIDOR_INFO_1A;
   subtype LPPROVIDOR_INFO_1 is LPPROVIDOR_INFO_1A;
   type PROVIDOR_INFO_2A_x is record
      pOrder : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PROVIDOR_INFO_2A_x);
   for PROVIDOR_INFO_2A_x use record
      pOrder at 0 range 0..63;
   end record;
   for PROVIDOR_INFO_2A_x'Size use 64;
   for PROVIDOR_INFO_2A_x'Alignment use 8;
   subtype PROVIDOR_INFO_2A is PROVIDOR_INFO_2A_x;
   type PPROVIDOR_INFO_2A is access all PROVIDOR_INFO_2A_x;
   type LPPROVIDOR_INFO_2A is access all PROVIDOR_INFO_2A_x;
   type PROVIDOR_INFO_2W_x is record
      pOrder : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PROVIDOR_INFO_2W_x);
   for PROVIDOR_INFO_2W_x use record
      pOrder at 0 range 0..63;
   end record;
   for PROVIDOR_INFO_2W_x'Size use 64;
   for PROVIDOR_INFO_2W_x'Alignment use 8;
   subtype PROVIDOR_INFO_2W is PROVIDOR_INFO_2W_x;
   type PPROVIDOR_INFO_2W is access all PROVIDOR_INFO_2W_x;
   type LPPROVIDOR_INFO_2W is access all PROVIDOR_INFO_2W_x;
   subtype PROVIDOR_INFO_2 is PROVIDOR_INFO_2A;
   subtype PPROVIDOR_INFO_2 is PPROVIDOR_INFO_2A;
   subtype LPPROVIDOR_INFO_2 is LPPROVIDOR_INFO_2A;
   function AddPrintProvidorA(
      pName : LPSTR;
      Level : DWORD;
      pProvidorInfo : LPBYTE
   ) return BOOL;
   pragma import (Cpp,AddPrintProvidorA,"AddPrintProvidorA");
   function AddPrintProvidorW(
      pName : LPWSTR;
      Level : DWORD;
      pProvidorInfo : LPBYTE
   ) return BOOL;
   pragma import (Cpp,AddPrintProvidorW,"AddPrintProvidorW");
   function DeletePrintProvidorA(
      pName : LPSTR;
      pEnvironment : LPSTR;
      pPrintProvidorName : LPSTR
   ) return BOOL;
   pragma import (Cpp,DeletePrintProvidorA,"DeletePrintProvidorA");
   function DeletePrintProvidorW(
      pName : LPWSTR;
      pEnvironment : LPWSTR;
      pPrintProvidorName : LPWSTR
   ) return BOOL;
   pragma import (Cpp,DeletePrintProvidorW,"DeletePrintProvidorW");
   function IsValidDevmodeA(
      pDevmode_x : PDEVMODEA;
      DevmodeSize : size_t
   ) return BOOL;
   pragma import (Cpp,IsValidDevmodeA,"IsValidDevmodeA");
   function IsValidDevmodeW(
      pDevmode_x : PDEVMODEW;
      DevmodeSize : size_t
   ) return BOOL;
   pragma import (Cpp,IsValidDevmodeW,"IsValidDevmodeW");
   type PRINTER_OPTION_FLAGS_x is (
      PRINTER_OPTION_NO_CACHE,
      PRINTER_OPTION_CACHE,
      PRINTER_OPTION_CLIENT_CHANGE,
      PRINTER_OPTION_NO_CLIENT_DATA
   );
   for PRINTER_OPTION_FLAGS_x use (
      PRINTER_OPTION_NO_CACHE => 1,
      PRINTER_OPTION_CACHE => 2,
      PRINTER_OPTION_CLIENT_CHANGE => 4,
      PRINTER_OPTION_NO_CLIENT_DATA => 8
   );
   for PRINTER_OPTION_FLAGS_x'Size use 32;
   subtype PRINTER_OPTION_FLAGS is PRINTER_OPTION_FLAGS_x;
   type PRINTER_OPTIONSA_x is record
      cbSize : UINT;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_OPTIONSA_x);
   for PRINTER_OPTIONSA_x use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
   end record;
   for PRINTER_OPTIONSA_x'Size use 64;
   for PRINTER_OPTIONSA_x'Alignment use 4;
   subtype PRINTER_OPTIONSA is PRINTER_OPTIONSA_x;
   type PPRINTER_OPTIONSA is access all PRINTER_OPTIONSA_x;
   type LPPRINTER_OPTIONSA is access all PRINTER_OPTIONSA_x;
   type PRINTER_OPTIONSW_x is record
      cbSize : UINT;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_OPTIONSW_x);
   for PRINTER_OPTIONSW_x use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
   end record;
   for PRINTER_OPTIONSW_x'Size use 64;
   for PRINTER_OPTIONSW_x'Alignment use 4;
   subtype PRINTER_OPTIONSW is PRINTER_OPTIONSW_x;
   type PPRINTER_OPTIONSW is access all PRINTER_OPTIONSW_x;
   type LPPRINTER_OPTIONSW is access all PRINTER_OPTIONSW_x;
   subtype PRINTER_OPTIONS is PRINTER_OPTIONSA;
   subtype PPRINTER_OPTIONS is PPRINTER_OPTIONSA;
   subtype LPPRINTER_OPTIONS is LPPRINTER_OPTIONSA;
   function OpenPrinter2A(
      pPrinterName : LPCSTR;
      phPrinter : LPHANDLE;
      pDefault : PPRINTER_DEFAULTSA;
      pOptions : PPRINTER_OPTIONSA
   ) return BOOL;
   pragma import (Cpp,OpenPrinter2A,"OpenPrinter2A");
   function OpenPrinter2W(
      pPrinterName : LPCWSTR;
      phPrinter : LPHANDLE;
      pDefault : PPRINTER_DEFAULTSW;
      pOptions : PPRINTER_OPTIONSW
   ) return BOOL;
   pragma import (Cpp,OpenPrinter2W,"OpenPrinter2W");
   type PRINTER_CONNECTION_INFO_1A_x is record
      dwFlags : DWORD;
      pszDriverName : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_CONNECTION_INFO_1A_x);
   for PRINTER_CONNECTION_INFO_1A_x use record
      dwFlags at 0 range 0..31;
      pszDriverName at 0 range 64..127;
   end record;
   for PRINTER_CONNECTION_INFO_1A_x'Size use 128;
   for PRINTER_CONNECTION_INFO_1A_x'Alignment use 8;
   subtype PRINTER_CONNECTION_INFO_1A is PRINTER_CONNECTION_INFO_1A_x;
   type PPRINTER_CONNECTION_INFO_1A is access all PRINTER_CONNECTION_INFO_1A_x;
   type PRINTER_CONNECTION_INFO_1W_x is record
      dwFlags : DWORD;
      pszDriverName : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINTER_CONNECTION_INFO_1W_x);
   for PRINTER_CONNECTION_INFO_1W_x use record
      dwFlags at 0 range 0..31;
      pszDriverName at 0 range 64..127;
   end record;
   for PRINTER_CONNECTION_INFO_1W_x'Size use 128;
   for PRINTER_CONNECTION_INFO_1W_x'Alignment use 8;
   subtype PRINTER_CONNECTION_INFO_1W is PRINTER_CONNECTION_INFO_1W_x;
   type PPRINTER_CONNECTION_INFO_1W is access all PRINTER_CONNECTION_INFO_1W_x;
   subtype PRINTER_CONNECTION_INFO_1 is PRINTER_CONNECTION_INFO_1A;
   subtype PPRINTER_CONNECTION_INFO_1 is PPRINTER_CONNECTION_INFO_1A;
   function AddPrinterConnection2A(
      hWnd_x : HWND;
      pszName : LPCSTR;
      dwLevel : DWORD;
      pConnectionInfo : PVOID
   ) return BOOL;
   pragma import (Cpp,AddPrinterConnection2A,"AddPrinterConnection2A");
   function AddPrinterConnection2W(
      hWnd_x : HWND;
      pszName : LPCWSTR;
      dwLevel : DWORD;
      pConnectionInfo : PVOID
   ) return BOOL;
   pragma import (Cpp,AddPrinterConnection2W,"AddPrinterConnection2W");
   function InstallPrinterDriverFromPackageA(
      pszServer : LPCSTR;
      pszInfPath : LPCSTR;
      pszDriverName : LPCSTR;
      pszEnvironment : LPCSTR;
      dwFlags : DWORD
   ) return HRESULT;
   pragma import (Cpp,InstallPrinterDriverFromPackageA,"InstallPrinterDriverFromPackageA");
   function InstallPrinterDriverFromPackageW(
      pszServer : LPCWSTR;
      pszInfPath : LPCWSTR;
      pszDriverName : LPCWSTR;
      pszEnvironment : LPCWSTR;
      dwFlags : DWORD
   ) return HRESULT;
   pragma import (Cpp,InstallPrinterDriverFromPackageW,"InstallPrinterDriverFromPackageW");
   function UploadPrinterDriverPackageA(
      pszServer : LPCSTR;
      pszInfPath : LPCSTR;
      pszEnvironment : LPCSTR;
      dwFlags : DWORD;
      hwnd_x : HWND;
      pszDestInfPath : LPSTR;
      pcchDestInfPath : PULONG
   ) return HRESULT;
   pragma import (Cpp,UploadPrinterDriverPackageA,"UploadPrinterDriverPackageA");
   function UploadPrinterDriverPackageW(
      pszServer : LPCWSTR;
      pszInfPath : LPCWSTR;
      pszEnvironment : LPCWSTR;
      dwFlags : DWORD;
      hwnd_x : HWND;
      pszDestInfPath : LPWSTR;
      pcchDestInfPath : PULONG
   ) return HRESULT;
   pragma import (Cpp,UploadPrinterDriverPackageW,"UploadPrinterDriverPackageW");
   type CORE_PRINTER_DRIVERA_x_szPackageID_Array is array(1..260) of CHAR; -- Auto Generated Dependancy
   type CORE_PRINTER_DRIVERA_x is record
      CoreDriverGUID : GUID;
      ftDriverDate : FILETIME;
      dwlDriverVersion : DWORDLONG;
      szPackageID : CORE_PRINTER_DRIVERA_x_szPackageID_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,CORE_PRINTER_DRIVERA_x);
   for CORE_PRINTER_DRIVERA_x use record
      CoreDriverGUID at 0 range 0..127;
      ftDriverDate at 0 range 128..191;
      dwlDriverVersion at 0 range 192..255;
      szPackageID at 0 range 256..2335;
   end record;
   for CORE_PRINTER_DRIVERA_x'Size use 2368;
   for CORE_PRINTER_DRIVERA_x'Alignment use 8;
   subtype CORE_PRINTER_DRIVERA is CORE_PRINTER_DRIVERA_x;
   type PCORE_PRINTER_DRIVERA is access all CORE_PRINTER_DRIVERA_x;
   type CORE_PRINTER_DRIVERW_x_szPackageID_Array is array(1..260) of WCHAR; -- Auto Generated Dependancy
   type CORE_PRINTER_DRIVERW_x is record
      CoreDriverGUID : GUID;
      ftDriverDate : FILETIME;
      dwlDriverVersion : DWORDLONG;
      szPackageID : CORE_PRINTER_DRIVERW_x_szPackageID_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,CORE_PRINTER_DRIVERW_x);
   for CORE_PRINTER_DRIVERW_x use record
      CoreDriverGUID at 0 range 0..127;
      ftDriverDate at 0 range 128..191;
      dwlDriverVersion at 0 range 192..255;
      szPackageID at 0 range 256..4415;
   end record;
   for CORE_PRINTER_DRIVERW_x'Size use 4416;
   for CORE_PRINTER_DRIVERW_x'Alignment use 8;
   subtype CORE_PRINTER_DRIVERW is CORE_PRINTER_DRIVERW_x;
   type PCORE_PRINTER_DRIVERW is access all CORE_PRINTER_DRIVERW_x;
   subtype CORE_PRINTER_DRIVER is CORE_PRINTER_DRIVERA;
   subtype PCORE_PRINTER_DRIVER is PCORE_PRINTER_DRIVERA;
   function GetCorePrinterDriversA(
      pszServer : LPCSTR;
      pszEnvironment : LPCSTR;
      pszzCoreDriverDependencies : LPCSTR;
      cCorePrinterDrivers : DWORD;
      pCorePrinterDrivers : PCORE_PRINTER_DRIVERA
   ) return HRESULT;
   pragma import (Cpp,GetCorePrinterDriversA,"GetCorePrinterDriversA");
   function GetCorePrinterDriversW(
      pszServer : LPCWSTR;
      pszEnvironment : LPCWSTR;
      pszzCoreDriverDependencies : LPCWSTR;
      cCorePrinterDrivers : DWORD;
      pCorePrinterDrivers : PCORE_PRINTER_DRIVERW
   ) return HRESULT;
   pragma import (Cpp,GetCorePrinterDriversW,"GetCorePrinterDriversW");
   function CorePrinterDriverInstalledA(
      pszServer : LPCSTR;
      pszEnvironment : LPCSTR;
      CoreDriverGUID : GUID;
      ftDriverDate : FILETIME;
      dwlDriverVersion : DWORDLONG;
      pbDriverInstalled : access BOOL
   ) return HRESULT;
   pragma import (Cpp,CorePrinterDriverInstalledA,"CorePrinterDriverInstalledA");
   function CorePrinterDriverInstalledW(
      pszServer : LPCWSTR;
      pszEnvironment : LPCWSTR;
      CoreDriverGUID : GUID;
      ftDriverDate : FILETIME;
      dwlDriverVersion : DWORDLONG;
      pbDriverInstalled : access BOOL
   ) return HRESULT;
   pragma import (Cpp,CorePrinterDriverInstalledW,"CorePrinterDriverInstalledW");
   function GetPrinterDriverPackagePathA(
      pszServer : LPCSTR;
      pszEnvironment : LPCSTR;
      pszLanguage : LPCSTR;
      pszPackageID : LPCSTR;
      pszDriverPackageCab : LPSTR;
      cchDriverPackageCab : DWORD;
      pcchRequiredSize : LPDWORD
   ) return HRESULT;
   pragma import (Cpp,GetPrinterDriverPackagePathA,"GetPrinterDriverPackagePathA");
   function GetPrinterDriverPackagePathW(
      pszServer : LPCWSTR;
      pszEnvironment : LPCWSTR;
      pszLanguage : LPCWSTR;
      pszPackageID : LPCWSTR;
      pszDriverPackageCab : LPWSTR;
      cchDriverPackageCab : DWORD;
      pcchRequiredSize : LPDWORD
   ) return HRESULT;
   pragma import (Cpp,GetPrinterDriverPackagePathW,"GetPrinterDriverPackagePathW");
   function DeletePrinterDriverPackageA(
      pszServer : LPCSTR;
      pszInfPath : LPCSTR;
      pszEnvironment : LPCSTR
   ) return HRESULT;
   pragma import (Cpp,DeletePrinterDriverPackageA,"DeletePrinterDriverPackageA");
   function DeletePrinterDriverPackageW(
      pszServer : LPCWSTR;
      pszInfPath : LPCWSTR;
      pszEnvironment : LPCWSTR
   ) return HRESULT;
   pragma import (Cpp,DeletePrinterDriverPackageW,"DeletePrinterDriverPackageW");
   type EPrintPropertyType is (
      kPropertyTypeString,
      kPropertyTypeInt32,
      kPropertyTypeInt64,
      kPropertyTypeByte,
      kPropertyTypeTime,
      kPropertyTypeDevMode,
      kPropertyTypeSD,
      kPropertyTypeNotificationReply,
      kPropertyTypeNotificationOptions,
      kPropertyTypeBuffer
   );
   for EPrintPropertyType use (
      kPropertyTypeString => 1,
      kPropertyTypeInt32 => 2,
      kPropertyTypeInt64 => 3,
      kPropertyTypeByte => 4,
      kPropertyTypeTime => 5,
      kPropertyTypeDevMode => 6,
      kPropertyTypeSD => 7,
      kPropertyTypeNotificationReply => 8,
      kPropertyTypeNotificationOptions => 9,
      kPropertyTypeBuffer => 10
   );
   for EPrintPropertyType'Size use 32;
   type EPrintXPSJobProgress is (
      kAddingDocumentSequence,
      kDocumentSequenceAdded,
      kAddingFixedDocument,
      kFixedDocumentAdded,
      kAddingFixedPage,
      kFixedPageAdded,
      kResourceAdded,
      kFontAdded,
      kImageAdded,
      kXpsDocumentCommitted
   );
   for EPrintXPSJobProgress use (
      kAddingDocumentSequence => 0,
      kDocumentSequenceAdded => 1,
      kAddingFixedDocument => 2,
      kFixedDocumentAdded => 3,
      kAddingFixedPage => 4,
      kFixedPageAdded => 5,
      kResourceAdded => 6,
      kFontAdded => 7,
      kImageAdded => 8,
      kXpsDocumentCommitted => 9
   );
   for EPrintXPSJobProgress'Size use 32;
   type EPrintXPSJobOperation is (
      kJobProduction,
      kJobConsumption
   );
   for EPrintXPSJobOperation use (
      kJobProduction => 1,
      kJobConsumption => 2
   );
   for EPrintXPSJobOperation'Size use 32;
   type Anonymous_Record_254 is record
      cbBuf : DWORD;
      pBuf : LPVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_254);
   for Anonymous_Record_254 use record
      cbBuf at 0 range 0..31;
      pBuf at 0 range 64..127;
   end record;
   for Anonymous_Record_254'Size use 128;
   for Anonymous_Record_254'Alignment use 8;
   type Anonymous_Record_253 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            propertyByte : BYTE;
         when 1 =>
            propertyString : PWSTR;
         when 2 =>
            propertyInt32 : LONG;
         when 3 =>
            propertyInt64 : LONGLONG;
         when others => 
            field_1 : Anonymous_Record_254;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_253);
   pragma Unchecked_Union (Anonymous_Record_253);
   for Anonymous_Record_253'Size use 128;
   for Anonymous_Record_253'Alignment use 8;
   type PrintPropertyValue is record
      ePropertyType : EPrintPropertyType;
      field_1 : Anonymous_Record_253;
   end record;
   pragma Convention (C_Pass_By_Copy,PrintPropertyValue);
   for PrintPropertyValue use record
      ePropertyType at 0 range 0..31;
      field_1 at 0 range 32..159;
   end record;
   for PrintPropertyValue'Size use 192;
   for PrintPropertyValue'Alignment use 8;
   type PrintNamedProperty is record
      propertyName : access WCHAR;
      propertyValue : PrintPropertyValue;
   end record;
   pragma Convention (C_Pass_By_Copy,PrintNamedProperty);
   for PrintNamedProperty use record
      propertyName at 0 range 0..63;
      propertyValue at 0 range 64..255;
   end record;
   for PrintNamedProperty'Size use 256;
   for PrintNamedProperty'Alignment use 8;
   type PrintPropertiesCollection is record
      numberOfProperties : ULONG;
      propertiesCollection : access PrintNamedProperty;
   end record;
   pragma Convention (C_Pass_By_Copy,PrintPropertiesCollection);
   for PrintPropertiesCollection use record
      numberOfProperties at 0 range 0..31;
      propertiesCollection at 0 range 64..127;
   end record;
   for PrintPropertiesCollection'Size use 128;
   for PrintPropertiesCollection'Alignment use 8;
   function ReportJobProcessingProgress(
      printerHandle : HANDLE;
      jobId : ULONG;
      jobOperation : EPrintXPSJobOperation;
      jobProgress : EPrintXPSJobProgress
   ) return HRESULT;
   pragma import (Cpp,ReportJobProcessingProgress,"ReportJobProcessingProgress");
   function GetPrinterDriver2A(
      hWnd_x : HWND;
      hPrinter : HANDLE;
      pEnvironment : LPSTR;
      Level : DWORD;
      pDriverInfo : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetPrinterDriver2A,"GetPrinterDriver2A");
   function GetPrinterDriver2W(
      hWnd_x : HWND;
      hPrinter : HANDLE;
      pEnvironment : LPWSTR;
      Level : DWORD;
      pDriverInfo : LPBYTE;
      cbBuf : DWORD;
      pcbNeeded : LPDWORD
   ) return BOOL;
   pragma import (Cpp,GetPrinterDriver2W,"GetPrinterDriver2W");
   type PRINT_EXECUTION_CONTEXT is (
      PRINT_EXECUTION_CONTEXT_APPLICATION,
      PRINT_EXECUTION_CONTEXT_SPOOLER_SERVICE,
      PRINT_EXECUTION_CONTEXT_SPOOLER_ISOLATION_HOST,
      PRINT_EXECUTION_CONTEXT_FILTER_PIPELINE,
      PRINT_EXECUTION_CONTEXT_WOW64
   );
   for PRINT_EXECUTION_CONTEXT use (
      PRINT_EXECUTION_CONTEXT_APPLICATION => 0,
      PRINT_EXECUTION_CONTEXT_SPOOLER_SERVICE => 1,
      PRINT_EXECUTION_CONTEXT_SPOOLER_ISOLATION_HOST => 2,
      PRINT_EXECUTION_CONTEXT_FILTER_PIPELINE => 3,
      PRINT_EXECUTION_CONTEXT_WOW64 => 4
   );
   for PRINT_EXECUTION_CONTEXT'Size use 32;
   type PRINT_EXECUTION_DATA is record
      context_x : PRINT_EXECUTION_CONTEXT;
      clientAppPID : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,PRINT_EXECUTION_DATA);
   for PRINT_EXECUTION_DATA use record
      context_x at 0 range 0..31;
      clientAppPID at 0 range 32..63;
   end record;
   for PRINT_EXECUTION_DATA'Size use 64;
   for PRINT_EXECUTION_DATA'Alignment use 4;
   function GetPrintExecutionData(
      pData : access PRINT_EXECUTION_DATA
   ) return BOOL;
   pragma import (Cpp,GetPrintExecutionData,"GetPrintExecutionData");
   function GetJobNamedPropertyValue(
      hPrinter : HANDLE;
      JobId : DWORD;
      pszName : PCWSTR;
      pValue_x : access PrintPropertyValue
   ) return DWORD;
   pragma import (Cpp,GetJobNamedPropertyValue,"GetJobNamedPropertyValue");
   procedure FreePrintPropertyValue(
      pValue_x : access PrintPropertyValue
   );
   pragma import (Cpp,FreePrintPropertyValue,"FreePrintPropertyValue");
   type PrintNamedProperty_Ptr is access all PrintNamedProperty; -- Auto Generated Dependancy
   procedure FreePrintNamedPropertyArray(
      cProperties : DWORD;
      ppProperties : access PrintNamedProperty_Ptr
   );
   pragma import (Cpp,FreePrintNamedPropertyArray,"FreePrintNamedPropertyArray");
   function SetJobNamedProperty(
      hPrinter : HANDLE;
      JobId : DWORD;
      pProperty : access constant PrintNamedProperty
   ) return DWORD;
   pragma import (Cpp,SetJobNamedProperty,"SetJobNamedProperty");
   function DeleteJobNamedProperty(
      hPrinter : HANDLE;
      JobId : DWORD;
      pszName : PCWSTR
   ) return DWORD;
   pragma import (Cpp,DeleteJobNamedProperty,"DeleteJobNamedProperty");
   function EnumJobNamedProperties(
      hPrinter : HANDLE;
      JobId : DWORD;
      pcProperties : access DWORD;
      ppProperties : access PrintNamedProperty_Ptr
   ) return DWORD;
   pragma import (Cpp,EnumJobNamedProperties,"EnumJobNamedProperties");
   function GetPrintOutputInfo(
      hWnd_x : HWND;
      pszPrinter : PCWSTR;
      phFile : access HANDLE;
      ppszOutputFile : access PWSTR
   ) return HRESULT;
   pragma import (Cpp,GetPrintOutputInfo,"GetPrintOutputInfo");
   -- #include <rpc.h>
   type I_RPC_HANDLE is access all Void;
   subtype RPC_STATUS is Interfaces.C.Long;
   -- #include <rpcdce.h>
   type RPC_CSTR is access all Interfaces.C.unsigned_char;
   type RPC_WSTR is access all Interfaces.C.unsigned_short;
   type RPC_CWSTR is access constant Interfaces.C.unsigned_short;
   subtype RPC_BINDING_HANDLE is I_RPC_HANDLE;
   subtype handle_t is RPC_BINDING_HANDLE;
   subtype UUID is GUID;
   type RPC_BINDING_VECTOR_x_BindingH_Array is array(1..1) of RPC_BINDING_HANDLE; -- Auto Generated Dependancy
   type RPC_BINDING_VECTOR_x is record
      Count : Interfaces.C.unsigned_long;
      BindingH : RPC_BINDING_VECTOR_x_BindingH_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_BINDING_VECTOR_x);
   for RPC_BINDING_VECTOR_x use record
      Count at 0 range 0..31;
      BindingH at 0 range 64..127;
   end record;
   for RPC_BINDING_VECTOR_x'Size use 128;
   for RPC_BINDING_VECTOR_x'Alignment use 8;
   subtype RPC_BINDING_VECTOR is RPC_BINDING_VECTOR_x;
   type UUID_VECTOR_x_Uuid_Array is array(1..1) of access UUID; -- Auto Generated Dependancy
   type UUID_VECTOR_x is record
      Count : Interfaces.C.unsigned_long;
      Uuid_x : UUID_VECTOR_x_Uuid_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,UUID_VECTOR_x);
   for UUID_VECTOR_x use record
      Count at 0 range 0..31;
      Uuid_x at 0 range 64..127;
   end record;
   for UUID_VECTOR_x'Size use 128;
   for UUID_VECTOR_x'Alignment use 8;
   subtype UUID_VECTOR is UUID_VECTOR_x;
   type RPC_IF_HANDLE is access all Void;
   type RPC_IF_ID_x is record
      Uuid_x : UUID;
      VersMajor : Interfaces.C.unsigned_short;
      VersMinor : Interfaces.C.unsigned_short;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_IF_ID_x);
   for RPC_IF_ID_x use record
      Uuid_x at 0 range 0..127;
      VersMajor at 0 range 128..143;
      VersMinor at 0 range 144..159;
   end record;
   for RPC_IF_ID_x'Size use 160;
   for RPC_IF_ID_x'Alignment use 4;
   subtype RPC_IF_ID is RPC_IF_ID_x;
   type RPC_PROTSEQ_VECTORA_x_Protseq_Array is array(1..1) of access Interfaces.C.unsigned_char; -- Auto Generated Dependancy
   type RPC_PROTSEQ_VECTORA_x is record
      Count : Interfaces.C.unsigned;
      Protseq : RPC_PROTSEQ_VECTORA_x_Protseq_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_PROTSEQ_VECTORA_x);
   for RPC_PROTSEQ_VECTORA_x use record
      Count at 0 range 0..31;
      Protseq at 0 range 64..127;
   end record;
   for RPC_PROTSEQ_VECTORA_x'Size use 128;
   for RPC_PROTSEQ_VECTORA_x'Alignment use 8;
   subtype RPC_PROTSEQ_VECTORA is RPC_PROTSEQ_VECTORA_x;
   type RPC_PROTSEQ_VECTORW_x_Protseq_Array is array(1..1) of access Interfaces.C.unsigned_short; -- Auto Generated Dependancy
   type RPC_PROTSEQ_VECTORW_x is record
      Count : Interfaces.C.unsigned;
      Protseq : RPC_PROTSEQ_VECTORW_x_Protseq_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_PROTSEQ_VECTORW_x);
   for RPC_PROTSEQ_VECTORW_x use record
      Count at 0 range 0..31;
      Protseq at 0 range 64..127;
   end record;
   for RPC_PROTSEQ_VECTORW_x'Size use 128;
   for RPC_PROTSEQ_VECTORW_x'Alignment use 8;
   subtype RPC_PROTSEQ_VECTORW is RPC_PROTSEQ_VECTORW_x;
   type RPC_POLICY_x is record
      Length : Interfaces.C.unsigned;
      EndpointFlags : Interfaces.C.unsigned_long;
      NICFlags : Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_POLICY_x);
   for RPC_POLICY_x use record
      Length at 0 range 0..31;
      EndpointFlags at 0 range 32..63;
      NICFlags at 0 range 64..95;
   end record;
   for RPC_POLICY_x'Size use 96;
   for RPC_POLICY_x'Alignment use 4;
   subtype RPC_POLICY is RPC_POLICY_x;
   type PRPC_POLICY is access all RPC_POLICY_x;
   subtype RPC_OBJECT_INQ_FN is System.Address; -- [Note - CXType_FunctionProto] Profile - void (UUID *, UUID *, RPC_STATUS *)
   subtype RPC_IF_CALLBACK_FN is System.Address; -- [Note - CXType_FunctionProto] Profile - RPC_STATUS (RPC_IF_HANDLE, void *)
   subtype RPC_SECURITY_CALLBACK_FN is System.Address; -- [Note - CXType_FunctionProto] Profile - void (void *)
   type RPC_STATS_VECTOR_Stats_Array is array(1..1) of Interfaces.C.unsigned_long; -- Auto Generated Dependancy
   type RPC_STATS_VECTOR is record
      Count : Interfaces.C.unsigned;
      Stats : RPC_STATS_VECTOR_Stats_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_STATS_VECTOR);
   for RPC_STATS_VECTOR use record
      Count at 0 range 0..31;
      Stats at 0 range 32..63;
   end record;
   for RPC_STATS_VECTOR'Size use 64;
   for RPC_STATS_VECTOR'Alignment use 4;
   type RPC_IF_ID_VECTOR_IfId_Array is array(1..1) of access RPC_IF_ID; -- Auto Generated Dependancy
   type RPC_IF_ID_VECTOR is record
      Count : Interfaces.C.unsigned_long;
      IfId : RPC_IF_ID_VECTOR_IfId_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_IF_ID_VECTOR);
   for RPC_IF_ID_VECTOR use record
      Count at 0 range 0..31;
      IfId at 0 range 64..127;
   end record;
   for RPC_IF_ID_VECTOR'Size use 128;
   for RPC_IF_ID_VECTOR'Alignment use 8;
   function RpcBindingCopy(
      SourceBinding : RPC_BINDING_HANDLE;
      DestinationBinding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingCopy,"RpcBindingCopy");
   function RpcBindingFree(
      Binding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingFree,"RpcBindingFree");
   function RpcBindingSetOption(
      hBinding : RPC_BINDING_HANDLE;
      option : Interfaces.C.unsigned_long;
      optionValue : ULONG_PTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingSetOption,"RpcBindingSetOption");
   function RpcBindingInqOption(
      hBinding : RPC_BINDING_HANDLE;
      option : Interfaces.C.unsigned_long;
      pOptionValue : access ULONG_PTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingInqOption,"RpcBindingInqOption");
   function RpcBindingFromStringBindingA(
      StringBinding : RPC_CSTR;
      Binding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingFromStringBindingA,"RpcBindingFromStringBindingA");
   function RpcBindingFromStringBindingW(
      StringBinding : RPC_WSTR;
      Binding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingFromStringBindingW,"RpcBindingFromStringBindingW");
   function RpcSsGetContextBinding(
      ContextHandle : access Void;
      Binding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcSsGetContextBinding,"RpcSsGetContextBinding");
   function RpcBindingInqObject(
      Binding : RPC_BINDING_HANDLE;
      ObjectUuid : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingInqObject,"RpcBindingInqObject");
   function RpcBindingReset(
      Binding : RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingReset,"RpcBindingReset");
   function RpcBindingSetObject(
      Binding : RPC_BINDING_HANDLE;
      ObjectUuid : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingSetObject,"RpcBindingSetObject");
   function RpcMgmtInqDefaultProtectLevel(
      AuthnSvc : Interfaces.C.unsigned_long;
      AuthnLevel : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtInqDefaultProtectLevel,"RpcMgmtInqDefaultProtectLevel");
   function RpcBindingToStringBindingA(
      Binding : RPC_BINDING_HANDLE;
      StringBinding : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingToStringBindingA,"RpcBindingToStringBindingA");
   function RpcBindingToStringBindingW(
      Binding : RPC_BINDING_HANDLE;
      StringBinding : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingToStringBindingW,"RpcBindingToStringBindingW");
   type RPC_BINDING_VECTOR_Ptr is access all RPC_BINDING_VECTOR; -- Auto Generated Dependancy
   function RpcBindingVectorFree(
      BindingVector : access RPC_BINDING_VECTOR_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingVectorFree,"RpcBindingVectorFree");
   function RpcStringBindingComposeA(
      ObjUuid : RPC_CSTR;
      ProtSeq : RPC_CSTR;
      NetworkAddr : RPC_CSTR;
      Endpoint : RPC_CSTR;
      Options : RPC_CSTR;
      StringBinding : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcStringBindingComposeA,"RpcStringBindingComposeA");
   function RpcStringBindingComposeW(
      ObjUuid : RPC_WSTR;
      ProtSeq : RPC_WSTR;
      NetworkAddr : RPC_WSTR;
      Endpoint : RPC_WSTR;
      Options : RPC_WSTR;
      StringBinding : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcStringBindingComposeW,"RpcStringBindingComposeW");
   function RpcStringBindingParseA(
      StringBinding : RPC_CSTR;
      ObjUuid : access RPC_CSTR;
      Protseq : access RPC_CSTR;
      NetworkAddr : access RPC_CSTR;
      Endpoint : access RPC_CSTR;
      NetworkOptions : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcStringBindingParseA,"RpcStringBindingParseA");
   function RpcStringBindingParseW(
      StringBinding : RPC_WSTR;
      ObjUuid : access RPC_WSTR;
      Protseq : access RPC_WSTR;
      NetworkAddr : access RPC_WSTR;
      Endpoint : access RPC_WSTR;
      NetworkOptions : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcStringBindingParseW,"RpcStringBindingParseW");
   function RpcStringFreeA(
      String : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcStringFreeA,"RpcStringFreeA");
   function RpcStringFreeW(
      String : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcStringFreeW,"RpcStringFreeW");
   function RpcIfInqId(
      RpcIfHandle : RPC_IF_HANDLE;
      RpcIfId : access RPC_IF_ID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcIfInqId,"RpcIfInqId");
   function RpcNetworkIsProtseqValidA(
      Protseq : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNetworkIsProtseqValidA,"RpcNetworkIsProtseqValidA");
   function RpcNetworkIsProtseqValidW(
      Protseq : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNetworkIsProtseqValidW,"RpcNetworkIsProtseqValidW");
   function RpcMgmtInqComTimeout(
      Binding : RPC_BINDING_HANDLE;
      Timeout : access Interfaces.C.unsigned
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtInqComTimeout,"RpcMgmtInqComTimeout");
   function RpcMgmtSetComTimeout(
      Binding : RPC_BINDING_HANDLE;
      Timeout : Interfaces.C.unsigned
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtSetComTimeout,"RpcMgmtSetComTimeout");
   function RpcMgmtSetCancelTimeout(
      Timeout : Interfaces.C.Long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtSetCancelTimeout,"RpcMgmtSetCancelTimeout");
   type RPC_PROTSEQ_VECTORA_Ptr is access all RPC_PROTSEQ_VECTORA; -- Auto Generated Dependancy
   function RpcNetworkInqProtseqsA(
      ProtseqVector : access RPC_PROTSEQ_VECTORA_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNetworkInqProtseqsA,"RpcNetworkInqProtseqsA");
   type RPC_PROTSEQ_VECTORW_Ptr is access all RPC_PROTSEQ_VECTORW; -- Auto Generated Dependancy
   function RpcNetworkInqProtseqsW(
      ProtseqVector : access RPC_PROTSEQ_VECTORW_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNetworkInqProtseqsW,"RpcNetworkInqProtseqsW");
   function RpcObjectInqType(
      ObjUuid : access UUID;
      TypeUuid : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcObjectInqType,"RpcObjectInqType");
   function RpcObjectSetInqFn(
      InquiryFn : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcObjectSetInqFn,"RpcObjectSetInqFn");
   function RpcObjectSetType(
      ObjUuid : access UUID;
      TypeUuid : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcObjectSetType,"RpcObjectSetType");
   function RpcProtseqVectorFreeA(
      ProtseqVector : access RPC_PROTSEQ_VECTORA_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcProtseqVectorFreeA,"RpcProtseqVectorFreeA");
   function RpcProtseqVectorFreeW(
      ProtseqVector : access RPC_PROTSEQ_VECTORW_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcProtseqVectorFreeW,"RpcProtseqVectorFreeW");
   function RpcServerInqBindings(
      BindingVector : access RPC_BINDING_VECTOR_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInqBindings,"RpcServerInqBindings");
   function RpcServerInqBindingsEx(
      SecurityDescriptor : access Void;
      BindingVector : access RPC_BINDING_VECTOR_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInqBindingsEx,"RpcServerInqBindingsEx");
   function RpcServerInqIf(
      IfSpec : RPC_IF_HANDLE;
      MgrTypeUuid : access UUID;
      MgrEpv : access LPVOID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInqIf,"RpcServerInqIf");
   function RpcServerListen(
      MinimumCallThreads : Interfaces.C.unsigned;
      MaxCalls : Interfaces.C.unsigned;
      DontWait : Interfaces.C.unsigned
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerListen,"RpcServerListen");
   function RpcServerRegisterIf(
      IfSpec : RPC_IF_HANDLE;
      MgrTypeUuid : access UUID;
      MgrEpv : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerRegisterIf,"RpcServerRegisterIf");
   function RpcServerRegisterIfEx(
      IfSpec : RPC_IF_HANDLE;
      MgrTypeUuid : access UUID;
      MgrEpv : access Void;
      Flags : Interfaces.C.unsigned;
      MaxCalls : Interfaces.C.unsigned;
      IfCallback : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerRegisterIfEx,"RpcServerRegisterIfEx");
   function RpcServerRegisterIf2(
      IfSpec : RPC_IF_HANDLE;
      MgrTypeUuid : access UUID;
      MgrEpv : access Void;
      Flags : Interfaces.C.unsigned;
      MaxCalls : Interfaces.C.unsigned;
      MaxRpcSize : Interfaces.C.unsigned;
      IfCallbackFn : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerRegisterIf2,"RpcServerRegisterIf2");
   function RpcServerRegisterIf3(
      IfSpec : RPC_IF_HANDLE;
      MgrTypeUuid : access UUID;
      MgrEpv : access Void;
      Flags : Interfaces.C.unsigned;
      MaxCalls : Interfaces.C.unsigned;
      MaxRpcSize : Interfaces.C.unsigned;
      IfCallback : access Void;
      SecurityDescriptor : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerRegisterIf3,"RpcServerRegisterIf3");
   function RpcServerUnregisterIf(
      IfSpec : RPC_IF_HANDLE;
      MgrTypeUuid : access UUID;
      WaitForCallsToComplete : Interfaces.C.unsigned
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUnregisterIf,"RpcServerUnregisterIf");
   function RpcServerUnregisterIfEx(
      IfSpec : RPC_IF_HANDLE;
      MgrTypeUuid : access UUID;
      RundownContextHandles : Interfaces.C.Int
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUnregisterIfEx,"RpcServerUnregisterIfEx");
   function RpcServerUseAllProtseqs(
      MaxCalls : Interfaces.C.unsigned;
      SecurityDescriptor : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseAllProtseqs,"RpcServerUseAllProtseqs");
   function RpcServerUseAllProtseqsEx(
      MaxCalls : Interfaces.C.unsigned;
      SecurityDescriptor : access Void;
      Policy : PRPC_POLICY
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseAllProtseqsEx,"RpcServerUseAllProtseqsEx");
   function RpcServerUseAllProtseqsIf(
      MaxCalls : Interfaces.C.unsigned;
      IfSpec : RPC_IF_HANDLE;
      SecurityDescriptor : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseAllProtseqsIf,"RpcServerUseAllProtseqsIf");
   function RpcServerUseAllProtseqsIfEx(
      MaxCalls : Interfaces.C.unsigned;
      IfSpec : RPC_IF_HANDLE;
      SecurityDescriptor : access Void;
      Policy : PRPC_POLICY
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseAllProtseqsIfEx,"RpcServerUseAllProtseqsIfEx");
   function RpcServerUseProtseqA(
      Protseq : RPC_CSTR;
      MaxCalls : Interfaces.C.unsigned;
      SecurityDescriptor : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseProtseqA,"RpcServerUseProtseqA");
   function RpcServerUseProtseqExA(
      Protseq : RPC_CSTR;
      MaxCalls : Interfaces.C.unsigned;
      SecurityDescriptor : access Void;
      Policy : PRPC_POLICY
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseProtseqExA,"RpcServerUseProtseqExA");
   function RpcServerUseProtseqW(
      Protseq : RPC_WSTR;
      MaxCalls : Interfaces.C.unsigned;
      SecurityDescriptor : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseProtseqW,"RpcServerUseProtseqW");
   function RpcServerUseProtseqExW(
      Protseq : RPC_WSTR;
      MaxCalls : Interfaces.C.unsigned;
      SecurityDescriptor : access Void;
      Policy : PRPC_POLICY
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseProtseqExW,"RpcServerUseProtseqExW");
   function RpcServerUseProtseqEpA(
      Protseq : RPC_CSTR;
      MaxCalls : Interfaces.C.unsigned;
      Endpoint : RPC_CSTR;
      SecurityDescriptor : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseProtseqEpA,"RpcServerUseProtseqEpA");
   function RpcServerUseProtseqEpExA(
      Protseq : RPC_CSTR;
      MaxCalls : Interfaces.C.unsigned;
      Endpoint : RPC_CSTR;
      SecurityDescriptor : access Void;
      Policy : PRPC_POLICY
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseProtseqEpExA,"RpcServerUseProtseqEpExA");
   function RpcServerUseProtseqEpW(
      Protseq : RPC_WSTR;
      MaxCalls : Interfaces.C.unsigned;
      Endpoint : RPC_WSTR;
      SecurityDescriptor : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseProtseqEpW,"RpcServerUseProtseqEpW");
   function RpcServerUseProtseqEpExW(
      Protseq : RPC_WSTR;
      MaxCalls : Interfaces.C.unsigned;
      Endpoint : RPC_WSTR;
      SecurityDescriptor : access Void;
      Policy : PRPC_POLICY
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseProtseqEpExW,"RpcServerUseProtseqEpExW");
   function RpcServerUseProtseqIfA(
      Protseq : RPC_CSTR;
      MaxCalls : Interfaces.C.unsigned;
      IfSpec : RPC_IF_HANDLE;
      SecurityDescriptor : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseProtseqIfA,"RpcServerUseProtseqIfA");
   function RpcServerUseProtseqIfExA(
      Protseq : RPC_CSTR;
      MaxCalls : Interfaces.C.unsigned;
      IfSpec : RPC_IF_HANDLE;
      SecurityDescriptor : access Void;
      Policy : PRPC_POLICY
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseProtseqIfExA,"RpcServerUseProtseqIfExA");
   function RpcServerUseProtseqIfW(
      Protseq : RPC_WSTR;
      MaxCalls : Interfaces.C.unsigned;
      IfSpec : RPC_IF_HANDLE;
      SecurityDescriptor : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseProtseqIfW,"RpcServerUseProtseqIfW");
   function RpcServerUseProtseqIfExW(
      Protseq : RPC_WSTR;
      MaxCalls : Interfaces.C.unsigned;
      IfSpec : RPC_IF_HANDLE;
      SecurityDescriptor : access Void;
      Policy : PRPC_POLICY
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUseProtseqIfExW,"RpcServerUseProtseqIfExW");
   procedure RpcServerYield;
   pragma import (Cpp,RpcServerYield,"RpcServerYield");
   type RPC_STATS_VECTOR_Ptr is access all RPC_STATS_VECTOR; -- Auto Generated Dependancy
   function RpcMgmtStatsVectorFree(
      StatsVector : access RPC_STATS_VECTOR_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtStatsVectorFree,"RpcMgmtStatsVectorFree");
   function RpcMgmtInqStats(
      Binding : RPC_BINDING_HANDLE;
      Statistics : access RPC_STATS_VECTOR_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtInqStats,"RpcMgmtInqStats");
   function RpcMgmtIsServerListening(
      Binding : RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtIsServerListening,"RpcMgmtIsServerListening");
   function RpcMgmtStopServerListening(
      Binding : RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtStopServerListening,"RpcMgmtStopServerListening");
   function RpcMgmtWaitServerListen return RPC_STATUS;
   pragma import (Cpp,RpcMgmtWaitServerListen,"RpcMgmtWaitServerListen");
   function RpcMgmtSetServerStackSize(
      ThreadStackSize : Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtSetServerStackSize,"RpcMgmtSetServerStackSize");
   procedure RpcSsDontSerializeContext;
   pragma import (Cpp,RpcSsDontSerializeContext,"RpcSsDontSerializeContext");
   function RpcMgmtEnableIdleCleanup return RPC_STATUS;
   pragma import (Cpp,RpcMgmtEnableIdleCleanup,"RpcMgmtEnableIdleCleanup");
   type RPC_IF_ID_VECTOR_Ptr is access all RPC_IF_ID_VECTOR; -- Auto Generated Dependancy
   function RpcMgmtInqIfIds(
      Binding : RPC_BINDING_HANDLE;
      IfIdVector : access RPC_IF_ID_VECTOR_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtInqIfIds,"RpcMgmtInqIfIds");
   function RpcIfIdVectorFree(
      IfIdVector : access RPC_IF_ID_VECTOR_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcIfIdVectorFree,"RpcIfIdVectorFree");
   function RpcMgmtInqServerPrincNameA(
      Binding : RPC_BINDING_HANDLE;
      AuthnSvc : Interfaces.C.unsigned_long;
      ServerPrincName : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtInqServerPrincNameA,"RpcMgmtInqServerPrincNameA");
   function RpcMgmtInqServerPrincNameW(
      Binding : RPC_BINDING_HANDLE;
      AuthnSvc : Interfaces.C.unsigned_long;
      ServerPrincName : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtInqServerPrincNameW,"RpcMgmtInqServerPrincNameW");
   function RpcServerInqDefaultPrincNameA(
      AuthnSvc : Interfaces.C.unsigned_long;
      PrincName : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInqDefaultPrincNameA,"RpcServerInqDefaultPrincNameA");
   function RpcServerInqDefaultPrincNameW(
      AuthnSvc : Interfaces.C.unsigned_long;
      PrincName : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInqDefaultPrincNameW,"RpcServerInqDefaultPrincNameW");
   function RpcEpResolveBinding(
      Binding : RPC_BINDING_HANDLE;
      IfSpec : RPC_IF_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcEpResolveBinding,"RpcEpResolveBinding");
   function RpcNsBindingInqEntryNameA(
      Binding : RPC_BINDING_HANDLE;
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingInqEntryNameA,"RpcNsBindingInqEntryNameA");
   function RpcNsBindingInqEntryNameW(
      Binding : RPC_BINDING_HANDLE;
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingInqEntryNameW,"RpcNsBindingInqEntryNameW");
   type RPC_AUTH_IDENTITY_HANDLE is access all Void;
   type RPC_AUTHZ_HANDLE is access all Void;
   type RPC_SECURITY_QOS_x is record
      Version : Interfaces.C.unsigned_long;
      Capabilities : Interfaces.C.unsigned_long;
      IdentityTracking : Interfaces.C.unsigned_long;
      ImpersonationType : Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_SECURITY_QOS_x);
   for RPC_SECURITY_QOS_x use record
      Version at 0 range 0..31;
      Capabilities at 0 range 32..63;
      IdentityTracking at 0 range 64..95;
      ImpersonationType at 0 range 96..127;
   end record;
   for RPC_SECURITY_QOS_x'Size use 128;
   for RPC_SECURITY_QOS_x'Alignment use 4;
   subtype RPC_SECURITY_QOS is RPC_SECURITY_QOS_x;
   type PRPC_SECURITY_QOS is access all RPC_SECURITY_QOS_x;
   type SEC_WINNT_AUTH_IDENTITY_W_x is record
      User : access Interfaces.C.unsigned_short;
      UserLength : Interfaces.C.unsigned_long;
      Domain : access Interfaces.C.unsigned_short;
      DomainLength : Interfaces.C.unsigned_long;
      Password : access Interfaces.C.unsigned_short;
      PasswordLength : Interfaces.C.unsigned_long;
      Flags : Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,SEC_WINNT_AUTH_IDENTITY_W_x);
   for SEC_WINNT_AUTH_IDENTITY_W_x use record
      User at 0 range 0..63;
      UserLength at 0 range 64..95;
      Domain at 0 range 128..191;
      DomainLength at 0 range 192..223;
      Password at 0 range 256..319;
      PasswordLength at 0 range 320..351;
      Flags at 0 range 352..383;
   end record;
   for SEC_WINNT_AUTH_IDENTITY_W_x'Size use 384;
   for SEC_WINNT_AUTH_IDENTITY_W_x'Alignment use 8;
   subtype SEC_WINNT_AUTH_IDENTITY_W is SEC_WINNT_AUTH_IDENTITY_W_x;
   type PSEC_WINNT_AUTH_IDENTITY_W is access all SEC_WINNT_AUTH_IDENTITY_W_x;
   type SEC_WINNT_AUTH_IDENTITY_A_x is record
      User : access Interfaces.C.unsigned_char;
      UserLength : Interfaces.C.unsigned_long;
      Domain : access Interfaces.C.unsigned_char;
      DomainLength : Interfaces.C.unsigned_long;
      Password : access Interfaces.C.unsigned_char;
      PasswordLength : Interfaces.C.unsigned_long;
      Flags : Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,SEC_WINNT_AUTH_IDENTITY_A_x);
   for SEC_WINNT_AUTH_IDENTITY_A_x use record
      User at 0 range 0..63;
      UserLength at 0 range 64..95;
      Domain at 0 range 128..191;
      DomainLength at 0 range 192..223;
      Password at 0 range 256..319;
      PasswordLength at 0 range 320..351;
      Flags at 0 range 352..383;
   end record;
   for SEC_WINNT_AUTH_IDENTITY_A_x'Size use 384;
   for SEC_WINNT_AUTH_IDENTITY_A_x'Alignment use 8;
   subtype SEC_WINNT_AUTH_IDENTITY_A is SEC_WINNT_AUTH_IDENTITY_A_x;
   type PSEC_WINNT_AUTH_IDENTITY_A is access all SEC_WINNT_AUTH_IDENTITY_A_x;
   type RPC_HTTP_TRANSPORT_CREDENTIALS_W_x is record
      TransportCredentials : access SEC_WINNT_AUTH_IDENTITY_W;
      Flags : Interfaces.C.unsigned_long;
      AuthenticationTarget : Interfaces.C.unsigned_long;
      NumberOfAuthnSchemes : Interfaces.C.unsigned_long;
      AuthnSchemes : access Interfaces.C.unsigned_long;
      ServerCertificateSubject : access Interfaces.C.unsigned_short;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_HTTP_TRANSPORT_CREDENTIALS_W_x);
   for RPC_HTTP_TRANSPORT_CREDENTIALS_W_x use record
      TransportCredentials at 0 range 0..63;
      Flags at 0 range 64..95;
      AuthenticationTarget at 0 range 96..127;
      NumberOfAuthnSchemes at 0 range 128..159;
      AuthnSchemes at 0 range 192..255;
      ServerCertificateSubject at 0 range 256..319;
   end record;
   for RPC_HTTP_TRANSPORT_CREDENTIALS_W_x'Size use 320;
   for RPC_HTTP_TRANSPORT_CREDENTIALS_W_x'Alignment use 8;
   subtype RPC_HTTP_TRANSPORT_CREDENTIALS_W is RPC_HTTP_TRANSPORT_CREDENTIALS_W_x;
   type PRPC_HTTP_TRANSPORT_CREDENTIALS_W is access all RPC_HTTP_TRANSPORT_CREDENTIALS_W_x;
   type RPC_HTTP_TRANSPORT_CREDENTIALS_A_x is record
      TransportCredentials : access SEC_WINNT_AUTH_IDENTITY_A;
      Flags : Interfaces.C.unsigned_long;
      AuthenticationTarget : Interfaces.C.unsigned_long;
      NumberOfAuthnSchemes : Interfaces.C.unsigned_long;
      AuthnSchemes : access Interfaces.C.unsigned_long;
      ServerCertificateSubject : access Interfaces.C.unsigned_char;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_HTTP_TRANSPORT_CREDENTIALS_A_x);
   for RPC_HTTP_TRANSPORT_CREDENTIALS_A_x use record
      TransportCredentials at 0 range 0..63;
      Flags at 0 range 64..95;
      AuthenticationTarget at 0 range 96..127;
      NumberOfAuthnSchemes at 0 range 128..159;
      AuthnSchemes at 0 range 192..255;
      ServerCertificateSubject at 0 range 256..319;
   end record;
   for RPC_HTTP_TRANSPORT_CREDENTIALS_A_x'Size use 320;
   for RPC_HTTP_TRANSPORT_CREDENTIALS_A_x'Alignment use 8;
   subtype RPC_HTTP_TRANSPORT_CREDENTIALS_A is RPC_HTTP_TRANSPORT_CREDENTIALS_A_x;
   type PRPC_HTTP_TRANSPORT_CREDENTIALS_A is access all RPC_HTTP_TRANSPORT_CREDENTIALS_A_x;
   type RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W_x is record
      TransportCredentials : access SEC_WINNT_AUTH_IDENTITY_W;
      Flags : Interfaces.C.unsigned_long;
      AuthenticationTarget : Interfaces.C.unsigned_long;
      NumberOfAuthnSchemes : Interfaces.C.unsigned_long;
      AuthnSchemes : access Interfaces.C.unsigned_long;
      ServerCertificateSubject : access Interfaces.C.unsigned_short;
      ProxyCredentials : access SEC_WINNT_AUTH_IDENTITY_W;
      NumberOfProxyAuthnSchemes : Interfaces.C.unsigned_long;
      ProxyAuthnSchemes : access Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W_x);
   for RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W_x use record
      TransportCredentials at 0 range 0..63;
      Flags at 0 range 64..95;
      AuthenticationTarget at 0 range 96..127;
      NumberOfAuthnSchemes at 0 range 128..159;
      AuthnSchemes at 0 range 192..255;
      ServerCertificateSubject at 0 range 256..319;
      ProxyCredentials at 0 range 320..383;
      NumberOfProxyAuthnSchemes at 0 range 384..415;
      ProxyAuthnSchemes at 0 range 448..511;
   end record;
   for RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W_x'Size use 512;
   for RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W_x'Alignment use 8;
   subtype RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W is RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W_x;
   type PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_W is access all RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W_x;
   type RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A_x is record
      TransportCredentials : access SEC_WINNT_AUTH_IDENTITY_A;
      Flags : Interfaces.C.unsigned_long;
      AuthenticationTarget : Interfaces.C.unsigned_long;
      NumberOfAuthnSchemes : Interfaces.C.unsigned_long;
      AuthnSchemes : access Interfaces.C.unsigned_long;
      ServerCertificateSubject : access Interfaces.C.unsigned_char;
      ProxyCredentials : access SEC_WINNT_AUTH_IDENTITY_A;
      NumberOfProxyAuthnSchemes : Interfaces.C.unsigned_long;
      ProxyAuthnSchemes : access Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A_x);
   for RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A_x use record
      TransportCredentials at 0 range 0..63;
      Flags at 0 range 64..95;
      AuthenticationTarget at 0 range 96..127;
      NumberOfAuthnSchemes at 0 range 128..159;
      AuthnSchemes at 0 range 192..255;
      ServerCertificateSubject at 0 range 256..319;
      ProxyCredentials at 0 range 320..383;
      NumberOfProxyAuthnSchemes at 0 range 384..415;
      ProxyAuthnSchemes at 0 range 448..511;
   end record;
   for RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A_x'Size use 512;
   for RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A_x'Alignment use 8;
   subtype RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A is RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A_x;
   type PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_A is access all RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A_x;
   type RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W_x is record
      TransportCredentials : RPC_AUTH_IDENTITY_HANDLE;
      Flags : Interfaces.C.unsigned_long;
      AuthenticationTarget : Interfaces.C.unsigned_long;
      NumberOfAuthnSchemes : Interfaces.C.unsigned_long;
      AuthnSchemes : access Interfaces.C.unsigned_long;
      ServerCertificateSubject : access Interfaces.C.unsigned_short;
      ProxyCredentials : RPC_AUTH_IDENTITY_HANDLE;
      NumberOfProxyAuthnSchemes : Interfaces.C.unsigned_long;
      ProxyAuthnSchemes : access Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W_x);
   for RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W_x use record
      TransportCredentials at 0 range 0..63;
      Flags at 0 range 64..95;
      AuthenticationTarget at 0 range 96..127;
      NumberOfAuthnSchemes at 0 range 128..159;
      AuthnSchemes at 0 range 192..255;
      ServerCertificateSubject at 0 range 256..319;
      ProxyCredentials at 0 range 320..383;
      NumberOfProxyAuthnSchemes at 0 range 384..415;
      ProxyAuthnSchemes at 0 range 448..511;
   end record;
   for RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W_x'Size use 512;
   for RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W_x'Alignment use 8;
   subtype RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W is RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W_x;
   type PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_W is access all RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W_x;
   type RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A_x is record
      TransportCredentials : RPC_AUTH_IDENTITY_HANDLE;
      Flags : Interfaces.C.unsigned_long;
      AuthenticationTarget : Interfaces.C.unsigned_long;
      NumberOfAuthnSchemes : Interfaces.C.unsigned_long;
      AuthnSchemes : access Interfaces.C.unsigned_long;
      ServerCertificateSubject : access Interfaces.C.unsigned_char;
      ProxyCredentials : RPC_AUTH_IDENTITY_HANDLE;
      NumberOfProxyAuthnSchemes : Interfaces.C.unsigned_long;
      ProxyAuthnSchemes : access Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A_x);
   for RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A_x use record
      TransportCredentials at 0 range 0..63;
      Flags at 0 range 64..95;
      AuthenticationTarget at 0 range 96..127;
      NumberOfAuthnSchemes at 0 range 128..159;
      AuthnSchemes at 0 range 192..255;
      ServerCertificateSubject at 0 range 256..319;
      ProxyCredentials at 0 range 320..383;
      NumberOfProxyAuthnSchemes at 0 range 384..415;
      ProxyAuthnSchemes at 0 range 448..511;
   end record;
   for RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A_x'Size use 512;
   for RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A_x'Alignment use 8;
   subtype RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A is RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A_x;
   type PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_A is access all RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A_x;
   type Anonymous_Record_255 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            HttpCredentials : access RPC_HTTP_TRANSPORT_CREDENTIALS_W;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_255);
   pragma Unchecked_Union (Anonymous_Record_255);
   for Anonymous_Record_255'Size use 64;
   for Anonymous_Record_255'Alignment use 8;
   type RPC_SECURITY_QOS_V2_W_x is record
      Version : Interfaces.C.unsigned_long;
      Capabilities : Interfaces.C.unsigned_long;
      IdentityTracking : Interfaces.C.unsigned_long;
      ImpersonationType : Interfaces.C.unsigned_long;
      AdditionalSecurityInfoType : Interfaces.C.unsigned_long;
      field_1 : Anonymous_Record_255;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_SECURITY_QOS_V2_W_x);
   for RPC_SECURITY_QOS_V2_W_x use record
      Version at 0 range 0..31;
      Capabilities at 0 range 32..63;
      IdentityTracking at 0 range 64..95;
      ImpersonationType at 0 range 96..127;
      AdditionalSecurityInfoType at 0 range 128..159;
      field_1 at 0 range 160..223;
   end record;
   for RPC_SECURITY_QOS_V2_W_x'Size use 256;
   for RPC_SECURITY_QOS_V2_W_x'Alignment use 8;
   subtype RPC_SECURITY_QOS_V2_W is RPC_SECURITY_QOS_V2_W_x;
   type PRPC_SECURITY_QOS_V2_W is access all RPC_SECURITY_QOS_V2_W_x;
   type Anonymous_Record_256 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            HttpCredentials : access RPC_HTTP_TRANSPORT_CREDENTIALS_A;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_256);
   pragma Unchecked_Union (Anonymous_Record_256);
   for Anonymous_Record_256'Size use 64;
   for Anonymous_Record_256'Alignment use 8;
   type RPC_SECURITY_QOS_V2_A_x is record
      Version : Interfaces.C.unsigned_long;
      Capabilities : Interfaces.C.unsigned_long;
      IdentityTracking : Interfaces.C.unsigned_long;
      ImpersonationType : Interfaces.C.unsigned_long;
      AdditionalSecurityInfoType : Interfaces.C.unsigned_long;
      field_1 : Anonymous_Record_256;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_SECURITY_QOS_V2_A_x);
   for RPC_SECURITY_QOS_V2_A_x use record
      Version at 0 range 0..31;
      Capabilities at 0 range 32..63;
      IdentityTracking at 0 range 64..95;
      ImpersonationType at 0 range 96..127;
      AdditionalSecurityInfoType at 0 range 128..159;
      field_1 at 0 range 160..223;
   end record;
   for RPC_SECURITY_QOS_V2_A_x'Size use 256;
   for RPC_SECURITY_QOS_V2_A_x'Alignment use 8;
   subtype RPC_SECURITY_QOS_V2_A is RPC_SECURITY_QOS_V2_A_x;
   type PRPC_SECURITY_QOS_V2_A is access all RPC_SECURITY_QOS_V2_A_x;
   type Anonymous_Record_257 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            HttpCredentials : access RPC_HTTP_TRANSPORT_CREDENTIALS_W;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_257);
   pragma Unchecked_Union (Anonymous_Record_257);
   for Anonymous_Record_257'Size use 64;
   for Anonymous_Record_257'Alignment use 8;
   type RPC_SECURITY_QOS_V3_W_x is record
      Version : Interfaces.C.unsigned_long;
      Capabilities : Interfaces.C.unsigned_long;
      IdentityTracking : Interfaces.C.unsigned_long;
      ImpersonationType : Interfaces.C.unsigned_long;
      AdditionalSecurityInfoType : Interfaces.C.unsigned_long;
      field_1 : Anonymous_Record_257;
      Sid_x : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_SECURITY_QOS_V3_W_x);
   for RPC_SECURITY_QOS_V3_W_x use record
      Version at 0 range 0..31;
      Capabilities at 0 range 32..63;
      IdentityTracking at 0 range 64..95;
      ImpersonationType at 0 range 96..127;
      AdditionalSecurityInfoType at 0 range 128..159;
      field_1 at 0 range 160..223;
      Sid_x at 0 range 256..319;
   end record;
   for RPC_SECURITY_QOS_V3_W_x'Size use 320;
   for RPC_SECURITY_QOS_V3_W_x'Alignment use 8;
   subtype RPC_SECURITY_QOS_V3_W is RPC_SECURITY_QOS_V3_W_x;
   type PRPC_SECURITY_QOS_V3_W is access all RPC_SECURITY_QOS_V3_W_x;
   type Anonymous_Record_258 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            HttpCredentials : access RPC_HTTP_TRANSPORT_CREDENTIALS_A;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_258);
   pragma Unchecked_Union (Anonymous_Record_258);
   for Anonymous_Record_258'Size use 64;
   for Anonymous_Record_258'Alignment use 8;
   type RPC_SECURITY_QOS_V3_A_x is record
      Version : Interfaces.C.unsigned_long;
      Capabilities : Interfaces.C.unsigned_long;
      IdentityTracking : Interfaces.C.unsigned_long;
      ImpersonationType : Interfaces.C.unsigned_long;
      AdditionalSecurityInfoType : Interfaces.C.unsigned_long;
      field_1 : Anonymous_Record_258;
      Sid_x : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_SECURITY_QOS_V3_A_x);
   for RPC_SECURITY_QOS_V3_A_x use record
      Version at 0 range 0..31;
      Capabilities at 0 range 32..63;
      IdentityTracking at 0 range 64..95;
      ImpersonationType at 0 range 96..127;
      AdditionalSecurityInfoType at 0 range 128..159;
      field_1 at 0 range 160..223;
      Sid_x at 0 range 256..319;
   end record;
   for RPC_SECURITY_QOS_V3_A_x'Size use 320;
   for RPC_SECURITY_QOS_V3_A_x'Alignment use 8;
   subtype RPC_SECURITY_QOS_V3_A is RPC_SECURITY_QOS_V3_A_x;
   type PRPC_SECURITY_QOS_V3_A is access all RPC_SECURITY_QOS_V3_A_x;
   type Anonymous_Record_259 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            HttpCredentials : access RPC_HTTP_TRANSPORT_CREDENTIALS_W;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_259);
   pragma Unchecked_Union (Anonymous_Record_259);
   for Anonymous_Record_259'Size use 64;
   for Anonymous_Record_259'Alignment use 8;
   type RPC_SECURITY_QOS_V4_W_x is record
      Version : Interfaces.C.unsigned_long;
      Capabilities : Interfaces.C.unsigned_long;
      IdentityTracking : Interfaces.C.unsigned_long;
      ImpersonationType : Interfaces.C.unsigned_long;
      AdditionalSecurityInfoType : Interfaces.C.unsigned_long;
      field_1 : Anonymous_Record_259;
      Sid_x : access Void;
      EffectiveOnly : Interfaces.C.unsigned;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_SECURITY_QOS_V4_W_x);
   for RPC_SECURITY_QOS_V4_W_x use record
      Version at 0 range 0..31;
      Capabilities at 0 range 32..63;
      IdentityTracking at 0 range 64..95;
      ImpersonationType at 0 range 96..127;
      AdditionalSecurityInfoType at 0 range 128..159;
      field_1 at 0 range 160..223;
      Sid_x at 0 range 256..319;
      EffectiveOnly at 0 range 320..351;
   end record;
   for RPC_SECURITY_QOS_V4_W_x'Size use 384;
   for RPC_SECURITY_QOS_V4_W_x'Alignment use 8;
   subtype RPC_SECURITY_QOS_V4_W is RPC_SECURITY_QOS_V4_W_x;
   type PRPC_SECURITY_QOS_V4_W is access all RPC_SECURITY_QOS_V4_W_x;
   type Anonymous_Record_260 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            HttpCredentials : access RPC_HTTP_TRANSPORT_CREDENTIALS_A;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_260);
   pragma Unchecked_Union (Anonymous_Record_260);
   for Anonymous_Record_260'Size use 64;
   for Anonymous_Record_260'Alignment use 8;
   type RPC_SECURITY_QOS_V4_A_x is record
      Version : Interfaces.C.unsigned_long;
      Capabilities : Interfaces.C.unsigned_long;
      IdentityTracking : Interfaces.C.unsigned_long;
      ImpersonationType : Interfaces.C.unsigned_long;
      AdditionalSecurityInfoType : Interfaces.C.unsigned_long;
      field_1 : Anonymous_Record_260;
      Sid_x : access Void;
      EffectiveOnly : Interfaces.C.unsigned;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_SECURITY_QOS_V4_A_x);
   for RPC_SECURITY_QOS_V4_A_x use record
      Version at 0 range 0..31;
      Capabilities at 0 range 32..63;
      IdentityTracking at 0 range 64..95;
      ImpersonationType at 0 range 96..127;
      AdditionalSecurityInfoType at 0 range 128..159;
      field_1 at 0 range 160..223;
      Sid_x at 0 range 256..319;
      EffectiveOnly at 0 range 320..351;
   end record;
   for RPC_SECURITY_QOS_V4_A_x'Size use 384;
   for RPC_SECURITY_QOS_V4_A_x'Alignment use 8;
   subtype RPC_SECURITY_QOS_V4_A is RPC_SECURITY_QOS_V4_A_x;
   type PRPC_SECURITY_QOS_V4_A is access all RPC_SECURITY_QOS_V4_A_x;
   type Anonymous_Record_261 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            HttpCredentials : access RPC_HTTP_TRANSPORT_CREDENTIALS_W;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_261);
   pragma Unchecked_Union (Anonymous_Record_261);
   for Anonymous_Record_261'Size use 64;
   for Anonymous_Record_261'Alignment use 8;
   type RPC_SECURITY_QOS_V5_W_x is record
      Version : Interfaces.C.unsigned_long;
      Capabilities : Interfaces.C.unsigned_long;
      IdentityTracking : Interfaces.C.unsigned_long;
      ImpersonationType : Interfaces.C.unsigned_long;
      AdditionalSecurityInfoType : Interfaces.C.unsigned_long;
      field_1 : Anonymous_Record_261;
      Sid_x : access Void;
      EffectiveOnly : Interfaces.C.unsigned;
      ServerSecurityDescriptor : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_SECURITY_QOS_V5_W_x);
   for RPC_SECURITY_QOS_V5_W_x use record
      Version at 0 range 0..31;
      Capabilities at 0 range 32..63;
      IdentityTracking at 0 range 64..95;
      ImpersonationType at 0 range 96..127;
      AdditionalSecurityInfoType at 0 range 128..159;
      field_1 at 0 range 160..223;
      Sid_x at 0 range 256..319;
      EffectiveOnly at 0 range 320..351;
      ServerSecurityDescriptor at 0 range 384..447;
   end record;
   for RPC_SECURITY_QOS_V5_W_x'Size use 448;
   for RPC_SECURITY_QOS_V5_W_x'Alignment use 8;
   subtype RPC_SECURITY_QOS_V5_W is RPC_SECURITY_QOS_V5_W_x;
   type PRPC_SECURITY_QOS_V5_W is access all RPC_SECURITY_QOS_V5_W_x;
   type Anonymous_Record_262 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            HttpCredentials : access RPC_HTTP_TRANSPORT_CREDENTIALS_A;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_262);
   pragma Unchecked_Union (Anonymous_Record_262);
   for Anonymous_Record_262'Size use 64;
   for Anonymous_Record_262'Alignment use 8;
   type RPC_SECURITY_QOS_V5_A_x is record
      Version : Interfaces.C.unsigned_long;
      Capabilities : Interfaces.C.unsigned_long;
      IdentityTracking : Interfaces.C.unsigned_long;
      ImpersonationType : Interfaces.C.unsigned_long;
      AdditionalSecurityInfoType : Interfaces.C.unsigned_long;
      field_1 : Anonymous_Record_262;
      Sid_x : access Void;
      EffectiveOnly : Interfaces.C.unsigned;
      ServerSecurityDescriptor : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_SECURITY_QOS_V5_A_x);
   for RPC_SECURITY_QOS_V5_A_x use record
      Version at 0 range 0..31;
      Capabilities at 0 range 32..63;
      IdentityTracking at 0 range 64..95;
      ImpersonationType at 0 range 96..127;
      AdditionalSecurityInfoType at 0 range 128..159;
      field_1 at 0 range 160..223;
      Sid_x at 0 range 256..319;
      EffectiveOnly at 0 range 320..351;
      ServerSecurityDescriptor at 0 range 384..447;
   end record;
   for RPC_SECURITY_QOS_V5_A_x'Size use 448;
   for RPC_SECURITY_QOS_V5_A_x'Alignment use 8;
   subtype RPC_SECURITY_QOS_V5_A is RPC_SECURITY_QOS_V5_A_x;
   type PRPC_SECURITY_QOS_V5_A is access all RPC_SECURITY_QOS_V5_A_x;
   type Anonymous_Record_263 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            Reserved : access Interfaces.C.unsigned_short;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_263);
   pragma Unchecked_Union (Anonymous_Record_263);
   for Anonymous_Record_263'Size use 64;
   for Anonymous_Record_263'Alignment use 8;
   type RPC_BINDING_HANDLE_TEMPLATE_V1_W_x is record
      Version : Interfaces.C.unsigned_long;
      Flags : Interfaces.C.unsigned_long;
      ProtocolSequence : Interfaces.C.unsigned_long;
      NetworkAddress : access Interfaces.C.unsigned_short;
      StringEndpoint : access Interfaces.C.unsigned_short;
      field_1 : Anonymous_Record_263;
      ObjectUuid : UUID;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_BINDING_HANDLE_TEMPLATE_V1_W_x);
   for RPC_BINDING_HANDLE_TEMPLATE_V1_W_x use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      ProtocolSequence at 0 range 64..95;
      NetworkAddress at 0 range 128..191;
      StringEndpoint at 0 range 192..255;
      field_1 at 0 range 256..319;
      ObjectUuid at 0 range 320..447;
   end record;
   for RPC_BINDING_HANDLE_TEMPLATE_V1_W_x'Size use 448;
   for RPC_BINDING_HANDLE_TEMPLATE_V1_W_x'Alignment use 8;
   subtype RPC_BINDING_HANDLE_TEMPLATE_V1_W is RPC_BINDING_HANDLE_TEMPLATE_V1_W_x;
   type PRPC_BINDING_HANDLE_TEMPLATE_V1_W is access all RPC_BINDING_HANDLE_TEMPLATE_V1_W_x;
   type Anonymous_Record_264 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            Reserved : access Interfaces.C.unsigned_char;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_264);
   pragma Unchecked_Union (Anonymous_Record_264);
   for Anonymous_Record_264'Size use 64;
   for Anonymous_Record_264'Alignment use 8;
   type RPC_BINDING_HANDLE_TEMPLATE_V1_A_x is record
      Version : Interfaces.C.unsigned_long;
      Flags : Interfaces.C.unsigned_long;
      ProtocolSequence : Interfaces.C.unsigned_long;
      NetworkAddress : access Interfaces.C.unsigned_char;
      StringEndpoint : access Interfaces.C.unsigned_char;
      field_1 : Anonymous_Record_264;
      ObjectUuid : UUID;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_BINDING_HANDLE_TEMPLATE_V1_A_x);
   for RPC_BINDING_HANDLE_TEMPLATE_V1_A_x use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      ProtocolSequence at 0 range 64..95;
      NetworkAddress at 0 range 128..191;
      StringEndpoint at 0 range 192..255;
      field_1 at 0 range 256..319;
      ObjectUuid at 0 range 320..447;
   end record;
   for RPC_BINDING_HANDLE_TEMPLATE_V1_A_x'Size use 448;
   for RPC_BINDING_HANDLE_TEMPLATE_V1_A_x'Alignment use 8;
   subtype RPC_BINDING_HANDLE_TEMPLATE_V1_A is RPC_BINDING_HANDLE_TEMPLATE_V1_A_x;
   type PRPC_BINDING_HANDLE_TEMPLATE_V1_A is access all RPC_BINDING_HANDLE_TEMPLATE_V1_A_x;
   type RPC_BINDING_HANDLE_SECURITY_V1_W_x is record
      Version : Interfaces.C.unsigned_long;
      ServerPrincName : access Interfaces.C.unsigned_short;
      AuthnLevel : Interfaces.C.unsigned_long;
      AuthnSvc : Interfaces.C.unsigned_long;
      AuthIdentity : access SEC_WINNT_AUTH_IDENTITY_W;
      SecurityQos : access RPC_SECURITY_QOS;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_BINDING_HANDLE_SECURITY_V1_W_x);
   for RPC_BINDING_HANDLE_SECURITY_V1_W_x use record
      Version at 0 range 0..31;
      ServerPrincName at 0 range 64..127;
      AuthnLevel at 0 range 128..159;
      AuthnSvc at 0 range 160..191;
      AuthIdentity at 0 range 192..255;
      SecurityQos at 0 range 256..319;
   end record;
   for RPC_BINDING_HANDLE_SECURITY_V1_W_x'Size use 320;
   for RPC_BINDING_HANDLE_SECURITY_V1_W_x'Alignment use 8;
   subtype RPC_BINDING_HANDLE_SECURITY_V1_W is RPC_BINDING_HANDLE_SECURITY_V1_W_x;
   type PRPC_BINDING_HANDLE_SECURITY_V1_W is access all RPC_BINDING_HANDLE_SECURITY_V1_W_x;
   type RPC_BINDING_HANDLE_SECURITY_V1_A_x is record
      Version : Interfaces.C.unsigned_long;
      ServerPrincName : access Interfaces.C.unsigned_char;
      AuthnLevel : Interfaces.C.unsigned_long;
      AuthnSvc : Interfaces.C.unsigned_long;
      AuthIdentity : access SEC_WINNT_AUTH_IDENTITY_A;
      SecurityQos : access RPC_SECURITY_QOS;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_BINDING_HANDLE_SECURITY_V1_A_x);
   for RPC_BINDING_HANDLE_SECURITY_V1_A_x use record
      Version at 0 range 0..31;
      ServerPrincName at 0 range 64..127;
      AuthnLevel at 0 range 128..159;
      AuthnSvc at 0 range 160..191;
      AuthIdentity at 0 range 192..255;
      SecurityQos at 0 range 256..319;
   end record;
   for RPC_BINDING_HANDLE_SECURITY_V1_A_x'Size use 320;
   for RPC_BINDING_HANDLE_SECURITY_V1_A_x'Alignment use 8;
   subtype RPC_BINDING_HANDLE_SECURITY_V1_A is RPC_BINDING_HANDLE_SECURITY_V1_A_x;
   type PRPC_BINDING_HANDLE_SECURITY_V1_A is access all RPC_BINDING_HANDLE_SECURITY_V1_A_x;
   type RPC_BINDING_HANDLE_OPTIONS_V1_x is record
      Version : Interfaces.C.unsigned_long;
      Flags : Interfaces.C.unsigned_long;
      ComTimeout : Interfaces.C.unsigned_long;
      CallTimeout : Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_BINDING_HANDLE_OPTIONS_V1_x);
   for RPC_BINDING_HANDLE_OPTIONS_V1_x use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      ComTimeout at 0 range 64..95;
      CallTimeout at 0 range 96..127;
   end record;
   for RPC_BINDING_HANDLE_OPTIONS_V1_x'Size use 128;
   for RPC_BINDING_HANDLE_OPTIONS_V1_x'Alignment use 4;
   subtype RPC_BINDING_HANDLE_OPTIONS_V1 is RPC_BINDING_HANDLE_OPTIONS_V1_x;
   type PRPC_BINDING_HANDLE_OPTIONS_V1 is access all RPC_BINDING_HANDLE_OPTIONS_V1_x;
   function RpcBindingCreateA(
      Template : access RPC_BINDING_HANDLE_TEMPLATE_V1_A;
      Security : access RPC_BINDING_HANDLE_SECURITY_V1_A;
      Options : access RPC_BINDING_HANDLE_OPTIONS_V1;
      Binding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingCreateA,"RpcBindingCreateA");
   function RpcBindingCreateW(
      Template : access RPC_BINDING_HANDLE_TEMPLATE_V1_W;
      Security : access RPC_BINDING_HANDLE_SECURITY_V1_W;
      Options : access RPC_BINDING_HANDLE_OPTIONS_V1;
      Binding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingCreateW,"RpcBindingCreateW");
   function RpcBindingGetTrainingContextHandle(
      Binding : RPC_BINDING_HANDLE;
      ContextHandle : access LPVOID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingGetTrainingContextHandle,"RpcBindingGetTrainingContextHandle");
   function RpcServerInqBindingHandle(
      Binding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInqBindingHandle,"RpcServerInqBindingHandle");
   type RPC_HTTP_REDIRECTOR_STAGE_x is (
      RPCHTTP_RS_REDIRECT,
      RPCHTTP_RS_ACCESS_1,
      RPCHTTP_RS_SESSION,
      RPCHTTP_RS_ACCESS_2,
      RPCHTTP_RS_INTERFACE
   );
   for RPC_HTTP_REDIRECTOR_STAGE_x use (
      RPCHTTP_RS_REDIRECT => 1,
      RPCHTTP_RS_ACCESS_1 => 2,
      RPCHTTP_RS_SESSION => 3,
      RPCHTTP_RS_ACCESS_2 => 4,
      RPCHTTP_RS_INTERFACE => 5
   );
   for RPC_HTTP_REDIRECTOR_STAGE_x'Size use 32;
   subtype RPC_HTTP_REDIRECTOR_STAGE is RPC_HTTP_REDIRECTOR_STAGE_x;
   type RPC_NEW_HTTP_PROXY_CHANNEL is access function (p1 : RPC_HTTP_REDIRECTOR_STAGE ; p2 : RPC_WSTR ; p3 : RPC_WSTR ; p4 : RPC_WSTR ; p5 : RPC_WSTR ; p6 : access void ; p7 : access void ; p8 : access void ; p9 : access void ; p10 : Interfaces.C.unsigned_long ; p11 : access RPC_WSTR ; p12 : access RPC_WSTR) return RPC_STATUS; -- RPC_STATUS (RPC_HTTP_REDIRECTOR_STAGE, RPC_WSTR, RPC_WSTR, RPC_WSTR, RPC_WSTR, void *, void *, void *, void *, unsigned long, RPC_WSTR *, RPC_WSTR *)
   pragma Convention(C,RPC_NEW_HTTP_PROXY_CHANNEL);
   type RPC_HTTP_PROXY_FREE_STRING is access procedure (p1 : RPC_WSTR); -- void (RPC_WSTR)
   pragma Convention(C,RPC_HTTP_PROXY_FREE_STRING);
   function RpcImpersonateClient(
      BindingHandle : RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcImpersonateClient,"RpcImpersonateClient");
   function RpcImpersonateClient2(
      BindingHandle : RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcImpersonateClient2,"RpcImpersonateClient2");
   function RpcRevertToSelfEx(
      BindingHandle : RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcRevertToSelfEx,"RpcRevertToSelfEx");
   function RpcRevertToSelf return RPC_STATUS;
   pragma import (Cpp,RpcRevertToSelf,"RpcRevertToSelf");
   function RpcImpersonateClientContainer(
      BindingHandle : RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcImpersonateClientContainer,"RpcImpersonateClientContainer");
   function RpcRevertContainerImpersonation return RPC_STATUS;
   pragma import (Cpp,RpcRevertContainerImpersonation,"RpcRevertContainerImpersonation");
   function RpcBindingInqAuthClientA(
      ClientBinding : RPC_BINDING_HANDLE;
      Privs : access RPC_AUTHZ_HANDLE;
      ServerPrincName : access RPC_CSTR;
      AuthnLevel : access Interfaces.C.unsigned_long;
      AuthnSvc : access Interfaces.C.unsigned_long;
      AuthzSvc : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingInqAuthClientA,"RpcBindingInqAuthClientA");
   function RpcBindingInqAuthClientW(
      ClientBinding : RPC_BINDING_HANDLE;
      Privs : access RPC_AUTHZ_HANDLE;
      ServerPrincName : access RPC_WSTR;
      AuthnLevel : access Interfaces.C.unsigned_long;
      AuthnSvc : access Interfaces.C.unsigned_long;
      AuthzSvc : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingInqAuthClientW,"RpcBindingInqAuthClientW");
   function RpcBindingInqAuthClientExA(
      ClientBinding : RPC_BINDING_HANDLE;
      Privs : access RPC_AUTHZ_HANDLE;
      ServerPrincName : access RPC_CSTR;
      AuthnLevel : access Interfaces.C.unsigned_long;
      AuthnSvc : access Interfaces.C.unsigned_long;
      AuthzSvc : access Interfaces.C.unsigned_long;
      Flags : Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingInqAuthClientExA,"RpcBindingInqAuthClientExA");
   function RpcBindingInqAuthClientExW(
      ClientBinding : RPC_BINDING_HANDLE;
      Privs : access RPC_AUTHZ_HANDLE;
      ServerPrincName : access RPC_WSTR;
      AuthnLevel : access Interfaces.C.unsigned_long;
      AuthnSvc : access Interfaces.C.unsigned_long;
      AuthzSvc : access Interfaces.C.unsigned_long;
      Flags : Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingInqAuthClientExW,"RpcBindingInqAuthClientExW");
   function RpcBindingInqAuthInfoA(
      Binding : RPC_BINDING_HANDLE;
      ServerPrincName : access RPC_CSTR;
      AuthnLevel : access Interfaces.C.unsigned_long;
      AuthnSvc : access Interfaces.C.unsigned_long;
      AuthIdentity : access RPC_AUTH_IDENTITY_HANDLE;
      AuthzSvc : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingInqAuthInfoA,"RpcBindingInqAuthInfoA");
   function RpcBindingInqAuthInfoW(
      Binding : RPC_BINDING_HANDLE;
      ServerPrincName : access RPC_WSTR;
      AuthnLevel : access Interfaces.C.unsigned_long;
      AuthnSvc : access Interfaces.C.unsigned_long;
      AuthIdentity : access RPC_AUTH_IDENTITY_HANDLE;
      AuthzSvc : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingInqAuthInfoW,"RpcBindingInqAuthInfoW");
   function RpcBindingSetAuthInfoA(
      Binding : RPC_BINDING_HANDLE;
      ServerPrincName : RPC_CSTR;
      AuthnLevel : Interfaces.C.unsigned_long;
      AuthnSvc : Interfaces.C.unsigned_long;
      AuthIdentity : RPC_AUTH_IDENTITY_HANDLE;
      AuthzSvc : Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingSetAuthInfoA,"RpcBindingSetAuthInfoA");
   function RpcBindingSetAuthInfoExA(
      Binding : RPC_BINDING_HANDLE;
      ServerPrincName : RPC_CSTR;
      AuthnLevel : Interfaces.C.unsigned_long;
      AuthnSvc : Interfaces.C.unsigned_long;
      AuthIdentity : RPC_AUTH_IDENTITY_HANDLE;
      AuthzSvc : Interfaces.C.unsigned_long;
      SecurityQos : access RPC_SECURITY_QOS
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingSetAuthInfoExA,"RpcBindingSetAuthInfoExA");
   function RpcBindingSetAuthInfoW(
      Binding : RPC_BINDING_HANDLE;
      ServerPrincName : RPC_WSTR;
      AuthnLevel : Interfaces.C.unsigned_long;
      AuthnSvc : Interfaces.C.unsigned_long;
      AuthIdentity : RPC_AUTH_IDENTITY_HANDLE;
      AuthzSvc : Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingSetAuthInfoW,"RpcBindingSetAuthInfoW");
   function RpcBindingSetAuthInfoExW(
      Binding : RPC_BINDING_HANDLE;
      ServerPrincName : RPC_WSTR;
      AuthnLevel : Interfaces.C.unsigned_long;
      AuthnSvc : Interfaces.C.unsigned_long;
      AuthIdentity : RPC_AUTH_IDENTITY_HANDLE;
      AuthzSvc : Interfaces.C.unsigned_long;
      SecurityQOS : access RPC_SECURITY_QOS
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingSetAuthInfoExW,"RpcBindingSetAuthInfoExW");
   function RpcBindingInqAuthInfoExA(
      Binding : RPC_BINDING_HANDLE;
      ServerPrincName : access RPC_CSTR;
      AuthnLevel : access Interfaces.C.unsigned_long;
      AuthnSvc : access Interfaces.C.unsigned_long;
      AuthIdentity : access RPC_AUTH_IDENTITY_HANDLE;
      AuthzSvc : access Interfaces.C.unsigned_long;
      RpcQosVersion : Interfaces.C.unsigned_long;
      SecurityQOS : access RPC_SECURITY_QOS
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingInqAuthInfoExA,"RpcBindingInqAuthInfoExA");
   function RpcBindingInqAuthInfoExW(
      Binding : RPC_BINDING_HANDLE;
      ServerPrincName : access RPC_WSTR;
      AuthnLevel : access Interfaces.C.unsigned_long;
      AuthnSvc : access Interfaces.C.unsigned_long;
      AuthIdentity : access RPC_AUTH_IDENTITY_HANDLE;
      AuthzSvc : access Interfaces.C.unsigned_long;
      RpcQosVersion : Interfaces.C.unsigned_long;
      SecurityQOS : access RPC_SECURITY_QOS
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingInqAuthInfoExW,"RpcBindingInqAuthInfoExW");
   type RPC_AUTH_KEY_RETRIEVAL_FN is access procedure (p1 : access void ; p2 : RPC_WSTR ; p3 : Interfaces.C.unsigned_long ; p4 : access LPVOID ; p5 : access RPC_STATUS); -- void (void *, RPC_WSTR, unsigned long, void **, RPC_STATUS *)
   pragma Convention(C,RPC_AUTH_KEY_RETRIEVAL_FN);
   function RpcServerCompleteSecurityCallback(
      BindingHandle : RPC_BINDING_HANDLE;
      Status : RPC_STATUS
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerCompleteSecurityCallback,"RpcServerCompleteSecurityCallback");
   function RpcServerRegisterAuthInfoA(
      ServerPrincName : RPC_CSTR;
      AuthnSvc : Interfaces.C.unsigned_long;
      GetKeyFn : RPC_AUTH_KEY_RETRIEVAL_FN;
      Arg : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerRegisterAuthInfoA,"RpcServerRegisterAuthInfoA");
   function RpcServerRegisterAuthInfoW(
      ServerPrincName : RPC_WSTR;
      AuthnSvc : Interfaces.C.unsigned_long;
      GetKeyFn : RPC_AUTH_KEY_RETRIEVAL_FN;
      Arg : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerRegisterAuthInfoW,"RpcServerRegisterAuthInfoW");
   type RPC_CLIENT_INFORMATION1 is record
      UserName : access Interfaces.C.unsigned_char;
      ComputerName : access Interfaces.C.unsigned_char;
      Privilege : Interfaces.C.unsigned_short;
      AuthFlags : Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_CLIENT_INFORMATION1);
   for RPC_CLIENT_INFORMATION1 use record
      UserName at 0 range 0..63;
      ComputerName at 0 range 64..127;
      Privilege at 0 range 128..143;
      AuthFlags at 0 range 160..191;
   end record;
   for RPC_CLIENT_INFORMATION1'Size use 192;
   for RPC_CLIENT_INFORMATION1'Alignment use 8;
   type PRPC_CLIENT_INFORMATION1 is access all RPC_CLIENT_INFORMATION1;
   function RpcBindingServerFromClient(
      ClientBinding : RPC_BINDING_HANDLE;
      ServerBinding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingServerFromClient,"RpcBindingServerFromClient");
   procedure RpcRaiseException(
      exception_x : RPC_STATUS
   );
   pragma import (Cpp,RpcRaiseException,"RpcRaiseException");
   function RpcTestCancel return RPC_STATUS;
   pragma import (Cpp,RpcTestCancel,"RpcTestCancel");
   function RpcServerTestCancel(
      BindingHandle : RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerTestCancel,"RpcServerTestCancel");
   function RpcCancelThread(
      Thread : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcCancelThread,"RpcCancelThread");
   function RpcCancelThreadEx(
      Thread : access Void;
      Timeout : Interfaces.C.Long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcCancelThreadEx,"RpcCancelThreadEx");
   function UuidCreate(
      Uuid_x : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,UuidCreate,"UuidCreate");
   function UuidCreateSequential(
      Uuid_x : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,UuidCreateSequential,"UuidCreateSequential");
   function UuidToStringA(
      Uuid_x : access constant UUID;
      StringUuid : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,UuidToStringA,"UuidToStringA");
   function UuidFromStringA(
      StringUuid : RPC_CSTR;
      Uuid_x : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,UuidFromStringA,"UuidFromStringA");
   function UuidToStringW(
      Uuid_x : access constant UUID;
      StringUuid : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,UuidToStringW,"UuidToStringW");
   function UuidFromStringW(
      StringUuid : RPC_WSTR;
      Uuid_x : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,UuidFromStringW,"UuidFromStringW");
   function UuidCompare(
      Uuid1 : access UUID;
      Uuid2 : access UUID;
      Status : access RPC_STATUS
   ) return Interfaces.C.Int;
   pragma import (Cpp,UuidCompare,"UuidCompare");
   function UuidCreateNil(
      NilUuid : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,UuidCreateNil,"UuidCreateNil");
   function UuidEqual(
      Uuid1 : access UUID;
      Uuid2 : access UUID;
      Status : access RPC_STATUS
   ) return Interfaces.C.Int;
   pragma import (Cpp,UuidEqual,"UuidEqual");
   function UuidHash(
      Uuid_x : access UUID;
      Status : access RPC_STATUS
   ) return Interfaces.C.unsigned_short;
   pragma import (Cpp,UuidHash,"UuidHash");
   function UuidIsNil(
      Uuid_x : access UUID;
      Status : access RPC_STATUS
   ) return Interfaces.C.Int;
   pragma import (Cpp,UuidIsNil,"UuidIsNil");
   function RpcEpRegisterNoReplaceA(
      IfSpec : RPC_IF_HANDLE;
      BindingVector : access RPC_BINDING_VECTOR;
      UuidVector : access UUID_VECTOR;
      Annotation : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcEpRegisterNoReplaceA,"RpcEpRegisterNoReplaceA");
   function RpcEpRegisterNoReplaceW(
      IfSpec : RPC_IF_HANDLE;
      BindingVector : access RPC_BINDING_VECTOR;
      UuidVector : access UUID_VECTOR;
      Annotation : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcEpRegisterNoReplaceW,"RpcEpRegisterNoReplaceW");
   function RpcEpRegisterA(
      IfSpec : RPC_IF_HANDLE;
      BindingVector : access RPC_BINDING_VECTOR;
      UuidVector : access UUID_VECTOR;
      Annotation : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcEpRegisterA,"RpcEpRegisterA");
   function RpcEpRegisterW(
      IfSpec : RPC_IF_HANDLE;
      BindingVector : access RPC_BINDING_VECTOR;
      UuidVector : access UUID_VECTOR;
      Annotation : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcEpRegisterW,"RpcEpRegisterW");
   function RpcEpUnregister(
      IfSpec : RPC_IF_HANDLE;
      BindingVector : access RPC_BINDING_VECTOR;
      UuidVector : access UUID_VECTOR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcEpUnregister,"RpcEpUnregister");
   function DceErrorInqTextA(
      RpcStatus : RPC_STATUS;
      ErrorText : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,DceErrorInqTextA,"DceErrorInqTextA");
   function DceErrorInqTextW(
      RpcStatus : RPC_STATUS;
      ErrorText : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,DceErrorInqTextW,"DceErrorInqTextW");
   type RPC_EP_INQ_HANDLE is access all I_RPC_HANDLE;
   function RpcMgmtEpEltInqBegin(
      EpBinding : RPC_BINDING_HANDLE;
      InquiryType : Interfaces.C.unsigned_long;
      IfId : access RPC_IF_ID;
      VersOption : Interfaces.C.unsigned_long;
      ObjectUuid : access UUID;
      InquiryContext : access RPC_EP_INQ_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtEpEltInqBegin,"RpcMgmtEpEltInqBegin");
   function RpcMgmtEpEltInqDone(
      InquiryContext : access RPC_EP_INQ_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtEpEltInqDone,"RpcMgmtEpEltInqDone");
   function RpcMgmtEpEltInqNextA(
      InquiryContext : RPC_EP_INQ_HANDLE;
      IfId : access RPC_IF_ID;
      Binding : access RPC_BINDING_HANDLE;
      ObjectUuid : access UUID;
      Annotation : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtEpEltInqNextA,"RpcMgmtEpEltInqNextA");
   function RpcMgmtEpEltInqNextW(
      InquiryContext : RPC_EP_INQ_HANDLE;
      IfId : access RPC_IF_ID;
      Binding : access RPC_BINDING_HANDLE;
      ObjectUuid : access UUID;
      Annotation : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtEpEltInqNextW,"RpcMgmtEpEltInqNextW");
   function RpcMgmtEpUnregister(
      EpBinding : RPC_BINDING_HANDLE;
      IfId : access RPC_IF_ID;
      Binding : RPC_BINDING_HANDLE;
      ObjectUuid : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtEpUnregister,"RpcMgmtEpUnregister");
   type RPC_MGMT_AUTHORIZATION_FN is access function (p1 : RPC_BINDING_HANDLE ; p2 : Interfaces.C.unsigned_long ; p3 : access RPC_STATUS) return int; -- int (RPC_BINDING_HANDLE, unsigned long, RPC_STATUS *)
   pragma Convention(C,RPC_MGMT_AUTHORIZATION_FN);
   function RpcMgmtSetAuthorizationFn(
      AuthorizationFn : RPC_MGMT_AUTHORIZATION_FN
   ) return RPC_STATUS;
   pragma import (Cpp,RpcMgmtSetAuthorizationFn,"RpcMgmtSetAuthorizationFn");
   function RpcExceptionFilter(
      ExceptionCode : Interfaces.C.unsigned_long
   ) return Interfaces.C.Int;
   pragma import (Cpp,RpcExceptionFilter,"RpcExceptionFilter");
   type RPC_INTERFACE_GROUP is access all Void;
   type PRPC_INTERFACE_GROUP is access all void;
   type RPC_ENDPOINT_TEMPLATEW is record
      Version : Interfaces.C.unsigned_long;
      ProtSeq : RPC_WSTR;
      Endpoint : RPC_WSTR;
      SecurityDescriptor : access Void;
      Backlog : Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_ENDPOINT_TEMPLATEW);
   for RPC_ENDPOINT_TEMPLATEW use record
      Version at 0 range 0..31;
      ProtSeq at 0 range 64..127;
      Endpoint at 0 range 128..191;
      SecurityDescriptor at 0 range 192..255;
      Backlog at 0 range 256..287;
   end record;
   for RPC_ENDPOINT_TEMPLATEW'Size use 320;
   for RPC_ENDPOINT_TEMPLATEW'Alignment use 8;
   type PRPC_ENDPOINT_TEMPLATEW is access all RPC_ENDPOINT_TEMPLATEW;
   type RPC_ENDPOINT_TEMPLATEA is record
      Version : Interfaces.C.unsigned_long;
      ProtSeq : RPC_CSTR;
      Endpoint : RPC_CSTR;
      SecurityDescriptor : access Void;
      Backlog : Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_ENDPOINT_TEMPLATEA);
   for RPC_ENDPOINT_TEMPLATEA use record
      Version at 0 range 0..31;
      ProtSeq at 0 range 64..127;
      Endpoint at 0 range 128..191;
      SecurityDescriptor at 0 range 192..255;
      Backlog at 0 range 256..287;
   end record;
   for RPC_ENDPOINT_TEMPLATEA'Size use 320;
   for RPC_ENDPOINT_TEMPLATEA'Alignment use 8;
   type PRPC_ENDPOINT_TEMPLATEA is access all RPC_ENDPOINT_TEMPLATEA;
   type RPC_INTERFACE_TEMPLATEA is record
      Version : Interfaces.C.unsigned_long;
      IfSpec : RPC_IF_HANDLE;
      MgrTypeUuid : access UUID;
      MgrEpv : access Void;
      Flags : Interfaces.C.unsigned;
      MaxCalls : Interfaces.C.unsigned;
      MaxRpcSize : Interfaces.C.unsigned;
      IfCallback : access Void;
      UuidVector : access UUID_VECTOR;
      Annotation : RPC_CSTR;
      SecurityDescriptor : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_INTERFACE_TEMPLATEA);
   for RPC_INTERFACE_TEMPLATEA use record
      Version at 0 range 0..31;
      IfSpec at 0 range 64..127;
      MgrTypeUuid at 0 range 128..191;
      MgrEpv at 0 range 192..255;
      Flags at 0 range 256..287;
      MaxCalls at 0 range 288..319;
      MaxRpcSize at 0 range 320..351;
      IfCallback at 0 range 384..447;
      UuidVector at 0 range 448..511;
      Annotation at 0 range 512..575;
      SecurityDescriptor at 0 range 576..639;
   end record;
   for RPC_INTERFACE_TEMPLATEA'Size use 640;
   for RPC_INTERFACE_TEMPLATEA'Alignment use 8;
   type PRPC_INTERFACE_TEMPLATEA is access all RPC_INTERFACE_TEMPLATEA;
   type RPC_INTERFACE_TEMPLATEW is record
      Version : Interfaces.C.unsigned_long;
      IfSpec : RPC_IF_HANDLE;
      MgrTypeUuid : access UUID;
      MgrEpv : access Void;
      Flags : Interfaces.C.unsigned;
      MaxCalls : Interfaces.C.unsigned;
      MaxRpcSize : Interfaces.C.unsigned;
      IfCallback : access Void;
      UuidVector : access UUID_VECTOR;
      Annotation : RPC_WSTR;
      SecurityDescriptor : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_INTERFACE_TEMPLATEW);
   for RPC_INTERFACE_TEMPLATEW use record
      Version at 0 range 0..31;
      IfSpec at 0 range 64..127;
      MgrTypeUuid at 0 range 128..191;
      MgrEpv at 0 range 192..255;
      Flags at 0 range 256..287;
      MaxCalls at 0 range 288..319;
      MaxRpcSize at 0 range 320..351;
      IfCallback at 0 range 384..447;
      UuidVector at 0 range 448..511;
      Annotation at 0 range 512..575;
      SecurityDescriptor at 0 range 576..639;
   end record;
   for RPC_INTERFACE_TEMPLATEW'Size use 640;
   for RPC_INTERFACE_TEMPLATEW'Alignment use 8;
   type PRPC_INTERFACE_TEMPLATEW is access all RPC_INTERFACE_TEMPLATEW;
   subtype RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN is System.Address; -- [Note - CXType_FunctionProto] Profile - void (RPC_INTERFACE_GROUP, void *, unsigned long)
   function RpcServerInterfaceGroupCreateW(
      interfaces_x : access RPC_INTERFACE_TEMPLATEW;
      NumIfs : Interfaces.C.unsigned_long;
      Endpoints : access RPC_ENDPOINT_TEMPLATEW;
      NumEndpoints : Interfaces.C.unsigned_long;
      IdlePeriod : Interfaces.C.unsigned_long;
      IdleCallbackFn : Void;
      IdleCallbackContext : access Void;
      IfGroup : PRPC_INTERFACE_GROUP
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInterfaceGroupCreateW,"RpcServerInterfaceGroupCreateW");
   function RpcServerInterfaceGroupCreateA(
      interfaces_x : access RPC_INTERFACE_TEMPLATEA;
      NumIfs : Interfaces.C.unsigned_long;
      Endpoints : access RPC_ENDPOINT_TEMPLATEA;
      NumEndpoints : Interfaces.C.unsigned_long;
      IdlePeriod : Interfaces.C.unsigned_long;
      IdleCallbackFn : Void;
      IdleCallbackContext : access Void;
      IfGroup : PRPC_INTERFACE_GROUP
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInterfaceGroupCreateA,"RpcServerInterfaceGroupCreateA");
   function RpcServerInterfaceGroupClose(
      IfGroup : RPC_INTERFACE_GROUP
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInterfaceGroupClose,"RpcServerInterfaceGroupClose");
   function RpcServerInterfaceGroupActivate(
      IfGroup : RPC_INTERFACE_GROUP
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInterfaceGroupActivate,"RpcServerInterfaceGroupActivate");
   function RpcServerInterfaceGroupDeactivate(
      IfGroup : RPC_INTERFACE_GROUP;
      ForceDeactivation : Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInterfaceGroupDeactivate,"RpcServerInterfaceGroupDeactivate");
   function RpcServerInterfaceGroupInqBindings(
      IfGroup : RPC_INTERFACE_GROUP;
      BindingVector : access RPC_BINDING_VECTOR_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInterfaceGroupInqBindings,"RpcServerInterfaceGroupInqBindings");
   -- #include <rpcdcep.h>
   type RPC_VERSION_x is record
      MajorVersion : Interfaces.C.unsigned_short;
      MinorVersion : Interfaces.C.unsigned_short;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_VERSION_x);
   for RPC_VERSION_x use record
      MajorVersion at 0 range 0..15;
      MinorVersion at 0 range 16..31;
   end record;
   for RPC_VERSION_x'Size use 32;
   for RPC_VERSION_x'Alignment use 2;
   subtype RPC_VERSION is RPC_VERSION_x;
   type RPC_SYNTAX_IDENTIFIER_x is record
      SyntaxGUID : GUID;
      SyntaxVersion : RPC_VERSION;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_SYNTAX_IDENTIFIER_x);
   for RPC_SYNTAX_IDENTIFIER_x use record
      SyntaxGUID at 0 range 0..127;
      SyntaxVersion at 0 range 128..159;
   end record;
   for RPC_SYNTAX_IDENTIFIER_x'Size use 160;
   for RPC_SYNTAX_IDENTIFIER_x'Alignment use 4;
   subtype RPC_SYNTAX_IDENTIFIER is RPC_SYNTAX_IDENTIFIER_x;
   type PRPC_SYNTAX_IDENTIFIER is access all RPC_SYNTAX_IDENTIFIER_x;
   type RPC_MESSAGE_x is record
      Handle_x : RPC_BINDING_HANDLE;
      DataRepresentation : Interfaces.C.unsigned_long;
      Buffer : access Void;
      BufferLength : Interfaces.C.unsigned;
      ProcNum : Interfaces.C.unsigned;
      TransferSyntax : PRPC_SYNTAX_IDENTIFIER;
      RpcInterfaceInformation : access Void;
      ReservedForRuntime : access Void;
      ManagerEpv : access Void;
      ImportContext : access Void;
      RpcFlags : Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_MESSAGE_x);
   for RPC_MESSAGE_x use record
      Handle_x at 0 range 0..63;
      DataRepresentation at 0 range 64..95;
      Buffer at 0 range 128..191;
      BufferLength at 0 range 192..223;
      ProcNum at 0 range 224..255;
      TransferSyntax at 0 range 256..319;
      RpcInterfaceInformation at 0 range 320..383;
      ReservedForRuntime at 0 range 384..447;
      ManagerEpv at 0 range 448..511;
      ImportContext at 0 range 512..575;
      RpcFlags at 0 range 576..607;
   end record;
   for RPC_MESSAGE_x'Size use 640;
   for RPC_MESSAGE_x'Alignment use 8;
   subtype RPC_MESSAGE is RPC_MESSAGE_x;
   type PRPC_MESSAGE is access all RPC_MESSAGE_x;
   subtype RPC_FORWARD_FUNCTION is System.Address; -- [Note - CXType_FunctionProto] Profile - RPC_STATUS (UUID *, RPC_VERSION *, UUID *, unsigned char *, void **)
   type RPC_ADDRESS_CHANGE_TYPE is (
      PROTOCOL_NOT_LOADED,
      PROTOCOL_LOADED,
      PROTOCOL_ADDRESS_CHANGE
   );
   for RPC_ADDRESS_CHANGE_TYPE use (
      PROTOCOL_NOT_LOADED => 1,
      PROTOCOL_LOADED => 2,
      PROTOCOL_ADDRESS_CHANGE => 3
   );
   for RPC_ADDRESS_CHANGE_TYPE'Size use 32;
   subtype RPC_ADDRESS_CHANGE_FN is System.Address; -- [Note - CXType_FunctionProto] Profile - void (void *)
   type RPC_DISPATCH_FUNCTION is access procedure (p1 : PRPC_MESSAGE); -- void (PRPC_MESSAGE)
   pragma Convention(C,RPC_DISPATCH_FUNCTION);
   type RPC_DISPATCH_TABLE is record
      DispatchTableCount : Interfaces.C.unsigned;
      DispatchTable : access RPC_DISPATCH_FUNCTION;
      Reserved : LONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_DISPATCH_TABLE);
   for RPC_DISPATCH_TABLE use record
      DispatchTableCount at 0 range 0..31;
      DispatchTable at 0 range 64..127;
      Reserved at 0 range 128..191;
   end record;
   for RPC_DISPATCH_TABLE'Size use 192;
   for RPC_DISPATCH_TABLE'Alignment use 8;
   type PRPC_DISPATCH_TABLE is access all RPC_DISPATCH_TABLE;
   type RPC_PROTSEQ_ENDPOINT_x is record
      RpcProtocolSequence : access Interfaces.C.unsigned_char;
      Endpoint : access Interfaces.C.unsigned_char;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_PROTSEQ_ENDPOINT_x);
   for RPC_PROTSEQ_ENDPOINT_x use record
      RpcProtocolSequence at 0 range 0..63;
      Endpoint at 0 range 64..127;
   end record;
   for RPC_PROTSEQ_ENDPOINT_x'Size use 128;
   for RPC_PROTSEQ_ENDPOINT_x'Alignment use 8;
   subtype RPC_PROTSEQ_ENDPOINT is RPC_PROTSEQ_ENDPOINT_x;
   type PRPC_PROTSEQ_ENDPOINT is access all RPC_PROTSEQ_ENDPOINT_x;
   type RPC_SERVER_INTERFACE_x is record
      Length : Interfaces.C.unsigned;
      InterfaceId : RPC_SYNTAX_IDENTIFIER;
      TransferSyntax : RPC_SYNTAX_IDENTIFIER;
      DispatchTable : PRPC_DISPATCH_TABLE;
      RpcProtseqEndpointCount : Interfaces.C.unsigned;
      RpcProtseqEndpoint : PRPC_PROTSEQ_ENDPOINT;
      DefaultManagerEpv : access Void;
      InterpreterInfo : access Void;
      Flags : Interfaces.C.unsigned;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_SERVER_INTERFACE_x);
   for RPC_SERVER_INTERFACE_x use record
      Length at 0 range 0..31;
      InterfaceId at 0 range 32..191;
      TransferSyntax at 0 range 192..351;
      DispatchTable at 0 range 384..447;
      RpcProtseqEndpointCount at 0 range 448..479;
      RpcProtseqEndpoint at 0 range 512..575;
      DefaultManagerEpv at 0 range 576..639;
      InterpreterInfo at 0 range 640..703;
      Flags at 0 range 704..735;
   end record;
   for RPC_SERVER_INTERFACE_x'Size use 768;
   for RPC_SERVER_INTERFACE_x'Alignment use 8;
   subtype RPC_SERVER_INTERFACE is RPC_SERVER_INTERFACE_x;
   type PRPC_SERVER_INTERFACE is access all RPC_SERVER_INTERFACE_x;
   type RPC_CLIENT_INTERFACE_x is record
      Length : Interfaces.C.unsigned;
      InterfaceId : RPC_SYNTAX_IDENTIFIER;
      TransferSyntax : RPC_SYNTAX_IDENTIFIER;
      DispatchTable : PRPC_DISPATCH_TABLE;
      RpcProtseqEndpointCount : Interfaces.C.unsigned;
      RpcProtseqEndpoint : PRPC_PROTSEQ_ENDPOINT;
      Reserved : ULONG_PTR;
      InterpreterInfo : access Void;
      Flags : Interfaces.C.unsigned;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_CLIENT_INTERFACE_x);
   for RPC_CLIENT_INTERFACE_x use record
      Length at 0 range 0..31;
      InterfaceId at 0 range 32..191;
      TransferSyntax at 0 range 192..351;
      DispatchTable at 0 range 384..447;
      RpcProtseqEndpointCount at 0 range 448..479;
      RpcProtseqEndpoint at 0 range 512..575;
      Reserved at 0 range 576..639;
      InterpreterInfo at 0 range 640..703;
      Flags at 0 range 704..735;
   end record;
   for RPC_CLIENT_INTERFACE_x'Size use 768;
   for RPC_CLIENT_INTERFACE_x'Alignment use 8;
   subtype RPC_CLIENT_INTERFACE is RPC_CLIENT_INTERFACE_x;
   type PRPC_CLIENT_INTERFACE is access all RPC_CLIENT_INTERFACE_x;
   function I_RpcNegotiateTransferSyntax(
      Message : access RPC_MESSAGE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcNegotiateTransferSyntax,"I_RpcNegotiateTransferSyntax");
   function I_RpcGetBuffer(
      Message : access RPC_MESSAGE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcGetBuffer,"I_RpcGetBuffer");
   function I_RpcGetBufferWithObject(
      Message : access RPC_MESSAGE;
      ObjectUuid : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcGetBufferWithObject,"I_RpcGetBufferWithObject");
   function I_RpcSendReceive(
      Message : access RPC_MESSAGE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcSendReceive,"I_RpcSendReceive");
   function I_RpcFreeBuffer(
      Message : access RPC_MESSAGE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcFreeBuffer,"I_RpcFreeBuffer");
   function I_RpcSend(
      Message : PRPC_MESSAGE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcSend,"I_RpcSend");
   function I_RpcReceive(
      Message : PRPC_MESSAGE;
      Size_x : Interfaces.C.unsigned
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcReceive,"I_RpcReceive");
   function I_RpcFreePipeBuffer(
      Message : access RPC_MESSAGE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcFreePipeBuffer,"I_RpcFreePipeBuffer");
   function I_RpcReallocPipeBuffer(
      Message : PRPC_MESSAGE;
      NewSize : Interfaces.C.unsigned
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcReallocPipeBuffer,"I_RpcReallocPipeBuffer");
   type I_RPC_MUTEX is access all Void;
   procedure I_RpcRequestMutex(
      Mutex : access I_RPC_MUTEX
   );
   pragma import (Cpp,I_RpcRequestMutex,"I_RpcRequestMutex");
   procedure I_RpcClearMutex(
      Mutex : I_RPC_MUTEX
   );
   pragma import (Cpp,I_RpcClearMutex,"I_RpcClearMutex");
   procedure I_RpcDeleteMutex(
      Mutex : I_RPC_MUTEX
   );
   pragma import (Cpp,I_RpcDeleteMutex,"I_RpcDeleteMutex");
   procedure I_RpcAllocate(
      Size_x : Interfaces.C.unsigned
   );
   pragma import (Cpp,I_RpcAllocate,"I_RpcAllocate");
   procedure I_RpcFree(
      Object : access Void
   );
   pragma import (Cpp,I_RpcFree,"I_RpcFree");
   function I_RpcFreeSystemHandleCollection(
      CallObj : access Void;
      FreeFlags : Interfaces.C.unsigned_long
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,I_RpcFreeSystemHandleCollection,"I_RpcFreeSystemHandleCollection");
   function I_RpcSetSystemHandle(
      Handle_x : access Void;
      type_x : Interfaces.C.unsigned_char;
      AccessMask : Interfaces.C.unsigned_long;
      CallObj : access Void;
      HandleIndex : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcSetSystemHandle,"I_RpcSetSystemHandle");
   function I_RpcGetSystemHandle(
      pMemory : access Interfaces.C.unsigned_char;
      type_x : Interfaces.C.unsigned_char;
      AccessMask : Interfaces.C.unsigned_long;
      HandleIndex : Interfaces.C.unsigned_long;
      CallObj : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcGetSystemHandle,"I_RpcGetSystemHandle");
   procedure I_RpcFreeSystemHandle(
      type_x : Interfaces.C.unsigned_char;
      Handle_x : access Void
   );
   pragma import (Cpp,I_RpcFreeSystemHandle,"I_RpcFreeSystemHandle");
   procedure I_RpcPauseExecution(
      Milliseconds : Interfaces.C.unsigned_long
   );
   pragma import (Cpp,I_RpcPauseExecution,"I_RpcPauseExecution");
   function I_RpcGetExtendedError return RPC_STATUS;
   pragma import (Cpp,I_RpcGetExtendedError,"I_RpcGetExtendedError");
   type LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION_x is (
      MarshalDirectionMarshal,
      MarshalDirectionUnmarshal
   );
   for LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION_x use (
      MarshalDirectionMarshal => 0,
      MarshalDirectionUnmarshal => 1
   );
   for LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION_x'Size use 32;
   subtype LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION is LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION_x;
   function I_RpcSystemHandleTypeSpecificWork(
      Handle_x : access Void;
      ActualType : Interfaces.C.unsigned_char;
      IdlType : Interfaces.C.unsigned_char;
      MarshalDirection : LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcSystemHandleTypeSpecificWork,"I_RpcSystemHandleTypeSpecificWork");
   type PRPC_RUNDOWN is access procedure (p1 : access void); -- void (void *)
   pragma Convention(C,PRPC_RUNDOWN);
   function I_RpcMonitorAssociation(
      Handle_x : RPC_BINDING_HANDLE;
      RundownRoutine : PRPC_RUNDOWN;
      Context_x : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcMonitorAssociation,"I_RpcMonitorAssociation");
   function I_RpcStopMonitorAssociation(
      Handle_x : RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcStopMonitorAssociation,"I_RpcStopMonitorAssociation");
   function I_RpcGetCurrentCallHandle return RPC_BINDING_HANDLE;
   pragma import (Cpp,I_RpcGetCurrentCallHandle,"I_RpcGetCurrentCallHandle");
   function I_RpcGetAssociationContext(
      BindingHandle : RPC_BINDING_HANDLE;
      AssociationContext : access LPVOID
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcGetAssociationContext,"I_RpcGetAssociationContext");
   procedure I_RpcGetServerContextList(
      BindingHandle : RPC_BINDING_HANDLE
   );
   pragma import (Cpp,I_RpcGetServerContextList,"I_RpcGetServerContextList");
   procedure I_RpcSetServerContextList(
      BindingHandle : RPC_BINDING_HANDLE;
      ServerContextList : access Void
   );
   pragma import (Cpp,I_RpcSetServerContextList,"I_RpcSetServerContextList");
   function I_RpcNsInterfaceExported(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : access Interfaces.C.unsigned_short;
      RpcInterfaceInformation : access RPC_SERVER_INTERFACE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcNsInterfaceExported,"I_RpcNsInterfaceExported");
   function I_RpcNsInterfaceUnexported(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : access Interfaces.C.unsigned_short;
      RpcInterfaceInformation : access RPC_SERVER_INTERFACE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcNsInterfaceUnexported,"I_RpcNsInterfaceUnexported");
   function I_RpcBindingToStaticStringBindingW(
      Binding : RPC_BINDING_HANDLE;
      StringBinding : access PUINT16
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingToStaticStringBindingW,"I_RpcBindingToStaticStringBindingW");
   function I_RpcBindingInqSecurityContext(
      Binding : RPC_BINDING_HANDLE;
      SecurityContextHandle : access LPVOID
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingInqSecurityContext,"I_RpcBindingInqSecurityContext");
   type RPC_SEC_CONTEXT_KEY_INFO_x is record
      EncryptAlgorithm : Interfaces.C.unsigned_long;
      KeySize : Interfaces.C.unsigned_long;
      SignatureAlgorithm : Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_SEC_CONTEXT_KEY_INFO_x);
   for RPC_SEC_CONTEXT_KEY_INFO_x use record
      EncryptAlgorithm at 0 range 0..31;
      KeySize at 0 range 32..63;
      SignatureAlgorithm at 0 range 64..95;
   end record;
   for RPC_SEC_CONTEXT_KEY_INFO_x'Size use 96;
   for RPC_SEC_CONTEXT_KEY_INFO_x'Alignment use 4;
   subtype RPC_SEC_CONTEXT_KEY_INFO is RPC_SEC_CONTEXT_KEY_INFO_x;
   type PRPC_SEC_CONTEXT_KEY_INFO is access all RPC_SEC_CONTEXT_KEY_INFO_x;
   function I_RpcBindingInqSecurityContextKeyInfo(
      Binding : RPC_BINDING_HANDLE;
      KeyInfo : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingInqSecurityContextKeyInfo,"I_RpcBindingInqSecurityContextKeyInfo");
   function I_RpcBindingInqWireIdForSnego(
      Binding : RPC_BINDING_HANDLE;
      WireId : access Interfaces.C.unsigned_char
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingInqWireIdForSnego,"I_RpcBindingInqWireIdForSnego");
   function I_RpcBindingInqMarshalledTargetInfo(
      Binding : RPC_BINDING_HANDLE;
      MarshalledTargetInfoSize : access Interfaces.C.unsigned_long;
      MarshalledTargetInfo : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingInqMarshalledTargetInfo,"I_RpcBindingInqMarshalledTargetInfo");
   function I_RpcBindingInqLocalClientPID(
      Binding : RPC_BINDING_HANDLE;
      Pid : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingInqLocalClientPID,"I_RpcBindingInqLocalClientPID");
   function I_RpcBindingHandleToAsyncHandle(
      Binding : RPC_BINDING_HANDLE;
      AsyncHandle : access LPVOID
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingHandleToAsyncHandle,"I_RpcBindingHandleToAsyncHandle");
   function I_RpcNsBindingSetEntryNameW(
      Binding : RPC_BINDING_HANDLE;
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcNsBindingSetEntryNameW,"I_RpcNsBindingSetEntryNameW");
   function I_RpcNsBindingSetEntryNameA(
      Binding : RPC_BINDING_HANDLE;
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcNsBindingSetEntryNameA,"I_RpcNsBindingSetEntryNameA");
   function I_RpcServerUseProtseqEp2A(
      NetworkAddress : RPC_CSTR;
      Protseq : RPC_CSTR;
      MaxCalls : Interfaces.C.unsigned;
      Endpoint : RPC_CSTR;
      SecurityDescriptor : access Void;
      Policy : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerUseProtseqEp2A,"I_RpcServerUseProtseqEp2A");
   function I_RpcServerUseProtseqEp2W(
      NetworkAddress : RPC_WSTR;
      Protseq : RPC_WSTR;
      MaxCalls : Interfaces.C.unsigned;
      Endpoint : RPC_WSTR;
      SecurityDescriptor : access Void;
      Policy : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerUseProtseqEp2W,"I_RpcServerUseProtseqEp2W");
   function I_RpcServerUseProtseq2W(
      NetworkAddress : RPC_WSTR;
      Protseq : RPC_WSTR;
      MaxCalls : Interfaces.C.unsigned;
      SecurityDescriptor : access Void;
      Policy : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerUseProtseq2W,"I_RpcServerUseProtseq2W");
   function I_RpcServerUseProtseq2A(
      NetworkAddress : RPC_CSTR;
      Protseq : RPC_CSTR;
      MaxCalls : Interfaces.C.unsigned;
      SecurityDescriptor : access Void;
      Policy : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerUseProtseq2A,"I_RpcServerUseProtseq2A");
   function I_RpcServerStartService(
      Protseq : RPC_WSTR;
      Endpoint : RPC_WSTR;
      IfSpec : RPC_IF_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerStartService,"I_RpcServerStartService");
   function I_RpcBindingInqDynamicEndpointW(
      Binding : RPC_BINDING_HANDLE;
      DynamicEndpoint : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingInqDynamicEndpointW,"I_RpcBindingInqDynamicEndpointW");
   function I_RpcBindingInqDynamicEndpointA(
      Binding : RPC_BINDING_HANDLE;
      DynamicEndpoint : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingInqDynamicEndpointA,"I_RpcBindingInqDynamicEndpointA");
   function I_RpcServerCheckClientRestriction(
      Context_x : RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerCheckClientRestriction,"I_RpcServerCheckClientRestriction");
   function I_RpcBindingInqTransportType(
      Binding : RPC_BINDING_HANDLE;
      type_x : access Interfaces.C.unsigned
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingInqTransportType,"I_RpcBindingInqTransportType");
   type RPC_TRANSFER_SYNTAX_x is record
      Uuid_x : UUID;
      VersMajor : Interfaces.C.unsigned_short;
      VersMinor : Interfaces.C.unsigned_short;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_TRANSFER_SYNTAX_x);
   for RPC_TRANSFER_SYNTAX_x use record
      Uuid_x at 0 range 0..127;
      VersMajor at 0 range 128..143;
      VersMinor at 0 range 144..159;
   end record;
   for RPC_TRANSFER_SYNTAX_x'Size use 160;
   for RPC_TRANSFER_SYNTAX_x'Alignment use 4;
   subtype RPC_TRANSFER_SYNTAX is RPC_TRANSFER_SYNTAX_x;
   function I_RpcIfInqTransferSyntaxes(
      RpcIfHandle : RPC_IF_HANDLE;
      TransferSyntaxes : access RPC_TRANSFER_SYNTAX;
      TransferSyntaxSize : Interfaces.C.unsigned;
      TransferSyntaxCount : access Interfaces.C.unsigned
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcIfInqTransferSyntaxes,"I_RpcIfInqTransferSyntaxes");
   function I_UuidCreate(
      Uuid_x : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,I_UuidCreate,"I_UuidCreate");
   procedure I_RpcUninitializeNdrOle;
   pragma import (Cpp,I_RpcUninitializeNdrOle,"I_RpcUninitializeNdrOle");
   function I_RpcBindingCopy(
      SourceBinding : RPC_BINDING_HANDLE;
      DestinationBinding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingCopy,"I_RpcBindingCopy");
   function I_RpcBindingIsClientLocal(
      BindingHandle : RPC_BINDING_HANDLE;
      ClientLocalFlag : access Interfaces.C.unsigned
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingIsClientLocal,"I_RpcBindingIsClientLocal");
   function I_RpcBindingInqConnId(
      Binding : RPC_BINDING_HANDLE;
      ConnId : access LPVOID;
      pfFirstCall : access Interfaces.C.Int
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingInqConnId,"I_RpcBindingInqConnId");
   function I_RpcBindingCreateNP(
      ServerName : RPC_WSTR;
      ServiceName : RPC_WSTR;
      NetworkOptions : RPC_WSTR;
      Binding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingCreateNP,"I_RpcBindingCreateNP");
   procedure I_RpcSsDontSerializeContext;
   pragma import (Cpp,I_RpcSsDontSerializeContext,"I_RpcSsDontSerializeContext");
   function I_RpcLaunchDatagramReceiveThread(
      pAddress : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcLaunchDatagramReceiveThread,"I_RpcLaunchDatagramReceiveThread");
   function I_RpcServerRegisterForwardFunction(
      pForwardFunction : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerRegisterForwardFunction,"I_RpcServerRegisterForwardFunction");
   -- function I_RpcServerInqAddressChangeFn return RPC_ADDRESS_CHANGE_FN *;
   function I_RpcServerSetAddressChangeFn(
      pAddressChangeFn : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerSetAddressChangeFn,"I_RpcServerSetAddressChangeFn");
   function I_RpcServerInqLocalConnAddress(
      Binding : RPC_BINDING_HANDLE;
      Buffer : access Void;
      BufferSize : access Interfaces.C.unsigned_long;
      AddressFormat : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerInqLocalConnAddress,"I_RpcServerInqLocalConnAddress");
   function I_RpcServerInqRemoteConnAddress(
      Binding : RPC_BINDING_HANDLE;
      Buffer : access Void;
      BufferSize : access Interfaces.C.unsigned_long;
      AddressFormat : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerInqRemoteConnAddress,"I_RpcServerInqRemoteConnAddress");
   procedure I_RpcSessionStrictContextHandle;
   pragma import (Cpp,I_RpcSessionStrictContextHandle,"I_RpcSessionStrictContextHandle");
   function I_RpcTurnOnEEInfoPropagation return RPC_STATUS;
   pragma import (Cpp,I_RpcTurnOnEEInfoPropagation,"I_RpcTurnOnEEInfoPropagation");
   function I_RpcConnectionInqSockBuffSize(
      RecvBuffSize : access Interfaces.C.unsigned_long;
      SendBuffSize : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcConnectionInqSockBuffSize,"I_RpcConnectionInqSockBuffSize");
   function I_RpcConnectionSetSockBuffSize(
      RecvBuffSize : Interfaces.C.unsigned_long;
      SendBuffSize : Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcConnectionSetSockBuffSize,"I_RpcConnectionSetSockBuffSize");
   type RPCLT_PDU_FILTER_FUNC is access procedure (p1 : access void ; p2 : Interfaces.C.unsigned ; p3 : int); -- void (void *, unsigned int, int)
   pragma Convention(C,RPCLT_PDU_FILTER_FUNC);
   type RPC_SETFILTER_FUNC is access procedure (p1 : RPCLT_PDU_FILTER_FUNC); -- void (RPCLT_PDU_FILTER_FUNC)
   pragma Convention(C,RPC_SETFILTER_FUNC);
   function I_RpcServerStartListening(
      hWnd_x : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerStartListening,"I_RpcServerStartListening");
   function I_RpcServerStopListening return RPC_STATUS;
   pragma import (Cpp,I_RpcServerStopListening,"I_RpcServerStopListening");
   type RPC_BLOCKING_FN is access function (p1 : access void ; p2 : access void ; p3 : access void) return RPC_STATUS; -- RPC_STATUS (void *, void *, void *)
   pragma Convention(C,RPC_BLOCKING_FN);
   function I_RpcBindingSetAsync(
      Binding : RPC_BINDING_HANDLE;
      BlockingFn : RPC_BLOCKING_FN;
      ServerTid : Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingSetAsync,"I_RpcBindingSetAsync");
   function I_RpcSetThreadParams(
      fClientFree : Interfaces.C.Int;
      Context_x : access Void;
      hWndClient : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcSetThreadParams,"I_RpcSetThreadParams");
   function I_RpcWindowProc(
      hWnd_x : access Void;
      Message : Interfaces.C.unsigned;
      wParam_x : Interfaces.C.unsigned;
      lParam_x : Interfaces.C.unsigned_long
   ) return Interfaces.C.unsigned;
   pragma import (Cpp,I_RpcWindowProc,"I_RpcWindowProc");
   function I_RpcServerUnregisterEndpointA(
      Protseq : RPC_CSTR;
      Endpoint : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerUnregisterEndpointA,"I_RpcServerUnregisterEndpointA");
   function I_RpcServerUnregisterEndpointW(
      Protseq : RPC_WSTR;
      Endpoint : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerUnregisterEndpointW,"I_RpcServerUnregisterEndpointW");
   function I_RpcServerInqTransportType(
      type_x : access Interfaces.C.unsigned
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerInqTransportType,"I_RpcServerInqTransportType");
   function I_RpcMapWin32Status(
      Status : RPC_STATUS
   ) return Interfaces.C.Long;
   pragma import (Cpp,I_RpcMapWin32Status,"I_RpcMapWin32Status");
   type RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR_x is record
      BufferSize : Interfaces.C.unsigned_long;
      Buffer : access Character;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR_x);
   for RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR_x use record
      BufferSize at 0 range 0..31;
      Buffer at 0 range 64..127;
   end record;
   for RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR_x'Size use 128;
   for RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR_x'Alignment use 8;
   subtype RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR is RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR_x;
   type RDR_CALLOUT_STATE_x is record
      LastError : RPC_STATUS;
      LastEEInfo : access Void;
      LastCalledStage : RPC_HTTP_REDIRECTOR_STAGE;
      ServerName : access Interfaces.C.unsigned_short;
      ServerPort : access Interfaces.C.unsigned_short;
      RemoteUser : access Interfaces.C.unsigned_short;
      AuthType : access Interfaces.C.unsigned_short;
      ResourceTypePresent : Interfaces.C.unsigned_char;
      SessionIdPresent : Interfaces.C.unsigned_char;
      InterfacePresent : Interfaces.C.unsigned_char;
      ResourceType : UUID;
      SessionId : UUID;
      interface_x : RPC_SYNTAX_IDENTIFIER;
      CertContext : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,RDR_CALLOUT_STATE_x);
   for RDR_CALLOUT_STATE_x use record
      LastError at 0 range 0..31;
      LastEEInfo at 0 range 64..127;
      LastCalledStage at 0 range 128..159;
      ServerName at 0 range 192..255;
      ServerPort at 0 range 256..319;
      RemoteUser at 0 range 320..383;
      AuthType at 0 range 384..447;
      ResourceTypePresent at 0 range 448..455;
      SessionIdPresent at 0 range 456..463;
      InterfacePresent at 0 range 464..471;
      ResourceType at 0 range 480..607;
      SessionId at 0 range 608..735;
      interface_x at 0 range 736..895;
      CertContext at 0 range 896..959;
   end record;
   for RDR_CALLOUT_STATE_x'Size use 960;
   for RDR_CALLOUT_STATE_x'Alignment use 8;
   subtype RDR_CALLOUT_STATE is RDR_CALLOUT_STATE_x;
   type I_RpcProxyIsValidMachineFn is access function (p1 : RPC_WSTR ; p2 : RPC_WSTR ; p3 : Interfaces.C.unsigned_long) return RPC_STATUS; -- RPC_STATUS (RPC_WSTR, RPC_WSTR, unsigned long)
   pragma Convention(C,I_RpcProxyIsValidMachineFn);
   type I_RpcProxyGetClientAddressFn is access function (p1 : access void ; p2 : access char ; p3 : access Interfaces.C.unsigned_long) return RPC_STATUS; -- RPC_STATUS (void *, char *, unsigned long *)
   pragma Convention(C,I_RpcProxyGetClientAddressFn);
   type I_RpcProxyGetConnectionTimeoutFn is access function (p1 : access Interfaces.C.unsigned_long) return RPC_STATUS; -- RPC_STATUS (unsigned long *)
   pragma Convention(C,I_RpcProxyGetConnectionTimeoutFn);
   type I_RpcPerformCalloutFn is access function (p1 : access void ; p2 : access RDR_CALLOUT_STATE ; p3 : RPC_HTTP_REDIRECTOR_STAGE) return RPC_STATUS; -- RPC_STATUS (void *, RDR_CALLOUT_STATE *, RPC_HTTP_REDIRECTOR_STAGE)
   pragma Convention(C,I_RpcPerformCalloutFn);
   type I_RpcFreeCalloutStateFn is access procedure (p1 : access RDR_CALLOUT_STATE); -- void (RDR_CALLOUT_STATE *)
   pragma Convention(C,I_RpcFreeCalloutStateFn);
   type I_RpcProxyGetClientSessionAndResourceUUID is access function (p1 : access void ; p2 : access int ; p3 : access UUID ; p4 : access int ; p5 : access UUID) return RPC_STATUS; -- RPC_STATUS (void *, int *, UUID *, int *, UUID *)
   pragma Convention(C,I_RpcProxyGetClientSessionAndResourceUUID);
   type I_RpcProxyFilterIfFn is access function (p1 : access void ; p2 : access UUID ; p3 : Interfaces.C.unsigned_short ; p4 : access int) return RPC_STATUS; -- RPC_STATUS (void *, UUID *, unsigned short, int *)
   pragma Convention(C,I_RpcProxyFilterIfFn);
   type RpcProxyPerfCounters is (
      RpcCurrentUniqueUser,
      RpcBackEndConnectionAttempts,
      RpcBackEndConnectionFailed,
      RpcRequestsPerSecond,
      RpcIncomingConnections,
      RpcIncomingBandwidth,
      RpcOutgoingBandwidth,
      RpcAttemptedLbsDecisions,
      RpcFailedLbsDecisions,
      RpcAttemptedLbsMessages,
      RpcFailedLbsMessages,
      RpcLastCounter
   );
   for RpcProxyPerfCounters use (
      RpcCurrentUniqueUser => 1,
      RpcBackEndConnectionAttempts => 2,
      RpcBackEndConnectionFailed => 3,
      RpcRequestsPerSecond => 4,
      RpcIncomingConnections => 5,
      RpcIncomingBandwidth => 6,
      RpcOutgoingBandwidth => 7,
      RpcAttemptedLbsDecisions => 8,
      RpcFailedLbsDecisions => 9,
      RpcAttemptedLbsMessages => 10,
      RpcFailedLbsMessages => 11,
      RpcLastCounter => 12
   );
   for RpcProxyPerfCounters'Size use 32;
   subtype RpcPerfCounters is RpcProxyPerfCounters;
   type I_RpcProxyUpdatePerfCounterFn is access procedure (p1 : RpcPerfCounters ; p2 : int ; p3 : Interfaces.C.unsigned_long); -- void (RpcPerfCounters, int, unsigned long)
   pragma Convention(C,I_RpcProxyUpdatePerfCounterFn);
   type I_RpcProxyUpdatePerfCounterBackendServerFn is access procedure (p1 : access Interfaces.C.unsigned_short ; p2 : int); -- void (unsigned short *, int)
   pragma Convention(C,I_RpcProxyUpdatePerfCounterBackendServerFn);
   type tagI_RpcProxyCallbackInterface is record
      IsValidMachineFn : I_RpcProxyIsValidMachineFn;
      GetClientAddressFn : I_RpcProxyGetClientAddressFn;
      GetConnectionTimeoutFn : I_RpcProxyGetConnectionTimeoutFn;
      PerformCalloutFn : I_RpcPerformCalloutFn;
      FreeCalloutStateFn : I_RpcFreeCalloutStateFn;
      GetClientSessionAndResourceUUIDFn : I_RpcProxyGetClientSessionAndResourceUUID;
      ProxyFilterIfFn : I_RpcProxyFilterIfFn;
      RpcProxyUpdatePerfCounterFn : I_RpcProxyUpdatePerfCounterFn;
      RpcProxyUpdatePerfCounterBackendServerFn : I_RpcProxyUpdatePerfCounterBackendServerFn;
   end record;
   pragma Convention (C_Pass_By_Copy,tagI_RpcProxyCallbackInterface);
   for tagI_RpcProxyCallbackInterface use record
      IsValidMachineFn at 0 range 0..63;
      GetClientAddressFn at 0 range 64..127;
      GetConnectionTimeoutFn at 0 range 128..191;
      PerformCalloutFn at 0 range 192..255;
      FreeCalloutStateFn at 0 range 256..319;
      GetClientSessionAndResourceUUIDFn at 0 range 320..383;
      ProxyFilterIfFn at 0 range 384..447;
      RpcProxyUpdatePerfCounterFn at 0 range 448..511;
      RpcProxyUpdatePerfCounterBackendServerFn at 0 range 512..575;
   end record;
   for tagI_RpcProxyCallbackInterface'Size use 576;
   for tagI_RpcProxyCallbackInterface'Alignment use 8;
   subtype I_RpcProxyCallbackInterface is tagI_RpcProxyCallbackInterface;
   function I_RpcProxyNewConnection(
      ConnectionType : Interfaces.C.unsigned_long;
      ServerAddress : access Interfaces.C.unsigned_short;
      ServerPort : access Interfaces.C.unsigned_short;
      MinConnTimeout : access Interfaces.C.unsigned_short;
      ConnectionParameter : access Void;
      CallOutState : access RDR_CALLOUT_STATE;
      ProxyCallbackInterface : access I_RpcProxyCallbackInterface
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcProxyNewConnection,"I_RpcProxyNewConnection");
   function I_RpcReplyToClientWithStatus(
      ConnectionParameter : access Void;
      RpcStatus : RPC_STATUS
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcReplyToClientWithStatus,"I_RpcReplyToClientWithStatus");
   procedure I_RpcRecordCalloutFailure(
      RpcStatus : RPC_STATUS;
      CallOutState : access RDR_CALLOUT_STATE;
      DllName : access Interfaces.C.unsigned_short
   );
   pragma import (Cpp,I_RpcRecordCalloutFailure,"I_RpcRecordCalloutFailure");
   function I_RpcMgmtEnableDedicatedThreadPool return RPC_STATUS;
   pragma import (Cpp,I_RpcMgmtEnableDedicatedThreadPool,"I_RpcMgmtEnableDedicatedThreadPool");
   function I_RpcGetDefaultSD(
      ppSecurityDescriptor : access LPVOID
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcGetDefaultSD,"I_RpcGetDefaultSD");
   function I_RpcOpenClientProcess(
      Binding : RPC_BINDING_HANDLE;
      DesiredAccess : Interfaces.C.unsigned_long;
      ClientProcess : access LPVOID
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcOpenClientProcess,"I_RpcOpenClientProcess");
   function I_RpcBindingIsServerLocal(
      Binding : RPC_BINDING_HANDLE;
      ServerLocalFlag : access Interfaces.C.unsigned
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingIsServerLocal,"I_RpcBindingIsServerLocal");
   function I_RpcBindingSetPrivateOption(
      hBinding : RPC_BINDING_HANDLE;
      option : Interfaces.C.unsigned_long;
      optionValue : ULONG_PTR
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingSetPrivateOption,"I_RpcBindingSetPrivateOption");
   function I_RpcServerSubscribeForDisconnectNotification(
      Binding : RPC_BINDING_HANDLE;
      hEvent : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerSubscribeForDisconnectNotification,"I_RpcServerSubscribeForDisconnectNotification");
   function I_RpcServerGetAssociationID(
      Binding : RPC_BINDING_HANDLE;
      AssociationID : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerGetAssociationID,"I_RpcServerGetAssociationID");
   function I_RpcServerDisableExceptionFilter return Interfaces.C.Long;
   pragma import (Cpp,I_RpcServerDisableExceptionFilter,"I_RpcServerDisableExceptionFilter");
   function I_RpcServerSubscribeForDisconnectNotification2(
      Binding : RPC_BINDING_HANDLE;
      hEvent : access Void;
      SubscriptionId : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerSubscribeForDisconnectNotification2,"I_RpcServerSubscribeForDisconnectNotification2");
   function I_RpcServerUnsubscribeForDisconnectNotification(
      Binding : RPC_BINDING_HANDLE;
      SubscriptionId : UUID
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcServerUnsubscribeForDisconnectNotification,"I_RpcServerUnsubscribeForDisconnectNotification");
   -- #include <rpcnsi.h>
   type RPC_NS_HANDLE is access all Void;
   function RpcNsBindingExportA(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR;
      IfSpec : RPC_IF_HANDLE;
      BindingVec : access RPC_BINDING_VECTOR;
      ObjectUuidVec : access UUID_VECTOR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingExportA,"RpcNsBindingExportA");
   function RpcNsBindingUnexportA(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR;
      IfSpec : RPC_IF_HANDLE;
      ObjectUuidVec : access UUID_VECTOR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingUnexportA,"RpcNsBindingUnexportA");
   function RpcNsBindingExportW(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR;
      IfSpec : RPC_IF_HANDLE;
      BindingVec : access RPC_BINDING_VECTOR;
      ObjectUuidVec : access UUID_VECTOR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingExportW,"RpcNsBindingExportW");
   function RpcNsBindingUnexportW(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR;
      IfSpec : RPC_IF_HANDLE;
      ObjectUuidVec : access UUID_VECTOR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingUnexportW,"RpcNsBindingUnexportW");
   function RpcNsBindingExportPnPA(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR;
      IfSpec : RPC_IF_HANDLE;
      ObjectVector : access UUID_VECTOR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingExportPnPA,"RpcNsBindingExportPnPA");
   function RpcNsBindingUnexportPnPA(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR;
      IfSpec : RPC_IF_HANDLE;
      ObjectVector : access UUID_VECTOR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingUnexportPnPA,"RpcNsBindingUnexportPnPA");
   function RpcNsBindingExportPnPW(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR;
      IfSpec : RPC_IF_HANDLE;
      ObjectVector : access UUID_VECTOR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingExportPnPW,"RpcNsBindingExportPnPW");
   function RpcNsBindingUnexportPnPW(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR;
      IfSpec : RPC_IF_HANDLE;
      ObjectVector : access UUID_VECTOR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingUnexportPnPW,"RpcNsBindingUnexportPnPW");
   function RpcNsBindingLookupBeginA(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR;
      IfSpec : RPC_IF_HANDLE;
      ObjUuid : access UUID;
      BindingMaxCount : Interfaces.C.unsigned_long;
      LookupContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingLookupBeginA,"RpcNsBindingLookupBeginA");
   function RpcNsBindingLookupBeginW(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR;
      IfSpec : RPC_IF_HANDLE;
      ObjUuid : access UUID;
      BindingMaxCount : Interfaces.C.unsigned_long;
      LookupContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingLookupBeginW,"RpcNsBindingLookupBeginW");
   function RpcNsBindingLookupNext(
      LookupContext : RPC_NS_HANDLE;
      BindingVec : access RPC_BINDING_VECTOR_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingLookupNext,"RpcNsBindingLookupNext");
   function RpcNsBindingLookupDone(
      LookupContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingLookupDone,"RpcNsBindingLookupDone");
   function RpcNsGroupDeleteA(
      GroupNameSyntax : Interfaces.C.unsigned_long;
      GroupName : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsGroupDeleteA,"RpcNsGroupDeleteA");
   function RpcNsGroupMbrAddA(
      GroupNameSyntax : Interfaces.C.unsigned_long;
      GroupName : RPC_CSTR;
      MemberNameSyntax : Interfaces.C.unsigned_long;
      MemberName : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsGroupMbrAddA,"RpcNsGroupMbrAddA");
   function RpcNsGroupMbrRemoveA(
      GroupNameSyntax : Interfaces.C.unsigned_long;
      GroupName : RPC_CSTR;
      MemberNameSyntax : Interfaces.C.unsigned_long;
      MemberName : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsGroupMbrRemoveA,"RpcNsGroupMbrRemoveA");
   function RpcNsGroupMbrInqBeginA(
      GroupNameSyntax : Interfaces.C.unsigned_long;
      GroupName : RPC_CSTR;
      MemberNameSyntax : Interfaces.C.unsigned_long;
      InquiryContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsGroupMbrInqBeginA,"RpcNsGroupMbrInqBeginA");
   function RpcNsGroupMbrInqNextA(
      InquiryContext : RPC_NS_HANDLE;
      MemberName : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsGroupMbrInqNextA,"RpcNsGroupMbrInqNextA");
   function RpcNsGroupDeleteW(
      GroupNameSyntax : Interfaces.C.unsigned_long;
      GroupName : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsGroupDeleteW,"RpcNsGroupDeleteW");
   function RpcNsGroupMbrAddW(
      GroupNameSyntax : Interfaces.C.unsigned_long;
      GroupName : RPC_WSTR;
      MemberNameSyntax : Interfaces.C.unsigned_long;
      MemberName : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsGroupMbrAddW,"RpcNsGroupMbrAddW");
   function RpcNsGroupMbrRemoveW(
      GroupNameSyntax : Interfaces.C.unsigned_long;
      GroupName : RPC_WSTR;
      MemberNameSyntax : Interfaces.C.unsigned_long;
      MemberName : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsGroupMbrRemoveW,"RpcNsGroupMbrRemoveW");
   function RpcNsGroupMbrInqBeginW(
      GroupNameSyntax : Interfaces.C.unsigned_long;
      GroupName : RPC_WSTR;
      MemberNameSyntax : Interfaces.C.unsigned_long;
      InquiryContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsGroupMbrInqBeginW,"RpcNsGroupMbrInqBeginW");
   function RpcNsGroupMbrInqNextW(
      InquiryContext : RPC_NS_HANDLE;
      MemberName : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsGroupMbrInqNextW,"RpcNsGroupMbrInqNextW");
   function RpcNsGroupMbrInqDone(
      InquiryContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsGroupMbrInqDone,"RpcNsGroupMbrInqDone");
   function RpcNsProfileDeleteA(
      ProfileNameSyntax : Interfaces.C.unsigned_long;
      ProfileName : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsProfileDeleteA,"RpcNsProfileDeleteA");
   function RpcNsProfileEltAddA(
      ProfileNameSyntax : Interfaces.C.unsigned_long;
      ProfileName : RPC_CSTR;
      IfId : access RPC_IF_ID;
      MemberNameSyntax : Interfaces.C.unsigned_long;
      MemberName : RPC_CSTR;
      Priority : Interfaces.C.unsigned_long;
      Annotation : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsProfileEltAddA,"RpcNsProfileEltAddA");
   function RpcNsProfileEltRemoveA(
      ProfileNameSyntax : Interfaces.C.unsigned_long;
      ProfileName : RPC_CSTR;
      IfId : access RPC_IF_ID;
      MemberNameSyntax : Interfaces.C.unsigned_long;
      MemberName : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsProfileEltRemoveA,"RpcNsProfileEltRemoveA");
   function RpcNsProfileEltInqBeginA(
      ProfileNameSyntax : Interfaces.C.unsigned_long;
      ProfileName : RPC_CSTR;
      InquiryType : Interfaces.C.unsigned_long;
      IfId : access RPC_IF_ID;
      VersOption : Interfaces.C.unsigned_long;
      MemberNameSyntax : Interfaces.C.unsigned_long;
      MemberName : RPC_CSTR;
      InquiryContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsProfileEltInqBeginA,"RpcNsProfileEltInqBeginA");
   function RpcNsProfileEltInqNextA(
      InquiryContext : RPC_NS_HANDLE;
      IfId : access RPC_IF_ID;
      MemberName : access RPC_CSTR;
      Priority : access Interfaces.C.unsigned_long;
      Annotation : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsProfileEltInqNextA,"RpcNsProfileEltInqNextA");
   function RpcNsProfileDeleteW(
      ProfileNameSyntax : Interfaces.C.unsigned_long;
      ProfileName : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsProfileDeleteW,"RpcNsProfileDeleteW");
   function RpcNsProfileEltAddW(
      ProfileNameSyntax : Interfaces.C.unsigned_long;
      ProfileName : RPC_WSTR;
      IfId : access RPC_IF_ID;
      MemberNameSyntax : Interfaces.C.unsigned_long;
      MemberName : RPC_WSTR;
      Priority : Interfaces.C.unsigned_long;
      Annotation : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsProfileEltAddW,"RpcNsProfileEltAddW");
   function RpcNsProfileEltRemoveW(
      ProfileNameSyntax : Interfaces.C.unsigned_long;
      ProfileName : RPC_WSTR;
      IfId : access RPC_IF_ID;
      MemberNameSyntax : Interfaces.C.unsigned_long;
      MemberName : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsProfileEltRemoveW,"RpcNsProfileEltRemoveW");
   function RpcNsProfileEltInqBeginW(
      ProfileNameSyntax : Interfaces.C.unsigned_long;
      ProfileName : RPC_WSTR;
      InquiryType : Interfaces.C.unsigned_long;
      IfId : access RPC_IF_ID;
      VersOption : Interfaces.C.unsigned_long;
      MemberNameSyntax : Interfaces.C.unsigned_long;
      MemberName : RPC_WSTR;
      InquiryContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsProfileEltInqBeginW,"RpcNsProfileEltInqBeginW");
   function RpcNsProfileEltInqNextW(
      InquiryContext : RPC_NS_HANDLE;
      IfId : access RPC_IF_ID;
      MemberName : access RPC_WSTR;
      Priority : access Interfaces.C.unsigned_long;
      Annotation : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsProfileEltInqNextW,"RpcNsProfileEltInqNextW");
   function RpcNsProfileEltInqDone(
      InquiryContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsProfileEltInqDone,"RpcNsProfileEltInqDone");
   function RpcNsEntryObjectInqBeginA(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR;
      InquiryContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsEntryObjectInqBeginA,"RpcNsEntryObjectInqBeginA");
   function RpcNsEntryObjectInqBeginW(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR;
      InquiryContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsEntryObjectInqBeginW,"RpcNsEntryObjectInqBeginW");
   function RpcNsEntryObjectInqNext(
      InquiryContext : RPC_NS_HANDLE;
      ObjUuid : access UUID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsEntryObjectInqNext,"RpcNsEntryObjectInqNext");
   function RpcNsEntryObjectInqDone(
      InquiryContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsEntryObjectInqDone,"RpcNsEntryObjectInqDone");
   function RpcNsEntryExpandNameA(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR;
      ExpandedName : access RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsEntryExpandNameA,"RpcNsEntryExpandNameA");
   function RpcNsMgmtBindingUnexportA(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR;
      IfId : access RPC_IF_ID;
      VersOption : Interfaces.C.unsigned_long;
      ObjectUuidVec : access UUID_VECTOR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsMgmtBindingUnexportA,"RpcNsMgmtBindingUnexportA");
   function RpcNsMgmtEntryCreateA(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsMgmtEntryCreateA,"RpcNsMgmtEntryCreateA");
   function RpcNsMgmtEntryDeleteA(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsMgmtEntryDeleteA,"RpcNsMgmtEntryDeleteA");
   function RpcNsMgmtEntryInqIfIdsA(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR;
      IfIdVec : access RPC_IF_ID_VECTOR_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsMgmtEntryInqIfIdsA,"RpcNsMgmtEntryInqIfIdsA");
   function RpcNsMgmtHandleSetExpAge(
      NsHandle : RPC_NS_HANDLE;
      ExpirationAge : Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsMgmtHandleSetExpAge,"RpcNsMgmtHandleSetExpAge");
   function RpcNsMgmtInqExpAge(
      ExpirationAge : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsMgmtInqExpAge,"RpcNsMgmtInqExpAge");
   function RpcNsMgmtSetExpAge(
      ExpirationAge : Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsMgmtSetExpAge,"RpcNsMgmtSetExpAge");
   function RpcNsEntryExpandNameW(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR;
      ExpandedName : access RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsEntryExpandNameW,"RpcNsEntryExpandNameW");
   function RpcNsMgmtBindingUnexportW(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR;
      IfId : access RPC_IF_ID;
      VersOption : Interfaces.C.unsigned_long;
      ObjectUuidVec : access UUID_VECTOR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsMgmtBindingUnexportW,"RpcNsMgmtBindingUnexportW");
   function RpcNsMgmtEntryCreateW(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsMgmtEntryCreateW,"RpcNsMgmtEntryCreateW");
   function RpcNsMgmtEntryDeleteW(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsMgmtEntryDeleteW,"RpcNsMgmtEntryDeleteW");
   function RpcNsMgmtEntryInqIfIdsW(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR;
      IfIdVec : access RPC_IF_ID_VECTOR_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsMgmtEntryInqIfIdsW,"RpcNsMgmtEntryInqIfIdsW");
   function RpcNsBindingImportBeginA(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_CSTR;
      IfSpec : RPC_IF_HANDLE;
      ObjUuid : access UUID;
      ImportContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingImportBeginA,"RpcNsBindingImportBeginA");
   function RpcNsBindingImportBeginW(
      EntryNameSyntax : Interfaces.C.unsigned_long;
      EntryName : RPC_WSTR;
      IfSpec : RPC_IF_HANDLE;
      ObjUuid : access UUID;
      ImportContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingImportBeginW,"RpcNsBindingImportBeginW");
   function RpcNsBindingImportNext(
      ImportContext : RPC_NS_HANDLE;
      Binding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingImportNext,"RpcNsBindingImportNext");
   function RpcNsBindingImportDone(
      ImportContext : access RPC_NS_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingImportDone,"RpcNsBindingImportDone");
   function RpcNsBindingSelect(
      BindingVec : access RPC_BINDING_VECTOR;
      Binding : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcNsBindingSelect,"RpcNsBindingSelect");
   -- #include <rpcasync.h>
   type RPC_NOTIFICATION_TYPES_x is (
      RpcNotificationTypeNone,
      RpcNotificationTypeEvent,
      RpcNotificationTypeApc,
      RpcNotificationTypeIoc,
      RpcNotificationTypeHwnd,
      RpcNotificationTypeCallback
   );
   for RPC_NOTIFICATION_TYPES_x use (
      RpcNotificationTypeNone => 0,
      RpcNotificationTypeEvent => 1,
      RpcNotificationTypeApc => 2,
      RpcNotificationTypeIoc => 3,
      RpcNotificationTypeHwnd => 4,
      RpcNotificationTypeCallback => 5
   );
   for RPC_NOTIFICATION_TYPES_x'Size use 32;
   subtype RPC_NOTIFICATION_TYPES is RPC_NOTIFICATION_TYPES_x;
   type RPC_ASYNC_EVENT_x is (
      RpcCallComplete,
      RpcSendComplete,
      RpcReceiveComplete,
      RpcClientDisconnect,
      RpcClientCancel
   );
   for RPC_ASYNC_EVENT_x use (
      RpcCallComplete => 0,
      RpcSendComplete => 1,
      RpcReceiveComplete => 2,
      RpcClientDisconnect => 3,
      RpcClientCancel => 4
   );
   for RPC_ASYNC_EVENT_x'Size use 32;
   subtype RPC_ASYNC_EVENT is RPC_ASYNC_EVENT_x;
   type RPC_ASYNC_STATE_x;
   subtype RPCNOTIFICATION_ROUTINE is System.Address; -- [Note - CXType_FunctionProto] Profile - void (struct _RPC_ASYNC_STATE *, void *, RPC_ASYNC_EVENT)
   type PFN_RPCNOTIFICATION_ROUTINE is access procedure (p1 : access RPC_ASYNC_STATE_x ; p2 : access void ; p3 : RPC_ASYNC_EVENT); -- void (struct _RPC_ASYNC_STATE *, void *, RPC_ASYNC_EVENT)
   pragma Convention(C,PFN_RPCNOTIFICATION_ROUTINE);
   type Anonymous_Record_265 is record
      NotificationRoutine : PFN_RPCNOTIFICATION_ROUTINE;
      hThread : HANDLE;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_265);
   for Anonymous_Record_265 use record
      NotificationRoutine at 0 range 0..63;
      hThread at 0 range 64..127;
   end record;
   for Anonymous_Record_265'Size use 128;
   for Anonymous_Record_265'Alignment use 8;
   type Anonymous_Record_266 is record
      hIOPort : HANDLE;
      dwNumberOfBytesTransferred : DWORD;
      dwCompletionKey : DWORD_PTR;
      lpOverlapped_x : LPOVERLAPPED;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_266);
   for Anonymous_Record_266 use record
      hIOPort at 0 range 0..63;
      dwNumberOfBytesTransferred at 0 range 64..95;
      dwCompletionKey at 0 range 128..191;
      lpOverlapped_x at 0 range 192..255;
   end record;
   for Anonymous_Record_266'Size use 256;
   for Anonymous_Record_266'Alignment use 8;
   type Anonymous_Record_267 is record
      hWnd_x : HWND;
      Msg_x : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_267);
   for Anonymous_Record_267 use record
      hWnd_x at 0 range 0..63;
      Msg_x at 0 range 64..95;
   end record;
   for Anonymous_Record_267'Size use 128;
   for Anonymous_Record_267'Alignment use 8;
   type RPC_ASYNC_NOTIFICATION_INFO_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_265;
         when 1 =>
            field_2 : Anonymous_Record_266;
         when 2 =>
            field_3 : Anonymous_Record_267;
         when 3 =>
            hEvent : HANDLE;
         when others => 
            NotificationRoutine : PFN_RPCNOTIFICATION_ROUTINE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_ASYNC_NOTIFICATION_INFO_x);
   pragma Unchecked_Union (RPC_ASYNC_NOTIFICATION_INFO_x);
   for RPC_ASYNC_NOTIFICATION_INFO_x'Size use 256;
   for RPC_ASYNC_NOTIFICATION_INFO_x'Alignment use 8;
   subtype RPC_ASYNC_NOTIFICATION_INFO is RPC_ASYNC_NOTIFICATION_INFO_x;
   type PRPC_ASYNC_NOTIFICATION_INFO is access all RPC_ASYNC_NOTIFICATION_INFO_x;
   type RPC_ASYNC_STATE_x_Reserved_Array is array(1..4) of LONG_PTR; -- Auto Generated Dependancy
   type RPC_ASYNC_STATE_x is record
      Size_x : Interfaces.C.unsigned;
      Signature : Interfaces.C.unsigned_long;
      Lock : Interfaces.C.Long;
      Flags : Interfaces.C.unsigned_long;
      StubInfo : access Void;
      UserInfo : access Void;
      RuntimeInfo : access Void;
      Event : RPC_ASYNC_EVENT;
      NotificationType : RPC_NOTIFICATION_TYPES;
      u : RPC_ASYNC_NOTIFICATION_INFO;
      Reserved : RPC_ASYNC_STATE_x_Reserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_ASYNC_STATE_x);
   for RPC_ASYNC_STATE_x use record
      Size_x at 0 range 0..31;
      Signature at 0 range 32..63;
      Lock at 0 range 64..95;
      Flags at 0 range 96..127;
      StubInfo at 0 range 128..191;
      UserInfo at 0 range 192..255;
      RuntimeInfo at 0 range 256..319;
      Event at 0 range 320..351;
      NotificationType at 0 range 352..383;
      u at 0 range 384..639;
      Reserved at 0 range 640..895;
   end record;
   for RPC_ASYNC_STATE_x'Size use 896;
   for RPC_ASYNC_STATE_x'Alignment use 8;
   subtype RPC_ASYNC_STATE is RPC_ASYNC_STATE_x;
   type PRPC_ASYNC_STATE is access all RPC_ASYNC_STATE_x;
   function RpcAsyncRegisterInfo(
      pAsync : PRPC_ASYNC_STATE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcAsyncRegisterInfo,"RpcAsyncRegisterInfo");
   function RpcAsyncInitializeHandle(
      pAsync : PRPC_ASYNC_STATE;
      Size_x : Interfaces.C.unsigned
   ) return RPC_STATUS;
   pragma import (Cpp,RpcAsyncInitializeHandle,"RpcAsyncInitializeHandle");
   function RpcAsyncGetCallStatus(
      pAsync : PRPC_ASYNC_STATE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcAsyncGetCallStatus,"RpcAsyncGetCallStatus");
   function RpcAsyncCompleteCall(
      pAsync : PRPC_ASYNC_STATE;
      Reply : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcAsyncCompleteCall,"RpcAsyncCompleteCall");
   function RpcAsyncAbortCall(
      pAsync : PRPC_ASYNC_STATE;
      ExceptionCode : Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcAsyncAbortCall,"RpcAsyncAbortCall");
   function RpcAsyncCancelCall(
      pAsync : PRPC_ASYNC_STATE;
      fAbort : BOOL
   ) return RPC_STATUS;
   pragma import (Cpp,RpcAsyncCancelCall,"RpcAsyncCancelCall");
   type tagExtendedErrorParamTypes is (
      eeptAnsiString,
      eeptUnicodeString,
      eeptLongVal,
      eeptShortVal,
      eeptPointerVal,
      eeptNone,
      eeptBinary
   );
   for tagExtendedErrorParamTypes use (
      eeptAnsiString => 1,
      eeptUnicodeString => 2,
      eeptLongVal => 3,
      eeptShortVal => 4,
      eeptPointerVal => 5,
      eeptNone => 6,
      eeptBinary => 7
   );
   for tagExtendedErrorParamTypes'Size use 32;
   subtype ExtendedErrorParamTypes is tagExtendedErrorParamTypes;
   type tagBinaryParam is record
      Buffer : access Void;
      Size_x : Interfaces.C.Short;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBinaryParam);
   for tagBinaryParam use record
      Buffer at 0 range 0..63;
      Size_x at 0 range 64..79;
   end record;
   for tagBinaryParam'Size use 128;
   for tagBinaryParam'Alignment use 8;
   subtype BinaryParam is tagBinaryParam;
   type Anonymous_Record_268 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            AnsiString : LPSTR;
         when 1 =>
            UnicodeString : LPWSTR;
         when 2 =>
            LVal : Interfaces.C.Long;
         when 3 =>
            SVal : Interfaces.C.Short;
         when 4 =>
            PVal : ULONGLONG;
         when others => 
            BVal : BinaryParam;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_268);
   pragma Unchecked_Union (Anonymous_Record_268);
   for Anonymous_Record_268'Size use 128;
   for Anonymous_Record_268'Alignment use 8;
   type tagRPC_EE_INFO_PARAM is record
      ParameterType : ExtendedErrorParamTypes;
      field_1 : Anonymous_Record_268;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRPC_EE_INFO_PARAM);
   for tagRPC_EE_INFO_PARAM use record
      ParameterType at 0 range 0..31;
      field_1 at 0 range 32..159;
   end record;
   for tagRPC_EE_INFO_PARAM'Size use 192;
   for tagRPC_EE_INFO_PARAM'Alignment use 8;
   subtype RPC_EE_INFO_PARAM is tagRPC_EE_INFO_PARAM;
   type Anonymous_Record_269 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            SystemTime_x : SYSTEMTIME;
         when others => 
            FileTime_x : FILETIME;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_269);
   pragma Unchecked_Union (Anonymous_Record_269);
   for Anonymous_Record_269'Size use 128;
   for Anonymous_Record_269'Alignment use 4;
   type tagRPC_EXTENDED_ERROR_INFO_Parameters_Array is array(1..4) of RPC_EE_INFO_PARAM; -- Auto Generated Dependancy
   type tagRPC_EXTENDED_ERROR_INFO is record
      Version : ULONG;
      ComputerName : LPWSTR;
      ProcessID : ULONG;
      field_1 : Anonymous_Record_269;
      GeneratingComponent : ULONG;
      Status : ULONG;
      DetectionLocation : USHORT;
      Flags : USHORT;
      NumberOfParameters : Interfaces.C.Int;
      Parameters : tagRPC_EXTENDED_ERROR_INFO_Parameters_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRPC_EXTENDED_ERROR_INFO);
   for tagRPC_EXTENDED_ERROR_INFO use record
      Version at 0 range 0..31;
      ComputerName at 0 range 64..127;
      ProcessID at 0 range 128..159;
      field_1 at 0 range 160..287;
      GeneratingComponent at 0 range 288..319;
      Status at 0 range 320..351;
      DetectionLocation at 0 range 352..367;
      Flags at 0 range 368..383;
      NumberOfParameters at 0 range 384..415;
      Parameters at 0 range 448..1215;
   end record;
   for tagRPC_EXTENDED_ERROR_INFO'Size use 1216;
   for tagRPC_EXTENDED_ERROR_INFO'Alignment use 8;
   subtype RPC_EXTENDED_ERROR_INFO is tagRPC_EXTENDED_ERROR_INFO;
   type tagRPC_ERROR_ENUM_HANDLE is record
      Signature : ULONG;
      CurrentPos : access Void;
      Head : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRPC_ERROR_ENUM_HANDLE);
   for tagRPC_ERROR_ENUM_HANDLE use record
      Signature at 0 range 0..31;
      CurrentPos at 0 range 64..127;
      Head at 0 range 128..191;
   end record;
   for tagRPC_ERROR_ENUM_HANDLE'Size use 192;
   for tagRPC_ERROR_ENUM_HANDLE'Alignment use 8;
   subtype RPC_ERROR_ENUM_HANDLE is tagRPC_ERROR_ENUM_HANDLE;
   function RpcErrorStartEnumeration(
      EnumHandle : access RPC_ERROR_ENUM_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcErrorStartEnumeration,"RpcErrorStartEnumeration");
   function RpcErrorGetNextRecord(
      EnumHandle : access RPC_ERROR_ENUM_HANDLE;
      CopyStrings : BOOL;
      ErrorInfo : access RPC_EXTENDED_ERROR_INFO
   ) return RPC_STATUS;
   pragma import (Cpp,RpcErrorGetNextRecord,"RpcErrorGetNextRecord");
   function RpcErrorEndEnumeration(
      EnumHandle : access RPC_ERROR_ENUM_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcErrorEndEnumeration,"RpcErrorEndEnumeration");
   function RpcErrorResetEnumeration(
      EnumHandle : access RPC_ERROR_ENUM_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcErrorResetEnumeration,"RpcErrorResetEnumeration");
   function RpcErrorGetNumberOfRecords(
      EnumHandle : access RPC_ERROR_ENUM_HANDLE;
      Records : access Interfaces.C.Int
   ) return RPC_STATUS;
   pragma import (Cpp,RpcErrorGetNumberOfRecords,"RpcErrorGetNumberOfRecords");
   function RpcErrorSaveErrorInfo(
      EnumHandle : access RPC_ERROR_ENUM_HANDLE;
      ErrorBlob : access PVOID;
      BlobSize : access size_t
   ) return RPC_STATUS;
   pragma import (Cpp,RpcErrorSaveErrorInfo,"RpcErrorSaveErrorInfo");
   function RpcErrorLoadErrorInfo(
      ErrorBlob : PVOID;
      BlobSize : size_t;
      EnumHandle : access RPC_ERROR_ENUM_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcErrorLoadErrorInfo,"RpcErrorLoadErrorInfo");
   function RpcErrorAddRecord(
      ErrorInfo : access RPC_EXTENDED_ERROR_INFO
   ) return RPC_STATUS;
   pragma import (Cpp,RpcErrorAddRecord,"RpcErrorAddRecord");
   procedure RpcErrorClearInformation;
   pragma import (Cpp,RpcErrorClearInformation,"RpcErrorClearInformation");
   function RpcAsyncCleanupThread(
      dwTimeout : DWORD
   ) return RPC_STATUS;
   pragma import (Cpp,RpcAsyncCleanupThread,"RpcAsyncCleanupThread");
   function RpcGetAuthorizationContextForClient(
      ClientBinding : RPC_BINDING_HANDLE;
      ImpersonateOnReturn : BOOL;
      Reserved1 : PVOID;
      pExpirationTime : PLARGE_INTEGER;
      Reserved2 : LUID;
      Reserved3 : DWORD;
      Reserved4 : PVOID;
      pAuthzClientContext : access PVOID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcGetAuthorizationContextForClient,"RpcGetAuthorizationContextForClient");
   function RpcFreeAuthorizationContext(
      pAuthzClientContext : access PVOID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcFreeAuthorizationContext,"RpcFreeAuthorizationContext");
   function RpcSsContextLockExclusive(
      ServerBindingHandle : RPC_BINDING_HANDLE;
      UserContext : PVOID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcSsContextLockExclusive,"RpcSsContextLockExclusive");
   function RpcSsContextLockShared(
      ServerBindingHandle : RPC_BINDING_HANDLE;
      UserContext : PVOID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcSsContextLockShared,"RpcSsContextLockShared");
   type tagRpcLocalAddressFormat is (
      rlafInvalid,
      rlafIPv4,
      rlafIPv6
   );
   for tagRpcLocalAddressFormat use (
      rlafInvalid => 0,
      rlafIPv4 => 1,
      rlafIPv6 => 2
   );
   for tagRpcLocalAddressFormat'Size use 32;
   subtype RpcLocalAddressFormat is tagRpcLocalAddressFormat;
   type RPC_CALL_LOCAL_ADDRESS_V1_x is record
      Version : Interfaces.C.unsigned;
      Buffer : access Void;
      BufferSize : Interfaces.C.unsigned_long;
      AddressFormat : RpcLocalAddressFormat;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_CALL_LOCAL_ADDRESS_V1_x);
   for RPC_CALL_LOCAL_ADDRESS_V1_x use record
      Version at 0 range 0..31;
      Buffer at 0 range 64..127;
      BufferSize at 0 range 128..159;
      AddressFormat at 0 range 160..191;
   end record;
   for RPC_CALL_LOCAL_ADDRESS_V1_x'Size use 192;
   for RPC_CALL_LOCAL_ADDRESS_V1_x'Alignment use 8;
   subtype RPC_CALL_LOCAL_ADDRESS_V1 is RPC_CALL_LOCAL_ADDRESS_V1_x;
   type PRPC_CALL_LOCAL_ADDRESS_V1 is access all RPC_CALL_LOCAL_ADDRESS_V1_x;
   type tagRPC_CALL_ATTRIBUTES_V1_W is record
      Version : Interfaces.C.unsigned;
      Flags : Interfaces.C.unsigned_long;
      ServerPrincipalNameBufferLength : Interfaces.C.unsigned_long;
      ServerPrincipalName : access Interfaces.C.unsigned_short;
      ClientPrincipalNameBufferLength : Interfaces.C.unsigned_long;
      ClientPrincipalName : access Interfaces.C.unsigned_short;
      AuthenticationLevel : Interfaces.C.unsigned_long;
      AuthenticationService : Interfaces.C.unsigned_long;
      NullSession : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRPC_CALL_ATTRIBUTES_V1_W);
   for tagRPC_CALL_ATTRIBUTES_V1_W use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      ServerPrincipalNameBufferLength at 0 range 64..95;
      ServerPrincipalName at 0 range 128..191;
      ClientPrincipalNameBufferLength at 0 range 192..223;
      ClientPrincipalName at 0 range 256..319;
      AuthenticationLevel at 0 range 320..351;
      AuthenticationService at 0 range 352..383;
      NullSession at 0 range 384..415;
   end record;
   for tagRPC_CALL_ATTRIBUTES_V1_W'Size use 448;
   for tagRPC_CALL_ATTRIBUTES_V1_W'Alignment use 8;
   subtype RPC_CALL_ATTRIBUTES_V1_W is tagRPC_CALL_ATTRIBUTES_V1_W;
   type tagRPC_CALL_ATTRIBUTES_V1_A is record
      Version : Interfaces.C.unsigned;
      Flags : Interfaces.C.unsigned_long;
      ServerPrincipalNameBufferLength : Interfaces.C.unsigned_long;
      ServerPrincipalName : access Interfaces.C.unsigned_char;
      ClientPrincipalNameBufferLength : Interfaces.C.unsigned_long;
      ClientPrincipalName : access Interfaces.C.unsigned_char;
      AuthenticationLevel : Interfaces.C.unsigned_long;
      AuthenticationService : Interfaces.C.unsigned_long;
      NullSession : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRPC_CALL_ATTRIBUTES_V1_A);
   for tagRPC_CALL_ATTRIBUTES_V1_A use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      ServerPrincipalNameBufferLength at 0 range 64..95;
      ServerPrincipalName at 0 range 128..191;
      ClientPrincipalNameBufferLength at 0 range 192..223;
      ClientPrincipalName at 0 range 256..319;
      AuthenticationLevel at 0 range 320..351;
      AuthenticationService at 0 range 352..383;
      NullSession at 0 range 384..415;
   end record;
   for tagRPC_CALL_ATTRIBUTES_V1_A'Size use 448;
   for tagRPC_CALL_ATTRIBUTES_V1_A'Alignment use 8;
   subtype RPC_CALL_ATTRIBUTES_V1_A is tagRPC_CALL_ATTRIBUTES_V1_A;
   type tagRpcCallType is (
      rctInvalid,
      rctNormal,
      rctTraining,
      rctGuaranteed
   );
   for tagRpcCallType use (
      rctInvalid => 0,
      rctNormal => 1,
      rctTraining => 2,
      rctGuaranteed => 3
   );
   for tagRpcCallType'Size use 32;
   subtype RpcCallType is tagRpcCallType;
   type tagRpcCallClientLocality is (
      rcclInvalid,
      rcclLocal,
      rcclRemote,
      rcclClientUnknownLocality
   );
   for tagRpcCallClientLocality use (
      rcclInvalid => 0,
      rcclLocal => 1,
      rcclRemote => 2,
      rcclClientUnknownLocality => 3
   );
   for tagRpcCallClientLocality'Size use 32;
   subtype RpcCallClientLocality is tagRpcCallClientLocality;
   type tagRPC_CALL_ATTRIBUTES_V2_W is record
      Version : Interfaces.C.unsigned;
      Flags : Interfaces.C.unsigned_long;
      ServerPrincipalNameBufferLength : Interfaces.C.unsigned_long;
      ServerPrincipalName : access Interfaces.C.unsigned_short;
      ClientPrincipalNameBufferLength : Interfaces.C.unsigned_long;
      ClientPrincipalName : access Interfaces.C.unsigned_short;
      AuthenticationLevel : Interfaces.C.unsigned_long;
      AuthenticationService : Interfaces.C.unsigned_long;
      NullSession : BOOL;
      KernelModeCaller : BOOL;
      ProtocolSequence : Interfaces.C.unsigned_long;
      IsClientLocal : RpcCallClientLocality;
      ClientPID : HANDLE;
      CallStatus : Interfaces.C.unsigned_long;
      CallType : RpcCallType;
      CallLocalAddress : access RPC_CALL_LOCAL_ADDRESS_V1;
      OpNum : Interfaces.C.unsigned_short;
      InterfaceUuid : UUID;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRPC_CALL_ATTRIBUTES_V2_W);
   for tagRPC_CALL_ATTRIBUTES_V2_W use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      ServerPrincipalNameBufferLength at 0 range 64..95;
      ServerPrincipalName at 0 range 128..191;
      ClientPrincipalNameBufferLength at 0 range 192..223;
      ClientPrincipalName at 0 range 256..319;
      AuthenticationLevel at 0 range 320..351;
      AuthenticationService at 0 range 352..383;
      NullSession at 0 range 384..415;
      KernelModeCaller at 0 range 416..447;
      ProtocolSequence at 0 range 448..479;
      IsClientLocal at 0 range 480..511;
      ClientPID at 0 range 512..575;
      CallStatus at 0 range 576..607;
      CallType at 0 range 608..639;
      CallLocalAddress at 0 range 640..703;
      OpNum at 0 range 704..719;
      InterfaceUuid at 0 range 736..863;
   end record;
   for tagRPC_CALL_ATTRIBUTES_V2_W'Size use 896;
   for tagRPC_CALL_ATTRIBUTES_V2_W'Alignment use 8;
   subtype RPC_CALL_ATTRIBUTES_V2_W is tagRPC_CALL_ATTRIBUTES_V2_W;
   type tagRPC_CALL_ATTRIBUTES_V2_A is record
      Version : Interfaces.C.unsigned;
      Flags : Interfaces.C.unsigned_long;
      ServerPrincipalNameBufferLength : Interfaces.C.unsigned_long;
      ServerPrincipalName : access Interfaces.C.unsigned_char;
      ClientPrincipalNameBufferLength : Interfaces.C.unsigned_long;
      ClientPrincipalName : access Interfaces.C.unsigned_char;
      AuthenticationLevel : Interfaces.C.unsigned_long;
      AuthenticationService : Interfaces.C.unsigned_long;
      NullSession : BOOL;
      KernelModeCaller : BOOL;
      ProtocolSequence : Interfaces.C.unsigned_long;
      IsClientLocal : Interfaces.C.unsigned_long;
      ClientPID : HANDLE;
      CallStatus : Interfaces.C.unsigned_long;
      CallType : RpcCallType;
      CallLocalAddress : access RPC_CALL_LOCAL_ADDRESS_V1;
      OpNum : Interfaces.C.unsigned_short;
      InterfaceUuid : UUID;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRPC_CALL_ATTRIBUTES_V2_A);
   for tagRPC_CALL_ATTRIBUTES_V2_A use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      ServerPrincipalNameBufferLength at 0 range 64..95;
      ServerPrincipalName at 0 range 128..191;
      ClientPrincipalNameBufferLength at 0 range 192..223;
      ClientPrincipalName at 0 range 256..319;
      AuthenticationLevel at 0 range 320..351;
      AuthenticationService at 0 range 352..383;
      NullSession at 0 range 384..415;
      KernelModeCaller at 0 range 416..447;
      ProtocolSequence at 0 range 448..479;
      IsClientLocal at 0 range 480..511;
      ClientPID at 0 range 512..575;
      CallStatus at 0 range 576..607;
      CallType at 0 range 608..639;
      CallLocalAddress at 0 range 640..703;
      OpNum at 0 range 704..719;
      InterfaceUuid at 0 range 736..863;
   end record;
   for tagRPC_CALL_ATTRIBUTES_V2_A'Size use 896;
   for tagRPC_CALL_ATTRIBUTES_V2_A'Alignment use 8;
   subtype RPC_CALL_ATTRIBUTES_V2_A is tagRPC_CALL_ATTRIBUTES_V2_A;
   type tagRPC_CALL_ATTRIBUTES_V3_W is record
      Version : Interfaces.C.unsigned;
      Flags : Interfaces.C.unsigned_long;
      ServerPrincipalNameBufferLength : Interfaces.C.unsigned_long;
      ServerPrincipalName : access Interfaces.C.unsigned_short;
      ClientPrincipalNameBufferLength : Interfaces.C.unsigned_long;
      ClientPrincipalName : access Interfaces.C.unsigned_short;
      AuthenticationLevel : Interfaces.C.unsigned_long;
      AuthenticationService : Interfaces.C.unsigned_long;
      NullSession : BOOL;
      KernelModeCaller : BOOL;
      ProtocolSequence : Interfaces.C.unsigned_long;
      IsClientLocal : RpcCallClientLocality;
      ClientPID : HANDLE;
      CallStatus : Interfaces.C.unsigned_long;
      CallType : RpcCallType;
      CallLocalAddress : access RPC_CALL_LOCAL_ADDRESS_V1;
      OpNum : Interfaces.C.unsigned_short;
      InterfaceUuid : UUID;
      ClientIdentifierBufferLength : Interfaces.C.unsigned_long;
      ClientIdentifier : access Interfaces.C.unsigned_char;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRPC_CALL_ATTRIBUTES_V3_W);
   for tagRPC_CALL_ATTRIBUTES_V3_W use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      ServerPrincipalNameBufferLength at 0 range 64..95;
      ServerPrincipalName at 0 range 128..191;
      ClientPrincipalNameBufferLength at 0 range 192..223;
      ClientPrincipalName at 0 range 256..319;
      AuthenticationLevel at 0 range 320..351;
      AuthenticationService at 0 range 352..383;
      NullSession at 0 range 384..415;
      KernelModeCaller at 0 range 416..447;
      ProtocolSequence at 0 range 448..479;
      IsClientLocal at 0 range 480..511;
      ClientPID at 0 range 512..575;
      CallStatus at 0 range 576..607;
      CallType at 0 range 608..639;
      CallLocalAddress at 0 range 640..703;
      OpNum at 0 range 704..719;
      InterfaceUuid at 0 range 736..863;
      ClientIdentifierBufferLength at 0 range 864..895;
      ClientIdentifier at 0 range 896..959;
   end record;
   for tagRPC_CALL_ATTRIBUTES_V3_W'Size use 960;
   for tagRPC_CALL_ATTRIBUTES_V3_W'Alignment use 8;
   subtype RPC_CALL_ATTRIBUTES_V3_W is tagRPC_CALL_ATTRIBUTES_V3_W;
   type tagRPC_CALL_ATTRIBUTES_V3_A is record
      Version : Interfaces.C.unsigned;
      Flags : Interfaces.C.unsigned_long;
      ServerPrincipalNameBufferLength : Interfaces.C.unsigned_long;
      ServerPrincipalName : access Interfaces.C.unsigned_char;
      ClientPrincipalNameBufferLength : Interfaces.C.unsigned_long;
      ClientPrincipalName : access Interfaces.C.unsigned_char;
      AuthenticationLevel : Interfaces.C.unsigned_long;
      AuthenticationService : Interfaces.C.unsigned_long;
      NullSession : BOOL;
      KernelModeCaller : BOOL;
      ProtocolSequence : Interfaces.C.unsigned_long;
      IsClientLocal : Interfaces.C.unsigned_long;
      ClientPID : HANDLE;
      CallStatus : Interfaces.C.unsigned_long;
      CallType : RpcCallType;
      CallLocalAddress : access RPC_CALL_LOCAL_ADDRESS_V1;
      OpNum : Interfaces.C.unsigned_short;
      InterfaceUuid : UUID;
      ClientIdentifierBufferLength : Interfaces.C.unsigned_long;
      ClientIdentifier : access Interfaces.C.unsigned_char;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRPC_CALL_ATTRIBUTES_V3_A);
   for tagRPC_CALL_ATTRIBUTES_V3_A use record
      Version at 0 range 0..31;
      Flags at 0 range 32..63;
      ServerPrincipalNameBufferLength at 0 range 64..95;
      ServerPrincipalName at 0 range 128..191;
      ClientPrincipalNameBufferLength at 0 range 192..223;
      ClientPrincipalName at 0 range 256..319;
      AuthenticationLevel at 0 range 320..351;
      AuthenticationService at 0 range 352..383;
      NullSession at 0 range 384..415;
      KernelModeCaller at 0 range 416..447;
      ProtocolSequence at 0 range 448..479;
      IsClientLocal at 0 range 480..511;
      ClientPID at 0 range 512..575;
      CallStatus at 0 range 576..607;
      CallType at 0 range 608..639;
      CallLocalAddress at 0 range 640..703;
      OpNum at 0 range 704..719;
      InterfaceUuid at 0 range 736..863;
      ClientIdentifierBufferLength at 0 range 864..895;
      ClientIdentifier at 0 range 896..959;
   end record;
   for tagRPC_CALL_ATTRIBUTES_V3_A'Size use 960;
   for tagRPC_CALL_ATTRIBUTES_V3_A'Alignment use 8;
   subtype RPC_CALL_ATTRIBUTES_V3_A is tagRPC_CALL_ATTRIBUTES_V3_A;
   function RpcServerInqCallAttributesW(
      ClientBinding : RPC_BINDING_HANDLE;
      RpcCallAttributes : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInqCallAttributesW,"RpcServerInqCallAttributesW");
   function RpcServerInqCallAttributesA(
      ClientBinding : RPC_BINDING_HANDLE;
      RpcCallAttributes : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerInqCallAttributesA,"RpcServerInqCallAttributesA");
   subtype RPC_CALL_ATTRIBUTES is RPC_CALL_ATTRIBUTES_V3_A;
   type RPC_NOTIFICATIONS_x is (
      RpcNotificationCallNone,
      RpcNotificationClientDisconnect,
      RpcNotificationCallCancel
   );
   for RPC_NOTIFICATIONS_x use (
      RpcNotificationCallNone => 0,
      RpcNotificationClientDisconnect => 1,
      RpcNotificationCallCancel => 2
   );
   for RPC_NOTIFICATIONS_x'Size use 32;
   subtype RPC_NOTIFICATIONS is RPC_NOTIFICATIONS_x;
   function RpcServerSubscribeForNotification(
      Binding : RPC_BINDING_HANDLE;
      Notification : RPC_NOTIFICATIONS;
      NotificationType : RPC_NOTIFICATION_TYPES;
      NotificationInfo : access RPC_ASYNC_NOTIFICATION_INFO
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerSubscribeForNotification,"RpcServerSubscribeForNotification");
   function RpcServerUnsubscribeForNotification(
      Binding : RPC_BINDING_HANDLE;
      Notification : RPC_NOTIFICATIONS;
      NotificationsQueued : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,RpcServerUnsubscribeForNotification,"RpcServerUnsubscribeForNotification");
   function RpcBindingBind(
      pAsync : PRPC_ASYNC_STATE;
      Binding : RPC_BINDING_HANDLE;
      IfSpec : RPC_IF_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingBind,"RpcBindingBind");
   function RpcBindingUnbind(
      Binding : RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcBindingUnbind,"RpcBindingUnbind");
   function I_RpcAsyncSetHandle(
      Message : PRPC_MESSAGE;
      pAsync : PRPC_ASYNC_STATE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcAsyncSetHandle,"I_RpcAsyncSetHandle");
   function I_RpcAsyncAbortCall(
      pAsync : PRPC_ASYNC_STATE;
      ExceptionCode : Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcAsyncAbortCall,"I_RpcAsyncAbortCall");
   function I_RpcExceptionFilter(
      ExceptionCode : Interfaces.C.unsigned_long
   ) return Interfaces.C.Int;
   pragma import (Cpp,I_RpcExceptionFilter,"I_RpcExceptionFilter");
   function I_RpcBindingInqClientTokenAttributes(
      Binding : RPC_BINDING_HANDLE;
      TokenId : access LUID;
      AuthenticationId : access LUID;
      ModifiedId : access LUID
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcBindingInqClientTokenAttributes,"I_RpcBindingInqClientTokenAttributes");
   -- #include <rpcnsip.h>
   type RPC_IMPORT_CONTEXT_P is record
      LookupContext : RPC_NS_HANDLE;
      ProposedHandle : RPC_BINDING_HANDLE;
      Bindings : access RPC_BINDING_VECTOR;
   end record;
   pragma Convention (C_Pass_By_Copy,RPC_IMPORT_CONTEXT_P);
   for RPC_IMPORT_CONTEXT_P use record
      LookupContext at 0 range 0..63;
      ProposedHandle at 0 range 64..127;
      Bindings at 0 range 128..191;
   end record;
   for RPC_IMPORT_CONTEXT_P'Size use 192;
   for RPC_IMPORT_CONTEXT_P'Alignment use 8;
   type PRPC_IMPORT_CONTEXT_P is access all RPC_IMPORT_CONTEXT_P;
   function I_RpcNsGetBuffer(
      Message : PRPC_MESSAGE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcNsGetBuffer,"I_RpcNsGetBuffer");
   function I_RpcNsSendReceive(
      Message : PRPC_MESSAGE;
      Handle_x : access RPC_BINDING_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcNsSendReceive,"I_RpcNsSendReceive");
   procedure I_RpcNsRaiseException(
      Message : PRPC_MESSAGE;
      Status : RPC_STATUS
   );
   pragma import (Cpp,I_RpcNsRaiseException,"I_RpcNsRaiseException");
   function I_RpcReBindBuffer(
      Message : PRPC_MESSAGE
   ) return RPC_STATUS;
   pragma import (Cpp,I_RpcReBindBuffer,"I_RpcReBindBuffer");
   function I_NsServerBindSearch return RPC_STATUS;
   pragma import (Cpp,I_NsServerBindSearch,"I_NsServerBindSearch");
   function I_NsClientBindSearch return RPC_STATUS;
   pragma import (Cpp,I_NsClientBindSearch,"I_NsClientBindSearch");
   procedure I_NsClientBindDone;
   pragma import (Cpp,I_NsClientBindDone,"I_NsClientBindDone");
   -- #include <rpcsal.h>
   -- #include <rpcndr.h>
   -- subtype byte is Interfaces.C.unsigned_char; --  [Note: Type already defined (case sensitive issue)]
   subtype cs_byte is byte;
   -- subtype boolean is Interfaces.C.unsigned_char; --  [Note: Type already defined (case sensitive issue)]
   procedure MIDL_user_allocate(
      size_x : size_t
   );
   pragma import (Cpp,MIDL_user_allocate,"MIDL_user_allocate");
   procedure MIDL_user_free(
      param1 : access Void
   );
   pragma import (Cpp,MIDL_user_free,"MIDL_user_free");
   procedure I_RpcDefaultAllocate(
      bh : handle_t;
      size_x : size_t;
      RealAlloc : access System.Address
   );
   pragma import (Cpp,I_RpcDefaultAllocate,"I_RpcDefaultAllocate");
   procedure I_RpcDefaultFree(
      bh : handle_t;
      param2 : access Void;
      RealFree : access System.Address
   );
   pragma import (Cpp,I_RpcDefaultFree,"I_RpcDefaultFree");
   type NDR_CCONTEXT is access all Void;
   type NDR_SCONTEXT_Record_pad_Array is array(1..2) of access Void; -- Auto Generated Dependancy
   type NDR_SCONTEXT_Record is record
      pad : NDR_SCONTEXT_Record_pad_Array;
      userContext : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,NDR_SCONTEXT_Record);
   for NDR_SCONTEXT_Record use record
      pad at 0 range 0..127;
      userContext at 0 range 128..191;
   end record;
   for NDR_SCONTEXT_Record'Size use 192;
   for NDR_SCONTEXT_Record'Alignment use 8;
   type NDR_SCONTEXT is access all NDR_SCONTEXT_Record;
   type NDR_RUNDOWN is access procedure (p1 : access void); -- void (void *)
   pragma Convention(C,NDR_RUNDOWN);
   type NDR_NOTIFY_ROUTINE is access procedure ; -- void ()
   pragma Convention(C,NDR_NOTIFY_ROUTINE);
   type NDR_NOTIFY2_ROUTINE is access procedure (p1 : boolean); -- void (boolean)
   pragma Convention(C,NDR_NOTIFY2_ROUTINE);
   type SCONTEXT_QUEUE_x is record
      NumberOfObjects : Interfaces.C.unsigned_long;
      ArrayOfObjects : access NDR_SCONTEXT;
   end record;
   pragma Convention (C_Pass_By_Copy,SCONTEXT_QUEUE_x);
   for SCONTEXT_QUEUE_x use record
      NumberOfObjects at 0 range 0..31;
      ArrayOfObjects at 0 range 64..127;
   end record;
   for SCONTEXT_QUEUE_x'Size use 128;
   for SCONTEXT_QUEUE_x'Alignment use 8;
   subtype SCONTEXT_QUEUE is SCONTEXT_QUEUE_x;
   type PSCONTEXT_QUEUE is access all SCONTEXT_QUEUE_x;
   function NDRCContextBinding(
      CContext : NDR_CCONTEXT
   ) return RPC_BINDING_HANDLE;
   pragma import (Cpp,NDRCContextBinding,"NDRCContextBinding");
   procedure NDRCContextMarshall(
      CContext : NDR_CCONTEXT;
      pBuff : access Void
   );
   pragma import (Cpp,NDRCContextMarshall,"NDRCContextMarshall");
   procedure NDRCContextUnmarshall(
      pCContext : access NDR_CCONTEXT;
      hBinding : RPC_BINDING_HANDLE;
      pBuff : access Void;
      DataRepresentation : Interfaces.C.unsigned_long
   );
   pragma import (Cpp,NDRCContextUnmarshall,"NDRCContextUnmarshall");
   procedure NDRCContextUnmarshall2(
      pCContext : access NDR_CCONTEXT;
      hBinding : RPC_BINDING_HANDLE;
      pBuff : access Void;
      DataRepresentation : Interfaces.C.unsigned_long
   );
   pragma import (Cpp,NDRCContextUnmarshall2,"NDRCContextUnmarshall2");
   procedure NDRSContextMarshall(
      CContext : NDR_SCONTEXT;
      pBuff : access Void;
      userRunDownIn : NDR_RUNDOWN
   );
   pragma import (Cpp,NDRSContextMarshall,"NDRSContextMarshall");
   function NDRSContextUnmarshall(
      pBuff : access Void;
      DataRepresentation : Interfaces.C.unsigned_long
   ) return NDR_SCONTEXT;
   pragma import (Cpp,NDRSContextUnmarshall,"NDRSContextUnmarshall");
   procedure NDRSContextMarshallEx(
      BindingHandle : RPC_BINDING_HANDLE;
      CContext : NDR_SCONTEXT;
      pBuff : access Void;
      userRunDownIn : NDR_RUNDOWN
   );
   pragma import (Cpp,NDRSContextMarshallEx,"NDRSContextMarshallEx");
   procedure NDRSContextMarshall2(
      BindingHandle : RPC_BINDING_HANDLE;
      CContext : NDR_SCONTEXT;
      pBuff : access Void;
      userRunDownIn : NDR_RUNDOWN;
      CtxGuard : access Void;
      Flags : Interfaces.C.unsigned_long
   );
   pragma import (Cpp,NDRSContextMarshall2,"NDRSContextMarshall2");
   function NDRSContextUnmarshallEx(
      BindingHandle : RPC_BINDING_HANDLE;
      pBuff : access Void;
      DataRepresentation : Interfaces.C.unsigned_long
   ) return NDR_SCONTEXT;
   pragma import (Cpp,NDRSContextUnmarshallEx,"NDRSContextUnmarshallEx");
   function NDRSContextUnmarshall2(
      BindingHandle : RPC_BINDING_HANDLE;
      pBuff : access Void;
      DataRepresentation : Interfaces.C.unsigned_long;
      CtxGuard : access Void;
      Flags : Interfaces.C.unsigned_long
   ) return NDR_SCONTEXT;
   pragma import (Cpp,NDRSContextUnmarshall2,"NDRSContextUnmarshall2");
   procedure RpcSsDestroyClientContext(
      ContextHandle : access LPVOID
   );
   pragma import (Cpp,RpcSsDestroyClientContext,"RpcSsDestroyClientContext");
   subtype error_status_t is Interfaces.C.unsigned_long;
   type MIDL_STUB_MESSAGE_x;
   type MIDL_STUB_DESC_x;
   type FULL_PTR_XLAT_TABLES_x;
   type RPC_BUFPTR is access all Interfaces.C.unsigned_char;
   subtype RPC_LENGTH is Interfaces.C.unsigned_long;
   type EXPR_EVAL is access procedure (p1 : access MIDL_STUB_MESSAGE_x); -- void (struct _MIDL_STUB_MESSAGE *)
   pragma Convention(C,EXPR_EVAL);
   type PFORMAT_STRING is access constant Interfaces.C.unsigned_char;
   type ARRAY_INFO is record
      Dimension : Interfaces.C.Long;
      BufferConformanceMark : access Interfaces.C.unsigned_long;
      BufferVarianceMark : access Interfaces.C.unsigned_long;
      MaxCountArray : access Interfaces.C.unsigned_long;
      OffsetArray : access Interfaces.C.unsigned_long;
      ActualCountArray : access Interfaces.C.unsigned_long;
   end record;
   pragma Convention (C_Pass_By_Copy,ARRAY_INFO);
   for ARRAY_INFO use record
      Dimension at 0 range 0..31;
      BufferConformanceMark at 0 range 64..127;
      BufferVarianceMark at 0 range 128..191;
      MaxCountArray at 0 range 192..255;
      OffsetArray at 0 range 256..319;
      ActualCountArray at 0 range 320..383;
   end record;
   for ARRAY_INFO'Size use 384;
   for ARRAY_INFO'Alignment use 8;
   type PARRAY_INFO is access all ARRAY_INFO;
   type NDR_ASYNC_MESSAGE_x;
   type PNDR_ASYNC_MESSAGE is access all NDR_ASYNC_MESSAGE_x;
   type NDR_CORRELATION_INFO_x;
   type PNDR_CORRELATION_INFO is access all NDR_CORRELATION_INFO_x;
   type MIDL_SYNTAX_INFO_x;
   subtype MIDL_SYNTAX_INFO is MIDL_SYNTAX_INFO_x;
   type PMIDL_SYNTAX_INFO is access all MIDL_SYNTAX_INFO_x;
   type NDR_ALLOC_ALL_NODES_CONTEXT;
   type NDR_POINTER_QUEUE_STATE;
   type NDR_PROC_CONTEXT_x;
   type IRpcChannelBuffer;
   type MIDL_STUB_MESSAGE_x is record
      RpcMsg : PRPC_MESSAGE;
      Buffer : access Interfaces.C.unsigned_char;
      BufferStart : access Interfaces.C.unsigned_char;
      BufferEnd : access Interfaces.C.unsigned_char;
      BufferMark : access Interfaces.C.unsigned_char;
      BufferLength : Interfaces.C.unsigned_long;
      MemorySize : Interfaces.C.unsigned_long;
      Memory : access Interfaces.C.unsigned_char;
      IsClient : Interfaces.C.unsigned_char;
      Pad : Interfaces.C.unsigned_char;
      uFlags2 : Interfaces.C.unsigned_short;
      ReuseBuffer : Interfaces.C.Int;
      pAllocAllNodesContext : access NDR_ALLOC_ALL_NODES_CONTEXT;
      pPointerQueueState : access NDR_POINTER_QUEUE_STATE;
      IgnoreEmbeddedPointers : Interfaces.C.Int;
      PointerBufferMark : access Interfaces.C.unsigned_char;
      CorrDespIncrement : Interfaces.C.unsigned_char;
      uFlags : Interfaces.C.unsigned_char;
      UniquePtrCount : Interfaces.C.unsigned_short;
      MaxCount : ULONG_PTR;
      Offset : Interfaces.C.unsigned_long;
      ActualCount : Interfaces.C.unsigned_long;
      pfnAllocate : access System.Address;
      pfnFree : access System.Address;
      StackTop : access Interfaces.C.unsigned_char;
      pPresentedType : access Interfaces.C.unsigned_char;
      pTransmitType : access Interfaces.C.unsigned_char;
      SavedHandle : handle_t;
      StubDesc : access constant MIDL_STUB_DESC_x;
      FullPtrXlatTables : access FULL_PTR_XLAT_TABLES_x;
      FullPtrRefId : Interfaces.C.unsigned_long;
      PointerLength : Interfaces.C.unsigned_long;
      fInDontFree : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fDontCallFreeInst : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fUnused1 : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fHasReturn : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fHasExtensions : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fHasNewCorrDesc : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fIsIn : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fIsOut : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fIsOicf : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fBufferValid : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fHasMemoryValidateCallback : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fInFree : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fNeedMCCP : Interfaces.C.Extensions.Unsigned_1; -- bit field
      fUnused2 : Interfaces.C.Extensions.Unsigned_3; -- bit field
      fUnused3 : Interfaces.C.Extensions.Unsigned_16; -- bit field
      dwDestContext : Interfaces.C.unsigned_long;
      pvDestContext : access Void;
      SavedContextHandles : access NDR_SCONTEXT;
      ParamNumber : Interfaces.C.Long;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pArrayInfo : PARRAY_INFO;
      SizePtrCountArray : access Interfaces.C.unsigned_long;
      SizePtrOffsetArray : access Interfaces.C.unsigned_long;
      SizePtrLengthArray : access Interfaces.C.unsigned_long;
      pArgQueue : access Void;
      dwStubPhase : Interfaces.C.unsigned_long;
      LowStackMark : access Void;
      pAsyncMsg : PNDR_ASYNC_MESSAGE;
      pCorrInfo : PNDR_CORRELATION_INFO;
      pCorrMemory : access Interfaces.C.unsigned_char;
      pMemoryList : access Void;
      pCSInfo : INT_PTR;
      ConformanceMark : access Interfaces.C.unsigned_char;
      VarianceMark : access Interfaces.C.unsigned_char;
      Unused : INT_PTR;
      pContext_x : access NDR_PROC_CONTEXT_x;
      ContextHandleHash : access Void;
      pUserMarshalList : access Void;
      Reserved51_3 : INT_PTR;
      Reserved51_4 : INT_PTR;
      Reserved51_5 : INT_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_STUB_MESSAGE_x);
   for MIDL_STUB_MESSAGE_x use record
      RpcMsg at 0 range 0..63;
      Buffer at 0 range 64..127;
      BufferStart at 0 range 128..191;
      BufferEnd at 0 range 192..255;
      BufferMark at 0 range 256..319;
      BufferLength at 0 range 320..351;
      MemorySize at 0 range 352..383;
      Memory at 0 range 384..447;
      IsClient at 0 range 448..455;
      Pad at 0 range 456..463;
      uFlags2 at 0 range 464..479;
      ReuseBuffer at 0 range 480..511;
      pAllocAllNodesContext at 0 range 512..575;
      pPointerQueueState at 0 range 576..639;
      IgnoreEmbeddedPointers at 0 range 640..671;
      PointerBufferMark at 0 range 704..767;
      CorrDespIncrement at 0 range 768..775;
      uFlags at 0 range 776..783;
      UniquePtrCount at 0 range 784..799;
      MaxCount at 0 range 832..895;
      Offset at 0 range 896..927;
      ActualCount at 0 range 928..959;
      pfnAllocate at 0 range 960..1023;
      pfnFree at 0 range 1024..1087;
      StackTop at 0 range 1088..1151;
      pPresentedType at 0 range 1152..1215;
      pTransmitType at 0 range 1216..1279;
      SavedHandle at 0 range 1280..1343;
      StubDesc at 0 range 1344..1407;
      FullPtrXlatTables at 0 range 1408..1471;
      FullPtrRefId at 0 range 1472..1503;
      PointerLength at 0 range 1504..1535;
      fInDontFree at 0 range 1536..1536;
      fDontCallFreeInst at 0 range 1537..1537;
      fUnused1 at 0 range 1538..1538;
      fHasReturn at 0 range 1539..1539;
      fHasExtensions at 0 range 1540..1540;
      fHasNewCorrDesc at 0 range 1541..1541;
      fIsIn at 0 range 1542..1542;
      fIsOut at 0 range 1543..1543;
      fIsOicf at 0 range 1544..1544;
      fBufferValid at 0 range 1545..1545;
      fHasMemoryValidateCallback at 0 range 1546..1546;
      fInFree at 0 range 1547..1547;
      fNeedMCCP at 0 range 1548..1548;
      fUnused2 at 0 range 1549..1551;
      fUnused3 at 0 range 1552..1567;
      dwDestContext at 0 range 1568..1599;
      pvDestContext at 0 range 1600..1663;
      SavedContextHandles at 0 range 1664..1727;
      ParamNumber at 0 range 1728..1759;
      pRpcChannelBuffer at 0 range 1792..1855;
      pArrayInfo at 0 range 1856..1919;
      SizePtrCountArray at 0 range 1920..1983;
      SizePtrOffsetArray at 0 range 1984..2047;
      SizePtrLengthArray at 0 range 2048..2111;
      pArgQueue at 0 range 2112..2175;
      dwStubPhase at 0 range 2176..2207;
      LowStackMark at 0 range 2240..2303;
      pAsyncMsg at 0 range 2304..2367;
      pCorrInfo at 0 range 2368..2431;
      pCorrMemory at 0 range 2432..2495;
      pMemoryList at 0 range 2496..2559;
      pCSInfo at 0 range 2560..2623;
      ConformanceMark at 0 range 2624..2687;
      VarianceMark at 0 range 2688..2751;
      Unused at 0 range 2752..2815;
      pContext_x at 0 range 2816..2879;
      ContextHandleHash at 0 range 2880..2943;
      pUserMarshalList at 0 range 2944..3007;
      Reserved51_3 at 0 range 3008..3071;
      Reserved51_4 at 0 range 3072..3135;
      Reserved51_5 at 0 range 3136..3199;
   end record;
   for MIDL_STUB_MESSAGE_x'Size use 3200;
   for MIDL_STUB_MESSAGE_x'Alignment use 8;
   subtype MIDL_STUB_MESSAGE is MIDL_STUB_MESSAGE_x;
   type PMIDL_STUB_MESSAGE is access all MIDL_STUB_MESSAGE_x;
   type GENERIC_BINDING_ROUTINE is access function (p1 : access void) return void; -- void *(void *)
   pragma Convention(C,GENERIC_BINDING_ROUTINE);
   type GENERIC_UNBIND_ROUTINE is access procedure (p1 : access void ; p2 : access Interfaces.C.unsigned_char); -- void (void *, unsigned char *)
   pragma Convention(C,GENERIC_UNBIND_ROUTINE);
   type GENERIC_BINDING_ROUTINE_PAIR_x is record
      pfnBind : GENERIC_BINDING_ROUTINE;
      pfnUnbind : GENERIC_UNBIND_ROUTINE;
   end record;
   pragma Convention (C_Pass_By_Copy,GENERIC_BINDING_ROUTINE_PAIR_x);
   for GENERIC_BINDING_ROUTINE_PAIR_x use record
      pfnBind at 0 range 0..63;
      pfnUnbind at 0 range 64..127;
   end record;
   for GENERIC_BINDING_ROUTINE_PAIR_x'Size use 128;
   for GENERIC_BINDING_ROUTINE_PAIR_x'Alignment use 8;
   subtype GENERIC_BINDING_ROUTINE_PAIR is GENERIC_BINDING_ROUTINE_PAIR_x;
   type PGENERIC_BINDING_ROUTINE_PAIR is access all GENERIC_BINDING_ROUTINE_PAIR_x;
   type GENERIC_BINDING_INFO_x is record
      pObj : access Void;
      Size_x : Interfaces.C.unsigned;
      pfnBind : GENERIC_BINDING_ROUTINE;
      pfnUnbind : GENERIC_UNBIND_ROUTINE;
   end record;
   pragma Convention (C_Pass_By_Copy,GENERIC_BINDING_INFO_x);
   for GENERIC_BINDING_INFO_x use record
      pObj at 0 range 0..63;
      Size_x at 0 range 64..95;
      pfnBind at 0 range 128..191;
      pfnUnbind at 0 range 192..255;
   end record;
   for GENERIC_BINDING_INFO_x'Size use 256;
   for GENERIC_BINDING_INFO_x'Alignment use 8;
   subtype GENERIC_BINDING_INFO is GENERIC_BINDING_INFO_x;
   type PGENERIC_BINDING_INFO is access all GENERIC_BINDING_INFO_x;
   type XMIT_HELPER_ROUTINE is access procedure (p1 : PMIDL_STUB_MESSAGE); -- void (PMIDL_STUB_MESSAGE)
   pragma Convention(C,XMIT_HELPER_ROUTINE);
   type XMIT_ROUTINE_QUINTUPLE_x is record
      pfnTranslateToXmit : XMIT_HELPER_ROUTINE;
      pfnTranslateFromXmit : XMIT_HELPER_ROUTINE;
      pfnFreeXmit : XMIT_HELPER_ROUTINE;
      pfnFreeInst : XMIT_HELPER_ROUTINE;
   end record;
   pragma Convention (C_Pass_By_Copy,XMIT_ROUTINE_QUINTUPLE_x);
   for XMIT_ROUTINE_QUINTUPLE_x use record
      pfnTranslateToXmit at 0 range 0..63;
      pfnTranslateFromXmit at 0 range 64..127;
      pfnFreeXmit at 0 range 128..191;
      pfnFreeInst at 0 range 192..255;
   end record;
   for XMIT_ROUTINE_QUINTUPLE_x'Size use 256;
   for XMIT_ROUTINE_QUINTUPLE_x'Alignment use 8;
   subtype XMIT_ROUTINE_QUINTUPLE is XMIT_ROUTINE_QUINTUPLE_x;
   type PXMIT_ROUTINE_QUINTUPLE is access all XMIT_ROUTINE_QUINTUPLE_x;
   type USER_MARSHAL_SIZING_ROUTINE is access function (p1 : access Interfaces.C.unsigned_long ; p2 : Interfaces.C.unsigned_long ; p3 : access void) return long; -- unsigned long (unsigned long *, unsigned long, void *)
   pragma Convention(C,USER_MARSHAL_SIZING_ROUTINE);
   type USER_MARSHAL_MARSHALLING_ROUTINE is access function (p1 : access Interfaces.C.unsigned_long ; p2 : access Interfaces.C.unsigned_char ; p3 : access void) return char; -- unsigned char *(unsigned long *, unsigned char *, void *)
   pragma Convention(C,USER_MARSHAL_MARSHALLING_ROUTINE);
   type USER_MARSHAL_UNMARSHALLING_ROUTINE is access function (p1 : access Interfaces.C.unsigned_long ; p2 : access Interfaces.C.unsigned_char ; p3 : access void) return char; -- unsigned char *(unsigned long *, unsigned char *, void *)
   pragma Convention(C,USER_MARSHAL_UNMARSHALLING_ROUTINE);
   type USER_MARSHAL_FREEING_ROUTINE is access procedure (p1 : access Interfaces.C.unsigned_long ; p2 : access void); -- void (unsigned long *, void *)
   pragma Convention(C,USER_MARSHAL_FREEING_ROUTINE);
   type USER_MARSHAL_ROUTINE_QUADRUPLE_x is record
      pfnBufferSize : USER_MARSHAL_SIZING_ROUTINE;
      pfnMarshall : USER_MARSHAL_MARSHALLING_ROUTINE;
      pfnUnmarshall : USER_MARSHAL_UNMARSHALLING_ROUTINE;
      pfnFree : USER_MARSHAL_FREEING_ROUTINE;
   end record;
   pragma Convention (C_Pass_By_Copy,USER_MARSHAL_ROUTINE_QUADRUPLE_x);
   for USER_MARSHAL_ROUTINE_QUADRUPLE_x use record
      pfnBufferSize at 0 range 0..63;
      pfnMarshall at 0 range 64..127;
      pfnUnmarshall at 0 range 128..191;
      pfnFree at 0 range 192..255;
   end record;
   for USER_MARSHAL_ROUTINE_QUADRUPLE_x'Size use 256;
   for USER_MARSHAL_ROUTINE_QUADRUPLE_x'Alignment use 8;
   subtype USER_MARSHAL_ROUTINE_QUADRUPLE is USER_MARSHAL_ROUTINE_QUADRUPLE_x;
   type USER_MARSHAL_CB_TYPE_x is (
      USER_MARSHAL_CB_BUFFER_SIZE,
      USER_MARSHAL_CB_MARSHALL,
      USER_MARSHAL_CB_UNMARSHALL,
      USER_MARSHAL_CB_FREE
   );
   for USER_MARSHAL_CB_TYPE_x use (
      USER_MARSHAL_CB_BUFFER_SIZE => 0,
      USER_MARSHAL_CB_MARSHALL => 1,
      USER_MARSHAL_CB_UNMARSHALL => 2,
      USER_MARSHAL_CB_FREE => 3
   );
   for USER_MARSHAL_CB_TYPE_x'Size use 32;
   subtype USER_MARSHAL_CB_TYPE is USER_MARSHAL_CB_TYPE_x;
   type USER_MARSHAL_CB_x is record
      Flags : Interfaces.C.unsigned_long;
      pStubMsg : PMIDL_STUB_MESSAGE;
      pReserve : PFORMAT_STRING;
      Signature : Interfaces.C.unsigned_long;
      CBType : USER_MARSHAL_CB_TYPE;
      pFormat : PFORMAT_STRING;
      pTypeFormat : PFORMAT_STRING;
   end record;
   pragma Convention (C_Pass_By_Copy,USER_MARSHAL_CB_x);
   for USER_MARSHAL_CB_x use record
      Flags at 0 range 0..31;
      pStubMsg at 0 range 64..127;
      pReserve at 0 range 128..191;
      Signature at 0 range 192..223;
      CBType at 0 range 224..255;
      pFormat at 0 range 256..319;
      pTypeFormat at 0 range 320..383;
   end record;
   for USER_MARSHAL_CB_x'Size use 384;
   for USER_MARSHAL_CB_x'Alignment use 8;
   subtype USER_MARSHAL_CB is USER_MARSHAL_CB_x;
   type MALLOC_FREE_STRUCT_x is record
      pfnAllocate : access System.Address;
      pfnFree : access System.Address;
   end record;
   pragma Convention (C_Pass_By_Copy,MALLOC_FREE_STRUCT_x);
   for MALLOC_FREE_STRUCT_x use record
      pfnAllocate at 0 range 0..63;
      pfnFree at 0 range 64..127;
   end record;
   for MALLOC_FREE_STRUCT_x'Size use 128;
   for MALLOC_FREE_STRUCT_x'Alignment use 8;
   subtype MALLOC_FREE_STRUCT is MALLOC_FREE_STRUCT_x;
   type COMM_FAULT_OFFSETS_x is record
      CommOffset : Interfaces.C.Short;
      FaultOffset : Interfaces.C.Short;
   end record;
   pragma Convention (C_Pass_By_Copy,COMM_FAULT_OFFSETS_x);
   for COMM_FAULT_OFFSETS_x use record
      CommOffset at 0 range 0..15;
      FaultOffset at 0 range 16..31;
   end record;
   for COMM_FAULT_OFFSETS_x'Size use 32;
   for COMM_FAULT_OFFSETS_x'Alignment use 2;
   subtype COMM_FAULT_OFFSETS is COMM_FAULT_OFFSETS_x;
   type IDL_CS_CONVERT_x is (
      IDL_CS_NO_CONVERT,
      IDL_CS_IN_PLACE_CONVERT,
      IDL_CS_NEW_BUFFER_CONVERT
   );
   for IDL_CS_CONVERT_x use (
      IDL_CS_NO_CONVERT => 0,
      IDL_CS_IN_PLACE_CONVERT => 1,
      IDL_CS_NEW_BUFFER_CONVERT => 2
   );
   for IDL_CS_CONVERT_x'Size use 32;
   subtype IDL_CS_CONVERT is IDL_CS_CONVERT_x;
   type CS_TYPE_NET_SIZE_ROUTINE is access procedure (p1 : RPC_BINDING_HANDLE ; p2 : Interfaces.C.unsigned_long ; p3 : Interfaces.C.unsigned_long ; p4 : access IDL_CS_CONVERT ; p5 : access Interfaces.C.unsigned_long ; p6 : access error_status_t); -- void (RPC_BINDING_HANDLE, unsigned long, unsigned long, IDL_CS_CONVERT *, unsigned long *, error_status_t *)
   pragma Convention(C,CS_TYPE_NET_SIZE_ROUTINE);
   type CS_TYPE_LOCAL_SIZE_ROUTINE is access procedure (p1 : RPC_BINDING_HANDLE ; p2 : Interfaces.C.unsigned_long ; p3 : Interfaces.C.unsigned_long ; p4 : access IDL_CS_CONVERT ; p5 : access Interfaces.C.unsigned_long ; p6 : access error_status_t); -- void (RPC_BINDING_HANDLE, unsigned long, unsigned long, IDL_CS_CONVERT *, unsigned long *, error_status_t *)
   pragma Convention(C,CS_TYPE_LOCAL_SIZE_ROUTINE);
   type CS_TYPE_TO_NETCS_ROUTINE is access procedure (p1 : RPC_BINDING_HANDLE ; p2 : Interfaces.C.unsigned_long ; p3 : access void ; p4 : Interfaces.C.unsigned_long ; p5 : access byte ; p6 : access Interfaces.C.unsigned_long ; p7 : access error_status_t); -- void (RPC_BINDING_HANDLE, unsigned long, void *, unsigned long, byte *, unsigned long *, error_status_t *)
   pragma Convention(C,CS_TYPE_TO_NETCS_ROUTINE);
   type CS_TYPE_FROM_NETCS_ROUTINE is access procedure (p1 : RPC_BINDING_HANDLE ; p2 : Interfaces.C.unsigned_long ; p3 : access byte ; p4 : Interfaces.C.unsigned_long ; p5 : Interfaces.C.unsigned_long ; p6 : access void ; p7 : access Interfaces.C.unsigned_long ; p8 : access error_status_t); -- void (RPC_BINDING_HANDLE, unsigned long, byte *, unsigned long, unsigned long, void *, unsigned long *, error_status_t *)
   pragma Convention(C,CS_TYPE_FROM_NETCS_ROUTINE);
   type CS_TAG_GETTING_ROUTINE is access procedure (p1 : RPC_BINDING_HANDLE ; p2 : int ; p3 : access Interfaces.C.unsigned_long ; p4 : access Interfaces.C.unsigned_long ; p5 : access Interfaces.C.unsigned_long ; p6 : access error_status_t); -- void (RPC_BINDING_HANDLE, int, unsigned long *, unsigned long *, unsigned long *, error_status_t *)
   pragma Convention(C,CS_TAG_GETTING_ROUTINE);
   procedure RpcCsGetTags(
      hBinding : RPC_BINDING_HANDLE;
      fServerSide : Interfaces.C.Int;
      pulSendingTag : access Interfaces.C.unsigned_long;
      pulDesiredReceivingTag : access Interfaces.C.unsigned_long;
      pulReceivingTag : access Interfaces.C.unsigned_long;
      pStatus : access error_status_t
   );
   pragma import (Cpp,RpcCsGetTags,"RpcCsGetTags");
   type NDR_CS_SIZE_CONVERT_ROUTINES_x is record
      pfnNetSize : CS_TYPE_NET_SIZE_ROUTINE;
      pfnToNetCs : CS_TYPE_TO_NETCS_ROUTINE;
      pfnLocalSize : CS_TYPE_LOCAL_SIZE_ROUTINE;
      pfnFromNetCs : CS_TYPE_FROM_NETCS_ROUTINE;
   end record;
   pragma Convention (C_Pass_By_Copy,NDR_CS_SIZE_CONVERT_ROUTINES_x);
   for NDR_CS_SIZE_CONVERT_ROUTINES_x use record
      pfnNetSize at 0 range 0..63;
      pfnToNetCs at 0 range 64..127;
      pfnLocalSize at 0 range 128..191;
      pfnFromNetCs at 0 range 192..255;
   end record;
   for NDR_CS_SIZE_CONVERT_ROUTINES_x'Size use 256;
   for NDR_CS_SIZE_CONVERT_ROUTINES_x'Alignment use 8;
   subtype NDR_CS_SIZE_CONVERT_ROUTINES is NDR_CS_SIZE_CONVERT_ROUTINES_x;
   type NDR_CS_ROUTINES_x is record
      pSizeConvertRoutines : access NDR_CS_SIZE_CONVERT_ROUTINES;
      pTagGettingRoutines : access CS_TAG_GETTING_ROUTINE;
   end record;
   pragma Convention (C_Pass_By_Copy,NDR_CS_ROUTINES_x);
   for NDR_CS_ROUTINES_x use record
      pSizeConvertRoutines at 0 range 0..63;
      pTagGettingRoutines at 0 range 64..127;
   end record;
   for NDR_CS_ROUTINES_x'Size use 128;
   for NDR_CS_ROUTINES_x'Alignment use 8;
   subtype NDR_CS_ROUTINES is NDR_CS_ROUTINES_x;
   type NDR_EXPR_DESC_x is record
      pOffset : access Interfaces.C.unsigned_short;
      pFormatExpr : PFORMAT_STRING;
   end record;
   pragma Convention (C_Pass_By_Copy,NDR_EXPR_DESC_x);
   for NDR_EXPR_DESC_x use record
      pOffset at 0 range 0..63;
      pFormatExpr at 0 range 64..127;
   end record;
   for NDR_EXPR_DESC_x'Size use 128;
   for NDR_EXPR_DESC_x'Alignment use 8;
   subtype NDR_EXPR_DESC is NDR_EXPR_DESC_x;
   type Anonymous_Record_270 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            pAutoHandle : access handle_t;
         when 1 =>
            pPrimitiveHandle : access handle_t;
         when others => 
            pGenericBindingInfo : PGENERIC_BINDING_INFO;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_270);
   pragma Unchecked_Union (Anonymous_Record_270);
   for Anonymous_Record_270'Size use 64;
   for Anonymous_Record_270'Alignment use 8;
   type MIDL_STUB_DESC_x is record
      RpcInterfaceInformation : access Void;
      pfnAllocate : access System.Address;
      pfnFree : access System.Address;
      field_1 : Anonymous_Record_270;
      apfnNdrRundownRoutines : access constant NDR_RUNDOWN;
      aGenericBindingRoutinePairs : access constant GENERIC_BINDING_ROUTINE_PAIR;
      apfnExprEval : access constant EXPR_EVAL;
      aXmitQuintuple : access constant XMIT_ROUTINE_QUINTUPLE;
      pFormatTypes : access Interfaces.C.unsigned_char;
      fCheckBounds : Interfaces.C.Int;
      Version : Interfaces.C.unsigned_long;
      pMallocFreeStruct : access MALLOC_FREE_STRUCT;
      MIDLVersion : Interfaces.C.Long;
      CommFaultOffsets : access constant COMM_FAULT_OFFSETS;
      aUserMarshalQuadruple : access constant USER_MARSHAL_ROUTINE_QUADRUPLE;
      NotifyRoutineTable : access constant NDR_NOTIFY_ROUTINE;
      mFlags : ULONG_PTR;
      CsRoutineTables : access constant NDR_CS_ROUTINES;
      ProxyServerInfo : access Void;
      pExprInfo : access constant NDR_EXPR_DESC;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_STUB_DESC_x);
   for MIDL_STUB_DESC_x use record
      RpcInterfaceInformation at 0 range 0..63;
      pfnAllocate at 0 range 64..127;
      pfnFree at 0 range 128..191;
      field_1 at 0 range 192..255;
      apfnNdrRundownRoutines at 0 range 256..319;
      aGenericBindingRoutinePairs at 0 range 320..383;
      apfnExprEval at 0 range 384..447;
      aXmitQuintuple at 0 range 448..511;
      pFormatTypes at 0 range 512..575;
      fCheckBounds at 0 range 576..607;
      Version at 0 range 608..639;
      pMallocFreeStruct at 0 range 640..703;
      MIDLVersion at 0 range 704..735;
      CommFaultOffsets at 0 range 768..831;
      aUserMarshalQuadruple at 0 range 832..895;
      NotifyRoutineTable at 0 range 896..959;
      mFlags at 0 range 960..1023;
      CsRoutineTables at 0 range 1024..1087;
      ProxyServerInfo at 0 range 1088..1151;
      pExprInfo at 0 range 1152..1215;
   end record;
   for MIDL_STUB_DESC_x'Size use 1216;
   for MIDL_STUB_DESC_x'Alignment use 8;
   subtype MIDL_STUB_DESC is MIDL_STUB_DESC_x;
   type PMIDL_STUB_DESC is access constant MIDL_STUB_DESC;
   type PMIDL_XMIT_TYPE is access all Void;
   type MIDL_FORMAT_STRING_x is record
      Pad : Interfaces.C.Short;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_FORMAT_STRING_x);
   for MIDL_FORMAT_STRING_x use record
      Pad at 0 range 0..15;
   end record;
   for MIDL_FORMAT_STRING_x'Size use 16;
   for MIDL_FORMAT_STRING_x'Alignment use 2;
   subtype MIDL_FORMAT_STRING is MIDL_FORMAT_STRING_x;
   type STUB_THUNK is access procedure (p1 : PMIDL_STUB_MESSAGE); -- void (PMIDL_STUB_MESSAGE)
   pragma Convention(C,STUB_THUNK);
   type SERVER_ROUTINE is access function  return long; -- long ()
   pragma Convention(C,SERVER_ROUTINE);
   type MIDL_METHOD_PROPERTY_x is record
      Id : Interfaces.C.unsigned_long;
      Value : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_METHOD_PROPERTY_x);
   for MIDL_METHOD_PROPERTY_x use record
      Id at 0 range 0..31;
      Value at 0 range 64..127;
   end record;
   for MIDL_METHOD_PROPERTY_x'Size use 128;
   for MIDL_METHOD_PROPERTY_x'Alignment use 8;
   subtype MIDL_METHOD_PROPERTY is MIDL_METHOD_PROPERTY_x;
   type PMIDL_METHOD_PROPERTY is access all MIDL_METHOD_PROPERTY_x;
   type MIDL_METHOD_PROPERTY_MAP_x is record
      Count : Interfaces.C.unsigned_long;
      Properties : access constant MIDL_METHOD_PROPERTY;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_METHOD_PROPERTY_MAP_x);
   for MIDL_METHOD_PROPERTY_MAP_x use record
      Count at 0 range 0..31;
      Properties at 0 range 64..127;
   end record;
   for MIDL_METHOD_PROPERTY_MAP_x'Size use 128;
   for MIDL_METHOD_PROPERTY_MAP_x'Alignment use 8;
   subtype MIDL_METHOD_PROPERTY_MAP is MIDL_METHOD_PROPERTY_MAP_x;
   type PMIDL_METHOD_PROPERTY_MAP is access all MIDL_METHOD_PROPERTY_MAP_x;
   type MIDL_METHOD_PROPERTY_MAP_Ptr is access all MIDL_METHOD_PROPERTY_MAP; -- Auto Generated Dependancy
   type MIDL_INTERFACE_METHOD_PROPERTIES_x is record
      MethodCount : Interfaces.C.unsigned_short;
      MethodProperties : access constant MIDL_METHOD_PROPERTY_MAP_Ptr;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_INTERFACE_METHOD_PROPERTIES_x);
   for MIDL_INTERFACE_METHOD_PROPERTIES_x use record
      MethodCount at 0 range 0..15;
      MethodProperties at 0 range 64..127;
   end record;
   for MIDL_INTERFACE_METHOD_PROPERTIES_x'Size use 128;
   for MIDL_INTERFACE_METHOD_PROPERTIES_x'Alignment use 8;
   subtype MIDL_INTERFACE_METHOD_PROPERTIES is MIDL_INTERFACE_METHOD_PROPERTIES_x;
   type MIDL_SERVER_INFO_x_x is record
      pStubDesc : PMIDL_STUB_DESC;
      DispatchTable : access constant SERVER_ROUTINE;
      ProcString : PFORMAT_STRING;
      FmtStringOffset : access Interfaces.C.unsigned_short;
      ThunkTable : access constant STUB_THUNK;
      pTransferSyntax : PRPC_SYNTAX_IDENTIFIER;
      nCount : ULONG_PTR;
      pSyntaxInfo : PMIDL_SYNTAX_INFO;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_SERVER_INFO_x_x);
   for MIDL_SERVER_INFO_x_x use record
      pStubDesc at 0 range 0..63;
      DispatchTable at 0 range 64..127;
      ProcString at 0 range 128..191;
      FmtStringOffset at 0 range 192..255;
      ThunkTable at 0 range 256..319;
      pTransferSyntax at 0 range 320..383;
      nCount at 0 range 384..447;
      pSyntaxInfo at 0 range 448..511;
   end record;
   for MIDL_SERVER_INFO_x_x'Size use 512;
   for MIDL_SERVER_INFO_x_x'Alignment use 8;
   subtype MIDL_SERVER_INFO is MIDL_SERVER_INFO_x_x;
   type PMIDL_SERVER_INFO is access all MIDL_SERVER_INFO_x_x;
   type MIDL_STUBLESS_PROXY_INFO_x is record
      pStubDesc : PMIDL_STUB_DESC;
      ProcFormatString : PFORMAT_STRING;
      FormatStringOffset : access Interfaces.C.unsigned_short;
      pTransferSyntax : PRPC_SYNTAX_IDENTIFIER;
      nCount : ULONG_PTR;
      pSyntaxInfo : PMIDL_SYNTAX_INFO;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_STUBLESS_PROXY_INFO_x);
   for MIDL_STUBLESS_PROXY_INFO_x use record
      pStubDesc at 0 range 0..63;
      ProcFormatString at 0 range 64..127;
      FormatStringOffset at 0 range 128..191;
      pTransferSyntax at 0 range 192..255;
      nCount at 0 range 256..319;
      pSyntaxInfo at 0 range 320..383;
   end record;
   for MIDL_STUBLESS_PROXY_INFO_x'Size use 384;
   for MIDL_STUBLESS_PROXY_INFO_x'Alignment use 8;
   subtype MIDL_STUBLESS_PROXY_INFO is MIDL_STUBLESS_PROXY_INFO_x;
   type PMIDL_STUBLESS_PROXY_INFO is access all MIDL_STUBLESS_PROXY_INFO;
   type MIDL_SYNTAX_INFO_x is record
      TransferSyntax : RPC_SYNTAX_IDENTIFIER;
      DispatchTable : access RPC_DISPATCH_TABLE;
      ProcString : PFORMAT_STRING;
      FmtStringOffset : access Interfaces.C.unsigned_short;
      TypeString : PFORMAT_STRING;
      aUserMarshalQuadruple : access Void;
      pMethodProperties : access constant MIDL_INTERFACE_METHOD_PROPERTIES;
      pReserved2 : ULONG_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_SYNTAX_INFO_x);
   for MIDL_SYNTAX_INFO_x use record
      TransferSyntax at 0 range 0..159;
      DispatchTable at 0 range 192..255;
      ProcString at 0 range 256..319;
      FmtStringOffset at 0 range 320..383;
      TypeString at 0 range 384..447;
      aUserMarshalQuadruple at 0 range 448..511;
      pMethodProperties at 0 range 512..575;
      pReserved2 at 0 range 576..639;
   end record;
   for MIDL_SYNTAX_INFO_x'Size use 640;
   for MIDL_SYNTAX_INFO_x'Alignment use 8;
   type PARAM_OFFSETTABLE is access all Interfaces.C.unsigned_short;
   type PPARAM_OFFSETTABLE is access all Interfaces.C.unsigned_short;
   type CLIENT_CALL_RETURN_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Pointer : access Void;
         when others => 
            Simple : LONG_PTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,CLIENT_CALL_RETURN_x);
   pragma Unchecked_Union (CLIENT_CALL_RETURN_x);
   for CLIENT_CALL_RETURN_x'Size use 64;
   for CLIENT_CALL_RETURN_x'Alignment use 8;
   subtype CLIENT_CALL_RETURN is CLIENT_CALL_RETURN_x;
   type XLAT_SIDE is (
      XLAT_SERVER,
      XLAT_CLIENT
   );
   for XLAT_SIDE use (
      XLAT_SERVER => 1,
      XLAT_CLIENT => 2
   );
   for XLAT_SIDE'Size use 32;
   type FULL_PTR_XLAT_TABLES_x is record
      RefIdToPointer : access Void;
      PointerToRefId : access Void;
      NextRefId : Interfaces.C.unsigned_long;
      XlatSide : XLAT_SIDE;
   end record;
   pragma Convention (C_Pass_By_Copy,FULL_PTR_XLAT_TABLES_x);
   for FULL_PTR_XLAT_TABLES_x use record
      RefIdToPointer at 0 range 0..63;
      PointerToRefId at 0 range 64..127;
      NextRefId at 0 range 128..159;
      XlatSide at 0 range 160..191;
   end record;
   for FULL_PTR_XLAT_TABLES_x'Size use 192;
   for FULL_PTR_XLAT_TABLES_x'Alignment use 8;
   subtype FULL_PTR_XLAT_TABLES is FULL_PTR_XLAT_TABLES_x;
   type PFULL_PTR_XLAT_TABLES is access all FULL_PTR_XLAT_TABLES_x;
   type system_handle_t_x is (
      SYSTEM_HANDLE_FILE,
      SYSTEM_HANDLE_SEMAPHORE,
      SYSTEM_HANDLE_EVENT,
      SYSTEM_HANDLE_MUTEX,
      SYSTEM_HANDLE_PROCESS,
      SYSTEM_HANDLE_TOKEN,
      SYSTEM_HANDLE_SECTION,
      SYSTEM_HANDLE_REG_KEY,
      SYSTEM_HANDLE_THREAD,
      SYSTEM_HANDLE_COMPOSITION_OBJECT,
      SYSTEM_HANDLE_SOCKET,
      SYSTEM_HANDLE_JOB,
      SYSTEM_HANDLE_PIPE,
      SYSTEM_HANDLE_INVALID
   );
   for system_handle_t_x use (
      SYSTEM_HANDLE_FILE => 0,
      SYSTEM_HANDLE_SEMAPHORE => 1,
      SYSTEM_HANDLE_EVENT => 2,
      SYSTEM_HANDLE_MUTEX => 3,
      SYSTEM_HANDLE_PROCESS => 4,
      SYSTEM_HANDLE_TOKEN => 5,
      SYSTEM_HANDLE_SECTION => 6,
      SYSTEM_HANDLE_REG_KEY => 7,
      SYSTEM_HANDLE_THREAD => 8,
      SYSTEM_HANDLE_COMPOSITION_OBJECT => 9,
      SYSTEM_HANDLE_SOCKET => 10,
      SYSTEM_HANDLE_JOB => 11,
      SYSTEM_HANDLE_PIPE => 12,
      SYSTEM_HANDLE_INVALID => 255
   );
   for system_handle_t_x'Size use 32;
   subtype system_handle_t is system_handle_t_x;
   type MIDL_INTERCEPTION_INFO_x is record
      Version : Interfaces.C.unsigned_long;
      ProcString : PFORMAT_STRING;
      ProcFormatOffsetTable : access Interfaces.C.unsigned_short;
      ProcCount : Interfaces.C.unsigned_long;
      TypeString : PFORMAT_STRING;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_INTERCEPTION_INFO_x);
   for MIDL_INTERCEPTION_INFO_x use record
      Version at 0 range 0..31;
      ProcString at 0 range 64..127;
      ProcFormatOffsetTable at 0 range 128..191;
      ProcCount at 0 range 192..223;
      TypeString at 0 range 256..319;
   end record;
   for MIDL_INTERCEPTION_INFO_x'Size use 320;
   for MIDL_INTERCEPTION_INFO_x'Alignment use 8;
   subtype MIDL_INTERCEPTION_INFO is MIDL_INTERCEPTION_INFO_x;
   type PMIDL_INTERCEPTION_INFO is access all MIDL_INTERCEPTION_INFO_x;
   type MIDL_WINRT_TYPE_SERIALIZATION_INFO_x is record
      Version : Interfaces.C.unsigned_long;
      TypeFormatString : PFORMAT_STRING;
      FormatStringSize : Interfaces.C.unsigned_short;
      TypeOffset : Interfaces.C.unsigned_short;
      StubDesc : PMIDL_STUB_DESC;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_WINRT_TYPE_SERIALIZATION_INFO_x);
   for MIDL_WINRT_TYPE_SERIALIZATION_INFO_x use record
      Version at 0 range 0..31;
      TypeFormatString at 0 range 64..127;
      FormatStringSize at 0 range 128..143;
      TypeOffset at 0 range 144..159;
      StubDesc at 0 range 192..255;
   end record;
   for MIDL_WINRT_TYPE_SERIALIZATION_INFO_x'Size use 256;
   for MIDL_WINRT_TYPE_SERIALIZATION_INFO_x'Alignment use 8;
   subtype MIDL_WINRT_TYPE_SERIALIZATION_INFO is MIDL_WINRT_TYPE_SERIALIZATION_INFO_x;
   type PMIDL_WINRT_TYPE_SERIALIZATION_INFO is access all MIDL_WINRT_TYPE_SERIALIZATION_INFO_x;
   type MIDL_SYNTAX_INFO_Ptr is access all MIDL_SYNTAX_INFO; -- Auto Generated Dependancy
   function NdrClientGetSupportedSyntaxes(
      pInf : access RPC_CLIENT_INTERFACE;
      pCount : access Interfaces.C.unsigned_long;
      pArr : access MIDL_SYNTAX_INFO_Ptr
   ) return RPC_STATUS;
   pragma import (Cpp,NdrClientGetSupportedSyntaxes,"NdrClientGetSupportedSyntaxes");
   function NdrServerGetSupportedSyntaxes(
      pInf : access RPC_SERVER_INTERFACE;
      pCount : access Interfaces.C.unsigned_long;
      pArr : access MIDL_SYNTAX_INFO_Ptr;
      pPreferSyntaxIndex : access Interfaces.C.unsigned_long
   ) return RPC_STATUS;
   pragma import (Cpp,NdrServerGetSupportedSyntaxes,"NdrServerGetSupportedSyntaxes");
   procedure NdrSimpleTypeMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      FormatChar : Interfaces.C.unsigned_char
   );
   pragma import (Cpp,NdrSimpleTypeMarshall,"NdrSimpleTypeMarshall");
   function NdrPointerMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrPointerMarshall,"NdrPointerMarshall");
   function NdrCsArrayMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrCsArrayMarshall,"NdrCsArrayMarshall");
   function NdrCsTagMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrCsTagMarshall,"NdrCsTagMarshall");
   function NdrSimpleStructMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrSimpleStructMarshall,"NdrSimpleStructMarshall");
   function NdrConformantStructMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrConformantStructMarshall,"NdrConformantStructMarshall");
   function NdrConformantVaryingStructMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrConformantVaryingStructMarshall,"NdrConformantVaryingStructMarshall");
   function NdrComplexStructMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrComplexStructMarshall,"NdrComplexStructMarshall");
   function NdrFixedArrayMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrFixedArrayMarshall,"NdrFixedArrayMarshall");
   function NdrConformantArrayMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrConformantArrayMarshall,"NdrConformantArrayMarshall");
   function NdrConformantVaryingArrayMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrConformantVaryingArrayMarshall,"NdrConformantVaryingArrayMarshall");
   function NdrVaryingArrayMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrVaryingArrayMarshall,"NdrVaryingArrayMarshall");
   function NdrComplexArrayMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrComplexArrayMarshall,"NdrComplexArrayMarshall");
   function NdrNonConformantStringMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrNonConformantStringMarshall,"NdrNonConformantStringMarshall");
   function NdrConformantStringMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrConformantStringMarshall,"NdrConformantStringMarshall");
   function NdrEncapsulatedUnionMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrEncapsulatedUnionMarshall,"NdrEncapsulatedUnionMarshall");
   function NdrNonEncapsulatedUnionMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrNonEncapsulatedUnionMarshall,"NdrNonEncapsulatedUnionMarshall");
   function NdrByteCountPointerMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrByteCountPointerMarshall,"NdrByteCountPointerMarshall");
   function NdrXmitOrRepAsMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrXmitOrRepAsMarshall,"NdrXmitOrRepAsMarshall");
   function NdrUserMarshalMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrUserMarshalMarshall,"NdrUserMarshalMarshall");
   function NdrInterfacePointerMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   ) return access UCHAR;
   pragma import (Cpp,NdrInterfacePointerMarshall,"NdrInterfacePointerMarshall");
   procedure NdrClientContextMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ContextHandle : NDR_CCONTEXT;
      fCheck : Interfaces.C.Int
   );
   pragma import (Cpp,NdrClientContextMarshall,"NdrClientContextMarshall");
   procedure NdrServerContextMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ContextHandle : NDR_SCONTEXT;
      RundownRoutine : NDR_RUNDOWN
   );
   pragma import (Cpp,NdrServerContextMarshall,"NdrServerContextMarshall");
   procedure NdrServerContextNewMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ContextHandle : NDR_SCONTEXT;
      RundownRoutine : NDR_RUNDOWN;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrServerContextNewMarshall,"NdrServerContextNewMarshall");
   procedure NdrSimpleTypeUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      FormatChar : Interfaces.C.unsigned_char
   );
   pragma import (Cpp,NdrSimpleTypeUnmarshall,"NdrSimpleTypeUnmarshall");
   function NdrCsArrayUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrCsArrayUnmarshall,"NdrCsArrayUnmarshall");
   function NdrCsTagUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrCsTagUnmarshall,"NdrCsTagUnmarshall");
   function NdrRangeUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrRangeUnmarshall,"NdrRangeUnmarshall");
   procedure NdrCorrelationInitialize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Void;
      CacheSize : Interfaces.C.unsigned_long;
      flags : Interfaces.C.unsigned_long
   );
   pragma import (Cpp,NdrCorrelationInitialize,"NdrCorrelationInitialize");
   procedure NdrCorrelationPass(
      pStubMsg : PMIDL_STUB_MESSAGE
   );
   pragma import (Cpp,NdrCorrelationPass,"NdrCorrelationPass");
   procedure NdrCorrelationFree(
      pStubMsg : PMIDL_STUB_MESSAGE
   );
   pragma import (Cpp,NdrCorrelationFree,"NdrCorrelationFree");
   function NdrPointerUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrPointerUnmarshall,"NdrPointerUnmarshall");
   function NdrSimpleStructUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrSimpleStructUnmarshall,"NdrSimpleStructUnmarshall");
   function NdrConformantStructUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrConformantStructUnmarshall,"NdrConformantStructUnmarshall");
   function NdrConformantVaryingStructUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrConformantVaryingStructUnmarshall,"NdrConformantVaryingStructUnmarshall");
   function NdrComplexStructUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrComplexStructUnmarshall,"NdrComplexStructUnmarshall");
   function NdrFixedArrayUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrFixedArrayUnmarshall,"NdrFixedArrayUnmarshall");
   function NdrConformantArrayUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrConformantArrayUnmarshall,"NdrConformantArrayUnmarshall");
   function NdrConformantVaryingArrayUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrConformantVaryingArrayUnmarshall,"NdrConformantVaryingArrayUnmarshall");
   function NdrVaryingArrayUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrVaryingArrayUnmarshall,"NdrVaryingArrayUnmarshall");
   function NdrComplexArrayUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrComplexArrayUnmarshall,"NdrComplexArrayUnmarshall");
   function NdrNonConformantStringUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrNonConformantStringUnmarshall,"NdrNonConformantStringUnmarshall");
   function NdrConformantStringUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrConformantStringUnmarshall,"NdrConformantStringUnmarshall");
   function NdrEncapsulatedUnionUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrEncapsulatedUnionUnmarshall,"NdrEncapsulatedUnionUnmarshall");
   function NdrNonEncapsulatedUnionUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrNonEncapsulatedUnionUnmarshall,"NdrNonEncapsulatedUnionUnmarshall");
   function NdrByteCountPointerUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrByteCountPointerUnmarshall,"NdrByteCountPointerUnmarshall");
   function NdrXmitOrRepAsUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrXmitOrRepAsUnmarshall,"NdrXmitOrRepAsUnmarshall");
   function NdrUserMarshalUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrUserMarshalUnmarshall,"NdrUserMarshalUnmarshall");
   function NdrInterfacePointerUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access PUINT8;
      pFormat : PFORMAT_STRING;
      fMustAlloc : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrInterfacePointerUnmarshall,"NdrInterfacePointerUnmarshall");
   procedure NdrClientContextUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pContextHandle : access NDR_CCONTEXT;
      BindHandle : RPC_BINDING_HANDLE
   );
   pragma import (Cpp,NdrClientContextUnmarshall,"NdrClientContextUnmarshall");
   function NdrServerContextUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE
   ) return NDR_SCONTEXT;
   pragma import (Cpp,NdrServerContextUnmarshall,"NdrServerContextUnmarshall");
   function NdrContextHandleInitialize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return NDR_SCONTEXT;
   pragma import (Cpp,NdrContextHandleInitialize,"NdrContextHandleInitialize");
   function NdrServerContextNewUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return NDR_SCONTEXT;
   pragma import (Cpp,NdrServerContextNewUnmarshall,"NdrServerContextNewUnmarshall");
   procedure NdrPointerBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrPointerBufferSize,"NdrPointerBufferSize");
   procedure NdrCsArrayBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrCsArrayBufferSize,"NdrCsArrayBufferSize");
   procedure NdrCsTagBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrCsTagBufferSize,"NdrCsTagBufferSize");
   procedure NdrSimpleStructBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrSimpleStructBufferSize,"NdrSimpleStructBufferSize");
   procedure NdrConformantStructBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrConformantStructBufferSize,"NdrConformantStructBufferSize");
   procedure NdrConformantVaryingStructBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrConformantVaryingStructBufferSize,"NdrConformantVaryingStructBufferSize");
   procedure NdrComplexStructBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrComplexStructBufferSize,"NdrComplexStructBufferSize");
   procedure NdrFixedArrayBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrFixedArrayBufferSize,"NdrFixedArrayBufferSize");
   procedure NdrConformantArrayBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrConformantArrayBufferSize,"NdrConformantArrayBufferSize");
   procedure NdrConformantVaryingArrayBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrConformantVaryingArrayBufferSize,"NdrConformantVaryingArrayBufferSize");
   procedure NdrVaryingArrayBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrVaryingArrayBufferSize,"NdrVaryingArrayBufferSize");
   procedure NdrComplexArrayBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrComplexArrayBufferSize,"NdrComplexArrayBufferSize");
   procedure NdrConformantStringBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrConformantStringBufferSize,"NdrConformantStringBufferSize");
   procedure NdrNonConformantStringBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrNonConformantStringBufferSize,"NdrNonConformantStringBufferSize");
   procedure NdrEncapsulatedUnionBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrEncapsulatedUnionBufferSize,"NdrEncapsulatedUnionBufferSize");
   procedure NdrNonEncapsulatedUnionBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrNonEncapsulatedUnionBufferSize,"NdrNonEncapsulatedUnionBufferSize");
   procedure NdrByteCountPointerBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrByteCountPointerBufferSize,"NdrByteCountPointerBufferSize");
   procedure NdrXmitOrRepAsBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrXmitOrRepAsBufferSize,"NdrXmitOrRepAsBufferSize");
   procedure NdrUserMarshalBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrUserMarshalBufferSize,"NdrUserMarshalBufferSize");
   procedure NdrInterfacePointerBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrInterfacePointerBufferSize,"NdrInterfacePointerBufferSize");
   procedure NdrContextHandleSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrContextHandleSize,"NdrContextHandleSize");
   function NdrPointerMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrPointerMemorySize,"NdrPointerMemorySize");
   function NdrContextHandleMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrContextHandleMemorySize,"NdrContextHandleMemorySize");
   function NdrCsArrayMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrCsArrayMemorySize,"NdrCsArrayMemorySize");
   function NdrCsTagMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrCsTagMemorySize,"NdrCsTagMemorySize");
   function NdrSimpleStructMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrSimpleStructMemorySize,"NdrSimpleStructMemorySize");
   function NdrConformantStructMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrConformantStructMemorySize,"NdrConformantStructMemorySize");
   function NdrConformantVaryingStructMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrConformantVaryingStructMemorySize,"NdrConformantVaryingStructMemorySize");
   function NdrComplexStructMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrComplexStructMemorySize,"NdrComplexStructMemorySize");
   function NdrFixedArrayMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrFixedArrayMemorySize,"NdrFixedArrayMemorySize");
   function NdrConformantArrayMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrConformantArrayMemorySize,"NdrConformantArrayMemorySize");
   function NdrConformantVaryingArrayMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrConformantVaryingArrayMemorySize,"NdrConformantVaryingArrayMemorySize");
   function NdrVaryingArrayMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrVaryingArrayMemorySize,"NdrVaryingArrayMemorySize");
   function NdrComplexArrayMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrComplexArrayMemorySize,"NdrComplexArrayMemorySize");
   function NdrConformantStringMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrConformantStringMemorySize,"NdrConformantStringMemorySize");
   function NdrNonConformantStringMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrNonConformantStringMemorySize,"NdrNonConformantStringMemorySize");
   function NdrEncapsulatedUnionMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrEncapsulatedUnionMemorySize,"NdrEncapsulatedUnionMemorySize");
   function NdrNonEncapsulatedUnionMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrNonEncapsulatedUnionMemorySize,"NdrNonEncapsulatedUnionMemorySize");
   function NdrXmitOrRepAsMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrXmitOrRepAsMemorySize,"NdrXmitOrRepAsMemorySize");
   function NdrUserMarshalMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrUserMarshalMemorySize,"NdrUserMarshalMemorySize");
   function NdrInterfacePointerMemorySize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,NdrInterfacePointerMemorySize,"NdrInterfacePointerMemorySize");
   procedure NdrPointerFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrPointerFree,"NdrPointerFree");
   procedure NdrCsArrayFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrCsArrayFree,"NdrCsArrayFree");
   procedure NdrSimpleStructFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrSimpleStructFree,"NdrSimpleStructFree");
   procedure NdrConformantStructFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrConformantStructFree,"NdrConformantStructFree");
   procedure NdrConformantVaryingStructFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrConformantVaryingStructFree,"NdrConformantVaryingStructFree");
   procedure NdrComplexStructFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrComplexStructFree,"NdrComplexStructFree");
   procedure NdrFixedArrayFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrFixedArrayFree,"NdrFixedArrayFree");
   procedure NdrConformantArrayFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrConformantArrayFree,"NdrConformantArrayFree");
   procedure NdrConformantVaryingArrayFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrConformantVaryingArrayFree,"NdrConformantVaryingArrayFree");
   procedure NdrVaryingArrayFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrVaryingArrayFree,"NdrVaryingArrayFree");
   procedure NdrComplexArrayFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrComplexArrayFree,"NdrComplexArrayFree");
   procedure NdrEncapsulatedUnionFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrEncapsulatedUnionFree,"NdrEncapsulatedUnionFree");
   procedure NdrNonEncapsulatedUnionFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrNonEncapsulatedUnionFree,"NdrNonEncapsulatedUnionFree");
   procedure NdrByteCountPointerFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrByteCountPointerFree,"NdrByteCountPointerFree");
   procedure NdrXmitOrRepAsFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrXmitOrRepAsFree,"NdrXmitOrRepAsFree");
   procedure NdrUserMarshalFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrUserMarshalFree,"NdrUserMarshalFree");
   procedure NdrInterfacePointerFree(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Interfaces.C.unsigned_char;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrInterfacePointerFree,"NdrInterfacePointerFree");
   procedure NdrConvert2(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING;
      NumberParams : Interfaces.C.Long
   );
   pragma import (Cpp,NdrConvert2,"NdrConvert2");
   procedure NdrConvert(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrConvert,"NdrConvert");
   function NdrUserMarshalSimpleTypeConvert(
      pFlags : access Interfaces.C.unsigned_long;
      pBuffer : access Interfaces.C.unsigned_char;
      FormatChar : Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrUserMarshalSimpleTypeConvert,"NdrUserMarshalSimpleTypeConvert");
   procedure NdrClientInitializeNew(
      pRpcMsg : PRPC_MESSAGE;
      pStubMsg : PMIDL_STUB_MESSAGE;
      pStubDescriptor : PMIDL_STUB_DESC;
      ProcNum : Interfaces.C.unsigned
   );
   pragma import (Cpp,NdrClientInitializeNew,"NdrClientInitializeNew");
   function NdrServerInitializeNew(
      pRpcMsg : PRPC_MESSAGE;
      pStubMsg : PMIDL_STUB_MESSAGE;
      pStubDescriptor : PMIDL_STUB_DESC
   ) return access UCHAR;
   pragma import (Cpp,NdrServerInitializeNew,"NdrServerInitializeNew");
   procedure NdrServerInitializePartial(
      pRpcMsg : PRPC_MESSAGE;
      pStubMsg : PMIDL_STUB_MESSAGE;
      pStubDescriptor : PMIDL_STUB_DESC;
      RequestedBufferSize : Interfaces.C.unsigned_long
   );
   pragma import (Cpp,NdrServerInitializePartial,"NdrServerInitializePartial");
   procedure NdrClientInitialize(
      pRpcMsg : PRPC_MESSAGE;
      pStubMsg : PMIDL_STUB_MESSAGE;
      pStubDescriptor : PMIDL_STUB_DESC;
      ProcNum : Interfaces.C.unsigned
   );
   pragma import (Cpp,NdrClientInitialize,"NdrClientInitialize");
   function NdrServerInitialize(
      pRpcMsg : PRPC_MESSAGE;
      pStubMsg : PMIDL_STUB_MESSAGE;
      pStubDescriptor : PMIDL_STUB_DESC
   ) return access UCHAR;
   pragma import (Cpp,NdrServerInitialize,"NdrServerInitialize");
   function NdrServerInitializeUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pStubDescriptor : PMIDL_STUB_DESC;
      pRpcMsg : PRPC_MESSAGE
   ) return access UCHAR;
   pragma import (Cpp,NdrServerInitializeUnmarshall,"NdrServerInitializeUnmarshall");
   procedure NdrServerInitializeMarshall(
      pRpcMsg : PRPC_MESSAGE;
      pStubMsg : PMIDL_STUB_MESSAGE
   );
   pragma import (Cpp,NdrServerInitializeMarshall,"NdrServerInitializeMarshall");
   function NdrGetBuffer(
      pStubMsg : PMIDL_STUB_MESSAGE;
      BufferLength : Interfaces.C.unsigned_long;
      Handle_x : RPC_BINDING_HANDLE
   ) return access UCHAR;
   pragma import (Cpp,NdrGetBuffer,"NdrGetBuffer");
   function NdrNsGetBuffer(
      pStubMsg : PMIDL_STUB_MESSAGE;
      BufferLength : Interfaces.C.unsigned_long;
      Handle_x : RPC_BINDING_HANDLE
   ) return access UCHAR;
   pragma import (Cpp,NdrNsGetBuffer,"NdrNsGetBuffer");
   function NdrSendReceive(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pBufferEnd : access Interfaces.C.unsigned_char
   ) return access UCHAR;
   pragma import (Cpp,NdrSendReceive,"NdrSendReceive");
   function NdrNsSendReceive(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pBufferEnd : access Interfaces.C.unsigned_char;
      pAutoHandle : access RPC_BINDING_HANDLE
   ) return access UCHAR;
   pragma import (Cpp,NdrNsSendReceive,"NdrNsSendReceive");
   procedure NdrFreeBuffer(
      pStubMsg : PMIDL_STUB_MESSAGE
   );
   pragma import (Cpp,NdrFreeBuffer,"NdrFreeBuffer");
   function NdrGetDcomProtocolVersion(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pVersion : access RPC_VERSION
   ) return HRESULT;
   pragma import (Cpp,NdrGetDcomProtocolVersion,"NdrGetDcomProtocolVersion");
   -- NdrClientCall2(...); -- variadic function not supported
   -- NdrClientCall(...); -- variadic function not supported
   -- NdrAsyncClientCall(...); -- variadic function not supported
   -- NdrDcomAsyncClientCall(...); -- variadic function not supported
   type STUB_PHASE is (
      STUB_UNMARSHAL,
      STUB_CALL_SERVER,
      STUB_MARSHAL,
      STUB_CALL_SERVER_NO_HRESULT
   );
   for STUB_PHASE use (
      STUB_UNMARSHAL => 0,
      STUB_CALL_SERVER => 1,
      STUB_MARSHAL => 2,
      STUB_CALL_SERVER_NO_HRESULT => 3
   );
   for STUB_PHASE'Size use 32;
   type PROXY_PHASE is (
      PROXY_CALCSIZE,
      PROXY_GETBUFFER,
      PROXY_MARSHAL,
      PROXY_SENDRECEIVE,
      PROXY_UNMARSHAL
   );
   for PROXY_PHASE use (
      PROXY_CALCSIZE => 0,
      PROXY_GETBUFFER => 1,
      PROXY_MARSHAL => 2,
      PROXY_SENDRECEIVE => 3,
      PROXY_UNMARSHAL => 4
   );
   for PROXY_PHASE'Size use 32;
   type IRpcStubBuffer;
   procedure NdrAsyncServerCall(
      pRpcMsg : PRPC_MESSAGE
   );
   pragma import (Cpp,NdrAsyncServerCall,"NdrAsyncServerCall");
   function NdrAsyncStubCall(
      pThis : access IRpcStubBuffer'Class;
      pChannel : access IRpcChannelBuffer'Class;
      pRpcMsg : PRPC_MESSAGE;
      pdwStubPhase : access Interfaces.C.unsigned_long
   ) return Interfaces.C.Long;
   pragma import (Cpp,NdrAsyncStubCall,"NdrAsyncStubCall");
   function NdrDcomAsyncStubCall(
      pThis : access IRpcStubBuffer'Class;
      pChannel : access IRpcChannelBuffer'Class;
      pRpcMsg : PRPC_MESSAGE;
      pdwStubPhase : access Interfaces.C.unsigned_long
   ) return Interfaces.C.Long;
   pragma import (Cpp,NdrDcomAsyncStubCall,"NdrDcomAsyncStubCall");
   function NdrStubCall2(
      pThis : access Void;
      pChannel : access Void;
      pRpcMsg : PRPC_MESSAGE;
      pdwStubPhase : access Interfaces.C.unsigned_long
   ) return Interfaces.C.Long;
   pragma import (Cpp,NdrStubCall2,"NdrStubCall2");
   procedure NdrServerCall2(
      pRpcMsg : PRPC_MESSAGE
   );
   pragma import (Cpp,NdrServerCall2,"NdrServerCall2");
   function NdrStubCall(
      pThis : access Void;
      pChannel : access Void;
      pRpcMsg : PRPC_MESSAGE;
      pdwStubPhase : access Interfaces.C.unsigned_long
   ) return Interfaces.C.Long;
   pragma import (Cpp,NdrStubCall,"NdrStubCall");
   procedure NdrServerCall(
      pRpcMsg : PRPC_MESSAGE
   );
   pragma import (Cpp,NdrServerCall,"NdrServerCall");
   function NdrServerUnmarshall(
      pChannel : access Void;
      pRpcMsg : PRPC_MESSAGE;
      pStubMsg : PMIDL_STUB_MESSAGE;
      pStubDescriptor : PMIDL_STUB_DESC;
      pFormat : PFORMAT_STRING;
      pParamList : access Void
   ) return Interfaces.C.Int;
   pragma import (Cpp,NdrServerUnmarshall,"NdrServerUnmarshall");
   procedure NdrServerMarshall(
      pThis : access Void;
      pChannel : access Void;
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrServerMarshall,"NdrServerMarshall");
   function NdrMapCommAndFaultStatus(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pCommStatus : access Interfaces.C.unsigned_long;
      pFaultStatus : access Interfaces.C.unsigned_long;
      Status : RPC_STATUS
   ) return RPC_STATUS;
   pragma import (Cpp,NdrMapCommAndFaultStatus,"NdrMapCommAndFaultStatus");
   type RPC_SS_THREAD_HANDLE is access all Void;
   subtype RPC_CLIENT_ALLOC is System.Address; -- [Note - CXType_FunctionProto] Profile - void *(size_t)
   subtype RPC_CLIENT_FREE is System.Address; -- [Note - CXType_FunctionProto] Profile - void (void *)
   procedure RpcSsAllocate(
      Size_x : size_t
   );
   pragma import (Cpp,RpcSsAllocate,"RpcSsAllocate");
   procedure RpcSsDisableAllocate;
   pragma import (Cpp,RpcSsDisableAllocate,"RpcSsDisableAllocate");
   procedure RpcSsEnableAllocate;
   pragma import (Cpp,RpcSsEnableAllocate,"RpcSsEnableAllocate");
   procedure RpcSsFree(
      NodeToFree : access Void
   );
   pragma import (Cpp,RpcSsFree,"RpcSsFree");
   function RpcSsGetThreadHandle return RPC_SS_THREAD_HANDLE;
   pragma import (Cpp,RpcSsGetThreadHandle,"RpcSsGetThreadHandle");
   procedure RpcSsSetClientAllocFree(
      ClientAlloc : access Void;
      ClientFree : access Void
   );
   pragma import (Cpp,RpcSsSetClientAllocFree,"RpcSsSetClientAllocFree");
   procedure RpcSsSetThreadHandle(
      Id : RPC_SS_THREAD_HANDLE
   );
   pragma import (Cpp,RpcSsSetThreadHandle,"RpcSsSetThreadHandle");
   procedure RpcSsSwapClientAllocFree(
      ClientAlloc : access Void;
      ClientFree : access Void;
      OldClientAlloc : access LPVOID;
      OldClientFree : access LPVOID
   );
   pragma import (Cpp,RpcSsSwapClientAllocFree,"RpcSsSwapClientAllocFree");
   procedure RpcSmAllocate(
      Size_x : size_t;
      pStatus : access RPC_STATUS
   );
   pragma import (Cpp,RpcSmAllocate,"RpcSmAllocate");
   function RpcSmClientFree(
      pNodeToFree : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcSmClientFree,"RpcSmClientFree");
   function RpcSmDestroyClientContext(
      ContextHandle : access LPVOID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcSmDestroyClientContext,"RpcSmDestroyClientContext");
   function RpcSmDisableAllocate return RPC_STATUS;
   pragma import (Cpp,RpcSmDisableAllocate,"RpcSmDisableAllocate");
   function RpcSmEnableAllocate return RPC_STATUS;
   pragma import (Cpp,RpcSmEnableAllocate,"RpcSmEnableAllocate");
   function RpcSmFree(
      NodeToFree : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcSmFree,"RpcSmFree");
   function RpcSmGetThreadHandle(
      pStatus : access RPC_STATUS
   ) return RPC_SS_THREAD_HANDLE;
   pragma import (Cpp,RpcSmGetThreadHandle,"RpcSmGetThreadHandle");
   function RpcSmSetClientAllocFree(
      ClientAlloc : access Void;
      ClientFree : access Void
   ) return RPC_STATUS;
   pragma import (Cpp,RpcSmSetClientAllocFree,"RpcSmSetClientAllocFree");
   function RpcSmSetThreadHandle(
      Id : RPC_SS_THREAD_HANDLE
   ) return RPC_STATUS;
   pragma import (Cpp,RpcSmSetThreadHandle,"RpcSmSetThreadHandle");
   function RpcSmSwapClientAllocFree(
      ClientAlloc : access Void;
      ClientFree : access Void;
      OldClientAlloc : access LPVOID;
      OldClientFree : access LPVOID
   ) return RPC_STATUS;
   pragma import (Cpp,RpcSmSwapClientAllocFree,"RpcSmSwapClientAllocFree");
   procedure NdrRpcSsEnableAllocate(
      pMessage : PMIDL_STUB_MESSAGE
   );
   pragma import (Cpp,NdrRpcSsEnableAllocate,"NdrRpcSsEnableAllocate");
   procedure NdrRpcSsDisableAllocate(
      pMessage : PMIDL_STUB_MESSAGE
   );
   pragma import (Cpp,NdrRpcSsDisableAllocate,"NdrRpcSsDisableAllocate");
   procedure NdrRpcSmSetClientToOsf(
      pMessage : PMIDL_STUB_MESSAGE
   );
   pragma import (Cpp,NdrRpcSmSetClientToOsf,"NdrRpcSmSetClientToOsf");
   procedure NdrRpcSmClientAllocate(
      Size_x : size_t
   );
   pragma import (Cpp,NdrRpcSmClientAllocate,"NdrRpcSmClientAllocate");
   procedure NdrRpcSmClientFree(
      NodeToFree : access Void
   );
   pragma import (Cpp,NdrRpcSmClientFree,"NdrRpcSmClientFree");
   procedure NdrRpcSsDefaultAllocate(
      Size_x : size_t
   );
   pragma import (Cpp,NdrRpcSsDefaultAllocate,"NdrRpcSsDefaultAllocate");
   procedure NdrRpcSsDefaultFree(
      NodeToFree : access Void
   );
   pragma import (Cpp,NdrRpcSsDefaultFree,"NdrRpcSsDefaultFree");
   function NdrFullPointerXlatInit(
      NumberOfPointers : Interfaces.C.unsigned_long;
      XlatSide : XLAT_SIDE
   ) return PFULL_PTR_XLAT_TABLES;
   pragma import (Cpp,NdrFullPointerXlatInit,"NdrFullPointerXlatInit");
   procedure NdrFullPointerXlatFree(
      pXlatTables : PFULL_PTR_XLAT_TABLES
   );
   pragma import (Cpp,NdrFullPointerXlatFree,"NdrFullPointerXlatFree");
   procedure NdrAllocate(
      pStubMsg : PMIDL_STUB_MESSAGE;
      Len : size_t
   );
   pragma import (Cpp,NdrAllocate,"NdrAllocate");
   procedure NdrClearOutParameters(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pFormat : PFORMAT_STRING;
      ArgAddr : access Void
   );
   pragma import (Cpp,NdrClearOutParameters,"NdrClearOutParameters");
   procedure NdrOleAllocate(
      Size_x : size_t
   );
   pragma import (Cpp,NdrOleAllocate,"NdrOleAllocate");
   procedure NdrOleFree(
      NodeToFree : access Void
   );
   pragma import (Cpp,NdrOleFree,"NdrOleFree");
   type NDR_USER_MARSHAL_INFO_LEVEL1_x_Reserved_Array is array(1..5) of ULONG_PTR; -- Auto Generated Dependancy
   type NDR_USER_MARSHAL_INFO_LEVEL1_x is record
      Buffer : access Void;
      BufferSize : Interfaces.C.unsigned_long;
      pfnAllocate : access System.Address;
      pfnFree : access System.Address;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      Reserved : NDR_USER_MARSHAL_INFO_LEVEL1_x_Reserved_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,NDR_USER_MARSHAL_INFO_LEVEL1_x);
   for NDR_USER_MARSHAL_INFO_LEVEL1_x use record
      Buffer at 0 range 0..63;
      BufferSize at 0 range 64..95;
      pfnAllocate at 0 range 128..191;
      pfnFree at 0 range 192..255;
      pRpcChannelBuffer at 0 range 256..319;
      Reserved at 0 range 320..639;
   end record;
   for NDR_USER_MARSHAL_INFO_LEVEL1_x'Size use 640;
   for NDR_USER_MARSHAL_INFO_LEVEL1_x'Alignment use 8;
   subtype NDR_USER_MARSHAL_INFO_LEVEL1 is NDR_USER_MARSHAL_INFO_LEVEL1_x;
   type Anonymous_Record_271 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            Level1 : NDR_USER_MARSHAL_INFO_LEVEL1;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_271);
   pragma Unchecked_Union (Anonymous_Record_271);
   for Anonymous_Record_271'Size use 640;
   for Anonymous_Record_271'Alignment use 8;
   type NDR_USER_MARSHAL_INFO_x is record
      InformationLevel : Interfaces.C.unsigned_long;
      field_1 : Anonymous_Record_271;
   end record;
   pragma Convention (C_Pass_By_Copy,NDR_USER_MARSHAL_INFO_x);
   for NDR_USER_MARSHAL_INFO_x use record
      InformationLevel at 0 range 0..31;
      field_1 at 0 range 32..671;
   end record;
   for NDR_USER_MARSHAL_INFO_x'Size use 704;
   for NDR_USER_MARSHAL_INFO_x'Alignment use 8;
   subtype NDR_USER_MARSHAL_INFO is NDR_USER_MARSHAL_INFO_x;
   function NdrGetUserMarshalInfo(
      pFlags : access Interfaces.C.unsigned_long;
      InformationLevel : Interfaces.C.unsigned_long;
      pMarshalInfo : access NDR_USER_MARSHAL_INFO
   ) return RPC_STATUS;
   pragma import (Cpp,NdrGetUserMarshalInfo,"NdrGetUserMarshalInfo");
   function NdrCreateServerInterfaceFromStub(
      pStub : access IRpcStubBuffer'Class;
      pServerIf : access RPC_SERVER_INTERFACE
   ) return RPC_STATUS;
   pragma import (Cpp,NdrCreateServerInterfaceFromStub,"NdrCreateServerInterfaceFromStub");
   -- NdrClientCall3(...); -- variadic function not supported
   -- Ndr64AsyncClientCall(...); -- variadic function not supported
   -- Ndr64DcomAsyncClientCall(...); -- variadic function not supported
   procedure Ndr64AsyncServerCall(
      pRpcMsg : PRPC_MESSAGE
   );
   pragma import (Cpp,Ndr64AsyncServerCall,"Ndr64AsyncServerCall");
   procedure Ndr64AsyncServerCall64(
      pRpcMsg : PRPC_MESSAGE
   );
   pragma import (Cpp,Ndr64AsyncServerCall64,"Ndr64AsyncServerCall64");
   procedure Ndr64AsyncServerCallAll(
      pRpcMsg : PRPC_MESSAGE
   );
   pragma import (Cpp,Ndr64AsyncServerCallAll,"Ndr64AsyncServerCallAll");
   function Ndr64AsyncStubCall(
      pThis : access IRpcStubBuffer'Class;
      pChannel : access IRpcChannelBuffer'Class;
      pRpcMsg : PRPC_MESSAGE;
      pdwStubPhase : access Interfaces.C.unsigned_long
   ) return Interfaces.C.Long;
   pragma import (Cpp,Ndr64AsyncStubCall,"Ndr64AsyncStubCall");
   function Ndr64DcomAsyncStubCall(
      pThis : access IRpcStubBuffer'Class;
      pChannel : access IRpcChannelBuffer'Class;
      pRpcMsg : PRPC_MESSAGE;
      pdwStubPhase : access Interfaces.C.unsigned_long
   ) return Interfaces.C.Long;
   pragma import (Cpp,Ndr64DcomAsyncStubCall,"Ndr64DcomAsyncStubCall");
   function NdrStubCall3(
      pThis : access Void;
      pChannel : access Void;
      pRpcMsg : PRPC_MESSAGE;
      pdwStubPhase : access Interfaces.C.unsigned_long
   ) return Interfaces.C.Long;
   pragma import (Cpp,NdrStubCall3,"NdrStubCall3");
   procedure NdrServerCallAll(
      pRpcMsg : PRPC_MESSAGE
   );
   pragma import (Cpp,NdrServerCallAll,"NdrServerCallAll");
   procedure NdrServerCallNdr64(
      pRpcMsg : PRPC_MESSAGE
   );
   pragma import (Cpp,NdrServerCallNdr64,"NdrServerCallNdr64");
   procedure NdrServerCall3(
      pRpcMsg : PRPC_MESSAGE
   );
   pragma import (Cpp,NdrServerCall3,"NdrServerCall3");
   procedure NdrPartialIgnoreClientMarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Void
   );
   pragma import (Cpp,NdrPartialIgnoreClientMarshall,"NdrPartialIgnoreClientMarshall");
   procedure NdrPartialIgnoreServerUnmarshall(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access LPVOID
   );
   pragma import (Cpp,NdrPartialIgnoreServerUnmarshall,"NdrPartialIgnoreServerUnmarshall");
   procedure NdrPartialIgnoreClientBufferSize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      pMemory : access Void
   );
   pragma import (Cpp,NdrPartialIgnoreClientBufferSize,"NdrPartialIgnoreClientBufferSize");
   procedure NdrPartialIgnoreServerInitialize(
      pStubMsg : PMIDL_STUB_MESSAGE;
      ppMemory : access LPVOID;
      pFormat : PFORMAT_STRING
   );
   pragma import (Cpp,NdrPartialIgnoreServerInitialize,"NdrPartialIgnoreServerInitialize");
   procedure RpcUserFree(
      AsyncHandle : handle_t;
      pBuffer : access Void
   );
   pragma import (Cpp,RpcUserFree,"RpcUserFree");
   -- #include <combaseapi.h>
   -- #include <corecrt_malloc.h>
   procedure calloc_base(
      Count : size_t;
      Size_x : size_t
   );
   pragma import (Cpp,calloc_base,"_calloc_base");
   procedure calloc(
      Count : size_t;
      Size_x : size_t
   );
   pragma import (Cpp,calloc,"calloc");
   function callnewh(
      Size_x : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,callnewh,"_callnewh");
   procedure expand(
      Block : access Void;
      Size_x : size_t
   );
   pragma import (Cpp,expand,"_expand");
   procedure free_base(
      Block : access Void
   );
   pragma import (Cpp,free_base,"_free_base");
   procedure free(
      Block : access Void
   );
   pragma import (Cpp,free,"free");
   procedure malloc_base(
      Size_x : size_t
   );
   pragma import (Cpp,malloc_base,"_malloc_base");
   procedure malloc(
      Size_x : size_t
   );
   pragma import (Cpp,malloc,"malloc");
   function msize_base(
      Block : access Void
   ) return size_t;
   pragma import (Cpp,msize_base,"_msize_base");
   function msize(
      Block : access Void
   ) return size_t;
   pragma import (Cpp,msize,"_msize");
   procedure realloc_base(
      Block : access Void;
      Size_x : size_t
   );
   pragma import (Cpp,realloc_base,"_realloc_base");
   procedure realloc(
      Block : access Void;
      Size_x : size_t
   );
   pragma import (Cpp,realloc,"realloc");
   procedure recalloc_base(
      Block : access Void;
      Count : size_t;
      Size_x : size_t
   );
   pragma import (Cpp,recalloc_base,"_recalloc_base");
   procedure recalloc(
      Block : access Void;
      Count : size_t;
      Size_x : size_t
   );
   pragma import (Cpp,recalloc,"_recalloc");
   procedure aligned_free(
      Block : access Void
   );
   pragma import (Cpp,aligned_free,"_aligned_free");
   procedure aligned_malloc(
      Size_x : size_t;
      Alignment : size_t
   );
   pragma import (Cpp,aligned_malloc,"_aligned_malloc");
   procedure aligned_offset_malloc(
      Size_x : size_t;
      Alignment : size_t;
      Offset : size_t
   );
   pragma import (Cpp,aligned_offset_malloc,"_aligned_offset_malloc");
   function aligned_msize(
      Block : access Void;
      Alignment : size_t;
      Offset : size_t
   ) return size_t;
   pragma import (Cpp,aligned_msize,"_aligned_msize");
   procedure aligned_offset_realloc(
      Block : access Void;
      Size_x : size_t;
      Alignment : size_t;
      Offset : size_t
   );
   pragma import (Cpp,aligned_offset_realloc,"_aligned_offset_realloc");
   procedure aligned_offset_recalloc(
      Block : access Void;
      Count : size_t;
      Size_x : size_t;
      Alignment : size_t;
      Offset : size_t
   );
   pragma import (Cpp,aligned_offset_recalloc,"_aligned_offset_recalloc");
   procedure aligned_realloc(
      Block : access Void;
      Size_x : size_t;
      Alignment : size_t
   );
   pragma import (Cpp,aligned_realloc,"_aligned_realloc");
   procedure aligned_recalloc(
      Block : access Void;
      Count : size_t;
      Size_x : size_t;
      Alignment : size_t
   );
   pragma import (Cpp,aligned_recalloc,"_aligned_recalloc");
   -- #include <stddef.h>
   subtype nullptr_t is System.Address; -- [FIXME - CXType_Unexposed]
   function errno_x return PINT;
   pragma import (Cpp,errno_x,"_errno");
   function set_errno_x(
      Value : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,set_errno_x,"_set_errno");
   function get_errno_x(
      Value : access Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,get_errno_x,"_get_errno");
   function threadid return Interfaces.C.unsigned_long;
   pragma import (Cpp,threadid,"__threadid");
   function threadhandle return uintptr_t;
   pragma import (Cpp,threadhandle,"__threadhandle");
   -- #include <corecrt_search.h>
   type CoreCrtSecureSearchSortCompareFunction_x is access function (p1 : access void ; p2 : access void ; p3 : access void) return int; -- int (void *, const void *, const void *)
   pragma Convention(C,CoreCrtSecureSearchSortCompareFunction_x);
   type CoreCrtNonSecureSearchSortCompareFunction_x is access function (p1 : access void ; p2 : access void) return int; -- int (const void *, const void *)
   pragma Convention(C,CoreCrtNonSecureSearchSortCompareFunction_x);
   procedure bsearch_s(
      Key : access Void;
      Base : access Void;
      NumOfElements : rsize_t;
      SizeOfElements : rsize_t;
      CompareFunction : CoreCrtSecureSearchSortCompareFunction_x;
      Context_x : access Void
   );
   pragma import (Cpp,bsearch_s,"bsearch_s");
   procedure qsort_s(
      Base : access Void;
      NumOfElements : rsize_t;
      SizeOfElements : rsize_t;
      CompareFunction : CoreCrtSecureSearchSortCompareFunction_x;
      Context_x : access Void
   );
   pragma import (Cpp,qsort_s,"qsort_s");
   procedure bsearch(
      Key : access Void;
      Base : access Void;
      NumOfElements : size_t;
      SizeOfElements : size_t;
      CompareFunction : CoreCrtNonSecureSearchSortCompareFunction_x
   );
   pragma import (Cpp,bsearch,"bsearch");
   procedure qsort(
      Base : access Void;
      NumOfElements : size_t;
      SizeOfElements : size_t;
      CompareFunction : CoreCrtNonSecureSearchSortCompareFunction_x
   );
   pragma import (Cpp,qsort,"qsort");
   procedure lfind_s(
      Key : access Void;
      Base : access Void;
      NumOfElements : access Interfaces.C.unsigned;
      SizeOfElements : size_t;
      CompareFunction : CoreCrtSecureSearchSortCompareFunction_x;
      Context_x : access Void
   );
   pragma import (Cpp,lfind_s,"_lfind_s");
   procedure lfind(
      Key : access Void;
      Base : access Void;
      NumOfElements : access Interfaces.C.unsigned;
      SizeOfElements : Interfaces.C.unsigned;
      CompareFunction : CoreCrtNonSecureSearchSortCompareFunction_x
   );
   pragma import (Cpp,lfind,"_lfind");
   procedure lsearch_s(
      Key : access Void;
      Base : access Void;
      NumOfElements : access Interfaces.C.unsigned;
      SizeOfElements : size_t;
      CompareFunction : CoreCrtSecureSearchSortCompareFunction_x;
      Context_x : access Void
   );
   pragma import (Cpp,lsearch_s,"_lsearch_s");
   procedure lsearch(
      Key : access Void;
      Base : access Void;
      NumOfElements : access Interfaces.C.unsigned;
      SizeOfElements : Interfaces.C.unsigned;
      CompareFunction : CoreCrtNonSecureSearchSortCompareFunction_x
   );
   pragma import (Cpp,lsearch,"_lsearch");
   procedure lfind_x(
      Key : access Void;
      Base : access Void;
      NumOfElements : access Interfaces.C.unsigned;
      SizeOfElements : Interfaces.C.unsigned;
      CompareFunction : CoreCrtNonSecureSearchSortCompareFunction_x
   );
   pragma import (Cpp,lfind_x,"lfind");
   procedure lsearch_x(
      Key : access Void;
      Base : access Void;
      NumOfElements : access Interfaces.C.unsigned;
      SizeOfElements : Interfaces.C.unsigned;
      CompareFunction : CoreCrtNonSecureSearchSortCompareFunction_x
   );
   pragma import (Cpp,lsearch_x,"lsearch");
   -- #include <corecrt_wstdlib.h>
   function itow_s(
      Value : Interfaces.C.Int;
      Buffer : access Wide_Character;
      BufferCount : size_t;
      Radix : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,itow_s,"_itow_s");
   function itow(
      Value : Interfaces.C.Int;
      Buffer : access Wide_Character;
      Radix : Interfaces.C.Int
   ) return LPWSTR;
   pragma import (Cpp,itow,"_itow");
   function ltow_s(
      Value : Interfaces.C.Long;
      Buffer : access Wide_Character;
      BufferCount : size_t;
      Radix : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,ltow_s,"_ltow_s");
   function ltow(
      Value : Interfaces.C.Long;
      Buffer : access Wide_Character;
      Radix : Interfaces.C.Int
   ) return LPWSTR;
   pragma import (Cpp,ltow,"_ltow");
   function ultow_s(
      Value : Interfaces.C.unsigned_long;
      Buffer : access Wide_Character;
      BufferCount : size_t;
      Radix : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,ultow_s,"_ultow_s");
   function ultow(
      Value : Interfaces.C.unsigned_long;
      Buffer : access Wide_Character;
      Radix : Interfaces.C.Int
   ) return LPWSTR;
   pragma import (Cpp,ultow,"_ultow");
   function wcstod(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr
   ) return Long_Float;
   pragma import (Cpp,wcstod,"wcstod");
   function wcstod_l(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Locale : locale_t_x
   ) return Long_Float;
   pragma import (Cpp,wcstod_l,"_wcstod_l");
   function wcstol(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Radix : Interfaces.C.Int
   ) return Interfaces.C.Long;
   pragma import (Cpp,wcstol,"wcstol");
   function wcstol_l(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Radix : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Long;
   pragma import (Cpp,wcstol_l,"_wcstol_l");
   function wcstoll(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Radix : Interfaces.C.Int
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,wcstoll,"wcstoll");
   function wcstoll_l(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Radix : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,wcstoll_l,"_wcstoll_l");
   function wcstoul(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Radix : Interfaces.C.Int
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,wcstoul,"wcstoul");
   function wcstoul_l(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Radix : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,wcstoul_l,"_wcstoul_l");
   function wcstoull(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Radix : Interfaces.C.Int
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,wcstoull,"wcstoull");
   function wcstoull_l(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Radix : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,wcstoull_l,"_wcstoull_l");
   function wcstold(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr
   ) return Long_Long_Float;
   pragma import (Cpp,wcstold,"wcstold");
   function wcstold_l(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Locale : locale_t_x
   ) return Long_Long_Float;
   pragma import (Cpp,wcstold_l,"_wcstold_l");
   function wcstof(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr
   ) return Standard.Float;
   pragma import (Cpp,wcstof,"wcstof");
   function wcstof_l(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Locale : locale_t_x
   ) return Standard.Float;
   pragma import (Cpp,wcstof_l,"_wcstof_l");
   function wtof(
      String : access Wide_Character
   ) return Long_Float;
   pragma import (Cpp,wtof,"_wtof");
   function wtof_l(
      String : access Wide_Character;
      Locale : locale_t_x
   ) return Long_Float;
   pragma import (Cpp,wtof_l,"_wtof_l");
   function wtoi(
      String : access Wide_Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,wtoi,"_wtoi");
   function wtoi_l(
      String : access Wide_Character;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,wtoi_l,"_wtoi_l");
   function wtol(
      String : access Wide_Character
   ) return Interfaces.C.Long;
   pragma import (Cpp,wtol,"_wtol");
   function wtol_l(
      String : access Wide_Character;
      Locale : locale_t_x
   ) return Interfaces.C.Long;
   pragma import (Cpp,wtol_l,"_wtol_l");
   function wtoll(
      String : access Wide_Character
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,wtoll,"_wtoll");
   function wtoll_l(
      String : access Wide_Character;
      Locale : locale_t_x
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,wtoll_l,"_wtoll_l");
   function i64tow_s(
      Value : Interfaces.C.Extensions.long_long;
      Buffer : access Wide_Character;
      BufferCount : size_t;
      Radix : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,i64tow_s,"_i64tow_s");
   function i64tow(
      Value : Interfaces.C.Extensions.long_long;
      Buffer : access Wide_Character;
      Radix : Interfaces.C.Int
   ) return LPWSTR;
   pragma import (Cpp,i64tow,"_i64tow");
   function ui64tow_s(
      Value : Interfaces.C.Extensions.unsigned_long_long;
      Buffer : access Wide_Character;
      BufferCount : size_t;
      Radix : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,ui64tow_s,"_ui64tow_s");
   function ui64tow(
      Value : Interfaces.C.Extensions.unsigned_long_long;
      Buffer : access Wide_Character;
      Radix : Interfaces.C.Int
   ) return LPWSTR;
   pragma import (Cpp,ui64tow,"_ui64tow");
   function wtoi64(
      String : access Wide_Character
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,wtoi64,"_wtoi64");
   function wtoi64_l(
      String : access Wide_Character;
      Locale : locale_t_x
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,wtoi64_l,"_wtoi64_l");
   function wcstoi64(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Radix : Interfaces.C.Int
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,wcstoi64,"_wcstoi64");
   function wcstoi64_l(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Radix : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,wcstoi64_l,"_wcstoi64_l");
   function wcstoui64(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Radix : Interfaces.C.Int
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,wcstoui64,"_wcstoui64");
   function wcstoui64_l(
      String : access Wide_Character;
      EndPtr : access Wide_Character_Ptr;
      Radix : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,wcstoui64_l,"_wcstoui64_l");
   function wfullpath(
      Buffer : access Wide_Character;
      Path : access Wide_Character;
      BufferCount : size_t
   ) return LPWSTR;
   pragma import (Cpp,wfullpath,"_wfullpath");
   function wmakepath_s(
      Buffer : access Wide_Character;
      BufferCount : size_t;
      Drive : access Wide_Character;
      Dir : access Wide_Character;
      Filename : access Wide_Character;
      Ext : access Wide_Character
   ) return errno_t;
   pragma import (Cpp,wmakepath_s,"_wmakepath_s");
   procedure wmakepath(
      Buffer : access Wide_Character;
      Drive : access Wide_Character;
      Dir : access Wide_Character;
      Filename : access Wide_Character;
      Ext : access Wide_Character
   );
   pragma import (Cpp,wmakepath,"_wmakepath");
   procedure wperror(
      ErrorMessage : access Wide_Character
   );
   pragma import (Cpp,wperror,"_wperror");
   procedure wsplitpath(
      FullPath : access Wide_Character;
      Drive : access Wide_Character;
      Dir : access Wide_Character;
      Filename : access Wide_Character;
      Ext : access Wide_Character
   );
   pragma import (Cpp,wsplitpath,"_wsplitpath");
   function wsplitpath_s(
      FullPath : access Wide_Character;
      Drive : access Wide_Character;
      DriveCount : size_t;
      Dir : access Wide_Character;
      DirCount : size_t;
      Filename : access Wide_Character;
      FilenameCount : size_t;
      Ext : access Wide_Character;
      ExtCount : size_t
   ) return errno_t;
   pragma import (Cpp,wsplitpath_s,"_wsplitpath_s");
   function wdupenv_s(
      Buffer : access Wide_Character_Ptr;
      BufferCount : access size_t;
      VarName : access Wide_Character
   ) return errno_t;
   pragma import (Cpp,wdupenv_s,"_wdupenv_s");
   function wgetenv(
      VarName : access Wide_Character
   ) return LPWSTR;
   pragma import (Cpp,wgetenv,"_wgetenv");
   function wgetenv_s(
      RequiredCount : access size_t;
      Buffer : access Wide_Character;
      BufferCount : size_t;
      VarName : access Wide_Character
   ) return errno_t;
   pragma import (Cpp,wgetenv_s,"_wgetenv_s");
   function wputenv(
      EnvString : access Wide_Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,wputenv,"_wputenv");
   function wputenv_s(
      Name : access Wide_Character;
      Value : access Wide_Character
   ) return errno_t;
   pragma import (Cpp,wputenv_s,"_wputenv_s");
   function wsearchenv_s(
      Filename : access Wide_Character;
      VarName : access Wide_Character;
      Buffer : access Wide_Character;
      BufferCount : size_t
   ) return errno_t;
   pragma import (Cpp,wsearchenv_s,"_wsearchenv_s");
   procedure wsearchenv(
      Filename : access Wide_Character;
      VarName : access Wide_Character;
      ResultPath : access Wide_Character
   );
   pragma import (Cpp,wsearchenv,"_wsearchenv");
   function wsystem(
      Command : access Wide_Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,wsystem,"_wsystem");
   -- #include <limits.h>
   -- #include <stdlib.h>
   procedure swab(
      Buf1 : access Character;
      Buf2 : access Character;
      SizeInBytes : Interfaces.C.Int
   );
   pragma import (Cpp,swab,"_swab");
   procedure exit_x(
      Code : Interfaces.C.Int
   );
   pragma import (Cpp,exit_x,"exit");
   procedure exit_x_x(
      Code : Interfaces.C.Int
   );
   pragma import (Cpp,exit_x_x,"_exit");
   procedure exit_x_x_x(
      Code : Interfaces.C.Int
   );
   pragma import (Cpp,exit_x_x_x,"_Exit");
   procedure quick_exit(
      Code : Interfaces.C.Int
   );
   pragma import (Cpp,quick_exit,"quick_exit");
   procedure abort_x;
   pragma import (Cpp,abort_x,"abort");
   function set_abort_behavior(
      Flags : Interfaces.C.unsigned;
      Mask : Interfaces.C.unsigned
   ) return Interfaces.C.unsigned;
   pragma import (Cpp,set_abort_behavior,"_set_abort_behavior");
   type onexit_t_x is access function  return int; -- int ()
   pragma Convention(C,onexit_t_x);
   function atexit(
      param1 : access System.Address
   ) return Interfaces.C.Int;
   pragma import (Cpp,atexit,"atexit");
   function onexit(
      Func : onexit_t_x
   ) return onexit_t_x;
   pragma import (Cpp,onexit,"_onexit");
   function at_quick_exit(
      param1 : access System.Address
   ) return Interfaces.C.Int;
   pragma import (Cpp,at_quick_exit,"at_quick_exit");
   type purecall_handler_x is access procedure ; -- void ()
   pragma Convention(C,purecall_handler_x);
   type invalid_parameter_handler_x is access procedure (p1 : access WCHAR ; p2 : access WCHAR ; p3 : access WCHAR ; p4 : Interfaces.C.unsigned ; p5 : uintptr_t); -- void (const wchar_t *, const wchar_t *, const wchar_t *, unsigned int, uintptr_t)
   pragma Convention(C,invalid_parameter_handler_x);
   function set_purecall_handler(
      Handler : purecall_handler_x
   ) return purecall_handler_x;
   pragma import (Cpp,set_purecall_handler,"_set_purecall_handler");
   function get_purecall_handler return purecall_handler_x;
   pragma import (Cpp,get_purecall_handler,"_get_purecall_handler");
   function set_invalid_parameter_handler(
      Handler : invalid_parameter_handler_x
   ) return invalid_parameter_handler_x;
   pragma import (Cpp,set_invalid_parameter_handler,"_set_invalid_parameter_handler");
   function get_invalid_parameter_handler return invalid_parameter_handler_x;
   pragma import (Cpp,get_invalid_parameter_handler,"_get_invalid_parameter_handler");
   function set_thread_local_invalid_parameter_handler(
      Handler : invalid_parameter_handler_x
   ) return invalid_parameter_handler_x;
   pragma import (Cpp,set_thread_local_invalid_parameter_handler,"_set_thread_local_invalid_parameter_handler");
   function get_thread_local_invalid_parameter_handler return invalid_parameter_handler_x;
   pragma import (Cpp,get_thread_local_invalid_parameter_handler,"_get_thread_local_invalid_parameter_handler");
   function set_error_mode(
      Mode : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,set_error_mode,"_set_error_mode");
   function errno_x_x return PINT;
   pragma import (Cpp,errno_x_x,"_errno");
   function set_errno_x_x(
      Value : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,set_errno_x_x,"_set_errno");
   function get_errno_x_x(
      Value : access Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,get_errno_x_x,"_get_errno");
   function doserrno_x return PULONG;
   pragma import (Cpp,doserrno_x,"__doserrno");
   function set_doserrno_x(
      Value : Interfaces.C.unsigned_long
   ) return errno_t;
   pragma import (Cpp,set_doserrno_x,"_set_doserrno");
   function get_doserrno_x(
      Value : access Interfaces.C.unsigned_long
   ) return errno_t;
   pragma import (Cpp,get_doserrno_x,"_get_doserrno");
   -- function sys_errlist return char **;
   function sys_nerr return PINT;
   pragma import (Cpp,sys_nerr,"__sys_nerr");
   procedure perror(
      ErrMsg : access Character
   );
   pragma import (Cpp,perror,"perror");
   -- function p_pgmptr return char **;
   -- function p_wpgmptr return wchar_t **;
   function p_fmode return PINT;
   pragma import (Cpp,p_fmode,"__p__fmode");
   function get_pgmptr(
      Value : access va_list
   ) return errno_t;
   pragma import (Cpp,get_pgmptr,"_get_pgmptr");
   function get_wpgmptr(
      Value : access Wide_Character_Ptr
   ) return errno_t;
   pragma import (Cpp,get_wpgmptr,"_get_wpgmptr");
   function set_fmode(
      Mode : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,set_fmode,"_set_fmode");
   function get_fmode(
      PMode : access Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,get_fmode,"_get_fmode");
   type div_t_x is record
      quot : Interfaces.C.Int;
      rem_x : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,div_t_x);
   for div_t_x use record
      quot at 0 range 0..31;
      rem_x at 0 range 32..63;
   end record;
   for div_t_x'Size use 64;
   for div_t_x'Alignment use 4;
   subtype div_t is div_t_x;
   type ldiv_t_x is record
      quot : Interfaces.C.Long;
      rem_x : Interfaces.C.Long;
   end record;
   pragma Convention (C_Pass_By_Copy,ldiv_t_x);
   for ldiv_t_x use record
      quot at 0 range 0..31;
      rem_x at 0 range 32..63;
   end record;
   for ldiv_t_x'Size use 64;
   for ldiv_t_x'Alignment use 4;
   subtype ldiv_t is ldiv_t_x;
   type lldiv_t_x is record
      quot : Interfaces.C.Extensions.long_long;
      rem_x : Interfaces.C.Extensions.long_long;
   end record;
   pragma Convention (C_Pass_By_Copy,lldiv_t_x);
   for lldiv_t_x use record
      quot at 0 range 0..63;
      rem_x at 0 range 64..127;
   end record;
   for lldiv_t_x'Size use 128;
   for lldiv_t_x'Alignment use 8;
   subtype lldiv_t is lldiv_t_x;
   function abs_x(
      Number : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,abs_x,"abs");
   function labs(
      Number : Interfaces.C.Long
   ) return Interfaces.C.Long;
   pragma import (Cpp,labs,"labs");
   function llabs(
      Number : Interfaces.C.Extensions.long_long
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,llabs,"llabs");
   function abs64(
      Number : Interfaces.C.Extensions.long_long
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,abs64,"_abs64");
   function byteswap_ushort(
      Number : Interfaces.C.unsigned_short
   ) return Interfaces.C.unsigned_short;
   pragma import (Cpp,byteswap_ushort,"_byteswap_ushort");
   function byteswap_ulong(
      Number : Interfaces.C.unsigned_long
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,byteswap_ulong,"_byteswap_ulong");
   function byteswap_uint64(
      Number : Interfaces.C.Extensions.unsigned_long_long
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,byteswap_uint64,"_byteswap_uint64");
   function div(
      Numerator : Interfaces.C.Int;
      Denominator : Interfaces.C.Int
   ) return div_t;
   pragma import (Cpp,div,"div");
   function ldiv(
      Numerator : Interfaces.C.Long;
      Denominator : Interfaces.C.Long
   ) return ldiv_t;
   pragma import (Cpp,ldiv,"ldiv");
   function lldiv(
      Numerator : Interfaces.C.Extensions.long_long;
      Denominator : Interfaces.C.Extensions.long_long
   ) return lldiv_t;
   pragma import (Cpp,lldiv,"lldiv");
   function rotl_x(
      Value : Interfaces.C.unsigned;
      Shift : Interfaces.C.Int
   ) return Interfaces.C.unsigned;
   pragma import (Cpp,rotl_x,"_rotl");
   -- #include <winnt.h>
   -- #include <stdlib.h>
   function lrotl(
      Value : Interfaces.C.unsigned_long;
      Shift : Interfaces.C.Int
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,lrotl,"_lrotl");
   function rotl64_x(
      Value : Interfaces.C.Extensions.unsigned_long_long;
      Shift : Interfaces.C.Int
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,rotl64_x,"_rotl64");
   -- #include <winnt.h>
   -- #include <stdlib.h>
   function rotr_x(
      Value : Interfaces.C.unsigned;
      Shift : Interfaces.C.Int
   ) return Interfaces.C.unsigned;
   pragma import (Cpp,rotr_x,"_rotr");
   -- #include <winnt.h>
   -- #include <stdlib.h>
   function lrotr(
      Value : Interfaces.C.unsigned_long;
      Shift : Interfaces.C.Int
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,lrotr,"_lrotr");
   function rotr64_x(
      Value : Interfaces.C.Extensions.unsigned_long_long;
      Shift : Interfaces.C.Int
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,rotr64_x,"_rotr64");
   -- #include <winnt.h>
   -- #include <stdlib.h>
   procedure srand(
      Seed : Interfaces.C.unsigned
   );
   pragma import (Cpp,srand,"srand");
   function rand return Interfaces.C.Int;
   pragma import (Cpp,rand,"rand");
   -- abs_x_x(); -- inlined function not supported
   -- abs_x_x(); -- inlined function not supported
   -- div_x(); -- inlined function not supported
   -- div_x(); -- inlined function not supported
   type LDOUBLE_x_ld_Array is array(1..10) of Interfaces.C.unsigned_char; -- Auto Generated Dependancy
   type LDOUBLE_x is record
      ld : LDOUBLE_x_ld_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,LDOUBLE_x);
   for LDOUBLE_x use record
      ld at 0 range 0..79;
   end record;
   for LDOUBLE_x'Size use 80;
   for LDOUBLE_x'Alignment use 1;
   type CRT_DOUBLE_x is record
      x : Long_Float;
   end record;
   pragma Convention (C_Pass_By_Copy,CRT_DOUBLE_x);
   for CRT_DOUBLE_x use record
      x at 0 range 0..63;
   end record;
   for CRT_DOUBLE_x'Size use 64;
   for CRT_DOUBLE_x'Alignment use 8;
   type CRT_FLOAT_x is record
      f : Standard.Float;
   end record;
   pragma Convention (C_Pass_By_Copy,CRT_FLOAT_x);
   for CRT_FLOAT_x use record
      f at 0 range 0..31;
   end record;
   for CRT_FLOAT_x'Size use 32;
   for CRT_FLOAT_x'Alignment use 4;
   type LDBL12_x_ld12_Array is array(1..12) of Interfaces.C.unsigned_char; -- Auto Generated Dependancy
   type LDBL12_x is record
      ld12 : LDBL12_x_ld12_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,LDBL12_x);
   for LDBL12_x use record
      ld12 at 0 range 0..95;
   end record;
   for LDBL12_x'Size use 96;
   for LDBL12_x'Alignment use 1;
   function atof(
      String : access Character
   ) return Long_Float;
   pragma import (Cpp,atof,"atof");
   function atoi(
      String : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,atoi,"atoi");
   function atol(
      String : access Character
   ) return Interfaces.C.Long;
   pragma import (Cpp,atol,"atol");
   function atoll(
      String : access Character
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,atoll,"atoll");
   function atoi64(
      String : access Character
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,atoi64,"_atoi64");
   function atof_l(
      String : access Character;
      Locale : locale_t_x
   ) return Long_Float;
   pragma import (Cpp,atof_l,"_atof_l");
   function atoi_l(
      String : access Character;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,atoi_l,"_atoi_l");
   function atol_l(
      String : access Character;
      Locale : locale_t_x
   ) return Interfaces.C.Long;
   pragma import (Cpp,atol_l,"_atol_l");
   function atoll_l(
      String : access Character;
      Locale : locale_t_x
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,atoll_l,"_atoll_l");
   function atoi64_l(
      String : access Character;
      Locale : locale_t_x
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,atoi64_l,"_atoi64_l");
   function atoflt(
      Result : access CRT_FLOAT_x;
      String : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,atoflt,"_atoflt");
   function atodbl(
      Result : access CRT_DOUBLE_x;
      String : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,atodbl,"_atodbl");
   function atoldbl(
      Result : access LDOUBLE_x;
      String : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,atoldbl,"_atoldbl");
   function atoflt_l(
      Result : access CRT_FLOAT_x;
      String : access Character;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,atoflt_l,"_atoflt_l");
   function atodbl_l(
      Result : access CRT_DOUBLE_x;
      String : access Character;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,atodbl_l,"_atodbl_l");
   function atoldbl_l(
      Result : access LDOUBLE_x;
      String : access Character;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,atoldbl_l,"_atoldbl_l");
   function strtof(
      String : access Character;
      EndPtr : access va_list
   ) return Standard.Float;
   pragma import (Cpp,strtof,"strtof");
   function strtof_l(
      String : access Character;
      EndPtr : access va_list;
      Locale : locale_t_x
   ) return Standard.Float;
   pragma import (Cpp,strtof_l,"_strtof_l");
   function strtod(
      String : access Character;
      EndPtr : access va_list
   ) return Long_Float;
   pragma import (Cpp,strtod,"strtod");
   function strtod_l(
      String : access Character;
      EndPtr : access va_list;
      Locale : locale_t_x
   ) return Long_Float;
   pragma import (Cpp,strtod_l,"_strtod_l");
   function strtold(
      String : access Character;
      EndPtr : access va_list
   ) return Long_Long_Float;
   pragma import (Cpp,strtold,"strtold");
   function strtold_l(
      String : access Character;
      EndPtr : access va_list;
      Locale : locale_t_x
   ) return Long_Long_Float;
   pragma import (Cpp,strtold_l,"_strtold_l");
   function strtol(
      String : access Character;
      EndPtr : access va_list;
      Radix : Interfaces.C.Int
   ) return Interfaces.C.Long;
   pragma import (Cpp,strtol,"strtol");
   function strtol_l(
      String : access Character;
      EndPtr : access va_list;
      Radix : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Long;
   pragma import (Cpp,strtol_l,"_strtol_l");
   function strtoll(
      String : access Character;
      EndPtr : access va_list;
      Radix : Interfaces.C.Int
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,strtoll,"strtoll");
   function strtoll_l(
      String : access Character;
      EndPtr : access va_list;
      Radix : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,strtoll_l,"_strtoll_l");
   function strtoul(
      String : access Character;
      EndPtr : access va_list;
      Radix : Interfaces.C.Int
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,strtoul,"strtoul");
   function strtoul_l(
      String : access Character;
      EndPtr : access va_list;
      Radix : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,strtoul_l,"_strtoul_l");
   function strtoull(
      String : access Character;
      EndPtr : access va_list;
      Radix : Interfaces.C.Int
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,strtoull,"strtoull");
   function strtoull_l(
      String : access Character;
      EndPtr : access va_list;
      Radix : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,strtoull_l,"_strtoull_l");
   function strtoi64(
      String : access Character;
      EndPtr : access va_list;
      Radix : Interfaces.C.Int
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,strtoi64,"_strtoi64");
   function strtoi64_l(
      String : access Character;
      EndPtr : access va_list;
      Radix : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Extensions.long_long;
   pragma import (Cpp,strtoi64_l,"_strtoi64_l");
   function strtoui64(
      String : access Character;
      EndPtr : access va_list;
      Radix : Interfaces.C.Int
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,strtoui64,"_strtoui64");
   function strtoui64_l(
      String : access Character;
      EndPtr : access va_list;
      Radix : Interfaces.C.Int;
      Locale : locale_t_x
   ) return Interfaces.C.Extensions.unsigned_long_long;
   pragma import (Cpp,strtoui64_l,"_strtoui64_l");
   function itoa_s(
      Value : Interfaces.C.Int;
      Buffer : access Character;
      BufferCount : size_t;
      Radix : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,itoa_s,"_itoa_s");
   function itoa(
      Value : Interfaces.C.Int;
      Buffer : access Character;
      Radix : Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,itoa,"_itoa");
   function ltoa_s(
      Value : Interfaces.C.Long;
      Buffer : access Character;
      BufferCount : size_t;
      Radix : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,ltoa_s,"_ltoa_s");
   function ltoa(
      Value : Interfaces.C.Long;
      Buffer : access Character;
      Radix : Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,ltoa,"_ltoa");
   function ultoa_s(
      Value : Interfaces.C.unsigned_long;
      Buffer : access Character;
      BufferCount : size_t;
      Radix : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,ultoa_s,"_ultoa_s");
   function ultoa(
      Value : Interfaces.C.unsigned_long;
      Buffer : access Character;
      Radix : Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,ultoa,"_ultoa");
   function i64toa_s(
      Value : Interfaces.C.Extensions.long_long;
      Buffer : access Character;
      BufferCount : size_t;
      Radix : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,i64toa_s,"_i64toa_s");
   function i64toa(
      Value : Interfaces.C.Extensions.long_long;
      Buffer : access Character;
      Radix : Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,i64toa,"_i64toa");
   function ui64toa_s(
      Value : Interfaces.C.Extensions.unsigned_long_long;
      Buffer : access Character;
      BufferCount : size_t;
      Radix : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,ui64toa_s,"_ui64toa_s");
   function ui64toa(
      Value : Interfaces.C.Extensions.unsigned_long_long;
      Buffer : access Character;
      Radix : Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,ui64toa,"_ui64toa");
   function ecvt_s(
      Buffer : access Character;
      BufferCount : size_t;
      Value : Long_Float;
      DigitCount : Interfaces.C.Int;
      PtDec : access Interfaces.C.Int;
      PtSign : access Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,ecvt_s,"_ecvt_s");
   function ecvt(
      Value : Long_Float;
      DigitCount : Interfaces.C.Int;
      PtDec : access Interfaces.C.Int;
      PtSign : access Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,ecvt,"_ecvt");
   function fcvt_s(
      Buffer : access Character;
      BufferCount : size_t;
      Value : Long_Float;
      FractionalDigitCount : Interfaces.C.Int;
      PtDec : access Interfaces.C.Int;
      PtSign : access Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,fcvt_s,"_fcvt_s");
   function fcvt(
      Value : Long_Float;
      FractionalDigitCount : Interfaces.C.Int;
      PtDec : access Interfaces.C.Int;
      PtSign : access Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,fcvt,"_fcvt");
   function gcvt_s(
      Buffer : access Character;
      BufferCount : size_t;
      Value : Long_Float;
      DigitCount : Interfaces.C.Int
   ) return errno_t;
   pragma import (Cpp,gcvt_s,"_gcvt_s");
   function gcvt(
      Value : Long_Float;
      DigitCount : Interfaces.C.Int;
      Buffer : access Character
   ) return LPSTR;
   pragma import (Cpp,gcvt,"_gcvt");
   function mblen(
      Ch : access Character;
      MaxCount : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,mblen,"mblen");
   function mblen_l(
      Ch : access Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,mblen_l,"_mblen_l");
   function mbstrlen(
      String : access Character
   ) return size_t;
   pragma import (Cpp,mbstrlen,"_mbstrlen");
   function mbstrlen_l(
      String : access Character;
      Locale : locale_t_x
   ) return size_t;
   pragma import (Cpp,mbstrlen_l,"_mbstrlen_l");
   function mbstrnlen(
      String : access Character;
      MaxCount : size_t
   ) return size_t;
   pragma import (Cpp,mbstrnlen,"_mbstrnlen");
   function mbstrnlen_l(
      String : access Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return size_t;
   pragma import (Cpp,mbstrnlen_l,"_mbstrnlen_l");
   function mbtowc(
      DstCh : access Wide_Character;
      SrcCh : access Character;
      SrcSizeInBytes : size_t
   ) return Interfaces.C.Int;
   pragma import (Cpp,mbtowc,"mbtowc");
   function mbtowc_l(
      DstCh : access Wide_Character;
      SrcCh : access Character;
      SrcSizeInBytes : size_t;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,mbtowc_l,"_mbtowc_l");
   function mbstowcs_s(
      PtNumOfCharConverted : access size_t;
      DstBuf : access Wide_Character;
      SizeInWords : size_t;
      SrcBuf : access Character;
      MaxCount : size_t
   ) return errno_t;
   pragma import (Cpp,mbstowcs_s,"mbstowcs_s");
   function mbstowcs(
      Dest : access Wide_Character;
      Source : access Character;
      MaxCount : size_t
   ) return size_t;
   pragma import (Cpp,mbstowcs,"mbstowcs");
   function mbstowcs_s_l(
      PtNumOfCharConverted : access size_t;
      DstBuf : access Wide_Character;
      SizeInWords : size_t;
      SrcBuf : access Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return errno_t;
   pragma import (Cpp,mbstowcs_s_l,"_mbstowcs_s_l");
   function mbstowcs_l(
      Dest : access Wide_Character;
      Source : access Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return size_t;
   pragma import (Cpp,mbstowcs_l,"_mbstowcs_l");
   function wctomb(
      MbCh : access Character;
      WCh : Wide_Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,wctomb,"wctomb");
   function wctomb_l(
      MbCh : access Character;
      WCh : Wide_Character;
      Locale : locale_t_x
   ) return Interfaces.C.Int;
   pragma import (Cpp,wctomb_l,"_wctomb_l");
   function wctomb_s(
      SizeConverted : access Interfaces.C.Int;
      MbCh : access Character;
      SizeInBytes : rsize_t;
      WCh : Wide_Character
   ) return errno_t;
   pragma import (Cpp,wctomb_s,"wctomb_s");
   function wctomb_s_l(
      SizeConverted : access Interfaces.C.Int;
      MbCh : access Character;
      SizeInBytes : size_t;
      WCh : Wide_Character;
      Locale : locale_t_x
   ) return errno_t;
   pragma import (Cpp,wctomb_s_l,"_wctomb_s_l");
   function wcstombs_s(
      PtNumOfCharConverted : access size_t;
      Dst : access Character;
      DstSizeInBytes : size_t;
      Src : access Wide_Character;
      MaxCountInBytes : size_t
   ) return errno_t;
   pragma import (Cpp,wcstombs_s,"wcstombs_s");
   function wcstombs(
      Dest : access Character;
      Source : access Wide_Character;
      MaxCount : size_t
   ) return size_t;
   pragma import (Cpp,wcstombs,"wcstombs");
   function wcstombs_s_l(
      PtNumOfCharConverted : access size_t;
      Dst : access Character;
      DstSizeInBytes : size_t;
      Src : access Wide_Character;
      MaxCountInBytes : size_t;
      Locale : locale_t_x
   ) return errno_t;
   pragma import (Cpp,wcstombs_s_l,"_wcstombs_s_l");
   function wcstombs_l(
      Dest : access Character;
      Source : access Wide_Character;
      MaxCount : size_t;
      Locale : locale_t_x
   ) return size_t;
   pragma import (Cpp,wcstombs_l,"_wcstombs_l");
   function fullpath(
      Buffer : access Character;
      Path : access Character;
      BufferCount : size_t
   ) return LPSTR;
   pragma import (Cpp,fullpath,"_fullpath");
   function makepath_s(
      Buffer : access Character;
      BufferCount : size_t;
      Drive : access Character;
      Dir : access Character;
      Filename : access Character;
      Ext : access Character
   ) return errno_t;
   pragma import (Cpp,makepath_s,"_makepath_s");
   procedure makepath(
      Buffer : access Character;
      Drive : access Character;
      Dir : access Character;
      Filename : access Character;
      Ext : access Character
   );
   pragma import (Cpp,makepath,"_makepath");
   procedure splitpath(
      FullPath_x : access Character;
      Drive : access Character;
      Dir : access Character;
      Filename : access Character;
      Ext : access Character
   );
   pragma import (Cpp,splitpath,"_splitpath");
   function splitpath_s(
      FullPath_x : access Character;
      Drive : access Character;
      DriveCount : size_t;
      Dir : access Character;
      DirCount : size_t;
      Filename : access Character;
      FilenameCount : size_t;
      Ext : access Character;
      ExtCount : size_t
   ) return errno_t;
   pragma import (Cpp,splitpath_s,"_splitpath_s");
   function getenv_s(
      RequiredCount : access size_t;
      Buffer : access Character;
      BufferCount : rsize_t;
      VarName : access Character
   ) return errno_t;
   pragma import (Cpp,getenv_s,"getenv_s");
   function p_argc return PINT;
   pragma import (Cpp,p_argc,"__p___argc");
   -- function p_argv return char ***;
   -- function p_wargv return wchar_t ***;
   -- function p_environ return char ***;
   -- function p_wenviron return wchar_t ***;
   function getenv(
      VarName : access Character
   ) return LPSTR;
   pragma import (Cpp,getenv,"getenv");
   function dupenv_s(
      Buffer : access va_list;
      BufferCount : access size_t;
      VarName : access Character
   ) return errno_t;
   pragma import (Cpp,dupenv_s,"_dupenv_s");
   function system_x(
      Command : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,system_x,"system");
   function putenv(
      EnvString : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,putenv,"_putenv");
   function putenv_s(
      Name : access Character;
      Value : access Character
   ) return errno_t;
   pragma import (Cpp,putenv_s,"_putenv_s");
   function searchenv_s(
      Filename : access Character;
      VarName : access Character;
      Buffer : access Character;
      BufferCount : size_t
   ) return errno_t;
   pragma import (Cpp,searchenv_s,"_searchenv_s");
   procedure searchenv(
      Filename : access Character;
      VarName : access Character;
      Buffer : access Character
   );
   pragma import (Cpp,searchenv,"_searchenv");
   procedure seterrormode_x(
      Mode : Interfaces.C.Int
   );
   pragma import (Cpp,seterrormode_x,"_seterrormode");
   procedure beep_x(
      Frequency : Interfaces.C.unsigned;
      Duration : Interfaces.C.unsigned
   );
   pragma import (Cpp,beep_x,"_beep");
   procedure sleep_x(
      Duration : Interfaces.C.unsigned_long
   );
   pragma import (Cpp,sleep_x,"_sleep");
   function ecvt_x(
      Value : Long_Float;
      DigitCount : Interfaces.C.Int;
      PtDec : access Interfaces.C.Int;
      PtSign : access Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,ecvt_x,"ecvt");
   function fcvt_x(
      Value : Long_Float;
      FractionalDigitCount : Interfaces.C.Int;
      PtDec : access Interfaces.C.Int;
      PtSign : access Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,fcvt_x,"fcvt");
   function gcvt_x(
      Value : Long_Float;
      DigitCount : Interfaces.C.Int;
      DstBuf : access Character
   ) return LPSTR;
   pragma import (Cpp,gcvt_x,"gcvt");
   function itoa_x(
      Value : Interfaces.C.Int;
      Buffer : access Character;
      Radix : Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,itoa_x,"itoa");
   function ltoa_x(
      Value : Interfaces.C.Long;
      Buffer : access Character;
      Radix : Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,ltoa_x,"ltoa");
   procedure swab_x(
      Buf1 : access Character;
      Buf2 : access Character;
      SizeInBytes : Interfaces.C.Int
   );
   pragma import (Cpp,swab_x,"swab");
   function ultoa_x(
      Value : Interfaces.C.unsigned_long;
      Buffer : access Character;
      Radix : Interfaces.C.Int
   ) return LPSTR;
   pragma import (Cpp,ultoa_x,"ultoa");
   function putenv_x(
      EnvString : access Character
   ) return Interfaces.C.Int;
   pragma import (Cpp,putenv_x,"putenv");
   function onexit_x(
      Func : onexit_t_x
   ) return onexit_t_x;
   pragma import (Cpp,onexit_x,"onexit");
   -- #include <combaseapi.h>
   type tagREGCLS is (
      REGCLS_SINGLEUSE,
      REGCLS_MULTIPLEUSE,
      REGCLS_MULTI_SEPARATE,
      REGCLS_SUSPENDED,
      REGCLS_SURROGATE,
      REGCLS_AGILE
   );
   for tagREGCLS use (
      REGCLS_SINGLEUSE => 0,
      REGCLS_MULTIPLEUSE => 1,
      REGCLS_MULTI_SEPARATE => 2,
      REGCLS_SUSPENDED => 4,
      REGCLS_SURROGATE => 8,
      REGCLS_AGILE => 16
   );
   for tagREGCLS'Size use 32;
   subtype REGCLS is tagREGCLS;
   type tagCOINITBASE is (
      COINITBASE_MULTITHREADED
   );
   for tagCOINITBASE use (
      COINITBASE_MULTITHREADED => 0
   );
   for tagCOINITBASE'Size use 32;
   subtype COINITBASE is tagCOINITBASE;
   -- #include <wtypesbase.h>
   subtype OLECHAR is WCHAR;
   type LPOLESTR is access all OLECHAR;
   type LPCOLESTR is access constant OLECHAR;
   subtype DOUBLE is Long_Float;
   type COAUTHIDENTITY_x is record
      User : access USHORT;
      UserLength : ULONG;
      Domain : access USHORT;
      DomainLength : ULONG;
      Password : access USHORT;
      PasswordLength : ULONG;
      Flags : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,COAUTHIDENTITY_x);
   for COAUTHIDENTITY_x use record
      User at 0 range 0..63;
      UserLength at 0 range 64..95;
      Domain at 0 range 128..191;
      DomainLength at 0 range 192..223;
      Password at 0 range 256..319;
      PasswordLength at 0 range 320..351;
      Flags at 0 range 352..383;
   end record;
   for COAUTHIDENTITY_x'Size use 384;
   for COAUTHIDENTITY_x'Alignment use 8;
   subtype COAUTHIDENTITY is COAUTHIDENTITY_x;
   type COAUTHINFO_x is record
      dwAuthnSvc : DWORD;
      dwAuthzSvc : DWORD;
      pwszServerPrincName : LPWSTR;
      dwAuthnLevel : DWORD;
      dwImpersonationLevel : DWORD;
      pAuthIdentityData : access COAUTHIDENTITY;
      dwCapabilities : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,COAUTHINFO_x);
   for COAUTHINFO_x use record
      dwAuthnSvc at 0 range 0..31;
      dwAuthzSvc at 0 range 32..63;
      pwszServerPrincName at 0 range 64..127;
      dwAuthnLevel at 0 range 128..159;
      dwImpersonationLevel at 0 range 160..191;
      pAuthIdentityData at 0 range 192..255;
      dwCapabilities at 0 range 256..287;
   end record;
   for COAUTHINFO_x'Size use 320;
   for COAUTHINFO_x'Alignment use 8;
   subtype COAUTHINFO is COAUTHINFO_x;
   subtype SCODE is LONG;
   type PSCODE is access all SCODE;
   type tagMEMCTX is (
      MEMCTX_SAME,
      MEMCTX_UNKNOWN,
      MEMCTX_TASK,
      MEMCTX_SHARED,
      MEMCTX_MACSYSTEM
   );
   for tagMEMCTX use (
      MEMCTX_SAME => -2,
      MEMCTX_UNKNOWN => -1,
      MEMCTX_TASK => 1,
      MEMCTX_SHARED => 2,
      MEMCTX_MACSYSTEM => 3
   );
   for tagMEMCTX'Size use 32;
   subtype MEMCTX is tagMEMCTX;
   type tagCLSCTX is (
      CLSCTX_PS_DLL,
      CLSCTX_INPROC_SERVER,
      CLSCTX_INPROC_HANDLER,
      CLSCTX_LOCAL_SERVER,
      CLSCTX_INPROC_SERVER16,
      CLSCTX_REMOTE_SERVER,
      CLSCTX_INPROC_HANDLER16,
      CLSCTX_RESERVED1,
      CLSCTX_RESERVED2,
      CLSCTX_RESERVED3,
      CLSCTX_RESERVED4,
      CLSCTX_NO_CODE_DOWNLOAD,
      CLSCTX_RESERVED5,
      CLSCTX_NO_CUSTOM_MARSHAL,
      CLSCTX_ENABLE_CODE_DOWNLOAD,
      CLSCTX_NO_FAILURE_LOG,
      CLSCTX_DISABLE_AAA,
      CLSCTX_ENABLE_AAA,
      CLSCTX_FROM_DEFAULT_CONTEXT,
      CLSCTX_ACTIVATE_X86_SERVER,
      CLSCTX_ACTIVATE_64_BIT_SERVER,
      CLSCTX_ENABLE_CLOAKING,
      CLSCTX_APPCONTAINER,
      CLSCTX_ACTIVATE_AAA_AS_IU,
      CLSCTX_RESERVED6,
      CLSCTX_ACTIVATE_ARM32_SERVER
   );
   for tagCLSCTX use (
      CLSCTX_PS_DLL => -2147483648,
      CLSCTX_INPROC_SERVER => 1,
      CLSCTX_INPROC_HANDLER => 2,
      CLSCTX_LOCAL_SERVER => 4,
      CLSCTX_INPROC_SERVER16 => 8,
      CLSCTX_REMOTE_SERVER => 16,
      CLSCTX_INPROC_HANDLER16 => 32,
      CLSCTX_RESERVED1 => 64,
      CLSCTX_RESERVED2 => 128,
      CLSCTX_RESERVED3 => 256,
      CLSCTX_RESERVED4 => 512,
      CLSCTX_NO_CODE_DOWNLOAD => 1024,
      CLSCTX_RESERVED5 => 2048,
      CLSCTX_NO_CUSTOM_MARSHAL => 4096,
      CLSCTX_ENABLE_CODE_DOWNLOAD => 8192,
      CLSCTX_NO_FAILURE_LOG => 16384,
      CLSCTX_DISABLE_AAA => 32768,
      CLSCTX_ENABLE_AAA => 65536,
      CLSCTX_FROM_DEFAULT_CONTEXT => 131072,
      CLSCTX_ACTIVATE_X86_SERVER => 262144,
      CLSCTX_ACTIVATE_64_BIT_SERVER => 524288,
      CLSCTX_ENABLE_CLOAKING => 1048576,
      CLSCTX_APPCONTAINER => 4194304,
      CLSCTX_ACTIVATE_AAA_AS_IU => 8388608,
      CLSCTX_RESERVED6 => 16777216,
      CLSCTX_ACTIVATE_ARM32_SERVER => 33554432
   );
   for tagCLSCTX'Size use 32;
   subtype CLSCTX is tagCLSCTX;
   type tagMSHLFLAGS is (
      MSHLFLAGS_NORMAL,
      MSHLFLAGS_TABLESTRONG,
      MSHLFLAGS_TABLEWEAK,
      MSHLFLAGS_NOPING,
      MSHLFLAGS_RESERVED1,
      MSHLFLAGS_RESERVED2,
      MSHLFLAGS_RESERVED3,
      MSHLFLAGS_RESERVED4
   );
   for tagMSHLFLAGS use (
      MSHLFLAGS_NORMAL => 0,
      MSHLFLAGS_TABLESTRONG => 1,
      MSHLFLAGS_TABLEWEAK => 2,
      MSHLFLAGS_NOPING => 4,
      MSHLFLAGS_RESERVED1 => 8,
      MSHLFLAGS_RESERVED2 => 16,
      MSHLFLAGS_RESERVED3 => 32,
      MSHLFLAGS_RESERVED4 => 64
   );
   for tagMSHLFLAGS'Size use 32;
   subtype MSHLFLAGS is tagMSHLFLAGS;
   type tagMSHCTX is (
      MSHCTX_LOCAL,
      MSHCTX_NOSHAREDMEM,
      MSHCTX_DIFFERENTMACHINE,
      MSHCTX_INPROC,
      MSHCTX_CROSSCTX,
      MSHCTX_RESERVED1
   );
   for tagMSHCTX use (
      MSHCTX_LOCAL => 0,
      MSHCTX_NOSHAREDMEM => 1,
      MSHCTX_DIFFERENTMACHINE => 2,
      MSHCTX_INPROC => 3,
      MSHCTX_CROSSCTX => 4,
      MSHCTX_RESERVED1 => 5
   );
   for tagMSHCTX'Size use 32;
   subtype MSHCTX is tagMSHCTX;
   type BYTE_BLOB_x_abData_Array is array(1..1) of byte; -- Auto Generated Dependancy
   type BYTE_BLOB_x is record
      clSize : ULONG;
      abData : BYTE_BLOB_x_abData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,BYTE_BLOB_x);
   for BYTE_BLOB_x use record
      clSize at 0 range 0..31;
      abData at 0 range 32..39;
   end record;
   for BYTE_BLOB_x'Size use 64;
   for BYTE_BLOB_x'Alignment use 4;
   subtype BYTE_BLOB is BYTE_BLOB_x;
   type UP_BYTE_BLOB is access all BYTE_BLOB;
   type WORD_BLOB_x_asData_Array is array(1..1) of Interfaces.C.unsigned_short; -- Auto Generated Dependancy
   type WORD_BLOB_x is record
      clSize : ULONG;
      asData : WORD_BLOB_x_asData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,WORD_BLOB_x);
   for WORD_BLOB_x use record
      clSize at 0 range 0..31;
      asData at 0 range 32..47;
   end record;
   for WORD_BLOB_x'Size use 64;
   for WORD_BLOB_x'Alignment use 4;
   subtype WORD_BLOB is WORD_BLOB_x;
   type UP_WORD_BLOB is access all WORD_BLOB;
   type DWORD_BLOB_x_alData_Array is array(1..1) of ULONG; -- Auto Generated Dependancy
   type DWORD_BLOB_x is record
      clSize : ULONG;
      alData : DWORD_BLOB_x_alData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,DWORD_BLOB_x);
   for DWORD_BLOB_x use record
      clSize at 0 range 0..31;
      alData at 0 range 32..63;
   end record;
   for DWORD_BLOB_x'Size use 64;
   for DWORD_BLOB_x'Alignment use 4;
   subtype DWORD_BLOB is DWORD_BLOB_x;
   type UP_DWORD_BLOB is access all DWORD_BLOB;
   type FLAGGED_BYTE_BLOB_x_abData_Array is array(1..1) of byte; -- Auto Generated Dependancy
   type FLAGGED_BYTE_BLOB_x is record
      fFlags : ULONG;
      clSize : ULONG;
      abData : FLAGGED_BYTE_BLOB_x_abData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FLAGGED_BYTE_BLOB_x);
   for FLAGGED_BYTE_BLOB_x use record
      fFlags at 0 range 0..31;
      clSize at 0 range 32..63;
      abData at 0 range 64..71;
   end record;
   for FLAGGED_BYTE_BLOB_x'Size use 96;
   for FLAGGED_BYTE_BLOB_x'Alignment use 4;
   subtype FLAGGED_BYTE_BLOB is FLAGGED_BYTE_BLOB_x;
   type UP_FLAGGED_BYTE_BLOB is access all FLAGGED_BYTE_BLOB;
   type FLAGGED_WORD_BLOB_x_asData_Array is array(1..1) of Interfaces.C.unsigned_short; -- Auto Generated Dependancy
   type FLAGGED_WORD_BLOB_x is record
      fFlags : ULONG;
      clSize : ULONG;
      asData : FLAGGED_WORD_BLOB_x_asData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,FLAGGED_WORD_BLOB_x);
   for FLAGGED_WORD_BLOB_x use record
      fFlags at 0 range 0..31;
      clSize at 0 range 32..63;
      asData at 0 range 64..79;
   end record;
   for FLAGGED_WORD_BLOB_x'Size use 96;
   for FLAGGED_WORD_BLOB_x'Alignment use 4;
   subtype FLAGGED_WORD_BLOB is FLAGGED_WORD_BLOB_x;
   type UP_FLAGGED_WORD_BLOB is access all FLAGGED_WORD_BLOB;
   type BYTE_SIZEDARR_x is record
      clSize : ULONG;
      pData : access byte;
   end record;
   pragma Convention (C_Pass_By_Copy,BYTE_SIZEDARR_x);
   for BYTE_SIZEDARR_x use record
      clSize at 0 range 0..31;
      pData at 0 range 64..127;
   end record;
   for BYTE_SIZEDARR_x'Size use 128;
   for BYTE_SIZEDARR_x'Alignment use 8;
   subtype BYTE_SIZEDARR is BYTE_SIZEDARR_x;
   type SHORT_SIZEDARR_x is record
      clSize : ULONG;
      pData : access Interfaces.C.unsigned_short;
   end record;
   pragma Convention (C_Pass_By_Copy,SHORT_SIZEDARR_x);
   for SHORT_SIZEDARR_x use record
      clSize at 0 range 0..31;
      pData at 0 range 64..127;
   end record;
   for SHORT_SIZEDARR_x'Size use 128;
   for SHORT_SIZEDARR_x'Alignment use 8;
   subtype WORD_SIZEDARR is SHORT_SIZEDARR_x;
   type LONG_SIZEDARR_x is record
      clSize : ULONG;
      pData : access ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,LONG_SIZEDARR_x);
   for LONG_SIZEDARR_x use record
      clSize at 0 range 0..31;
      pData at 0 range 64..127;
   end record;
   for LONG_SIZEDARR_x'Size use 128;
   for LONG_SIZEDARR_x'Alignment use 8;
   subtype DWORD_SIZEDARR is LONG_SIZEDARR_x;
   type HYPER_SIZEDARR_x is record
      clSize : ULONG;
      pData : access Interfaces.C.Extensions.long_long;
   end record;
   pragma Convention (C_Pass_By_Copy,HYPER_SIZEDARR_x);
   for HYPER_SIZEDARR_x use record
      clSize at 0 range 0..31;
      pData at 0 range 64..127;
   end record;
   for HYPER_SIZEDARR_x'Size use 128;
   for HYPER_SIZEDARR_x'Alignment use 8;
   subtype HYPER_SIZEDARR is HYPER_SIZEDARR_x;
   -- #include <unknwnbase.h>
   type IUnknown;
   type AsyncIUnknown;
   type IClassFactory;
   type LPUNKNOWN is access all IUnknown;
   IID_IUnknown : aliased constant IID;
   pragma import (C,IID_IUnknown,"IID_IUnknown");
   type IUnknown is limited interface;
      function QueryInterface(
         This : access IUnknown;
         riid : access constant IID;
         ppvObject : access LPVOID
      ) return HRESULT is abstract;
      function AddRef(This : access IUnknown) return ULONG is abstract;
      function Release(This : access IUnknown) return ULONG is abstract;
   type IUnknown_Ptr is access all IUnknown'Class;
   function IUnknown_QueryInterface_Proxy(
      This : access IUnknown'Class;
      riid : access constant IID;
      ppvObject : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,IUnknown_QueryInterface_Proxy,"IUnknown_QueryInterface_Proxy");
   procedure IUnknown_QueryInterface_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IUnknown_QueryInterface_Stub,"IUnknown_QueryInterface_Stub");
   function IUnknown_AddRef_Proxy(
      This : access IUnknown'Class
   ) return ULONG;
   pragma import (Cpp,IUnknown_AddRef_Proxy,"IUnknown_AddRef_Proxy");
   procedure IUnknown_AddRef_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IUnknown_AddRef_Stub,"IUnknown_AddRef_Stub");
   function IUnknown_Release_Proxy(
      This : access IUnknown'Class
   ) return ULONG;
   pragma import (Cpp,IUnknown_Release_Proxy,"IUnknown_Release_Proxy");
   procedure IUnknown_Release_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IUnknown_Release_Stub,"IUnknown_Release_Stub");
   IID_AsyncIUnknown : aliased constant IID;
   pragma import (C,IID_AsyncIUnknown,"IID_AsyncIUnknown");
   type AsyncIUnknown is limited interface and IUnknown;
      function Begin_QueryInterface(
         This : access AsyncIUnknown;
         riid : access constant IID
      ) return HRESULT is abstract;
      function Finish_QueryInterface(
         This : access AsyncIUnknown;
         ppvObject : access LPVOID
      ) return HRESULT is abstract;
      function Begin_AddRef(This : access AsyncIUnknown) return HRESULT is abstract;
      function Finish_AddRef(This : access AsyncIUnknown) return ULONG is abstract;
      function Begin_Release(This : access AsyncIUnknown) return HRESULT is abstract;
      function Finish_Release(This : access AsyncIUnknown) return ULONG is abstract;
   type AsyncIUnknown_Ptr is access all AsyncIUnknown'Class;
   type LPCLASSFACTORY is access all IClassFactory;
   IID_IClassFactory : aliased constant IID;
   pragma import (C,IID_IClassFactory,"IID_IClassFactory");
   type IClassFactory is limited interface and IUnknown;
      function CreateInstance(
         This : access IClassFactory;
         pUnkOuter : access IUnknown'Class;
         riid : access constant IID;
         ppvObject : access LPVOID
      ) return HRESULT is abstract;
      function LockServer(
         This : access IClassFactory;
         fLock : BOOL
      ) return HRESULT is abstract;
   type IClassFactory_Ptr is access all IClassFactory'Class;
   function IClassFactory_RemoteCreateInstance_Proxy(
      This : access IClassFactory'Class;
      riid : access constant IID;
      ppvObject : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IClassFactory_RemoteCreateInstance_Proxy,"IClassFactory_RemoteCreateInstance_Proxy");
   procedure IClassFactory_RemoteCreateInstance_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IClassFactory_RemoteCreateInstance_Stub,"IClassFactory_RemoteCreateInstance_Stub");
   function IClassFactory_RemoteLockServer_Proxy(
      This : access IClassFactory'Class;
      fLock : BOOL
   ) return HRESULT;
   pragma import (Cpp,IClassFactory_RemoteLockServer_Proxy,"IClassFactory_RemoteLockServer_Proxy");
   procedure IClassFactory_RemoteLockServer_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IClassFactory_RemoteLockServer_Stub,"IClassFactory_RemoteLockServer_Stub");
   function IClassFactory_CreateInstance_Proxy(
      This : access IClassFactory'Class;
      pUnkOuter : access IUnknown'Class;
      riid : access constant IID;
      ppvObject : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,IClassFactory_CreateInstance_Proxy,"IClassFactory_CreateInstance_Proxy");
   function IClassFactory_CreateInstance_Stub(
      This : access IClassFactory'Class;
      riid : access constant IID;
      ppvObject : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IClassFactory_CreateInstance_Stub,"IClassFactory_CreateInstance_Stub");
   function IClassFactory_LockServer_Proxy(
      This : access IClassFactory'Class;
      fLock : BOOL
   ) return HRESULT;
   pragma import (Cpp,IClassFactory_LockServer_Proxy,"IClassFactory_LockServer_Proxy");
   function IClassFactory_LockServer_Stub(
      This : access IClassFactory'Class;
      fLock : BOOL
   ) return HRESULT;
   pragma import (Cpp,IClassFactory_LockServer_Stub,"IClassFactory_LockServer_Stub");
   -- #include <combaseapi.h>
   -- #include <objidlbase.h>
   type IMarshal;
   type INoMarshal;
   type IAgileObject;
   type IActivationFilter;
   type IMarshal2;
   type IMalloc;
   type IStdMarshalInfo;
   type IExternalConnection;
   type IMultiQI;
   type AsyncIMultiQI;
   type IInternalUnknown;
   type IEnumUnknown;
   type IEnumString;
   type ISequentialStream;
   type IStream;
   type IRpcChannelBuffer2;
   type IAsyncRpcChannelBuffer;
   type IRpcChannelBuffer3;
   type IRpcSyntaxNegotiate;
   type IRpcProxyBuffer;
   type IPSFactoryBuffer;
   type IChannelHook;
   type IClientSecurity;
   type IServerSecurity;
   type IRpcOptions;
   type IGlobalOptions;
   type ISurrogate;
   type IGlobalInterfaceTable;
   type ISynchronize;
   type ISynchronizeHandle;
   type ISynchronizeEvent;
   type ISynchronizeContainer;
   type ISynchronizeMutex;
   type ICancelMethodCalls;
   type IAsyncManager;
   type ICallFactory;
   type IRpcHelper;
   type IReleaseMarshalBuffers;
   type IWaitMultiple;
   type IAddrTrackingControl;
   type IAddrExclusionControl;
   type IPipeByte;
   type AsyncIPipeByte;
   type IPipeLong;
   type AsyncIPipeLong;
   type IPipeDouble;
   type AsyncIPipeDouble;
   type IEnumContextProps;
   type IContext;
   type IObjContext;
   type IComThreadingInfo;
   type IProcessInitControl;
   type IFastRundown;
   type IMarshalingStream;
   type IAgileReference;
   type COSERVERINFO_x is record
      dwReserved1 : DWORD;
      pwszName : LPWSTR;
      pAuthInfo : access COAUTHINFO;
      dwReserved2 : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,COSERVERINFO_x);
   for COSERVERINFO_x use record
      dwReserved1 at 0 range 0..31;
      pwszName at 0 range 64..127;
      pAuthInfo at 0 range 128..191;
      dwReserved2 at 0 range 192..223;
   end record;
   for COSERVERINFO_x'Size use 256;
   for COSERVERINFO_x'Alignment use 8;
   subtype COSERVERINFO is COSERVERINFO_x;
   type LPMARSHAL is access all IMarshal;
   IID_IMarshal : aliased constant IID;
   pragma import (C,IID_IMarshal,"IID_IMarshal");
   type IMarshal is limited interface and IUnknown;
      function GetUnmarshalClass(
         This : access IMarshal;
         riid : access constant IID;
         pv : access Void;
         dwDestContext : DWORD;
         pvDestContext : access Void;
         mshlflags_x : DWORD;
         pCid : access CLSID
      ) return HRESULT is abstract;
      function GetMarshalSizeMax(
         This : access IMarshal;
         riid : access constant IID;
         pv : access Void;
         dwDestContext : DWORD;
         pvDestContext : access Void;
         mshlflags_x : DWORD;
         pSize_x : access DWORD
      ) return HRESULT is abstract;
      function MarshalInterface(
         This : access IMarshal;
         pStm : access IStream'Class;
         riid : access constant IID;
         pv : access Void;
         dwDestContext : DWORD;
         pvDestContext : access Void;
         mshlflags_x : DWORD
      ) return HRESULT is abstract;
      function UnmarshalInterface(
         This : access IMarshal;
         pStm : access IStream'Class;
         riid : access constant IID;
         ppv : access LPVOID
      ) return HRESULT is abstract;
      function ReleaseMarshalData(
         This : access IMarshal;
         pStm : access IStream'Class
      ) return HRESULT is abstract;
      function DisconnectObject(
         This : access IMarshal;
         dwReserved : DWORD
      ) return HRESULT is abstract;
   type IMarshal_Ptr is access all IMarshal'Class;
   IID_INoMarshal : aliased constant IID;
   pragma import (C,IID_INoMarshal,"IID_INoMarshal");
   IID_IAgileObject : aliased constant IID;
   pragma import (C,IID_IAgileObject,"IID_IAgileObject");
   type tagACTIVATIONTYPE is (
      ACTIVATIONTYPE_UNCATEGORIZED,
      ACTIVATIONTYPE_FROM_MONIKER,
      ACTIVATIONTYPE_FROM_DATA,
      ACTIVATIONTYPE_FROM_STORAGE,
      ACTIVATIONTYPE_FROM_STREAM,
      ACTIVATIONTYPE_FROM_FILE
   );
   for tagACTIVATIONTYPE use (
      ACTIVATIONTYPE_UNCATEGORIZED => 0,
      ACTIVATIONTYPE_FROM_MONIKER => 1,
      ACTIVATIONTYPE_FROM_DATA => 2,
      ACTIVATIONTYPE_FROM_STORAGE => 4,
      ACTIVATIONTYPE_FROM_STREAM => 8,
      ACTIVATIONTYPE_FROM_FILE => 16
   );
   for tagACTIVATIONTYPE'Size use 32;
   subtype ACTIVATIONTYPE is tagACTIVATIONTYPE;
   IID_IActivationFilter : aliased constant IID;
   pragma import (C,IID_IActivationFilter,"IID_IActivationFilter");
   type IActivationFilter is limited interface and IUnknown;
      function HandleActivation(
         This : access IActivationFilter;
         dwActivationType : DWORD;
         rclsid : access constant IID;
         pReplacementClsId : access CLSID
      ) return HRESULT is abstract;
   type IActivationFilter_Ptr is access all IActivationFilter'Class;
   type LPMARSHAL2 is access all IMarshal2;
   IID_IMarshal2 : aliased constant IID;
   pragma import (C,IID_IMarshal2,"IID_IMarshal2");
   type LPMALLOC is access all IMalloc;
   IID_IMalloc : aliased constant IID;
   pragma import (C,IID_IMalloc,"IID_IMalloc");
   type IMalloc is limited interface and IUnknown;
      procedure Alloc(
         This : access IMalloc;
         cb : SIZE_T
      ) is abstract;
      procedure Realloc_x(
         This : access IMalloc;
         pv : access Void;
         cb : SIZE_T
      ) is abstract;
      procedure Free_x(
         This : access IMalloc;
         pv : access Void
      ) is abstract;
      function GetSize(
         This : access IMalloc;
         pv : access Void
      ) return SIZE_T is abstract;
      function DidAlloc(
         This : access IMalloc;
         pv : access Void
      ) return Interfaces.C.Int is abstract;
      procedure HeapMinimize(This : access IMalloc) is abstract;
   type IMalloc_Ptr is access all IMalloc'Class;
   type LPSTDMARSHALINFO is access all IStdMarshalInfo;
   IID_IStdMarshalInfo : aliased constant IID;
   pragma import (C,IID_IStdMarshalInfo,"IID_IStdMarshalInfo");
   type IStdMarshalInfo is limited interface and IUnknown;
      function GetClassForHandler(
         This : access IStdMarshalInfo;
         dwDestContext : DWORD;
         pvDestContext : access Void;
         pClsid : access CLSID
      ) return HRESULT is abstract;
   type IStdMarshalInfo_Ptr is access all IStdMarshalInfo'Class;
   type LPEXTERNALCONNECTION is access all IExternalConnection;
   type tagEXTCONN is (
      EXTCONN_STRONG,
      EXTCONN_WEAK,
      EXTCONN_CALLABLE
   );
   for tagEXTCONN use (
      EXTCONN_STRONG => 1,
      EXTCONN_WEAK => 2,
      EXTCONN_CALLABLE => 4
   );
   for tagEXTCONN'Size use 32;
   subtype EXTCONN is tagEXTCONN;
   IID_IExternalConnection : aliased constant IID;
   pragma import (C,IID_IExternalConnection,"IID_IExternalConnection");
   type IExternalConnection is limited interface and IUnknown;
      function AddConnection(
         This : access IExternalConnection;
         extconn_x : DWORD;
         reserved : DWORD
      ) return DWORD is abstract;
      function ReleaseConnection(
         This : access IExternalConnection;
         extconn_x : DWORD;
         reserved : DWORD;
         fLastReleaseCloses : BOOL
      ) return DWORD is abstract;
   type IExternalConnection_Ptr is access all IExternalConnection'Class;
   type LPMULTIQI is access all IMultiQI;
   type tagMULTI_QI is record
      pIID : access constant IID;
      pItf : access IUnknown'Class;
      hr : HRESULT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMULTI_QI);
   for tagMULTI_QI use record
      pIID at 0 range 0..63;
      pItf at 0 range 64..127;
      hr at 0 range 128..159;
   end record;
   for tagMULTI_QI'Size use 192;
   for tagMULTI_QI'Alignment use 8;
   subtype MULTI_QI is tagMULTI_QI;
   IID_IMultiQI : aliased constant IID;
   pragma import (C,IID_IMultiQI,"IID_IMultiQI");
   type IMultiQI is limited interface and IUnknown;
      function QueryMultipleInterfaces(
         This : access IMultiQI;
         cMQIs : ULONG;
         pMQIs : access MULTI_QI
      ) return HRESULT is abstract;
   type IMultiQI_Ptr is access all IMultiQI'Class;
   IID_AsyncIMultiQI : aliased constant IID;
   pragma import (C,IID_AsyncIMultiQI,"IID_AsyncIMultiQI");
   type AsyncIMultiQI is limited interface and IUnknown;
      function Begin_QueryMultipleInterfaces(
         This : access AsyncIMultiQI;
         cMQIs : ULONG;
         pMQIs : access MULTI_QI
      ) return HRESULT is abstract;
      function Finish_QueryMultipleInterfaces(
         This : access AsyncIMultiQI;
         pMQIs : access MULTI_QI
      ) return HRESULT is abstract;
   type AsyncIMultiQI_Ptr is access all AsyncIMultiQI'Class;
   IID_IInternalUnknown : aliased constant IID;
   pragma import (C,IID_IInternalUnknown,"IID_IInternalUnknown");
   type IInternalUnknown is limited interface and IUnknown;
      function QueryInternalInterface(
         This : access IInternalUnknown;
         riid : access constant IID;
         ppv : access LPVOID
      ) return HRESULT is abstract;
   type IInternalUnknown_Ptr is access all IInternalUnknown'Class;
   type LPENUMUNKNOWN is access all IEnumUnknown;
   IID_IEnumUnknown : aliased constant IID;
   pragma import (C,IID_IEnumUnknown,"IID_IEnumUnknown");
   type IEnumUnknown_Ptr is access all IEnumUnknown; -- Auto Generated Dependancy
   type IEnumUnknown is limited interface and IUnknown;
      function Next(
         This : access IEnumUnknown;
         celt : ULONG;
         rgelt : access IUnknown_Ptr;
         pceltFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumUnknown;
         celt : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumUnknown) return HRESULT is abstract;
      function Clone(
         This : access IEnumUnknown;
         ppenum : access IEnumUnknown_Ptr
      ) return HRESULT is abstract;
   function IEnumUnknown_RemoteNext_Proxy(
      This : access IEnumUnknown'Class;
      celt : ULONG;
      rgelt : access IUnknown_Ptr;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumUnknown_RemoteNext_Proxy,"IEnumUnknown_RemoteNext_Proxy");
   procedure IEnumUnknown_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumUnknown_RemoteNext_Stub,"IEnumUnknown_RemoteNext_Stub");
   type LPENUMSTRING is access all IEnumString;
   IID_IEnumString : aliased constant IID;
   pragma import (C,IID_IEnumString,"IID_IEnumString");
   type IEnumString_Ptr is access all IEnumString; -- Auto Generated Dependancy
   type IEnumString is limited interface and IUnknown;
      function Next(
         This : access IEnumString;
         celt : ULONG;
         rgelt : access LPOLESTR;
         pceltFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumString;
         celt : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumString) return HRESULT is abstract;
      function Clone(
         This : access IEnumString;
         ppenum : access IEnumString_Ptr
      ) return HRESULT is abstract;
   function IEnumString_RemoteNext_Proxy(
      This : access IEnumString'Class;
      celt : ULONG;
      rgelt : access LPOLESTR;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumString_RemoteNext_Proxy,"IEnumString_RemoteNext_Proxy");
   procedure IEnumString_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumString_RemoteNext_Stub,"IEnumString_RemoteNext_Stub");
   IID_ISequentialStream : aliased constant IID;
   pragma import (C,IID_ISequentialStream,"IID_ISequentialStream");
   type ISequentialStream is limited interface and IUnknown;
      function Read(
         This : access ISequentialStream;
         pv : access Void;
         cb : ULONG;
         pcbRead : access ULONG
      ) return HRESULT is abstract;
      function Write(
         This : access ISequentialStream;
         pv : access Void;
         cb : ULONG;
         pcbWritten : access ULONG
      ) return HRESULT is abstract;
   type ISequentialStream_Ptr is access all ISequentialStream'Class;
   function ISequentialStream_RemoteRead_Proxy(
      This : access ISequentialStream'Class;
      pv : access byte;
      cb : ULONG;
      pcbRead : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ISequentialStream_RemoteRead_Proxy,"ISequentialStream_RemoteRead_Proxy");
   procedure ISequentialStream_RemoteRead_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ISequentialStream_RemoteRead_Stub,"ISequentialStream_RemoteRead_Stub");
   function ISequentialStream_RemoteWrite_Proxy(
      This : access ISequentialStream'Class;
      pv : access constant byte;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ISequentialStream_RemoteWrite_Proxy,"ISequentialStream_RemoteWrite_Proxy");
   procedure ISequentialStream_RemoteWrite_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ISequentialStream_RemoteWrite_Stub,"ISequentialStream_RemoteWrite_Stub");
   type LPSTREAM is access all IStream;
   type tagSTATSTG is record
      pwcsName : LPOLESTR;
      type_x : DWORD;
      cbSize : ULARGE_INTEGER;
      mtime : FILETIME;
      ctime : FILETIME;
      atime : FILETIME;
      grfMode : DWORD;
      grfLocksSupported : DWORD;
      clsid_x : CLSID;
      grfStateBits : DWORD;
      reserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSTATSTG);
   for tagSTATSTG use record
      pwcsName at 0 range 0..63;
      type_x at 0 range 64..95;
      cbSize at 0 range 128..191;
      mtime at 0 range 192..255;
      ctime at 0 range 256..319;
      atime at 0 range 320..383;
      grfMode at 0 range 384..415;
      grfLocksSupported at 0 range 416..447;
      clsid_x at 0 range 448..575;
      grfStateBits at 0 range 576..607;
      reserved at 0 range 608..639;
   end record;
   for tagSTATSTG'Size use 640;
   for tagSTATSTG'Alignment use 8;
   subtype STATSTG is tagSTATSTG;
   type tagSTGTY is (
      STGTY_STORAGE,
      STGTY_STREAM,
      STGTY_LOCKBYTES,
      STGTY_PROPERTY
   );
   for tagSTGTY use (
      STGTY_STORAGE => 1,
      STGTY_STREAM => 2,
      STGTY_LOCKBYTES => 3,
      STGTY_PROPERTY => 4
   );
   for tagSTGTY'Size use 32;
   subtype STGTY is tagSTGTY;
   type tagSTREAM_SEEK is (
      STREAM_SEEK_SET,
      STREAM_SEEK_CUR,
      STREAM_SEEK_END
   );
   for tagSTREAM_SEEK use (
      STREAM_SEEK_SET => 0,
      STREAM_SEEK_CUR => 1,
      STREAM_SEEK_END => 2
   );
   for tagSTREAM_SEEK'Size use 32;
   subtype STREAM_SEEK is tagSTREAM_SEEK;
   type tagLOCKTYPE is (
      LOCK_WRITE,
      LOCK_EXCLUSIVE,
      LOCK_ONLYONCE
   );
   for tagLOCKTYPE use (
      LOCK_WRITE => 1,
      LOCK_EXCLUSIVE => 2,
      LOCK_ONLYONCE => 4
   );
   for tagLOCKTYPE'Size use 32;
   subtype LOCKTYPE is tagLOCKTYPE;
   IID_IStream : aliased constant IID;
   pragma import (C,IID_IStream,"IID_IStream");
   type IStream_Ptr is access all IStream; -- Auto Generated Dependancy
   type IStream is limited interface and ISequentialStream;
      function Seek(
         This : access IStream;
         dlibMove : LARGE_INTEGER;
         dwOrigin : DWORD;
         plibNewPosition : access ULARGE_INTEGER
      ) return HRESULT is abstract;
      function SetSize(
         This : access IStream;
         libNewSize : ULARGE_INTEGER
      ) return HRESULT is abstract;
      function CopyTo(
         This : access IStream;
         pstm : access IStream'Class;
         cb : ULARGE_INTEGER;
         pcbRead : access ULARGE_INTEGER;
         pcbWritten : access ULARGE_INTEGER
      ) return HRESULT is abstract;
      function Commit(
         This : access IStream;
         grfCommitFlags : DWORD
      ) return HRESULT is abstract;
      function Revert(This : access IStream) return HRESULT is abstract;
      function LockRegion(
         This : access IStream;
         libOffset : ULARGE_INTEGER;
         cb : ULARGE_INTEGER;
         dwLockType : DWORD
      ) return HRESULT is abstract;
      function UnlockRegion(
         This : access IStream;
         libOffset : ULARGE_INTEGER;
         cb : ULARGE_INTEGER;
         dwLockType : DWORD
      ) return HRESULT is abstract;
      function Stat(
         This : access IStream;
         pstatstg : access STATSTG;
         grfStatFlag : DWORD
      ) return HRESULT is abstract;
      function Clone(
         This : access IStream;
         ppstm : access IStream_Ptr
      ) return HRESULT is abstract;
   function IStream_RemoteSeek_Proxy(
      This : access IStream'Class;
      dlibMove : LARGE_INTEGER;
      dwOrigin : DWORD;
      plibNewPosition : access ULARGE_INTEGER
   ) return HRESULT;
   pragma import (Cpp,IStream_RemoteSeek_Proxy,"IStream_RemoteSeek_Proxy");
   procedure IStream_RemoteSeek_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IStream_RemoteSeek_Stub,"IStream_RemoteSeek_Stub");
   function IStream_RemoteCopyTo_Proxy(
      This : access IStream'Class;
      pstm : access IStream'Class;
      cb : ULARGE_INTEGER;
      pcbRead : access ULARGE_INTEGER;
      pcbWritten : access ULARGE_INTEGER
   ) return HRESULT;
   pragma import (Cpp,IStream_RemoteCopyTo_Proxy,"IStream_RemoteCopyTo_Proxy");
   procedure IStream_RemoteCopyTo_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IStream_RemoteCopyTo_Stub,"IStream_RemoteCopyTo_Stub");
   subtype RPCOLEDATAREP is ULONG;
   type tagRPCOLEMESSAGE_reserved2_Array is array(1..5) of access Void; -- Auto Generated Dependancy
   type tagRPCOLEMESSAGE is record
      reserved1 : access Void;
      dataRepresentation : RPCOLEDATAREP;
      Buffer : access Void;
      cbBuffer : ULONG;
      iMethod : ULONG;
      reserved2 : tagRPCOLEMESSAGE_reserved2_Array;
      rpcFlags : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRPCOLEMESSAGE);
   for tagRPCOLEMESSAGE use record
      reserved1 at 0 range 0..63;
      dataRepresentation at 0 range 64..95;
      Buffer at 0 range 128..191;
      cbBuffer at 0 range 192..223;
      iMethod at 0 range 224..255;
      reserved2 at 0 range 256..575;
      rpcFlags at 0 range 576..607;
   end record;
   for tagRPCOLEMESSAGE'Size use 640;
   for tagRPCOLEMESSAGE'Alignment use 8;
   subtype RPCOLEMESSAGE is tagRPCOLEMESSAGE;
   type PRPCOLEMESSAGE is access all RPCOLEMESSAGE;
   IID_IRpcChannelBuffer : aliased constant IID;
   pragma import (C,IID_IRpcChannelBuffer,"IID_IRpcChannelBuffer");
   type IRpcChannelBuffer is limited interface and IUnknown;
      function GetBuffer(
         This : access IRpcChannelBuffer;
         pMessage : access RPCOLEMESSAGE;
         riid : access constant IID
      ) return HRESULT is abstract;
      function SendReceive(
         This : access IRpcChannelBuffer;
         pMessage : access RPCOLEMESSAGE;
         pStatus : access ULONG
      ) return HRESULT is abstract;
      function FreeBuffer(
         This : access IRpcChannelBuffer;
         pMessage : access RPCOLEMESSAGE
      ) return HRESULT is abstract;
      function GetDestCtx(
         This : access IRpcChannelBuffer;
         pdwDestContext : access DWORD;
         ppvDestContext : access LPVOID
      ) return HRESULT is abstract;
      function IsConnected(This : access IRpcChannelBuffer) return HRESULT is abstract;
   type IRpcChannelBuffer_Ptr is access all IRpcChannelBuffer'Class;
   IID_IRpcChannelBuffer2 : aliased constant IID;
   pragma import (C,IID_IRpcChannelBuffer2,"IID_IRpcChannelBuffer2");
   type IRpcChannelBuffer2 is limited interface and IRpcChannelBuffer;
      function GetProtocolVersion(
         This : access IRpcChannelBuffer2;
         pdwVersion : access DWORD
      ) return HRESULT is abstract;
   type IRpcChannelBuffer2_Ptr is access all IRpcChannelBuffer2'Class;
   IID_IAsyncRpcChannelBuffer : aliased constant IID;
   pragma import (C,IID_IAsyncRpcChannelBuffer,"IID_IAsyncRpcChannelBuffer");
   type IAsyncRpcChannelBuffer is limited interface and IRpcChannelBuffer2;
      function Send_x(
         This : access IAsyncRpcChannelBuffer;
         pMsg_x : access RPCOLEMESSAGE;
         pSync : access ISynchronize'Class;
         pulStatus : access ULONG
      ) return HRESULT is abstract;
      function Receive(
         This : access IAsyncRpcChannelBuffer;
         pMsg_x : access RPCOLEMESSAGE;
         pulStatus : access ULONG
      ) return HRESULT is abstract;
      function GetDestCtxEx(
         This : access IAsyncRpcChannelBuffer;
         pMsg_x : access RPCOLEMESSAGE;
         pdwDestContext : access DWORD;
         ppvDestContext : access LPVOID
      ) return HRESULT is abstract;
   type IAsyncRpcChannelBuffer_Ptr is access all IAsyncRpcChannelBuffer'Class;
   IID_IRpcChannelBuffer3 : aliased constant IID;
   pragma import (C,IID_IRpcChannelBuffer3,"IID_IRpcChannelBuffer3");
   type IRpcChannelBuffer3 is limited interface and IRpcChannelBuffer2;
      function Send_x(
         This : access IRpcChannelBuffer3;
         pMsg_x : access RPCOLEMESSAGE;
         pulStatus : access ULONG
      ) return HRESULT is abstract;
      function Receive(
         This : access IRpcChannelBuffer3;
         pMsg_x : access RPCOLEMESSAGE;
         ulSize : ULONG;
         pulStatus : access ULONG
      ) return HRESULT is abstract;
      function Cancel(
         This : access IRpcChannelBuffer3;
         pMsg_x : access RPCOLEMESSAGE
      ) return HRESULT is abstract;
      function GetCallContext(
         This : access IRpcChannelBuffer3;
         pMsg_x : access RPCOLEMESSAGE;
         riid : access constant IID;
         pInterface : access LPVOID
      ) return HRESULT is abstract;
      function GetDestCtxEx(
         This : access IRpcChannelBuffer3;
         pMsg_x : access RPCOLEMESSAGE;
         pdwDestContext : access DWORD;
         ppvDestContext : access LPVOID
      ) return HRESULT is abstract;
      function GetState(
         This : access IRpcChannelBuffer3;
         pMsg_x : access RPCOLEMESSAGE;
         pState : access DWORD
      ) return HRESULT is abstract;
      function RegisterAsync(
         This : access IRpcChannelBuffer3;
         pMsg_x : access RPCOLEMESSAGE;
         pAsyncMgr : access IAsyncManager'Class
      ) return HRESULT is abstract;
   type IRpcChannelBuffer3_Ptr is access all IRpcChannelBuffer3'Class;
   IID_IRpcSyntaxNegotiate : aliased constant IID;
   pragma import (C,IID_IRpcSyntaxNegotiate,"IID_IRpcSyntaxNegotiate");
   type IRpcSyntaxNegotiate is limited interface and IUnknown;
      function NegotiateSyntax(
         This : access IRpcSyntaxNegotiate;
         pMsg_x : access RPCOLEMESSAGE
      ) return HRESULT is abstract;
   type IRpcSyntaxNegotiate_Ptr is access all IRpcSyntaxNegotiate'Class;
   IID_IRpcProxyBuffer : aliased constant IID;
   pragma import (C,IID_IRpcProxyBuffer,"IID_IRpcProxyBuffer");
   type IRpcProxyBuffer is limited interface and IUnknown;
      function Connect_x(
         This : access IRpcProxyBuffer;
         pRpcChannelBuffer : access IRpcChannelBuffer'Class
      ) return HRESULT is abstract;
      procedure Disconnect(This : access IRpcProxyBuffer) is abstract;
   type IRpcProxyBuffer_Ptr is access all IRpcProxyBuffer'Class;
   IID_IRpcStubBuffer : aliased constant IID;
   pragma import (C,IID_IRpcStubBuffer,"IID_IRpcStubBuffer");
   type IRpcStubBuffer is limited interface and IUnknown;
      function Connect_x(
         This : access IRpcStubBuffer;
         pUnkServer : access IUnknown'Class
      ) return HRESULT is abstract;
      procedure Disconnect(This : access IRpcStubBuffer) is abstract;
      function Invoke(
         This : access IRpcStubBuffer;
         prpcmsg : access RPCOLEMESSAGE;
         pRpcChannelBuffer : access IRpcChannelBuffer'Class
      ) return HRESULT is abstract;
      function CountRefs(This : access IRpcStubBuffer) return ULONG is abstract;
      function DebugServerQueryInterface(
         This : access IRpcStubBuffer;
         ppv : access LPVOID
      ) return HRESULT is abstract;
      procedure DebugServerRelease(
         This : access IRpcStubBuffer;
         pv : access Void
      ) is abstract;
   type IRpcStubBuffer_Ptr is access all IRpcStubBuffer'Class;
   IID_IPSFactoryBuffer : aliased constant IID;
   pragma import (C,IID_IPSFactoryBuffer,"IID_IPSFactoryBuffer");
   type IPSFactoryBuffer is limited interface and IUnknown;
      function CreateProxy(
         This : access IPSFactoryBuffer;
         pUnkOuter : access IUnknown'Class;
         riid : access constant IID;
         ppProxy : access IRpcProxyBuffer_Ptr;
         ppv : access LPVOID
      ) return HRESULT is abstract;
      function CreateStub(
         This : access IPSFactoryBuffer;
         riid : access constant IID;
         pUnkServer : access IUnknown'Class;
         ppStub : access IRpcStubBuffer_Ptr
      ) return HRESULT is abstract;
   type IPSFactoryBuffer_Ptr is access all IPSFactoryBuffer'Class;
   type SChannelHookCallInfo is record
      iid_x : IID;
      cbSize : DWORD;
      uCausality : GUID;
      dwServerPid : DWORD;
      iMethod : DWORD;
      pObject : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,SChannelHookCallInfo);
   for SChannelHookCallInfo use record
      iid_x at 0 range 0..127;
      cbSize at 0 range 128..159;
      uCausality at 0 range 160..287;
      dwServerPid at 0 range 288..319;
      iMethod at 0 range 320..351;
      pObject at 0 range 384..447;
   end record;
   for SChannelHookCallInfo'Size use 448;
   for SChannelHookCallInfo'Alignment use 8;
   IID_IChannelHook : aliased constant IID;
   pragma import (C,IID_IChannelHook,"IID_IChannelHook");
   type IChannelHook is limited interface and IUnknown;
      procedure ClientGetSize(
         This : access IChannelHook;
         uExtent : access constant GUID;
         riid : access constant IID;
         pDataSize : access ULONG
      ) is abstract;
      procedure ClientFillBuffer(
         This : access IChannelHook;
         uExtent : access constant GUID;
         riid : access constant IID;
         pDataSize : access ULONG;
         pDataBuffer : access Void
      ) is abstract;
      procedure ClientNotify(
         This : access IChannelHook;
         uExtent : access constant GUID;
         riid : access constant IID;
         cbDataSize : ULONG;
         pDataBuffer : access Void;
         lDataRep : DWORD;
         hrFault : HRESULT
      ) is abstract;
      procedure ServerNotify(
         This : access IChannelHook;
         uExtent : access constant GUID;
         riid : access constant IID;
         cbDataSize : ULONG;
         pDataBuffer : access Void;
         lDataRep : DWORD
      ) is abstract;
      procedure ServerGetSize(
         This : access IChannelHook;
         uExtent : access constant GUID;
         riid : access constant IID;
         hrFault : HRESULT;
         pDataSize : access ULONG
      ) is abstract;
      procedure ServerFillBuffer(
         This : access IChannelHook;
         uExtent : access constant GUID;
         riid : access constant IID;
         pDataSize : access ULONG;
         pDataBuffer : access Void;
         hrFault : HRESULT
      ) is abstract;
   type IChannelHook_Ptr is access all IChannelHook'Class;
   type tagSOLE_AUTHENTICATION_SERVICE is record
      dwAuthnSvc : DWORD;
      dwAuthzSvc : DWORD;
      pPrincipalName : access OLECHAR;
      hr : HRESULT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSOLE_AUTHENTICATION_SERVICE);
   for tagSOLE_AUTHENTICATION_SERVICE use record
      dwAuthnSvc at 0 range 0..31;
      dwAuthzSvc at 0 range 32..63;
      pPrincipalName at 0 range 64..127;
      hr at 0 range 128..159;
   end record;
   for tagSOLE_AUTHENTICATION_SERVICE'Size use 192;
   for tagSOLE_AUTHENTICATION_SERVICE'Alignment use 8;
   subtype SOLE_AUTHENTICATION_SERVICE is tagSOLE_AUTHENTICATION_SERVICE;
   type PSOLE_AUTHENTICATION_SERVICE is access all SOLE_AUTHENTICATION_SERVICE;
   type tagEOLE_AUTHENTICATION_CAPABILITIES is (
      EOAC_NONE,
      EOAC_MUTUAL_AUTH,
      EOAC_SECURE_REFS,
      EOAC_ACCESS_CONTROL,
      EOAC_APPID,
      EOAC_DYNAMIC,
      EOAC_STATIC_CLOAKING,
      EOAC_DYNAMIC_CLOAKING,
      EOAC_ANY_AUTHORITY,
      EOAC_MAKE_FULLSIC,
      EOAC_REQUIRE_FULLSIC,
      EOAC_AUTO_IMPERSONATE,
      EOAC_DEFAULT,
      EOAC_DISABLE_AAA,
      EOAC_NO_CUSTOM_MARSHAL,
      EOAC_RESERVED1
   );
   for tagEOLE_AUTHENTICATION_CAPABILITIES use (
      EOAC_NONE => 0,
      EOAC_MUTUAL_AUTH => 1,
      EOAC_SECURE_REFS => 2,
      EOAC_ACCESS_CONTROL => 4,
      EOAC_APPID => 8,
      EOAC_DYNAMIC => 16,
      EOAC_STATIC_CLOAKING => 32,
      EOAC_DYNAMIC_CLOAKING => 64,
      EOAC_ANY_AUTHORITY => 128,
      EOAC_MAKE_FULLSIC => 256,
      EOAC_REQUIRE_FULLSIC => 512,
      EOAC_AUTO_IMPERSONATE => 1024,
      EOAC_DEFAULT => 2048,
      EOAC_DISABLE_AAA => 4096,
      EOAC_NO_CUSTOM_MARSHAL => 8192,
      EOAC_RESERVED1 => 16384
   );
   for tagEOLE_AUTHENTICATION_CAPABILITIES'Size use 32;
   subtype EOLE_AUTHENTICATION_CAPABILITIES is tagEOLE_AUTHENTICATION_CAPABILITIES;
   type tagSOLE_AUTHENTICATION_INFO is record
      dwAuthnSvc : DWORD;
      dwAuthzSvc : DWORD;
      pAuthInfo : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSOLE_AUTHENTICATION_INFO);
   for tagSOLE_AUTHENTICATION_INFO use record
      dwAuthnSvc at 0 range 0..31;
      dwAuthzSvc at 0 range 32..63;
      pAuthInfo at 0 range 64..127;
   end record;
   for tagSOLE_AUTHENTICATION_INFO'Size use 128;
   for tagSOLE_AUTHENTICATION_INFO'Alignment use 8;
   subtype SOLE_AUTHENTICATION_INFO is tagSOLE_AUTHENTICATION_INFO;
   type PSOLE_AUTHENTICATION_INFO is access all tagSOLE_AUTHENTICATION_INFO;
   type tagSOLE_AUTHENTICATION_LIST is record
      cAuthInfo : DWORD;
      aAuthInfo : access SOLE_AUTHENTICATION_INFO;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSOLE_AUTHENTICATION_LIST);
   for tagSOLE_AUTHENTICATION_LIST use record
      cAuthInfo at 0 range 0..31;
      aAuthInfo at 0 range 64..127;
   end record;
   for tagSOLE_AUTHENTICATION_LIST'Size use 128;
   for tagSOLE_AUTHENTICATION_LIST'Alignment use 8;
   subtype SOLE_AUTHENTICATION_LIST is tagSOLE_AUTHENTICATION_LIST;
   type PSOLE_AUTHENTICATION_LIST is access all tagSOLE_AUTHENTICATION_LIST;
   IID_IClientSecurity : aliased constant IID;
   pragma import (C,IID_IClientSecurity,"IID_IClientSecurity");
   type IClientSecurity is limited interface and IUnknown;
      function QueryBlanket(
         This : access IClientSecurity;
         pProxy : access IUnknown'Class;
         pAuthnSvc : access DWORD;
         pAuthzSvc : access DWORD;
         pServerPrincName : access LPOLESTR;
         pAuthnLevel : access DWORD;
         pImpLevel : access DWORD;
         pAuthInfo : access LPVOID;
         pCapabilites : access DWORD
      ) return HRESULT is abstract;
      function SetBlanket(
         This : access IClientSecurity;
         pProxy : access IUnknown'Class;
         dwAuthnSvc : DWORD;
         dwAuthzSvc : DWORD;
         pServerPrincName : access OLECHAR;
         dwAuthnLevel : DWORD;
         dwImpLevel : DWORD;
         pAuthInfo : access Void;
         dwCapabilities : DWORD
      ) return HRESULT is abstract;
      function CopyProxy(
         This : access IClientSecurity;
         pProxy : access IUnknown'Class;
         ppCopy : access IUnknown_Ptr
      ) return HRESULT is abstract;
   type IClientSecurity_Ptr is access all IClientSecurity'Class;
   IID_IServerSecurity : aliased constant IID;
   pragma import (C,IID_IServerSecurity,"IID_IServerSecurity");
   type IServerSecurity is limited interface and IUnknown;
      function QueryBlanket(
         This : access IServerSecurity;
         pAuthnSvc : access DWORD;
         pAuthzSvc : access DWORD;
         pServerPrincName : access LPOLESTR;
         pAuthnLevel : access DWORD;
         pImpLevel : access DWORD;
         pPrivs : access LPVOID;
         pCapabilities : access DWORD
      ) return HRESULT is abstract;
      function ImpersonateClient(This : access IServerSecurity) return HRESULT is abstract;
      function RevertToSelf_x(This : access IServerSecurity) return HRESULT is abstract;
      function IsImpersonating(This : access IServerSecurity) return BOOL is abstract;
   type IServerSecurity_Ptr is access all IServerSecurity'Class;
   type tagRPCOPT_PROPERTIES is (
      COMBND_RPCTIMEOUT,
      COMBND_SERVER_LOCALITY,
      COMBND_RESERVED1,
      COMBND_RESERVED2,
      COMBND_RESERVED3,
      COMBND_RESERVED4
   );
   for tagRPCOPT_PROPERTIES use (
      COMBND_RPCTIMEOUT => 1,
      COMBND_SERVER_LOCALITY => 2,
      COMBND_RESERVED1 => 4,
      COMBND_RESERVED2 => 5,
      COMBND_RESERVED3 => 8,
      COMBND_RESERVED4 => 16
   );
   for tagRPCOPT_PROPERTIES'Size use 32;
   subtype RPCOPT_PROPERTIES is tagRPCOPT_PROPERTIES;
   type tagRPCOPT_SERVER_LOCALITY_VALUES is (
      SERVER_LOCALITY_PROCESS_LOCAL,
      SERVER_LOCALITY_MACHINE_LOCAL,
      SERVER_LOCALITY_REMOTE
   );
   for tagRPCOPT_SERVER_LOCALITY_VALUES use (
      SERVER_LOCALITY_PROCESS_LOCAL => 0,
      SERVER_LOCALITY_MACHINE_LOCAL => 1,
      SERVER_LOCALITY_REMOTE => 2
   );
   for tagRPCOPT_SERVER_LOCALITY_VALUES'Size use 32;
   subtype RPCOPT_SERVER_LOCALITY_VALUES is tagRPCOPT_SERVER_LOCALITY_VALUES;
   IID_IRpcOptions : aliased constant IID;
   pragma import (C,IID_IRpcOptions,"IID_IRpcOptions");
   type IRpcOptions is limited interface and IUnknown;
      function Set(
         This : access IRpcOptions;
         pPrx : access IUnknown'Class;
         dwProperty : RPCOPT_PROPERTIES;
         dwValue : ULONG_PTR
      ) return HRESULT is abstract;
      function Query(
         This : access IRpcOptions;
         pPrx : access IUnknown'Class;
         dwProperty : RPCOPT_PROPERTIES;
         pdwValue : access ULONG_PTR
      ) return HRESULT is abstract;
   type IRpcOptions_Ptr is access all IRpcOptions'Class;
   type tagGLOBALOPT_PROPERTIES is (
      COMGLB_EXCEPTION_HANDLING,
      COMGLB_APPID,
      COMGLB_RPC_THREADPOOL_SETTING,
      COMGLB_RO_SETTINGS,
      COMGLB_UNMARSHALING_POLICY,
      COMGLB_PROPERTIES_RESERVED1,
      COMGLB_PROPERTIES_RESERVED2,
      COMGLB_PROPERTIES_RESERVED3
   );
   for tagGLOBALOPT_PROPERTIES use (
      COMGLB_EXCEPTION_HANDLING => 1,
      COMGLB_APPID => 2,
      COMGLB_RPC_THREADPOOL_SETTING => 3,
      COMGLB_RO_SETTINGS => 4,
      COMGLB_UNMARSHALING_POLICY => 5,
      COMGLB_PROPERTIES_RESERVED1 => 6,
      COMGLB_PROPERTIES_RESERVED2 => 7,
      COMGLB_PROPERTIES_RESERVED3 => 8
   );
   for tagGLOBALOPT_PROPERTIES'Size use 32;
   subtype GLOBALOPT_PROPERTIES is tagGLOBALOPT_PROPERTIES;
   type tagGLOBALOPT_EH_VALUES is (
      COMGLB_EXCEPTION_HANDLE,
      COMGLB_EXCEPTION_DONOT_HANDLE_FATAL,
      COMGLB_EXCEPTION_DONOT_HANDLE_ANY
   );
   for tagGLOBALOPT_EH_VALUES use (
      COMGLB_EXCEPTION_HANDLE => 0,
      COMGLB_EXCEPTION_DONOT_HANDLE_FATAL => 1,
      COMGLB_EXCEPTION_DONOT_HANDLE_ANY => 2
   );
   for tagGLOBALOPT_EH_VALUES'Size use 32;
   subtype GLOBALOPT_EH_VALUES is tagGLOBALOPT_EH_VALUES;
   type tagGLOBALOPT_RPCTP_VALUES is (
      COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL,
      COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL
   );
   for tagGLOBALOPT_RPCTP_VALUES use (
      COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL => 0,
      COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL => 1
   );
   for tagGLOBALOPT_RPCTP_VALUES'Size use 32;
   subtype GLOBALOPT_RPCTP_VALUES is tagGLOBALOPT_RPCTP_VALUES;
   type tagGLOBALOPT_RO_FLAGS is (
      COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES,
      COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES,
      COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES,
      COMGLB_FAST_RUNDOWN,
      COMGLB_RESERVED1,
      COMGLB_RESERVED2,
      COMGLB_RESERVED3,
      COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES,
      COMGLB_RESERVED4,
      COMGLB_RESERVED5,
      COMGLB_RESERVED6
   );
   for tagGLOBALOPT_RO_FLAGS use (
      COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES => 1,
      COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES => 2,
      COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES => 4,
      COMGLB_FAST_RUNDOWN => 8,
      COMGLB_RESERVED1 => 16,
      COMGLB_RESERVED2 => 32,
      COMGLB_RESERVED3 => 64,
      COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES => 128,
      COMGLB_RESERVED4 => 256,
      COMGLB_RESERVED5 => 512,
      COMGLB_RESERVED6 => 1024
   );
   for tagGLOBALOPT_RO_FLAGS'Size use 32;
   subtype GLOBALOPT_RO_FLAGS is tagGLOBALOPT_RO_FLAGS;
   type tagGLOBALOPT_UNMARSHALING_POLICY_VALUES is (
      COMGLB_UNMARSHALING_POLICY_NORMAL,
      COMGLB_UNMARSHALING_POLICY_STRONG,
      COMGLB_UNMARSHALING_POLICY_HYBRID
   );
   for tagGLOBALOPT_UNMARSHALING_POLICY_VALUES use (
      COMGLB_UNMARSHALING_POLICY_NORMAL => 0,
      COMGLB_UNMARSHALING_POLICY_STRONG => 1,
      COMGLB_UNMARSHALING_POLICY_HYBRID => 2
   );
   for tagGLOBALOPT_UNMARSHALING_POLICY_VALUES'Size use 32;
   subtype GLOBALOPT_UNMARSHALING_POLICY_VALUES is tagGLOBALOPT_UNMARSHALING_POLICY_VALUES;
   IID_IGlobalOptions : aliased constant IID;
   pragma import (C,IID_IGlobalOptions,"IID_IGlobalOptions");
   type IGlobalOptions is limited interface and IUnknown;
      function Set(
         This : access IGlobalOptions;
         dwProperty : GLOBALOPT_PROPERTIES;
         dwValue : ULONG_PTR
      ) return HRESULT is abstract;
      function Query(
         This : access IGlobalOptions;
         dwProperty : GLOBALOPT_PROPERTIES;
         pdwValue : access ULONG_PTR
      ) return HRESULT is abstract;
   type IGlobalOptions_Ptr is access all IGlobalOptions'Class;
   type LPSURROGATE is access all ISurrogate;
   IID_ISurrogate : aliased constant IID;
   pragma import (C,IID_ISurrogate,"IID_ISurrogate");
   type ISurrogate is limited interface and IUnknown;
      function LoadDllServer(
         This : access ISurrogate;
         Clsid_x : access constant IID
      ) return HRESULT is abstract;
      function FreeSurrogate(This : access ISurrogate) return HRESULT is abstract;
   type ISurrogate_Ptr is access all ISurrogate'Class;
   type LPGLOBALINTERFACETABLE is access all IGlobalInterfaceTable;
   IID_IGlobalInterfaceTable : aliased constant IID;
   pragma import (C,IID_IGlobalInterfaceTable,"IID_IGlobalInterfaceTable");
   type IGlobalInterfaceTable is limited interface and IUnknown;
      function RegisterInterfaceInGlobal(
         This : access IGlobalInterfaceTable;
         pUnk : access IUnknown'Class;
         riid : access constant IID;
         pdwCookie : access DWORD
      ) return HRESULT is abstract;
      function RevokeInterfaceFromGlobal(
         This : access IGlobalInterfaceTable;
         dwCookie : DWORD
      ) return HRESULT is abstract;
      function GetInterfaceFromGlobal(
         This : access IGlobalInterfaceTable;
         dwCookie : DWORD;
         riid : access constant IID;
         ppv : access LPVOID
      ) return HRESULT is abstract;
   type IGlobalInterfaceTable_Ptr is access all IGlobalInterfaceTable'Class;
   IID_ISynchronize : aliased constant IID;
   pragma import (C,IID_ISynchronize,"IID_ISynchronize");
   type ISynchronize is limited interface and IUnknown;
      function Wait(
         This : access ISynchronize;
         dwFlags : DWORD;
         dwMilliseconds : DWORD
      ) return HRESULT is abstract;
      function Signal(This : access ISynchronize) return HRESULT is abstract;
      function Reset(This : access ISynchronize) return HRESULT is abstract;
   type ISynchronize_Ptr is access all ISynchronize'Class;
   IID_ISynchronizeHandle : aliased constant IID;
   pragma import (C,IID_ISynchronizeHandle,"IID_ISynchronizeHandle");
   type ISynchronizeHandle is limited interface and IUnknown;
      function GetHandle(
         This : access ISynchronizeHandle;
         ph : access HANDLE
      ) return HRESULT is abstract;
   type ISynchronizeHandle_Ptr is access all ISynchronizeHandle'Class;
   IID_ISynchronizeEvent : aliased constant IID;
   pragma import (C,IID_ISynchronizeEvent,"IID_ISynchronizeEvent");
   type ISynchronizeEvent is limited interface and ISynchronizeHandle;
      function SetEventHandle(
         This : access ISynchronizeEvent;
         ph : access HANDLE
      ) return HRESULT is abstract;
   type ISynchronizeEvent_Ptr is access all ISynchronizeEvent'Class;
   IID_ISynchronizeContainer : aliased constant IID;
   pragma import (C,IID_ISynchronizeContainer,"IID_ISynchronizeContainer");
   type ISynchronizeContainer is limited interface and IUnknown;
      function AddSynchronize(
         This : access ISynchronizeContainer;
         pSync : access ISynchronize'Class
      ) return HRESULT is abstract;
      function WaitMultiple(
         This : access ISynchronizeContainer;
         dwFlags : DWORD;
         dwTimeOut : DWORD;
         ppSync : access ISynchronize_Ptr
      ) return HRESULT is abstract;
   type ISynchronizeContainer_Ptr is access all ISynchronizeContainer'Class;
   IID_ISynchronizeMutex : aliased constant IID;
   pragma import (C,IID_ISynchronizeMutex,"IID_ISynchronizeMutex");
   type ISynchronizeMutex is limited interface and ISynchronize;
      function ReleaseMutex_x(This : access ISynchronizeMutex) return HRESULT is abstract;
   type ISynchronizeMutex_Ptr is access all ISynchronizeMutex'Class;
   type LPCANCELMETHODCALLS is access all ICancelMethodCalls;
   IID_ICancelMethodCalls : aliased constant IID;
   pragma import (C,IID_ICancelMethodCalls,"IID_ICancelMethodCalls");
   type ICancelMethodCalls is limited interface and IUnknown;
      function Cancel(
         This : access ICancelMethodCalls;
         ulSeconds : ULONG
      ) return HRESULT is abstract;
      function TestCancel(This : access ICancelMethodCalls) return HRESULT is abstract;
   type ICancelMethodCalls_Ptr is access all ICancelMethodCalls'Class;
   type tagDCOM_CALL_STATE is (
      DCOM_NONE,
      DCOM_CALL_COMPLETE,
      DCOM_CALL_CANCELED
   );
   for tagDCOM_CALL_STATE use (
      DCOM_NONE => 0,
      DCOM_CALL_COMPLETE => 1,
      DCOM_CALL_CANCELED => 2
   );
   for tagDCOM_CALL_STATE'Size use 32;
   subtype DCOM_CALL_STATE is tagDCOM_CALL_STATE;
   IID_IAsyncManager : aliased constant IID;
   pragma import (C,IID_IAsyncManager,"IID_IAsyncManager");
   type IAsyncManager is limited interface and IUnknown;
      function CompleteCall(
         This : access IAsyncManager;
         Result : HRESULT
      ) return HRESULT is abstract;
      function GetCallContext(
         This : access IAsyncManager;
         riid : access constant IID;
         pInterface : access LPVOID
      ) return HRESULT is abstract;
      function GetState(
         This : access IAsyncManager;
         pulStateFlags : access ULONG
      ) return HRESULT is abstract;
   type IAsyncManager_Ptr is access all IAsyncManager'Class;
   IID_ICallFactory : aliased constant IID;
   pragma import (C,IID_ICallFactory,"IID_ICallFactory");
   type ICallFactory is limited interface and IUnknown;
      function CreateCall(
         This : access ICallFactory;
         riid : access constant IID;
         pCtrlUnk : access IUnknown'Class;
         riid2 : access constant IID;
         ppv : access IUnknown_Ptr
      ) return HRESULT is abstract;
   type ICallFactory_Ptr is access all ICallFactory'Class;
   IID_IRpcHelper : aliased constant IID;
   pragma import (C,IID_IRpcHelper,"IID_IRpcHelper");
   type IRpcHelper is limited interface and IUnknown;
      function GetDCOMProtocolVersion(
         This : access IRpcHelper;
         pComVersion : access DWORD
      ) return HRESULT is abstract;
      function GetIIDFromOBJREF(
         This : access IRpcHelper;
         pObjRef : access Void;
         piid : access LPIID
      ) return HRESULT is abstract;
   type IRpcHelper_Ptr is access all IRpcHelper'Class;
   IID_IReleaseMarshalBuffers : aliased constant IID;
   pragma import (C,IID_IReleaseMarshalBuffers,"IID_IReleaseMarshalBuffers");
   type IReleaseMarshalBuffers is limited interface and IUnknown;
      function ReleaseMarshalBuffer(
         This : access IReleaseMarshalBuffers;
         pMsg_x : access RPCOLEMESSAGE;
         dwFlags : DWORD;
         pChnl : access IUnknown'Class
      ) return HRESULT is abstract;
   type IReleaseMarshalBuffers_Ptr is access all IReleaseMarshalBuffers'Class;
   IID_IWaitMultiple : aliased constant IID;
   pragma import (C,IID_IWaitMultiple,"IID_IWaitMultiple");
   type IWaitMultiple is limited interface and IUnknown;
      function WaitMultiple(
         This : access IWaitMultiple;
         timeout : DWORD;
         pSync : access ISynchronize_Ptr
      ) return HRESULT is abstract;
      function AddSynchronize(
         This : access IWaitMultiple;
         pSync : access ISynchronize'Class
      ) return HRESULT is abstract;
   type IWaitMultiple_Ptr is access all IWaitMultiple'Class;
   type LPADDRTRACKINGCONTROL is access all IAddrTrackingControl;
   IID_IAddrTrackingControl : aliased constant IID;
   pragma import (C,IID_IAddrTrackingControl,"IID_IAddrTrackingControl");
   type IAddrTrackingControl is limited interface and IUnknown;
      function EnableCOMDynamicAddrTracking(This : access IAddrTrackingControl) return HRESULT is abstract;
      function DisableCOMDynamicAddrTracking(This : access IAddrTrackingControl) return HRESULT is abstract;
   type IAddrTrackingControl_Ptr is access all IAddrTrackingControl'Class;
   type LPADDREXCLUSIONCONTROL is access all IAddrExclusionControl;
   IID_IAddrExclusionControl : aliased constant IID;
   pragma import (C,IID_IAddrExclusionControl,"IID_IAddrExclusionControl");
   type IAddrExclusionControl is limited interface and IUnknown;
      function GetCurrentAddrExclusionList(
         This : access IAddrExclusionControl;
         riid : access constant IID;
         ppEnumerator : access LPVOID
      ) return HRESULT is abstract;
      function UpdateAddrExclusionList(
         This : access IAddrExclusionControl;
         pEnumerator : access IUnknown'Class
      ) return HRESULT is abstract;
   type IAddrExclusionControl_Ptr is access all IAddrExclusionControl'Class;
   IID_IPipeByte : aliased constant IID;
   pragma import (C,IID_IPipeByte,"IID_IPipeByte");
   type IPipeByte is limited interface and IUnknown;
      function Pull(
         This : access IPipeByte;
         buf : access BYTE;
         cRequest : ULONG;
         pcReturned : access ULONG
      ) return HRESULT is abstract;
      function Push(
         This : access IPipeByte;
         buf : access BYTE;
         cSent : ULONG
      ) return HRESULT is abstract;
   type IPipeByte_Ptr is access all IPipeByte'Class;
   IID_AsyncIPipeByte : aliased constant IID;
   pragma import (C,IID_AsyncIPipeByte,"IID_AsyncIPipeByte");
   type AsyncIPipeByte is limited interface and IUnknown;
      function Begin_Pull(
         This : access AsyncIPipeByte;
         cRequest : ULONG
      ) return HRESULT is abstract;
      function Finish_Pull(
         This : access AsyncIPipeByte;
         buf : access BYTE;
         pcReturned : access ULONG
      ) return HRESULT is abstract;
      function Begin_Push(
         This : access AsyncIPipeByte;
         buf : access BYTE;
         cSent : ULONG
      ) return HRESULT is abstract;
      function Finish_Push(This : access AsyncIPipeByte) return HRESULT is abstract;
   type AsyncIPipeByte_Ptr is access all AsyncIPipeByte'Class;
   IID_IPipeLong : aliased constant IID;
   pragma import (C,IID_IPipeLong,"IID_IPipeLong");
   type IPipeLong is limited interface and IUnknown;
      function Pull(
         This : access IPipeLong;
         buf : access LONG;
         cRequest : ULONG;
         pcReturned : access ULONG
      ) return HRESULT is abstract;
      function Push(
         This : access IPipeLong;
         buf : access LONG;
         cSent : ULONG
      ) return HRESULT is abstract;
   type IPipeLong_Ptr is access all IPipeLong'Class;
   IID_AsyncIPipeLong : aliased constant IID;
   pragma import (C,IID_AsyncIPipeLong,"IID_AsyncIPipeLong");
   type AsyncIPipeLong is limited interface and IUnknown;
      function Begin_Pull(
         This : access AsyncIPipeLong;
         cRequest : ULONG
      ) return HRESULT is abstract;
      function Finish_Pull(
         This : access AsyncIPipeLong;
         buf : access LONG;
         pcReturned : access ULONG
      ) return HRESULT is abstract;
      function Begin_Push(
         This : access AsyncIPipeLong;
         buf : access LONG;
         cSent : ULONG
      ) return HRESULT is abstract;
      function Finish_Push(This : access AsyncIPipeLong) return HRESULT is abstract;
   type AsyncIPipeLong_Ptr is access all AsyncIPipeLong'Class;
   IID_IPipeDouble : aliased constant IID;
   pragma import (C,IID_IPipeDouble,"IID_IPipeDouble");
   type IPipeDouble is limited interface and IUnknown;
      function Pull(
         This : access IPipeDouble;
         buf : access DOUBLE;
         cRequest : ULONG;
         pcReturned : access ULONG
      ) return HRESULT is abstract;
      function Push(
         This : access IPipeDouble;
         buf : access DOUBLE;
         cSent : ULONG
      ) return HRESULT is abstract;
   type IPipeDouble_Ptr is access all IPipeDouble'Class;
   IID_AsyncIPipeDouble : aliased constant IID;
   pragma import (C,IID_AsyncIPipeDouble,"IID_AsyncIPipeDouble");
   type AsyncIPipeDouble is limited interface and IUnknown;
      function Begin_Pull(
         This : access AsyncIPipeDouble;
         cRequest : ULONG
      ) return HRESULT is abstract;
      function Finish_Pull(
         This : access AsyncIPipeDouble;
         buf : access DOUBLE;
         pcReturned : access ULONG
      ) return HRESULT is abstract;
      function Begin_Push(
         This : access AsyncIPipeDouble;
         buf : access DOUBLE;
         cSent : ULONG
      ) return HRESULT is abstract;
      function Finish_Push(This : access AsyncIPipeDouble) return HRESULT is abstract;
   type AsyncIPipeDouble_Ptr is access all AsyncIPipeDouble'Class;
   type APTTYPEQUALIFIER_x is (
      APTTYPEQUALIFIER_NONE,
      APTTYPEQUALIFIER_IMPLICIT_MTA,
      APTTYPEQUALIFIER_NA_ON_MTA,
      APTTYPEQUALIFIER_NA_ON_STA,
      APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA,
      APTTYPEQUALIFIER_NA_ON_MAINSTA,
      APTTYPEQUALIFIER_APPLICATION_STA,
      APTTYPEQUALIFIER_RESERVED_1
   );
   for APTTYPEQUALIFIER_x use (
      APTTYPEQUALIFIER_NONE => 0,
      APTTYPEQUALIFIER_IMPLICIT_MTA => 1,
      APTTYPEQUALIFIER_NA_ON_MTA => 2,
      APTTYPEQUALIFIER_NA_ON_STA => 3,
      APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA => 4,
      APTTYPEQUALIFIER_NA_ON_MAINSTA => 5,
      APTTYPEQUALIFIER_APPLICATION_STA => 6,
      APTTYPEQUALIFIER_RESERVED_1 => 7
   );
   for APTTYPEQUALIFIER_x'Size use 32;
   subtype APTTYPEQUALIFIER is APTTYPEQUALIFIER_x;
   type APTTYPE_x is (
      APTTYPE_CURRENT,
      APTTYPE_STA,
      APTTYPE_MTA,
      APTTYPE_NA,
      APTTYPE_MAINSTA
   );
   for APTTYPE_x use (
      APTTYPE_CURRENT => -1,
      APTTYPE_STA => 0,
      APTTYPE_MTA => 1,
      APTTYPE_NA => 2,
      APTTYPE_MAINSTA => 3
   );
   for APTTYPE_x'Size use 32;
   subtype APTTYPE is APTTYPE_x;
   type THDTYPE_x is (
      THDTYPE_BLOCKMESSAGES,
      THDTYPE_PROCESSMESSAGES
   );
   for THDTYPE_x use (
      THDTYPE_BLOCKMESSAGES => 0,
      THDTYPE_PROCESSMESSAGES => 1
   );
   for THDTYPE_x'Size use 32;
   subtype THDTYPE is THDTYPE_x;
   subtype APARTMENTID is DWORD;
   IID_IComThreadingInfo : aliased constant IID;
   pragma import (C,IID_IComThreadingInfo,"IID_IComThreadingInfo");
   type IComThreadingInfo is limited interface and IUnknown;
      function GetCurrentApartmentType(
         This : access IComThreadingInfo;
         pAptType : access APTTYPE
      ) return HRESULT is abstract;
      function GetCurrentThreadType(
         This : access IComThreadingInfo;
         pThreadType : access THDTYPE
      ) return HRESULT is abstract;
      function GetCurrentLogicalThreadId(
         This : access IComThreadingInfo;
         pguidLogicalThreadId : access GUID
      ) return HRESULT is abstract;
      function SetCurrentLogicalThreadId(
         This : access IComThreadingInfo;
         rguid : access constant GUID
      ) return HRESULT is abstract;
   type IComThreadingInfo_Ptr is access all IComThreadingInfo'Class;
   IID_IProcessInitControl : aliased constant IID;
   pragma import (C,IID_IProcessInitControl,"IID_IProcessInitControl");
   type IProcessInitControl is limited interface and IUnknown;
      function ResetInitializerTimeout(
         This : access IProcessInitControl;
         dwSecondsRemaining : DWORD
      ) return HRESULT is abstract;
   type IProcessInitControl_Ptr is access all IProcessInitControl'Class;
   IID_IFastRundown : aliased constant IID;
   pragma import (C,IID_IFastRundown,"IID_IFastRundown");
   type CO_MARSHALING_CONTEXT_ATTRIBUTES is (
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_1,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_2,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_3,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_4,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_5,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_6,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_7,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_8,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_9,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_10,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_11,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_12,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_13,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_14,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_15,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_16,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_17,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_18,
      CO_MARSHALING_SOURCE_IS_APP_CONTAINER
   );
   for CO_MARSHALING_CONTEXT_ATTRIBUTES use (
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_1 => -2147483648,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_2 => -2147483647,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_3 => -2147483646,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_4 => -2147483645,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_5 => -2147483644,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_6 => -2147483643,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_7 => -2147483642,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_8 => -2147483641,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_9 => -2147483640,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_10 => -2147483639,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_11 => -2147483638,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_12 => -2147483637,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_13 => -2147483636,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_14 => -2147483635,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_15 => -2147483634,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_16 => -2147483633,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_17 => -2147483632,
      CO_MARSHALING_CONTEXT_ATTRIBUTE_RESERVED_18 => -2147483631,
      CO_MARSHALING_SOURCE_IS_APP_CONTAINER => 0
   );
   for CO_MARSHALING_CONTEXT_ATTRIBUTES'Size use 32;
   IID_IMarshalingStream : aliased constant IID;
   pragma import (C,IID_IMarshalingStream,"IID_IMarshalingStream");
   type IMarshalingStream is limited interface and IStream;
      function GetMarshalingContextAttribute(
         This : access IMarshalingStream;
         attribute : CO_MARSHALING_CONTEXT_ATTRIBUTES;
         pAttributeValue : access ULONG_PTR
      ) return HRESULT is abstract;
   type IMarshalingStream_Ptr is access all IMarshalingStream'Class;
   IID_IAgileReference : aliased constant IID;
   pragma import (C,IID_IAgileReference,"IID_IAgileReference");
   type IAgileReference is limited interface and IUnknown;
      function Resolve(
         This : access IAgileReference;
         riid : access constant IID;
         ppvObjectReference : access LPVOID
      ) return HRESULT is abstract;
   type IAgileReference_Ptr is access all IAgileReference'Class;
   IID_ICallbackWithNoReentrancyToApplicationSTA : aliased constant GUID;
   pragma import (C,IID_ICallbackWithNoReentrancyToApplicationSTA,"IID_ICallbackWithNoReentrancyToApplicationSTA");
   function IEnumUnknown_Next_Proxy(
      This : access IEnumUnknown'Class;
      celt : ULONG;
      rgelt : access IUnknown_Ptr;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumUnknown_Next_Proxy,"IEnumUnknown_Next_Proxy");
   function IEnumUnknown_Next_Stub(
      This : access IEnumUnknown'Class;
      celt : ULONG;
      rgelt : access IUnknown_Ptr;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumUnknown_Next_Stub,"IEnumUnknown_Next_Stub");
   function IEnumString_Next_Proxy(
      This : access IEnumString'Class;
      celt : ULONG;
      rgelt : access LPOLESTR;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumString_Next_Proxy,"IEnumString_Next_Proxy");
   function IEnumString_Next_Stub(
      This : access IEnumString'Class;
      celt : ULONG;
      rgelt : access LPOLESTR;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumString_Next_Stub,"IEnumString_Next_Stub");
   function ISequentialStream_Read_Proxy(
      This : access ISequentialStream'Class;
      pv : access Void;
      cb : ULONG;
      pcbRead : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ISequentialStream_Read_Proxy,"ISequentialStream_Read_Proxy");
   function ISequentialStream_Read_Stub(
      This : access ISequentialStream'Class;
      pv : access byte;
      cb : ULONG;
      pcbRead : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ISequentialStream_Read_Stub,"ISequentialStream_Read_Stub");
   function ISequentialStream_Write_Proxy(
      This : access ISequentialStream'Class;
      pv : access Void;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ISequentialStream_Write_Proxy,"ISequentialStream_Write_Proxy");
   function ISequentialStream_Write_Stub(
      This : access ISequentialStream'Class;
      pv : access constant byte;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ISequentialStream_Write_Stub,"ISequentialStream_Write_Stub");
   function IStream_Seek_Proxy(
      This : access IStream'Class;
      dlibMove : LARGE_INTEGER;
      dwOrigin : DWORD;
      plibNewPosition : access ULARGE_INTEGER
   ) return HRESULT;
   pragma import (Cpp,IStream_Seek_Proxy,"IStream_Seek_Proxy");
   function IStream_Seek_Stub(
      This : access IStream'Class;
      dlibMove : LARGE_INTEGER;
      dwOrigin : DWORD;
      plibNewPosition : access ULARGE_INTEGER
   ) return HRESULT;
   pragma import (Cpp,IStream_Seek_Stub,"IStream_Seek_Stub");
   function IStream_CopyTo_Proxy(
      This : access IStream'Class;
      pstm : access IStream'Class;
      cb : ULARGE_INTEGER;
      pcbRead : access ULARGE_INTEGER;
      pcbWritten : access ULARGE_INTEGER
   ) return HRESULT;
   pragma import (Cpp,IStream_CopyTo_Proxy,"IStream_CopyTo_Proxy");
   function IStream_CopyTo_Stub(
      This : access IStream'Class;
      pstm : access IStream'Class;
      cb : ULARGE_INTEGER;
      pcbRead : access ULARGE_INTEGER;
      pcbWritten : access ULARGE_INTEGER
   ) return HRESULT;
   pragma import (Cpp,IStream_CopyTo_Stub,"IStream_CopyTo_Stub");
   -- #include <cguid.h>
   -- #include <combaseapi.h>
   function CoGetMalloc(
      dwMemContext : DWORD;
      ppMalloc : access LPMALLOC
   ) return HRESULT;
   pragma import (Cpp,CoGetMalloc,"CoGetMalloc");
   function CreateStreamOnHGlobal(
      hGlobal_x : HGLOBAL;
      fDeleteOnRelease : BOOL;
      ppstm : access LPSTREAM
   ) return HRESULT;
   pragma import (Cpp,CreateStreamOnHGlobal,"CreateStreamOnHGlobal");
   function GetHGlobalFromStream(
      pstm : LPSTREAM;
      phglobal : access HGLOBAL
   ) return HRESULT;
   pragma import (Cpp,GetHGlobalFromStream,"GetHGlobalFromStream");
   procedure CoUninitialize;
   pragma import (Cpp,CoUninitialize,"CoUninitialize");
   function CoGetCurrentProcess return DWORD;
   pragma import (Cpp,CoGetCurrentProcess,"CoGetCurrentProcess");
   function CoInitializeEx(
      pvReserved : LPVOID;
      dwCoInit : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoInitializeEx,"CoInitializeEx");
   function CoGetCallerTID(
      lpdwTID : LPDWORD
   ) return HRESULT;
   pragma import (Cpp,CoGetCallerTID,"CoGetCallerTID");
   function CoGetCurrentLogicalThreadId(
      pguid : access GUID
   ) return HRESULT;
   pragma import (Cpp,CoGetCurrentLogicalThreadId,"CoGetCurrentLogicalThreadId");
   function CoGetContextToken(
      pToken : access ULONG_PTR
   ) return HRESULT;
   pragma import (Cpp,CoGetContextToken,"CoGetContextToken");
   function CoGetDefaultContext(
      aptType_x : APTTYPE;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoGetDefaultContext,"CoGetDefaultContext");
   function CoGetApartmentType(
      pAptType : access APTTYPE;
      pAptQualifier : access APTTYPEQUALIFIER
   ) return HRESULT;
   pragma import (Cpp,CoGetApartmentType,"CoGetApartmentType");
   type tagServerInformation is record
      dwServerPid : DWORD;
      dwServerTid : DWORD;
      ui64ServerAddress : UINT64;
   end record;
   pragma Convention (C_Pass_By_Copy,tagServerInformation);
   for tagServerInformation use record
      dwServerPid at 0 range 0..31;
      dwServerTid at 0 range 32..63;
      ui64ServerAddress at 0 range 64..127;
   end record;
   for tagServerInformation'Size use 128;
   for tagServerInformation'Alignment use 8;
   subtype ServerInformation is tagServerInformation;
   type PServerInformation is access all tagServerInformation;
   function CoDecodeProxy(
      dwClientPid : DWORD;
      ui64ProxyAddress : UINT64;
      pserverinformation_x : PServerInformation
   ) return HRESULT;
   pragma import (Cpp,CoDecodeProxy,"CoDecodeProxy");
   type CO_MTA_USAGE_COOKIE_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,CO_MTA_USAGE_COOKIE_x);
   for CO_MTA_USAGE_COOKIE_x use record
      unused at 0 range 0..31;
   end record;
   for CO_MTA_USAGE_COOKIE_x'Size use 32;
   for CO_MTA_USAGE_COOKIE_x'Alignment use 4;
   type CO_MTA_USAGE_COOKIE is access all CO_MTA_USAGE_COOKIE_x;
   function CoIncrementMTAUsage(
      pCookie : access CO_MTA_USAGE_COOKIE
   ) return HRESULT;
   pragma import (Cpp,CoIncrementMTAUsage,"CoIncrementMTAUsage");
   function CoDecrementMTAUsage(
      Cookie : CO_MTA_USAGE_COOKIE
   ) return HRESULT;
   pragma import (Cpp,CoDecrementMTAUsage,"CoDecrementMTAUsage");
   function CoAllowUnmarshalerCLSID(
      clsid_x : access constant IID
   ) return HRESULT;
   pragma import (Cpp,CoAllowUnmarshalerCLSID,"CoAllowUnmarshalerCLSID");
   function CoGetObjectContext(
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoGetObjectContext,"CoGetObjectContext");
   function CoGetClassObject(
      rclsid : access constant IID;
      dwClsContext : DWORD;
      pvReserved : LPVOID;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoGetClassObject,"CoGetClassObject");
   function CoRegisterClassObject(
      rclsid : access constant IID;
      pUnk : LPUNKNOWN;
      dwClsContext : DWORD;
      flags : DWORD;
      lpdwRegister : LPDWORD
   ) return HRESULT;
   pragma import (Cpp,CoRegisterClassObject,"CoRegisterClassObject");
   function CoRevokeClassObject(
      dwRegister : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoRevokeClassObject,"CoRevokeClassObject");
   function CoResumeClassObjects return HRESULT;
   pragma import (Cpp,CoResumeClassObjects,"CoResumeClassObjects");
   function CoSuspendClassObjects return HRESULT;
   pragma import (Cpp,CoSuspendClassObjects,"CoSuspendClassObjects");
   function CoAddRefServerProcess return ULONG;
   pragma import (Cpp,CoAddRefServerProcess,"CoAddRefServerProcess");
   function CoReleaseServerProcess return ULONG;
   pragma import (Cpp,CoReleaseServerProcess,"CoReleaseServerProcess");
   function CoGetPSClsid(
      riid : access constant IID;
      pClsid : access CLSID
   ) return HRESULT;
   pragma import (Cpp,CoGetPSClsid,"CoGetPSClsid");
   function CoRegisterPSClsid(
      riid : access constant IID;
      rclsid : access constant IID
   ) return HRESULT;
   pragma import (Cpp,CoRegisterPSClsid,"CoRegisterPSClsid");
   function CoRegisterSurrogate(
      pSurrogate : LPSURROGATE
   ) return HRESULT;
   pragma import (Cpp,CoRegisterSurrogate,"CoRegisterSurrogate");
   function CoGetMarshalSizeMax(
      pulSize : access ULONG;
      riid : access constant IID;
      pUnk : LPUNKNOWN;
      dwDestContext : DWORD;
      pvDestContext : LPVOID;
      mshlflags_x : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoGetMarshalSizeMax,"CoGetMarshalSizeMax");
   function CoMarshalInterface(
      pStm : LPSTREAM;
      riid : access constant IID;
      pUnk : LPUNKNOWN;
      dwDestContext : DWORD;
      pvDestContext : LPVOID;
      mshlflags_x : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoMarshalInterface,"CoMarshalInterface");
   function CoUnmarshalInterface(
      pStm : LPSTREAM;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoUnmarshalInterface,"CoUnmarshalInterface");
   function CoMarshalHresult(
      pstm : LPSTREAM;
      hresult_x : HRESULT
   ) return HRESULT;
   pragma import (Cpp,CoMarshalHresult,"CoMarshalHresult");
   function CoUnmarshalHresult(
      pstm : LPSTREAM;
      phresult : access HRESULT
   ) return HRESULT;
   pragma import (Cpp,CoUnmarshalHresult,"CoUnmarshalHresult");
   function CoReleaseMarshalData(
      pStm : LPSTREAM
   ) return HRESULT;
   pragma import (Cpp,CoReleaseMarshalData,"CoReleaseMarshalData");
   function CoDisconnectObject(
      pUnk : LPUNKNOWN;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoDisconnectObject,"CoDisconnectObject");
   function CoLockObjectExternal(
      pUnk : LPUNKNOWN;
      fLock : BOOL;
      fLastUnlockReleases : BOOL
   ) return HRESULT;
   pragma import (Cpp,CoLockObjectExternal,"CoLockObjectExternal");
   function CoGetStandardMarshal(
      riid : access constant IID;
      pUnk : LPUNKNOWN;
      dwDestContext : DWORD;
      pvDestContext : LPVOID;
      mshlflags_x : DWORD;
      ppMarshal : access LPMARSHAL
   ) return HRESULT;
   pragma import (Cpp,CoGetStandardMarshal,"CoGetStandardMarshal");
   function CoGetStdMarshalEx(
      pUnkOuter : LPUNKNOWN;
      smexflags : DWORD;
      ppUnkInner : access LPUNKNOWN
   ) return HRESULT;
   pragma import (Cpp,CoGetStdMarshalEx,"CoGetStdMarshalEx");
   type tagSTDMSHLFLAGS is (
      SMEXF_SERVER,
      SMEXF_HANDLER
   );
   for tagSTDMSHLFLAGS use (
      SMEXF_SERVER => 1,
      SMEXF_HANDLER => 2
   );
   for tagSTDMSHLFLAGS'Size use 32;
   subtype STDMSHLFLAGS is tagSTDMSHLFLAGS;
   function CoIsHandlerConnected(
      pUnk : LPUNKNOWN
   ) return BOOL;
   pragma import (Cpp,CoIsHandlerConnected,"CoIsHandlerConnected");
   function CoMarshalInterThreadInterfaceInStream(
      riid : access constant IID;
      pUnk : LPUNKNOWN;
      ppStm : access LPSTREAM
   ) return HRESULT;
   pragma import (Cpp,CoMarshalInterThreadInterfaceInStream,"CoMarshalInterThreadInterfaceInStream");
   function CoGetInterfaceAndReleaseStream(
      pStm : LPSTREAM;
      iid_x : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoGetInterfaceAndReleaseStream,"CoGetInterfaceAndReleaseStream");
   function CoCreateFreeThreadedMarshaler(
      punkOuter : LPUNKNOWN;
      ppunkMarshal : access LPUNKNOWN
   ) return HRESULT;
   pragma import (Cpp,CoCreateFreeThreadedMarshaler,"CoCreateFreeThreadedMarshaler");
   procedure CoFreeUnusedLibraries;
   pragma import (Cpp,CoFreeUnusedLibraries,"CoFreeUnusedLibraries");
   procedure CoFreeUnusedLibrariesEx(
      dwUnloadDelay : DWORD;
      dwReserved : DWORD
   );
   pragma import (Cpp,CoFreeUnusedLibrariesEx,"CoFreeUnusedLibrariesEx");
   function CoDisconnectContext(
      dwTimeout : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoDisconnectContext,"CoDisconnectContext");
   function CoInitializeSecurity(
      pSecDesc : PSECURITY_DESCRIPTOR;
      cAuthSvc : LONG;
      asAuthSvc : access SOLE_AUTHENTICATION_SERVICE;
      pReserved1 : access Void;
      dwAuthnLevel : DWORD;
      dwImpLevel : DWORD;
      pAuthList : access Void;
      dwCapabilities : DWORD;
      pReserved3 : access Void
   ) return HRESULT;
   pragma import (Cpp,CoInitializeSecurity,"CoInitializeSecurity");
   function CoGetCallContext(
      riid : access constant IID;
      ppInterface : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoGetCallContext,"CoGetCallContext");
   function CoQueryProxyBlanket(
      pProxy : access IUnknown'Class;
      pwAuthnSvc : access DWORD;
      pAuthzSvc : access DWORD;
      pServerPrincName : access LPOLESTR;
      pAuthnLevel : access DWORD;
      pImpLevel : access DWORD;
      pAuthInfo : access RPC_AUTH_IDENTITY_HANDLE;
      pCapabilites : access DWORD
   ) return HRESULT;
   pragma import (Cpp,CoQueryProxyBlanket,"CoQueryProxyBlanket");
   function CoSetProxyBlanket(
      pProxy : access IUnknown'Class;
      dwAuthnSvc : DWORD;
      dwAuthzSvc : DWORD;
      pServerPrincName : access OLECHAR;
      dwAuthnLevel : DWORD;
      dwImpLevel : DWORD;
      pAuthInfo : RPC_AUTH_IDENTITY_HANDLE;
      dwCapabilities : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoSetProxyBlanket,"CoSetProxyBlanket");
   function CoCopyProxy(
      pProxy : access IUnknown'Class;
      ppCopy : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,CoCopyProxy,"CoCopyProxy");
   function CoQueryClientBlanket(
      pAuthnSvc : access DWORD;
      pAuthzSvc : access DWORD;
      pServerPrincName : access LPOLESTR;
      pAuthnLevel : access DWORD;
      pImpLevel : access DWORD;
      pPrivs : access RPC_AUTHZ_HANDLE;
      pCapabilities : access DWORD
   ) return HRESULT;
   pragma import (Cpp,CoQueryClientBlanket,"CoQueryClientBlanket");
   function CoImpersonateClient return HRESULT;
   pragma import (Cpp,CoImpersonateClient,"CoImpersonateClient");
   function CoRevertToSelf return HRESULT;
   pragma import (Cpp,CoRevertToSelf,"CoRevertToSelf");
   function CoQueryAuthenticationServices(
      pcAuthSvc : access DWORD;
      asAuthSvc : access PSOLE_AUTHENTICATION_SERVICE
   ) return HRESULT;
   pragma import (Cpp,CoQueryAuthenticationServices,"CoQueryAuthenticationServices");
   function CoSwitchCallContext(
      pNewObject : access IUnknown'Class;
      ppOldObject : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,CoSwitchCallContext,"CoSwitchCallContext");
   function CoCreateInstance(
      rclsid : access constant IID;
      pUnkOuter : LPUNKNOWN;
      dwClsContext : DWORD;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoCreateInstance,"CoCreateInstance");
   function CoCreateInstanceEx(
      Clsid_x : access constant IID;
      punkOuter : access IUnknown'Class;
      dwClsCtx : DWORD;
      pServerInfo : access COSERVERINFO;
      dwCount : DWORD;
      pResults : access MULTI_QI
   ) return HRESULT;
   pragma import (Cpp,CoCreateInstanceEx,"CoCreateInstanceEx");
   function CoCreateInstanceFromApp(
      Clsid_x : access constant IID;
      punkOuter : access IUnknown'Class;
      dwClsCtx : DWORD;
      reserved : PVOID;
      dwCount : DWORD;
      pResults : access MULTI_QI
   ) return HRESULT;
   pragma import (Cpp,CoCreateInstanceFromApp,"CoCreateInstanceFromApp");
   function CoRegisterActivationFilter(
      pActivationFilter : access IActivationFilter'Class
   ) return HRESULT;
   pragma import (Cpp,CoRegisterActivationFilter,"CoRegisterActivationFilter");
   function CoGetCancelObject(
      dwThreadId : DWORD;
      iid_x : access constant IID;
      ppUnk : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoGetCancelObject,"CoGetCancelObject");
   function CoSetCancelObject(
      pUnk : access IUnknown'Class
   ) return HRESULT;
   pragma import (Cpp,CoSetCancelObject,"CoSetCancelObject");
   function CoCancelCall(
      dwThreadId : DWORD;
      ulTimeout : ULONG
   ) return HRESULT;
   pragma import (Cpp,CoCancelCall,"CoCancelCall");
   function CoTestCancel return HRESULT;
   pragma import (Cpp,CoTestCancel,"CoTestCancel");
   function CoEnableCallCancellation(
      pReserved : LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoEnableCallCancellation,"CoEnableCallCancellation");
   function CoDisableCallCancellation(
      pReserved : LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoDisableCallCancellation,"CoDisableCallCancellation");
   function StringFromCLSID(
      rclsid : access constant IID;
      lplpsz : access LPOLESTR
   ) return HRESULT;
   pragma import (Cpp,StringFromCLSID,"StringFromCLSID");
   function CLSIDFromString(
      lpsz : LPCOLESTR;
      pclsid : LPCLSID
   ) return HRESULT;
   pragma import (Cpp,CLSIDFromString,"CLSIDFromString");
   function StringFromIID(
      rclsid : access constant IID;
      lplpsz : access LPOLESTR
   ) return HRESULT;
   pragma import (Cpp,StringFromIID,"StringFromIID");
   function IIDFromString(
      lpsz : LPCOLESTR;
      lpiid_x : LPIID
   ) return HRESULT;
   pragma import (Cpp,IIDFromString,"IIDFromString");
   function ProgIDFromCLSID(
      clsid_x : access constant IID;
      lplpszProgID : access LPOLESTR
   ) return HRESULT;
   pragma import (Cpp,ProgIDFromCLSID,"ProgIDFromCLSID");
   function CLSIDFromProgID(
      lpszProgID : LPCOLESTR;
      lpclsid_x : LPCLSID
   ) return HRESULT;
   pragma import (Cpp,CLSIDFromProgID,"CLSIDFromProgID");
   function StringFromGUID2(
      rguid : access constant GUID;
      lpsz : LPOLESTR;
      cchMax : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,StringFromGUID2,"StringFromGUID2");
   function CoCreateGuid(
      pguid : access GUID
   ) return HRESULT;
   pragma import (Cpp,CoCreateGuid,"CoCreateGuid");
   type tagPROPVARIANT;
   subtype PROPVARIANT is tagPROPVARIANT;
   function PropVariantCopy(
      pvarDest : access PROPVARIANT;
      pvarSrc : access constant PROPVARIANT
   ) return HRESULT;
   pragma import (Cpp,PropVariantCopy,"PropVariantCopy");
   function PropVariantClear(
      pvar : access PROPVARIANT
   ) return HRESULT;
   pragma import (Cpp,PropVariantClear,"PropVariantClear");
   function FreePropVariantArray(
      cVariants : ULONG;
      rgvars : access PROPVARIANT
   ) return HRESULT;
   pragma import (Cpp,FreePropVariantArray,"FreePropVariantArray");
   function CoWaitForMultipleHandles(
      dwFlags : DWORD;
      dwTimeout : DWORD;
      cHandles : ULONG;
      pHandles : LPHANDLE;
      lpdwindex : LPDWORD
   ) return HRESULT;
   pragma import (Cpp,CoWaitForMultipleHandles,"CoWaitForMultipleHandles");
   type tagCOWAIT_FLAGS is (
      COWAIT_DEFAULT,
      COWAIT_WAITALL,
      COWAIT_ALERTABLE,
      COWAIT_INPUTAVAILABLE,
      COWAIT_DISPATCH_CALLS,
      COWAIT_DISPATCH_WINDOW_MESSAGES
   );
   for tagCOWAIT_FLAGS use (
      COWAIT_DEFAULT => 0,
      COWAIT_WAITALL => 1,
      COWAIT_ALERTABLE => 2,
      COWAIT_INPUTAVAILABLE => 4,
      COWAIT_DISPATCH_CALLS => 8,
      COWAIT_DISPATCH_WINDOW_MESSAGES => 16
   );
   for tagCOWAIT_FLAGS'Size use 32;
   subtype COWAIT_FLAGS is tagCOWAIT_FLAGS;
   type CWMO_FLAGS is (
      CWMO_DEFAULT,
      CWMO_DISPATCH_CALLS,
      CWMO_DISPATCH_WINDOW_MESSAGES
   );
   for CWMO_FLAGS use (
      CWMO_DEFAULT => 0,
      CWMO_DISPATCH_CALLS => 1,
      CWMO_DISPATCH_WINDOW_MESSAGES => 2
   );
   for CWMO_FLAGS'Size use 32;
   function CoWaitForMultipleObjects(
      dwFlags : DWORD;
      dwTimeout : DWORD;
      cHandles : ULONG;
      pHandles : access constant HANDLE;
      lpdwindex : LPDWORD
   ) return HRESULT;
   pragma import (Cpp,CoWaitForMultipleObjects,"CoWaitForMultipleObjects");
   function CoGetTreatAsClass(
      clsidOld : access constant IID;
      pClsidNew : LPCLSID
   ) return HRESULT;
   pragma import (Cpp,CoGetTreatAsClass,"CoGetTreatAsClass");
   function CoInvalidateRemoteMachineBindings(
      pszMachineName : LPOLESTR
   ) return HRESULT;
   pragma import (Cpp,CoInvalidateRemoteMachineBindings,"CoInvalidateRemoteMachineBindings");
   type AgileReferenceOptions is (
      AGILEREFERENCE_DEFAULT,
      AGILEREFERENCE_DELAYEDMARSHAL
   );
   for AgileReferenceOptions use (
      AGILEREFERENCE_DEFAULT => 0,
      AGILEREFERENCE_DELAYEDMARSHAL => 1
   );
   for AgileReferenceOptions'Size use 32;
   function RoGetAgileReference(
      options : AgileReferenceOptions;
      riid : access constant IID;
      pUnk : access IUnknown'Class;
      ppAgileReference : access IAgileReference_Ptr
   ) return HRESULT;
   pragma import (Cpp,RoGetAgileReference,"RoGetAgileReference");
   type LPFNGETCLASSOBJECT is access function (p1 : access IID ; p2 : access IID ; p3 : access LPVOID) return HRESULT; -- HRESULT (const IID &, const IID &, LPVOID *)
   pragma Convention(C,LPFNGETCLASSOBJECT);
   type LPFNCANUNLOADNOW is access function  return HRESULT; -- HRESULT ()
   pragma Convention(C,LPFNCANUNLOADNOW);
   function DllGetClassObject(
      rclsid : access constant IID;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,DllGetClassObject,"DllGetClassObject");
   function DllCanUnloadNow return HRESULT;
   pragma import (Cpp,DllCanUnloadNow,"DllCanUnloadNow");
   procedure CoTaskMemAlloc(
      cb : SIZE_T
   );
   pragma import (Cpp,CoTaskMemAlloc,"CoTaskMemAlloc");
   procedure CoTaskMemRealloc(
      pv : LPVOID;
      cb : SIZE_T
   );
   pragma import (Cpp,CoTaskMemRealloc,"CoTaskMemRealloc");
   procedure CoTaskMemFree(
      pv : LPVOID
   );
   pragma import (Cpp,CoTaskMemFree,"CoTaskMemFree");
   function CoFileTimeNow(
      lpFileTime_x : access FILETIME
   ) return HRESULT;
   pragma import (Cpp,CoFileTimeNow,"CoFileTimeNow");
   function CLSIDFromProgIDEx(
      lpszProgID : LPCOLESTR;
      lpclsid_x : LPCLSID
   ) return HRESULT;
   pragma import (Cpp,CLSIDFromProgIDEx,"CLSIDFromProgIDEx");
   type CO_DEVICE_CATALOG_COOKIE_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,CO_DEVICE_CATALOG_COOKIE_x);
   for CO_DEVICE_CATALOG_COOKIE_x use record
      unused at 0 range 0..31;
   end record;
   for CO_DEVICE_CATALOG_COOKIE_x'Size use 32;
   for CO_DEVICE_CATALOG_COOKIE_x'Alignment use 4;
   type CO_DEVICE_CATALOG_COOKIE is access all CO_DEVICE_CATALOG_COOKIE_x;
   function CoRegisterDeviceCatalog(
      deviceInstanceId : PCWSTR;
      cookie : access CO_DEVICE_CATALOG_COOKIE
   ) return HRESULT;
   pragma import (Cpp,CoRegisterDeviceCatalog,"CoRegisterDeviceCatalog");
   function CoRevokeDeviceCatalog(
      cookie : CO_DEVICE_CATALOG_COOKIE
   ) return HRESULT;
   pragma import (Cpp,CoRevokeDeviceCatalog,"CoRevokeDeviceCatalog");
   -- #include <objidl.h>
   type IMallocSpy;
   type IBindCtx;
   type IEnumMoniker;
   type IRunnableObject;
   type IRunningObjectTable;
   type IPersist;
   type IPersistStream;
   type IMoniker;
   type IROTData;
   type IEnumSTATSTG;
   type IStorage;
   type IPersistFile;
   type IPersistStorage;
   type ILockBytes;
   type IEnumFORMATETC;
   type IEnumSTATDATA;
   type IRootStorage;
   type IAdviseSink;
   type AsyncIAdviseSink;
   type IAdviseSink2;
   type AsyncIAdviseSink2;
   type IDataObject;
   type IDataAdviseHolder;
   type IMessageFilter;
   type IClassActivator;
   type IFillLockBytes;
   type IProgressNotify;
   type ILayoutStorage;
   type IBlockingLock;
   type ITimeAndNoticeControl;
   type IOplockStorage;
   type IDirectWriterLock;
   type IUrlMon;
   type IForegroundTransfer;
   type IThumbnailExtractor;
   type IDummyHICONIncluder;
   type IProcessLock;
   type ISurrogateService;
   type IInitializeSpy;
   type IApartmentShutdown;
   -- #include <wtypes.h>
   type tagRemHGLOBAL_data_Array is array(1..1) of byte; -- Auto Generated Dependancy
   type tagRemHGLOBAL is record
      fNullHGlobal : LONG;
      cbData : ULONG;
      data : tagRemHGLOBAL_data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRemHGLOBAL);
   for tagRemHGLOBAL use record
      fNullHGlobal at 0 range 0..31;
      cbData at 0 range 32..63;
      data at 0 range 64..71;
   end record;
   for tagRemHGLOBAL'Size use 96;
   for tagRemHGLOBAL'Alignment use 4;
   subtype RemHGLOBAL is tagRemHGLOBAL;
   type tagRemHMETAFILEPICT_data_Array is array(1..1) of byte; -- Auto Generated Dependancy
   type tagRemHMETAFILEPICT is record
      mm : LONG;
      xExt : LONG;
      yExt : LONG;
      cbData : ULONG;
      data : tagRemHMETAFILEPICT_data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRemHMETAFILEPICT);
   for tagRemHMETAFILEPICT use record
      mm at 0 range 0..31;
      xExt at 0 range 32..63;
      yExt at 0 range 64..95;
      cbData at 0 range 96..127;
      data at 0 range 128..135;
   end record;
   for tagRemHMETAFILEPICT'Size use 160;
   for tagRemHMETAFILEPICT'Alignment use 4;
   subtype RemHMETAFILEPICT is tagRemHMETAFILEPICT;
   type tagRemHENHMETAFILE_data_Array is array(1..1) of byte; -- Auto Generated Dependancy
   type tagRemHENHMETAFILE is record
      cbData : ULONG;
      data : tagRemHENHMETAFILE_data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRemHENHMETAFILE);
   for tagRemHENHMETAFILE use record
      cbData at 0 range 0..31;
      data at 0 range 32..39;
   end record;
   for tagRemHENHMETAFILE'Size use 64;
   for tagRemHENHMETAFILE'Alignment use 4;
   subtype RemHENHMETAFILE is tagRemHENHMETAFILE;
   type tagRemHBITMAP_data_Array is array(1..1) of byte; -- Auto Generated Dependancy
   type tagRemHBITMAP is record
      cbData : ULONG;
      data : tagRemHBITMAP_data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRemHBITMAP);
   for tagRemHBITMAP use record
      cbData at 0 range 0..31;
      data at 0 range 32..39;
   end record;
   for tagRemHBITMAP'Size use 64;
   for tagRemHBITMAP'Alignment use 4;
   subtype RemHBITMAP is tagRemHBITMAP;
   type tagRemHPALETTE_data_Array is array(1..1) of byte; -- Auto Generated Dependancy
   type tagRemHPALETTE is record
      cbData : ULONG;
      data : tagRemHPALETTE_data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRemHPALETTE);
   for tagRemHPALETTE use record
      cbData at 0 range 0..31;
      data at 0 range 32..39;
   end record;
   for tagRemHPALETTE'Size use 64;
   for tagRemHPALETTE'Alignment use 4;
   subtype RemHPALETTE is tagRemHPALETTE;
   type tagRemBRUSH_data_Array is array(1..1) of byte; -- Auto Generated Dependancy
   type tagRemBRUSH is record
      cbData : ULONG;
      data : tagRemBRUSH_data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRemBRUSH);
   for tagRemBRUSH use record
      cbData at 0 range 0..31;
      data at 0 range 32..39;
   end record;
   for tagRemBRUSH'Size use 64;
   for tagRemBRUSH'Alignment use 4;
   subtype RemHBRUSH is tagRemBRUSH;
   type tagDVASPECT is (
      DVASPECT_CONTENT,
      DVASPECT_THUMBNAIL,
      DVASPECT_ICON,
      DVASPECT_DOCPRINT
   );
   for tagDVASPECT use (
      DVASPECT_CONTENT => 1,
      DVASPECT_THUMBNAIL => 2,
      DVASPECT_ICON => 4,
      DVASPECT_DOCPRINT => 8
   );
   for tagDVASPECT'Size use 32;
   subtype DVASPECT is tagDVASPECT;
   type tagSTGC is (
      STGC_DEFAULT,
      STGC_OVERWRITE,
      STGC_ONLYIFCURRENT,
      STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE,
      STGC_CONSOLIDATE
   );
   for tagSTGC use (
      STGC_DEFAULT => 0,
      STGC_OVERWRITE => 1,
      STGC_ONLYIFCURRENT => 2,
      STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE => 4,
      STGC_CONSOLIDATE => 8
   );
   for tagSTGC'Size use 32;
   subtype STGC is tagSTGC;
   type tagSTGMOVE is (
      STGMOVE_MOVE,
      STGMOVE_COPY,
      STGMOVE_SHALLOWCOPY
   );
   for tagSTGMOVE use (
      STGMOVE_MOVE => 0,
      STGMOVE_COPY => 1,
      STGMOVE_SHALLOWCOPY => 2
   );
   for tagSTGMOVE'Size use 32;
   subtype STGMOVE is tagSTGMOVE;
   type tagSTATFLAG is (
      STATFLAG_DEFAULT,
      STATFLAG_NONAME,
      STATFLAG_NOOPEN
   );
   for tagSTATFLAG use (
      STATFLAG_DEFAULT => 0,
      STATFLAG_NONAME => 1,
      STATFLAG_NOOPEN => 2
   );
   for tagSTATFLAG'Size use 32;
   subtype STATFLAG is tagSTATFLAG;
   type HCONTEXT is access all Void;
   type MIDL_IWinTypes_0001_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            dwValue : DWORD;
         when others => 
            pwszName : access Wide_Character;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_IWinTypes_0001_x);
   pragma Unchecked_Union (MIDL_IWinTypes_0001_x);
   for MIDL_IWinTypes_0001_x'Size use 64;
   for MIDL_IWinTypes_0001_x'Alignment use 8;
   type userCLIPFORMAT_x is record
      fContext : LONG;
      MIDL_IWinTypes_0001 : MIDL_IWinTypes_0001_x;
   end record;
   pragma Convention (C_Pass_By_Copy,userCLIPFORMAT_x);
   for userCLIPFORMAT_x use record
      fContext at 0 range 0..31;
      MIDL_IWinTypes_0001 at 0 range 32..95;
   end record;
   for userCLIPFORMAT_x'Size use 128;
   for userCLIPFORMAT_x'Alignment use 8;
   subtype userCLIPFORMAT is userCLIPFORMAT_x;
   type wireCLIPFORMAT is access all userCLIPFORMAT;
   subtype CLIPFORMAT is WORD;
   type MIDL_IWinTypes_0002_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hInproc : LONG;
         when others => 
            hRemote : access DWORD_BLOB;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_IWinTypes_0002_x);
   pragma Unchecked_Union (MIDL_IWinTypes_0002_x);
   for MIDL_IWinTypes_0002_x'Size use 64;
   for MIDL_IWinTypes_0002_x'Alignment use 8;
   type GDI_NONREMOTE_x is record
      fContext : LONG;
      MIDL_IWinTypes_0002 : MIDL_IWinTypes_0002_x;
   end record;
   pragma Convention (C_Pass_By_Copy,GDI_NONREMOTE_x);
   for GDI_NONREMOTE_x use record
      fContext at 0 range 0..31;
      MIDL_IWinTypes_0002 at 0 range 32..95;
   end record;
   for GDI_NONREMOTE_x'Size use 128;
   for GDI_NONREMOTE_x'Alignment use 8;
   subtype GDI_NONREMOTE is GDI_NONREMOTE_x;
   type MIDL_IWinTypes_0003_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hInproc : LONG;
         when 1 =>
            hRemote : access FLAGGED_BYTE_BLOB;
         when others => 
            hInproc64 : Interfaces.C.Extensions.long_long;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_IWinTypes_0003_x);
   pragma Unchecked_Union (MIDL_IWinTypes_0003_x);
   for MIDL_IWinTypes_0003_x'Size use 64;
   for MIDL_IWinTypes_0003_x'Alignment use 8;
   type userHGLOBAL_x is record
      fContext : LONG;
      MIDL_IWinTypes_0003 : MIDL_IWinTypes_0003_x;
   end record;
   pragma Convention (C_Pass_By_Copy,userHGLOBAL_x);
   for userHGLOBAL_x use record
      fContext at 0 range 0..31;
      MIDL_IWinTypes_0003 at 0 range 32..95;
   end record;
   for userHGLOBAL_x'Size use 128;
   for userHGLOBAL_x'Alignment use 8;
   subtype userHGLOBAL is userHGLOBAL_x;
   type wireHGLOBAL is access all userHGLOBAL;
   type MIDL_IWinTypes_0004_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hInproc : LONG;
         when 1 =>
            hRemote : access BYTE_BLOB;
         when others => 
            hInproc64 : Interfaces.C.Extensions.long_long;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_IWinTypes_0004_x);
   pragma Unchecked_Union (MIDL_IWinTypes_0004_x);
   for MIDL_IWinTypes_0004_x'Size use 64;
   for MIDL_IWinTypes_0004_x'Alignment use 8;
   type userHMETAFILE_x is record
      fContext : LONG;
      MIDL_IWinTypes_0004 : MIDL_IWinTypes_0004_x;
   end record;
   pragma Convention (C_Pass_By_Copy,userHMETAFILE_x);
   for userHMETAFILE_x use record
      fContext at 0 range 0..31;
      MIDL_IWinTypes_0004 at 0 range 32..95;
   end record;
   for userHMETAFILE_x'Size use 128;
   for userHMETAFILE_x'Alignment use 8;
   subtype userHMETAFILE is userHMETAFILE_x;
   type remoteMETAFILEPICT_x is record
      mm : LONG;
      xExt : LONG;
      yExt : LONG;
      hMF : access userHMETAFILE;
   end record;
   pragma Convention (C_Pass_By_Copy,remoteMETAFILEPICT_x);
   for remoteMETAFILEPICT_x use record
      mm at 0 range 0..31;
      xExt at 0 range 32..63;
      yExt at 0 range 64..95;
      hMF at 0 range 128..191;
   end record;
   for remoteMETAFILEPICT_x'Size use 192;
   for remoteMETAFILEPICT_x'Alignment use 8;
   subtype remoteMETAFILEPICT is remoteMETAFILEPICT_x;
   type MIDL_IWinTypes_0005_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hInproc : LONG;
         when 1 =>
            hRemote : access remoteMETAFILEPICT;
         when others => 
            hInproc64 : Interfaces.C.Extensions.long_long;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_IWinTypes_0005_x);
   pragma Unchecked_Union (MIDL_IWinTypes_0005_x);
   for MIDL_IWinTypes_0005_x'Size use 64;
   for MIDL_IWinTypes_0005_x'Alignment use 8;
   type userHMETAFILEPICT_x is record
      fContext : LONG;
      MIDL_IWinTypes_0005 : MIDL_IWinTypes_0005_x;
   end record;
   pragma Convention (C_Pass_By_Copy,userHMETAFILEPICT_x);
   for userHMETAFILEPICT_x use record
      fContext at 0 range 0..31;
      MIDL_IWinTypes_0005 at 0 range 32..95;
   end record;
   for userHMETAFILEPICT_x'Size use 128;
   for userHMETAFILEPICT_x'Alignment use 8;
   subtype userHMETAFILEPICT is userHMETAFILEPICT_x;
   type MIDL_IWinTypes_0006_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hInproc : LONG;
         when 1 =>
            hRemote : access BYTE_BLOB;
         when others => 
            hInproc64 : Interfaces.C.Extensions.long_long;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_IWinTypes_0006_x);
   pragma Unchecked_Union (MIDL_IWinTypes_0006_x);
   for MIDL_IWinTypes_0006_x'Size use 64;
   for MIDL_IWinTypes_0006_x'Alignment use 8;
   type userHENHMETAFILE_x is record
      fContext : LONG;
      MIDL_IWinTypes_0006 : MIDL_IWinTypes_0006_x;
   end record;
   pragma Convention (C_Pass_By_Copy,userHENHMETAFILE_x);
   for userHENHMETAFILE_x use record
      fContext at 0 range 0..31;
      MIDL_IWinTypes_0006 at 0 range 32..95;
   end record;
   for userHENHMETAFILE_x'Size use 128;
   for userHENHMETAFILE_x'Alignment use 8;
   subtype userHENHMETAFILE is userHENHMETAFILE_x;
   type userBITMAP_x_pBuffer_Array is array(1..1) of byte; -- Auto Generated Dependancy
   type userBITMAP_x is record
      bmType : LONG;
      bmWidth : LONG;
      bmHeight : LONG;
      bmWidthBytes : LONG;
      bmPlanes : WORD;
      bmBitsPixel : WORD;
      cbSize : ULONG;
      pBuffer : userBITMAP_x_pBuffer_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,userBITMAP_x);
   for userBITMAP_x use record
      bmType at 0 range 0..31;
      bmWidth at 0 range 32..63;
      bmHeight at 0 range 64..95;
      bmWidthBytes at 0 range 96..127;
      bmPlanes at 0 range 128..143;
      bmBitsPixel at 0 range 144..159;
      cbSize at 0 range 160..191;
      pBuffer at 0 range 192..199;
   end record;
   for userBITMAP_x'Size use 224;
   for userBITMAP_x'Alignment use 4;
   subtype userBITMAP is userBITMAP_x;
   type MIDL_IWinTypes_0007_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hInproc : LONG;
         when 1 =>
            hRemote : access userBITMAP;
         when others => 
            hInproc64 : Interfaces.C.Extensions.long_long;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_IWinTypes_0007_x);
   pragma Unchecked_Union (MIDL_IWinTypes_0007_x);
   for MIDL_IWinTypes_0007_x'Size use 64;
   for MIDL_IWinTypes_0007_x'Alignment use 8;
   type userHBITMAP_x is record
      fContext : LONG;
      MIDL_IWinTypes_0007 : MIDL_IWinTypes_0007_x;
   end record;
   pragma Convention (C_Pass_By_Copy,userHBITMAP_x);
   for userHBITMAP_x use record
      fContext at 0 range 0..31;
      MIDL_IWinTypes_0007 at 0 range 32..95;
   end record;
   for userHBITMAP_x'Size use 128;
   for userHBITMAP_x'Alignment use 8;
   subtype userHBITMAP is userHBITMAP_x;
   type MIDL_IWinTypes_0008_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hInproc : LONG;
         when 1 =>
            hRemote : access LOGPALETTE;
         when others => 
            hInproc64 : Interfaces.C.Extensions.long_long;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_IWinTypes_0008_x);
   pragma Unchecked_Union (MIDL_IWinTypes_0008_x);
   for MIDL_IWinTypes_0008_x'Size use 64;
   for MIDL_IWinTypes_0008_x'Alignment use 8;
   type userHPALETTE_x is record
      fContext : LONG;
      MIDL_IWinTypes_0008 : MIDL_IWinTypes_0008_x;
   end record;
   pragma Convention (C_Pass_By_Copy,userHPALETTE_x);
   for userHPALETTE_x use record
      fContext at 0 range 0..31;
      MIDL_IWinTypes_0008 at 0 range 32..95;
   end record;
   for userHPALETTE_x'Size use 128;
   for userHPALETTE_x'Alignment use 8;
   subtype userHPALETTE is userHPALETTE_x;
   type MIDL_IWinTypes_0009_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hInproc : LONG;
         when others => 
            hRemote : LONG;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_IWinTypes_0009_x);
   pragma Unchecked_Union (MIDL_IWinTypes_0009_x);
   for MIDL_IWinTypes_0009_x'Size use 32;
   for MIDL_IWinTypes_0009_x'Alignment use 4;
   type RemotableHandle_x is record
      fContext : LONG;
      MIDL_IWinTypes_0009 : MIDL_IWinTypes_0009_x;
   end record;
   pragma Convention (C_Pass_By_Copy,RemotableHandle_x);
   for RemotableHandle_x use record
      fContext at 0 range 0..31;
      MIDL_IWinTypes_0009 at 0 range 32..63;
   end record;
   for RemotableHandle_x'Size use 64;
   for RemotableHandle_x'Alignment use 4;
   subtype RemotableHandle is RemotableHandle_x;
   type wireHWND is access all RemotableHandle;
   type wireHMENU is access all RemotableHandle;
   type wireHACCEL is access all RemotableHandle;
   type wireHBRUSH is access all RemotableHandle;
   type wireHFONT is access all RemotableHandle;
   type wireHDC is access all RemotableHandle;
   type wireHICON is access all RemotableHandle;
   type wireHRGN is access all RemotableHandle;
   type wireHMONITOR is access all RemotableHandle;
   type wireHBITMAP is access all userHBITMAP;
   type wireHPALETTE is access all userHPALETTE;
   type wireHENHMETAFILE is access all userHENHMETAFILE;
   type wireHMETAFILE is access all userHMETAFILE;
   type wireHMETAFILEPICT is access all userHMETAFILEPICT;
   type HMETAFILEPICT is access all Void;
   subtype DATE is Long_Float;
   type Anonymous_Record_272 is record
      Lo : ULONG;
      Hi : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_272);
   for Anonymous_Record_272 use record
      Lo at 0 range 0..31;
      Hi at 0 range 32..63;
   end record;
   for Anonymous_Record_272'Size use 64;
   for Anonymous_Record_272'Alignment use 4;
   type tagCY (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_272;
         when others => 
            int64_x : LONGLONG;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCY);
   pragma Unchecked_Union (tagCY);
   for tagCY'Size use 64;
   for tagCY'Alignment use 8;
   subtype CY is tagCY;
   type LPCY is access all CY;
   type Anonymous_Record_274 is record
      scale : BYTE;
      sign : BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_274);
   for Anonymous_Record_274 use record
      scale at 0 range 0..7;
      sign at 0 range 8..15;
   end record;
   for Anonymous_Record_274'Size use 16;
   for Anonymous_Record_274'Alignment use 1;
   type Anonymous_Record_273 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_274;
         when others => 
            signscale : USHORT;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_273);
   pragma Unchecked_Union (Anonymous_Record_273);
   for Anonymous_Record_273'Size use 16;
   for Anonymous_Record_273'Alignment use 2;
   type Anonymous_Record_276 is record
      Lo32 : ULONG;
      Mid32 : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_276);
   for Anonymous_Record_276 use record
      Lo32 at 0 range 0..31;
      Mid32 at 0 range 32..63;
   end record;
   for Anonymous_Record_276'Size use 64;
   for Anonymous_Record_276'Alignment use 4;
   type Anonymous_Record_275 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_276;
         when others => 
            Lo64 : ULONGLONG;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_275);
   pragma Unchecked_Union (Anonymous_Record_275);
   for Anonymous_Record_275'Size use 64;
   for Anonymous_Record_275'Alignment use 8;
   type tagDEC is record
      wReserved : USHORT;
      field_1 : Anonymous_Record_273;
      Hi32 : ULONG;
      field_2 : Anonymous_Record_275;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDEC);
   for tagDEC use record
      wReserved at 0 range 0..15;
      field_1 at 0 range 16..31;
      Hi32 at 0 range 32..63;
      field_2 at 0 range 64..127;
   end record;
   for tagDEC'Size use 128;
   for tagDEC'Alignment use 8;
   subtype DECIMAL is tagDEC;
   type LPDECIMAL is access all DECIMAL;
   type wireBSTR is access all FLAGGED_WORD_BLOB;
   type BSTR is access all OLECHAR;
   type LPBSTR is access all BSTR;
   subtype VARIANT_BOOL is Interfaces.C.Short;
   type tagBSTRBLOB is record
      cbSize : ULONG;
      pData : access BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBSTRBLOB);
   for tagBSTRBLOB use record
      cbSize at 0 range 0..31;
      pData at 0 range 64..127;
   end record;
   for tagBSTRBLOB'Size use 128;
   for tagBSTRBLOB'Alignment use 8;
   subtype BSTRBLOB is tagBSTRBLOB;
   type LPBSTRBLOB is access all tagBSTRBLOB;
   type tagCLIPDATA is record
      cbSize : ULONG;
      ulClipFmt : LONG;
      pClipData : access BYTE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCLIPDATA);
   for tagCLIPDATA use record
      cbSize at 0 range 0..31;
      ulClipFmt at 0 range 32..63;
      pClipData at 0 range 64..127;
   end record;
   for tagCLIPDATA'Size use 128;
   for tagCLIPDATA'Alignment use 8;
   subtype CLIPDATA is tagCLIPDATA;
   subtype VARTYPE is Interfaces.C.unsigned_short;
   type VARENUM is (
      VT_EMPTY,
      VT_NULL,
      VT_I2,
      VT_I4,
      VT_R4,
      VT_R8,
      VT_CY,
      VT_DATE,
      VT_BSTR,
      VT_DISPATCH,
      VT_ERROR,
      VT_BOOL,
      VT_VARIANT,
      VT_UNKNOWN,
      VT_DECIMAL,
      VT_I1,
      VT_UI1,
      VT_UI2,
      VT_UI4,
      VT_I8,
      VT_UI8,
      VT_INT,
      VT_UINT,
      VT_VOID,
      VT_HRESULT,
      VT_PTR,
      VT_SAFEARRAY,
      VT_CARRAY,
      VT_USERDEFINED,
      VT_LPSTR,
      VT_LPWSTR,
      VT_RECORD,
      VT_INT_PTR,
      VT_UINT_PTR,
      VT_FILETIME,
      VT_BLOB,
      VT_STREAM,
      VT_STORAGE,
      VT_STREAMED_OBJECT,
      VT_STORED_OBJECT,
      VT_BLOB_OBJECT,
      VT_CF,
      VT_CLSID,
      VT_VERSIONED_STREAM,
      VT_BSTR_BLOB,
      VT_VECTOR,
      VT_ARRAY,
      VT_BYREF,
      VT_RESERVED,
      VT_ILLEGAL
   );
   for VARENUM use (
      VT_EMPTY => 0,
      VT_NULL => 1,
      VT_I2 => 2,
      VT_I4 => 3,
      VT_R4 => 4,
      VT_R8 => 5,
      VT_CY => 6,
      VT_DATE => 7,
      VT_BSTR => 8,
      VT_DISPATCH => 9,
      VT_ERROR => 10,
      VT_BOOL => 11,
      VT_VARIANT => 12,
      VT_UNKNOWN => 13,
      VT_DECIMAL => 14,
      VT_I1 => 16,
      VT_UI1 => 17,
      VT_UI2 => 18,
      VT_UI4 => 19,
      VT_I8 => 20,
      VT_UI8 => 21,
      VT_INT => 22,
      VT_UINT => 23,
      VT_VOID => 24,
      VT_HRESULT => 25,
      VT_PTR => 26,
      VT_SAFEARRAY => 27,
      VT_CARRAY => 28,
      VT_USERDEFINED => 29,
      VT_LPSTR => 30,
      VT_LPWSTR => 31,
      VT_RECORD => 36,
      VT_INT_PTR => 37,
      VT_UINT_PTR => 38,
      VT_FILETIME => 64,
      VT_BLOB => 65,
      VT_STREAM => 66,
      VT_STORAGE => 67,
      VT_STREAMED_OBJECT => 68,
      VT_STORED_OBJECT => 69,
      VT_BLOB_OBJECT => 70,
      VT_CF => 71,
      VT_CLSID => 72,
      VT_VERSIONED_STREAM => 73,
      VT_BSTR_BLOB => 4095,
      VT_VECTOR => 4096,
      VT_ARRAY => 8192,
      VT_BYREF => 16384,
      VT_RESERVED => 32768,
      VT_ILLEGAL => 65535
   );
   for VARENUM'Size use 32;
   subtype PROPID is ULONG;
   type tagpropertykey_x is record
      fmtid_x : GUID;
      pid : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagpropertykey_x);
   for tagpropertykey_x use record
      fmtid_x at 0 range 0..127;
      pid at 0 range 128..159;
   end record;
   for tagpropertykey_x'Size use 160;
   for tagpropertykey_x'Alignment use 4;
   subtype PROPERTYKEY is tagpropertykey_x;
   type tagCSPLATFORM is record
      dwPlatformId : DWORD;
      dwVersionHi : DWORD;
      dwVersionLo : DWORD;
      dwProcessorArch : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCSPLATFORM);
   for tagCSPLATFORM use record
      dwPlatformId at 0 range 0..31;
      dwVersionHi at 0 range 32..63;
      dwVersionLo at 0 range 64..95;
      dwProcessorArch at 0 range 96..127;
   end record;
   for tagCSPLATFORM'Size use 128;
   for tagCSPLATFORM'Alignment use 4;
   subtype CSPLATFORM is tagCSPLATFORM;
   type tagQUERYCONTEXT is record
      dwContext : DWORD;
      Platform : CSPLATFORM;
      Locale : LCID;
      dwVersionHi : DWORD;
      dwVersionLo : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagQUERYCONTEXT);
   for tagQUERYCONTEXT use record
      dwContext at 0 range 0..31;
      Platform at 0 range 32..159;
      Locale at 0 range 160..191;
      dwVersionHi at 0 range 192..223;
      dwVersionLo at 0 range 224..255;
   end record;
   for tagQUERYCONTEXT'Size use 256;
   for tagQUERYCONTEXT'Alignment use 4;
   subtype QUERYCONTEXT is tagQUERYCONTEXT;
   type tagTYSPEC is (
      TYSPEC_CLSID,
      TYSPEC_FILEEXT,
      TYSPEC_MIMETYPE,
      TYSPEC_FILENAME,
      TYSPEC_PROGID,
      TYSPEC_PACKAGENAME,
      TYSPEC_OBJECTID
   );
   for tagTYSPEC use (
      TYSPEC_CLSID => 0,
      TYSPEC_FILEEXT => 1,
      TYSPEC_MIMETYPE => 2,
      TYSPEC_FILENAME => 3,
      TYSPEC_PROGID => 4,
      TYSPEC_PACKAGENAME => 5,
      TYSPEC_OBJECTID => 6
   );
   for tagTYSPEC'Size use 32;
   subtype TYSPEC is tagTYSPEC;
   type Anonymous_Record_277 is record
      pPackageName : LPOLESTR;
      PolicyId : GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_277);
   for Anonymous_Record_277 use record
      pPackageName at 0 range 0..63;
      PolicyId at 0 range 64..191;
   end record;
   for Anonymous_Record_277'Size use 192;
   for Anonymous_Record_277'Alignment use 8;
   type Anonymous_Record_278 is record
      ObjectId_x : GUID;
      PolicyId : GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_278);
   for Anonymous_Record_278 use record
      ObjectId_x at 0 range 0..127;
      PolicyId at 0 range 128..255;
   end record;
   for Anonymous_Record_278'Size use 256;
   for Anonymous_Record_278'Alignment use 4;
   type MIDL_MIDL_itf_wtypes_0000_0001_0005_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            clsid_x : CLSID;
         when 1 =>
            pFileExt : LPOLESTR;
         when 2 =>
            pMimeType : LPOLESTR;
         when 3 =>
            pProgId : LPOLESTR;
         when 4 =>
            pFileName : LPOLESTR;
         when 5 =>
            field_1 : Anonymous_Record_277;
         when others => 
            field_2 : Anonymous_Record_278;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_MIDL_itf_wtypes_0000_0001_0005_x);
   pragma Unchecked_Union (MIDL_MIDL_itf_wtypes_0000_0001_0005_x);
   for MIDL_MIDL_itf_wtypes_0000_0001_0005_x'Size use 256;
   for MIDL_MIDL_itf_wtypes_0000_0001_0005_x'Alignment use 8;
   type MIDL_MIDL_itf_wtypes_0000_0001_0001_x is record
      tyspec_x : DWORD;
      MIDL_MIDL_itf_wtypes_0000_0001_0005 : MIDL_MIDL_itf_wtypes_0000_0001_0005_x;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_MIDL_itf_wtypes_0000_0001_0001_x);
   for MIDL_MIDL_itf_wtypes_0000_0001_0001_x use record
      tyspec_x at 0 range 0..31;
      MIDL_MIDL_itf_wtypes_0000_0001_0005 at 0 range 32..287;
   end record;
   for MIDL_MIDL_itf_wtypes_0000_0001_0001_x'Size use 320;
   for MIDL_MIDL_itf_wtypes_0000_0001_0001_x'Alignment use 8;
   subtype uCLSSPEC is MIDL_MIDL_itf_wtypes_0000_0001_0001_x;
   -- #include <unknwn.h>
   function IClassFactory_CreateInstance_Proxy_x(
      This : access IClassFactory'Class;
      pUnkOuter : access IUnknown'Class;
      riid : access constant IID;
      ppvObject : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,IClassFactory_CreateInstance_Proxy_x,"IClassFactory_CreateInstance_Proxy");
   function IClassFactory_CreateInstance_Stub_x(
      This : access IClassFactory'Class;
      riid : access constant IID;
      ppvObject : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IClassFactory_CreateInstance_Stub_x,"IClassFactory_CreateInstance_Stub");
   function IClassFactory_LockServer_Proxy_x(
      This : access IClassFactory'Class;
      fLock : BOOL
   ) return HRESULT;
   pragma import (Cpp,IClassFactory_LockServer_Proxy_x,"IClassFactory_LockServer_Proxy");
   function IClassFactory_LockServer_Stub_x(
      This : access IClassFactory'Class;
      fLock : BOOL
   ) return HRESULT;
   pragma import (Cpp,IClassFactory_LockServer_Stub_x,"IClassFactory_LockServer_Stub");
   -- #include <objidl.h>
   type LPMALLOCSPY is access all IMallocSpy;
   IID_IMallocSpy : aliased constant IID;
   pragma import (C,IID_IMallocSpy,"IID_IMallocSpy");
   type IMallocSpy is limited interface and IUnknown;
      function PreAlloc(
         This : access IMallocSpy;
         cbRequest : SIZE_T
      ) return SIZE_T is abstract;
      procedure PostAlloc(
         This : access IMallocSpy;
         pActual : access Void
      ) is abstract;
      procedure PreFree(
         This : access IMallocSpy;
         pRequest : access Void;
         fSpyed : BOOL
      ) is abstract;
      procedure PostFree(
         This : access IMallocSpy;
         fSpyed : BOOL
      ) is abstract;
      function PreRealloc(
         This : access IMallocSpy;
         pRequest : access Void;
         cbRequest : SIZE_T;
         ppNewRequest : access LPVOID;
         fSpyed : BOOL
      ) return SIZE_T is abstract;
      procedure PostRealloc(
         This : access IMallocSpy;
         pActual : access Void;
         fSpyed : BOOL
      ) is abstract;
      procedure PreGetSize(
         This : access IMallocSpy;
         pRequest : access Void;
         fSpyed : BOOL
      ) is abstract;
      function PostGetSize(
         This : access IMallocSpy;
         cbActual : SIZE_T;
         fSpyed : BOOL
      ) return SIZE_T is abstract;
      procedure PreDidAlloc(
         This : access IMallocSpy;
         pRequest : access Void;
         fSpyed : BOOL
      ) is abstract;
      function PostDidAlloc(
         This : access IMallocSpy;
         pRequest : access Void;
         fSpyed : BOOL;
         fActual : Interfaces.C.Int
      ) return Interfaces.C.Int is abstract;
      procedure PreHeapMinimize(This : access IMallocSpy) is abstract;
      procedure PostHeapMinimize(This : access IMallocSpy) is abstract;
   type IMallocSpy_Ptr is access all IMallocSpy'Class;
   type LPBC is access all IBindCtx;
   type LPBINDCTX is access all IBindCtx;
   type tagBIND_OPTS is record
      cbStruct : DWORD;
      grfFlags : DWORD;
      grfMode : DWORD;
      dwTickCountDeadline : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBIND_OPTS);
   for tagBIND_OPTS use record
      cbStruct at 0 range 0..31;
      grfFlags at 0 range 32..63;
      grfMode at 0 range 64..95;
      dwTickCountDeadline at 0 range 96..127;
   end record;
   for tagBIND_OPTS'Size use 128;
   for tagBIND_OPTS'Alignment use 4;
   subtype BIND_OPTS is tagBIND_OPTS;
   type LPBIND_OPTS is access all tagBIND_OPTS;
   type tagBIND_OPTS2 is record -- Base = [struct tagBIND_OPTS]
      m_Base : tagBIND_OPTS;
      dwTrackFlags : DWORD;
      dwClassContext : DWORD;
      locale : LCID;
      pServerInfo : access COSERVERINFO;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBIND_OPTS2);
   for tagBIND_OPTS2 use record
      m_Base at 0 range 0..127;
      dwTrackFlags at 0 range 128..159;
      dwClassContext at 0 range 160..191;
      locale at 0 range 192..223;
      pServerInfo at 0 range 256..319;
   end record;
   for tagBIND_OPTS2'Size use 320;
   for tagBIND_OPTS2'Alignment use 8;
   subtype BIND_OPTS2 is tagBIND_OPTS2;
   type LPBIND_OPTS2 is access all tagBIND_OPTS2;
   type tagBIND_OPTS3 is record -- Base = [struct tagBIND_OPTS2]
      m_Base : tagBIND_OPTS2;
      hwnd_x : HWND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBIND_OPTS3);
   for tagBIND_OPTS3 use record
      m_Base at 0 range 0..319;
      hwnd_x at 0 range 320..383;
   end record;
   for tagBIND_OPTS3'Size use 384;
   for tagBIND_OPTS3'Alignment use 8;
   subtype BIND_OPTS3 is tagBIND_OPTS3;
   type LPBIND_OPTS3 is access all tagBIND_OPTS3;
   type tagBIND_FLAGS is (
      BIND_MAYBOTHERUSER,
      BIND_JUSTTESTEXISTENCE
   );
   for tagBIND_FLAGS use (
      BIND_MAYBOTHERUSER => 1,
      BIND_JUSTTESTEXISTENCE => 2
   );
   for tagBIND_FLAGS'Size use 32;
   subtype BIND_FLAGS is tagBIND_FLAGS;
   IID_IBindCtx : aliased constant IID;
   pragma import (C,IID_IBindCtx,"IID_IBindCtx");
   type IRunningObjectTable_Ptr is access all IRunningObjectTable; -- Auto Generated Dependancy
   type IBindCtx is limited interface and IUnknown;
      function RegisterObjectBound(
         This : access IBindCtx;
         punk : access IUnknown'Class
      ) return HRESULT is abstract;
      function RevokeObjectBound(
         This : access IBindCtx;
         punk : access IUnknown'Class
      ) return HRESULT is abstract;
      function ReleaseBoundObjects(This : access IBindCtx) return HRESULT is abstract;
      function SetBindOptions(
         This : access IBindCtx;
         pbindopts : access BIND_OPTS
      ) return HRESULT is abstract;
      function GetBindOptions(
         This : access IBindCtx;
         pbindopts : access BIND_OPTS
      ) return HRESULT is abstract;
      function GetRunningObjectTable(
         This : access IBindCtx;
         pprot : access IRunningObjectTable_Ptr
      ) return HRESULT is abstract;
      function RegisterObjectParam(
         This : access IBindCtx;
         pszKey : LPOLESTR;
         punk : access IUnknown'Class
      ) return HRESULT is abstract;
      function GetObjectParam(
         This : access IBindCtx;
         pszKey : LPOLESTR;
         ppunk : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function EnumObjectParam(
         This : access IBindCtx;
         ppenum : access IEnumString_Ptr
      ) return HRESULT is abstract;
      function RevokeObjectParam(
         This : access IBindCtx;
         pszKey : LPOLESTR
      ) return HRESULT is abstract;
   type IBindCtx_Ptr is access all IBindCtx'Class;
   function IBindCtx_RemoteSetBindOptions_Proxy(
      This : access IBindCtx'Class;
      pbindopts : access BIND_OPTS2
   ) return HRESULT;
   pragma import (Cpp,IBindCtx_RemoteSetBindOptions_Proxy,"IBindCtx_RemoteSetBindOptions_Proxy");
   procedure IBindCtx_RemoteSetBindOptions_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IBindCtx_RemoteSetBindOptions_Stub,"IBindCtx_RemoteSetBindOptions_Stub");
   function IBindCtx_RemoteGetBindOptions_Proxy(
      This : access IBindCtx'Class;
      pbindopts : access BIND_OPTS2
   ) return HRESULT;
   pragma import (Cpp,IBindCtx_RemoteGetBindOptions_Proxy,"IBindCtx_RemoteGetBindOptions_Proxy");
   procedure IBindCtx_RemoteGetBindOptions_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IBindCtx_RemoteGetBindOptions_Stub,"IBindCtx_RemoteGetBindOptions_Stub");
   type LPENUMMONIKER is access all IEnumMoniker;
   IID_IEnumMoniker : aliased constant IID;
   pragma import (C,IID_IEnumMoniker,"IID_IEnumMoniker");
   type IMoniker_Ptr is access all IMoniker; -- Auto Generated Dependancy
   type IEnumMoniker_Ptr is access all IEnumMoniker; -- Auto Generated Dependancy
   type IEnumMoniker is limited interface and IUnknown;
      function Next(
         This : access IEnumMoniker;
         celt : ULONG;
         rgelt : access IMoniker_Ptr;
         pceltFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumMoniker;
         celt : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumMoniker) return HRESULT is abstract;
      function Clone(
         This : access IEnumMoniker;
         ppenum : access IEnumMoniker_Ptr
      ) return HRESULT is abstract;
   function IEnumMoniker_RemoteNext_Proxy(
      This : access IEnumMoniker'Class;
      celt : ULONG;
      rgelt : access IMoniker_Ptr;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumMoniker_RemoteNext_Proxy,"IEnumMoniker_RemoteNext_Proxy");
   procedure IEnumMoniker_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumMoniker_RemoteNext_Stub,"IEnumMoniker_RemoteNext_Stub");
   type LPRUNNABLEOBJECT is access all IRunnableObject;
   IID_IRunnableObject : aliased constant IID;
   pragma import (C,IID_IRunnableObject,"IID_IRunnableObject");
   type IRunnableObject is limited interface and IUnknown;
      function GetRunningClass(
         This : access IRunnableObject;
         lpClsid_x : LPCLSID
      ) return HRESULT is abstract;
      function Run(
         This : access IRunnableObject;
         pbc : LPBINDCTX
      ) return HRESULT is abstract;
      function IsRunning(This : access IRunnableObject) return BOOL is abstract;
      function LockRunning(
         This : access IRunnableObject;
         fLock : BOOL;
         fLastUnlockCloses : BOOL
      ) return HRESULT is abstract;
      function SetContainedObject(
         This : access IRunnableObject;
         fContained : BOOL
      ) return HRESULT is abstract;
   type IRunnableObject_Ptr is access all IRunnableObject'Class;
   function IRunnableObject_RemoteIsRunning_Proxy(
      This : access IRunnableObject'Class
   ) return HRESULT;
   pragma import (Cpp,IRunnableObject_RemoteIsRunning_Proxy,"IRunnableObject_RemoteIsRunning_Proxy");
   procedure IRunnableObject_RemoteIsRunning_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IRunnableObject_RemoteIsRunning_Stub,"IRunnableObject_RemoteIsRunning_Stub");
   type LPRUNNINGOBJECTTABLE is access all IRunningObjectTable;
   IID_IRunningObjectTable : aliased constant IID;
   pragma import (C,IID_IRunningObjectTable,"IID_IRunningObjectTable");
   type IRunningObjectTable is limited interface and IUnknown;
      function Register(
         This : access IRunningObjectTable;
         grfFlags : DWORD;
         punkObject : access IUnknown'Class;
         pmkObjectName : access IMoniker'Class;
         pdwRegister : access DWORD
      ) return HRESULT is abstract;
      function Revoke(
         This : access IRunningObjectTable;
         dwRegister : DWORD
      ) return HRESULT is abstract;
      function IsRunning(
         This : access IRunningObjectTable;
         pmkObjectName : access IMoniker'Class
      ) return HRESULT is abstract;
      function GetObjectA_x(
         This : access IRunningObjectTable;
         pmkObjectName : access IMoniker'Class;
         ppunkObject : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function NoteChangeTime(
         This : access IRunningObjectTable;
         dwRegister : DWORD;
         pfiletime_x : access FILETIME
      ) return HRESULT is abstract;
      function GetTimeOfLastChange(
         This : access IRunningObjectTable;
         pmkObjectName : access IMoniker'Class;
         pfiletime_x : access FILETIME
      ) return HRESULT is abstract;
      function EnumRunning(
         This : access IRunningObjectTable;
         ppenumMoniker : access IEnumMoniker_Ptr
      ) return HRESULT is abstract;
   type LPPERSIST is access all IPersist;
   IID_IPersist : aliased constant IID;
   pragma import (C,IID_IPersist,"IID_IPersist");
   type IPersist is limited interface and IUnknown;
      function GetClassID(
         This : access IPersist;
         pClassID : access CLSID
      ) return HRESULT is abstract;
   type IPersist_Ptr is access all IPersist'Class;
   type LPPERSISTSTREAM is access all IPersistStream;
   IID_IPersistStream : aliased constant IID;
   pragma import (C,IID_IPersistStream,"IID_IPersistStream");
   type IPersistStream is limited interface and IPersist;
      function IsDirty(This : access IPersistStream) return HRESULT is abstract;
      function Load(
         This : access IPersistStream;
         pStm : access IStream'Class
      ) return HRESULT is abstract;
      function Save(
         This : access IPersistStream;
         pStm : access IStream'Class;
         fClearDirty : BOOL
      ) return HRESULT is abstract;
      function GetSizeMax(
         This : access IPersistStream;
         pcbSize : access ULARGE_INTEGER
      ) return HRESULT is abstract;
   type IPersistStream_Ptr is access all IPersistStream'Class;
   type LPMONIKER is access all IMoniker;
   type tagMKSYS is (
      MKSYS_NONE,
      MKSYS_GENERICCOMPOSITE,
      MKSYS_FILEMONIKER,
      MKSYS_ANTIMONIKER,
      MKSYS_ITEMMONIKER,
      MKSYS_POINTERMONIKER,
      MKSYS_CLASSMONIKER,
      MKSYS_OBJREFMONIKER,
      MKSYS_SESSIONMONIKER,
      MKSYS_LUAMONIKER
   );
   for tagMKSYS use (
      MKSYS_NONE => 0,
      MKSYS_GENERICCOMPOSITE => 1,
      MKSYS_FILEMONIKER => 2,
      MKSYS_ANTIMONIKER => 3,
      MKSYS_ITEMMONIKER => 4,
      MKSYS_POINTERMONIKER => 5,
      MKSYS_CLASSMONIKER => 7,
      MKSYS_OBJREFMONIKER => 8,
      MKSYS_SESSIONMONIKER => 9,
      MKSYS_LUAMONIKER => 10
   );
   for tagMKSYS'Size use 32;
   subtype MKSYS is tagMKSYS;
   type tagMKREDUCE is (
      MKRREDUCE_ALL,
      MKRREDUCE_THROUGHUSER,
      MKRREDUCE_TOUSER,
      MKRREDUCE_ONE
   );
   for tagMKREDUCE use (
      MKRREDUCE_ALL => 0,
      MKRREDUCE_THROUGHUSER => 65536,
      MKRREDUCE_TOUSER => 131072,
      MKRREDUCE_ONE => 196608
   );
   for tagMKREDUCE'Size use 32;
   subtype MKRREDUCE is tagMKREDUCE;
   IID_IMoniker : aliased constant IID;
   pragma import (C,IID_IMoniker,"IID_IMoniker");
   type IMoniker is limited interface and IPersistStream;
      function BindToObject(
         This : access IMoniker;
         pbc : access IBindCtx'Class;
         pmkToLeft : access IMoniker'Class;
         riidResult : access constant IID;
         ppvResult : access LPVOID
      ) return HRESULT is abstract;
      function BindToStorage(
         This : access IMoniker;
         pbc : access IBindCtx'Class;
         pmkToLeft : access IMoniker'Class;
         riid : access constant IID;
         ppvObj : access LPVOID
      ) return HRESULT is abstract;
      function Reduce(
         This : access IMoniker;
         pbc : access IBindCtx'Class;
         dwReduceHowFar : DWORD;
         ppmkToLeft : access IMoniker_Ptr;
         ppmkReduced : access IMoniker_Ptr
      ) return HRESULT is abstract;
      function ComposeWith(
         This : access IMoniker;
         pmkRight : access IMoniker'Class;
         fOnlyIfNotGeneric : BOOL;
         ppmkComposite : access IMoniker_Ptr
      ) return HRESULT is abstract;
      function Enum(
         This : access IMoniker;
         fForward : BOOL;
         ppenumMoniker : access IEnumMoniker_Ptr
      ) return HRESULT is abstract;
      function IsEqual(
         This : access IMoniker;
         pmkOtherMoniker : access IMoniker'Class
      ) return HRESULT is abstract;
      function Hash(
         This : access IMoniker;
         pdwHash : access DWORD
      ) return HRESULT is abstract;
      function IsRunning(
         This : access IMoniker;
         pbc : access IBindCtx'Class;
         pmkToLeft : access IMoniker'Class;
         pmkNewlyRunning : access IMoniker'Class
      ) return HRESULT is abstract;
      function GetTimeOfLastChange(
         This : access IMoniker;
         pbc : access IBindCtx'Class;
         pmkToLeft : access IMoniker'Class;
         pFileTime_x : access FILETIME
      ) return HRESULT is abstract;
      function Inverse(
         This : access IMoniker;
         ppmk : access IMoniker_Ptr
      ) return HRESULT is abstract;
      function CommonPrefixWith(
         This : access IMoniker;
         pmkOther : access IMoniker'Class;
         ppmkPrefix : access IMoniker_Ptr
      ) return HRESULT is abstract;
      function RelativePathTo(
         This : access IMoniker;
         pmkOther : access IMoniker'Class;
         ppmkRelPath : access IMoniker_Ptr
      ) return HRESULT is abstract;
      function GetDisplayName(
         This : access IMoniker;
         pbc : access IBindCtx'Class;
         pmkToLeft : access IMoniker'Class;
         ppszDisplayName : access LPOLESTR
      ) return HRESULT is abstract;
      function ParseDisplayName(
         This : access IMoniker;
         pbc : access IBindCtx'Class;
         pmkToLeft : access IMoniker'Class;
         pszDisplayName : LPOLESTR;
         pchEaten : access ULONG;
         ppmkOut : access IMoniker_Ptr
      ) return HRESULT is abstract;
      function IsSystemMoniker(
         This : access IMoniker;
         pdwMksys : access DWORD
      ) return HRESULT is abstract;
   function IMoniker_RemoteBindToObject_Proxy(
      This : access IMoniker'Class;
      pbc : access IBindCtx'Class;
      pmkToLeft : access IMoniker'Class;
      riidResult : access constant IID;
      ppvResult : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IMoniker_RemoteBindToObject_Proxy,"IMoniker_RemoteBindToObject_Proxy");
   procedure IMoniker_RemoteBindToObject_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IMoniker_RemoteBindToObject_Stub,"IMoniker_RemoteBindToObject_Stub");
   function IMoniker_RemoteBindToStorage_Proxy(
      This : access IMoniker'Class;
      pbc : access IBindCtx'Class;
      pmkToLeft : access IMoniker'Class;
      riid : access constant IID;
      ppvObj : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IMoniker_RemoteBindToStorage_Proxy,"IMoniker_RemoteBindToStorage_Proxy");
   procedure IMoniker_RemoteBindToStorage_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IMoniker_RemoteBindToStorage_Stub,"IMoniker_RemoteBindToStorage_Stub");
   IID_IROTData : aliased constant IID;
   pragma import (C,IID_IROTData,"IID_IROTData");
   type IROTData is limited interface and IUnknown;
      function GetComparisonData(
         This : access IROTData;
         pbData : access byte;
         cbMax : ULONG;
         pcbData : access ULONG
      ) return HRESULT is abstract;
   type IROTData_Ptr is access all IROTData'Class;
   type LPENUMSTATSTG is access all IEnumSTATSTG;
   IID_IEnumSTATSTG : aliased constant IID;
   pragma import (C,IID_IEnumSTATSTG,"IID_IEnumSTATSTG");
   type IEnumSTATSTG_Ptr is access all IEnumSTATSTG; -- Auto Generated Dependancy
   type IEnumSTATSTG is limited interface and IUnknown;
      function Next(
         This : access IEnumSTATSTG;
         celt : ULONG;
         rgelt : access STATSTG;
         pceltFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumSTATSTG;
         celt : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumSTATSTG) return HRESULT is abstract;
      function Clone(
         This : access IEnumSTATSTG;
         ppenum : access IEnumSTATSTG_Ptr
      ) return HRESULT is abstract;
   function IEnumSTATSTG_RemoteNext_Proxy(
      This : access IEnumSTATSTG'Class;
      celt : ULONG;
      rgelt : access STATSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATSTG_RemoteNext_Proxy,"IEnumSTATSTG_RemoteNext_Proxy");
   procedure IEnumSTATSTG_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumSTATSTG_RemoteNext_Stub,"IEnumSTATSTG_RemoteNext_Stub");
   type LPSTORAGE is access all IStorage;
   type tagRemSNB_rgString_Array is array(1..1) of OLECHAR; -- Auto Generated Dependancy
   type tagRemSNB is record
      ulCntStr : ULONG;
      ulCntChar : ULONG;
      rgString : tagRemSNB_rgString_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRemSNB);
   for tagRemSNB use record
      ulCntStr at 0 range 0..31;
      ulCntChar at 0 range 32..63;
      rgString at 0 range 64..79;
   end record;
   for tagRemSNB'Size use 96;
   for tagRemSNB'Alignment use 4;
   subtype RemSNB is tagRemSNB;
   type wireSNB is access all RemSNB;
   type SNB is access all LPOLESTR;
   IID_IStorage : aliased constant IID;
   pragma import (C,IID_IStorage,"IID_IStorage");
   type IStorage_Ptr is access all IStorage; -- Auto Generated Dependancy
   type IStorage is limited interface and IUnknown;
      function CreateStream(
         This : access IStorage;
         pwcsName : access constant OLECHAR;
         grfMode : DWORD;
         reserved1 : DWORD;
         reserved2 : DWORD;
         ppstm : access IStream_Ptr
      ) return HRESULT is abstract;
      function OpenStream(
         This : access IStorage;
         pwcsName : access constant OLECHAR;
         reserved1 : access Void;
         grfMode : DWORD;
         reserved2 : DWORD;
         ppstm : access IStream_Ptr
      ) return HRESULT is abstract;
      function CreateStorage(
         This : access IStorage;
         pwcsName : access constant OLECHAR;
         grfMode : DWORD;
         reserved1 : DWORD;
         reserved2 : DWORD;
         ppstg : access IStorage_Ptr
      ) return HRESULT is abstract;
      function OpenStorage(
         This : access IStorage;
         pwcsName : access constant OLECHAR;
         pstgPriority : access IStorage'Class;
         grfMode : DWORD;
         snbExclude : SNB;
         reserved : DWORD;
         ppstg : access IStorage_Ptr
      ) return HRESULT is abstract;
      function CopyTo(
         This : access IStorage;
         ciidExclude : DWORD;
         rgiidExclude : access constant IID;
         snbExclude : SNB;
         pstgDest : access IStorage'Class
      ) return HRESULT is abstract;
      function MoveElementTo(
         This : access IStorage;
         pwcsName : access constant OLECHAR;
         pstgDest : access IStorage'Class;
         pwcsNewName : access constant OLECHAR;
         grfFlags : DWORD
      ) return HRESULT is abstract;
      function Commit(
         This : access IStorage;
         grfCommitFlags : DWORD
      ) return HRESULT is abstract;
      function Revert(This : access IStorage) return HRESULT is abstract;
      function EnumElements(
         This : access IStorage;
         reserved1 : DWORD;
         reserved2 : access Void;
         reserved3 : DWORD;
         ppenum : access IEnumSTATSTG_Ptr
      ) return HRESULT is abstract;
      function DestroyElement(
         This : access IStorage;
         pwcsName : access constant OLECHAR
      ) return HRESULT is abstract;
      function RenameElement(
         This : access IStorage;
         pwcsOldName : access constant OLECHAR;
         pwcsNewName : access constant OLECHAR
      ) return HRESULT is abstract;
      function SetElementTimes(
         This : access IStorage;
         pwcsName : access constant OLECHAR;
         pctime : access constant FILETIME;
         patime : access constant FILETIME;
         pmtime : access constant FILETIME
      ) return HRESULT is abstract;
      function SetClass(
         This : access IStorage;
         clsid_x : access constant IID
      ) return HRESULT is abstract;
      function SetStateBits(
         This : access IStorage;
         grfStateBits : DWORD;
         grfMask : DWORD
      ) return HRESULT is abstract;
      function Stat(
         This : access IStorage;
         pstatstg : access STATSTG;
         grfStatFlag : DWORD
      ) return HRESULT is abstract;
   function IStorage_RemoteOpenStream_Proxy(
      This : access IStorage'Class;
      pwcsName : access constant OLECHAR;
      cbReserved1 : ULONG;
      reserved1 : access byte;
      grfMode : DWORD;
      reserved2 : DWORD;
      ppstm : access IStream_Ptr
   ) return HRESULT;
   pragma import (Cpp,IStorage_RemoteOpenStream_Proxy,"IStorage_RemoteOpenStream_Proxy");
   procedure IStorage_RemoteOpenStream_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IStorage_RemoteOpenStream_Stub,"IStorage_RemoteOpenStream_Stub");
   function IStorage_RemoteCopyTo_Proxy(
      This : access IStorage'Class;
      ciidExclude : DWORD;
      rgiidExclude : access constant IID;
      snbExclude : SNB;
      pstgDest : access IStorage'Class
   ) return HRESULT;
   pragma import (Cpp,IStorage_RemoteCopyTo_Proxy,"IStorage_RemoteCopyTo_Proxy");
   procedure IStorage_RemoteCopyTo_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IStorage_RemoteCopyTo_Stub,"IStorage_RemoteCopyTo_Stub");
   function IStorage_RemoteEnumElements_Proxy(
      This : access IStorage'Class;
      reserved1 : DWORD;
      cbReserved2 : ULONG;
      reserved2 : access byte;
      reserved3 : DWORD;
      ppenum : access IEnumSTATSTG_Ptr
   ) return HRESULT;
   pragma import (Cpp,IStorage_RemoteEnumElements_Proxy,"IStorage_RemoteEnumElements_Proxy");
   procedure IStorage_RemoteEnumElements_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IStorage_RemoteEnumElements_Stub,"IStorage_RemoteEnumElements_Stub");
   type LPPERSISTFILE is access all IPersistFile;
   IID_IPersistFile : aliased constant IID;
   pragma import (C,IID_IPersistFile,"IID_IPersistFile");
   type IPersistFile is limited interface and IPersist;
      function IsDirty(This : access IPersistFile) return HRESULT is abstract;
      function Load(
         This : access IPersistFile;
         pszFileName : LPCOLESTR;
         dwMode : DWORD
      ) return HRESULT is abstract;
      function Save(
         This : access IPersistFile;
         pszFileName : LPCOLESTR;
         fRemember : BOOL
      ) return HRESULT is abstract;
      function SaveCompleted(
         This : access IPersistFile;
         pszFileName : LPCOLESTR
      ) return HRESULT is abstract;
      function GetCurFile(
         This : access IPersistFile;
         ppszFileName : access LPOLESTR
      ) return HRESULT is abstract;
   type IPersistFile_Ptr is access all IPersistFile'Class;
   type LPPERSISTSTORAGE is access all IPersistStorage;
   IID_IPersistStorage : aliased constant IID;
   pragma import (C,IID_IPersistStorage,"IID_IPersistStorage");
   type IPersistStorage is limited interface and IPersist;
      function IsDirty(This : access IPersistStorage) return HRESULT is abstract;
      function InitNew(
         This : access IPersistStorage;
         pStg : access IStorage'Class
      ) return HRESULT is abstract;
      function Load(
         This : access IPersistStorage;
         pStg : access IStorage'Class
      ) return HRESULT is abstract;
      function Save(
         This : access IPersistStorage;
         pStgSave : access IStorage'Class;
         fSameAsLoad : BOOL
      ) return HRESULT is abstract;
      function SaveCompleted(
         This : access IPersistStorage;
         pStgNew : access IStorage'Class
      ) return HRESULT is abstract;
      function HandsOffStorage(This : access IPersistStorage) return HRESULT is abstract;
   type IPersistStorage_Ptr is access all IPersistStorage'Class;
   type LPLOCKBYTES is access all ILockBytes;
   IID_ILockBytes : aliased constant IID;
   pragma import (C,IID_ILockBytes,"IID_ILockBytes");
   type ILockBytes is limited interface and IUnknown;
      function ReadAt(
         This : access ILockBytes;
         ulOffset : ULARGE_INTEGER;
         pv : access Void;
         cb : ULONG;
         pcbRead : access ULONG
      ) return HRESULT is abstract;
      function WriteAt(
         This : access ILockBytes;
         ulOffset : ULARGE_INTEGER;
         pv : access Void;
         cb : ULONG;
         pcbWritten : access ULONG
      ) return HRESULT is abstract;
      function Flush(This : access ILockBytes) return HRESULT is abstract;
      function SetSize(
         This : access ILockBytes;
         cb : ULARGE_INTEGER
      ) return HRESULT is abstract;
      function LockRegion(
         This : access ILockBytes;
         libOffset : ULARGE_INTEGER;
         cb : ULARGE_INTEGER;
         dwLockType : DWORD
      ) return HRESULT is abstract;
      function UnlockRegion(
         This : access ILockBytes;
         libOffset : ULARGE_INTEGER;
         cb : ULARGE_INTEGER;
         dwLockType : DWORD
      ) return HRESULT is abstract;
      function Stat(
         This : access ILockBytes;
         pstatstg : access STATSTG;
         grfStatFlag : DWORD
      ) return HRESULT is abstract;
   type ILockBytes_Ptr is access all ILockBytes'Class;
   function ILockBytes_RemoteReadAt_Proxy(
      This : access ILockBytes'Class;
      ulOffset : ULARGE_INTEGER;
      pv : access byte;
      cb : ULONG;
      pcbRead : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ILockBytes_RemoteReadAt_Proxy,"ILockBytes_RemoteReadAt_Proxy");
   procedure ILockBytes_RemoteReadAt_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ILockBytes_RemoteReadAt_Stub,"ILockBytes_RemoteReadAt_Stub");
   function ILockBytes_RemoteWriteAt_Proxy(
      This : access ILockBytes'Class;
      ulOffset : ULARGE_INTEGER;
      pv : access constant byte;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ILockBytes_RemoteWriteAt_Proxy,"ILockBytes_RemoteWriteAt_Proxy");
   procedure ILockBytes_RemoteWriteAt_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ILockBytes_RemoteWriteAt_Stub,"ILockBytes_RemoteWriteAt_Stub");
   type LPENUMFORMATETC is access all IEnumFORMATETC;
   type tagDVTARGETDEVICE_tdData_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagDVTARGETDEVICE is record
      tdSize : DWORD;
      tdDriverNameOffset : WORD;
      tdDeviceNameOffset : WORD;
      tdPortNameOffset : WORD;
      tdExtDevmodeOffset : WORD;
      tdData : tagDVTARGETDEVICE_tdData_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDVTARGETDEVICE);
   for tagDVTARGETDEVICE use record
      tdSize at 0 range 0..31;
      tdDriverNameOffset at 0 range 32..47;
      tdDeviceNameOffset at 0 range 48..63;
      tdPortNameOffset at 0 range 64..79;
      tdExtDevmodeOffset at 0 range 80..95;
      tdData at 0 range 96..103;
   end record;
   for tagDVTARGETDEVICE'Size use 128;
   for tagDVTARGETDEVICE'Alignment use 4;
   subtype DVTARGETDEVICE is tagDVTARGETDEVICE;
   type LPCLIPFORMAT is access all CLIPFORMAT;
   type tagFORMATETC is record
      cfFormat : CLIPFORMAT;
      ptd : access DVTARGETDEVICE;
      dwAspect : DWORD;
      lindex : LONG;
      tymed : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagFORMATETC);
   for tagFORMATETC use record
      cfFormat at 0 range 0..15;
      ptd at 0 range 64..127;
      dwAspect at 0 range 128..159;
      lindex at 0 range 160..191;
      tymed at 0 range 192..223;
   end record;
   for tagFORMATETC'Size use 256;
   for tagFORMATETC'Alignment use 8;
   subtype FORMATETC is tagFORMATETC;
   type LPFORMATETC is access all tagFORMATETC;
   IID_IEnumFORMATETC : aliased constant IID;
   pragma import (C,IID_IEnumFORMATETC,"IID_IEnumFORMATETC");
   type IEnumFORMATETC_Ptr is access all IEnumFORMATETC; -- Auto Generated Dependancy
   type IEnumFORMATETC is limited interface and IUnknown;
      function Next(
         This : access IEnumFORMATETC;
         celt : ULONG;
         rgelt : access FORMATETC;
         pceltFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumFORMATETC;
         celt : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumFORMATETC) return HRESULT is abstract;
      function Clone(
         This : access IEnumFORMATETC;
         ppenum : access IEnumFORMATETC_Ptr
      ) return HRESULT is abstract;
   function IEnumFORMATETC_RemoteNext_Proxy(
      This : access IEnumFORMATETC'Class;
      celt : ULONG;
      rgelt : access FORMATETC;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumFORMATETC_RemoteNext_Proxy,"IEnumFORMATETC_RemoteNext_Proxy");
   procedure IEnumFORMATETC_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumFORMATETC_RemoteNext_Stub,"IEnumFORMATETC_RemoteNext_Stub");
   type LPENUMSTATDATA is access all IEnumSTATDATA;
   type tagADVF is (
      ADVF_NODATA,
      ADVF_PRIMEFIRST,
      ADVF_ONLYONCE,
      ADVFCACHE_NOHANDLER,
      ADVFCACHE_FORCEBUILTIN,
      ADVFCACHE_ONSAVE,
      ADVF_DATAONSTOP
   );
   for tagADVF use (
      ADVF_NODATA => 1,
      ADVF_PRIMEFIRST => 2,
      ADVF_ONLYONCE => 4,
      ADVFCACHE_NOHANDLER => 8,
      ADVFCACHE_FORCEBUILTIN => 16,
      ADVFCACHE_ONSAVE => 32,
      ADVF_DATAONSTOP => 64
   );
   for tagADVF'Size use 32;
   subtype ADVF is tagADVF;
   type tagSTATDATA is record
      formatetc_x : FORMATETC;
      advf_x : DWORD;
      pAdvSink : access IAdviseSink'Class;
      dwConnection : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSTATDATA);
   for tagSTATDATA use record
      formatetc_x at 0 range 0..255;
      advf_x at 0 range 256..287;
      pAdvSink at 0 range 320..383;
      dwConnection at 0 range 384..415;
   end record;
   for tagSTATDATA'Size use 448;
   for tagSTATDATA'Alignment use 8;
   subtype STATDATA is tagSTATDATA;
   type LPSTATDATA is access all STATDATA;
   IID_IEnumSTATDATA : aliased constant IID;
   pragma import (C,IID_IEnumSTATDATA,"IID_IEnumSTATDATA");
   type IEnumSTATDATA_Ptr is access all IEnumSTATDATA; -- Auto Generated Dependancy
   type IEnumSTATDATA is limited interface and IUnknown;
      function Next(
         This : access IEnumSTATDATA;
         celt : ULONG;
         rgelt : access STATDATA;
         pceltFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumSTATDATA;
         celt : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumSTATDATA) return HRESULT is abstract;
      function Clone(
         This : access IEnumSTATDATA;
         ppenum : access IEnumSTATDATA_Ptr
      ) return HRESULT is abstract;
   function IEnumSTATDATA_RemoteNext_Proxy(
      This : access IEnumSTATDATA'Class;
      celt : ULONG;
      rgelt : access STATDATA;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATDATA_RemoteNext_Proxy,"IEnumSTATDATA_RemoteNext_Proxy");
   procedure IEnumSTATDATA_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumSTATDATA_RemoteNext_Stub,"IEnumSTATDATA_RemoteNext_Stub");
   type LPROOTSTORAGE is access all IRootStorage;
   IID_IRootStorage : aliased constant IID;
   pragma import (C,IID_IRootStorage,"IID_IRootStorage");
   type IRootStorage is limited interface and IUnknown;
      function SwitchToFile(
         This : access IRootStorage;
         pszFile : LPOLESTR
      ) return HRESULT is abstract;
   type IRootStorage_Ptr is access all IRootStorage'Class;
   type LPADVISESINK is access all IAdviseSink;
   type tagTYMED is (
      TYMED_NULL,
      TYMED_HGLOBAL,
      TYMED_FILE,
      TYMED_ISTREAM,
      TYMED_ISTORAGE,
      TYMED_GDI,
      TYMED_MFPICT,
      TYMED_ENHMF
   );
   for tagTYMED use (
      TYMED_NULL => 0,
      TYMED_HGLOBAL => 1,
      TYMED_FILE => 2,
      TYMED_ISTREAM => 4,
      TYMED_ISTORAGE => 8,
      TYMED_GDI => 16,
      TYMED_MFPICT => 32,
      TYMED_ENHMF => 64
   );
   for tagTYMED'Size use 32;
   subtype TYMED is tagTYMED;
   type tagRemSTGMEDIUM_data_Array is array(1..1) of byte; -- Auto Generated Dependancy
   type tagRemSTGMEDIUM is record
      tymed_x : DWORD;
      dwHandleType : DWORD;
      pData : ULONG;
      pUnkForRelease : ULONG;
      cbData : ULONG;
      data : tagRemSTGMEDIUM_data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRemSTGMEDIUM);
   for tagRemSTGMEDIUM use record
      tymed_x at 0 range 0..31;
      dwHandleType at 0 range 32..63;
      pData at 0 range 64..95;
      pUnkForRelease at 0 range 96..127;
      cbData at 0 range 128..159;
      data at 0 range 160..167;
   end record;
   for tagRemSTGMEDIUM'Size use 192;
   for tagRemSTGMEDIUM'Alignment use 4;
   subtype RemSTGMEDIUM is tagRemSTGMEDIUM;
   type Anonymous_Record_279 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hBitmap_x : HBITMAP;
         when 1 =>
            hMetaFilePict_x : HMETAFILEPICT;
         when 2 =>
            hEnhMetaFile_x : HENHMETAFILE;
         when 3 =>
            hGlobal_x : HGLOBAL;
         when 4 =>
            lpszFileName : LPOLESTR;
         when 5 =>
            pstm : access IStream'Class;
         when others => 
            pstg : access IStorage'Class;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_279);
   pragma Unchecked_Union (Anonymous_Record_279);
   for Anonymous_Record_279'Size use 64;
   for Anonymous_Record_279'Alignment use 8;
   type tagSTGMEDIUM is record
      tymed_x : DWORD;
      field_1 : Anonymous_Record_279;
      pUnkForRelease : access IUnknown'Class;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSTGMEDIUM);
   for tagSTGMEDIUM use record
      tymed_x at 0 range 0..31;
      field_1 at 0 range 32..95;
      pUnkForRelease at 0 range 128..191;
   end record;
   for tagSTGMEDIUM'Size use 192;
   for tagSTGMEDIUM'Alignment use 8;
   subtype uSTGMEDIUM is tagSTGMEDIUM;
   type MIDL_IAdviseSink_0002_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hBitmap_x : wireHBITMAP;
         when 1 =>
            hPalette_x : wireHPALETTE;
         when others => 
            hGeneric : wireHGLOBAL;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_IAdviseSink_0002_x);
   pragma Unchecked_Union (MIDL_IAdviseSink_0002_x);
   for MIDL_IAdviseSink_0002_x'Size use 64;
   for MIDL_IAdviseSink_0002_x'Alignment use 8;
   type GDI_OBJECT_x is record
      ObjectType : DWORD;
      MIDL_IAdviseSink_0002 : MIDL_IAdviseSink_0002_x;
   end record;
   pragma Convention (C_Pass_By_Copy,GDI_OBJECT_x);
   for GDI_OBJECT_x use record
      ObjectType at 0 range 0..31;
      MIDL_IAdviseSink_0002 at 0 range 32..95;
   end record;
   for GDI_OBJECT_x'Size use 128;
   for GDI_OBJECT_x'Alignment use 8;
   subtype GDI_OBJECT is GDI_OBJECT_x;
   type MIDL_IAdviseSink_0003_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hMetaFilePict_x : wireHMETAFILEPICT;
         when 1 =>
            hHEnhMetaFile : wireHENHMETAFILE;
         when 2 =>
            hGdiHandle : access GDI_OBJECT;
         when 3 =>
            hGlobal_x : wireHGLOBAL;
         when 4 =>
            lpszFileName : LPOLESTR;
         when 5 =>
            pstm : access BYTE_BLOB;
         when others => 
            pstg : access BYTE_BLOB;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_IAdviseSink_0003_x);
   pragma Unchecked_Union (MIDL_IAdviseSink_0003_x);
   for MIDL_IAdviseSink_0003_x'Size use 64;
   for MIDL_IAdviseSink_0003_x'Alignment use 8;
   type STGMEDIUM_UNION_x is record
      tymed_x : DWORD;
      MIDL_IAdviseSink_0003 : MIDL_IAdviseSink_0003_x;
   end record;
   pragma Convention (C_Pass_By_Copy,STGMEDIUM_UNION_x);
   for STGMEDIUM_UNION_x use record
      tymed_x at 0 range 0..31;
      MIDL_IAdviseSink_0003 at 0 range 32..95;
   end record;
   for STGMEDIUM_UNION_x'Size use 128;
   for STGMEDIUM_UNION_x'Alignment use 8;
   type userSTGMEDIUM_x is record
      pUnkForRelease : access IUnknown'Class;
   end record;
   pragma Convention (C_Pass_By_Copy,userSTGMEDIUM_x);
   for userSTGMEDIUM_x use record
      pUnkForRelease at 0 range 0..63;
   end record;
   for userSTGMEDIUM_x'Size use 64;
   for userSTGMEDIUM_x'Alignment use 8;
   subtype userSTGMEDIUM is userSTGMEDIUM_x;
   type wireSTGMEDIUM is access all userSTGMEDIUM;
   subtype STGMEDIUM is uSTGMEDIUM;
   type wireASYNC_STGMEDIUM is access all userSTGMEDIUM;
   subtype ASYNC_STGMEDIUM is STGMEDIUM;
   type LPSTGMEDIUM is access all STGMEDIUM;
   type userFLAG_STGMEDIUM_x is record
      ContextFlags : LONG;
      fPassOwnership : LONG;
      Stgmed : userSTGMEDIUM;
   end record;
   pragma Convention (C_Pass_By_Copy,userFLAG_STGMEDIUM_x);
   for userFLAG_STGMEDIUM_x use record
      ContextFlags at 0 range 0..31;
      fPassOwnership at 0 range 32..63;
      Stgmed at 0 range 64..127;
   end record;
   for userFLAG_STGMEDIUM_x'Size use 128;
   for userFLAG_STGMEDIUM_x'Alignment use 8;
   subtype userFLAG_STGMEDIUM is userFLAG_STGMEDIUM_x;
   type wireFLAG_STGMEDIUM is access all userFLAG_STGMEDIUM;
   type FLAG_STGMEDIUM_x is record
      ContextFlags : LONG;
      fPassOwnership : LONG;
      Stgmed : STGMEDIUM;
   end record;
   pragma Convention (C_Pass_By_Copy,FLAG_STGMEDIUM_x);
   for FLAG_STGMEDIUM_x use record
      ContextFlags at 0 range 0..31;
      fPassOwnership at 0 range 32..63;
      Stgmed at 0 range 64..255;
   end record;
   for FLAG_STGMEDIUM_x'Size use 256;
   for FLAG_STGMEDIUM_x'Alignment use 8;
   subtype FLAG_STGMEDIUM is FLAG_STGMEDIUM_x;
   IID_IAdviseSink : aliased constant IID;
   pragma import (C,IID_IAdviseSink,"IID_IAdviseSink");
   type IAdviseSink is limited interface and IUnknown;
      procedure OnDataChange(
         This : access IAdviseSink;
         pFormatetc : access FORMATETC;
         pStgmed : access STGMEDIUM
      ) is abstract;
      procedure OnViewChange(
         This : access IAdviseSink;
         dwAspect : DWORD;
         lindex : LONG
      ) is abstract;
      procedure OnRename(
         This : access IAdviseSink;
         pmk : access IMoniker'Class
      ) is abstract;
      procedure OnSave(This : access IAdviseSink) is abstract;
      procedure OnClose(This : access IAdviseSink) is abstract;
   type IAdviseSink_Ptr is access all IAdviseSink'Class;
   function IAdviseSink_RemoteOnDataChange_Proxy(
      This : access IAdviseSink'Class;
      pFormatetc : access FORMATETC;
      pStgmed : access ASYNC_STGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IAdviseSink_RemoteOnDataChange_Proxy,"IAdviseSink_RemoteOnDataChange_Proxy");
   procedure IAdviseSink_RemoteOnDataChange_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IAdviseSink_RemoteOnDataChange_Stub,"IAdviseSink_RemoteOnDataChange_Stub");
   function IAdviseSink_RemoteOnViewChange_Proxy(
      This : access IAdviseSink'Class;
      dwAspect : DWORD;
      lindex : LONG
   ) return HRESULT;
   pragma import (Cpp,IAdviseSink_RemoteOnViewChange_Proxy,"IAdviseSink_RemoteOnViewChange_Proxy");
   procedure IAdviseSink_RemoteOnViewChange_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IAdviseSink_RemoteOnViewChange_Stub,"IAdviseSink_RemoteOnViewChange_Stub");
   function IAdviseSink_RemoteOnRename_Proxy(
      This : access IAdviseSink'Class;
      pmk : access IMoniker'Class
   ) return HRESULT;
   pragma import (Cpp,IAdviseSink_RemoteOnRename_Proxy,"IAdviseSink_RemoteOnRename_Proxy");
   procedure IAdviseSink_RemoteOnRename_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IAdviseSink_RemoteOnRename_Stub,"IAdviseSink_RemoteOnRename_Stub");
   function IAdviseSink_RemoteOnSave_Proxy(
      This : access IAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,IAdviseSink_RemoteOnSave_Proxy,"IAdviseSink_RemoteOnSave_Proxy");
   procedure IAdviseSink_RemoteOnSave_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IAdviseSink_RemoteOnSave_Stub,"IAdviseSink_RemoteOnSave_Stub");
   function IAdviseSink_RemoteOnClose_Proxy(
      This : access IAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,IAdviseSink_RemoteOnClose_Proxy,"IAdviseSink_RemoteOnClose_Proxy");
   procedure IAdviseSink_RemoteOnClose_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IAdviseSink_RemoteOnClose_Stub,"IAdviseSink_RemoteOnClose_Stub");
   IID_AsyncIAdviseSink : aliased constant IID;
   pragma import (C,IID_AsyncIAdviseSink,"IID_AsyncIAdviseSink");
   type AsyncIAdviseSink is limited interface and IUnknown;
      procedure Begin_OnDataChange(
         This : access AsyncIAdviseSink;
         pFormatetc : access FORMATETC;
         pStgmed : access STGMEDIUM
      ) is abstract;
      procedure Finish_OnDataChange(This : access AsyncIAdviseSink) is abstract;
      procedure Begin_OnViewChange(
         This : access AsyncIAdviseSink;
         dwAspect : DWORD;
         lindex : LONG
      ) is abstract;
      procedure Finish_OnViewChange(This : access AsyncIAdviseSink) is abstract;
      procedure Begin_OnRename(
         This : access AsyncIAdviseSink;
         pmk : access IMoniker'Class
      ) is abstract;
      procedure Finish_OnRename(This : access AsyncIAdviseSink) is abstract;
      procedure Begin_OnSave(This : access AsyncIAdviseSink) is abstract;
      procedure Finish_OnSave(This : access AsyncIAdviseSink) is abstract;
      procedure Begin_OnClose(This : access AsyncIAdviseSink) is abstract;
      procedure Finish_OnClose(This : access AsyncIAdviseSink) is abstract;
   type AsyncIAdviseSink_Ptr is access all AsyncIAdviseSink'Class;
   function AsyncIAdviseSink_Begin_RemoteOnDataChange_Proxy(
      This : access AsyncIAdviseSink'Class;
      pFormatetc : access FORMATETC;
      pStgmed : access ASYNC_STGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Begin_RemoteOnDataChange_Proxy,"AsyncIAdviseSink_Begin_RemoteOnDataChange_Proxy");
   procedure AsyncIAdviseSink_Begin_RemoteOnDataChange_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,AsyncIAdviseSink_Begin_RemoteOnDataChange_Stub,"AsyncIAdviseSink_Begin_RemoteOnDataChange_Stub");
   function AsyncIAdviseSink_Finish_RemoteOnDataChange_Proxy(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Finish_RemoteOnDataChange_Proxy,"AsyncIAdviseSink_Finish_RemoteOnDataChange_Proxy");
   procedure AsyncIAdviseSink_Finish_RemoteOnDataChange_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,AsyncIAdviseSink_Finish_RemoteOnDataChange_Stub,"AsyncIAdviseSink_Finish_RemoteOnDataChange_Stub");
   function AsyncIAdviseSink_Begin_RemoteOnViewChange_Proxy(
      This : access AsyncIAdviseSink'Class;
      dwAspect : DWORD;
      lindex : LONG
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Begin_RemoteOnViewChange_Proxy,"AsyncIAdviseSink_Begin_RemoteOnViewChange_Proxy");
   procedure AsyncIAdviseSink_Begin_RemoteOnViewChange_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,AsyncIAdviseSink_Begin_RemoteOnViewChange_Stub,"AsyncIAdviseSink_Begin_RemoteOnViewChange_Stub");
   function AsyncIAdviseSink_Finish_RemoteOnViewChange_Proxy(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Finish_RemoteOnViewChange_Proxy,"AsyncIAdviseSink_Finish_RemoteOnViewChange_Proxy");
   procedure AsyncIAdviseSink_Finish_RemoteOnViewChange_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,AsyncIAdviseSink_Finish_RemoteOnViewChange_Stub,"AsyncIAdviseSink_Finish_RemoteOnViewChange_Stub");
   function AsyncIAdviseSink_Begin_RemoteOnRename_Proxy(
      This : access AsyncIAdviseSink'Class;
      pmk : access IMoniker'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Begin_RemoteOnRename_Proxy,"AsyncIAdviseSink_Begin_RemoteOnRename_Proxy");
   procedure AsyncIAdviseSink_Begin_RemoteOnRename_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,AsyncIAdviseSink_Begin_RemoteOnRename_Stub,"AsyncIAdviseSink_Begin_RemoteOnRename_Stub");
   function AsyncIAdviseSink_Finish_RemoteOnRename_Proxy(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Finish_RemoteOnRename_Proxy,"AsyncIAdviseSink_Finish_RemoteOnRename_Proxy");
   procedure AsyncIAdviseSink_Finish_RemoteOnRename_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,AsyncIAdviseSink_Finish_RemoteOnRename_Stub,"AsyncIAdviseSink_Finish_RemoteOnRename_Stub");
   function AsyncIAdviseSink_Begin_RemoteOnSave_Proxy(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Begin_RemoteOnSave_Proxy,"AsyncIAdviseSink_Begin_RemoteOnSave_Proxy");
   procedure AsyncIAdviseSink_Begin_RemoteOnSave_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,AsyncIAdviseSink_Begin_RemoteOnSave_Stub,"AsyncIAdviseSink_Begin_RemoteOnSave_Stub");
   function AsyncIAdviseSink_Finish_RemoteOnSave_Proxy(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Finish_RemoteOnSave_Proxy,"AsyncIAdviseSink_Finish_RemoteOnSave_Proxy");
   procedure AsyncIAdviseSink_Finish_RemoteOnSave_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,AsyncIAdviseSink_Finish_RemoteOnSave_Stub,"AsyncIAdviseSink_Finish_RemoteOnSave_Stub");
   function AsyncIAdviseSink_Begin_RemoteOnClose_Proxy(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Begin_RemoteOnClose_Proxy,"AsyncIAdviseSink_Begin_RemoteOnClose_Proxy");
   procedure AsyncIAdviseSink_Begin_RemoteOnClose_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,AsyncIAdviseSink_Begin_RemoteOnClose_Stub,"AsyncIAdviseSink_Begin_RemoteOnClose_Stub");
   function AsyncIAdviseSink_Finish_RemoteOnClose_Proxy(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Finish_RemoteOnClose_Proxy,"AsyncIAdviseSink_Finish_RemoteOnClose_Proxy");
   procedure AsyncIAdviseSink_Finish_RemoteOnClose_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,AsyncIAdviseSink_Finish_RemoteOnClose_Stub,"AsyncIAdviseSink_Finish_RemoteOnClose_Stub");
   type LPADVISESINK2 is access all IAdviseSink2;
   IID_IAdviseSink2 : aliased constant IID;
   pragma import (C,IID_IAdviseSink2,"IID_IAdviseSink2");
   type IAdviseSink2 is limited interface and IAdviseSink;
      procedure OnLinkSrcChange(
         This : access IAdviseSink2;
         pmk : access IMoniker'Class
      ) is abstract;
   type IAdviseSink2_Ptr is access all IAdviseSink2'Class;
   function IAdviseSink2_RemoteOnLinkSrcChange_Proxy(
      This : access IAdviseSink2'Class;
      pmk : access IMoniker'Class
   ) return HRESULT;
   pragma import (Cpp,IAdviseSink2_RemoteOnLinkSrcChange_Proxy,"IAdviseSink2_RemoteOnLinkSrcChange_Proxy");
   procedure IAdviseSink2_RemoteOnLinkSrcChange_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IAdviseSink2_RemoteOnLinkSrcChange_Stub,"IAdviseSink2_RemoteOnLinkSrcChange_Stub");
   IID_AsyncIAdviseSink2 : aliased constant IID;
   pragma import (C,IID_AsyncIAdviseSink2,"IID_AsyncIAdviseSink2");
   type AsyncIAdviseSink2 is limited interface and AsyncIAdviseSink;
      procedure Begin_OnLinkSrcChange(
         This : access AsyncIAdviseSink2;
         pmk : access IMoniker'Class
      ) is abstract;
      procedure Finish_OnLinkSrcChange(This : access AsyncIAdviseSink2) is abstract;
   type AsyncIAdviseSink2_Ptr is access all AsyncIAdviseSink2'Class;
   function AsyncIAdviseSink2_Begin_RemoteOnLinkSrcChange_Proxy(
      This : access AsyncIAdviseSink2'Class;
      pmk : access IMoniker'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink2_Begin_RemoteOnLinkSrcChange_Proxy,"AsyncIAdviseSink2_Begin_RemoteOnLinkSrcChange_Proxy");
   procedure AsyncIAdviseSink2_Begin_RemoteOnLinkSrcChange_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,AsyncIAdviseSink2_Begin_RemoteOnLinkSrcChange_Stub,"AsyncIAdviseSink2_Begin_RemoteOnLinkSrcChange_Stub");
   function AsyncIAdviseSink2_Finish_RemoteOnLinkSrcChange_Proxy(
      This : access AsyncIAdviseSink2'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink2_Finish_RemoteOnLinkSrcChange_Proxy,"AsyncIAdviseSink2_Finish_RemoteOnLinkSrcChange_Proxy");
   procedure AsyncIAdviseSink2_Finish_RemoteOnLinkSrcChange_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,AsyncIAdviseSink2_Finish_RemoteOnLinkSrcChange_Stub,"AsyncIAdviseSink2_Finish_RemoteOnLinkSrcChange_Stub");
   type LPDATAOBJECT is access all IDataObject;
   type tagDATADIR is (
      DATADIR_GET,
      DATADIR_SET
   );
   for tagDATADIR use (
      DATADIR_GET => 1,
      DATADIR_SET => 2
   );
   for tagDATADIR'Size use 32;
   subtype DATADIR is tagDATADIR;
   IID_IDataObject : aliased constant IID;
   pragma import (C,IID_IDataObject,"IID_IDataObject");
   type IDataObject is limited interface and IUnknown;
      function GetData(
         This : access IDataObject;
         pformatetcIn : access FORMATETC;
         pmedium : access STGMEDIUM
      ) return HRESULT is abstract;
      function GetDataHere(
         This : access IDataObject;
         pformatetc : access FORMATETC;
         pmedium : access STGMEDIUM
      ) return HRESULT is abstract;
      function QueryGetData(
         This : access IDataObject;
         pformatetc : access FORMATETC
      ) return HRESULT is abstract;
      function GetCanonicalFormatEtc(
         This : access IDataObject;
         pformatectIn : access FORMATETC;
         pformatetcOut : access FORMATETC
      ) return HRESULT is abstract;
      function SetData(
         This : access IDataObject;
         pformatetc : access FORMATETC;
         pmedium : access STGMEDIUM;
         fRelease : BOOL
      ) return HRESULT is abstract;
      function EnumFormatEtc(
         This : access IDataObject;
         dwDirection : DWORD;
         ppenumFormatEtc : access IEnumFORMATETC_Ptr
      ) return HRESULT is abstract;
      function DAdvise(
         This : access IDataObject;
         pformatetc : access FORMATETC;
         advf_x : DWORD;
         pAdvSink : access IAdviseSink'Class;
         pdwConnection : access DWORD
      ) return HRESULT is abstract;
      function DUnadvise(
         This : access IDataObject;
         dwConnection : DWORD
      ) return HRESULT is abstract;
      function EnumDAdvise(
         This : access IDataObject;
         ppenumAdvise : access IEnumSTATDATA_Ptr
      ) return HRESULT is abstract;
   type IDataObject_Ptr is access all IDataObject'Class;
   function IDataObject_RemoteGetData_Proxy(
      This : access IDataObject'Class;
      pformatetcIn : access FORMATETC;
      pRemoteMedium : access STGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IDataObject_RemoteGetData_Proxy,"IDataObject_RemoteGetData_Proxy");
   procedure IDataObject_RemoteGetData_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IDataObject_RemoteGetData_Stub,"IDataObject_RemoteGetData_Stub");
   function IDataObject_RemoteGetDataHere_Proxy(
      This : access IDataObject'Class;
      pformatetc : access FORMATETC;
      pRemoteMedium : access STGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IDataObject_RemoteGetDataHere_Proxy,"IDataObject_RemoteGetDataHere_Proxy");
   procedure IDataObject_RemoteGetDataHere_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IDataObject_RemoteGetDataHere_Stub,"IDataObject_RemoteGetDataHere_Stub");
   function IDataObject_RemoteSetData_Proxy(
      This : access IDataObject'Class;
      pformatetc : access FORMATETC;
      pmedium : access FLAG_STGMEDIUM;
      fRelease : BOOL
   ) return HRESULT;
   pragma import (Cpp,IDataObject_RemoteSetData_Proxy,"IDataObject_RemoteSetData_Proxy");
   procedure IDataObject_RemoteSetData_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IDataObject_RemoteSetData_Stub,"IDataObject_RemoteSetData_Stub");
   type LPDATAADVISEHOLDER is access all IDataAdviseHolder;
   IID_IDataAdviseHolder : aliased constant IID;
   pragma import (C,IID_IDataAdviseHolder,"IID_IDataAdviseHolder");
   type IDataAdviseHolder is limited interface and IUnknown;
      function Advise(
         This : access IDataAdviseHolder;
         pDataObject : access IDataObject'Class;
         pFetc : access FORMATETC;
         advf_x : DWORD;
         pAdvise : access IAdviseSink'Class;
         pdwConnection : access DWORD
      ) return HRESULT is abstract;
      function Unadvise(
         This : access IDataAdviseHolder;
         dwConnection : DWORD
      ) return HRESULT is abstract;
      function EnumAdvise(
         This : access IDataAdviseHolder;
         ppenumAdvise : access IEnumSTATDATA_Ptr
      ) return HRESULT is abstract;
      function SendOnDataChange(
         This : access IDataAdviseHolder;
         pDataObject : access IDataObject'Class;
         dwReserved : DWORD;
         advf_x : DWORD
      ) return HRESULT is abstract;
   type IDataAdviseHolder_Ptr is access all IDataAdviseHolder'Class;
   type LPMESSAGEFILTER is access all IMessageFilter;
   type tagCALLTYPE is (
      CALLTYPE_TOPLEVEL,
      CALLTYPE_NESTED,
      CALLTYPE_ASYNC,
      CALLTYPE_TOPLEVEL_CALLPENDING,
      CALLTYPE_ASYNC_CALLPENDING
   );
   for tagCALLTYPE use (
      CALLTYPE_TOPLEVEL => 1,
      CALLTYPE_NESTED => 2,
      CALLTYPE_ASYNC => 3,
      CALLTYPE_TOPLEVEL_CALLPENDING => 4,
      CALLTYPE_ASYNC_CALLPENDING => 5
   );
   for tagCALLTYPE'Size use 32;
   subtype CALLTYPE is tagCALLTYPE;
   type tagSERVERCALL is (
      SERVERCALL_ISHANDLED,
      SERVERCALL_REJECTED,
      SERVERCALL_RETRYLATER
   );
   for tagSERVERCALL use (
      SERVERCALL_ISHANDLED => 0,
      SERVERCALL_REJECTED => 1,
      SERVERCALL_RETRYLATER => 2
   );
   for tagSERVERCALL'Size use 32;
   subtype SERVERCALL is tagSERVERCALL;
   type tagPENDINGTYPE is (
      PENDINGTYPE_TOPLEVEL,
      PENDINGTYPE_NESTED
   );
   for tagPENDINGTYPE use (
      PENDINGTYPE_TOPLEVEL => 1,
      PENDINGTYPE_NESTED => 2
   );
   for tagPENDINGTYPE'Size use 32;
   subtype PENDINGTYPE is tagPENDINGTYPE;
   type tagPENDINGMSG is (
      PENDINGMSG_CANCELCALL,
      PENDINGMSG_WAITNOPROCESS,
      PENDINGMSG_WAITDEFPROCESS
   );
   for tagPENDINGMSG use (
      PENDINGMSG_CANCELCALL => 0,
      PENDINGMSG_WAITNOPROCESS => 1,
      PENDINGMSG_WAITDEFPROCESS => 2
   );
   for tagPENDINGMSG'Size use 32;
   subtype PENDINGMSG is tagPENDINGMSG;
   type tagINTERFACEINFO is record
      pUnk : access IUnknown'Class;
      iid_x : IID;
      wMethod : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagINTERFACEINFO);
   for tagINTERFACEINFO use record
      pUnk at 0 range 0..63;
      iid_x at 0 range 64..191;
      wMethod at 0 range 192..207;
   end record;
   for tagINTERFACEINFO'Size use 256;
   for tagINTERFACEINFO'Alignment use 8;
   subtype INTERFACEINFO is tagINTERFACEINFO;
   type LPINTERFACEINFO is access all tagINTERFACEINFO;
   IID_IMessageFilter : aliased constant IID;
   pragma import (C,IID_IMessageFilter,"IID_IMessageFilter");
   type IMessageFilter is limited interface and IUnknown;
      function HandleInComingCall(
         This : access IMessageFilter;
         dwCallType : DWORD;
         htaskCaller : HTASK;
         dwTickCount : DWORD;
         lpInterfaceInfo_x : LPINTERFACEINFO
      ) return DWORD is abstract;
      function RetryRejectedCall(
         This : access IMessageFilter;
         htaskCallee : HTASK;
         dwTickCount : DWORD;
         dwRejectType : DWORD
      ) return DWORD is abstract;
      function MessagePending(
         This : access IMessageFilter;
         htaskCallee : HTASK;
         dwTickCount : DWORD;
         dwPendingType : DWORD
      ) return DWORD is abstract;
   type IMessageFilter_Ptr is access all IMessageFilter'Class;
   IID_IClassActivator : aliased constant IID;
   pragma import (C,IID_IClassActivator,"IID_IClassActivator");
   type IClassActivator is limited interface and IUnknown;
      function GetClassObject(
         This : access IClassActivator;
         rclsid : access constant IID;
         dwClassContext : DWORD;
         locale : LCID;
         riid : access constant IID;
         ppv : access LPVOID
      ) return HRESULT is abstract;
   type IClassActivator_Ptr is access all IClassActivator'Class;
   IID_IFillLockBytes : aliased constant IID;
   pragma import (C,IID_IFillLockBytes,"IID_IFillLockBytes");
   type IFillLockBytes is limited interface and IUnknown;
      function FillAppend(
         This : access IFillLockBytes;
         pv : access Void;
         cb : ULONG;
         pcbWritten : access ULONG
      ) return HRESULT is abstract;
      function FillAt(
         This : access IFillLockBytes;
         ulOffset : ULARGE_INTEGER;
         pv : access Void;
         cb : ULONG;
         pcbWritten : access ULONG
      ) return HRESULT is abstract;
      function SetFillSize(
         This : access IFillLockBytes;
         ulSize : ULARGE_INTEGER
      ) return HRESULT is abstract;
      function terminate_x(
         This : access IFillLockBytes;
         bCanceled : BOOL
      ) return HRESULT is abstract;
   type IFillLockBytes_Ptr is access all IFillLockBytes'Class;
   function IFillLockBytes_RemoteFillAppend_Proxy(
      This : access IFillLockBytes'Class;
      pv : access constant byte;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IFillLockBytes_RemoteFillAppend_Proxy,"IFillLockBytes_RemoteFillAppend_Proxy");
   procedure IFillLockBytes_RemoteFillAppend_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IFillLockBytes_RemoteFillAppend_Stub,"IFillLockBytes_RemoteFillAppend_Stub");
   function IFillLockBytes_RemoteFillAt_Proxy(
      This : access IFillLockBytes'Class;
      ulOffset : ULARGE_INTEGER;
      pv : access constant byte;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IFillLockBytes_RemoteFillAt_Proxy,"IFillLockBytes_RemoteFillAt_Proxy");
   procedure IFillLockBytes_RemoteFillAt_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IFillLockBytes_RemoteFillAt_Stub,"IFillLockBytes_RemoteFillAt_Stub");
   IID_IProgressNotify : aliased constant IID;
   pragma import (C,IID_IProgressNotify,"IID_IProgressNotify");
   type IProgressNotify is limited interface and IUnknown;
      function OnProgress(
         This : access IProgressNotify;
         dwProgressCurrent : DWORD;
         dwProgressMaximum : DWORD;
         fAccurate : BOOL;
         fOwner : BOOL
      ) return HRESULT is abstract;
   type IProgressNotify_Ptr is access all IProgressNotify'Class;
   type tagStorageLayout is record
      LayoutType : DWORD;
      pwcsElementName : access OLECHAR;
      cOffset : LARGE_INTEGER;
      cBytes : LARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,tagStorageLayout);
   for tagStorageLayout use record
      LayoutType at 0 range 0..31;
      pwcsElementName at 0 range 64..127;
      cOffset at 0 range 128..191;
      cBytes at 0 range 192..255;
   end record;
   for tagStorageLayout'Size use 256;
   for tagStorageLayout'Alignment use 8;
   subtype StorageLayout is tagStorageLayout;
   IID_ILayoutStorage : aliased constant IID;
   pragma import (C,IID_ILayoutStorage,"IID_ILayoutStorage");
   type ILayoutStorage is limited interface and IUnknown;
      function LayoutScript(
         This : access ILayoutStorage;
         pStorageLayout : access StorageLayout;
         nEntries : DWORD;
         glfInterleavedFlag : DWORD
      ) return HRESULT is abstract;
      function BeginMonitor(This : access ILayoutStorage) return HRESULT is abstract;
      function EndMonitor(This : access ILayoutStorage) return HRESULT is abstract;
      function ReLayoutDocfile(
         This : access ILayoutStorage;
         pwcsNewDfName : access OLECHAR
      ) return HRESULT is abstract;
      function ReLayoutDocfileOnILockBytes(
         This : access ILayoutStorage;
         pILockBytes : access ILockBytes'Class
      ) return HRESULT is abstract;
   type ILayoutStorage_Ptr is access all ILayoutStorage'Class;
   IID_IBlockingLock : aliased constant IID;
   pragma import (C,IID_IBlockingLock,"IID_IBlockingLock");
   type IBlockingLock is limited interface and IUnknown;
      function Lock(
         This : access IBlockingLock;
         dwTimeout : DWORD
      ) return HRESULT is abstract;
      function Unlock(This : access IBlockingLock) return HRESULT is abstract;
   type IBlockingLock_Ptr is access all IBlockingLock'Class;
   IID_ITimeAndNoticeControl : aliased constant IID;
   pragma import (C,IID_ITimeAndNoticeControl,"IID_ITimeAndNoticeControl");
   type ITimeAndNoticeControl is limited interface and IUnknown;
      function SuppressChanges(
         This : access ITimeAndNoticeControl;
         res1 : DWORD;
         res2 : DWORD
      ) return HRESULT is abstract;
   type ITimeAndNoticeControl_Ptr is access all ITimeAndNoticeControl'Class;
   IID_IOplockStorage : aliased constant IID;
   pragma import (C,IID_IOplockStorage,"IID_IOplockStorage");
   type IOplockStorage is limited interface and IUnknown;
      function CreateStorageEx(
         This : access IOplockStorage;
         pwcsName : LPCWSTR;
         grfMode : DWORD;
         stgfmt : DWORD;
         grfAttrs : DWORD;
         riid : access constant IID;
         ppstgOpen : access LPVOID
      ) return HRESULT is abstract;
      function OpenStorageEx(
         This : access IOplockStorage;
         pwcsName : LPCWSTR;
         grfMode : DWORD;
         stgfmt : DWORD;
         grfAttrs : DWORD;
         riid : access constant IID;
         ppstgOpen : access LPVOID
      ) return HRESULT is abstract;
   type IOplockStorage_Ptr is access all IOplockStorage'Class;
   IID_IDirectWriterLock : aliased constant IID;
   pragma import (C,IID_IDirectWriterLock,"IID_IDirectWriterLock");
   type IDirectWriterLock is limited interface and IUnknown;
      function WaitForWriteAccess(
         This : access IDirectWriterLock;
         dwTimeout : DWORD
      ) return HRESULT is abstract;
      function ReleaseWriteAccess(This : access IDirectWriterLock) return HRESULT is abstract;
      function HaveWriteAccess(This : access IDirectWriterLock) return HRESULT is abstract;
   type IDirectWriterLock_Ptr is access all IDirectWriterLock'Class;
   IID_IUrlMon : aliased constant IID;
   pragma import (C,IID_IUrlMon,"IID_IUrlMon");
   type IUrlMon is limited interface and IUnknown;
      function AsyncGetClassBits(
         This : access IUrlMon;
         rclsid : access constant IID;
         pszTYPE : LPCWSTR;
         pszExt : LPCWSTR;
         dwFileVersionMS : DWORD;
         dwFileVersionLS : DWORD;
         pszCodeBase : LPCWSTR;
         pbc : access IBindCtx'Class;
         dwClassContext : DWORD;
         riid : access constant IID;
         flags : DWORD
      ) return HRESULT is abstract;
   type IUrlMon_Ptr is access all IUrlMon'Class;
   IID_IForegroundTransfer : aliased constant IID;
   pragma import (C,IID_IForegroundTransfer,"IID_IForegroundTransfer");
   type IForegroundTransfer is limited interface and IUnknown;
      function AllowForegroundTransfer(
         This : access IForegroundTransfer;
         lpvReserved : access Void
      ) return HRESULT is abstract;
   type IForegroundTransfer_Ptr is access all IForegroundTransfer'Class;
   IID_IThumbnailExtractor : aliased constant IID;
   pragma import (C,IID_IThumbnailExtractor,"IID_IThumbnailExtractor");
   type IThumbnailExtractor is limited interface and IUnknown;
      function ExtractThumbnail(
         This : access IThumbnailExtractor;
         pStg : access IStorage'Class;
         ulLength : ULONG;
         ulHeight : ULONG;
         pulOutputLength : access ULONG;
         pulOutputHeight : access ULONG;
         phOutputBitmap : access HBITMAP
      ) return HRESULT is abstract;
      function OnFileUpdated(
         This : access IThumbnailExtractor;
         pStg : access IStorage'Class
      ) return HRESULT is abstract;
   type IThumbnailExtractor_Ptr is access all IThumbnailExtractor'Class;
   IID_IDummyHICONIncluder : aliased constant IID;
   pragma import (C,IID_IDummyHICONIncluder,"IID_IDummyHICONIncluder");
   type IDummyHICONIncluder is limited interface and IUnknown;
      function Dummy(
         This : access IDummyHICONIncluder;
         h1 : HICON;
         h2 : HDC
      ) return HRESULT is abstract;
   type IDummyHICONIncluder_Ptr is access all IDummyHICONIncluder'Class;
   type tagApplicationType is (
      ServerApplication,
      LibraryApplication
   );
   for tagApplicationType use (
      ServerApplication => 0,
      LibraryApplication => 1
   );
   for tagApplicationType'Size use 32;
   subtype ApplicationType is tagApplicationType;
   type tagShutdownType is (
      IdleShutdown,
      ForcedShutdown
   );
   for tagShutdownType use (
      IdleShutdown => 0,
      ForcedShutdown => 1
   );
   for tagShutdownType'Size use 32;
   subtype ShutdownType is tagShutdownType;
   IID_IProcessLock : aliased constant IID;
   pragma import (C,IID_IProcessLock,"IID_IProcessLock");
   type IProcessLock is limited interface and IUnknown;
      function AddRefOnProcess(This : access IProcessLock) return ULONG is abstract;
      function ReleaseRefOnProcess(This : access IProcessLock) return ULONG is abstract;
   type IProcessLock_Ptr is access all IProcessLock'Class;
   IID_ISurrogateService : aliased constant IID;
   pragma import (C,IID_ISurrogateService,"IID_ISurrogateService");
   type ISurrogateService is limited interface and IUnknown;
      function Init(
         This : access ISurrogateService;
         rguidProcessID : access constant GUID;
         pProcessLock : access IProcessLock'Class;
         pfApplicationAware : access BOOL
      ) return HRESULT is abstract;
      function ApplicationLaunch(
         This : access ISurrogateService;
         rguidApplID : access constant GUID;
         appType : ApplicationType
      ) return HRESULT is abstract;
      function ApplicationFree(
         This : access ISurrogateService;
         rguidApplID : access constant GUID
      ) return HRESULT is abstract;
      function CatalogRefresh(
         This : access ISurrogateService;
         ulReserved : ULONG
      ) return HRESULT is abstract;
      function ProcessShutdown(
         This : access ISurrogateService;
         shutdowntype_x : ShutdownType
      ) return HRESULT is abstract;
   type ISurrogateService_Ptr is access all ISurrogateService'Class;
   type LPINITIALIZESPY is access all IInitializeSpy;
   IID_IInitializeSpy : aliased constant IID;
   pragma import (C,IID_IInitializeSpy,"IID_IInitializeSpy");
   type IInitializeSpy is limited interface and IUnknown;
      function PreInitialize(
         This : access IInitializeSpy;
         dwCoInit : DWORD;
         dwCurThreadAptRefs : DWORD
      ) return HRESULT is abstract;
      function PostInitialize(
         This : access IInitializeSpy;
         hrCoInit : HRESULT;
         dwCoInit : DWORD;
         dwNewThreadAptRefs : DWORD
      ) return HRESULT is abstract;
      function PreUninitialize(
         This : access IInitializeSpy;
         dwCurThreadAptRefs : DWORD
      ) return HRESULT is abstract;
      function PostUninitialize(
         This : access IInitializeSpy;
         dwNewThreadAptRefs : DWORD
      ) return HRESULT is abstract;
   type IInitializeSpy_Ptr is access all IInitializeSpy'Class;
   IID_IApartmentShutdown : aliased constant IID;
   pragma import (C,IID_IApartmentShutdown,"IID_IApartmentShutdown");
   type IApartmentShutdown is limited interface and IUnknown;
      procedure OnUninitialize(
         This : access IApartmentShutdown;
         ui64ApartmentIdentifier : UINT64
      ) is abstract;
   type IApartmentShutdown_Ptr is access all IApartmentShutdown'Class;
   function ASYNC_STGMEDIUM_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access ASYNC_STGMEDIUM
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,ASYNC_STGMEDIUM_UserSize,"ASYNC_STGMEDIUM_UserSize");
   function ASYNC_STGMEDIUM_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access ASYNC_STGMEDIUM
   ) return access UCHAR;
   pragma import (Cpp,ASYNC_STGMEDIUM_UserMarshal,"ASYNC_STGMEDIUM_UserMarshal");
   function ASYNC_STGMEDIUM_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access ASYNC_STGMEDIUM
   ) return access UCHAR;
   pragma import (Cpp,ASYNC_STGMEDIUM_UserUnmarshal,"ASYNC_STGMEDIUM_UserUnmarshal");
   procedure ASYNC_STGMEDIUM_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access ASYNC_STGMEDIUM
   );
   pragma import (Cpp,ASYNC_STGMEDIUM_UserFree,"ASYNC_STGMEDIUM_UserFree");
   function CLIPFORMAT_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access CLIPFORMAT
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,CLIPFORMAT_UserSize,"CLIPFORMAT_UserSize");
   function CLIPFORMAT_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access CLIPFORMAT
   ) return access UCHAR;
   pragma import (Cpp,CLIPFORMAT_UserMarshal,"CLIPFORMAT_UserMarshal");
   function CLIPFORMAT_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access CLIPFORMAT
   ) return access UCHAR;
   pragma import (Cpp,CLIPFORMAT_UserUnmarshal,"CLIPFORMAT_UserUnmarshal");
   procedure CLIPFORMAT_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access CLIPFORMAT
   );
   pragma import (Cpp,CLIPFORMAT_UserFree,"CLIPFORMAT_UserFree");
   function FLAG_STGMEDIUM_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access FLAG_STGMEDIUM
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,FLAG_STGMEDIUM_UserSize,"FLAG_STGMEDIUM_UserSize");
   function FLAG_STGMEDIUM_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access FLAG_STGMEDIUM
   ) return access UCHAR;
   pragma import (Cpp,FLAG_STGMEDIUM_UserMarshal,"FLAG_STGMEDIUM_UserMarshal");
   function FLAG_STGMEDIUM_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access FLAG_STGMEDIUM
   ) return access UCHAR;
   pragma import (Cpp,FLAG_STGMEDIUM_UserUnmarshal,"FLAG_STGMEDIUM_UserUnmarshal");
   procedure FLAG_STGMEDIUM_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access FLAG_STGMEDIUM
   );
   pragma import (Cpp,FLAG_STGMEDIUM_UserFree,"FLAG_STGMEDIUM_UserFree");
   function HBITMAP_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HBITMAP
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HBITMAP_UserSize,"HBITMAP_UserSize");
   function HBITMAP_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HBITMAP
   ) return access UCHAR;
   pragma import (Cpp,HBITMAP_UserMarshal,"HBITMAP_UserMarshal");
   function HBITMAP_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HBITMAP
   ) return access UCHAR;
   pragma import (Cpp,HBITMAP_UserUnmarshal,"HBITMAP_UserUnmarshal");
   procedure HBITMAP_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HBITMAP
   );
   pragma import (Cpp,HBITMAP_UserFree,"HBITMAP_UserFree");
   function HDC_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HDC
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HDC_UserSize,"HDC_UserSize");
   function HDC_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HDC
   ) return access UCHAR;
   pragma import (Cpp,HDC_UserMarshal,"HDC_UserMarshal");
   function HDC_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HDC
   ) return access UCHAR;
   pragma import (Cpp,HDC_UserUnmarshal,"HDC_UserUnmarshal");
   procedure HDC_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HDC
   );
   pragma import (Cpp,HDC_UserFree,"HDC_UserFree");
   function HICON_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HICON
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HICON_UserSize,"HICON_UserSize");
   function HICON_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HICON
   ) return access UCHAR;
   pragma import (Cpp,HICON_UserMarshal,"HICON_UserMarshal");
   function HICON_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HICON
   ) return access UCHAR;
   pragma import (Cpp,HICON_UserUnmarshal,"HICON_UserUnmarshal");
   procedure HICON_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HICON
   );
   pragma import (Cpp,HICON_UserFree,"HICON_UserFree");
   function SNB_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access SNB
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,SNB_UserSize,"SNB_UserSize");
   function SNB_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access SNB
   ) return access UCHAR;
   pragma import (Cpp,SNB_UserMarshal,"SNB_UserMarshal");
   function SNB_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access SNB
   ) return access UCHAR;
   pragma import (Cpp,SNB_UserUnmarshal,"SNB_UserUnmarshal");
   procedure SNB_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access SNB
   );
   pragma import (Cpp,SNB_UserFree,"SNB_UserFree");
   function STGMEDIUM_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access STGMEDIUM
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,STGMEDIUM_UserSize,"STGMEDIUM_UserSize");
   function STGMEDIUM_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access STGMEDIUM
   ) return access UCHAR;
   pragma import (Cpp,STGMEDIUM_UserMarshal,"STGMEDIUM_UserMarshal");
   function STGMEDIUM_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access STGMEDIUM
   ) return access UCHAR;
   pragma import (Cpp,STGMEDIUM_UserUnmarshal,"STGMEDIUM_UserUnmarshal");
   procedure STGMEDIUM_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access STGMEDIUM
   );
   pragma import (Cpp,STGMEDIUM_UserFree,"STGMEDIUM_UserFree");
   function ASYNC_STGMEDIUM_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access ASYNC_STGMEDIUM
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,ASYNC_STGMEDIUM_UserSize64,"ASYNC_STGMEDIUM_UserSize64");
   function ASYNC_STGMEDIUM_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access ASYNC_STGMEDIUM
   ) return access UCHAR;
   pragma import (Cpp,ASYNC_STGMEDIUM_UserMarshal64,"ASYNC_STGMEDIUM_UserMarshal64");
   function ASYNC_STGMEDIUM_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access ASYNC_STGMEDIUM
   ) return access UCHAR;
   pragma import (Cpp,ASYNC_STGMEDIUM_UserUnmarshal64,"ASYNC_STGMEDIUM_UserUnmarshal64");
   procedure ASYNC_STGMEDIUM_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access ASYNC_STGMEDIUM
   );
   pragma import (Cpp,ASYNC_STGMEDIUM_UserFree64,"ASYNC_STGMEDIUM_UserFree64");
   function CLIPFORMAT_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access CLIPFORMAT
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,CLIPFORMAT_UserSize64,"CLIPFORMAT_UserSize64");
   function CLIPFORMAT_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access CLIPFORMAT
   ) return access UCHAR;
   pragma import (Cpp,CLIPFORMAT_UserMarshal64,"CLIPFORMAT_UserMarshal64");
   function CLIPFORMAT_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access CLIPFORMAT
   ) return access UCHAR;
   pragma import (Cpp,CLIPFORMAT_UserUnmarshal64,"CLIPFORMAT_UserUnmarshal64");
   procedure CLIPFORMAT_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access CLIPFORMAT
   );
   pragma import (Cpp,CLIPFORMAT_UserFree64,"CLIPFORMAT_UserFree64");
   function FLAG_STGMEDIUM_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access FLAG_STGMEDIUM
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,FLAG_STGMEDIUM_UserSize64,"FLAG_STGMEDIUM_UserSize64");
   function FLAG_STGMEDIUM_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access FLAG_STGMEDIUM
   ) return access UCHAR;
   pragma import (Cpp,FLAG_STGMEDIUM_UserMarshal64,"FLAG_STGMEDIUM_UserMarshal64");
   function FLAG_STGMEDIUM_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access FLAG_STGMEDIUM
   ) return access UCHAR;
   pragma import (Cpp,FLAG_STGMEDIUM_UserUnmarshal64,"FLAG_STGMEDIUM_UserUnmarshal64");
   procedure FLAG_STGMEDIUM_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access FLAG_STGMEDIUM
   );
   pragma import (Cpp,FLAG_STGMEDIUM_UserFree64,"FLAG_STGMEDIUM_UserFree64");
   function HBITMAP_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HBITMAP
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HBITMAP_UserSize64,"HBITMAP_UserSize64");
   function HBITMAP_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HBITMAP
   ) return access UCHAR;
   pragma import (Cpp,HBITMAP_UserMarshal64,"HBITMAP_UserMarshal64");
   function HBITMAP_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HBITMAP
   ) return access UCHAR;
   pragma import (Cpp,HBITMAP_UserUnmarshal64,"HBITMAP_UserUnmarshal64");
   procedure HBITMAP_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HBITMAP
   );
   pragma import (Cpp,HBITMAP_UserFree64,"HBITMAP_UserFree64");
   function HDC_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HDC
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HDC_UserSize64,"HDC_UserSize64");
   function HDC_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HDC
   ) return access UCHAR;
   pragma import (Cpp,HDC_UserMarshal64,"HDC_UserMarshal64");
   function HDC_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HDC
   ) return access UCHAR;
   pragma import (Cpp,HDC_UserUnmarshal64,"HDC_UserUnmarshal64");
   procedure HDC_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HDC
   );
   pragma import (Cpp,HDC_UserFree64,"HDC_UserFree64");
   function HICON_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HICON
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HICON_UserSize64,"HICON_UserSize64");
   function HICON_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HICON
   ) return access UCHAR;
   pragma import (Cpp,HICON_UserMarshal64,"HICON_UserMarshal64");
   function HICON_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HICON
   ) return access UCHAR;
   pragma import (Cpp,HICON_UserUnmarshal64,"HICON_UserUnmarshal64");
   procedure HICON_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HICON
   );
   pragma import (Cpp,HICON_UserFree64,"HICON_UserFree64");
   function SNB_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access SNB
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,SNB_UserSize64,"SNB_UserSize64");
   function SNB_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access SNB
   ) return access UCHAR;
   pragma import (Cpp,SNB_UserMarshal64,"SNB_UserMarshal64");
   function SNB_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access SNB
   ) return access UCHAR;
   pragma import (Cpp,SNB_UserUnmarshal64,"SNB_UserUnmarshal64");
   procedure SNB_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access SNB
   );
   pragma import (Cpp,SNB_UserFree64,"SNB_UserFree64");
   function STGMEDIUM_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access STGMEDIUM
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,STGMEDIUM_UserSize64,"STGMEDIUM_UserSize64");
   function STGMEDIUM_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access STGMEDIUM
   ) return access UCHAR;
   pragma import (Cpp,STGMEDIUM_UserMarshal64,"STGMEDIUM_UserMarshal64");
   function STGMEDIUM_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access STGMEDIUM
   ) return access UCHAR;
   pragma import (Cpp,STGMEDIUM_UserUnmarshal64,"STGMEDIUM_UserUnmarshal64");
   procedure STGMEDIUM_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access STGMEDIUM
   );
   pragma import (Cpp,STGMEDIUM_UserFree64,"STGMEDIUM_UserFree64");
   function IEnumUnknown_Next_Proxy_x(
      This : access IEnumUnknown'Class;
      celt : ULONG;
      rgelt : access IUnknown_Ptr;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumUnknown_Next_Proxy_x,"IEnumUnknown_Next_Proxy");
   function IEnumUnknown_Next_Stub_x(
      This : access IEnumUnknown'Class;
      celt : ULONG;
      rgelt : access IUnknown_Ptr;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumUnknown_Next_Stub_x,"IEnumUnknown_Next_Stub");
   function IEnumString_Next_Proxy_x(
      This : access IEnumString'Class;
      celt : ULONG;
      rgelt : access LPOLESTR;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumString_Next_Proxy_x,"IEnumString_Next_Proxy");
   function IEnumString_Next_Stub_x(
      This : access IEnumString'Class;
      celt : ULONG;
      rgelt : access LPOLESTR;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumString_Next_Stub_x,"IEnumString_Next_Stub");
   function ISequentialStream_Read_Proxy_x(
      This : access ISequentialStream'Class;
      pv : access Void;
      cb : ULONG;
      pcbRead : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ISequentialStream_Read_Proxy_x,"ISequentialStream_Read_Proxy");
   function ISequentialStream_Read_Stub_x(
      This : access ISequentialStream'Class;
      pv : access byte;
      cb : ULONG;
      pcbRead : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ISequentialStream_Read_Stub_x,"ISequentialStream_Read_Stub");
   function ISequentialStream_Write_Proxy_x(
      This : access ISequentialStream'Class;
      pv : access Void;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ISequentialStream_Write_Proxy_x,"ISequentialStream_Write_Proxy");
   function ISequentialStream_Write_Stub_x(
      This : access ISequentialStream'Class;
      pv : access constant byte;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ISequentialStream_Write_Stub_x,"ISequentialStream_Write_Stub");
   function IStream_Seek_Proxy_x(
      This : access IStream'Class;
      dlibMove : LARGE_INTEGER;
      dwOrigin : DWORD;
      plibNewPosition : access ULARGE_INTEGER
   ) return HRESULT;
   pragma import (Cpp,IStream_Seek_Proxy_x,"IStream_Seek_Proxy");
   function IStream_Seek_Stub_x(
      This : access IStream'Class;
      dlibMove : LARGE_INTEGER;
      dwOrigin : DWORD;
      plibNewPosition : access ULARGE_INTEGER
   ) return HRESULT;
   pragma import (Cpp,IStream_Seek_Stub_x,"IStream_Seek_Stub");
   function IStream_CopyTo_Proxy_x(
      This : access IStream'Class;
      pstm : access IStream'Class;
      cb : ULARGE_INTEGER;
      pcbRead : access ULARGE_INTEGER;
      pcbWritten : access ULARGE_INTEGER
   ) return HRESULT;
   pragma import (Cpp,IStream_CopyTo_Proxy_x,"IStream_CopyTo_Proxy");
   function IStream_CopyTo_Stub_x(
      This : access IStream'Class;
      pstm : access IStream'Class;
      cb : ULARGE_INTEGER;
      pcbRead : access ULARGE_INTEGER;
      pcbWritten : access ULARGE_INTEGER
   ) return HRESULT;
   pragma import (Cpp,IStream_CopyTo_Stub_x,"IStream_CopyTo_Stub");
   function IBindCtx_SetBindOptions_Proxy(
      This : access IBindCtx'Class;
      pbindopts : access BIND_OPTS
   ) return HRESULT;
   pragma import (Cpp,IBindCtx_SetBindOptions_Proxy,"IBindCtx_SetBindOptions_Proxy");
   function IBindCtx_SetBindOptions_Stub(
      This : access IBindCtx'Class;
      pbindopts : access BIND_OPTS2
   ) return HRESULT;
   pragma import (Cpp,IBindCtx_SetBindOptions_Stub,"IBindCtx_SetBindOptions_Stub");
   function IBindCtx_GetBindOptions_Proxy(
      This : access IBindCtx'Class;
      pbindopts : access BIND_OPTS
   ) return HRESULT;
   pragma import (Cpp,IBindCtx_GetBindOptions_Proxy,"IBindCtx_GetBindOptions_Proxy");
   function IBindCtx_GetBindOptions_Stub(
      This : access IBindCtx'Class;
      pbindopts : access BIND_OPTS2
   ) return HRESULT;
   pragma import (Cpp,IBindCtx_GetBindOptions_Stub,"IBindCtx_GetBindOptions_Stub");
   function IEnumMoniker_Next_Proxy(
      This : access IEnumMoniker'Class;
      celt : ULONG;
      rgelt : access IMoniker_Ptr;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumMoniker_Next_Proxy,"IEnumMoniker_Next_Proxy");
   function IEnumMoniker_Next_Stub(
      This : access IEnumMoniker'Class;
      celt : ULONG;
      rgelt : access IMoniker_Ptr;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumMoniker_Next_Stub,"IEnumMoniker_Next_Stub");
   function IRunnableObject_IsRunning_Proxy(
      This : access IRunnableObject'Class
   ) return BOOL;
   pragma import (Cpp,IRunnableObject_IsRunning_Proxy,"IRunnableObject_IsRunning_Proxy");
   function IRunnableObject_IsRunning_Stub(
      This : access IRunnableObject'Class
   ) return HRESULT;
   pragma import (Cpp,IRunnableObject_IsRunning_Stub,"IRunnableObject_IsRunning_Stub");
   function IMoniker_BindToObject_Proxy(
      This : access IMoniker'Class;
      pbc : access IBindCtx'Class;
      pmkToLeft : access IMoniker'Class;
      riidResult : access constant IID;
      ppvResult : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,IMoniker_BindToObject_Proxy,"IMoniker_BindToObject_Proxy");
   function IMoniker_BindToObject_Stub(
      This : access IMoniker'Class;
      pbc : access IBindCtx'Class;
      pmkToLeft : access IMoniker'Class;
      riidResult : access constant IID;
      ppvResult : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IMoniker_BindToObject_Stub,"IMoniker_BindToObject_Stub");
   function IMoniker_BindToStorage_Proxy(
      This : access IMoniker'Class;
      pbc : access IBindCtx'Class;
      pmkToLeft : access IMoniker'Class;
      riid : access constant IID;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,IMoniker_BindToStorage_Proxy,"IMoniker_BindToStorage_Proxy");
   function IMoniker_BindToStorage_Stub(
      This : access IMoniker'Class;
      pbc : access IBindCtx'Class;
      pmkToLeft : access IMoniker'Class;
      riid : access constant IID;
      ppvObj : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IMoniker_BindToStorage_Stub,"IMoniker_BindToStorage_Stub");
   function IEnumSTATSTG_Next_Proxy(
      This : access IEnumSTATSTG'Class;
      celt : ULONG;
      rgelt : access STATSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATSTG_Next_Proxy,"IEnumSTATSTG_Next_Proxy");
   function IEnumSTATSTG_Next_Stub(
      This : access IEnumSTATSTG'Class;
      celt : ULONG;
      rgelt : access STATSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATSTG_Next_Stub,"IEnumSTATSTG_Next_Stub");
   function IStorage_OpenStream_Proxy(
      This : access IStorage'Class;
      pwcsName : access constant OLECHAR;
      reserved1 : access Void;
      grfMode : DWORD;
      reserved2 : DWORD;
      ppstm : access IStream_Ptr
   ) return HRESULT;
   pragma import (Cpp,IStorage_OpenStream_Proxy,"IStorage_OpenStream_Proxy");
   function IStorage_OpenStream_Stub(
      This : access IStorage'Class;
      pwcsName : access constant OLECHAR;
      cbReserved1 : ULONG;
      reserved1 : access byte;
      grfMode : DWORD;
      reserved2 : DWORD;
      ppstm : access IStream_Ptr
   ) return HRESULT;
   pragma import (Cpp,IStorage_OpenStream_Stub,"IStorage_OpenStream_Stub");
   function IStorage_CopyTo_Proxy(
      This : access IStorage'Class;
      ciidExclude : DWORD;
      rgiidExclude : access constant IID;
      snbExclude : SNB;
      pstgDest : access IStorage'Class
   ) return HRESULT;
   pragma import (Cpp,IStorage_CopyTo_Proxy,"IStorage_CopyTo_Proxy");
   function IStorage_CopyTo_Stub(
      This : access IStorage'Class;
      ciidExclude : DWORD;
      rgiidExclude : access constant IID;
      snbExclude : SNB;
      pstgDest : access IStorage'Class
   ) return HRESULT;
   pragma import (Cpp,IStorage_CopyTo_Stub,"IStorage_CopyTo_Stub");
   function IStorage_EnumElements_Proxy(
      This : access IStorage'Class;
      reserved1 : DWORD;
      reserved2 : access Void;
      reserved3 : DWORD;
      ppenum : access IEnumSTATSTG_Ptr
   ) return HRESULT;
   pragma import (Cpp,IStorage_EnumElements_Proxy,"IStorage_EnumElements_Proxy");
   function IStorage_EnumElements_Stub(
      This : access IStorage'Class;
      reserved1 : DWORD;
      cbReserved2 : ULONG;
      reserved2 : access byte;
      reserved3 : DWORD;
      ppenum : access IEnumSTATSTG_Ptr
   ) return HRESULT;
   pragma import (Cpp,IStorage_EnumElements_Stub,"IStorage_EnumElements_Stub");
   function ILockBytes_ReadAt_Proxy(
      This : access ILockBytes'Class;
      ulOffset : ULARGE_INTEGER;
      pv : access Void;
      cb : ULONG;
      pcbRead : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ILockBytes_ReadAt_Proxy,"ILockBytes_ReadAt_Proxy");
   function ILockBytes_ReadAt_Stub(
      This : access ILockBytes'Class;
      ulOffset : ULARGE_INTEGER;
      pv : access byte;
      cb : ULONG;
      pcbRead : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ILockBytes_ReadAt_Stub,"ILockBytes_ReadAt_Stub");
   function ILockBytes_WriteAt_Proxy(
      This : access ILockBytes'Class;
      ulOffset : ULARGE_INTEGER;
      pv : access Void;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ILockBytes_WriteAt_Proxy,"ILockBytes_WriteAt_Proxy");
   function ILockBytes_WriteAt_Stub(
      This : access ILockBytes'Class;
      ulOffset : ULARGE_INTEGER;
      pv : access constant byte;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ILockBytes_WriteAt_Stub,"ILockBytes_WriteAt_Stub");
   function IEnumFORMATETC_Next_Proxy(
      This : access IEnumFORMATETC'Class;
      celt : ULONG;
      rgelt : access FORMATETC;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumFORMATETC_Next_Proxy,"IEnumFORMATETC_Next_Proxy");
   function IEnumFORMATETC_Next_Stub(
      This : access IEnumFORMATETC'Class;
      celt : ULONG;
      rgelt : access FORMATETC;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumFORMATETC_Next_Stub,"IEnumFORMATETC_Next_Stub");
   function IEnumSTATDATA_Next_Proxy(
      This : access IEnumSTATDATA'Class;
      celt : ULONG;
      rgelt : access STATDATA;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATDATA_Next_Proxy,"IEnumSTATDATA_Next_Proxy");
   function IEnumSTATDATA_Next_Stub(
      This : access IEnumSTATDATA'Class;
      celt : ULONG;
      rgelt : access STATDATA;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATDATA_Next_Stub,"IEnumSTATDATA_Next_Stub");
   procedure IAdviseSink_OnDataChange_Proxy(
      This : access IAdviseSink'Class;
      pFormatetc : access FORMATETC;
      pStgmed : access STGMEDIUM
   );
   pragma import (Cpp,IAdviseSink_OnDataChange_Proxy,"IAdviseSink_OnDataChange_Proxy");
   function IAdviseSink_OnDataChange_Stub(
      This : access IAdviseSink'Class;
      pFormatetc : access FORMATETC;
      pStgmed : access ASYNC_STGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IAdviseSink_OnDataChange_Stub,"IAdviseSink_OnDataChange_Stub");
   procedure IAdviseSink_OnViewChange_Proxy(
      This : access IAdviseSink'Class;
      dwAspect : DWORD;
      lindex : LONG
   );
   pragma import (Cpp,IAdviseSink_OnViewChange_Proxy,"IAdviseSink_OnViewChange_Proxy");
   function IAdviseSink_OnViewChange_Stub(
      This : access IAdviseSink'Class;
      dwAspect : DWORD;
      lindex : LONG
   ) return HRESULT;
   pragma import (Cpp,IAdviseSink_OnViewChange_Stub,"IAdviseSink_OnViewChange_Stub");
   procedure IAdviseSink_OnRename_Proxy(
      This : access IAdviseSink'Class;
      pmk : access IMoniker'Class
   );
   pragma import (Cpp,IAdviseSink_OnRename_Proxy,"IAdviseSink_OnRename_Proxy");
   function IAdviseSink_OnRename_Stub(
      This : access IAdviseSink'Class;
      pmk : access IMoniker'Class
   ) return HRESULT;
   pragma import (Cpp,IAdviseSink_OnRename_Stub,"IAdviseSink_OnRename_Stub");
   procedure IAdviseSink_OnSave_Proxy(
      This : access IAdviseSink'Class
   );
   pragma import (Cpp,IAdviseSink_OnSave_Proxy,"IAdviseSink_OnSave_Proxy");
   function IAdviseSink_OnSave_Stub(
      This : access IAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,IAdviseSink_OnSave_Stub,"IAdviseSink_OnSave_Stub");
   procedure IAdviseSink_OnClose_Proxy(
      This : access IAdviseSink'Class
   );
   pragma import (Cpp,IAdviseSink_OnClose_Proxy,"IAdviseSink_OnClose_Proxy");
   function IAdviseSink_OnClose_Stub(
      This : access IAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,IAdviseSink_OnClose_Stub,"IAdviseSink_OnClose_Stub");
   procedure AsyncIAdviseSink_Begin_OnDataChange_Proxy(
      This : access AsyncIAdviseSink'Class;
      pFormatetc : access FORMATETC;
      pStgmed : access STGMEDIUM
   );
   pragma import (Cpp,AsyncIAdviseSink_Begin_OnDataChange_Proxy,"AsyncIAdviseSink_Begin_OnDataChange_Proxy");
   function AsyncIAdviseSink_Begin_OnDataChange_Stub(
      This : access AsyncIAdviseSink'Class;
      pFormatetc : access FORMATETC;
      pStgmed : access ASYNC_STGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Begin_OnDataChange_Stub,"AsyncIAdviseSink_Begin_OnDataChange_Stub");
   procedure AsyncIAdviseSink_Finish_OnDataChange_Proxy(
      This : access AsyncIAdviseSink'Class
   );
   pragma import (Cpp,AsyncIAdviseSink_Finish_OnDataChange_Proxy,"AsyncIAdviseSink_Finish_OnDataChange_Proxy");
   function AsyncIAdviseSink_Finish_OnDataChange_Stub(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Finish_OnDataChange_Stub,"AsyncIAdviseSink_Finish_OnDataChange_Stub");
   procedure AsyncIAdviseSink_Begin_OnViewChange_Proxy(
      This : access AsyncIAdviseSink'Class;
      dwAspect : DWORD;
      lindex : LONG
   );
   pragma import (Cpp,AsyncIAdviseSink_Begin_OnViewChange_Proxy,"AsyncIAdviseSink_Begin_OnViewChange_Proxy");
   function AsyncIAdviseSink_Begin_OnViewChange_Stub(
      This : access AsyncIAdviseSink'Class;
      dwAspect : DWORD;
      lindex : LONG
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Begin_OnViewChange_Stub,"AsyncIAdviseSink_Begin_OnViewChange_Stub");
   procedure AsyncIAdviseSink_Finish_OnViewChange_Proxy(
      This : access AsyncIAdviseSink'Class
   );
   pragma import (Cpp,AsyncIAdviseSink_Finish_OnViewChange_Proxy,"AsyncIAdviseSink_Finish_OnViewChange_Proxy");
   function AsyncIAdviseSink_Finish_OnViewChange_Stub(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Finish_OnViewChange_Stub,"AsyncIAdviseSink_Finish_OnViewChange_Stub");
   procedure AsyncIAdviseSink_Begin_OnRename_Proxy(
      This : access AsyncIAdviseSink'Class;
      pmk : access IMoniker'Class
   );
   pragma import (Cpp,AsyncIAdviseSink_Begin_OnRename_Proxy,"AsyncIAdviseSink_Begin_OnRename_Proxy");
   function AsyncIAdviseSink_Begin_OnRename_Stub(
      This : access AsyncIAdviseSink'Class;
      pmk : access IMoniker'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Begin_OnRename_Stub,"AsyncIAdviseSink_Begin_OnRename_Stub");
   procedure AsyncIAdviseSink_Finish_OnRename_Proxy(
      This : access AsyncIAdviseSink'Class
   );
   pragma import (Cpp,AsyncIAdviseSink_Finish_OnRename_Proxy,"AsyncIAdviseSink_Finish_OnRename_Proxy");
   function AsyncIAdviseSink_Finish_OnRename_Stub(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Finish_OnRename_Stub,"AsyncIAdviseSink_Finish_OnRename_Stub");
   procedure AsyncIAdviseSink_Begin_OnSave_Proxy(
      This : access AsyncIAdviseSink'Class
   );
   pragma import (Cpp,AsyncIAdviseSink_Begin_OnSave_Proxy,"AsyncIAdviseSink_Begin_OnSave_Proxy");
   function AsyncIAdviseSink_Begin_OnSave_Stub(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Begin_OnSave_Stub,"AsyncIAdviseSink_Begin_OnSave_Stub");
   procedure AsyncIAdviseSink_Finish_OnSave_Proxy(
      This : access AsyncIAdviseSink'Class
   );
   pragma import (Cpp,AsyncIAdviseSink_Finish_OnSave_Proxy,"AsyncIAdviseSink_Finish_OnSave_Proxy");
   function AsyncIAdviseSink_Finish_OnSave_Stub(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Finish_OnSave_Stub,"AsyncIAdviseSink_Finish_OnSave_Stub");
   procedure AsyncIAdviseSink_Begin_OnClose_Proxy(
      This : access AsyncIAdviseSink'Class
   );
   pragma import (Cpp,AsyncIAdviseSink_Begin_OnClose_Proxy,"AsyncIAdviseSink_Begin_OnClose_Proxy");
   function AsyncIAdviseSink_Begin_OnClose_Stub(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Begin_OnClose_Stub,"AsyncIAdviseSink_Begin_OnClose_Stub");
   procedure AsyncIAdviseSink_Finish_OnClose_Proxy(
      This : access AsyncIAdviseSink'Class
   );
   pragma import (Cpp,AsyncIAdviseSink_Finish_OnClose_Proxy,"AsyncIAdviseSink_Finish_OnClose_Proxy");
   function AsyncIAdviseSink_Finish_OnClose_Stub(
      This : access AsyncIAdviseSink'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink_Finish_OnClose_Stub,"AsyncIAdviseSink_Finish_OnClose_Stub");
   procedure IAdviseSink2_OnLinkSrcChange_Proxy(
      This : access IAdviseSink2'Class;
      pmk : access IMoniker'Class
   );
   pragma import (Cpp,IAdviseSink2_OnLinkSrcChange_Proxy,"IAdviseSink2_OnLinkSrcChange_Proxy");
   function IAdviseSink2_OnLinkSrcChange_Stub(
      This : access IAdviseSink2'Class;
      pmk : access IMoniker'Class
   ) return HRESULT;
   pragma import (Cpp,IAdviseSink2_OnLinkSrcChange_Stub,"IAdviseSink2_OnLinkSrcChange_Stub");
   procedure AsyncIAdviseSink2_Begin_OnLinkSrcChange_Proxy(
      This : access AsyncIAdviseSink2'Class;
      pmk : access IMoniker'Class
   );
   pragma import (Cpp,AsyncIAdviseSink2_Begin_OnLinkSrcChange_Proxy,"AsyncIAdviseSink2_Begin_OnLinkSrcChange_Proxy");
   function AsyncIAdviseSink2_Begin_OnLinkSrcChange_Stub(
      This : access AsyncIAdviseSink2'Class;
      pmk : access IMoniker'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink2_Begin_OnLinkSrcChange_Stub,"AsyncIAdviseSink2_Begin_OnLinkSrcChange_Stub");
   procedure AsyncIAdviseSink2_Finish_OnLinkSrcChange_Proxy(
      This : access AsyncIAdviseSink2'Class
   );
   pragma import (Cpp,AsyncIAdviseSink2_Finish_OnLinkSrcChange_Proxy,"AsyncIAdviseSink2_Finish_OnLinkSrcChange_Proxy");
   function AsyncIAdviseSink2_Finish_OnLinkSrcChange_Stub(
      This : access AsyncIAdviseSink2'Class
   ) return HRESULT;
   pragma import (Cpp,AsyncIAdviseSink2_Finish_OnLinkSrcChange_Stub,"AsyncIAdviseSink2_Finish_OnLinkSrcChange_Stub");
   function IDataObject_GetData_Proxy(
      This : access IDataObject'Class;
      pformatetcIn : access FORMATETC;
      pmedium : access STGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IDataObject_GetData_Proxy,"IDataObject_GetData_Proxy");
   function IDataObject_GetData_Stub(
      This : access IDataObject'Class;
      pformatetcIn : access FORMATETC;
      pRemoteMedium : access STGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IDataObject_GetData_Stub,"IDataObject_GetData_Stub");
   function IDataObject_GetDataHere_Proxy(
      This : access IDataObject'Class;
      pformatetc : access FORMATETC;
      pmedium : access STGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IDataObject_GetDataHere_Proxy,"IDataObject_GetDataHere_Proxy");
   function IDataObject_GetDataHere_Stub(
      This : access IDataObject'Class;
      pformatetc : access FORMATETC;
      pRemoteMedium : access STGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IDataObject_GetDataHere_Stub,"IDataObject_GetDataHere_Stub");
   function IDataObject_SetData_Proxy(
      This : access IDataObject'Class;
      pformatetc : access FORMATETC;
      pmedium : access STGMEDIUM;
      fRelease : BOOL
   ) return HRESULT;
   pragma import (Cpp,IDataObject_SetData_Proxy,"IDataObject_SetData_Proxy");
   function IDataObject_SetData_Stub(
      This : access IDataObject'Class;
      pformatetc : access FORMATETC;
      pmedium : access FLAG_STGMEDIUM;
      fRelease : BOOL
   ) return HRESULT;
   pragma import (Cpp,IDataObject_SetData_Stub,"IDataObject_SetData_Stub");
   function IFillLockBytes_FillAppend_Proxy(
      This : access IFillLockBytes'Class;
      pv : access Void;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IFillLockBytes_FillAppend_Proxy,"IFillLockBytes_FillAppend_Proxy");
   function IFillLockBytes_FillAppend_Stub(
      This : access IFillLockBytes'Class;
      pv : access constant byte;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IFillLockBytes_FillAppend_Stub,"IFillLockBytes_FillAppend_Stub");
   function IFillLockBytes_FillAt_Proxy(
      This : access IFillLockBytes'Class;
      ulOffset : ULARGE_INTEGER;
      pv : access Void;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IFillLockBytes_FillAt_Proxy,"IFillLockBytes_FillAt_Proxy");
   function IFillLockBytes_FillAt_Stub(
      This : access IFillLockBytes'Class;
      ulOffset : ULARGE_INTEGER;
      pv : access constant byte;
      cb : ULONG;
      pcbWritten : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IFillLockBytes_FillAt_Stub,"IFillLockBytes_FillAt_Stub");
   -- #include <propidlbase.h>
   type IPropertyStorage;
   type IPropertySetStorage;
   type IEnumSTATPROPSTG;
   type IEnumSTATPROPSETSTG;
   -- #include <oaidl.h>
   type ICreateTypeInfo;
   type ICreateTypeInfo2;
   type ICreateTypeLib;
   type ICreateTypeLib2;
   type IDispatch;
   type IEnumVARIANT;
   type ITypeComp;
   type ITypeInfo;
   type ITypeInfo2;
   type ITypeLib;
   type ITypeLib2;
   type ITypeChangeEvents;
   type IErrorInfo;
   type ICreateErrorInfo;
   type ISupportErrorInfo;
   type ITypeFactory;
   type ITypeMarshal;
   type IRecordInfo;
   type IErrorLog;
   type IPropertyBag;
   type ITypeLibRegistrationReader;
   type ITypeLibRegistration;
   subtype CURRENCY is CY;
   type tagSAFEARRAYBOUND is record
      cElements : ULONG;
      lLbound : LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSAFEARRAYBOUND);
   for tagSAFEARRAYBOUND use record
      cElements at 0 range 0..31;
      lLbound at 0 range 32..63;
   end record;
   for tagSAFEARRAYBOUND'Size use 64;
   for tagSAFEARRAYBOUND'Alignment use 4;
   subtype SAFEARRAYBOUND is tagSAFEARRAYBOUND;
   type LPSAFEARRAYBOUND is access all tagSAFEARRAYBOUND;
   type wireVARIANT_x;
   type wireVARIANT is access all wireVARIANT_x;
   type wireBRECORD_x;
   type wireBRECORD is access all wireBRECORD_x;
   type wireSAFEARR_BSTR_x is record
      Size_x : ULONG;
      aBstr : access wireBSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,wireSAFEARR_BSTR_x);
   for wireSAFEARR_BSTR_x use record
      Size_x at 0 range 0..31;
      aBstr at 0 range 64..127;
   end record;
   for wireSAFEARR_BSTR_x'Size use 128;
   for wireSAFEARR_BSTR_x'Alignment use 8;
   subtype SAFEARR_BSTR is wireSAFEARR_BSTR_x;
   type wireSAFEARR_UNKNOWN_x is record
      Size_x : ULONG;
      apUnknown : access LPUNKNOWN;
   end record;
   pragma Convention (C_Pass_By_Copy,wireSAFEARR_UNKNOWN_x);
   for wireSAFEARR_UNKNOWN_x use record
      Size_x at 0 range 0..31;
      apUnknown at 0 range 64..127;
   end record;
   for wireSAFEARR_UNKNOWN_x'Size use 128;
   for wireSAFEARR_UNKNOWN_x'Alignment use 8;
   subtype SAFEARR_UNKNOWN is wireSAFEARR_UNKNOWN_x;
   type IDispatch_Ptr is access all IDispatch; -- Auto Generated Dependancy
   type wireSAFEARR_DISPATCH_x is record
      Size_x : ULONG;
      apDispatch : access IDispatch_Ptr;
   end record;
   pragma Convention (C_Pass_By_Copy,wireSAFEARR_DISPATCH_x);
   for wireSAFEARR_DISPATCH_x use record
      Size_x at 0 range 0..31;
      apDispatch at 0 range 64..127;
   end record;
   for wireSAFEARR_DISPATCH_x'Size use 128;
   for wireSAFEARR_DISPATCH_x'Alignment use 8;
   subtype SAFEARR_DISPATCH is wireSAFEARR_DISPATCH_x;
   type wireSAFEARR_VARIANT_x is record
      Size_x : ULONG;
      aVariant : access wireVARIANT;
   end record;
   pragma Convention (C_Pass_By_Copy,wireSAFEARR_VARIANT_x);
   for wireSAFEARR_VARIANT_x use record
      Size_x at 0 range 0..31;
      aVariant at 0 range 64..127;
   end record;
   for wireSAFEARR_VARIANT_x'Size use 128;
   for wireSAFEARR_VARIANT_x'Alignment use 8;
   subtype SAFEARR_VARIANT is wireSAFEARR_VARIANT_x;
   type wireSAFEARR_BRECORD_x is record
      Size_x : ULONG;
      aRecord : access wireBRECORD;
   end record;
   pragma Convention (C_Pass_By_Copy,wireSAFEARR_BRECORD_x);
   for wireSAFEARR_BRECORD_x use record
      Size_x at 0 range 0..31;
      aRecord at 0 range 64..127;
   end record;
   for wireSAFEARR_BRECORD_x'Size use 128;
   for wireSAFEARR_BRECORD_x'Alignment use 8;
   subtype SAFEARR_BRECORD is wireSAFEARR_BRECORD_x;
   type wireSAFEARR_HAVEIID_x is record
      Size_x : ULONG;
      apUnknown : access LPUNKNOWN;
      iid_x : IID;
   end record;
   pragma Convention (C_Pass_By_Copy,wireSAFEARR_HAVEIID_x);
   for wireSAFEARR_HAVEIID_x use record
      Size_x at 0 range 0..31;
      apUnknown at 0 range 64..127;
      iid_x at 0 range 128..255;
   end record;
   for wireSAFEARR_HAVEIID_x'Size use 256;
   for wireSAFEARR_HAVEIID_x'Alignment use 8;
   subtype SAFEARR_HAVEIID is wireSAFEARR_HAVEIID_x;
   type tagSF_TYPE is (
      SF_I2,
      SF_I4,
      SF_BSTR,
      SF_DISPATCH,
      SF_ERROR,
      SF_VARIANT,
      SF_UNKNOWN,
      SF_I1,
      SF_I8,
      SF_RECORD,
      SF_HAVEIID
   );
   for tagSF_TYPE use (
      SF_I2 => 2,
      SF_I4 => 3,
      SF_BSTR => 8,
      SF_DISPATCH => 9,
      SF_ERROR => 10,
      SF_VARIANT => 12,
      SF_UNKNOWN => 13,
      SF_I1 => 16,
      SF_I8 => 20,
      SF_RECORD => 36,
      SF_HAVEIID => 32781
   );
   for tagSF_TYPE'Size use 32;
   subtype SF_TYPE is tagSF_TYPE;
   type MIDL_IOleAutomationTypes_0001_x (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            BstrStr : SAFEARR_BSTR;
         when 1 =>
            UnknownStr : SAFEARR_UNKNOWN;
         when 2 =>
            DispatchStr : SAFEARR_DISPATCH;
         when 3 =>
            VariantStr : SAFEARR_VARIANT;
         when 4 =>
            RecordStr : SAFEARR_BRECORD;
         when 5 =>
            HaveIidStr : SAFEARR_HAVEIID;
         when 6 =>
            ByteStr : BYTE_SIZEDARR;
         when 7 =>
            WordStr : WORD_SIZEDARR;
         when 8 =>
            LongStr : DWORD_SIZEDARR;
         when others => 
            HyperStr : HYPER_SIZEDARR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_IOleAutomationTypes_0001_x);
   pragma Unchecked_Union (MIDL_IOleAutomationTypes_0001_x);
   for MIDL_IOleAutomationTypes_0001_x'Size use 256;
   for MIDL_IOleAutomationTypes_0001_x'Alignment use 8;
   type wireSAFEARRAY_UNION_x is record
      sfType : ULONG;
      MIDL_IOleAutomationTypes_0001 : MIDL_IOleAutomationTypes_0001_x;
   end record;
   pragma Convention (C_Pass_By_Copy,wireSAFEARRAY_UNION_x);
   for wireSAFEARRAY_UNION_x use record
      sfType at 0 range 0..31;
      MIDL_IOleAutomationTypes_0001 at 0 range 32..287;
   end record;
   for wireSAFEARRAY_UNION_x'Size use 320;
   for wireSAFEARRAY_UNION_x'Alignment use 8;
   subtype SAFEARRAYUNION is wireSAFEARRAY_UNION_x;
   type wireSAFEARRAY_x_rgsabound_Array is array(1..1) of SAFEARRAYBOUND; -- Auto Generated Dependancy
   type wireSAFEARRAY_x is record
      cDims : USHORT;
      fFeatures : USHORT;
      cbElements : ULONG;
      cLocks : ULONG;
      uArrayStructs : SAFEARRAYUNION;
      rgsabound : wireSAFEARRAY_x_rgsabound_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,wireSAFEARRAY_x);
   for wireSAFEARRAY_x use record
      cDims at 0 range 0..15;
      fFeatures at 0 range 16..31;
      cbElements at 0 range 32..63;
      cLocks at 0 range 64..95;
      uArrayStructs at 0 range 128..447;
      rgsabound at 0 range 448..511;
   end record;
   for wireSAFEARRAY_x'Size use 512;
   for wireSAFEARRAY_x'Alignment use 8;
   type wireSAFEARRAY is access all wireSAFEARRAY_x;
   type wirePSAFEARRAY is access all wireSAFEARRAY;
   type tagSAFEARRAY_rgsabound_Array is array(1..1) of SAFEARRAYBOUND; -- Auto Generated Dependancy
   type tagSAFEARRAY is record
      cDims : USHORT;
      fFeatures : USHORT;
      cbElements : ULONG;
      cLocks : ULONG;
      pvData : PVOID;
      rgsabound : tagSAFEARRAY_rgsabound_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSAFEARRAY);
   for tagSAFEARRAY use record
      cDims at 0 range 0..15;
      fFeatures at 0 range 16..31;
      cbElements at 0 range 32..63;
      cLocks at 0 range 64..95;
      pvData at 0 range 128..191;
      rgsabound at 0 range 192..255;
   end record;
   for tagSAFEARRAY'Size use 256;
   for tagSAFEARRAY'Alignment use 8;
   subtype SAFEARRAY is tagSAFEARRAY;
   type LPSAFEARRAY is access all SAFEARRAY;
   type tagVARIANT;
   subtype VARIANT is tagVARIANT;
   type Anonymous_Record_283 is record
      pvRecord : PVOID;
      pRecInfo : access IRecordInfo'Class;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_283);
   for Anonymous_Record_283 use record
      pvRecord at 0 range 0..63;
      pRecInfo at 0 range 64..127;
   end record;
   for Anonymous_Record_283'Size use 128;
   for Anonymous_Record_283'Alignment use 8;
   type Anonymous_Record_282 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            llVal : LONGLONG;
         when 1 =>
            lVal : LONG;
         when 2 =>
            bVal : BYTE;
         when 3 =>
            iVal : SHORT;
         when 4 =>
            fltVal : FLOAT;
         when 5 =>
            dblVal : DOUBLE;
         when 6 =>
            boolVal : VARIANT_BOOL;
         when 7 =>
            OBSOLETE_VARIANT_BOOL : VARIANT_BOOL;
         when 8 =>
            scode_x : SCODE;
         when 9 =>
            cyVal : CY;
         when 10 =>
            date_x : DATE;
         when 11 =>
            bstrVal : BSTR;
         when 12 =>
            punkVal : access IUnknown'Class;
         when 13 =>
            pdispVal : access IDispatch'Class;
         when 14 =>
            parray : access SAFEARRAY;
         when 15 =>
            pbVal : access BYTE;
         when 16 =>
            piVal : access SHORT;
         when 17 =>
            plVal : access LONG;
         when 18 =>
            pllVal : access LONGLONG;
         when 19 =>
            pfltVal : access FLOAT;
         when 20 =>
            pdblVal : access DOUBLE;
         when 21 =>
            pboolVal : access VARIANT_BOOL;
         when 22 =>
            OBSOLETE_VARIANT_PBOOL : access VARIANT_BOOL;
         when 23 =>
            pscode_x : access SCODE;
         when 24 =>
            pcyVal : access CY;
         when 25 =>
            pdate : access DATE;
         when 26 =>
            pbstrVal : access BSTR;
         when 27 =>
            ppunkVal : access LPUNKNOWN;
         when 28 =>
            ppdispVal : access IDispatch_Ptr;
         when 29 =>
            pparray : access LPSAFEARRAY;
         when 30 =>
            pvarVal : access VARIANT;
         when 31 =>
            byref : PVOID;
         when 32 =>
            cVal : CHAR;
         when 33 =>
            uiVal : USHORT;
         when 34 =>
            ulVal : ULONG;
         when 35 =>
            ullVal : ULONGLONG;
         when 36 =>
            intVal : INT;
         when 37 =>
            uintVal : UINT;
         when 38 =>
            pdecVal : access DECIMAL;
         when 39 =>
            pcVal : access CHAR;
         when 40 =>
            puiVal : access USHORT;
         when 41 =>
            pulVal : access ULONG;
         when 42 =>
            pullVal : access ULONGLONG;
         when 43 =>
            pintVal : access INT;
         when 44 =>
            puintVal : access UINT;
         when others => 
            field_1 : Anonymous_Record_283;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_282);
   pragma Unchecked_Union (Anonymous_Record_282);
   for Anonymous_Record_282'Size use 128;
   for Anonymous_Record_282'Alignment use 8;
   type Anonymous_Record_281 is record
      vt : VARTYPE;
      wReserved1 : WORD;
      wReserved2 : WORD;
      wReserved3 : WORD;
      field_1 : Anonymous_Record_282;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_281);
   for Anonymous_Record_281 use record
      vt at 0 range 0..15;
      wReserved1 at 0 range 16..31;
      wReserved2 at 0 range 32..47;
      wReserved3 at 0 range 48..63;
      field_1 at 0 range 64..191;
   end record;
   for Anonymous_Record_281'Size use 192;
   for Anonymous_Record_281'Alignment use 8;
   type Anonymous_Record_280 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_281;
         when others => 
            decVal : DECIMAL;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_280);
   pragma Unchecked_Union (Anonymous_Record_280);
   for Anonymous_Record_280'Size use 192;
   for Anonymous_Record_280'Alignment use 8;
   type tagVARIANT is record
      field_1 : Anonymous_Record_280;
   end record;
   pragma Convention (C_Pass_By_Copy,tagVARIANT);
   for tagVARIANT use record
      field_1 at 0 range 0..191;
   end record;
   for tagVARIANT'Size use 192;
   for tagVARIANT'Alignment use 8;
   type LPVARIANT is access all VARIANT;
   subtype VARIANTARG is VARIANT;
   type LPVARIANTARG is access all VARIANT;
   type wireBRECORD_x is record
      fFlags : ULONG;
      clSize : ULONG;
      pRecInfo : access IRecordInfo'Class;
      pRecord : access byte;
   end record;
   pragma Convention (C_Pass_By_Copy,wireBRECORD_x);
   for wireBRECORD_x use record
      fFlags at 0 range 0..31;
      clSize at 0 range 32..63;
      pRecInfo at 0 range 64..127;
      pRecord at 0 range 128..191;
   end record;
   for wireBRECORD_x'Size use 192;
   for wireBRECORD_x'Alignment use 8;
   type Anonymous_Record_284 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            llVal : LONGLONG;
         when 1 =>
            lVal : LONG;
         when 2 =>
            bVal : BYTE;
         when 3 =>
            iVal : SHORT;
         when 4 =>
            fltVal : FLOAT;
         when 5 =>
            dblVal : DOUBLE;
         when 6 =>
            boolVal : VARIANT_BOOL;
         when 7 =>
            scode_x : SCODE;
         when 8 =>
            cyVal : CY;
         when 9 =>
            date_x : DATE;
         when 10 =>
            bstrVal : wireBSTR;
         when 11 =>
            punkVal : access IUnknown'Class;
         when 12 =>
            pdispVal : access IDispatch'Class;
         when 13 =>
            parray : wirePSAFEARRAY;
         when 14 =>
            brecVal : wireBRECORD;
         when 15 =>
            pbVal : access BYTE;
         when 16 =>
            piVal : access SHORT;
         when 17 =>
            plVal : access LONG;
         when 18 =>
            pllVal : access LONGLONG;
         when 19 =>
            pfltVal : access FLOAT;
         when 20 =>
            pdblVal : access DOUBLE;
         when 21 =>
            pboolVal : access VARIANT_BOOL;
         when 22 =>
            pscode_x : access SCODE;
         when 23 =>
            pcyVal : access CY;
         when 24 =>
            pdate : access DATE;
         when 25 =>
            pbstrVal : access wireBSTR;
         when 26 =>
            ppunkVal : access LPUNKNOWN;
         when 27 =>
            ppdispVal : access IDispatch_Ptr;
         when 28 =>
            pparray : access wirePSAFEARRAY;
         when 29 =>
            pvarVal : access wireVARIANT;
         when 30 =>
            cVal : CHAR;
         when 31 =>
            uiVal : USHORT;
         when 32 =>
            ulVal : ULONG;
         when 33 =>
            ullVal : ULONGLONG;
         when 34 =>
            intVal : INT;
         when 35 =>
            uintVal : UINT;
         when 36 =>
            decVal : DECIMAL;
         when 37 =>
            pdecVal : access DECIMAL;
         when 38 =>
            pcVal : access CHAR;
         when 39 =>
            puiVal : access USHORT;
         when 40 =>
            pulVal : access ULONG;
         when 41 =>
            pullVal : access ULONGLONG;
         when 42 =>
            pintVal : access INT;
         when others => 
            puintVal : access UINT;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_284);
   pragma Unchecked_Union (Anonymous_Record_284);
   for Anonymous_Record_284'Size use 128;
   for Anonymous_Record_284'Alignment use 8;
   type wireVARIANT_x is record
      clSize : DWORD;
      rpcReserved : DWORD;
      vt : USHORT;
      wReserved1 : USHORT;
      wReserved2 : USHORT;
      wReserved3 : USHORT;
      field_1 : Anonymous_Record_284;
   end record;
   pragma Convention (C_Pass_By_Copy,wireVARIANT_x);
   for wireVARIANT_x use record
      clSize at 0 range 0..31;
      rpcReserved at 0 range 32..63;
      vt at 0 range 64..79;
      wReserved1 at 0 range 80..95;
      wReserved2 at 0 range 96..111;
      wReserved3 at 0 range 112..127;
      field_1 at 0 range 128..255;
   end record;
   for wireVARIANT_x'Size use 256;
   for wireVARIANT_x'Alignment use 8;
   subtype DISPID is LONG;
   subtype MEMBERID is DISPID;
   subtype HREFTYPE is DWORD;
   type tagTYPEKIND is (
      TKIND_ENUM,
      TKIND_RECORD,
      TKIND_MODULE,
      TKIND_INTERFACE,
      TKIND_DISPATCH,
      TKIND_COCLASS,
      TKIND_ALIAS,
      TKIND_UNION,
      TKIND_MAX
   );
   for tagTYPEKIND use (
      TKIND_ENUM => 0,
      TKIND_RECORD => 1,
      TKIND_MODULE => 2,
      TKIND_INTERFACE => 3,
      TKIND_DISPATCH => 4,
      TKIND_COCLASS => 5,
      TKIND_ALIAS => 6,
      TKIND_UNION => 7,
      TKIND_MAX => 8
   );
   for tagTYPEKIND'Size use 32;
   subtype TYPEKIND is tagTYPEKIND;
   type tagARRAYDESC;
   type tagTYPEDESC; -- Auto Generated Dependancy -- Fwd Declaration
   type Anonymous_Record_285 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            lptdesc : access tagTYPEDESC;
         when 1 =>
            lpadesc : access tagARRAYDESC;
         when others => 
            hreftype_x : HREFTYPE;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_285);
   pragma Unchecked_Union (Anonymous_Record_285);
   for Anonymous_Record_285'Size use 64;
   for Anonymous_Record_285'Alignment use 8;
   type tagTYPEDESC is record
      field_1 : Anonymous_Record_285;
      vt : VARTYPE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTYPEDESC);
   for tagTYPEDESC use record
      field_1 at 0 range 0..63;
      vt at 0 range 64..79;
   end record;
   for tagTYPEDESC'Size use 128;
   for tagTYPEDESC'Alignment use 8;
   subtype TYPEDESC is tagTYPEDESC;
   type tagARRAYDESC_rgbounds_Array is array(1..1) of SAFEARRAYBOUND; -- Auto Generated Dependancy
   type tagARRAYDESC is record
      tdescElem : TYPEDESC;
      cDims : USHORT;
      rgbounds : tagARRAYDESC_rgbounds_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagARRAYDESC);
   for tagARRAYDESC use record
      tdescElem at 0 range 0..127;
      cDims at 0 range 128..143;
      rgbounds at 0 range 160..223;
   end record;
   for tagARRAYDESC'Size use 256;
   for tagARRAYDESC'Alignment use 8;
   subtype ARRAYDESC is tagARRAYDESC;
   type tagPARAMDESCEX is record
      cBytes : ULONG;
      varDefaultValue : VARIANTARG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPARAMDESCEX);
   for tagPARAMDESCEX use record
      cBytes at 0 range 0..31;
      varDefaultValue at 0 range 64..255;
   end record;
   for tagPARAMDESCEX'Size use 256;
   for tagPARAMDESCEX'Alignment use 8;
   subtype PARAMDESCEX is tagPARAMDESCEX;
   type LPPARAMDESCEX is access all tagPARAMDESCEX;
   type tagPARAMDESC is record
      pparamdescex : LPPARAMDESCEX;
      wParamFlags : USHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPARAMDESC);
   for tagPARAMDESC use record
      pparamdescex at 0 range 0..63;
      wParamFlags at 0 range 64..79;
   end record;
   for tagPARAMDESC'Size use 128;
   for tagPARAMDESC'Alignment use 8;
   subtype PARAMDESC is tagPARAMDESC;
   type LPPARAMDESC is access all tagPARAMDESC;
   type tagIDLDESC is record
      dwReserved : ULONG_PTR;
      wIDLFlags : USHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagIDLDESC);
   for tagIDLDESC use record
      dwReserved at 0 range 0..63;
      wIDLFlags at 0 range 64..79;
   end record;
   for tagIDLDESC'Size use 128;
   for tagIDLDESC'Alignment use 8;
   subtype IDLDESC is tagIDLDESC;
   type LPIDLDESC is access all tagIDLDESC;
   type Anonymous_Record_286 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            idldesc_x : IDLDESC;
         when others => 
            paramdesc_x : PARAMDESC;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_286);
   pragma Unchecked_Union (Anonymous_Record_286);
   for Anonymous_Record_286'Size use 128;
   for Anonymous_Record_286'Alignment use 8;
   type tagELEMDESC is record
      tdesc : TYPEDESC;
      field_1 : Anonymous_Record_286;
   end record;
   pragma Convention (C_Pass_By_Copy,tagELEMDESC);
   for tagELEMDESC use record
      tdesc at 0 range 0..127;
      field_1 at 0 range 128..255;
   end record;
   for tagELEMDESC'Size use 256;
   for tagELEMDESC'Alignment use 8;
   subtype ELEMDESC is tagELEMDESC;
   type LPELEMDESC is access all tagELEMDESC;
   type tagTYPEATTR is record
      guid_x : GUID;
      lcid_x : LCID;
      dwReserved : DWORD;
      memidConstructor : MEMBERID;
      memidDestructor : MEMBERID;
      lpstrSchema : LPOLESTR;
      cbSizeInstance : ULONG;
      typekind_x : TYPEKIND;
      cFuncs : WORD;
      cVars : WORD;
      cImplTypes : WORD;
      cbSizeVft : WORD;
      cbAlignment : WORD;
      wTypeFlags : WORD;
      wMajorVerNum : WORD;
      wMinorVerNum : WORD;
      tdescAlias : TYPEDESC;
      idldescType : IDLDESC;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTYPEATTR);
   for tagTYPEATTR use record
      guid_x at 0 range 0..127;
      lcid_x at 0 range 128..159;
      dwReserved at 0 range 160..191;
      memidConstructor at 0 range 192..223;
      memidDestructor at 0 range 224..255;
      lpstrSchema at 0 range 256..319;
      cbSizeInstance at 0 range 320..351;
      typekind_x at 0 range 352..383;
      cFuncs at 0 range 384..399;
      cVars at 0 range 400..415;
      cImplTypes at 0 range 416..431;
      cbSizeVft at 0 range 432..447;
      cbAlignment at 0 range 448..463;
      wTypeFlags at 0 range 464..479;
      wMajorVerNum at 0 range 480..495;
      wMinorVerNum at 0 range 496..511;
      tdescAlias at 0 range 512..639;
      idldescType at 0 range 640..767;
   end record;
   for tagTYPEATTR'Size use 768;
   for tagTYPEATTR'Alignment use 8;
   subtype TYPEATTR is tagTYPEATTR;
   type LPTYPEATTR is access all tagTYPEATTR;
   type tagDISPPARAMS is record
      rgvarg : access VARIANTARG;
      rgdispidNamedArgs : access DISPID;
      cArgs : UINT;
      cNamedArgs : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDISPPARAMS);
   for tagDISPPARAMS use record
      rgvarg at 0 range 0..63;
      rgdispidNamedArgs at 0 range 64..127;
      cArgs at 0 range 128..159;
      cNamedArgs at 0 range 160..191;
   end record;
   for tagDISPPARAMS'Size use 192;
   for tagDISPPARAMS'Alignment use 8;
   subtype DISPPARAMS is tagDISPPARAMS;
   type tagEXCEPINFO is record
      wCode : WORD;
      wReserved : WORD;
      bstrSource : BSTR;
      bstrDescription : BSTR;
      bstrHelpFile : BSTR;
      dwHelpContext : DWORD;
      pvReserved : PVOID;
      pfnDeferredFillIn : access System.Address;
      scode_x : SCODE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEXCEPINFO);
   for tagEXCEPINFO use record
      wCode at 0 range 0..15;
      wReserved at 0 range 16..31;
      bstrSource at 0 range 64..127;
      bstrDescription at 0 range 128..191;
      bstrHelpFile at 0 range 192..255;
      dwHelpContext at 0 range 256..287;
      pvReserved at 0 range 320..383;
      pfnDeferredFillIn at 0 range 384..447;
      scode_x at 0 range 448..479;
   end record;
   for tagEXCEPINFO'Size use 512;
   for tagEXCEPINFO'Alignment use 8;
   subtype EXCEPINFO is tagEXCEPINFO;
   type LPEXCEPINFO is access all tagEXCEPINFO;
   type tagCALLCONV is (
      CC_FASTCALL,
      CC_CDECL,
      CC_MSCPASCAL,
      CC_MACPASCAL,
      CC_STDCALL,
      CC_FPFASTCALL,
      CC_SYSCALL,
      CC_MPWCDECL,
      CC_MPWPASCAL,
      CC_MAX
   );
   for tagCALLCONV use (
      CC_FASTCALL => 0,
      CC_CDECL => 1,
      CC_MSCPASCAL => 2,
      CC_MACPASCAL => 3,
      CC_STDCALL => 4,
      CC_FPFASTCALL => 5,
      CC_SYSCALL => 6,
      CC_MPWCDECL => 7,
      CC_MPWPASCAL => 8,
      CC_MAX => 9
   );
   for tagCALLCONV'Size use 32;
   subtype CALLCONV is tagCALLCONV;
   type tagFUNCKIND is (
      FUNC_VIRTUAL,
      FUNC_PUREVIRTUAL,
      FUNC_NONVIRTUAL,
      FUNC_STATIC,
      FUNC_DISPATCH
   );
   for tagFUNCKIND use (
      FUNC_VIRTUAL => 0,
      FUNC_PUREVIRTUAL => 1,
      FUNC_NONVIRTUAL => 2,
      FUNC_STATIC => 3,
      FUNC_DISPATCH => 4
   );
   for tagFUNCKIND'Size use 32;
   subtype FUNCKIND is tagFUNCKIND;
   type tagINVOKEKIND is (
      INVOKE_FUNC,
      INVOKE_PROPERTYGET,
      INVOKE_PROPERTYPUT,
      INVOKE_PROPERTYPUTREF
   );
   for tagINVOKEKIND use (
      INVOKE_FUNC => 1,
      INVOKE_PROPERTYGET => 2,
      INVOKE_PROPERTYPUT => 4,
      INVOKE_PROPERTYPUTREF => 8
   );
   for tagINVOKEKIND'Size use 32;
   subtype INVOKEKIND is tagINVOKEKIND;
   type tagFUNCDESC is record
      memid : MEMBERID;
      lprgscode : access SCODE;
      lprgelemdescParam : access ELEMDESC;
      funckind_x : FUNCKIND;
      invkind : INVOKEKIND;
      callconv_x : CALLCONV;
      cParams : SHORT;
      cParamsOpt : SHORT;
      oVft : SHORT;
      cScodes : SHORT;
      elemdescFunc : ELEMDESC;
      wFuncFlags : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagFUNCDESC);
   for tagFUNCDESC use record
      memid at 0 range 0..31;
      lprgscode at 0 range 64..127;
      lprgelemdescParam at 0 range 128..191;
      funckind_x at 0 range 192..223;
      invkind at 0 range 224..255;
      callconv_x at 0 range 256..287;
      cParams at 0 range 288..303;
      cParamsOpt at 0 range 304..319;
      oVft at 0 range 320..335;
      cScodes at 0 range 336..351;
      elemdescFunc at 0 range 384..639;
      wFuncFlags at 0 range 640..655;
   end record;
   for tagFUNCDESC'Size use 704;
   for tagFUNCDESC'Alignment use 8;
   subtype FUNCDESC is tagFUNCDESC;
   type LPFUNCDESC is access all tagFUNCDESC;
   type tagVARKIND is (
      VAR_PERINSTANCE,
      VAR_STATIC,
      VAR_CONST,
      VAR_DISPATCH
   );
   for tagVARKIND use (
      VAR_PERINSTANCE => 0,
      VAR_STATIC => 1,
      VAR_CONST => 2,
      VAR_DISPATCH => 3
   );
   for tagVARKIND'Size use 32;
   subtype VARKIND is tagVARKIND;
   type Anonymous_Record_287 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            oInst : ULONG;
         when others => 
            lpvarValue : access VARIANT;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_287);
   pragma Unchecked_Union (Anonymous_Record_287);
   for Anonymous_Record_287'Size use 64;
   for Anonymous_Record_287'Alignment use 8;
   type tagVARDESC is record
      memid : MEMBERID;
      lpstrSchema : LPOLESTR;
      field_1 : Anonymous_Record_287;
      elemdescVar : ELEMDESC;
      wVarFlags : WORD;
      varkind_x : VARKIND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagVARDESC);
   for tagVARDESC use record
      memid at 0 range 0..31;
      lpstrSchema at 0 range 64..127;
      field_1 at 0 range 128..191;
      elemdescVar at 0 range 192..447;
      wVarFlags at 0 range 448..463;
      varkind_x at 0 range 480..511;
   end record;
   for tagVARDESC'Size use 512;
   for tagVARDESC'Alignment use 8;
   subtype VARDESC is tagVARDESC;
   type LPVARDESC is access all tagVARDESC;
   type tagTYPEFLAGS is (
      TYPEFLAG_FAPPOBJECT,
      TYPEFLAG_FCANCREATE,
      TYPEFLAG_FLICENSED,
      TYPEFLAG_FPREDECLID,
      TYPEFLAG_FHIDDEN,
      TYPEFLAG_FCONTROL,
      TYPEFLAG_FDUAL,
      TYPEFLAG_FNONEXTENSIBLE,
      TYPEFLAG_FOLEAUTOMATION,
      TYPEFLAG_FRESTRICTED,
      TYPEFLAG_FAGGREGATABLE,
      TYPEFLAG_FREPLACEABLE,
      TYPEFLAG_FDISPATCHABLE,
      TYPEFLAG_FREVERSEBIND,
      TYPEFLAG_FPROXY
   );
   for tagTYPEFLAGS use (
      TYPEFLAG_FAPPOBJECT => 1,
      TYPEFLAG_FCANCREATE => 2,
      TYPEFLAG_FLICENSED => 4,
      TYPEFLAG_FPREDECLID => 8,
      TYPEFLAG_FHIDDEN => 16,
      TYPEFLAG_FCONTROL => 32,
      TYPEFLAG_FDUAL => 64,
      TYPEFLAG_FNONEXTENSIBLE => 128,
      TYPEFLAG_FOLEAUTOMATION => 256,
      TYPEFLAG_FRESTRICTED => 512,
      TYPEFLAG_FAGGREGATABLE => 1024,
      TYPEFLAG_FREPLACEABLE => 2048,
      TYPEFLAG_FDISPATCHABLE => 4096,
      TYPEFLAG_FREVERSEBIND => 8192,
      TYPEFLAG_FPROXY => 16384
   );
   for tagTYPEFLAGS'Size use 32;
   subtype TYPEFLAGS is tagTYPEFLAGS;
   type tagFUNCFLAGS is (
      FUNCFLAG_FRESTRICTED,
      FUNCFLAG_FSOURCE,
      FUNCFLAG_FBINDABLE,
      FUNCFLAG_FREQUESTEDIT,
      FUNCFLAG_FDISPLAYBIND,
      FUNCFLAG_FDEFAULTBIND,
      FUNCFLAG_FHIDDEN,
      FUNCFLAG_FUSESGETLASTERROR,
      FUNCFLAG_FDEFAULTCOLLELEM,
      FUNCFLAG_FUIDEFAULT,
      FUNCFLAG_FNONBROWSABLE,
      FUNCFLAG_FREPLACEABLE,
      FUNCFLAG_FIMMEDIATEBIND
   );
   for tagFUNCFLAGS use (
      FUNCFLAG_FRESTRICTED => 1,
      FUNCFLAG_FSOURCE => 2,
      FUNCFLAG_FBINDABLE => 4,
      FUNCFLAG_FREQUESTEDIT => 8,
      FUNCFLAG_FDISPLAYBIND => 16,
      FUNCFLAG_FDEFAULTBIND => 32,
      FUNCFLAG_FHIDDEN => 64,
      FUNCFLAG_FUSESGETLASTERROR => 128,
      FUNCFLAG_FDEFAULTCOLLELEM => 256,
      FUNCFLAG_FUIDEFAULT => 512,
      FUNCFLAG_FNONBROWSABLE => 1024,
      FUNCFLAG_FREPLACEABLE => 2048,
      FUNCFLAG_FIMMEDIATEBIND => 4096
   );
   for tagFUNCFLAGS'Size use 32;
   subtype FUNCFLAGS is tagFUNCFLAGS;
   type tagVARFLAGS is (
      VARFLAG_FREADONLY,
      VARFLAG_FSOURCE,
      VARFLAG_FBINDABLE,
      VARFLAG_FREQUESTEDIT,
      VARFLAG_FDISPLAYBIND,
      VARFLAG_FDEFAULTBIND,
      VARFLAG_FHIDDEN,
      VARFLAG_FRESTRICTED,
      VARFLAG_FDEFAULTCOLLELEM,
      VARFLAG_FUIDEFAULT,
      VARFLAG_FNONBROWSABLE,
      VARFLAG_FREPLACEABLE,
      VARFLAG_FIMMEDIATEBIND
   );
   for tagVARFLAGS use (
      VARFLAG_FREADONLY => 1,
      VARFLAG_FSOURCE => 2,
      VARFLAG_FBINDABLE => 4,
      VARFLAG_FREQUESTEDIT => 8,
      VARFLAG_FDISPLAYBIND => 16,
      VARFLAG_FDEFAULTBIND => 32,
      VARFLAG_FHIDDEN => 64,
      VARFLAG_FRESTRICTED => 128,
      VARFLAG_FDEFAULTCOLLELEM => 256,
      VARFLAG_FUIDEFAULT => 512,
      VARFLAG_FNONBROWSABLE => 1024,
      VARFLAG_FREPLACEABLE => 2048,
      VARFLAG_FIMMEDIATEBIND => 4096
   );
   for tagVARFLAGS'Size use 32;
   subtype VARFLAGS is tagVARFLAGS;
   type tagCLEANLOCALSTORAGE is record
      pInterface : access IUnknown'Class;
      pStorage : PVOID;
      flags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCLEANLOCALSTORAGE);
   for tagCLEANLOCALSTORAGE use record
      pInterface at 0 range 0..63;
      pStorage at 0 range 64..127;
      flags at 0 range 128..159;
   end record;
   for tagCLEANLOCALSTORAGE'Size use 192;
   for tagCLEANLOCALSTORAGE'Alignment use 8;
   subtype CLEANLOCALSTORAGE is tagCLEANLOCALSTORAGE;
   type tagCUSTDATAITEM is record
      guid_x : GUID;
      varValue : VARIANTARG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCUSTDATAITEM);
   for tagCUSTDATAITEM use record
      guid_x at 0 range 0..127;
      varValue at 0 range 128..319;
   end record;
   for tagCUSTDATAITEM'Size use 320;
   for tagCUSTDATAITEM'Alignment use 8;
   subtype CUSTDATAITEM is tagCUSTDATAITEM;
   type LPCUSTDATAITEM is access all tagCUSTDATAITEM;
   type tagCUSTDATA is record
      cCustData : DWORD;
      prgCustData : LPCUSTDATAITEM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCUSTDATA);
   for tagCUSTDATA use record
      cCustData at 0 range 0..31;
      prgCustData at 0 range 64..127;
   end record;
   for tagCUSTDATA'Size use 128;
   for tagCUSTDATA'Alignment use 8;
   subtype CUSTDATA is tagCUSTDATA;
   type LPCUSTDATA is access all tagCUSTDATA;
   type LPCREATETYPEINFO is access all ICreateTypeInfo;
   IID_ICreateTypeInfo : aliased constant IID;
   pragma import (C,IID_ICreateTypeInfo,"IID_ICreateTypeInfo");
   type ICreateTypeInfo is limited interface and IUnknown;
      function SetGuid(
         This : access ICreateTypeInfo;
         guid_x : access constant GUID
      ) return HRESULT is abstract;
      function SetTypeFlags(
         This : access ICreateTypeInfo;
         uTypeFlags : UINT
      ) return HRESULT is abstract;
      function SetDocString(
         This : access ICreateTypeInfo;
         pStrDoc : LPOLESTR
      ) return HRESULT is abstract;
      function SetHelpContext(
         This : access ICreateTypeInfo;
         dwHelpContext : DWORD
      ) return HRESULT is abstract;
      function SetVersion(
         This : access ICreateTypeInfo;
         wMajorVerNum : WORD;
         wMinorVerNum : WORD
      ) return HRESULT is abstract;
      function AddRefTypeInfo(
         This : access ICreateTypeInfo;
         pTInfo : access ITypeInfo'Class;
         phRefType : access HREFTYPE
      ) return HRESULT is abstract;
      function AddFuncDesc(
         This : access ICreateTypeInfo;
         index : UINT;
         pFuncDesc : access FUNCDESC
      ) return HRESULT is abstract;
      function AddImplType(
         This : access ICreateTypeInfo;
         index : UINT;
         hRefType_x : HREFTYPE
      ) return HRESULT is abstract;
      function SetImplTypeFlags(
         This : access ICreateTypeInfo;
         index : UINT;
         implTypeFlags : INT
      ) return HRESULT is abstract;
      function SetAlignment(
         This : access ICreateTypeInfo;
         cbAlignment : WORD
      ) return HRESULT is abstract;
      function SetSchema(
         This : access ICreateTypeInfo;
         pStrSchema : LPOLESTR
      ) return HRESULT is abstract;
      function AddVarDesc(
         This : access ICreateTypeInfo;
         index : UINT;
         pVarDesc : access VARDESC
      ) return HRESULT is abstract;
      function SetFuncAndParamNames(
         This : access ICreateTypeInfo;
         index : UINT;
         rgszNames : access LPOLESTR;
         cNames : UINT
      ) return HRESULT is abstract;
      function SetVarName(
         This : access ICreateTypeInfo;
         index : UINT;
         szName : LPOLESTR
      ) return HRESULT is abstract;
      function SetTypeDescAlias(
         This : access ICreateTypeInfo;
         pTDescAlias : access TYPEDESC
      ) return HRESULT is abstract;
      function DefineFuncAsDllEntry(
         This : access ICreateTypeInfo;
         index : UINT;
         szDllName : LPOLESTR;
         szProcName : LPOLESTR
      ) return HRESULT is abstract;
      function SetFuncDocString(
         This : access ICreateTypeInfo;
         index : UINT;
         szDocString : LPOLESTR
      ) return HRESULT is abstract;
      function SetVarDocString(
         This : access ICreateTypeInfo;
         index : UINT;
         szDocString : LPOLESTR
      ) return HRESULT is abstract;
      function SetFuncHelpContext(
         This : access ICreateTypeInfo;
         index : UINT;
         dwHelpContext : DWORD
      ) return HRESULT is abstract;
      function SetVarHelpContext(
         This : access ICreateTypeInfo;
         index : UINT;
         dwHelpContext : DWORD
      ) return HRESULT is abstract;
      function SetMops(
         This : access ICreateTypeInfo;
         index : UINT;
         bstrMops : BSTR
      ) return HRESULT is abstract;
      function SetTypeIdldesc(
         This : access ICreateTypeInfo;
         pIdlDesc : access IDLDESC
      ) return HRESULT is abstract;
      function LayOut(This : access ICreateTypeInfo) return HRESULT is abstract;
   type ICreateTypeInfo_Ptr is access all ICreateTypeInfo'Class;
   type LPCREATETYPEINFO2 is access all ICreateTypeInfo2;
   IID_ICreateTypeInfo2 : aliased constant IID;
   pragma import (C,IID_ICreateTypeInfo2,"IID_ICreateTypeInfo2");
   type ICreateTypeInfo2 is limited interface and ICreateTypeInfo;
      function DeleteFuncDesc(
         This : access ICreateTypeInfo2;
         index : UINT
      ) return HRESULT is abstract;
      function DeleteFuncDescByMemId(
         This : access ICreateTypeInfo2;
         memid : MEMBERID;
         invKind : INVOKEKIND
      ) return HRESULT is abstract;
      function DeleteVarDesc(
         This : access ICreateTypeInfo2;
         index : UINT
      ) return HRESULT is abstract;
      function DeleteVarDescByMemId(
         This : access ICreateTypeInfo2;
         memid : MEMBERID
      ) return HRESULT is abstract;
      function DeleteImplType(
         This : access ICreateTypeInfo2;
         index : UINT
      ) return HRESULT is abstract;
      function SetCustData(
         This : access ICreateTypeInfo2;
         guid_x : access constant GUID;
         pVarVal : access VARIANT
      ) return HRESULT is abstract;
      function SetFuncCustData(
         This : access ICreateTypeInfo2;
         index : UINT;
         guid_x : access constant GUID;
         pVarVal : access VARIANT
      ) return HRESULT is abstract;
      function SetParamCustData(
         This : access ICreateTypeInfo2;
         indexFunc : UINT;
         indexParam : UINT;
         guid_x : access constant GUID;
         pVarVal : access VARIANT
      ) return HRESULT is abstract;
      function SetVarCustData(
         This : access ICreateTypeInfo2;
         index : UINT;
         guid_x : access constant GUID;
         pVarVal : access VARIANT
      ) return HRESULT is abstract;
      function SetImplTypeCustData(
         This : access ICreateTypeInfo2;
         index : UINT;
         guid_x : access constant GUID;
         pVarVal : access VARIANT
      ) return HRESULT is abstract;
      function SetHelpStringContext(
         This : access ICreateTypeInfo2;
         dwHelpStringContext : ULONG
      ) return HRESULT is abstract;
      function SetFuncHelpStringContext(
         This : access ICreateTypeInfo2;
         index : UINT;
         dwHelpStringContext : ULONG
      ) return HRESULT is abstract;
      function SetVarHelpStringContext(
         This : access ICreateTypeInfo2;
         index : UINT;
         dwHelpStringContext : ULONG
      ) return HRESULT is abstract;
      function Invalidate(This : access ICreateTypeInfo2) return HRESULT is abstract;
      function SetName(
         This : access ICreateTypeInfo2;
         szName : LPOLESTR
      ) return HRESULT is abstract;
   type ICreateTypeInfo2_Ptr is access all ICreateTypeInfo2'Class;
   type LPCREATETYPELIB is access all ICreateTypeLib;
   IID_ICreateTypeLib : aliased constant IID;
   pragma import (C,IID_ICreateTypeLib,"IID_ICreateTypeLib");
   type ICreateTypeLib is limited interface and IUnknown;
      function CreateTypeInfo(
         This : access ICreateTypeLib;
         szName : LPOLESTR;
         tkind : TYPEKIND;
         ppCTInfo : access ICreateTypeInfo_Ptr
      ) return HRESULT is abstract;
      function SetName(
         This : access ICreateTypeLib;
         szName : LPOLESTR
      ) return HRESULT is abstract;
      function SetVersion(
         This : access ICreateTypeLib;
         wMajorVerNum : WORD;
         wMinorVerNum : WORD
      ) return HRESULT is abstract;
      function SetGuid(
         This : access ICreateTypeLib;
         guid_x : access constant GUID
      ) return HRESULT is abstract;
      function SetDocString(
         This : access ICreateTypeLib;
         szDoc : LPOLESTR
      ) return HRESULT is abstract;
      function SetHelpFileName(
         This : access ICreateTypeLib;
         szHelpFileName : LPOLESTR
      ) return HRESULT is abstract;
      function SetHelpContext(
         This : access ICreateTypeLib;
         dwHelpContext : DWORD
      ) return HRESULT is abstract;
      function SetLcid(
         This : access ICreateTypeLib;
         lcid_x : LCID
      ) return HRESULT is abstract;
      function SetLibFlags(
         This : access ICreateTypeLib;
         uLibFlags : UINT
      ) return HRESULT is abstract;
      function SaveAllChanges(This : access ICreateTypeLib) return HRESULT is abstract;
   type ICreateTypeLib_Ptr is access all ICreateTypeLib'Class;
   type LPCREATETYPELIB2 is access all ICreateTypeLib2;
   IID_ICreateTypeLib2 : aliased constant IID;
   pragma import (C,IID_ICreateTypeLib2,"IID_ICreateTypeLib2");
   type ICreateTypeLib2 is limited interface and ICreateTypeLib;
      function DeleteTypeInfo(
         This : access ICreateTypeLib2;
         szName : LPOLESTR
      ) return HRESULT is abstract;
      function SetCustData(
         This : access ICreateTypeLib2;
         guid_x : access constant GUID;
         pVarVal : access VARIANT
      ) return HRESULT is abstract;
      function SetHelpStringContext(
         This : access ICreateTypeLib2;
         dwHelpStringContext : ULONG
      ) return HRESULT is abstract;
      function SetHelpStringDll(
         This : access ICreateTypeLib2;
         szFileName : LPOLESTR
      ) return HRESULT is abstract;
   type ICreateTypeLib2_Ptr is access all ICreateTypeLib2'Class;
   type LPDISPATCH is access all IDispatch;
   IID_IDispatch : aliased constant IID;
   pragma import (C,IID_IDispatch,"IID_IDispatch");
   type ITypeInfo_Ptr is access all ITypeInfo; -- Auto Generated Dependancy
   type IDispatch is limited interface and IUnknown;
      function GetTypeInfoCount(
         This : access IDispatch;
         pctinfo : access UINT
      ) return HRESULT is abstract;
      function GetTypeInfo(
         This : access IDispatch;
         iTInfo : UINT;
         lcid_x : LCID;
         ppTInfo : access ITypeInfo_Ptr
      ) return HRESULT is abstract;
      function GetIDsOfNames(
         This : access IDispatch;
         riid : access constant IID;
         rgszNames : access LPOLESTR;
         cNames : UINT;
         lcid_x : LCID;
         rgDispId : access DISPID
      ) return HRESULT is abstract;
      function Invoke(
         This : access IDispatch;
         dispIdMember : DISPID;
         riid : access constant IID;
         lcid_x : LCID;
         wFlags : WORD;
         pDispParams : access DISPPARAMS;
         pVarResult : access VARIANT;
         pExcepInfo : access EXCEPINFO;
         puArgErr : access UINT
      ) return HRESULT is abstract;
   function IDispatch_RemoteInvoke_Proxy(
      This : access IDispatch'Class;
      dispIdMember : DISPID;
      riid : access constant IID;
      lcid_x : LCID;
      dwFlags : DWORD;
      pDispParams : access DISPPARAMS;
      pVarResult : access VARIANT;
      pExcepInfo : access EXCEPINFO;
      pArgErr : access UINT;
      cVarRef : UINT;
      rgVarRefIdx : access UINT;
      rgVarRef : access VARIANTARG
   ) return HRESULT;
   pragma import (Cpp,IDispatch_RemoteInvoke_Proxy,"IDispatch_RemoteInvoke_Proxy");
   procedure IDispatch_RemoteInvoke_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IDispatch_RemoteInvoke_Stub,"IDispatch_RemoteInvoke_Stub");
   type LPENUMVARIANT is access all IEnumVARIANT;
   IID_IEnumVARIANT : aliased constant IID;
   pragma import (C,IID_IEnumVARIANT,"IID_IEnumVARIANT");
   type IEnumVARIANT_Ptr is access all IEnumVARIANT; -- Auto Generated Dependancy
   type IEnumVARIANT is limited interface and IUnknown;
      function Next(
         This : access IEnumVARIANT;
         celt : ULONG;
         rgVar : access VARIANT;
         pCeltFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumVARIANT;
         celt : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumVARIANT) return HRESULT is abstract;
      function Clone(
         This : access IEnumVARIANT;
         ppEnum : access IEnumVARIANT_Ptr
      ) return HRESULT is abstract;
   function IEnumVARIANT_RemoteNext_Proxy(
      This : access IEnumVARIANT'Class;
      celt : ULONG;
      rgVar : access VARIANT;
      pCeltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumVARIANT_RemoteNext_Proxy,"IEnumVARIANT_RemoteNext_Proxy");
   procedure IEnumVARIANT_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumVARIANT_RemoteNext_Stub,"IEnumVARIANT_RemoteNext_Stub");
   type LPTYPECOMP is access all ITypeComp;
   type tagDESCKIND is (
      DESCKIND_NONE,
      DESCKIND_FUNCDESC,
      DESCKIND_VARDESC,
      DESCKIND_TYPECOMP,
      DESCKIND_IMPLICITAPPOBJ,
      DESCKIND_MAX
   );
   for tagDESCKIND use (
      DESCKIND_NONE => 0,
      DESCKIND_FUNCDESC => 1,
      DESCKIND_VARDESC => 2,
      DESCKIND_TYPECOMP => 3,
      DESCKIND_IMPLICITAPPOBJ => 4,
      DESCKIND_MAX => 5
   );
   for tagDESCKIND'Size use 32;
   subtype DESCKIND is tagDESCKIND;
   type tagBINDPTR (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            lpfuncdesc_x : access FUNCDESC;
         when 1 =>
            lpvardesc_x : access VARDESC;
         when others => 
            lptcomp : access ITypeComp'Class;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBINDPTR);
   pragma Unchecked_Union (tagBINDPTR);
   for tagBINDPTR'Size use 64;
   for tagBINDPTR'Alignment use 8;
   subtype BINDPTR is tagBINDPTR;
   type LPBINDPTR is access all tagBINDPTR;
   IID_ITypeComp : aliased constant IID;
   pragma import (C,IID_ITypeComp,"IID_ITypeComp");
   type ITypeComp_Ptr is access all ITypeComp; -- Auto Generated Dependancy
   type ITypeComp is limited interface and IUnknown;
      function Bind_x(
         This : access ITypeComp;
         szName : LPOLESTR;
         lHashVal : ULONG;
         wFlags : WORD;
         ppTInfo : access ITypeInfo_Ptr;
         pDescKind : access DESCKIND;
         pBindPtr : access BINDPTR
      ) return HRESULT is abstract;
      function BindType(
         This : access ITypeComp;
         szName : LPOLESTR;
         lHashVal : ULONG;
         ppTInfo : access ITypeInfo_Ptr;
         ppTComp : access ITypeComp_Ptr
      ) return HRESULT is abstract;
   function ITypeComp_RemoteBind_Proxy(
      This : access ITypeComp'Class;
      szName : LPOLESTR;
      lHashVal : ULONG;
      wFlags : WORD;
      ppTInfo : access ITypeInfo_Ptr;
      pDescKind : access DESCKIND;
      ppFuncDesc : access LPFUNCDESC;
      ppVarDesc : access LPVARDESC;
      ppTypeComp : access ITypeComp_Ptr;
      pDummy : access CLEANLOCALSTORAGE
   ) return HRESULT;
   pragma import (Cpp,ITypeComp_RemoteBind_Proxy,"ITypeComp_RemoteBind_Proxy");
   procedure ITypeComp_RemoteBind_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeComp_RemoteBind_Stub,"ITypeComp_RemoteBind_Stub");
   function ITypeComp_RemoteBindType_Proxy(
      This : access ITypeComp'Class;
      szName : LPOLESTR;
      lHashVal : ULONG;
      ppTInfo : access ITypeInfo_Ptr
   ) return HRESULT;
   pragma import (Cpp,ITypeComp_RemoteBindType_Proxy,"ITypeComp_RemoteBindType_Proxy");
   procedure ITypeComp_RemoteBindType_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeComp_RemoteBindType_Stub,"ITypeComp_RemoteBindType_Stub");
   type LPTYPEINFO is access all ITypeInfo;
   IID_ITypeInfo : aliased constant IID;
   pragma import (C,IID_ITypeInfo,"IID_ITypeInfo");
   type TYPEATTR_Ptr is access all TYPEATTR; -- Auto Generated Dependancy
   type FUNCDESC_Ptr is access all FUNCDESC; -- Auto Generated Dependancy
   type VARDESC_Ptr is access all VARDESC; -- Auto Generated Dependancy
   type ITypeLib_Ptr is access all ITypeLib; -- Auto Generated Dependancy
   type ITypeInfo is limited interface and IUnknown;
      function GetTypeAttr(
         This : access ITypeInfo;
         ppTypeAttr : access TYPEATTR_Ptr
      ) return HRESULT is abstract;
      function GetTypeComp(
         This : access ITypeInfo;
         ppTComp : access ITypeComp_Ptr
      ) return HRESULT is abstract;
      function GetFuncDesc(
         This : access ITypeInfo;
         index : UINT;
         ppFuncDesc : access FUNCDESC_Ptr
      ) return HRESULT is abstract;
      function GetVarDesc(
         This : access ITypeInfo;
         index : UINT;
         ppVarDesc : access VARDESC_Ptr
      ) return HRESULT is abstract;
      function GetNames(
         This : access ITypeInfo;
         memid : MEMBERID;
         rgBstrNames : access BSTR;
         cMaxNames : UINT;
         pcNames : access UINT
      ) return HRESULT is abstract;
      function GetRefTypeOfImplType(
         This : access ITypeInfo;
         index : UINT;
         pRefType : access HREFTYPE
      ) return HRESULT is abstract;
      function GetImplTypeFlags(
         This : access ITypeInfo;
         index : UINT;
         pImplTypeFlags : access INT
      ) return HRESULT is abstract;
      function GetIDsOfNames(
         This : access ITypeInfo;
         rgszNames : access LPOLESTR;
         cNames : UINT;
         pMemId : access MEMBERID
      ) return HRESULT is abstract;
      function Invoke(
         This : access ITypeInfo;
         pvInstance : PVOID;
         memid : MEMBERID;
         wFlags : WORD;
         pDispParams : access DISPPARAMS;
         pVarResult : access VARIANT;
         pExcepInfo : access EXCEPINFO;
         puArgErr : access UINT
      ) return HRESULT is abstract;
      function GetDocumentation(
         This : access ITypeInfo;
         memid : MEMBERID;
         pBstrName : access BSTR;
         pBstrDocString : access BSTR;
         pdwHelpContext : access DWORD;
         pBstrHelpFile : access BSTR
      ) return HRESULT is abstract;
      function GetDllEntry(
         This : access ITypeInfo;
         memid : MEMBERID;
         invKind : INVOKEKIND;
         pBstrDllName : access BSTR;
         pBstrName : access BSTR;
         pwOrdinal : access WORD
      ) return HRESULT is abstract;
      function GetRefTypeInfo(
         This : access ITypeInfo;
         hRefType_x : HREFTYPE;
         ppTInfo : access ITypeInfo_Ptr
      ) return HRESULT is abstract;
      function AddressOfMember(
         This : access ITypeInfo;
         memid : MEMBERID;
         invKind : INVOKEKIND;
         ppv : access PVOID
      ) return HRESULT is abstract;
      function CreateInstance(
         This : access ITypeInfo;
         pUnkOuter : access IUnknown'Class;
         riid : access constant IID;
         ppvObj : access PVOID
      ) return HRESULT is abstract;
      function GetMops(
         This : access ITypeInfo;
         memid : MEMBERID;
         pBstrMops : access BSTR
      ) return HRESULT is abstract;
      function GetContainingTypeLib(
         This : access ITypeInfo;
         ppTLib : access ITypeLib_Ptr;
         pIndex : access UINT
      ) return HRESULT is abstract;
      procedure ReleaseTypeAttr(
         This : access ITypeInfo;
         pTypeAttr : access TYPEATTR
      ) is abstract;
      procedure ReleaseFuncDesc(
         This : access ITypeInfo;
         pFuncDesc : access FUNCDESC
      ) is abstract;
      procedure ReleaseVarDesc(
         This : access ITypeInfo;
         pVarDesc : access VARDESC
      ) is abstract;
   function ITypeInfo_RemoteGetTypeAttr_Proxy(
      This : access ITypeInfo'Class;
      ppTypeAttr : access LPTYPEATTR;
      pDummy : access CLEANLOCALSTORAGE
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_RemoteGetTypeAttr_Proxy,"ITypeInfo_RemoteGetTypeAttr_Proxy");
   procedure ITypeInfo_RemoteGetTypeAttr_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_RemoteGetTypeAttr_Stub,"ITypeInfo_RemoteGetTypeAttr_Stub");
   function ITypeInfo_RemoteGetFuncDesc_Proxy(
      This : access ITypeInfo'Class;
      index : UINT;
      ppFuncDesc : access LPFUNCDESC;
      pDummy : access CLEANLOCALSTORAGE
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_RemoteGetFuncDesc_Proxy,"ITypeInfo_RemoteGetFuncDesc_Proxy");
   procedure ITypeInfo_RemoteGetFuncDesc_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_RemoteGetFuncDesc_Stub,"ITypeInfo_RemoteGetFuncDesc_Stub");
   function ITypeInfo_RemoteGetVarDesc_Proxy(
      This : access ITypeInfo'Class;
      index : UINT;
      ppVarDesc : access LPVARDESC;
      pDummy : access CLEANLOCALSTORAGE
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_RemoteGetVarDesc_Proxy,"ITypeInfo_RemoteGetVarDesc_Proxy");
   procedure ITypeInfo_RemoteGetVarDesc_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_RemoteGetVarDesc_Stub,"ITypeInfo_RemoteGetVarDesc_Stub");
   function ITypeInfo_RemoteGetNames_Proxy(
      This : access ITypeInfo'Class;
      memid : MEMBERID;
      rgBstrNames : access BSTR;
      cMaxNames : UINT;
      pcNames : access UINT
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_RemoteGetNames_Proxy,"ITypeInfo_RemoteGetNames_Proxy");
   procedure ITypeInfo_RemoteGetNames_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_RemoteGetNames_Stub,"ITypeInfo_RemoteGetNames_Stub");
   function ITypeInfo_LocalGetIDsOfNames_Proxy(
      This : access ITypeInfo'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_LocalGetIDsOfNames_Proxy,"ITypeInfo_LocalGetIDsOfNames_Proxy");
   procedure ITypeInfo_LocalGetIDsOfNames_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_LocalGetIDsOfNames_Stub,"ITypeInfo_LocalGetIDsOfNames_Stub");
   function ITypeInfo_LocalInvoke_Proxy(
      This : access ITypeInfo'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_LocalInvoke_Proxy,"ITypeInfo_LocalInvoke_Proxy");
   procedure ITypeInfo_LocalInvoke_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_LocalInvoke_Stub,"ITypeInfo_LocalInvoke_Stub");
   function ITypeInfo_RemoteGetDocumentation_Proxy(
      This : access ITypeInfo'Class;
      memid : MEMBERID;
      refPtrFlags : DWORD;
      pBstrName : access BSTR;
      pBstrDocString : access BSTR;
      pdwHelpContext : access DWORD;
      pBstrHelpFile : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_RemoteGetDocumentation_Proxy,"ITypeInfo_RemoteGetDocumentation_Proxy");
   procedure ITypeInfo_RemoteGetDocumentation_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_RemoteGetDocumentation_Stub,"ITypeInfo_RemoteGetDocumentation_Stub");
   function ITypeInfo_RemoteGetDllEntry_Proxy(
      This : access ITypeInfo'Class;
      memid : MEMBERID;
      invKind : INVOKEKIND;
      refPtrFlags : DWORD;
      pBstrDllName : access BSTR;
      pBstrName : access BSTR;
      pwOrdinal : access WORD
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_RemoteGetDllEntry_Proxy,"ITypeInfo_RemoteGetDllEntry_Proxy");
   procedure ITypeInfo_RemoteGetDllEntry_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_RemoteGetDllEntry_Stub,"ITypeInfo_RemoteGetDllEntry_Stub");
   function ITypeInfo_LocalAddressOfMember_Proxy(
      This : access ITypeInfo'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_LocalAddressOfMember_Proxy,"ITypeInfo_LocalAddressOfMember_Proxy");
   procedure ITypeInfo_LocalAddressOfMember_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_LocalAddressOfMember_Stub,"ITypeInfo_LocalAddressOfMember_Stub");
   function ITypeInfo_RemoteCreateInstance_Proxy(
      This : access ITypeInfo'Class;
      riid : access constant IID;
      ppvObj : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_RemoteCreateInstance_Proxy,"ITypeInfo_RemoteCreateInstance_Proxy");
   procedure ITypeInfo_RemoteCreateInstance_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_RemoteCreateInstance_Stub,"ITypeInfo_RemoteCreateInstance_Stub");
   function ITypeInfo_RemoteGetContainingTypeLib_Proxy(
      This : access ITypeInfo'Class;
      ppTLib : access ITypeLib_Ptr;
      pIndex : access UINT
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_RemoteGetContainingTypeLib_Proxy,"ITypeInfo_RemoteGetContainingTypeLib_Proxy");
   procedure ITypeInfo_RemoteGetContainingTypeLib_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_RemoteGetContainingTypeLib_Stub,"ITypeInfo_RemoteGetContainingTypeLib_Stub");
   function ITypeInfo_LocalReleaseTypeAttr_Proxy(
      This : access ITypeInfo'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_LocalReleaseTypeAttr_Proxy,"ITypeInfo_LocalReleaseTypeAttr_Proxy");
   procedure ITypeInfo_LocalReleaseTypeAttr_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_LocalReleaseTypeAttr_Stub,"ITypeInfo_LocalReleaseTypeAttr_Stub");
   function ITypeInfo_LocalReleaseFuncDesc_Proxy(
      This : access ITypeInfo'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_LocalReleaseFuncDesc_Proxy,"ITypeInfo_LocalReleaseFuncDesc_Proxy");
   procedure ITypeInfo_LocalReleaseFuncDesc_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_LocalReleaseFuncDesc_Stub,"ITypeInfo_LocalReleaseFuncDesc_Stub");
   function ITypeInfo_LocalReleaseVarDesc_Proxy(
      This : access ITypeInfo'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_LocalReleaseVarDesc_Proxy,"ITypeInfo_LocalReleaseVarDesc_Proxy");
   procedure ITypeInfo_LocalReleaseVarDesc_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo_LocalReleaseVarDesc_Stub,"ITypeInfo_LocalReleaseVarDesc_Stub");
   type LPTYPEINFO2 is access all ITypeInfo2;
   IID_ITypeInfo2 : aliased constant IID;
   pragma import (C,IID_ITypeInfo2,"IID_ITypeInfo2");
   type ITypeInfo2 is limited interface and ITypeInfo;
      function GetTypeKind(
         This : access ITypeInfo2;
         pTypeKind : access TYPEKIND
      ) return HRESULT is abstract;
      function GetTypeFlags(
         This : access ITypeInfo2;
         pTypeFlags : access ULONG
      ) return HRESULT is abstract;
      function GetFuncIndexOfMemId(
         This : access ITypeInfo2;
         memid : MEMBERID;
         invKind : INVOKEKIND;
         pFuncIndex : access UINT
      ) return HRESULT is abstract;
      function GetVarIndexOfMemId(
         This : access ITypeInfo2;
         memid : MEMBERID;
         pVarIndex : access UINT
      ) return HRESULT is abstract;
      function GetCustData(
         This : access ITypeInfo2;
         guid_x : access constant GUID;
         pVarVal : access VARIANT
      ) return HRESULT is abstract;
      function GetFuncCustData(
         This : access ITypeInfo2;
         index : UINT;
         guid_x : access constant GUID;
         pVarVal : access VARIANT
      ) return HRESULT is abstract;
      function GetParamCustData(
         This : access ITypeInfo2;
         indexFunc : UINT;
         indexParam : UINT;
         guid_x : access constant GUID;
         pVarVal : access VARIANT
      ) return HRESULT is abstract;
      function GetVarCustData(
         This : access ITypeInfo2;
         index : UINT;
         guid_x : access constant GUID;
         pVarVal : access VARIANT
      ) return HRESULT is abstract;
      function GetImplTypeCustData(
         This : access ITypeInfo2;
         index : UINT;
         guid_x : access constant GUID;
         pVarVal : access VARIANT
      ) return HRESULT is abstract;
      function GetDocumentation2(
         This : access ITypeInfo2;
         memid : MEMBERID;
         lcid_x : LCID;
         pbstrHelpString : access BSTR;
         pdwHelpStringContext : access DWORD;
         pbstrHelpStringDll : access BSTR
      ) return HRESULT is abstract;
      function GetAllCustData(
         This : access ITypeInfo2;
         pCustData : access CUSTDATA
      ) return HRESULT is abstract;
      function GetAllFuncCustData(
         This : access ITypeInfo2;
         index : UINT;
         pCustData : access CUSTDATA
      ) return HRESULT is abstract;
      function GetAllParamCustData(
         This : access ITypeInfo2;
         indexFunc : UINT;
         indexParam : UINT;
         pCustData : access CUSTDATA
      ) return HRESULT is abstract;
      function GetAllVarCustData(
         This : access ITypeInfo2;
         index : UINT;
         pCustData : access CUSTDATA
      ) return HRESULT is abstract;
      function GetAllImplTypeCustData(
         This : access ITypeInfo2;
         index : UINT;
         pCustData : access CUSTDATA
      ) return HRESULT is abstract;
   type ITypeInfo2_Ptr is access all ITypeInfo2'Class;
   function ITypeInfo2_RemoteGetDocumentation2_Proxy(
      This : access ITypeInfo2'Class;
      memid : MEMBERID;
      lcid_x : LCID;
      refPtrFlags : DWORD;
      pbstrHelpString : access BSTR;
      pdwHelpStringContext : access DWORD;
      pbstrHelpStringDll : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo2_RemoteGetDocumentation2_Proxy,"ITypeInfo2_RemoteGetDocumentation2_Proxy");
   procedure ITypeInfo2_RemoteGetDocumentation2_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeInfo2_RemoteGetDocumentation2_Stub,"ITypeInfo2_RemoteGetDocumentation2_Stub");
   type tagSYSKIND is (
      SYS_WIN16,
      SYS_WIN32,
      SYS_MAC,
      SYS_WIN64
   );
   for tagSYSKIND use (
      SYS_WIN16 => 0,
      SYS_WIN32 => 1,
      SYS_MAC => 2,
      SYS_WIN64 => 3
   );
   for tagSYSKIND'Size use 32;
   subtype SYSKIND is tagSYSKIND;
   type tagLIBFLAGS is (
      LIBFLAG_FRESTRICTED,
      LIBFLAG_FCONTROL,
      LIBFLAG_FHIDDEN,
      LIBFLAG_FHASDISKIMAGE
   );
   for tagLIBFLAGS use (
      LIBFLAG_FRESTRICTED => 1,
      LIBFLAG_FCONTROL => 2,
      LIBFLAG_FHIDDEN => 4,
      LIBFLAG_FHASDISKIMAGE => 8
   );
   for tagLIBFLAGS'Size use 32;
   subtype LIBFLAGS is tagLIBFLAGS;
   type LPTYPELIB is access all ITypeLib;
   type tagTLIBATTR is record
      guid_x : GUID;
      lcid_x : LCID;
      syskind_x : SYSKIND;
      wMajorVerNum : WORD;
      wMinorVerNum : WORD;
      wLibFlags : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTLIBATTR);
   for tagTLIBATTR use record
      guid_x at 0 range 0..127;
      lcid_x at 0 range 128..159;
      syskind_x at 0 range 160..191;
      wMajorVerNum at 0 range 192..207;
      wMinorVerNum at 0 range 208..223;
      wLibFlags at 0 range 224..239;
   end record;
   for tagTLIBATTR'Size use 256;
   for tagTLIBATTR'Alignment use 4;
   subtype TLIBATTR is tagTLIBATTR;
   type LPTLIBATTR is access all tagTLIBATTR;
   IID_ITypeLib : aliased constant IID;
   pragma import (C,IID_ITypeLib,"IID_ITypeLib");
   type TLIBATTR_Ptr is access all TLIBATTR; -- Auto Generated Dependancy
   type ITypeLib is limited interface and IUnknown;
      function GetTypeInfoCount(This : access ITypeLib) return UINT is abstract;
      function GetTypeInfo(
         This : access ITypeLib;
         index : UINT;
         ppTInfo : access ITypeInfo_Ptr
      ) return HRESULT is abstract;
      function GetTypeInfoType(
         This : access ITypeLib;
         index : UINT;
         pTKind : access TYPEKIND
      ) return HRESULT is abstract;
      function GetTypeInfoOfGuid(
         This : access ITypeLib;
         guid_x : access constant GUID;
         ppTinfo : access ITypeInfo_Ptr
      ) return HRESULT is abstract;
      function GetLibAttr(
         This : access ITypeLib;
         ppTLibAttr : access TLIBATTR_Ptr
      ) return HRESULT is abstract;
      function GetTypeComp(
         This : access ITypeLib;
         ppTComp : access ITypeComp_Ptr
      ) return HRESULT is abstract;
      function GetDocumentation(
         This : access ITypeLib;
         index : INT;
         pBstrName : access BSTR;
         pBstrDocString : access BSTR;
         pdwHelpContext : access DWORD;
         pBstrHelpFile : access BSTR
      ) return HRESULT is abstract;
      function IsName(
         This : access ITypeLib;
         szNameBuf : LPOLESTR;
         lHashVal : ULONG;
         pfName : access BOOL
      ) return HRESULT is abstract;
      function FindName(
         This : access ITypeLib;
         szNameBuf : LPOLESTR;
         lHashVal : ULONG;
         ppTInfo : access ITypeInfo_Ptr;
         rgMemId : access MEMBERID;
         pcFound : access USHORT
      ) return HRESULT is abstract;
      procedure ReleaseTLibAttr(
         This : access ITypeLib;
         pTLibAttr : access TLIBATTR
      ) is abstract;
   function ITypeLib_RemoteGetTypeInfoCount_Proxy(
      This : access ITypeLib'Class;
      pcTInfo : access UINT
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_RemoteGetTypeInfoCount_Proxy,"ITypeLib_RemoteGetTypeInfoCount_Proxy");
   procedure ITypeLib_RemoteGetTypeInfoCount_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeLib_RemoteGetTypeInfoCount_Stub,"ITypeLib_RemoteGetTypeInfoCount_Stub");
   function ITypeLib_RemoteGetLibAttr_Proxy(
      This : access ITypeLib'Class;
      ppTLibAttr : access LPTLIBATTR;
      pDummy : access CLEANLOCALSTORAGE
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_RemoteGetLibAttr_Proxy,"ITypeLib_RemoteGetLibAttr_Proxy");
   procedure ITypeLib_RemoteGetLibAttr_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeLib_RemoteGetLibAttr_Stub,"ITypeLib_RemoteGetLibAttr_Stub");
   function ITypeLib_RemoteGetDocumentation_Proxy(
      This : access ITypeLib'Class;
      index : INT;
      refPtrFlags : DWORD;
      pBstrName : access BSTR;
      pBstrDocString : access BSTR;
      pdwHelpContext : access DWORD;
      pBstrHelpFile : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_RemoteGetDocumentation_Proxy,"ITypeLib_RemoteGetDocumentation_Proxy");
   procedure ITypeLib_RemoteGetDocumentation_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeLib_RemoteGetDocumentation_Stub,"ITypeLib_RemoteGetDocumentation_Stub");
   function ITypeLib_RemoteIsName_Proxy(
      This : access ITypeLib'Class;
      szNameBuf : LPOLESTR;
      lHashVal : ULONG;
      pfName : access BOOL;
      pBstrLibName : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_RemoteIsName_Proxy,"ITypeLib_RemoteIsName_Proxy");
   procedure ITypeLib_RemoteIsName_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeLib_RemoteIsName_Stub,"ITypeLib_RemoteIsName_Stub");
   function ITypeLib_RemoteFindName_Proxy(
      This : access ITypeLib'Class;
      szNameBuf : LPOLESTR;
      lHashVal : ULONG;
      ppTInfo : access ITypeInfo_Ptr;
      rgMemId : access MEMBERID;
      pcFound : access USHORT;
      pBstrLibName : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_RemoteFindName_Proxy,"ITypeLib_RemoteFindName_Proxy");
   procedure ITypeLib_RemoteFindName_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeLib_RemoteFindName_Stub,"ITypeLib_RemoteFindName_Stub");
   function ITypeLib_LocalReleaseTLibAttr_Proxy(
      This : access ITypeLib'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_LocalReleaseTLibAttr_Proxy,"ITypeLib_LocalReleaseTLibAttr_Proxy");
   procedure ITypeLib_LocalReleaseTLibAttr_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeLib_LocalReleaseTLibAttr_Stub,"ITypeLib_LocalReleaseTLibAttr_Stub");
   type LPTYPELIB2 is access all ITypeLib2;
   IID_ITypeLib2 : aliased constant IID;
   pragma import (C,IID_ITypeLib2,"IID_ITypeLib2");
   type ITypeLib2 is limited interface and ITypeLib;
      function GetCustData(
         This : access ITypeLib2;
         guid_x : access constant GUID;
         pVarVal : access VARIANT
      ) return HRESULT is abstract;
      function GetLibStatistics(
         This : access ITypeLib2;
         pcUniqueNames : access ULONG;
         pcchUniqueNames : access ULONG
      ) return HRESULT is abstract;
      function GetDocumentation2(
         This : access ITypeLib2;
         index : INT;
         lcid_x : LCID;
         pbstrHelpString : access BSTR;
         pdwHelpStringContext : access DWORD;
         pbstrHelpStringDll : access BSTR
      ) return HRESULT is abstract;
      function GetAllCustData(
         This : access ITypeLib2;
         pCustData : access CUSTDATA
      ) return HRESULT is abstract;
   type ITypeLib2_Ptr is access all ITypeLib2'Class;
   function ITypeLib2_RemoteGetLibStatistics_Proxy(
      This : access ITypeLib2'Class;
      pcUniqueNames : access ULONG;
      pcchUniqueNames : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ITypeLib2_RemoteGetLibStatistics_Proxy,"ITypeLib2_RemoteGetLibStatistics_Proxy");
   procedure ITypeLib2_RemoteGetLibStatistics_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeLib2_RemoteGetLibStatistics_Stub,"ITypeLib2_RemoteGetLibStatistics_Stub");
   function ITypeLib2_RemoteGetDocumentation2_Proxy(
      This : access ITypeLib2'Class;
      index : INT;
      lcid_x : LCID;
      refPtrFlags : DWORD;
      pbstrHelpString : access BSTR;
      pdwHelpStringContext : access DWORD;
      pbstrHelpStringDll : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeLib2_RemoteGetDocumentation2_Proxy,"ITypeLib2_RemoteGetDocumentation2_Proxy");
   procedure ITypeLib2_RemoteGetDocumentation2_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITypeLib2_RemoteGetDocumentation2_Stub,"ITypeLib2_RemoteGetDocumentation2_Stub");
   type LPTYPECHANGEEVENTS is access all ITypeChangeEvents;
   type tagCHANGEKIND is (
      CHANGEKIND_ADDMEMBER,
      CHANGEKIND_DELETEMEMBER,
      CHANGEKIND_SETNAMES,
      CHANGEKIND_SETDOCUMENTATION,
      CHANGEKIND_GENERAL,
      CHANGEKIND_INVALIDATE,
      CHANGEKIND_CHANGEFAILED,
      CHANGEKIND_MAX
   );
   for tagCHANGEKIND use (
      CHANGEKIND_ADDMEMBER => 0,
      CHANGEKIND_DELETEMEMBER => 1,
      CHANGEKIND_SETNAMES => 2,
      CHANGEKIND_SETDOCUMENTATION => 3,
      CHANGEKIND_GENERAL => 4,
      CHANGEKIND_INVALIDATE => 5,
      CHANGEKIND_CHANGEFAILED => 6,
      CHANGEKIND_MAX => 7
   );
   for tagCHANGEKIND'Size use 32;
   subtype CHANGEKIND is tagCHANGEKIND;
   IID_ITypeChangeEvents : aliased constant IID;
   pragma import (C,IID_ITypeChangeEvents,"IID_ITypeChangeEvents");
   type ITypeChangeEvents is limited interface and IUnknown;
      function RequestTypeChange(
         This : access ITypeChangeEvents;
         changeKind_x : CHANGEKIND;
         pTInfoBefore : access ITypeInfo'Class;
         pStrName : LPOLESTR;
         pfCancel : access INT
      ) return HRESULT is abstract;
      function AfterTypeChange(
         This : access ITypeChangeEvents;
         changeKind_x : CHANGEKIND;
         pTInfoAfter : access ITypeInfo'Class;
         pStrName : LPOLESTR
      ) return HRESULT is abstract;
   type ITypeChangeEvents_Ptr is access all ITypeChangeEvents'Class;
   type LPERRORINFO is access all IErrorInfo;
   IID_IErrorInfo : aliased constant IID;
   pragma import (C,IID_IErrorInfo,"IID_IErrorInfo");
   type IErrorInfo is limited interface and IUnknown;
      function GetGUID(
         This : access IErrorInfo;
         pGUID : access GUID
      ) return HRESULT is abstract;
      function GetSource(
         This : access IErrorInfo;
         pBstrSource : access BSTR
      ) return HRESULT is abstract;
      function GetDescription(
         This : access IErrorInfo;
         pBstrDescription : access BSTR
      ) return HRESULT is abstract;
      function GetHelpFile(
         This : access IErrorInfo;
         pBstrHelpFile : access BSTR
      ) return HRESULT is abstract;
      function GetHelpContext(
         This : access IErrorInfo;
         pdwHelpContext : access DWORD
      ) return HRESULT is abstract;
   type IErrorInfo_Ptr is access all IErrorInfo'Class;
   type LPCREATEERRORINFO is access all ICreateErrorInfo;
   IID_ICreateErrorInfo : aliased constant IID;
   pragma import (C,IID_ICreateErrorInfo,"IID_ICreateErrorInfo");
   type ICreateErrorInfo is limited interface and IUnknown;
      function SetGUID(
         This : access ICreateErrorInfo;
         rguid : access constant GUID
      ) return HRESULT is abstract;
      function SetSource(
         This : access ICreateErrorInfo;
         szSource : LPOLESTR
      ) return HRESULT is abstract;
      function SetDescription(
         This : access ICreateErrorInfo;
         szDescription : LPOLESTR
      ) return HRESULT is abstract;
      function SetHelpFile(
         This : access ICreateErrorInfo;
         szHelpFile : LPOLESTR
      ) return HRESULT is abstract;
      function SetHelpContext(
         This : access ICreateErrorInfo;
         dwHelpContext : DWORD
      ) return HRESULT is abstract;
   type ICreateErrorInfo_Ptr is access all ICreateErrorInfo'Class;
   type LPSUPPORTERRORINFO is access all ISupportErrorInfo;
   IID_ISupportErrorInfo : aliased constant IID;
   pragma import (C,IID_ISupportErrorInfo,"IID_ISupportErrorInfo");
   type ISupportErrorInfo is limited interface and IUnknown;
      function InterfaceSupportsErrorInfo(
         This : access ISupportErrorInfo;
         riid : access constant IID
      ) return HRESULT is abstract;
   type ISupportErrorInfo_Ptr is access all ISupportErrorInfo'Class;
   IID_ITypeFactory : aliased constant IID;
   pragma import (C,IID_ITypeFactory,"IID_ITypeFactory");
   type ITypeFactory is limited interface and IUnknown;
      function CreateFromTypeInfo(
         This : access ITypeFactory;
         pTypeInfo : access ITypeInfo'Class;
         riid : access constant IID;
         ppv : access IUnknown_Ptr
      ) return HRESULT is abstract;
   type ITypeFactory_Ptr is access all ITypeFactory'Class;
   IID_ITypeMarshal : aliased constant IID;
   pragma import (C,IID_ITypeMarshal,"IID_ITypeMarshal");
   type ITypeMarshal is limited interface and IUnknown;
      function Size_x(
         This : access ITypeMarshal;
         pvType : PVOID;
         dwDestContext : DWORD;
         pvDestContext : PVOID;
         pSize_x : access ULONG
      ) return HRESULT is abstract;
      function Marshal(
         This : access ITypeMarshal;
         pvType : PVOID;
         dwDestContext : DWORD;
         pvDestContext : PVOID;
         cbBufferLength : ULONG;
         pBuffer : access BYTE;
         pcbWritten : access ULONG
      ) return HRESULT is abstract;
      function Unmarshal(
         This : access ITypeMarshal;
         pvType : PVOID;
         dwFlags : DWORD;
         cbBufferLength : ULONG;
         pBuffer : access BYTE;
         pcbRead : access ULONG
      ) return HRESULT is abstract;
      function Free_x(
         This : access ITypeMarshal;
         pvType : PVOID
      ) return HRESULT is abstract;
   type ITypeMarshal_Ptr is access all ITypeMarshal'Class;
   type LPRECORDINFO is access all IRecordInfo;
   IID_IRecordInfo : aliased constant IID;
   pragma import (C,IID_IRecordInfo,"IID_IRecordInfo");
   type IRecordInfo is limited interface and IUnknown;
      function RecordInit(
         This : access IRecordInfo;
         pvNew : PVOID
      ) return HRESULT is abstract;
      function RecordClear(
         This : access IRecordInfo;
         pvExisting : PVOID
      ) return HRESULT is abstract;
      function RecordCopy(
         This : access IRecordInfo;
         pvExisting : PVOID;
         pvNew : PVOID
      ) return HRESULT is abstract;
      function GetGuid(
         This : access IRecordInfo;
         pguid : access GUID
      ) return HRESULT is abstract;
      function GetName(
         This : access IRecordInfo;
         pbstrName : access BSTR
      ) return HRESULT is abstract;
      function GetSize(
         This : access IRecordInfo;
         pcbSize : access ULONG
      ) return HRESULT is abstract;
      function GetTypeInfo(
         This : access IRecordInfo;
         ppTypeInfo : access ITypeInfo_Ptr
      ) return HRESULT is abstract;
      function GetField(
         This : access IRecordInfo;
         pvData : PVOID;
         szFieldName : LPCOLESTR;
         pvarField : access VARIANT
      ) return HRESULT is abstract;
      function GetFieldNoCopy(
         This : access IRecordInfo;
         pvData : PVOID;
         szFieldName : LPCOLESTR;
         pvarField : access VARIANT;
         ppvDataCArray : access PVOID
      ) return HRESULT is abstract;
      function PutField(
         This : access IRecordInfo;
         wFlags : ULONG;
         pvData : PVOID;
         szFieldName : LPCOLESTR;
         pvarField : access VARIANT
      ) return HRESULT is abstract;
      function PutFieldNoCopy(
         This : access IRecordInfo;
         wFlags : ULONG;
         pvData : PVOID;
         szFieldName : LPCOLESTR;
         pvarField : access VARIANT
      ) return HRESULT is abstract;
      function GetFieldNames(
         This : access IRecordInfo;
         pcNames : access ULONG;
         rgBstrNames : access BSTR
      ) return HRESULT is abstract;
      function IsMatchingType(
         This : access IRecordInfo;
         pRecordInfo : access IRecordInfo'Class
      ) return BOOL is abstract;
      procedure RecordCreate(This : access IRecordInfo) is abstract;
      function RecordCreateCopy(
         This : access IRecordInfo;
         pvSource : PVOID;
         ppvDest : access PVOID
      ) return HRESULT is abstract;
      function RecordDestroy(
         This : access IRecordInfo;
         pvRecord : PVOID
      ) return HRESULT is abstract;
   type IRecordInfo_Ptr is access all IRecordInfo'Class;
   type LPERRORLOG is access all IErrorLog;
   IID_IErrorLog : aliased constant IID;
   pragma import (C,IID_IErrorLog,"IID_IErrorLog");
   type IErrorLog is limited interface and IUnknown;
      function AddError(
         This : access IErrorLog;
         pszPropName : LPCOLESTR;
         pExcepInfo : access EXCEPINFO
      ) return HRESULT is abstract;
   type IErrorLog_Ptr is access all IErrorLog'Class;
   type LPPROPERTYBAG is access all IPropertyBag;
   IID_IPropertyBag : aliased constant IID;
   pragma import (C,IID_IPropertyBag,"IID_IPropertyBag");
   type IPropertyBag is limited interface and IUnknown;
      function Read(
         This : access IPropertyBag;
         pszPropName : LPCOLESTR;
         pVar : access VARIANT;
         pErrorLog : access IErrorLog'Class
      ) return HRESULT is abstract;
      function Write(
         This : access IPropertyBag;
         pszPropName : LPCOLESTR;
         pVar : access VARIANT
      ) return HRESULT is abstract;
   type IPropertyBag_Ptr is access all IPropertyBag'Class;
   function IPropertyBag_RemoteRead_Proxy(
      This : access IPropertyBag'Class;
      pszPropName : LPCOLESTR;
      pVar : access VARIANT;
      pErrorLog : access IErrorLog'Class;
      varType_x : DWORD;
      pUnkObj : access IUnknown'Class
   ) return HRESULT;
   pragma import (Cpp,IPropertyBag_RemoteRead_Proxy,"IPropertyBag_RemoteRead_Proxy");
   procedure IPropertyBag_RemoteRead_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IPropertyBag_RemoteRead_Stub,"IPropertyBag_RemoteRead_Stub");
   IID_ITypeLibRegistrationReader : aliased constant IID;
   pragma import (C,IID_ITypeLibRegistrationReader,"IID_ITypeLibRegistrationReader");
   type ITypeLibRegistrationReader is limited interface and IUnknown;
      function EnumTypeLibRegistrations(
         This : access ITypeLibRegistrationReader;
         ppEnumUnknown : access IEnumUnknown_Ptr
      ) return HRESULT is abstract;
   type ITypeLibRegistrationReader_Ptr is access all ITypeLibRegistrationReader'Class;
   IID_ITypeLibRegistration : aliased constant IID;
   pragma import (C,IID_ITypeLibRegistration,"IID_ITypeLibRegistration");
   type ITypeLibRegistration is limited interface and IUnknown;
      function GetGuid(
         This : access ITypeLibRegistration;
         pGuid : access GUID
      ) return HRESULT is abstract;
      function GetVersion_x(
         This : access ITypeLibRegistration;
         pVersion : access BSTR
      ) return HRESULT is abstract;
      function GetLcid(
         This : access ITypeLibRegistration;
         pLcid_x : access LCID
      ) return HRESULT is abstract;
      function GetWin32Path(
         This : access ITypeLibRegistration;
         pWin32Path : access BSTR
      ) return HRESULT is abstract;
      function GetWin64Path(
         This : access ITypeLibRegistration;
         pWin64Path : access BSTR
      ) return HRESULT is abstract;
      function GetDisplayName(
         This : access ITypeLibRegistration;
         pDisplayName : access BSTR
      ) return HRESULT is abstract;
      function GetFlags(
         This : access ITypeLibRegistration;
         pFlags : access DWORD
      ) return HRESULT is abstract;
      function GetHelpDir(
         This : access ITypeLibRegistration;
         pHelpDir : access BSTR
      ) return HRESULT is abstract;
   type ITypeLibRegistration_Ptr is access all ITypeLibRegistration'Class;
   function BSTR_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access BSTR
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,BSTR_UserSize,"BSTR_UserSize");
   function BSTR_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access BSTR
   ) return access UCHAR;
   pragma import (Cpp,BSTR_UserMarshal,"BSTR_UserMarshal");
   function BSTR_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access BSTR
   ) return access UCHAR;
   pragma import (Cpp,BSTR_UserUnmarshal,"BSTR_UserUnmarshal");
   procedure BSTR_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access BSTR
   );
   pragma import (Cpp,BSTR_UserFree,"BSTR_UserFree");
   function CLEANLOCALSTORAGE_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access CLEANLOCALSTORAGE
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,CLEANLOCALSTORAGE_UserSize,"CLEANLOCALSTORAGE_UserSize");
   function CLEANLOCALSTORAGE_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access CLEANLOCALSTORAGE
   ) return access UCHAR;
   pragma import (Cpp,CLEANLOCALSTORAGE_UserMarshal,"CLEANLOCALSTORAGE_UserMarshal");
   function CLEANLOCALSTORAGE_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access CLEANLOCALSTORAGE
   ) return access UCHAR;
   pragma import (Cpp,CLEANLOCALSTORAGE_UserUnmarshal,"CLEANLOCALSTORAGE_UserUnmarshal");
   procedure CLEANLOCALSTORAGE_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access CLEANLOCALSTORAGE
   );
   pragma import (Cpp,CLEANLOCALSTORAGE_UserFree,"CLEANLOCALSTORAGE_UserFree");
   function VARIANT_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access VARIANT
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,VARIANT_UserSize,"VARIANT_UserSize");
   function VARIANT_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access VARIANT
   ) return access UCHAR;
   pragma import (Cpp,VARIANT_UserMarshal,"VARIANT_UserMarshal");
   function VARIANT_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access VARIANT
   ) return access UCHAR;
   pragma import (Cpp,VARIANT_UserUnmarshal,"VARIANT_UserUnmarshal");
   procedure VARIANT_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access VARIANT
   );
   pragma import (Cpp,VARIANT_UserFree,"VARIANT_UserFree");
   function BSTR_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access BSTR
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,BSTR_UserSize64,"BSTR_UserSize64");
   function BSTR_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access BSTR
   ) return access UCHAR;
   pragma import (Cpp,BSTR_UserMarshal64,"BSTR_UserMarshal64");
   function BSTR_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access BSTR
   ) return access UCHAR;
   pragma import (Cpp,BSTR_UserUnmarshal64,"BSTR_UserUnmarshal64");
   procedure BSTR_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access BSTR
   );
   pragma import (Cpp,BSTR_UserFree64,"BSTR_UserFree64");
   function CLEANLOCALSTORAGE_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access CLEANLOCALSTORAGE
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,CLEANLOCALSTORAGE_UserSize64,"CLEANLOCALSTORAGE_UserSize64");
   function CLEANLOCALSTORAGE_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access CLEANLOCALSTORAGE
   ) return access UCHAR;
   pragma import (Cpp,CLEANLOCALSTORAGE_UserMarshal64,"CLEANLOCALSTORAGE_UserMarshal64");
   function CLEANLOCALSTORAGE_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access CLEANLOCALSTORAGE
   ) return access UCHAR;
   pragma import (Cpp,CLEANLOCALSTORAGE_UserUnmarshal64,"CLEANLOCALSTORAGE_UserUnmarshal64");
   procedure CLEANLOCALSTORAGE_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access CLEANLOCALSTORAGE
   );
   pragma import (Cpp,CLEANLOCALSTORAGE_UserFree64,"CLEANLOCALSTORAGE_UserFree64");
   function VARIANT_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access VARIANT
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,VARIANT_UserSize64,"VARIANT_UserSize64");
   function VARIANT_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access VARIANT
   ) return access UCHAR;
   pragma import (Cpp,VARIANT_UserMarshal64,"VARIANT_UserMarshal64");
   function VARIANT_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access VARIANT
   ) return access UCHAR;
   pragma import (Cpp,VARIANT_UserUnmarshal64,"VARIANT_UserUnmarshal64");
   procedure VARIANT_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access VARIANT
   );
   pragma import (Cpp,VARIANT_UserFree64,"VARIANT_UserFree64");
   function IDispatch_Invoke_Proxy(
      This : access IDispatch'Class;
      dispIdMember : DISPID;
      riid : access constant IID;
      lcid_x : LCID;
      wFlags : WORD;
      pDispParams : access DISPPARAMS;
      pVarResult : access VARIANT;
      pExcepInfo : access EXCEPINFO;
      puArgErr : access UINT
   ) return HRESULT;
   pragma import (Cpp,IDispatch_Invoke_Proxy,"IDispatch_Invoke_Proxy");
   function IDispatch_Invoke_Stub(
      This : access IDispatch'Class;
      dispIdMember : DISPID;
      riid : access constant IID;
      lcid_x : LCID;
      dwFlags : DWORD;
      pDispParams : access DISPPARAMS;
      pVarResult : access VARIANT;
      pExcepInfo : access EXCEPINFO;
      pArgErr : access UINT;
      cVarRef : UINT;
      rgVarRefIdx : access UINT;
      rgVarRef : access VARIANTARG
   ) return HRESULT;
   pragma import (Cpp,IDispatch_Invoke_Stub,"IDispatch_Invoke_Stub");
   function IEnumVARIANT_Next_Proxy(
      This : access IEnumVARIANT'Class;
      celt : ULONG;
      rgVar : access VARIANT;
      pCeltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumVARIANT_Next_Proxy,"IEnumVARIANT_Next_Proxy");
   function IEnumVARIANT_Next_Stub(
      This : access IEnumVARIANT'Class;
      celt : ULONG;
      rgVar : access VARIANT;
      pCeltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumVARIANT_Next_Stub,"IEnumVARIANT_Next_Stub");
   function ITypeComp_Bind_Proxy(
      This : access ITypeComp'Class;
      szName : LPOLESTR;
      lHashVal : ULONG;
      wFlags : WORD;
      ppTInfo : access ITypeInfo_Ptr;
      pDescKind : access DESCKIND;
      pBindPtr : access BINDPTR
   ) return HRESULT;
   pragma import (Cpp,ITypeComp_Bind_Proxy,"ITypeComp_Bind_Proxy");
   function ITypeComp_Bind_Stub(
      This : access ITypeComp'Class;
      szName : LPOLESTR;
      lHashVal : ULONG;
      wFlags : WORD;
      ppTInfo : access ITypeInfo_Ptr;
      pDescKind : access DESCKIND;
      ppFuncDesc : access LPFUNCDESC;
      ppVarDesc : access LPVARDESC;
      ppTypeComp : access ITypeComp_Ptr;
      pDummy : access CLEANLOCALSTORAGE
   ) return HRESULT;
   pragma import (Cpp,ITypeComp_Bind_Stub,"ITypeComp_Bind_Stub");
   function ITypeComp_BindType_Proxy(
      This : access ITypeComp'Class;
      szName : LPOLESTR;
      lHashVal : ULONG;
      ppTInfo : access ITypeInfo_Ptr;
      ppTComp : access ITypeComp_Ptr
   ) return HRESULT;
   pragma import (Cpp,ITypeComp_BindType_Proxy,"ITypeComp_BindType_Proxy");
   function ITypeComp_BindType_Stub(
      This : access ITypeComp'Class;
      szName : LPOLESTR;
      lHashVal : ULONG;
      ppTInfo : access ITypeInfo_Ptr
   ) return HRESULT;
   pragma import (Cpp,ITypeComp_BindType_Stub,"ITypeComp_BindType_Stub");
   function ITypeInfo_GetTypeAttr_Proxy(
      This : access ITypeInfo'Class;
      ppTypeAttr : access TYPEATTR_Ptr
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetTypeAttr_Proxy,"ITypeInfo_GetTypeAttr_Proxy");
   function ITypeInfo_GetTypeAttr_Stub(
      This : access ITypeInfo'Class;
      ppTypeAttr : access LPTYPEATTR;
      pDummy : access CLEANLOCALSTORAGE
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetTypeAttr_Stub,"ITypeInfo_GetTypeAttr_Stub");
   function ITypeInfo_GetFuncDesc_Proxy(
      This : access ITypeInfo'Class;
      index : UINT;
      ppFuncDesc : access FUNCDESC_Ptr
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetFuncDesc_Proxy,"ITypeInfo_GetFuncDesc_Proxy");
   function ITypeInfo_GetFuncDesc_Stub(
      This : access ITypeInfo'Class;
      index : UINT;
      ppFuncDesc : access LPFUNCDESC;
      pDummy : access CLEANLOCALSTORAGE
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetFuncDesc_Stub,"ITypeInfo_GetFuncDesc_Stub");
   function ITypeInfo_GetVarDesc_Proxy(
      This : access ITypeInfo'Class;
      index : UINT;
      ppVarDesc : access VARDESC_Ptr
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetVarDesc_Proxy,"ITypeInfo_GetVarDesc_Proxy");
   function ITypeInfo_GetVarDesc_Stub(
      This : access ITypeInfo'Class;
      index : UINT;
      ppVarDesc : access LPVARDESC;
      pDummy : access CLEANLOCALSTORAGE
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetVarDesc_Stub,"ITypeInfo_GetVarDesc_Stub");
   function ITypeInfo_GetNames_Proxy(
      This : access ITypeInfo'Class;
      memid : MEMBERID;
      rgBstrNames : access BSTR;
      cMaxNames : UINT;
      pcNames : access UINT
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetNames_Proxy,"ITypeInfo_GetNames_Proxy");
   function ITypeInfo_GetNames_Stub(
      This : access ITypeInfo'Class;
      memid : MEMBERID;
      rgBstrNames : access BSTR;
      cMaxNames : UINT;
      pcNames : access UINT
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetNames_Stub,"ITypeInfo_GetNames_Stub");
   function ITypeInfo_GetIDsOfNames_Proxy(
      This : access ITypeInfo'Class;
      rgszNames : access LPOLESTR;
      cNames : UINT;
      pMemId : access MEMBERID
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetIDsOfNames_Proxy,"ITypeInfo_GetIDsOfNames_Proxy");
   function ITypeInfo_GetIDsOfNames_Stub(
      This : access ITypeInfo'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetIDsOfNames_Stub,"ITypeInfo_GetIDsOfNames_Stub");
   function ITypeInfo_Invoke_Proxy(
      This : access ITypeInfo'Class;
      pvInstance : PVOID;
      memid : MEMBERID;
      wFlags : WORD;
      pDispParams : access DISPPARAMS;
      pVarResult : access VARIANT;
      pExcepInfo : access EXCEPINFO;
      puArgErr : access UINT
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_Invoke_Proxy,"ITypeInfo_Invoke_Proxy");
   function ITypeInfo_Invoke_Stub(
      This : access ITypeInfo'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_Invoke_Stub,"ITypeInfo_Invoke_Stub");
   function ITypeInfo_GetDocumentation_Proxy(
      This : access ITypeInfo'Class;
      memid : MEMBERID;
      pBstrName : access BSTR;
      pBstrDocString : access BSTR;
      pdwHelpContext : access DWORD;
      pBstrHelpFile : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetDocumentation_Proxy,"ITypeInfo_GetDocumentation_Proxy");
   function ITypeInfo_GetDocumentation_Stub(
      This : access ITypeInfo'Class;
      memid : MEMBERID;
      refPtrFlags : DWORD;
      pBstrName : access BSTR;
      pBstrDocString : access BSTR;
      pdwHelpContext : access DWORD;
      pBstrHelpFile : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetDocumentation_Stub,"ITypeInfo_GetDocumentation_Stub");
   function ITypeInfo_GetDllEntry_Proxy(
      This : access ITypeInfo'Class;
      memid : MEMBERID;
      invKind : INVOKEKIND;
      pBstrDllName : access BSTR;
      pBstrName : access BSTR;
      pwOrdinal : access WORD
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetDllEntry_Proxy,"ITypeInfo_GetDllEntry_Proxy");
   function ITypeInfo_GetDllEntry_Stub(
      This : access ITypeInfo'Class;
      memid : MEMBERID;
      invKind : INVOKEKIND;
      refPtrFlags : DWORD;
      pBstrDllName : access BSTR;
      pBstrName : access BSTR;
      pwOrdinal : access WORD
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetDllEntry_Stub,"ITypeInfo_GetDllEntry_Stub");
   function ITypeInfo_AddressOfMember_Proxy(
      This : access ITypeInfo'Class;
      memid : MEMBERID;
      invKind : INVOKEKIND;
      ppv : access PVOID
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_AddressOfMember_Proxy,"ITypeInfo_AddressOfMember_Proxy");
   function ITypeInfo_AddressOfMember_Stub(
      This : access ITypeInfo'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_AddressOfMember_Stub,"ITypeInfo_AddressOfMember_Stub");
   function ITypeInfo_CreateInstance_Proxy(
      This : access ITypeInfo'Class;
      pUnkOuter : access IUnknown'Class;
      riid : access constant IID;
      ppvObj : access PVOID
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_CreateInstance_Proxy,"ITypeInfo_CreateInstance_Proxy");
   function ITypeInfo_CreateInstance_Stub(
      This : access ITypeInfo'Class;
      riid : access constant IID;
      ppvObj : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_CreateInstance_Stub,"ITypeInfo_CreateInstance_Stub");
   function ITypeInfo_GetContainingTypeLib_Proxy(
      This : access ITypeInfo'Class;
      ppTLib : access ITypeLib_Ptr;
      pIndex : access UINT
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetContainingTypeLib_Proxy,"ITypeInfo_GetContainingTypeLib_Proxy");
   function ITypeInfo_GetContainingTypeLib_Stub(
      This : access ITypeInfo'Class;
      ppTLib : access ITypeLib_Ptr;
      pIndex : access UINT
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_GetContainingTypeLib_Stub,"ITypeInfo_GetContainingTypeLib_Stub");
   procedure ITypeInfo_ReleaseTypeAttr_Proxy(
      This : access ITypeInfo'Class;
      pTypeAttr : access TYPEATTR
   );
   pragma import (Cpp,ITypeInfo_ReleaseTypeAttr_Proxy,"ITypeInfo_ReleaseTypeAttr_Proxy");
   function ITypeInfo_ReleaseTypeAttr_Stub(
      This : access ITypeInfo'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_ReleaseTypeAttr_Stub,"ITypeInfo_ReleaseTypeAttr_Stub");
   procedure ITypeInfo_ReleaseFuncDesc_Proxy(
      This : access ITypeInfo'Class;
      pFuncDesc : access FUNCDESC
   );
   pragma import (Cpp,ITypeInfo_ReleaseFuncDesc_Proxy,"ITypeInfo_ReleaseFuncDesc_Proxy");
   function ITypeInfo_ReleaseFuncDesc_Stub(
      This : access ITypeInfo'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_ReleaseFuncDesc_Stub,"ITypeInfo_ReleaseFuncDesc_Stub");
   procedure ITypeInfo_ReleaseVarDesc_Proxy(
      This : access ITypeInfo'Class;
      pVarDesc : access VARDESC
   );
   pragma import (Cpp,ITypeInfo_ReleaseVarDesc_Proxy,"ITypeInfo_ReleaseVarDesc_Proxy");
   function ITypeInfo_ReleaseVarDesc_Stub(
      This : access ITypeInfo'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo_ReleaseVarDesc_Stub,"ITypeInfo_ReleaseVarDesc_Stub");
   function ITypeInfo2_GetDocumentation2_Proxy(
      This : access ITypeInfo2'Class;
      memid : MEMBERID;
      lcid_x : LCID;
      pbstrHelpString : access BSTR;
      pdwHelpStringContext : access DWORD;
      pbstrHelpStringDll : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo2_GetDocumentation2_Proxy,"ITypeInfo2_GetDocumentation2_Proxy");
   function ITypeInfo2_GetDocumentation2_Stub(
      This : access ITypeInfo2'Class;
      memid : MEMBERID;
      lcid_x : LCID;
      refPtrFlags : DWORD;
      pbstrHelpString : access BSTR;
      pdwHelpStringContext : access DWORD;
      pbstrHelpStringDll : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeInfo2_GetDocumentation2_Stub,"ITypeInfo2_GetDocumentation2_Stub");
   function ITypeLib_GetTypeInfoCount_Proxy(
      This : access ITypeLib'Class
   ) return UINT;
   pragma import (Cpp,ITypeLib_GetTypeInfoCount_Proxy,"ITypeLib_GetTypeInfoCount_Proxy");
   function ITypeLib_GetTypeInfoCount_Stub(
      This : access ITypeLib'Class;
      pcTInfo : access UINT
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_GetTypeInfoCount_Stub,"ITypeLib_GetTypeInfoCount_Stub");
   function ITypeLib_GetLibAttr_Proxy(
      This : access ITypeLib'Class;
      ppTLibAttr : access TLIBATTR_Ptr
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_GetLibAttr_Proxy,"ITypeLib_GetLibAttr_Proxy");
   function ITypeLib_GetLibAttr_Stub(
      This : access ITypeLib'Class;
      ppTLibAttr : access LPTLIBATTR;
      pDummy : access CLEANLOCALSTORAGE
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_GetLibAttr_Stub,"ITypeLib_GetLibAttr_Stub");
   function ITypeLib_GetDocumentation_Proxy(
      This : access ITypeLib'Class;
      index : INT;
      pBstrName : access BSTR;
      pBstrDocString : access BSTR;
      pdwHelpContext : access DWORD;
      pBstrHelpFile : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_GetDocumentation_Proxy,"ITypeLib_GetDocumentation_Proxy");
   function ITypeLib_GetDocumentation_Stub(
      This : access ITypeLib'Class;
      index : INT;
      refPtrFlags : DWORD;
      pBstrName : access BSTR;
      pBstrDocString : access BSTR;
      pdwHelpContext : access DWORD;
      pBstrHelpFile : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_GetDocumentation_Stub,"ITypeLib_GetDocumentation_Stub");
   function ITypeLib_IsName_Proxy(
      This : access ITypeLib'Class;
      szNameBuf : LPOLESTR;
      lHashVal : ULONG;
      pfName : access BOOL
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_IsName_Proxy,"ITypeLib_IsName_Proxy");
   function ITypeLib_IsName_Stub(
      This : access ITypeLib'Class;
      szNameBuf : LPOLESTR;
      lHashVal : ULONG;
      pfName : access BOOL;
      pBstrLibName : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_IsName_Stub,"ITypeLib_IsName_Stub");
   function ITypeLib_FindName_Proxy(
      This : access ITypeLib'Class;
      szNameBuf : LPOLESTR;
      lHashVal : ULONG;
      ppTInfo : access ITypeInfo_Ptr;
      rgMemId : access MEMBERID;
      pcFound : access USHORT
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_FindName_Proxy,"ITypeLib_FindName_Proxy");
   function ITypeLib_FindName_Stub(
      This : access ITypeLib'Class;
      szNameBuf : LPOLESTR;
      lHashVal : ULONG;
      ppTInfo : access ITypeInfo_Ptr;
      rgMemId : access MEMBERID;
      pcFound : access USHORT;
      pBstrLibName : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_FindName_Stub,"ITypeLib_FindName_Stub");
   procedure ITypeLib_ReleaseTLibAttr_Proxy(
      This : access ITypeLib'Class;
      pTLibAttr : access TLIBATTR
   );
   pragma import (Cpp,ITypeLib_ReleaseTLibAttr_Proxy,"ITypeLib_ReleaseTLibAttr_Proxy");
   function ITypeLib_ReleaseTLibAttr_Stub(
      This : access ITypeLib'Class
   ) return HRESULT;
   pragma import (Cpp,ITypeLib_ReleaseTLibAttr_Stub,"ITypeLib_ReleaseTLibAttr_Stub");
   function ITypeLib2_GetLibStatistics_Proxy(
      This : access ITypeLib2'Class;
      pcUniqueNames : access ULONG;
      pcchUniqueNames : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ITypeLib2_GetLibStatistics_Proxy,"ITypeLib2_GetLibStatistics_Proxy");
   function ITypeLib2_GetLibStatistics_Stub(
      This : access ITypeLib2'Class;
      pcUniqueNames : access ULONG;
      pcchUniqueNames : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ITypeLib2_GetLibStatistics_Stub,"ITypeLib2_GetLibStatistics_Stub");
   function ITypeLib2_GetDocumentation2_Proxy(
      This : access ITypeLib2'Class;
      index : INT;
      lcid_x : LCID;
      pbstrHelpString : access BSTR;
      pdwHelpStringContext : access DWORD;
      pbstrHelpStringDll : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeLib2_GetDocumentation2_Proxy,"ITypeLib2_GetDocumentation2_Proxy");
   function ITypeLib2_GetDocumentation2_Stub(
      This : access ITypeLib2'Class;
      index : INT;
      lcid_x : LCID;
      refPtrFlags : DWORD;
      pbstrHelpString : access BSTR;
      pdwHelpStringContext : access DWORD;
      pbstrHelpStringDll : access BSTR
   ) return HRESULT;
   pragma import (Cpp,ITypeLib2_GetDocumentation2_Stub,"ITypeLib2_GetDocumentation2_Stub");
   function IPropertyBag_Read_Proxy(
      This : access IPropertyBag'Class;
      pszPropName : LPCOLESTR;
      pVar : access VARIANT;
      pErrorLog : access IErrorLog'Class
   ) return HRESULT;
   pragma import (Cpp,IPropertyBag_Read_Proxy,"IPropertyBag_Read_Proxy");
   function IPropertyBag_Read_Stub(
      This : access IPropertyBag'Class;
      pszPropName : LPCOLESTR;
      pVar : access VARIANT;
      pErrorLog : access IErrorLog'Class;
      varType_x : DWORD;
      pUnkObj : access IUnknown'Class
   ) return HRESULT;
   pragma import (Cpp,IPropertyBag_Read_Stub,"IPropertyBag_Read_Stub");
   -- #include <propidlbase.h>
   type tagVersionedStream is record
      guidVersion : GUID;
      pStream : access IStream'Class;
   end record;
   pragma Convention (C_Pass_By_Copy,tagVersionedStream);
   for tagVersionedStream use record
      guidVersion at 0 range 0..127;
      pStream at 0 range 128..191;
   end record;
   for tagVersionedStream'Size use 192;
   for tagVersionedStream'Alignment use 8;
   subtype VERSIONEDSTREAM is tagVersionedStream;
   type LPVERSIONEDSTREAM is access all tagVersionedStream;
   type tagCAC is record
      cElems : ULONG;
      pElems : access CHAR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCAC);
   for tagCAC use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCAC'Size use 128;
   for tagCAC'Alignment use 8;
   subtype CAC is tagCAC;
   type tagCAUB is record
      cElems : ULONG;
      pElems : access UCHAR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCAUB);
   for tagCAUB use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCAUB'Size use 128;
   for tagCAUB'Alignment use 8;
   subtype CAUB is tagCAUB;
   type tagCAI is record
      cElems : ULONG;
      pElems : access SHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCAI);
   for tagCAI use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCAI'Size use 128;
   for tagCAI'Alignment use 8;
   subtype CAI is tagCAI;
   type tagCAUI is record
      cElems : ULONG;
      pElems : access USHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCAUI);
   for tagCAUI use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCAUI'Size use 128;
   for tagCAUI'Alignment use 8;
   subtype CAUI is tagCAUI;
   type tagCAL is record
      cElems : ULONG;
      pElems : access LONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCAL);
   for tagCAL use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCAL'Size use 128;
   for tagCAL'Alignment use 8;
   subtype CAL is tagCAL;
   type tagCAUL is record
      cElems : ULONG;
      pElems : access ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCAUL);
   for tagCAUL use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCAUL'Size use 128;
   for tagCAUL'Alignment use 8;
   subtype CAUL is tagCAUL;
   type tagCAFLT is record
      cElems : ULONG;
      pElems : access FLOAT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCAFLT);
   for tagCAFLT use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCAFLT'Size use 128;
   for tagCAFLT'Alignment use 8;
   subtype CAFLT is tagCAFLT;
   type tagCADBL is record
      cElems : ULONG;
      pElems : access DOUBLE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCADBL);
   for tagCADBL use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCADBL'Size use 128;
   for tagCADBL'Alignment use 8;
   subtype CADBL is tagCADBL;
   type tagCACY is record
      cElems : ULONG;
      pElems : access CY;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCACY);
   for tagCACY use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCACY'Size use 128;
   for tagCACY'Alignment use 8;
   subtype CACY is tagCACY;
   type tagCADATE is record
      cElems : ULONG;
      pElems : access DATE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCADATE);
   for tagCADATE use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCADATE'Size use 128;
   for tagCADATE'Alignment use 8;
   subtype CADATE is tagCADATE;
   type tagCABSTR is record
      cElems : ULONG;
      pElems : access BSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCABSTR);
   for tagCABSTR use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCABSTR'Size use 128;
   for tagCABSTR'Alignment use 8;
   subtype CABSTR is tagCABSTR;
   type tagCABSTRBLOB is record
      cElems : ULONG;
      pElems : access BSTRBLOB;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCABSTRBLOB);
   for tagCABSTRBLOB use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCABSTRBLOB'Size use 128;
   for tagCABSTRBLOB'Alignment use 8;
   subtype CABSTRBLOB is tagCABSTRBLOB;
   type tagCABOOL is record
      cElems : ULONG;
      pElems : access VARIANT_BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCABOOL);
   for tagCABOOL use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCABOOL'Size use 128;
   for tagCABOOL'Alignment use 8;
   subtype CABOOL is tagCABOOL;
   type tagCASCODE is record
      cElems : ULONG;
      pElems : access SCODE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCASCODE);
   for tagCASCODE use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCASCODE'Size use 128;
   for tagCASCODE'Alignment use 8;
   subtype CASCODE is tagCASCODE;
   type tagCAPROPVARIANT is record
      cElems : ULONG;
      pElems : access PROPVARIANT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCAPROPVARIANT);
   for tagCAPROPVARIANT use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCAPROPVARIANT'Size use 128;
   for tagCAPROPVARIANT'Alignment use 8;
   subtype CAPROPVARIANT is tagCAPROPVARIANT;
   type tagCAH is record
      cElems : ULONG;
      pElems : access LARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCAH);
   for tagCAH use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCAH'Size use 128;
   for tagCAH'Alignment use 8;
   subtype CAH is tagCAH;
   type tagCAUH is record
      cElems : ULONG;
      pElems : access ULARGE_INTEGER;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCAUH);
   for tagCAUH use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCAUH'Size use 128;
   for tagCAUH'Alignment use 8;
   subtype CAUH is tagCAUH;
   type tagCALPSTR is record
      cElems : ULONG;
      pElems : access LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCALPSTR);
   for tagCALPSTR use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCALPSTR'Size use 128;
   for tagCALPSTR'Alignment use 8;
   subtype CALPSTR is tagCALPSTR;
   type tagCALPWSTR is record
      cElems : ULONG;
      pElems : access LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCALPWSTR);
   for tagCALPWSTR use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCALPWSTR'Size use 128;
   for tagCALPWSTR'Alignment use 8;
   subtype CALPWSTR is tagCALPWSTR;
   type tagCAFILETIME is record
      cElems : ULONG;
      pElems : access FILETIME;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCAFILETIME);
   for tagCAFILETIME use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCAFILETIME'Size use 128;
   for tagCAFILETIME'Alignment use 8;
   subtype CAFILETIME is tagCAFILETIME;
   type tagCACLIPDATA is record
      cElems : ULONG;
      pElems : access CLIPDATA;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCACLIPDATA);
   for tagCACLIPDATA use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCACLIPDATA'Size use 128;
   for tagCACLIPDATA'Alignment use 8;
   subtype CACLIPDATA is tagCACLIPDATA;
   type tagCACLSID is record
      cElems : ULONG;
      pElems : access CLSID;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCACLSID);
   for tagCACLSID use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCACLSID'Size use 128;
   for tagCACLSID'Alignment use 8;
   subtype CACLSID is tagCACLSID;
   subtype PROPVAR_PAD1 is WORD;
   subtype PROPVAR_PAD2 is WORD;
   subtype PROPVAR_PAD3 is WORD;
   type Anonymous_Record_290 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            cVal : CHAR;
         when 1 =>
            bVal : UCHAR;
         when 2 =>
            iVal : SHORT;
         when 3 =>
            uiVal : USHORT;
         when 4 =>
            lVal : LONG;
         when 5 =>
            ulVal : ULONG;
         when 6 =>
            intVal : INT;
         when 7 =>
            uintVal : UINT;
         when 8 =>
            hVal : LARGE_INTEGER;
         when 9 =>
            uhVal : ULARGE_INTEGER;
         when 10 =>
            fltVal : FLOAT;
         when 11 =>
            dblVal : DOUBLE;
         when 12 =>
            boolVal : VARIANT_BOOL;
         when 13 =>
            OBSOLETE_VARIANT_BOOL : VARIANT_BOOL;
         when 14 =>
            scode_x : SCODE;
         when 15 =>
            cyVal : CY;
         when 16 =>
            date_x : DATE;
         when 17 =>
            filetime_x : FILETIME;
         when 18 =>
            puuid : access CLSID;
         when 19 =>
            pclipdata : access CLIPDATA;
         when 20 =>
            bstrVal : BSTR;
         when 21 =>
            bstrblobVal : BSTRBLOB;
         when 22 =>
            blob_x : BLOB;
         when 23 =>
            pszVal : LPSTR;
         when 24 =>
            pwszVal : LPWSTR;
         when 25 =>
            punkVal : access IUnknown'Class;
         when 26 =>
            pdispVal : access IDispatch'Class;
         when 27 =>
            pStream : access IStream'Class;
         when 28 =>
            pStorage : access IStorage'Class;
         when 29 =>
            pVersionedStream : LPVERSIONEDSTREAM;
         when 30 =>
            parray : LPSAFEARRAY;
         when 31 =>
            cac_x : CAC;
         when 32 =>
            caub_x : CAUB;
         when 33 =>
            cai_x : CAI;
         when 34 =>
            caui_x : CAUI;
         when 35 =>
            cal_x : CAL;
         when 36 =>
            caul_x : CAUL;
         when 37 =>
            cah_x : CAH;
         when 38 =>
            cauh_x : CAUH;
         when 39 =>
            caflt_x : CAFLT;
         when 40 =>
            cadbl_x : CADBL;
         when 41 =>
            cabool_x : CABOOL;
         when 42 =>
            cascode_x : CASCODE;
         when 43 =>
            cacy_x : CACY;
         when 44 =>
            cadate_x : CADATE;
         when 45 =>
            cafiletime_x : CAFILETIME;
         when 46 =>
            cauuid : CACLSID;
         when 47 =>
            caclipdata_x : CACLIPDATA;
         when 48 =>
            cabstr_x : CABSTR;
         when 49 =>
            cabstrblob_x : CABSTRBLOB;
         when 50 =>
            calpstr_x : CALPSTR;
         when 51 =>
            calpwstr_x : CALPWSTR;
         when 52 =>
            capropvar : CAPROPVARIANT;
         when 53 =>
            pcVal : access CHAR;
         when 54 =>
            pbVal : access UCHAR;
         when 55 =>
            piVal : access SHORT;
         when 56 =>
            puiVal : access USHORT;
         when 57 =>
            plVal : access LONG;
         when 58 =>
            pulVal : access ULONG;
         when 59 =>
            pintVal : access INT;
         when 60 =>
            puintVal : access UINT;
         when 61 =>
            pfltVal : access FLOAT;
         when 62 =>
            pdblVal : access DOUBLE;
         when 63 =>
            pboolVal : access VARIANT_BOOL;
         when 64 =>
            pdecVal : access DECIMAL;
         when 65 =>
            pscode_x : access SCODE;
         when 66 =>
            pcyVal : access CY;
         when 67 =>
            pdate : access DATE;
         when 68 =>
            pbstrVal : access BSTR;
         when 69 =>
            ppunkVal : access LPUNKNOWN;
         when 70 =>
            ppdispVal : access LPDISPATCH;
         when 71 =>
            pparray : access LPSAFEARRAY;
         when others => 
            pvarVal : access PROPVARIANT;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_290);
   pragma Unchecked_Union (Anonymous_Record_290);
   for Anonymous_Record_290'Size use 128;
   for Anonymous_Record_290'Alignment use 8;
   type Anonymous_Record_289 is record
      vt : VARTYPE;
      wReserved1 : PROPVAR_PAD1;
      wReserved2 : PROPVAR_PAD2;
      wReserved3 : PROPVAR_PAD3;
      field_1 : Anonymous_Record_290;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_289);
   for Anonymous_Record_289 use record
      vt at 0 range 0..15;
      wReserved1 at 0 range 16..31;
      wReserved2 at 0 range 32..47;
      wReserved3 at 0 range 48..63;
      field_1 at 0 range 64..191;
   end record;
   for Anonymous_Record_289'Size use 192;
   for Anonymous_Record_289'Alignment use 8;
   type Anonymous_Record_288 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            field_1 : Anonymous_Record_289;
         when others => 
            decVal : DECIMAL;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_288);
   pragma Unchecked_Union (Anonymous_Record_288);
   for Anonymous_Record_288'Size use 192;
   for Anonymous_Record_288'Alignment use 8;
   type tagPROPVARIANT is record
      field_1 : Anonymous_Record_288;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPROPVARIANT);
   for tagPROPVARIANT use record
      field_1 at 0 range 0..191;
   end record;
   for tagPROPVARIANT'Size use 192;
   for tagPROPVARIANT'Alignment use 8;
   type LPPROPVARIANT is access all tagPROPVARIANT;
   type Anonymous_Record_291 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            propid_x : PROPID;
         when others => 
            lpwstr_x : LPOLESTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_291);
   pragma Unchecked_Union (Anonymous_Record_291);
   for Anonymous_Record_291'Size use 64;
   for Anonymous_Record_291'Alignment use 8;
   type tagPROPSPEC is record
      ulKind : ULONG;
      field_1 : Anonymous_Record_291;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPROPSPEC);
   for tagPROPSPEC use record
      ulKind at 0 range 0..31;
      field_1 at 0 range 32..95;
   end record;
   for tagPROPSPEC'Size use 128;
   for tagPROPSPEC'Alignment use 8;
   subtype PROPSPEC is tagPROPSPEC;
   type tagSTATPROPSTG is record
      lpwstrName : LPOLESTR;
      propid_x : PROPID;
      vt : VARTYPE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSTATPROPSTG);
   for tagSTATPROPSTG use record
      lpwstrName at 0 range 0..63;
      propid_x at 0 range 64..95;
      vt at 0 range 96..111;
   end record;
   for tagSTATPROPSTG'Size use 128;
   for tagSTATPROPSTG'Alignment use 8;
   subtype STATPROPSTG is tagSTATPROPSTG;
   type tagSTATPROPSETSTG is record
      fmtid_x : FMTID;
      clsid_x : CLSID;
      grfFlags : DWORD;
      mtime : FILETIME;
      ctime : FILETIME;
      atime : FILETIME;
      dwOSVersion : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSTATPROPSETSTG);
   for tagSTATPROPSETSTG use record
      fmtid_x at 0 range 0..127;
      clsid_x at 0 range 128..255;
      grfFlags at 0 range 256..287;
      mtime at 0 range 288..351;
      ctime at 0 range 352..415;
      atime at 0 range 416..479;
      dwOSVersion at 0 range 480..511;
   end record;
   for tagSTATPROPSETSTG'Size use 512;
   for tagSTATPROPSETSTG'Alignment use 4;
   subtype STATPROPSETSTG is tagSTATPROPSETSTG;
   IID_IPropertyStorage : aliased constant IID;
   pragma import (C,IID_IPropertyStorage,"IID_IPropertyStorage");
   type IEnumSTATPROPSTG_Ptr is access all IEnumSTATPROPSTG; -- Auto Generated Dependancy
   type IPropertyStorage is limited interface and IUnknown;
      function ReadMultiple(
         This : access IPropertyStorage;
         cpspec : ULONG;
         rgpspec : PROPSPEC;
         rgpropvar : PROPVARIANT
      ) return HRESULT is abstract;
      function WriteMultiple(
         This : access IPropertyStorage;
         cpspec : ULONG;
         rgpspec : PROPSPEC;
         rgpropvar : PROPVARIANT;
         propidNameFirst : PROPID
      ) return HRESULT is abstract;
      function DeleteMultiple(
         This : access IPropertyStorage;
         cpspec : ULONG;
         rgpspec : PROPSPEC
      ) return HRESULT is abstract;
      function ReadPropertyNames(
         This : access IPropertyStorage;
         cpropid : ULONG;
         rgpropid : PROPID;
         rglpwstrName : LPOLESTR
      ) return HRESULT is abstract;
      function WritePropertyNames(
         This : access IPropertyStorage;
         cpropid : ULONG;
         rgpropid : PROPID;
         rglpwstrName : LPOLESTR
      ) return HRESULT is abstract;
      function DeletePropertyNames(
         This : access IPropertyStorage;
         cpropid : ULONG;
         rgpropid : PROPID
      ) return HRESULT is abstract;
      function Commit(
         This : access IPropertyStorage;
         grfCommitFlags : DWORD
      ) return HRESULT is abstract;
      function Revert(This : access IPropertyStorage) return HRESULT is abstract;
      function Enum(
         This : access IPropertyStorage;
         ppenum : access IEnumSTATPROPSTG_Ptr
      ) return HRESULT is abstract;
      function SetTimes(
         This : access IPropertyStorage;
         pctime : access constant FILETIME;
         patime : access constant FILETIME;
         pmtime : access constant FILETIME
      ) return HRESULT is abstract;
      function SetClass(
         This : access IPropertyStorage;
         clsid_x : access constant IID
      ) return HRESULT is abstract;
      function Stat(
         This : access IPropertyStorage;
         pstatpsstg : access STATPROPSETSTG
      ) return HRESULT is abstract;
   type IPropertyStorage_Ptr is access all IPropertyStorage'Class;
   type LPPROPERTYSETSTORAGE is access all IPropertySetStorage;
   IID_IPropertySetStorage : aliased constant IID;
   pragma import (C,IID_IPropertySetStorage,"IID_IPropertySetStorage");
   type IEnumSTATPROPSETSTG_Ptr is access all IEnumSTATPROPSETSTG; -- Auto Generated Dependancy
   type IPropertySetStorage is limited interface and IUnknown;
      function Create(
         This : access IPropertySetStorage;
         rfmtid : access constant IID;
         pclsid : access constant CLSID;
         grfFlags : DWORD;
         grfMode : DWORD;
         ppprstg : access IPropertyStorage_Ptr
      ) return HRESULT is abstract;
      function Open(
         This : access IPropertySetStorage;
         rfmtid : access constant IID;
         grfMode : DWORD;
         ppprstg : access IPropertyStorage_Ptr
      ) return HRESULT is abstract;
      function Delete_x(
         This : access IPropertySetStorage;
         rfmtid : access constant IID
      ) return HRESULT is abstract;
      function Enum(
         This : access IPropertySetStorage;
         ppenum : access IEnumSTATPROPSETSTG_Ptr
      ) return HRESULT is abstract;
   type IPropertySetStorage_Ptr is access all IPropertySetStorage'Class;
   type LPENUMSTATPROPSTG is access all IEnumSTATPROPSTG;
   IID_IEnumSTATPROPSTG : aliased constant IID;
   pragma import (C,IID_IEnumSTATPROPSTG,"IID_IEnumSTATPROPSTG");
   type IEnumSTATPROPSTG is limited interface and IUnknown;
      function Next(
         This : access IEnumSTATPROPSTG;
         celt : ULONG;
         rgelt : access STATPROPSTG;
         pceltFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumSTATPROPSTG;
         celt : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumSTATPROPSTG) return HRESULT is abstract;
      function Clone(
         This : access IEnumSTATPROPSTG;
         ppenum : access IEnumSTATPROPSTG_Ptr
      ) return HRESULT is abstract;
   function IEnumSTATPROPSTG_RemoteNext_Proxy(
      This : access IEnumSTATPROPSTG'Class;
      celt : ULONG;
      rgelt : access STATPROPSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATPROPSTG_RemoteNext_Proxy,"IEnumSTATPROPSTG_RemoteNext_Proxy");
   procedure IEnumSTATPROPSTG_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumSTATPROPSTG_RemoteNext_Stub,"IEnumSTATPROPSTG_RemoteNext_Stub");
   type LPENUMSTATPROPSETSTG is access all IEnumSTATPROPSETSTG;
   IID_IEnumSTATPROPSETSTG : aliased constant IID;
   pragma import (C,IID_IEnumSTATPROPSETSTG,"IID_IEnumSTATPROPSETSTG");
   type IEnumSTATPROPSETSTG is limited interface and IUnknown;
      function Next(
         This : access IEnumSTATPROPSETSTG;
         celt : ULONG;
         rgelt : access STATPROPSETSTG;
         pceltFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumSTATPROPSETSTG;
         celt : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumSTATPROPSETSTG) return HRESULT is abstract;
      function Clone(
         This : access IEnumSTATPROPSETSTG;
         ppenum : access IEnumSTATPROPSETSTG_Ptr
      ) return HRESULT is abstract;
   function IEnumSTATPROPSETSTG_RemoteNext_Proxy(
      This : access IEnumSTATPROPSETSTG'Class;
      celt : ULONG;
      rgelt : access STATPROPSETSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATPROPSETSTG_RemoteNext_Proxy,"IEnumSTATPROPSETSTG_RemoteNext_Proxy");
   procedure IEnumSTATPROPSETSTG_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumSTATPROPSETSTG_RemoteNext_Stub,"IEnumSTATPROPSETSTG_RemoteNext_Stub");
   type LPPROPERTYSTORAGE is access all IPropertyStorage;
   function LPSAFEARRAY_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access LPSAFEARRAY
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,LPSAFEARRAY_UserSize,"LPSAFEARRAY_UserSize");
   function LPSAFEARRAY_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access LPSAFEARRAY
   ) return access UCHAR;
   pragma import (Cpp,LPSAFEARRAY_UserMarshal,"LPSAFEARRAY_UserMarshal");
   function LPSAFEARRAY_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access LPSAFEARRAY
   ) return access UCHAR;
   pragma import (Cpp,LPSAFEARRAY_UserUnmarshal,"LPSAFEARRAY_UserUnmarshal");
   procedure LPSAFEARRAY_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access LPSAFEARRAY
   );
   pragma import (Cpp,LPSAFEARRAY_UserFree,"LPSAFEARRAY_UserFree");
   function LPSAFEARRAY_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access LPSAFEARRAY
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,LPSAFEARRAY_UserSize64,"LPSAFEARRAY_UserSize64");
   function LPSAFEARRAY_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access LPSAFEARRAY
   ) return access UCHAR;
   pragma import (Cpp,LPSAFEARRAY_UserMarshal64,"LPSAFEARRAY_UserMarshal64");
   function LPSAFEARRAY_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access LPSAFEARRAY
   ) return access UCHAR;
   pragma import (Cpp,LPSAFEARRAY_UserUnmarshal64,"LPSAFEARRAY_UserUnmarshal64");
   procedure LPSAFEARRAY_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access LPSAFEARRAY
   );
   pragma import (Cpp,LPSAFEARRAY_UserFree64,"LPSAFEARRAY_UserFree64");
   function IEnumSTATPROPSTG_Next_Proxy(
      This : access IEnumSTATPROPSTG'Class;
      celt : ULONG;
      rgelt : access STATPROPSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATPROPSTG_Next_Proxy,"IEnumSTATPROPSTG_Next_Proxy");
   function IEnumSTATPROPSTG_Next_Stub(
      This : access IEnumSTATPROPSTG'Class;
      celt : ULONG;
      rgelt : access STATPROPSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATPROPSTG_Next_Stub,"IEnumSTATPROPSTG_Next_Stub");
   function IEnumSTATPROPSETSTG_Next_Proxy(
      This : access IEnumSTATPROPSETSTG'Class;
      celt : ULONG;
      rgelt : access STATPROPSETSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATPROPSETSTG_Next_Proxy,"IEnumSTATPROPSETSTG_Next_Proxy");
   function IEnumSTATPROPSETSTG_Next_Stub(
      This : access IEnumSTATPROPSETSTG'Class;
      celt : ULONG;
      rgelt : access STATPROPSETSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATPROPSETSTG_Next_Stub,"IEnumSTATPROPSETSTG_Next_Stub");
   -- #include <coml2api.h>
   subtype STGFMT is DWORD;
   function StgCreateDocfile(
      pwcsName : access constant WCHAR;
      grfMode : DWORD;
      reserved : DWORD;
      ppstgOpen : access IStorage_Ptr
   ) return HRESULT;
   pragma import (Cpp,StgCreateDocfile,"StgCreateDocfile");
   function StgCreateDocfileOnILockBytes(
      plkbyt : access ILockBytes'Class;
      grfMode : DWORD;
      reserved : DWORD;
      ppstgOpen : access IStorage_Ptr
   ) return HRESULT;
   pragma import (Cpp,StgCreateDocfileOnILockBytes,"StgCreateDocfileOnILockBytes");
   function StgOpenStorage(
      pwcsName : access constant WCHAR;
      pstgPriority : access IStorage'Class;
      grfMode : DWORD;
      snbExclude : SNB;
      reserved : DWORD;
      ppstgOpen : access IStorage_Ptr
   ) return HRESULT;
   pragma import (Cpp,StgOpenStorage,"StgOpenStorage");
   function StgOpenStorageOnILockBytes(
      plkbyt : access ILockBytes'Class;
      pstgPriority : access IStorage'Class;
      grfMode : DWORD;
      snbExclude : SNB;
      reserved : DWORD;
      ppstgOpen : access IStorage_Ptr
   ) return HRESULT;
   pragma import (Cpp,StgOpenStorageOnILockBytes,"StgOpenStorageOnILockBytes");
   function StgIsStorageFile(
      pwcsName : access constant WCHAR
   ) return HRESULT;
   pragma import (Cpp,StgIsStorageFile,"StgIsStorageFile");
   function StgIsStorageILockBytes(
      plkbyt : access ILockBytes'Class
   ) return HRESULT;
   pragma import (Cpp,StgIsStorageILockBytes,"StgIsStorageILockBytes");
   function StgSetTimes(
      lpszName : access constant WCHAR;
      pctime : access constant FILETIME;
      patime : access constant FILETIME;
      pmtime : access constant FILETIME
   ) return HRESULT;
   pragma import (Cpp,StgSetTimes,"StgSetTimes");
   type tagSTGOPTIONS is record
      usVersion : USHORT;
      reserved : USHORT;
      ulSectorSize : ULONG;
      pwcsTemplateFile : access constant WCHAR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSTGOPTIONS);
   for tagSTGOPTIONS use record
      usVersion at 0 range 0..15;
      reserved at 0 range 16..31;
      ulSectorSize at 0 range 32..63;
      pwcsTemplateFile at 0 range 64..127;
   end record;
   for tagSTGOPTIONS'Size use 128;
   for tagSTGOPTIONS'Alignment use 8;
   subtype STGOPTIONS is tagSTGOPTIONS;
   function StgCreateStorageEx(
      pwcsName : access constant WCHAR;
      grfMode : DWORD;
      stgfmt_x : DWORD;
      grfAttrs : DWORD;
      pStgOptions : access STGOPTIONS;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      riid : access constant IID;
      ppObjectOpen : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,StgCreateStorageEx,"StgCreateStorageEx");
   function StgOpenStorageEx(
      pwcsName : access constant WCHAR;
      grfMode : DWORD;
      stgfmt_x : DWORD;
      grfAttrs : DWORD;
      pStgOptions : access STGOPTIONS;
      pSecurityDescriptor : PSECURITY_DESCRIPTOR;
      riid : access constant IID;
      ppObjectOpen : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,StgOpenStorageEx,"StgOpenStorageEx");
   function StgCreatePropStg(
      pUnk : access IUnknown'Class;
      fmtid_x : access constant IID;
      pclsid : access constant CLSID;
      grfFlags : DWORD;
      dwReserved : DWORD;
      ppPropStg : access IPropertyStorage_Ptr
   ) return HRESULT;
   pragma import (Cpp,StgCreatePropStg,"StgCreatePropStg");
   function StgOpenPropStg(
      pUnk : access IUnknown'Class;
      fmtid_x : access constant IID;
      grfFlags : DWORD;
      dwReserved : DWORD;
      ppPropStg : access IPropertyStorage_Ptr
   ) return HRESULT;
   pragma import (Cpp,StgOpenPropStg,"StgOpenPropStg");
   function StgCreatePropSetStg(
      pStorage : access IStorage'Class;
      dwReserved : DWORD;
      ppPropSetStg : access IPropertySetStorage_Ptr
   ) return HRESULT;
   pragma import (Cpp,StgCreatePropSetStg,"StgCreatePropSetStg");
   function FmtIdToPropStgName(
      pfmtid : access constant FMTID;
      oszName : LPOLESTR
   ) return HRESULT;
   pragma import (Cpp,FmtIdToPropStgName,"FmtIdToPropStgName");
   function PropStgNameToFmtId(
      oszName : LPOLESTR;
      pfmtid : access FMTID
   ) return HRESULT;
   pragma import (Cpp,PropStgNameToFmtId,"PropStgNameToFmtId");
   function ReadClassStg(
      pStg : LPSTORAGE;
      pclsid : access CLSID
   ) return HRESULT;
   pragma import (Cpp,ReadClassStg,"ReadClassStg");
   function WriteClassStg(
      pStg : LPSTORAGE;
      rclsid : access constant IID
   ) return HRESULT;
   pragma import (Cpp,WriteClassStg,"WriteClassStg");
   function ReadClassStm(
      pStm : LPSTREAM;
      pclsid : access CLSID
   ) return HRESULT;
   pragma import (Cpp,ReadClassStm,"ReadClassStm");
   function WriteClassStm(
      pStm : LPSTREAM;
      rclsid : access constant IID
   ) return HRESULT;
   pragma import (Cpp,WriteClassStm,"WriteClassStm");
   function GetHGlobalFromILockBytes(
      plkbyt : LPLOCKBYTES;
      phglobal : access HGLOBAL
   ) return HRESULT;
   pragma import (Cpp,GetHGlobalFromILockBytes,"GetHGlobalFromILockBytes");
   function CreateILockBytesOnHGlobal(
      hGlobal_x : HGLOBAL;
      fDeleteOnRelease : BOOL;
      pplkbyt : access LPLOCKBYTES
   ) return HRESULT;
   pragma import (Cpp,CreateILockBytesOnHGlobal,"CreateILockBytesOnHGlobal");
   function GetConvertStg(
      pStg : LPSTORAGE
   ) return HRESULT;
   pragma import (Cpp,GetConvertStg,"GetConvertStg");
   -- #include <objbase.h>
   type tagCOINIT is (
      COINIT_MULTITHREADED,
      COINIT_APARTMENTTHREADED,
      COINIT_DISABLE_OLE1DDE,
      COINIT_SPEED_OVER_MEMORY
   );
   for tagCOINIT use (
      COINIT_MULTITHREADED => 0,
      COINIT_APARTMENTTHREADED => 2,
      COINIT_DISABLE_OLE1DDE => 4,
      COINIT_SPEED_OVER_MEMORY => 8
   );
   for tagCOINIT'Size use 32;
   subtype COINIT is tagCOINIT;
   function CoBuildVersion return DWORD;
   pragma import (Cpp,CoBuildVersion,"CoBuildVersion");
   function CoInitialize(
      pvReserved : LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoInitialize,"CoInitialize");
   function CoRegisterMallocSpy(
      pMallocSpy : LPMALLOCSPY
   ) return HRESULT;
   pragma import (Cpp,CoRegisterMallocSpy,"CoRegisterMallocSpy");
   function CoRevokeMallocSpy return HRESULT;
   pragma import (Cpp,CoRevokeMallocSpy,"CoRevokeMallocSpy");
   function CoCreateStandardMalloc(
      memctx_x : DWORD;
      ppMalloc : access IMalloc_Ptr
   ) return HRESULT;
   pragma import (Cpp,CoCreateStandardMalloc,"CoCreateStandardMalloc");
   function CoRegisterInitializeSpy(
      pSpy : access IInitializeSpy'Class;
      puliCookie : access ULARGE_INTEGER
   ) return HRESULT;
   pragma import (Cpp,CoRegisterInitializeSpy,"CoRegisterInitializeSpy");
   function CoRevokeInitializeSpy(
      uliCookie : ULARGE_INTEGER
   ) return HRESULT;
   pragma import (Cpp,CoRevokeInitializeSpy,"CoRevokeInitializeSpy");
   type tagCOMSD is (
      SD_LAUNCHPERMISSIONS,
      SD_ACCESSPERMISSIONS,
      SD_LAUNCHRESTRICTIONS,
      SD_ACCESSRESTRICTIONS
   );
   for tagCOMSD use (
      SD_LAUNCHPERMISSIONS => 0,
      SD_ACCESSPERMISSIONS => 1,
      SD_LAUNCHRESTRICTIONS => 2,
      SD_ACCESSRESTRICTIONS => 3
   );
   for tagCOMSD'Size use 32;
   subtype COMSD is tagCOMSD;
   function CoGetSystemSecurityPermissions(
      comSDType : COMSD;
      ppSD : access PSECURITY_DESCRIPTOR
   ) return HRESULT;
   pragma import (Cpp,CoGetSystemSecurityPermissions,"CoGetSystemSecurityPermissions");
   function CoLoadLibrary(
      lpszLibName : LPOLESTR;
      bAutoFree : BOOL
   ) return HINSTANCE;
   pragma import (Cpp,CoLoadLibrary,"CoLoadLibrary");
   procedure CoFreeLibrary(
      hInst : HINSTANCE
   );
   pragma import (Cpp,CoFreeLibrary,"CoFreeLibrary");
   procedure CoFreeAllLibraries;
   pragma import (Cpp,CoFreeAllLibraries,"CoFreeAllLibraries");
   function CoGetInstanceFromFile(
      pServerInfo : access COSERVERINFO;
      pClsid : access CLSID;
      punkOuter : access IUnknown'Class;
      dwClsCtx : DWORD;
      grfMode : DWORD;
      pwszName : access OLECHAR;
      dwCount : DWORD;
      pResults : access MULTI_QI
   ) return HRESULT;
   pragma import (Cpp,CoGetInstanceFromFile,"CoGetInstanceFromFile");
   function CoGetInstanceFromIStorage(
      pServerInfo : access COSERVERINFO;
      pClsid : access CLSID;
      punkOuter : access IUnknown'Class;
      dwClsCtx : DWORD;
      pstg : access IStorage'Class;
      dwCount : DWORD;
      pResults : access MULTI_QI
   ) return HRESULT;
   pragma import (Cpp,CoGetInstanceFromIStorage,"CoGetInstanceFromIStorage");
   function CoAllowSetForegroundWindow(
      pUnk : access IUnknown'Class;
      lpvReserved : LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoAllowSetForegroundWindow,"CoAllowSetForegroundWindow");
   function DcomChannelSetHResult(
      pvReserved : LPVOID;
      pulReserved : access ULONG;
      appsHR : HRESULT
   ) return HRESULT;
   pragma import (Cpp,DcomChannelSetHResult,"DcomChannelSetHResult");
   function CoIsOle1Class(
      rclsid : access constant IID
   ) return BOOL;
   pragma import (Cpp,CoIsOle1Class,"CoIsOle1Class");
   function CLSIDFromProgIDEx_x(
      lpszProgID : LPCOLESTR;
      lpclsid_x : LPCLSID
   ) return HRESULT;
   pragma import (Cpp,CLSIDFromProgIDEx_x,"CLSIDFromProgIDEx");
   function CoFileTimeToDosDateTime(
      lpFileTime_x : access FILETIME;
      lpDosDate : LPWORD;
      lpDosTime : LPWORD
   ) return BOOL;
   pragma import (Cpp,CoFileTimeToDosDateTime,"CoFileTimeToDosDateTime");
   function CoDosDateTimeToFileTime(
      nDosDate : WORD;
      nDosTime : WORD;
      lpFileTime_x : access FILETIME
   ) return BOOL;
   pragma import (Cpp,CoDosDateTimeToFileTime,"CoDosDateTimeToFileTime");
   function CoFileTimeNow_x(
      lpFileTime_x : access FILETIME
   ) return HRESULT;
   pragma import (Cpp,CoFileTimeNow_x,"CoFileTimeNow");
   function CoRegisterMessageFilter(
      lpMessageFilter_x : LPMESSAGEFILTER;
      lplpMessageFilter : access LPMESSAGEFILTER
   ) return HRESULT;
   pragma import (Cpp,CoRegisterMessageFilter,"CoRegisterMessageFilter");
   function CoRegisterChannelHook(
      ExtensionUuid : access constant GUID;
      pChannelHook : access IChannelHook'Class
   ) return HRESULT;
   pragma import (Cpp,CoRegisterChannelHook,"CoRegisterChannelHook");
   function CoTreatAsClass(
      clsidOld : access constant IID;
      clsidNew : access constant IID
   ) return HRESULT;
   pragma import (Cpp,CoTreatAsClass,"CoTreatAsClass");
   function CreateDataAdviseHolder(
      ppDAHolder : access LPDATAADVISEHOLDER
   ) return HRESULT;
   pragma import (Cpp,CreateDataAdviseHolder,"CreateDataAdviseHolder");
   function CreateDataCache(
      pUnkOuter : LPUNKNOWN;
      rclsid : access constant IID;
      iid_x : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CreateDataCache,"CreateDataCache");
   function StgOpenAsyncDocfileOnIFillLockBytes(
      pflb : access IFillLockBytes'Class;
      grfMode : DWORD;
      asyncFlags : DWORD;
      ppstgOpen : access IStorage_Ptr
   ) return HRESULT;
   pragma import (Cpp,StgOpenAsyncDocfileOnIFillLockBytes,"StgOpenAsyncDocfileOnIFillLockBytes");
   function StgGetIFillLockBytesOnILockBytes(
      pilb : access ILockBytes'Class;
      ppflb : access IFillLockBytes_Ptr
   ) return HRESULT;
   pragma import (Cpp,StgGetIFillLockBytesOnILockBytes,"StgGetIFillLockBytesOnILockBytes");
   function StgGetIFillLockBytesOnFile(
      pwcsName : access constant OLECHAR;
      ppflb : access IFillLockBytes_Ptr
   ) return HRESULT;
   pragma import (Cpp,StgGetIFillLockBytesOnFile,"StgGetIFillLockBytesOnFile");
   function StgOpenLayoutDocfile(
      pwcsDfName : access constant OLECHAR;
      grfMode : DWORD;
      reserved : DWORD;
      ppstgOpen : access IStorage_Ptr
   ) return HRESULT;
   pragma import (Cpp,StgOpenLayoutDocfile,"StgOpenLayoutDocfile");
   function CoInstall(
      pbc : access IBindCtx'Class;
      dwFlags : DWORD;
      pClassSpec : access uCLSSPEC;
      pQuery : access QUERYCONTEXT;
      pszCodeBase : LPWSTR
   ) return HRESULT;
   pragma import (Cpp,CoInstall,"CoInstall");
   function BindMoniker(
      pmk : LPMONIKER;
      grfOpt : DWORD;
      iidResult : access constant IID;
      ppvResult : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,BindMoniker,"BindMoniker");
   function CoGetObject(
      pszName : LPCWSTR;
      pBindOptions : access BIND_OPTS;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoGetObject,"CoGetObject");
   function MkParseDisplayName(
      pbc : LPBC;
      szUserName : LPCOLESTR;
      pchEaten : access ULONG;
      ppmk : access LPMONIKER
   ) return HRESULT;
   pragma import (Cpp,MkParseDisplayName,"MkParseDisplayName");
   function MonikerRelativePathTo(
      pmkSrc : LPMONIKER;
      pmkDest : LPMONIKER;
      ppmkRelPath : access LPMONIKER;
      dwReserved : BOOL
   ) return HRESULT;
   pragma import (Cpp,MonikerRelativePathTo,"MonikerRelativePathTo");
   function MonikerCommonPrefixWith(
      pmkThis : LPMONIKER;
      pmkOther : LPMONIKER;
      ppmkCommon : access LPMONIKER
   ) return HRESULT;
   pragma import (Cpp,MonikerCommonPrefixWith,"MonikerCommonPrefixWith");
   function CreateBindCtx(
      reserved : DWORD;
      ppbc : access LPBC
   ) return HRESULT;
   pragma import (Cpp,CreateBindCtx,"CreateBindCtx");
   function CreateGenericComposite(
      pmkFirst : LPMONIKER;
      pmkRest : LPMONIKER;
      ppmkComposite : access LPMONIKER
   ) return HRESULT;
   pragma import (Cpp,CreateGenericComposite,"CreateGenericComposite");
   function GetClassFile(
      szFilename : LPCOLESTR;
      pclsid : access CLSID
   ) return HRESULT;
   pragma import (Cpp,GetClassFile,"GetClassFile");
   function CreateClassMoniker(
      rclsid : access constant IID;
      ppmk : access LPMONIKER
   ) return HRESULT;
   pragma import (Cpp,CreateClassMoniker,"CreateClassMoniker");
   function CreateFileMoniker(
      lpszPathName : LPCOLESTR;
      ppmk : access LPMONIKER
   ) return HRESULT;
   pragma import (Cpp,CreateFileMoniker,"CreateFileMoniker");
   function CreateItemMoniker(
      lpszDelim : LPCOLESTR;
      lpszItem : LPCOLESTR;
      ppmk : access LPMONIKER
   ) return HRESULT;
   pragma import (Cpp,CreateItemMoniker,"CreateItemMoniker");
   function CreateAntiMoniker(
      ppmk : access LPMONIKER
   ) return HRESULT;
   pragma import (Cpp,CreateAntiMoniker,"CreateAntiMoniker");
   function CreatePointerMoniker(
      punk : LPUNKNOWN;
      ppmk : access LPMONIKER
   ) return HRESULT;
   pragma import (Cpp,CreatePointerMoniker,"CreatePointerMoniker");
   function CreateObjrefMoniker(
      punk : LPUNKNOWN;
      ppmk : access LPMONIKER
   ) return HRESULT;
   pragma import (Cpp,CreateObjrefMoniker,"CreateObjrefMoniker");
   function GetRunningObjectTable(
      reserved : DWORD;
      pprot : access LPRUNNINGOBJECTTABLE
   ) return HRESULT;
   pragma import (Cpp,GetRunningObjectTable,"GetRunningObjectTable");
   -- #include <urlmon.h>
   type IPersistMoniker;
   type IMonikerProp;
   type IBindProtocol;
   type IBinding;
   type IBindStatusCallback;
   type IBindStatusCallbackEx;
   type IAuthenticate;
   type IAuthenticateEx;
   type IHttpNegotiate;
   type IHttpNegotiate2;
   type IHttpNegotiate3;
   type IWinInetFileStream;
   type IWindowForBindingUI;
   type ICodeInstall;
   type IUri;
   type IUriContainer;
   type IUriBuilder;
   type IUriBuilderFactory;
   type IWinInetInfo;
   type IHttpSecurity;
   type IWinInetHttpInfo;
   type IWinInetHttpTimeouts;
   type IWinInetCacheHints;
   type IWinInetCacheHints2;
   type IBindHost;
   type IInternet;
   type IInternetBindInfo;
   type IInternetBindInfoEx;
   type IInternetProtocolRoot;
   type IInternetProtocol;
   type IInternetProtocolEx;
   type IInternetProtocolSink;
   type IInternetProtocolSinkStackable;
   type IInternetSession;
   type IInternetThreadSwitch;
   type IInternetPriority;
   type IInternetProtocolInfo;
   type IInternetSecurityMgrSite;
   type IInternetSecurityManager;
   type IInternetSecurityManagerEx;
   type IInternetSecurityManagerEx2;
   type IZoneIdentifier;
   type IZoneIdentifier2;
   type IInternetHostSecurityManager;
   type IInternetZoneManager;
   type IInternetZoneManagerEx;
   type IInternetZoneManagerEx2;
   type ISoftDistExt;
   type ICatalogFileInfo;
   type IDataFilter;
   type IEncodingFilterFactory;
   type IWrappedProtocol;
   type IGetBindHandle;
   type IBindCallbackRedirect;
   type IBindHttpSecurity;
   -- #include <oleidl.h>
   type IOleAdviseHolder;
   type IOleCache;
   type IOleCache2;
   type IOleCacheControl;
   type IParseDisplayName;
   type IOleContainer;
   type IOleClientSite;
   type IOleObject;
   type IOleWindow;
   type IOleLink;
   type IOleItemContainer;
   type IOleInPlaceUIWindow;
   type IOleInPlaceActiveObject;
   type IOleInPlaceFrame;
   type IOleInPlaceObject;
   type IOleInPlaceSite;
   type IContinue;
   type IViewObject;
   type IViewObject2;
   type IDropSource;
   type IDropTarget;
   type IDropSourceNotify;
   type IEnterpriseDropTarget;
   type IEnumOLEVERB;
   type LPOLEADVISEHOLDER is access all IOleAdviseHolder;
   IID_IOleAdviseHolder : aliased constant IID;
   pragma import (C,IID_IOleAdviseHolder,"IID_IOleAdviseHolder");
   type IOleAdviseHolder is limited interface and IUnknown;
      function Advise(
         This : access IOleAdviseHolder;
         pAdvise : access IAdviseSink'Class;
         pdwConnection : access DWORD
      ) return HRESULT is abstract;
      function Unadvise(
         This : access IOleAdviseHolder;
         dwConnection : DWORD
      ) return HRESULT is abstract;
      function EnumAdvise(
         This : access IOleAdviseHolder;
         ppenumAdvise : access IEnumSTATDATA_Ptr
      ) return HRESULT is abstract;
      function SendOnRename(
         This : access IOleAdviseHolder;
         pmk : access IMoniker'Class
      ) return HRESULT is abstract;
      function SendOnSave(This : access IOleAdviseHolder) return HRESULT is abstract;
      function SendOnClose(This : access IOleAdviseHolder) return HRESULT is abstract;
   type IOleAdviseHolder_Ptr is access all IOleAdviseHolder'Class;
   type LPOLECACHE is access all IOleCache;
   IID_IOleCache : aliased constant IID;
   pragma import (C,IID_IOleCache,"IID_IOleCache");
   type IOleCache is limited interface and IUnknown;
      function Cache(
         This : access IOleCache;
         pformatetc : access FORMATETC;
         advf_x : DWORD;
         pdwConnection : access DWORD
      ) return HRESULT is abstract;
      function Uncache(
         This : access IOleCache;
         dwConnection : DWORD
      ) return HRESULT is abstract;
      function EnumCache(
         This : access IOleCache;
         ppenumSTATDATA : access IEnumSTATDATA_Ptr
      ) return HRESULT is abstract;
      function InitCache(
         This : access IOleCache;
         pDataObject : access IDataObject'Class
      ) return HRESULT is abstract;
      function SetData(
         This : access IOleCache;
         pformatetc : access FORMATETC;
         pmedium : access STGMEDIUM;
         fRelease : BOOL
      ) return HRESULT is abstract;
   type IOleCache_Ptr is access all IOleCache'Class;
   type LPOLECACHE2 is access all IOleCache2;
   type tagDISCARDCACHE is (
      DISCARDCACHE_SAVEIFDIRTY,
      DISCARDCACHE_NOSAVE
   );
   for tagDISCARDCACHE use (
      DISCARDCACHE_SAVEIFDIRTY => 0,
      DISCARDCACHE_NOSAVE => 1
   );
   for tagDISCARDCACHE'Size use 32;
   subtype DISCARDCACHE is tagDISCARDCACHE;
   IID_IOleCache2 : aliased constant IID;
   pragma import (C,IID_IOleCache2,"IID_IOleCache2");
   type IOleCache2 is limited interface and IOleCache;
      function UpdateCache(
         This : access IOleCache2;
         pDataObject : LPDATAOBJECT;
         grfUpdf : DWORD;
         pReserved : LPVOID
      ) return HRESULT is abstract;
      function DiscardCache_x(
         This : access IOleCache2;
         dwDiscardOptions : DWORD
      ) return HRESULT is abstract;
   type IOleCache2_Ptr is access all IOleCache2'Class;
   function IOleCache2_RemoteUpdateCache_Proxy(
      This : access IOleCache2'Class;
      pDataObject : LPDATAOBJECT;
      grfUpdf : DWORD;
      pReserved : LONG_PTR
   ) return HRESULT;
   pragma import (Cpp,IOleCache2_RemoteUpdateCache_Proxy,"IOleCache2_RemoteUpdateCache_Proxy");
   procedure IOleCache2_RemoteUpdateCache_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IOleCache2_RemoteUpdateCache_Stub,"IOleCache2_RemoteUpdateCache_Stub");
   type LPOLECACHECONTROL is access all IOleCacheControl;
   IID_IOleCacheControl : aliased constant IID;
   pragma import (C,IID_IOleCacheControl,"IID_IOleCacheControl");
   type IOleCacheControl is limited interface and IUnknown;
      function OnRun(
         This : access IOleCacheControl;
         pDataObject : LPDATAOBJECT
      ) return HRESULT is abstract;
      function OnStop(This : access IOleCacheControl) return HRESULT is abstract;
   type IOleCacheControl_Ptr is access all IOleCacheControl'Class;
   type LPPARSEDISPLAYNAME is access all IParseDisplayName;
   IID_IParseDisplayName : aliased constant IID;
   pragma import (C,IID_IParseDisplayName,"IID_IParseDisplayName");
   type IParseDisplayName is limited interface and IUnknown;
      function ParseDisplayName(
         This : access IParseDisplayName;
         pbc : access IBindCtx'Class;
         pszDisplayName : LPOLESTR;
         pchEaten : access ULONG;
         ppmkOut : access IMoniker_Ptr
      ) return HRESULT is abstract;
   type IParseDisplayName_Ptr is access all IParseDisplayName'Class;
   type LPOLECONTAINER is access all IOleContainer;
   IID_IOleContainer : aliased constant IID;
   pragma import (C,IID_IOleContainer,"IID_IOleContainer");
   type IOleContainer is limited interface and IParseDisplayName;
      function EnumObjects_x(
         This : access IOleContainer;
         grfFlags : DWORD;
         ppenum : access IEnumUnknown_Ptr
      ) return HRESULT is abstract;
      function LockContainer(
         This : access IOleContainer;
         fLock : BOOL
      ) return HRESULT is abstract;
   type IOleContainer_Ptr is access all IOleContainer'Class;
   type LPOLECLIENTSITE is access all IOleClientSite;
   IID_IOleClientSite : aliased constant IID;
   pragma import (C,IID_IOleClientSite,"IID_IOleClientSite");
   type IOleClientSite is limited interface and IUnknown;
      function SaveObject(This : access IOleClientSite) return HRESULT is abstract;
      function GetMoniker(
         This : access IOleClientSite;
         dwAssign : DWORD;
         dwWhichMoniker : DWORD;
         ppmk : access IMoniker_Ptr
      ) return HRESULT is abstract;
      function GetContainer(
         This : access IOleClientSite;
         ppContainer : access IOleContainer_Ptr
      ) return HRESULT is abstract;
      function ShowObject(This : access IOleClientSite) return HRESULT is abstract;
      function OnShowWindow(
         This : access IOleClientSite;
         fShow : BOOL
      ) return HRESULT is abstract;
      function RequestNewObjectLayout(This : access IOleClientSite) return HRESULT is abstract;
   type IOleClientSite_Ptr is access all IOleClientSite'Class;
   type LPOLEOBJECT is access all IOleObject;
   type tagOLEGETMONIKER is (
      OLEGETMONIKER_ONLYIFTHERE,
      OLEGETMONIKER_FORCEASSIGN,
      OLEGETMONIKER_UNASSIGN,
      OLEGETMONIKER_TEMPFORUSER
   );
   for tagOLEGETMONIKER use (
      OLEGETMONIKER_ONLYIFTHERE => 1,
      OLEGETMONIKER_FORCEASSIGN => 2,
      OLEGETMONIKER_UNASSIGN => 3,
      OLEGETMONIKER_TEMPFORUSER => 4
   );
   for tagOLEGETMONIKER'Size use 32;
   subtype OLEGETMONIKER is tagOLEGETMONIKER;
   type tagOLEWHICHMK is (
      OLEWHICHMK_CONTAINER,
      OLEWHICHMK_OBJREL,
      OLEWHICHMK_OBJFULL
   );
   for tagOLEWHICHMK use (
      OLEWHICHMK_CONTAINER => 1,
      OLEWHICHMK_OBJREL => 2,
      OLEWHICHMK_OBJFULL => 3
   );
   for tagOLEWHICHMK'Size use 32;
   subtype OLEWHICHMK is tagOLEWHICHMK;
   type tagUSERCLASSTYPE is (
      USERCLASSTYPE_FULL,
      USERCLASSTYPE_SHORT,
      USERCLASSTYPE_APPNAME
   );
   for tagUSERCLASSTYPE use (
      USERCLASSTYPE_FULL => 1,
      USERCLASSTYPE_SHORT => 2,
      USERCLASSTYPE_APPNAME => 3
   );
   for tagUSERCLASSTYPE'Size use 32;
   subtype USERCLASSTYPE is tagUSERCLASSTYPE;
   type tagOLEMISC is (
      OLEMISC_RECOMPOSEONRESIZE,
      OLEMISC_ONLYICONIC,
      OLEMISC_INSERTNOTREPLACE,
      OLEMISC_STATIC,
      OLEMISC_CANTLINKINSIDE,
      OLEMISC_CANLINKBYOLE1,
      OLEMISC_ISLINKOBJECT,
      OLEMISC_INSIDEOUT,
      OLEMISC_ACTIVATEWHENVISIBLE,
      OLEMISC_RENDERINGISDEVICEINDEPENDENT,
      OLEMISC_INVISIBLEATRUNTIME,
      OLEMISC_ALWAYSRUN,
      OLEMISC_ACTSLIKEBUTTON,
      OLEMISC_ACTSLIKELABEL,
      OLEMISC_NOUIACTIVATE,
      OLEMISC_ALIGNABLE,
      OLEMISC_SIMPLEFRAME,
      OLEMISC_SETCLIENTSITEFIRST,
      OLEMISC_IMEMODE,
      OLEMISC_IGNOREACTIVATEWHENVISIBLE,
      OLEMISC_WANTSTOMENUMERGE,
      OLEMISC_SUPPORTSMULTILEVELUNDO
   );
   for tagOLEMISC use (
      OLEMISC_RECOMPOSEONRESIZE => 1,
      OLEMISC_ONLYICONIC => 2,
      OLEMISC_INSERTNOTREPLACE => 4,
      OLEMISC_STATIC => 8,
      OLEMISC_CANTLINKINSIDE => 16,
      OLEMISC_CANLINKBYOLE1 => 32,
      OLEMISC_ISLINKOBJECT => 64,
      OLEMISC_INSIDEOUT => 128,
      OLEMISC_ACTIVATEWHENVISIBLE => 256,
      OLEMISC_RENDERINGISDEVICEINDEPENDENT => 512,
      OLEMISC_INVISIBLEATRUNTIME => 1024,
      OLEMISC_ALWAYSRUN => 2048,
      OLEMISC_ACTSLIKEBUTTON => 4096,
      OLEMISC_ACTSLIKELABEL => 8192,
      OLEMISC_NOUIACTIVATE => 16384,
      OLEMISC_ALIGNABLE => 32768,
      OLEMISC_SIMPLEFRAME => 65536,
      OLEMISC_SETCLIENTSITEFIRST => 131072,
      OLEMISC_IMEMODE => 262144,
      OLEMISC_IGNOREACTIVATEWHENVISIBLE => 524288,
      OLEMISC_WANTSTOMENUMERGE => 1048576,
      OLEMISC_SUPPORTSMULTILEVELUNDO => 2097152
   );
   for tagOLEMISC'Size use 32;
   subtype OLEMISC is tagOLEMISC;
   type tagOLECLOSE is (
      OLECLOSE_SAVEIFDIRTY,
      OLECLOSE_NOSAVE,
      OLECLOSE_PROMPTSAVE
   );
   for tagOLECLOSE use (
      OLECLOSE_SAVEIFDIRTY => 0,
      OLECLOSE_NOSAVE => 1,
      OLECLOSE_PROMPTSAVE => 2
   );
   for tagOLECLOSE'Size use 32;
   subtype OLECLOSE is tagOLECLOSE;
   IID_IOleObject : aliased constant IID;
   pragma import (C,IID_IOleObject,"IID_IOleObject");
   type IEnumOLEVERB_Ptr is access all IEnumOLEVERB; -- Auto Generated Dependancy
   type IOleObject is limited interface and IUnknown;
      function SetClientSite(
         This : access IOleObject;
         pClientSite : access IOleClientSite'Class
      ) return HRESULT is abstract;
      function GetClientSite(
         This : access IOleObject;
         ppClientSite : access IOleClientSite_Ptr
      ) return HRESULT is abstract;
      function SetHostNames(
         This : access IOleObject;
         szContainerApp : LPCOLESTR;
         szContainerObj : LPCOLESTR
      ) return HRESULT is abstract;
      function Close(
         This : access IOleObject;
         dwSaveOption : DWORD
      ) return HRESULT is abstract;
      function SetMoniker(
         This : access IOleObject;
         dwWhichMoniker : DWORD;
         pmk : access IMoniker'Class
      ) return HRESULT is abstract;
      function GetMoniker(
         This : access IOleObject;
         dwAssign : DWORD;
         dwWhichMoniker : DWORD;
         ppmk : access IMoniker_Ptr
      ) return HRESULT is abstract;
      function InitFromData(
         This : access IOleObject;
         pDataObject : access IDataObject'Class;
         fCreation : BOOL;
         dwReserved : DWORD
      ) return HRESULT is abstract;
      function GetClipboardData_x(
         This : access IOleObject;
         dwReserved : DWORD;
         ppDataObject : access IDataObject_Ptr
      ) return HRESULT is abstract;
      function DoVerb(
         This : access IOleObject;
         iVerb : LONG;
         lpmsg_x : LPMSG;
         pActiveSite : access IOleClientSite'Class;
         lindex : LONG;
         hwndParent : HWND;
         lprcPosRect : LPCRECT
      ) return HRESULT is abstract;
      function EnumVerbs(
         This : access IOleObject;
         ppEnumOleVerb : access IEnumOLEVERB_Ptr
      ) return HRESULT is abstract;
      function Update(This : access IOleObject) return HRESULT is abstract;
      function IsUpToDate(This : access IOleObject) return HRESULT is abstract;
      function GetUserClassID(
         This : access IOleObject;
         pClsid : access CLSID
      ) return HRESULT is abstract;
      function GetUserType(
         This : access IOleObject;
         dwFormOfType : DWORD;
         pszUserType : access LPOLESTR
      ) return HRESULT is abstract;
      function SetExtent(
         This : access IOleObject;
         dwDrawAspect : DWORD;
         psizel_x : access SIZEL
      ) return HRESULT is abstract;
      function GetExtent(
         This : access IOleObject;
         dwDrawAspect : DWORD;
         psizel_x : access SIZEL
      ) return HRESULT is abstract;
      function Advise(
         This : access IOleObject;
         pAdvSink : access IAdviseSink'Class;
         pdwConnection : access DWORD
      ) return HRESULT is abstract;
      function Unadvise(
         This : access IOleObject;
         dwConnection : DWORD
      ) return HRESULT is abstract;
      function EnumAdvise(
         This : access IOleObject;
         ppenumAdvise : access IEnumSTATDATA_Ptr
      ) return HRESULT is abstract;
      function GetMiscStatus(
         This : access IOleObject;
         dwAspect : DWORD;
         pdwStatus : access DWORD
      ) return HRESULT is abstract;
      function SetColorScheme(
         This : access IOleObject;
         pLogpal : access LOGPALETTE
      ) return HRESULT is abstract;
   type IOleObject_Ptr is access all IOleObject'Class;
   type tagOLERENDER is (
      OLERENDER_NONE,
      OLERENDER_DRAW,
      OLERENDER_FORMAT,
      OLERENDER_ASIS
   );
   for tagOLERENDER use (
      OLERENDER_NONE => 0,
      OLERENDER_DRAW => 1,
      OLERENDER_FORMAT => 2,
      OLERENDER_ASIS => 3
   );
   for tagOLERENDER'Size use 32;
   subtype OLERENDER is tagOLERENDER;
   type LPOLERENDER is access all OLERENDER;
   type tagOBJECTDESCRIPTOR is record
      cbSize : ULONG;
      clsid_x : CLSID;
      dwDrawAspect : DWORD;
      sizel_x : SIZEL;
      pointl_x : POINTL;
      dwStatus : DWORD;
      dwFullUserTypeName : DWORD;
      dwSrcOfCopy : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagOBJECTDESCRIPTOR);
   for tagOBJECTDESCRIPTOR use record
      cbSize at 0 range 0..31;
      clsid_x at 0 range 32..159;
      dwDrawAspect at 0 range 160..191;
      sizel_x at 0 range 192..255;
      pointl_x at 0 range 256..319;
      dwStatus at 0 range 320..351;
      dwFullUserTypeName at 0 range 352..383;
      dwSrcOfCopy at 0 range 384..415;
   end record;
   for tagOBJECTDESCRIPTOR'Size use 416;
   for tagOBJECTDESCRIPTOR'Alignment use 4;
   subtype OBJECTDESCRIPTOR is tagOBJECTDESCRIPTOR;
   type POBJECTDESCRIPTOR is access all tagOBJECTDESCRIPTOR;
   type LPOBJECTDESCRIPTOR is access all tagOBJECTDESCRIPTOR;
   subtype LINKSRCDESCRIPTOR is tagOBJECTDESCRIPTOR;
   type PLINKSRCDESCRIPTOR is access all tagOBJECTDESCRIPTOR;
   type LPLINKSRCDESCRIPTOR is access all tagOBJECTDESCRIPTOR;
   type LPOLEWINDOW is access all IOleWindow;
   IID_IOleWindow : aliased constant IID;
   pragma import (C,IID_IOleWindow,"IID_IOleWindow");
   type IOleWindow is limited interface and IUnknown;
      function GetWindow_x(
         This : access IOleWindow;
         phwnd : access HWND
      ) return HRESULT is abstract;
      function ContextSensitiveHelp(
         This : access IOleWindow;
         fEnterMode : BOOL
      ) return HRESULT is abstract;
   type IOleWindow_Ptr is access all IOleWindow'Class;
   type LPOLELINK is access all IOleLink;
   type tagOLEUPDATE is (
      OLEUPDATE_ALWAYS,
      OLEUPDATE_ONCALL
   );
   for tagOLEUPDATE use (
      OLEUPDATE_ALWAYS => 1,
      OLEUPDATE_ONCALL => 3
   );
   for tagOLEUPDATE'Size use 32;
   subtype OLEUPDATE is tagOLEUPDATE;
   type LPOLEUPDATE is access all OLEUPDATE;
   type POLEUPDATE is access all OLEUPDATE;
   type tagOLELINKBIND is (
      OLELINKBIND_EVENIFCLASSDIFF
   );
   for tagOLELINKBIND use (
      OLELINKBIND_EVENIFCLASSDIFF => 1
   );
   for tagOLELINKBIND'Size use 32;
   subtype OLELINKBIND is tagOLELINKBIND;
   IID_IOleLink : aliased constant IID;
   pragma import (C,IID_IOleLink,"IID_IOleLink");
   type IOleLink is limited interface and IUnknown;
      function SetUpdateOptions(
         This : access IOleLink;
         dwUpdateOpt : DWORD
      ) return HRESULT is abstract;
      function GetUpdateOptions(
         This : access IOleLink;
         pdwUpdateOpt : access DWORD
      ) return HRESULT is abstract;
      function SetSourceMoniker(
         This : access IOleLink;
         pmk : access IMoniker'Class;
         rclsid : access constant IID
      ) return HRESULT is abstract;
      function GetSourceMoniker(
         This : access IOleLink;
         ppmk : access IMoniker_Ptr
      ) return HRESULT is abstract;
      function SetSourceDisplayName(
         This : access IOleLink;
         pszStatusText : LPCOLESTR
      ) return HRESULT is abstract;
      function GetSourceDisplayName(
         This : access IOleLink;
         ppszDisplayName : access LPOLESTR
      ) return HRESULT is abstract;
      function BindToSource(
         This : access IOleLink;
         bindflags : DWORD;
         pbc : access IBindCtx'Class
      ) return HRESULT is abstract;
      function BindIfRunning(This : access IOleLink) return HRESULT is abstract;
      function GetBoundSource(
         This : access IOleLink;
         ppunk : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function UnbindSource(This : access IOleLink) return HRESULT is abstract;
      function Update(
         This : access IOleLink;
         pbc : access IBindCtx'Class
      ) return HRESULT is abstract;
   type IOleLink_Ptr is access all IOleLink'Class;
   type LPOLEITEMCONTAINER is access all IOleItemContainer;
   type tagBINDSPEED is (
      BINDSPEED_INDEFINITE,
      BINDSPEED_MODERATE,
      BINDSPEED_IMMEDIATE
   );
   for tagBINDSPEED use (
      BINDSPEED_INDEFINITE => 1,
      BINDSPEED_MODERATE => 2,
      BINDSPEED_IMMEDIATE => 3
   );
   for tagBINDSPEED'Size use 32;
   subtype BINDSPEED is tagBINDSPEED;
   type tagOLECONTF is (
      OLECONTF_EMBEDDINGS,
      OLECONTF_LINKS,
      OLECONTF_OTHERS,
      OLECONTF_ONLYUSER,
      OLECONTF_ONLYIFRUNNING
   );
   for tagOLECONTF use (
      OLECONTF_EMBEDDINGS => 1,
      OLECONTF_LINKS => 2,
      OLECONTF_OTHERS => 4,
      OLECONTF_ONLYUSER => 8,
      OLECONTF_ONLYIFRUNNING => 16
   );
   for tagOLECONTF'Size use 32;
   subtype OLECONTF is tagOLECONTF;
   IID_IOleItemContainer : aliased constant IID;
   pragma import (C,IID_IOleItemContainer,"IID_IOleItemContainer");
   type IOleItemContainer is limited interface and IOleContainer;
      function GetObjectA_x(
         This : access IOleItemContainer;
         pszItem : LPOLESTR;
         dwSpeedNeeded : DWORD;
         pbc : access IBindCtx'Class;
         riid : access constant IID;
         ppvObject : access LPVOID
      ) return HRESULT is abstract;
      function GetObjectStorage(
         This : access IOleItemContainer;
         pszItem : LPOLESTR;
         pbc : access IBindCtx'Class;
         riid : access constant IID;
         ppvStorage : access LPVOID
      ) return HRESULT is abstract;
      function IsRunning(
         This : access IOleItemContainer;
         pszItem : LPOLESTR
      ) return HRESULT is abstract;
   type IOleItemContainer_Ptr is access all IOleItemContainer'Class;
   type LPOLEINPLACEUIWINDOW is access all IOleInPlaceUIWindow;
   subtype BORDERWIDTHS is RECT;
   subtype LPBORDERWIDTHS is LPRECT;
   subtype LPCBORDERWIDTHS is LPCRECT;
   IID_IOleInPlaceUIWindow : aliased constant IID;
   pragma import (C,IID_IOleInPlaceUIWindow,"IID_IOleInPlaceUIWindow");
   type IOleInPlaceUIWindow is limited interface and IOleWindow;
      function GetBorder(
         This : access IOleInPlaceUIWindow;
         lprectBorder : LPRECT
      ) return HRESULT is abstract;
      function RequestBorderSpace(
         This : access IOleInPlaceUIWindow;
         pborderwidths : LPCBORDERWIDTHS
      ) return HRESULT is abstract;
      function SetBorderSpace(
         This : access IOleInPlaceUIWindow;
         pborderwidths : LPCBORDERWIDTHS
      ) return HRESULT is abstract;
      function SetActiveObject(
         This : access IOleInPlaceUIWindow;
         pActiveObject : access IOleInPlaceActiveObject'Class;
         pszObjName : LPCOLESTR
      ) return HRESULT is abstract;
   type IOleInPlaceUIWindow_Ptr is access all IOleInPlaceUIWindow'Class;
   type LPOLEINPLACEACTIVEOBJECT is access all IOleInPlaceActiveObject;
   IID_IOleInPlaceActiveObject : aliased constant IID;
   pragma import (C,IID_IOleInPlaceActiveObject,"IID_IOleInPlaceActiveObject");
   type IOleInPlaceActiveObject is limited interface and IOleWindow;
      function TranslateAcceleratorA_x(
         This : access IOleInPlaceActiveObject;
         lpmsg_x : LPMSG
      ) return HRESULT is abstract;
      function OnFrameWindowActivate(
         This : access IOleInPlaceActiveObject;
         fActivate : BOOL
      ) return HRESULT is abstract;
      function OnDocWindowActivate(
         This : access IOleInPlaceActiveObject;
         fActivate : BOOL
      ) return HRESULT is abstract;
      function ResizeBorder(
         This : access IOleInPlaceActiveObject;
         prcBorder : LPCRECT;
         pUIWindow : access IOleInPlaceUIWindow'Class;
         fFrameWindow : BOOL
      ) return HRESULT is abstract;
      function EnableModeless(
         This : access IOleInPlaceActiveObject;
         fEnable : BOOL
      ) return HRESULT is abstract;
   type IOleInPlaceActiveObject_Ptr is access all IOleInPlaceActiveObject'Class;
   function IOleInPlaceActiveObject_RemoteTranslateAccelerator_Proxy(
      This : access IOleInPlaceActiveObject'Class
   ) return HRESULT;
   pragma import (Cpp,IOleInPlaceActiveObject_RemoteTranslateAccelerator_Proxy,"IOleInPlaceActiveObject_RemoteTranslateAccelerator_Proxy");
   procedure IOleInPlaceActiveObject_RemoteTranslateAccelerator_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IOleInPlaceActiveObject_RemoteTranslateAccelerator_Stub,"IOleInPlaceActiveObject_RemoteTranslateAccelerator_Stub");
   function IOleInPlaceActiveObject_RemoteResizeBorder_Proxy(
      This : access IOleInPlaceActiveObject'Class;
      prcBorder : LPCRECT;
      riid : access constant IID;
      pUIWindow : access IOleInPlaceUIWindow'Class;
      fFrameWindow : BOOL
   ) return HRESULT;
   pragma import (Cpp,IOleInPlaceActiveObject_RemoteResizeBorder_Proxy,"IOleInPlaceActiveObject_RemoteResizeBorder_Proxy");
   procedure IOleInPlaceActiveObject_RemoteResizeBorder_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IOleInPlaceActiveObject_RemoteResizeBorder_Stub,"IOleInPlaceActiveObject_RemoteResizeBorder_Stub");
   type LPOLEINPLACEFRAME is access all IOleInPlaceFrame;
   type tagOIFI is record
      cb : UINT;
      fMDIApp : BOOL;
      hwndFrame : HWND;
      haccel_x : HACCEL;
      cAccelEntries : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagOIFI);
   for tagOIFI use record
      cb at 0 range 0..31;
      fMDIApp at 0 range 32..63;
      hwndFrame at 0 range 64..127;
      haccel_x at 0 range 128..191;
      cAccelEntries at 0 range 192..223;
   end record;
   for tagOIFI'Size use 256;
   for tagOIFI'Alignment use 8;
   subtype OLEINPLACEFRAMEINFO is tagOIFI;
   type LPOLEINPLACEFRAMEINFO is access all tagOIFI;
   type tagOleMenuGroupWidths_width_Array is array(1..6) of LONG; -- Auto Generated Dependancy
   type tagOleMenuGroupWidths is record
      width : tagOleMenuGroupWidths_width_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagOleMenuGroupWidths);
   for tagOleMenuGroupWidths use record
      width at 0 range 0..191;
   end record;
   for tagOleMenuGroupWidths'Size use 192;
   for tagOleMenuGroupWidths'Alignment use 4;
   subtype OLEMENUGROUPWIDTHS is tagOleMenuGroupWidths;
   type LPOLEMENUGROUPWIDTHS is access all tagOleMenuGroupWidths;
   subtype HOLEMENU is HGLOBAL;
   IID_IOleInPlaceFrame : aliased constant IID;
   pragma import (C,IID_IOleInPlaceFrame,"IID_IOleInPlaceFrame");
   type IOleInPlaceFrame is limited interface and IOleInPlaceUIWindow;
      function InsertMenus(
         This : access IOleInPlaceFrame;
         hmenuShared : HMENU;
         lpMenuWidths : LPOLEMENUGROUPWIDTHS
      ) return HRESULT is abstract;
      function SetMenu_x(
         This : access IOleInPlaceFrame;
         hmenuShared : HMENU;
         holemenu_x : HOLEMENU;
         hwndActiveObject : HWND
      ) return HRESULT is abstract;
      function RemoveMenus(
         This : access IOleInPlaceFrame;
         hmenuShared : HMENU
      ) return HRESULT is abstract;
      function SetStatusText(
         This : access IOleInPlaceFrame;
         pszStatusText : LPCOLESTR
      ) return HRESULT is abstract;
      function EnableModeless(
         This : access IOleInPlaceFrame;
         fEnable : BOOL
      ) return HRESULT is abstract;
      function TranslateAcceleratorA_x(
         This : access IOleInPlaceFrame;
         lpmsg_x : LPMSG;
         wID : WORD
      ) return HRESULT is abstract;
   type IOleInPlaceFrame_Ptr is access all IOleInPlaceFrame'Class;
   type LPOLEINPLACEOBJECT is access all IOleInPlaceObject;
   IID_IOleInPlaceObject : aliased constant IID;
   pragma import (C,IID_IOleInPlaceObject,"IID_IOleInPlaceObject");
   type IOleInPlaceObject is limited interface and IOleWindow;
      function InPlaceDeactivate(This : access IOleInPlaceObject) return HRESULT is abstract;
      function UIDeactivate(This : access IOleInPlaceObject) return HRESULT is abstract;
      function SetObjectRects(
         This : access IOleInPlaceObject;
         lprcPosRect : LPCRECT;
         lprcClipRect : LPCRECT
      ) return HRESULT is abstract;
      function ReactivateAndUndo(This : access IOleInPlaceObject) return HRESULT is abstract;
   type IOleInPlaceObject_Ptr is access all IOleInPlaceObject'Class;
   type LPOLEINPLACESITE is access all IOleInPlaceSite;
   IID_IOleInPlaceSite : aliased constant IID;
   pragma import (C,IID_IOleInPlaceSite,"IID_IOleInPlaceSite");
   type IOleInPlaceSite is limited interface and IOleWindow;
      function CanInPlaceActivate(This : access IOleInPlaceSite) return HRESULT is abstract;
      function OnInPlaceActivate(This : access IOleInPlaceSite) return HRESULT is abstract;
      function OnUIActivate(This : access IOleInPlaceSite) return HRESULT is abstract;
      function GetWindowContext(
         This : access IOleInPlaceSite;
         ppFrame : access IOleInPlaceFrame_Ptr;
         ppDoc : access IOleInPlaceUIWindow_Ptr;
         lprcPosRect : LPRECT;
         lprcClipRect : LPRECT;
         lpFrameInfo : LPOLEINPLACEFRAMEINFO
      ) return HRESULT is abstract;
      function Scroll(
         This : access IOleInPlaceSite;
         scrollExtant : SIZE
      ) return HRESULT is abstract;
      function OnUIDeactivate(
         This : access IOleInPlaceSite;
         fUndoable : BOOL
      ) return HRESULT is abstract;
      function OnInPlaceDeactivate(This : access IOleInPlaceSite) return HRESULT is abstract;
      function DiscardUndoState(This : access IOleInPlaceSite) return HRESULT is abstract;
      function DeactivateAndUndo(This : access IOleInPlaceSite) return HRESULT is abstract;
      function OnPosRectChange(
         This : access IOleInPlaceSite;
         lprcPosRect : LPCRECT
      ) return HRESULT is abstract;
   type IOleInPlaceSite_Ptr is access all IOleInPlaceSite'Class;
   IID_IContinue : aliased constant IID;
   pragma import (C,IID_IContinue,"IID_IContinue");
   type IContinue is limited interface and IUnknown;
      function FContinue(This : access IContinue) return HRESULT is abstract;
   type IContinue_Ptr is access all IContinue'Class;
   type LPVIEWOBJECT is access all IViewObject;
   IID_IViewObject : aliased constant IID;
   pragma import (C,IID_IViewObject,"IID_IViewObject");
   type LOGPALETTE_Ptr is access all LOGPALETTE; -- Auto Generated Dependancy
   type IViewObject is limited interface and IUnknown;
      function Draw(
         This : access IViewObject;
         dwDrawAspect : DWORD;
         lindex : LONG;
         pvAspect : access Void;
         ptd : access DVTARGETDEVICE;
         hdcTargetDev : HDC;
         hdcDraw : HDC;
         lprcBounds : LPCRECTL;
         lprcWBounds : LPCRECTL;
         pfnContinue : access System.Address;
         dwContinue : ULONG_PTR
      ) return HRESULT is abstract;
      function GetColorSet(
         This : access IViewObject;
         dwDrawAspect : DWORD;
         lindex : LONG;
         pvAspect : access Void;
         ptd : access DVTARGETDEVICE;
         hicTargetDev : HDC;
         ppColorSet : access LOGPALETTE_Ptr
      ) return HRESULT is abstract;
      function Freeze(
         This : access IViewObject;
         dwDrawAspect : DWORD;
         lindex : LONG;
         pvAspect : access Void;
         pdwFreeze : access DWORD
      ) return HRESULT is abstract;
      function Unfreeze(
         This : access IViewObject;
         dwFreeze : DWORD
      ) return HRESULT is abstract;
      function SetAdvise(
         This : access IViewObject;
         aspects : DWORD;
         advf_x : DWORD;
         pAdvSink : access IAdviseSink'Class
      ) return HRESULT is abstract;
      function GetAdvise(
         This : access IViewObject;
         pAspects : access DWORD;
         pAdvf : access DWORD;
         ppAdvSink : access IAdviseSink_Ptr
      ) return HRESULT is abstract;
   type IViewObject_Ptr is access all IViewObject'Class;
   function IViewObject_RemoteDraw_Proxy(
      This : access IViewObject'Class;
      dwDrawAspect : DWORD;
      lindex : LONG;
      pvAspect : ULONG_PTR;
      ptd : access DVTARGETDEVICE;
      hdcTargetDev : HDC;
      hdcDraw : HDC;
      lprcBounds : LPCRECTL;
      lprcWBounds : LPCRECTL;
      pContinue : access IContinue'Class
   ) return HRESULT;
   pragma import (Cpp,IViewObject_RemoteDraw_Proxy,"IViewObject_RemoteDraw_Proxy");
   procedure IViewObject_RemoteDraw_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IViewObject_RemoteDraw_Stub,"IViewObject_RemoteDraw_Stub");
   function IViewObject_RemoteGetColorSet_Proxy(
      This : access IViewObject'Class;
      dwDrawAspect : DWORD;
      lindex : LONG;
      pvAspect : ULONG_PTR;
      ptd : access DVTARGETDEVICE;
      hicTargetDev : ULONG_PTR;
      ppColorSet : access LOGPALETTE_Ptr
   ) return HRESULT;
   pragma import (Cpp,IViewObject_RemoteGetColorSet_Proxy,"IViewObject_RemoteGetColorSet_Proxy");
   procedure IViewObject_RemoteGetColorSet_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IViewObject_RemoteGetColorSet_Stub,"IViewObject_RemoteGetColorSet_Stub");
   function IViewObject_RemoteFreeze_Proxy(
      This : access IViewObject'Class;
      dwDrawAspect : DWORD;
      lindex : LONG;
      pvAspect : ULONG_PTR;
      pdwFreeze : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IViewObject_RemoteFreeze_Proxy,"IViewObject_RemoteFreeze_Proxy");
   procedure IViewObject_RemoteFreeze_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IViewObject_RemoteFreeze_Stub,"IViewObject_RemoteFreeze_Stub");
   function IViewObject_RemoteGetAdvise_Proxy(
      This : access IViewObject'Class;
      pAspects : access DWORD;
      pAdvf : access DWORD;
      ppAdvSink : access IAdviseSink_Ptr
   ) return HRESULT;
   pragma import (Cpp,IViewObject_RemoteGetAdvise_Proxy,"IViewObject_RemoteGetAdvise_Proxy");
   procedure IViewObject_RemoteGetAdvise_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IViewObject_RemoteGetAdvise_Stub,"IViewObject_RemoteGetAdvise_Stub");
   type LPVIEWOBJECT2 is access all IViewObject2;
   IID_IViewObject2 : aliased constant IID;
   pragma import (C,IID_IViewObject2,"IID_IViewObject2");
   type IViewObject2 is limited interface and IViewObject;
      function GetExtent(
         This : access IViewObject2;
         dwDrawAspect : DWORD;
         lindex : LONG;
         ptd : access DVTARGETDEVICE;
         lpsizel_x : LPSIZEL
      ) return HRESULT is abstract;
   type IViewObject2_Ptr is access all IViewObject2'Class;
   type LPDROPSOURCE is access all IDropSource;
   IID_IDropSource : aliased constant IID;
   pragma import (C,IID_IDropSource,"IID_IDropSource");
   type IDropSource is limited interface and IUnknown;
      function QueryContinueDrag(
         This : access IDropSource;
         fEscapePressed : BOOL;
         grfKeyState : DWORD
      ) return HRESULT is abstract;
      function GiveFeedback(
         This : access IDropSource;
         dwEffect : DWORD
      ) return HRESULT is abstract;
   type IDropSource_Ptr is access all IDropSource'Class;
   type LPDROPTARGET is access all IDropTarget;
   IID_IDropTarget : aliased constant IID;
   pragma import (C,IID_IDropTarget,"IID_IDropTarget");
   type IDropTarget is limited interface and IUnknown;
      function DragEnter(
         This : access IDropTarget;
         pDataObj : access IDataObject'Class;
         grfKeyState : DWORD;
         pt : POINTL;
         pdwEffect : access DWORD
      ) return HRESULT is abstract;
      function DragOver(
         This : access IDropTarget;
         grfKeyState : DWORD;
         pt : POINTL;
         pdwEffect : access DWORD
      ) return HRESULT is abstract;
      function DragLeave(This : access IDropTarget) return HRESULT is abstract;
      function Drop(
         This : access IDropTarget;
         pDataObj : access IDataObject'Class;
         grfKeyState : DWORD;
         pt : POINTL;
         pdwEffect : access DWORD
      ) return HRESULT is abstract;
   type IDropTarget_Ptr is access all IDropTarget'Class;
   IID_IDropSourceNotify : aliased constant IID;
   pragma import (C,IID_IDropSourceNotify,"IID_IDropSourceNotify");
   type IDropSourceNotify is limited interface and IUnknown;
      function DragEnterTarget(
         This : access IDropSourceNotify;
         hwndTarget : HWND
      ) return HRESULT is abstract;
      function DragLeaveTarget(This : access IDropSourceNotify) return HRESULT is abstract;
   type IDropSourceNotify_Ptr is access all IDropSourceNotify'Class;
   IID_IEnterpriseDropTarget : aliased constant IID;
   pragma import (C,IID_IEnterpriseDropTarget,"IID_IEnterpriseDropTarget");
   type IEnterpriseDropTarget is limited interface and IUnknown;
      function SetDropSourceEnterpriseId(
         This : access IEnterpriseDropTarget;
         identity : LPCWSTR
      ) return HRESULT is abstract;
      function IsEvaluatingEdpPolicy(
         This : access IEnterpriseDropTarget;
         value : access BOOL
      ) return HRESULT is abstract;
   type IEnterpriseDropTarget_Ptr is access all IEnterpriseDropTarget'Class;
   type LPENUMOLEVERB is access all IEnumOLEVERB;
   type tagOLEVERB is record
      lVerb : LONG;
      lpszVerbName : LPOLESTR;
      fuFlags : DWORD;
      grfAttribs : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagOLEVERB);
   for tagOLEVERB use record
      lVerb at 0 range 0..31;
      lpszVerbName at 0 range 64..127;
      fuFlags at 0 range 128..159;
      grfAttribs at 0 range 160..191;
   end record;
   for tagOLEVERB'Size use 192;
   for tagOLEVERB'Alignment use 8;
   subtype OLEVERB is tagOLEVERB;
   type LPOLEVERB is access all tagOLEVERB;
   type tagOLEVERBATTRIB is (
      OLEVERBATTRIB_NEVERDIRTIES,
      OLEVERBATTRIB_ONCONTAINERMENU
   );
   for tagOLEVERBATTRIB use (
      OLEVERBATTRIB_NEVERDIRTIES => 1,
      OLEVERBATTRIB_ONCONTAINERMENU => 2
   );
   for tagOLEVERBATTRIB'Size use 32;
   subtype OLEVERBATTRIB is tagOLEVERBATTRIB;
   IID_IEnumOLEVERB : aliased constant IID;
   pragma import (C,IID_IEnumOLEVERB,"IID_IEnumOLEVERB");
   type IEnumOLEVERB is limited interface and IUnknown;
      function Next(
         This : access IEnumOLEVERB;
         celt : ULONG;
         rgelt : LPOLEVERB;
         pceltFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumOLEVERB;
         celt : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumOLEVERB) return HRESULT is abstract;
      function Clone(
         This : access IEnumOLEVERB;
         ppenum : access IEnumOLEVERB_Ptr
      ) return HRESULT is abstract;
   function IEnumOLEVERB_RemoteNext_Proxy(
      This : access IEnumOLEVERB'Class;
      celt : ULONG;
      rgelt : LPOLEVERB;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumOLEVERB_RemoteNext_Proxy,"IEnumOLEVERB_RemoteNext_Proxy");
   procedure IEnumOLEVERB_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumOLEVERB_RemoteNext_Stub,"IEnumOLEVERB_RemoteNext_Stub");
   function HACCEL_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HACCEL
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HACCEL_UserSize,"HACCEL_UserSize");
   function HACCEL_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HACCEL
   ) return access UCHAR;
   pragma import (Cpp,HACCEL_UserMarshal,"HACCEL_UserMarshal");
   function HACCEL_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HACCEL
   ) return access UCHAR;
   pragma import (Cpp,HACCEL_UserUnmarshal,"HACCEL_UserUnmarshal");
   procedure HACCEL_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HACCEL
   );
   pragma import (Cpp,HACCEL_UserFree,"HACCEL_UserFree");
   function HGLOBAL_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HGLOBAL
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HGLOBAL_UserSize,"HGLOBAL_UserSize");
   function HGLOBAL_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HGLOBAL
   ) return access UCHAR;
   pragma import (Cpp,HGLOBAL_UserMarshal,"HGLOBAL_UserMarshal");
   function HGLOBAL_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HGLOBAL
   ) return access UCHAR;
   pragma import (Cpp,HGLOBAL_UserUnmarshal,"HGLOBAL_UserUnmarshal");
   procedure HGLOBAL_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HGLOBAL
   );
   pragma import (Cpp,HGLOBAL_UserFree,"HGLOBAL_UserFree");
   function HMENU_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HMENU
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HMENU_UserSize,"HMENU_UserSize");
   function HMENU_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HMENU
   ) return access UCHAR;
   pragma import (Cpp,HMENU_UserMarshal,"HMENU_UserMarshal");
   function HMENU_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HMENU
   ) return access UCHAR;
   pragma import (Cpp,HMENU_UserUnmarshal,"HMENU_UserUnmarshal");
   procedure HMENU_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HMENU
   );
   pragma import (Cpp,HMENU_UserFree,"HMENU_UserFree");
   function HWND_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HWND
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HWND_UserSize,"HWND_UserSize");
   function HWND_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HWND
   ) return access UCHAR;
   pragma import (Cpp,HWND_UserMarshal,"HWND_UserMarshal");
   function HWND_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HWND
   ) return access UCHAR;
   pragma import (Cpp,HWND_UserUnmarshal,"HWND_UserUnmarshal");
   procedure HWND_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HWND
   );
   pragma import (Cpp,HWND_UserFree,"HWND_UserFree");
   function HACCEL_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HACCEL
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HACCEL_UserSize64,"HACCEL_UserSize64");
   function HACCEL_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HACCEL
   ) return access UCHAR;
   pragma import (Cpp,HACCEL_UserMarshal64,"HACCEL_UserMarshal64");
   function HACCEL_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HACCEL
   ) return access UCHAR;
   pragma import (Cpp,HACCEL_UserUnmarshal64,"HACCEL_UserUnmarshal64");
   procedure HACCEL_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HACCEL
   );
   pragma import (Cpp,HACCEL_UserFree64,"HACCEL_UserFree64");
   function HGLOBAL_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HGLOBAL
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HGLOBAL_UserSize64,"HGLOBAL_UserSize64");
   function HGLOBAL_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HGLOBAL
   ) return access UCHAR;
   pragma import (Cpp,HGLOBAL_UserMarshal64,"HGLOBAL_UserMarshal64");
   function HGLOBAL_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HGLOBAL
   ) return access UCHAR;
   pragma import (Cpp,HGLOBAL_UserUnmarshal64,"HGLOBAL_UserUnmarshal64");
   procedure HGLOBAL_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HGLOBAL
   );
   pragma import (Cpp,HGLOBAL_UserFree64,"HGLOBAL_UserFree64");
   function HMENU_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HMENU
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HMENU_UserSize64,"HMENU_UserSize64");
   function HMENU_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HMENU
   ) return access UCHAR;
   pragma import (Cpp,HMENU_UserMarshal64,"HMENU_UserMarshal64");
   function HMENU_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HMENU
   ) return access UCHAR;
   pragma import (Cpp,HMENU_UserUnmarshal64,"HMENU_UserUnmarshal64");
   procedure HMENU_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HMENU
   );
   pragma import (Cpp,HMENU_UserFree64,"HMENU_UserFree64");
   function HWND_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HWND
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HWND_UserSize64,"HWND_UserSize64");
   function HWND_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HWND
   ) return access UCHAR;
   pragma import (Cpp,HWND_UserMarshal64,"HWND_UserMarshal64");
   function HWND_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HWND
   ) return access UCHAR;
   pragma import (Cpp,HWND_UserUnmarshal64,"HWND_UserUnmarshal64");
   procedure HWND_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HWND
   );
   pragma import (Cpp,HWND_UserFree64,"HWND_UserFree64");
   function IOleCache2_UpdateCache_Proxy(
      This : access IOleCache2'Class;
      pDataObject : LPDATAOBJECT;
      grfUpdf : DWORD;
      pReserved : LPVOID
   ) return HRESULT;
   pragma import (Cpp,IOleCache2_UpdateCache_Proxy,"IOleCache2_UpdateCache_Proxy");
   function IOleCache2_UpdateCache_Stub(
      This : access IOleCache2'Class;
      pDataObject : LPDATAOBJECT;
      grfUpdf : DWORD;
      pReserved : LONG_PTR
   ) return HRESULT;
   pragma import (Cpp,IOleCache2_UpdateCache_Stub,"IOleCache2_UpdateCache_Stub");
   function IOleInPlaceActiveObject_TranslateAccelerator_Proxy(
      This : access IOleInPlaceActiveObject'Class;
      lpmsg_x : LPMSG
   ) return HRESULT;
   pragma import (Cpp,IOleInPlaceActiveObject_TranslateAccelerator_Proxy,"IOleInPlaceActiveObject_TranslateAccelerator_Proxy");
   function IOleInPlaceActiveObject_TranslateAccelerator_Stub(
      This : access IOleInPlaceActiveObject'Class
   ) return HRESULT;
   pragma import (Cpp,IOleInPlaceActiveObject_TranslateAccelerator_Stub,"IOleInPlaceActiveObject_TranslateAccelerator_Stub");
   function IOleInPlaceActiveObject_ResizeBorder_Proxy(
      This : access IOleInPlaceActiveObject'Class;
      prcBorder : LPCRECT;
      pUIWindow : access IOleInPlaceUIWindow'Class;
      fFrameWindow : BOOL
   ) return HRESULT;
   pragma import (Cpp,IOleInPlaceActiveObject_ResizeBorder_Proxy,"IOleInPlaceActiveObject_ResizeBorder_Proxy");
   function IOleInPlaceActiveObject_ResizeBorder_Stub(
      This : access IOleInPlaceActiveObject'Class;
      prcBorder : LPCRECT;
      riid : access constant IID;
      pUIWindow : access IOleInPlaceUIWindow'Class;
      fFrameWindow : BOOL
   ) return HRESULT;
   pragma import (Cpp,IOleInPlaceActiveObject_ResizeBorder_Stub,"IOleInPlaceActiveObject_ResizeBorder_Stub");
   function IViewObject_Draw_Proxy(
      This : access IViewObject'Class;
      dwDrawAspect : DWORD;
      lindex : LONG;
      pvAspect : access Void;
      ptd : access DVTARGETDEVICE;
      hdcTargetDev : HDC;
      hdcDraw : HDC;
      lprcBounds : LPCRECTL;
      lprcWBounds : LPCRECTL;
      pfnContinue : access System.Address;
      dwContinue : ULONG_PTR
   ) return HRESULT;
   pragma import (Cpp,IViewObject_Draw_Proxy,"IViewObject_Draw_Proxy");
   function IViewObject_Draw_Stub(
      This : access IViewObject'Class;
      dwDrawAspect : DWORD;
      lindex : LONG;
      pvAspect : ULONG_PTR;
      ptd : access DVTARGETDEVICE;
      hdcTargetDev : HDC;
      hdcDraw : HDC;
      lprcBounds : LPCRECTL;
      lprcWBounds : LPCRECTL;
      pContinue : access IContinue'Class
   ) return HRESULT;
   pragma import (Cpp,IViewObject_Draw_Stub,"IViewObject_Draw_Stub");
   function IViewObject_GetColorSet_Proxy(
      This : access IViewObject'Class;
      dwDrawAspect : DWORD;
      lindex : LONG;
      pvAspect : access Void;
      ptd : access DVTARGETDEVICE;
      hicTargetDev : HDC;
      ppColorSet : access LOGPALETTE_Ptr
   ) return HRESULT;
   pragma import (Cpp,IViewObject_GetColorSet_Proxy,"IViewObject_GetColorSet_Proxy");
   function IViewObject_GetColorSet_Stub(
      This : access IViewObject'Class;
      dwDrawAspect : DWORD;
      lindex : LONG;
      pvAspect : ULONG_PTR;
      ptd : access DVTARGETDEVICE;
      hicTargetDev : ULONG_PTR;
      ppColorSet : access LOGPALETTE_Ptr
   ) return HRESULT;
   pragma import (Cpp,IViewObject_GetColorSet_Stub,"IViewObject_GetColorSet_Stub");
   function IViewObject_Freeze_Proxy(
      This : access IViewObject'Class;
      dwDrawAspect : DWORD;
      lindex : LONG;
      pvAspect : access Void;
      pdwFreeze : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IViewObject_Freeze_Proxy,"IViewObject_Freeze_Proxy");
   function IViewObject_Freeze_Stub(
      This : access IViewObject'Class;
      dwDrawAspect : DWORD;
      lindex : LONG;
      pvAspect : ULONG_PTR;
      pdwFreeze : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IViewObject_Freeze_Stub,"IViewObject_Freeze_Stub");
   function IViewObject_GetAdvise_Proxy(
      This : access IViewObject'Class;
      pAspects : access DWORD;
      pAdvf : access DWORD;
      ppAdvSink : access IAdviseSink_Ptr
   ) return HRESULT;
   pragma import (Cpp,IViewObject_GetAdvise_Proxy,"IViewObject_GetAdvise_Proxy");
   function IViewObject_GetAdvise_Stub(
      This : access IViewObject'Class;
      pAspects : access DWORD;
      pAdvf : access DWORD;
      ppAdvSink : access IAdviseSink_Ptr
   ) return HRESULT;
   pragma import (Cpp,IViewObject_GetAdvise_Stub,"IViewObject_GetAdvise_Stub");
   function IEnumOLEVERB_Next_Proxy(
      This : access IEnumOLEVERB'Class;
      celt : ULONG;
      rgelt : LPOLEVERB;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumOLEVERB_Next_Proxy,"IEnumOLEVERB_Next_Proxy");
   function IEnumOLEVERB_Next_Stub(
      This : access IEnumOLEVERB'Class;
      celt : ULONG;
      rgelt : LPOLEVERB;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumOLEVERB_Next_Stub,"IEnumOLEVERB_Next_Stub");
   -- #include <servprov.h>
   type IServiceProvider;
   type LPSERVICEPROVIDER is access all IServiceProvider;
   IID_IServiceProvider : aliased constant IID;
   pragma import (C,IID_IServiceProvider,"IID_IServiceProvider");
   type IServiceProvider is limited interface and IUnknown;
      function QueryService(
         This : access IServiceProvider;
         guidService : access constant GUID;
         riid : access constant IID;
         ppvObject : access LPVOID
      ) return HRESULT is abstract;
   type IServiceProvider_Ptr is access all IServiceProvider'Class;
   function IServiceProvider_RemoteQueryService_Proxy(
      This : access IServiceProvider'Class;
      guidService : access constant GUID;
      riid : access constant IID;
      ppvObject : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IServiceProvider_RemoteQueryService_Proxy,"IServiceProvider_RemoteQueryService_Proxy");
   procedure IServiceProvider_RemoteQueryService_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IServiceProvider_RemoteQueryService_Stub,"IServiceProvider_RemoteQueryService_Stub");
   function IServiceProvider_QueryService_Proxy(
      This : access IServiceProvider'Class;
      guidService : access constant GUID;
      riid : access constant IID;
      ppvObject : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,IServiceProvider_QueryService_Proxy,"IServiceProvider_QueryService_Proxy");
   function IServiceProvider_QueryService_Stub(
      This : access IServiceProvider'Class;
      guidService : access constant GUID;
      riid : access constant IID;
      ppvObject : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IServiceProvider_QueryService_Stub,"IServiceProvider_QueryService_Stub");
   -- #include <msxml.h>
   type IXMLDOMImplementation;
   type IXMLDOMNode;
   type IXMLDOMDocumentFragment;
   type IXMLDOMDocument;
   type IXMLDOMNodeList;
   type IXMLDOMNamedNodeMap;
   type IXMLDOMCharacterData;
   type IXMLDOMAttribute;
   type IXMLDOMElement;
   type IXMLDOMText;
   type IXMLDOMComment;
   type IXMLDOMProcessingInstruction;
   type IXMLDOMCDATASection;
   type IXMLDOMDocumentType;
   type IXMLDOMNotation;
   type IXMLDOMEntity;
   type IXMLDOMEntityReference;
   type IXMLDOMParseError;
   type IXTLRuntime;
   type XMLDOMDocumentEvents;
   type IXMLHttpRequest;
   type IXMLDSOControl;
   type IXMLElementCollection;
   type IXMLDocument;
   type IXMLDocument2;
   type IXMLElement;
   type IXMLElement2;
   type IXMLAttribute;
   type IXMLError;
   type xml_error_x is record
      nLine : Interfaces.C.unsigned;
      pchBuf : BSTR;
      cchBuf : Interfaces.C.unsigned;
      ich : Interfaces.C.unsigned;
      pszFound : BSTR;
      pszExpected : BSTR;
      reserved1 : DWORD;
      reserved2 : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,xml_error_x);
   for xml_error_x use record
      nLine at 0 range 0..31;
      pchBuf at 0 range 64..127;
      cchBuf at 0 range 128..159;
      ich at 0 range 160..191;
      pszFound at 0 range 192..255;
      pszExpected at 0 range 256..319;
      reserved1 at 0 range 320..351;
      reserved2 at 0 range 352..383;
   end record;
   for xml_error_x'Size use 384;
   for xml_error_x'Alignment use 8;
   subtype XML_ERROR is xml_error_x;
   type tagDOMNodeType is (
      NODE_INVALID,
      NODE_ELEMENT,
      NODE_ATTRIBUTE,
      NODE_TEXT,
      NODE_CDATA_SECTION,
      NODE_ENTITY_REFERENCE,
      NODE_ENTITY,
      NODE_PROCESSING_INSTRUCTION,
      NODE_COMMENT,
      NODE_DOCUMENT,
      NODE_DOCUMENT_TYPE,
      NODE_DOCUMENT_FRAGMENT,
      NODE_NOTATION
   );
   for tagDOMNodeType use (
      NODE_INVALID => 0,
      NODE_ELEMENT => 1,
      NODE_ATTRIBUTE => 2,
      NODE_TEXT => 3,
      NODE_CDATA_SECTION => 4,
      NODE_ENTITY_REFERENCE => 5,
      NODE_ENTITY => 6,
      NODE_PROCESSING_INSTRUCTION => 7,
      NODE_COMMENT => 8,
      NODE_DOCUMENT => 9,
      NODE_DOCUMENT_TYPE => 10,
      NODE_DOCUMENT_FRAGMENT => 11,
      NODE_NOTATION => 12
   );
   for tagDOMNodeType'Size use 32;
   subtype DOMNodeType is tagDOMNodeType;
   type tagXMLEMEM_TYPE is (
      XMLELEMTYPE_ELEMENT,
      XMLELEMTYPE_TEXT,
      XMLELEMTYPE_COMMENT,
      XMLELEMTYPE_DOCUMENT,
      XMLELEMTYPE_DTD,
      XMLELEMTYPE_PI,
      XMLELEMTYPE_OTHER
   );
   for tagXMLEMEM_TYPE use (
      XMLELEMTYPE_ELEMENT => 0,
      XMLELEMTYPE_TEXT => 1,
      XMLELEMTYPE_COMMENT => 2,
      XMLELEMTYPE_DOCUMENT => 3,
      XMLELEMTYPE_DTD => 4,
      XMLELEMTYPE_PI => 5,
      XMLELEMTYPE_OTHER => 6
   );
   for tagXMLEMEM_TYPE'Size use 32;
   subtype XMLELEM_TYPE is tagXMLEMEM_TYPE;
   IID_IXMLDOMImplementation : aliased constant IID;
   pragma import (C,IID_IXMLDOMImplementation,"IID_IXMLDOMImplementation");
   type IXMLDOMImplementation is limited interface and IDispatch;
      function hasFeature(
         This : access IXMLDOMImplementation;
         feature : BSTR;
         version : BSTR;
         hasFeature : access VARIANT_BOOL
      ) return HRESULT is abstract;
   type IXMLDOMImplementation_Ptr is access all IXMLDOMImplementation'Class;
   IID_IXMLDOMNode : aliased constant IID;
   pragma import (C,IID_IXMLDOMNode,"IID_IXMLDOMNode");
   type IXMLDOMNode_Ptr is access all IXMLDOMNode; -- Auto Generated Dependancy
   type IXMLDOMNodeList_Ptr is access all IXMLDOMNodeList; -- Auto Generated Dependancy
   type IXMLDOMNamedNodeMap_Ptr is access all IXMLDOMNamedNodeMap; -- Auto Generated Dependancy
   type IXMLDOMDocument_Ptr is access all IXMLDOMDocument; -- Auto Generated Dependancy
   type IXMLDOMNode is limited interface and IDispatch;
      function get_nodeName(
         This : access IXMLDOMNode;
         name : access BSTR
      ) return HRESULT is abstract;
      function get_nodeValue(
         This : access IXMLDOMNode;
         value : access VARIANT
      ) return HRESULT is abstract;
      function put_nodeValue(
         This : access IXMLDOMNode;
         value : VARIANT
      ) return HRESULT is abstract;
      function get_nodeType(
         This : access IXMLDOMNode;
         type_x : access DOMNodeType
      ) return HRESULT is abstract;
      function get_parentNode(
         This : access IXMLDOMNode;
         parent : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function get_childNodes(
         This : access IXMLDOMNode;
         childList : access IXMLDOMNodeList_Ptr
      ) return HRESULT is abstract;
      function get_firstChild(
         This : access IXMLDOMNode;
         firstChild : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function get_lastChild(
         This : access IXMLDOMNode;
         lastChild : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function get_previousSibling(
         This : access IXMLDOMNode;
         previousSibling : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function get_nextSibling(
         This : access IXMLDOMNode;
         nextSibling : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function get_attributes(
         This : access IXMLDOMNode;
         attributeMap : access IXMLDOMNamedNodeMap_Ptr
      ) return HRESULT is abstract;
      function insertBefore(
         This : access IXMLDOMNode;
         newChild : access IXMLDOMNode'Class;
         refChild : VARIANT;
         outNewChild : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function replaceChild(
         This : access IXMLDOMNode;
         newChild : access IXMLDOMNode'Class;
         oldChild : access IXMLDOMNode'Class;
         outOldChild : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function removeChild(
         This : access IXMLDOMNode;
         childNode : access IXMLDOMNode'Class;
         oldChild : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function appendChild(
         This : access IXMLDOMNode;
         newChild : access IXMLDOMNode'Class;
         outNewChild : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function hasChildNodes(
         This : access IXMLDOMNode;
         hasChild : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function get_ownerDocument(
         This : access IXMLDOMNode;
         XMLDOMDocument : access IXMLDOMDocument_Ptr
      ) return HRESULT is abstract;
      function cloneNode(
         This : access IXMLDOMNode;
         deep : VARIANT_BOOL;
         cloneRoot : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function get_nodeTypeString(
         This : access IXMLDOMNode;
         nodeType : access BSTR
      ) return HRESULT is abstract;
      function get_text(
         This : access IXMLDOMNode;
         text : access BSTR
      ) return HRESULT is abstract;
      function put_text(
         This : access IXMLDOMNode;
         text : BSTR
      ) return HRESULT is abstract;
      function get_specified(
         This : access IXMLDOMNode;
         isSpecified : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function get_definition(
         This : access IXMLDOMNode;
         definitionNode : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function get_nodeTypedValue(
         This : access IXMLDOMNode;
         typedValue : access VARIANT
      ) return HRESULT is abstract;
      function put_nodeTypedValue(
         This : access IXMLDOMNode;
         typedValue : VARIANT
      ) return HRESULT is abstract;
      function get_dataType(
         This : access IXMLDOMNode;
         dataTypeName : access VARIANT
      ) return HRESULT is abstract;
      function put_dataType(
         This : access IXMLDOMNode;
         dataTypeName : BSTR
      ) return HRESULT is abstract;
      function get_xml(
         This : access IXMLDOMNode;
         xmlString : access BSTR
      ) return HRESULT is abstract;
      function transformNode(
         This : access IXMLDOMNode;
         stylesheet : access IXMLDOMNode'Class;
         xmlString : access BSTR
      ) return HRESULT is abstract;
      function selectNodes(
         This : access IXMLDOMNode;
         queryString : BSTR;
         resultList : access IXMLDOMNodeList_Ptr
      ) return HRESULT is abstract;
      function selectSingleNode(
         This : access IXMLDOMNode;
         queryString : BSTR;
         resultNode : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function get_parsed(
         This : access IXMLDOMNode;
         isParsed : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function get_namespaceURI(
         This : access IXMLDOMNode;
         namespaceURI : access BSTR
      ) return HRESULT is abstract;
      function get_prefix(
         This : access IXMLDOMNode;
         prefixString : access BSTR
      ) return HRESULT is abstract;
      function get_baseName(
         This : access IXMLDOMNode;
         nameString : access BSTR
      ) return HRESULT is abstract;
      function transformNodeToObject(
         This : access IXMLDOMNode;
         stylesheet : access IXMLDOMNode'Class;
         outputObject : VARIANT
      ) return HRESULT is abstract;
   IID_IXMLDOMDocumentFragment : aliased constant IID;
   pragma import (C,IID_IXMLDOMDocumentFragment,"IID_IXMLDOMDocumentFragment");
   IID_IXMLDOMDocument : aliased constant IID;
   pragma import (C,IID_IXMLDOMDocument,"IID_IXMLDOMDocument");
   type IXMLDOMDocumentType_Ptr is access all IXMLDOMDocumentType; -- Auto Generated Dependancy
   type IXMLDOMElement_Ptr is access all IXMLDOMElement; -- Auto Generated Dependancy
   type IXMLDOMDocumentFragment_Ptr is access all IXMLDOMDocumentFragment; -- Auto Generated Dependancy
   type IXMLDOMText_Ptr is access all IXMLDOMText; -- Auto Generated Dependancy
   type IXMLDOMComment_Ptr is access all IXMLDOMComment; -- Auto Generated Dependancy
   type IXMLDOMCDATASection_Ptr is access all IXMLDOMCDATASection; -- Auto Generated Dependancy
   type IXMLDOMProcessingInstruction_Ptr is access all IXMLDOMProcessingInstruction; -- Auto Generated Dependancy
   type IXMLDOMAttribute_Ptr is access all IXMLDOMAttribute; -- Auto Generated Dependancy
   type IXMLDOMEntityReference_Ptr is access all IXMLDOMEntityReference; -- Auto Generated Dependancy
   type IXMLDOMParseError_Ptr is access all IXMLDOMParseError; -- Auto Generated Dependancy
   type IXMLDOMDocument is limited interface and IXMLDOMNode;
      function get_doctype(
         This : access IXMLDOMDocument;
         documentType : access IXMLDOMDocumentType_Ptr
      ) return HRESULT is abstract;
      function get_implementation(
         This : access IXMLDOMDocument;
         impl : access IXMLDOMImplementation_Ptr
      ) return HRESULT is abstract;
      function get_documentElement(
         This : access IXMLDOMDocument;
         DOMElement : access IXMLDOMElement_Ptr
      ) return HRESULT is abstract;
      function putref_documentElement(
         This : access IXMLDOMDocument;
         DOMElement : access IXMLDOMElement'Class
      ) return HRESULT is abstract;
      function createElement(
         This : access IXMLDOMDocument;
         tagName : BSTR;
         element : access IXMLDOMElement_Ptr
      ) return HRESULT is abstract;
      function createDocumentFragment(
         This : access IXMLDOMDocument;
         docFrag : access IXMLDOMDocumentFragment_Ptr
      ) return HRESULT is abstract;
      function createTextNode(
         This : access IXMLDOMDocument;
         data : BSTR;
         text : access IXMLDOMText_Ptr
      ) return HRESULT is abstract;
      function createComment(
         This : access IXMLDOMDocument;
         data : BSTR;
         comment : access IXMLDOMComment_Ptr
      ) return HRESULT is abstract;
      function createCDATASection(
         This : access IXMLDOMDocument;
         data : BSTR;
         cdata : access IXMLDOMCDATASection_Ptr
      ) return HRESULT is abstract;
      function createProcessingInstruction(
         This : access IXMLDOMDocument;
         target : BSTR;
         data : BSTR;
         pi : access IXMLDOMProcessingInstruction_Ptr
      ) return HRESULT is abstract;
      function createAttribute(
         This : access IXMLDOMDocument;
         name : BSTR;
         attribute : access IXMLDOMAttribute_Ptr
      ) return HRESULT is abstract;
      function createEntityReference(
         This : access IXMLDOMDocument;
         name : BSTR;
         entityRef : access IXMLDOMEntityReference_Ptr
      ) return HRESULT is abstract;
      function getElementsByTagName(
         This : access IXMLDOMDocument;
         tagName : BSTR;
         resultList : access IXMLDOMNodeList_Ptr
      ) return HRESULT is abstract;
      function createNode(
         This : access IXMLDOMDocument;
         type_x : VARIANT;
         name : BSTR;
         namespaceURI : BSTR;
         node : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function nodeFromID(
         This : access IXMLDOMDocument;
         idString : BSTR;
         node : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function load(
         This : access IXMLDOMDocument;
         xmlSource : VARIANT;
         isSuccessful : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function get_readyState(
         This : access IXMLDOMDocument;
         value : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_parseError(
         This : access IXMLDOMDocument;
         errorObj : access IXMLDOMParseError_Ptr
      ) return HRESULT is abstract;
      function get_url(
         This : access IXMLDOMDocument;
         urlString : access BSTR
      ) return HRESULT is abstract;
      function get_async(
         This : access IXMLDOMDocument;
         isAsync : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function put_async(
         This : access IXMLDOMDocument;
         isAsync : VARIANT_BOOL
      ) return HRESULT is abstract;
      function abort_x_x(This : access IXMLDOMDocument) return HRESULT is abstract;
      function loadXML(
         This : access IXMLDOMDocument;
         bstrXML : BSTR;
         isSuccessful : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function save(
         This : access IXMLDOMDocument;
         destination : VARIANT
      ) return HRESULT is abstract;
      function get_validateOnParse(
         This : access IXMLDOMDocument;
         isValidating : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function put_validateOnParse(
         This : access IXMLDOMDocument;
         isValidating : VARIANT_BOOL
      ) return HRESULT is abstract;
      function get_resolveExternals(
         This : access IXMLDOMDocument;
         isResolving : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function put_resolveExternals(
         This : access IXMLDOMDocument;
         isResolving : VARIANT_BOOL
      ) return HRESULT is abstract;
      function get_preserveWhiteSpace(
         This : access IXMLDOMDocument;
         isPreserving : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function put_preserveWhiteSpace(
         This : access IXMLDOMDocument;
         isPreserving : VARIANT_BOOL
      ) return HRESULT is abstract;
      function put_onreadystatechange(
         This : access IXMLDOMDocument;
         readystatechangeSink : VARIANT
      ) return HRESULT is abstract;
      function put_ondataavailable(
         This : access IXMLDOMDocument;
         ondataavailableSink : VARIANT
      ) return HRESULT is abstract;
      function put_ontransformnode(
         This : access IXMLDOMDocument;
         ontransformnodeSink : VARIANT
      ) return HRESULT is abstract;
   IID_IXMLDOMNodeList : aliased constant IID;
   pragma import (C,IID_IXMLDOMNodeList,"IID_IXMLDOMNodeList");
   type IXMLDOMNodeList is limited interface and IDispatch;
      function get_item(
         This : access IXMLDOMNodeList;
         index : Interfaces.C.Long;
         listItem : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function get_length(
         This : access IXMLDOMNodeList;
         listLength : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function nextNode(
         This : access IXMLDOMNodeList;
         nextItem : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function reset(This : access IXMLDOMNodeList) return HRESULT is abstract;
      function get_newEnum(
         This : access IXMLDOMNodeList;
         ppUnk : access IUnknown_Ptr
      ) return HRESULT is abstract;
   IID_IXMLDOMNamedNodeMap : aliased constant IID;
   pragma import (C,IID_IXMLDOMNamedNodeMap,"IID_IXMLDOMNamedNodeMap");
   type IXMLDOMNamedNodeMap is limited interface and IDispatch;
      function getNamedItem(
         This : access IXMLDOMNamedNodeMap;
         name : BSTR;
         namedItem : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function setNamedItem(
         This : access IXMLDOMNamedNodeMap;
         newItem : access IXMLDOMNode'Class;
         nameItem : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function removeNamedItem(
         This : access IXMLDOMNamedNodeMap;
         name : BSTR;
         namedItem : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function get_item(
         This : access IXMLDOMNamedNodeMap;
         index : Interfaces.C.Long;
         listItem : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function get_length(
         This : access IXMLDOMNamedNodeMap;
         listLength : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function getQualifiedItem(
         This : access IXMLDOMNamedNodeMap;
         baseName : BSTR;
         namespaceURI : BSTR;
         qualifiedItem : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function removeQualifiedItem(
         This : access IXMLDOMNamedNodeMap;
         baseName : BSTR;
         namespaceURI : BSTR;
         qualifiedItem : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function nextNode(
         This : access IXMLDOMNamedNodeMap;
         nextItem : access IXMLDOMNode_Ptr
      ) return HRESULT is abstract;
      function reset(This : access IXMLDOMNamedNodeMap) return HRESULT is abstract;
      function get_newEnum(
         This : access IXMLDOMNamedNodeMap;
         ppUnk : access IUnknown_Ptr
      ) return HRESULT is abstract;
   IID_IXMLDOMCharacterData : aliased constant IID;
   pragma import (C,IID_IXMLDOMCharacterData,"IID_IXMLDOMCharacterData");
   type IXMLDOMCharacterData is limited interface and IXMLDOMNode;
      function get_data(
         This : access IXMLDOMCharacterData;
         data : access BSTR
      ) return HRESULT is abstract;
      function put_data(
         This : access IXMLDOMCharacterData;
         data : BSTR
      ) return HRESULT is abstract;
      function get_length(
         This : access IXMLDOMCharacterData;
         dataLength : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function substringData(
         This : access IXMLDOMCharacterData;
         offset : Interfaces.C.Long;
         count : Interfaces.C.Long;
         data : access BSTR
      ) return HRESULT is abstract;
      function appendData(
         This : access IXMLDOMCharacterData;
         data : BSTR
      ) return HRESULT is abstract;
      function insertData(
         This : access IXMLDOMCharacterData;
         offset : Interfaces.C.Long;
         data : BSTR
      ) return HRESULT is abstract;
      function deleteData(
         This : access IXMLDOMCharacterData;
         offset : Interfaces.C.Long;
         count : Interfaces.C.Long
      ) return HRESULT is abstract;
      function replaceData(
         This : access IXMLDOMCharacterData;
         offset : Interfaces.C.Long;
         count : Interfaces.C.Long;
         data : BSTR
      ) return HRESULT is abstract;
   type IXMLDOMCharacterData_Ptr is access all IXMLDOMCharacterData'Class;
   IID_IXMLDOMAttribute : aliased constant IID;
   pragma import (C,IID_IXMLDOMAttribute,"IID_IXMLDOMAttribute");
   type IXMLDOMAttribute is limited interface and IXMLDOMNode;
      function get_name(
         This : access IXMLDOMAttribute;
         attributeName : access BSTR
      ) return HRESULT is abstract;
      function get_value(
         This : access IXMLDOMAttribute;
         attributeValue : access VARIANT
      ) return HRESULT is abstract;
      function put_value(
         This : access IXMLDOMAttribute;
         attributeValue : VARIANT
      ) return HRESULT is abstract;
   IID_IXMLDOMElement : aliased constant IID;
   pragma import (C,IID_IXMLDOMElement,"IID_IXMLDOMElement");
   type IXMLDOMElement is limited interface and IXMLDOMNode;
      function get_tagName(
         This : access IXMLDOMElement;
         tagName : access BSTR
      ) return HRESULT is abstract;
      function getAttribute(
         This : access IXMLDOMElement;
         name : BSTR;
         value : access VARIANT
      ) return HRESULT is abstract;
      function setAttribute(
         This : access IXMLDOMElement;
         name : BSTR;
         value : VARIANT
      ) return HRESULT is abstract;
      function removeAttribute(
         This : access IXMLDOMElement;
         name : BSTR
      ) return HRESULT is abstract;
      function getAttributeNode(
         This : access IXMLDOMElement;
         name : BSTR;
         attributeNode : access IXMLDOMAttribute_Ptr
      ) return HRESULT is abstract;
      function setAttributeNode(
         This : access IXMLDOMElement;
         DOMAttribute : access IXMLDOMAttribute'Class;
         attributeNode : access IXMLDOMAttribute_Ptr
      ) return HRESULT is abstract;
      function removeAttributeNode(
         This : access IXMLDOMElement;
         DOMAttribute : access IXMLDOMAttribute'Class;
         attributeNode : access IXMLDOMAttribute_Ptr
      ) return HRESULT is abstract;
      function getElementsByTagName(
         This : access IXMLDOMElement;
         tagName : BSTR;
         resultList : access IXMLDOMNodeList_Ptr
      ) return HRESULT is abstract;
      function normalize(This : access IXMLDOMElement) return HRESULT is abstract;
   IID_IXMLDOMText : aliased constant IID;
   pragma import (C,IID_IXMLDOMText,"IID_IXMLDOMText");
   type IXMLDOMText is limited interface and IXMLDOMCharacterData;
      function splitText(
         This : access IXMLDOMText;
         offset : Interfaces.C.Long;
         rightHandTextNode : access IXMLDOMText_Ptr
      ) return HRESULT is abstract;
   IID_IXMLDOMComment : aliased constant IID;
   pragma import (C,IID_IXMLDOMComment,"IID_IXMLDOMComment");
   IID_IXMLDOMProcessingInstruction : aliased constant IID;
   pragma import (C,IID_IXMLDOMProcessingInstruction,"IID_IXMLDOMProcessingInstruction");
   type IXMLDOMProcessingInstruction is limited interface and IXMLDOMNode;
      function get_target(
         This : access IXMLDOMProcessingInstruction;
         name : access BSTR
      ) return HRESULT is abstract;
      function get_data(
         This : access IXMLDOMProcessingInstruction;
         value : access BSTR
      ) return HRESULT is abstract;
      function put_data(
         This : access IXMLDOMProcessingInstruction;
         value : BSTR
      ) return HRESULT is abstract;
   IID_IXMLDOMCDATASection : aliased constant IID;
   pragma import (C,IID_IXMLDOMCDATASection,"IID_IXMLDOMCDATASection");
   IID_IXMLDOMDocumentType : aliased constant IID;
   pragma import (C,IID_IXMLDOMDocumentType,"IID_IXMLDOMDocumentType");
   type IXMLDOMDocumentType is limited interface and IXMLDOMNode;
      function get_name(
         This : access IXMLDOMDocumentType;
         rootName : access BSTR
      ) return HRESULT is abstract;
      function get_entities(
         This : access IXMLDOMDocumentType;
         entityMap : access IXMLDOMNamedNodeMap_Ptr
      ) return HRESULT is abstract;
      function get_notations(
         This : access IXMLDOMDocumentType;
         notationMap : access IXMLDOMNamedNodeMap_Ptr
      ) return HRESULT is abstract;
   IID_IXMLDOMNotation : aliased constant IID;
   pragma import (C,IID_IXMLDOMNotation,"IID_IXMLDOMNotation");
   type IXMLDOMNotation is limited interface and IXMLDOMNode;
      function get_publicId(
         This : access IXMLDOMNotation;
         publicID : access VARIANT
      ) return HRESULT is abstract;
      function get_systemId(
         This : access IXMLDOMNotation;
         systemID : access VARIANT
      ) return HRESULT is abstract;
   type IXMLDOMNotation_Ptr is access all IXMLDOMNotation'Class;
   IID_IXMLDOMEntity : aliased constant IID;
   pragma import (C,IID_IXMLDOMEntity,"IID_IXMLDOMEntity");
   type IXMLDOMEntity is limited interface and IXMLDOMNode;
      function get_publicId(
         This : access IXMLDOMEntity;
         publicID : access VARIANT
      ) return HRESULT is abstract;
      function get_systemId(
         This : access IXMLDOMEntity;
         systemID : access VARIANT
      ) return HRESULT is abstract;
      function get_notationName(
         This : access IXMLDOMEntity;
         name : access BSTR
      ) return HRESULT is abstract;
   type IXMLDOMEntity_Ptr is access all IXMLDOMEntity'Class;
   IID_IXMLDOMEntityReference : aliased constant IID;
   pragma import (C,IID_IXMLDOMEntityReference,"IID_IXMLDOMEntityReference");
   IID_IXMLDOMParseError : aliased constant IID;
   pragma import (C,IID_IXMLDOMParseError,"IID_IXMLDOMParseError");
   type IXMLDOMParseError is limited interface and IDispatch;
      function get_errorCode(
         This : access IXMLDOMParseError;
         errorCode : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_url(
         This : access IXMLDOMParseError;
         urlString : access BSTR
      ) return HRESULT is abstract;
      function get_reason(
         This : access IXMLDOMParseError;
         reasonString : access BSTR
      ) return HRESULT is abstract;
      function get_srcText(
         This : access IXMLDOMParseError;
         sourceString : access BSTR
      ) return HRESULT is abstract;
      function get_line(
         This : access IXMLDOMParseError;
         lineNumber : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_linepos(
         This : access IXMLDOMParseError;
         linePosition : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_filepos(
         This : access IXMLDOMParseError;
         filePosition : access Interfaces.C.Long
      ) return HRESULT is abstract;
   IID_IXTLRuntime : aliased constant IID;
   pragma import (C,IID_IXTLRuntime,"IID_IXTLRuntime");
   type IXTLRuntime is limited interface and IXMLDOMNode;
      function uniqueID(
         This : access IXTLRuntime;
         pNode : access IXMLDOMNode'Class;
         pID : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function depth(
         This : access IXTLRuntime;
         pNode : access IXMLDOMNode'Class;
         pDepth : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function childNumber(
         This : access IXTLRuntime;
         pNode : access IXMLDOMNode'Class;
         pNumber : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function ancestorChildNumber(
         This : access IXTLRuntime;
         bstrNodeName : BSTR;
         pNode : access IXMLDOMNode'Class;
         pNumber : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function absoluteChildNumber(
         This : access IXTLRuntime;
         pNode : access IXMLDOMNode'Class;
         pNumber : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function formatIndex(
         This : access IXTLRuntime;
         lIndex : Interfaces.C.Long;
         bstrFormat : BSTR;
         pbstrFormattedString : access BSTR
      ) return HRESULT is abstract;
      function formatNumber(
         This : access IXTLRuntime;
         dblNumber : Long_Float;
         bstrFormat : BSTR;
         pbstrFormattedString : access BSTR
      ) return HRESULT is abstract;
      function formatDate(
         This : access IXTLRuntime;
         varDate : VARIANT;
         bstrFormat : BSTR;
         varDestLocale : VARIANT;
         pbstrFormattedString : access BSTR
      ) return HRESULT is abstract;
      function formatTime(
         This : access IXTLRuntime;
         varTime : VARIANT;
         bstrFormat : BSTR;
         varDestLocale : VARIANT;
         pbstrFormattedString : access BSTR
      ) return HRESULT is abstract;
   type IXTLRuntime_Ptr is access all IXTLRuntime'Class;
   IID_IXMLHttpRequest : aliased constant IID;
   pragma import (C,IID_IXMLHttpRequest,"IID_IXMLHttpRequest");
   type IXMLHttpRequest is limited interface and IDispatch;
      function open(
         This : access IXMLHttpRequest;
         bstrMethod : BSTR;
         bstrUrl : BSTR;
         varAsync : VARIANT;
         bstrUser : VARIANT;
         bstrPassword : VARIANT
      ) return HRESULT is abstract;
      function setRequestHeader(
         This : access IXMLHttpRequest;
         bstrHeader : BSTR;
         bstrValue : BSTR
      ) return HRESULT is abstract;
      function getResponseHeader(
         This : access IXMLHttpRequest;
         bstrHeader : BSTR;
         pbstrValue : access BSTR
      ) return HRESULT is abstract;
      function getAllResponseHeaders(
         This : access IXMLHttpRequest;
         pbstrHeaders : access BSTR
      ) return HRESULT is abstract;
      function send_x(
         This : access IXMLHttpRequest;
         varBody : VARIANT
      ) return HRESULT is abstract;
      function abort_x_x(This : access IXMLHttpRequest) return HRESULT is abstract;
      function get_status(
         This : access IXMLHttpRequest;
         plStatus : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_statusText(
         This : access IXMLHttpRequest;
         pbstrStatus : access BSTR
      ) return HRESULT is abstract;
      function get_responseXML(
         This : access IXMLHttpRequest;
         ppBody : access IDispatch_Ptr
      ) return HRESULT is abstract;
      function get_responseText(
         This : access IXMLHttpRequest;
         pbstrBody : access BSTR
      ) return HRESULT is abstract;
      function get_responseBody(
         This : access IXMLHttpRequest;
         pvarBody : access VARIANT
      ) return HRESULT is abstract;
      function get_responseStream(
         This : access IXMLHttpRequest;
         pvarBody : access VARIANT
      ) return HRESULT is abstract;
      function get_readyState(
         This : access IXMLHttpRequest;
         plState : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function put_onreadystatechange(
         This : access IXMLHttpRequest;
         pReadyStateSink : access IDispatch'Class
      ) return HRESULT is abstract;
   type IXMLHttpRequest_Ptr is access all IXMLHttpRequest'Class;
   IID_IXMLDSOControl : aliased constant IID;
   pragma import (C,IID_IXMLDSOControl,"IID_IXMLDSOControl");
   type IXMLDSOControl is limited interface and IDispatch;
      function get_XMLDocument(
         This : access IXMLDSOControl;
         ppDoc : access IXMLDOMDocument_Ptr
      ) return HRESULT is abstract;
      function put_XMLDocument(
         This : access IXMLDSOControl;
         ppDoc : access IXMLDOMDocument'Class
      ) return HRESULT is abstract;
      function get_JavaDSOCompatible(
         This : access IXMLDSOControl;
         fJavaDSOCompatible : access BOOL
      ) return HRESULT is abstract;
      function put_JavaDSOCompatible(
         This : access IXMLDSOControl;
         fJavaDSOCompatible : BOOL
      ) return HRESULT is abstract;
      function get_readyState(
         This : access IXMLDSOControl;
         state : access Interfaces.C.Long
      ) return HRESULT is abstract;
   type IXMLDSOControl_Ptr is access all IXMLDSOControl'Class;
   IID_IXMLElementCollection : aliased constant IID;
   pragma import (C,IID_IXMLElementCollection,"IID_IXMLElementCollection");
   type IXMLElementCollection is limited interface and IDispatch;
      function put_length(
         This : access IXMLElementCollection;
         v : Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_length(
         This : access IXMLElementCollection;
         p : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_newEnum(
         This : access IXMLElementCollection;
         ppUnk : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function item(
         This : access IXMLElementCollection;
         var1 : VARIANT;
         var2 : VARIANT;
         ppDisp : access IDispatch_Ptr
      ) return HRESULT is abstract;
   type IXMLElementCollection_Ptr is access all IXMLElementCollection'Class;
   IID_IXMLDocument : aliased constant IID;
   pragma import (C,IID_IXMLDocument,"IID_IXMLDocument");
   type IXMLElement_Ptr is access all IXMLElement; -- Auto Generated Dependancy
   type IXMLDocument is limited interface and IDispatch;
      function get_root(
         This : access IXMLDocument;
         p : access IXMLElement_Ptr
      ) return HRESULT is abstract;
      function get_fileSize(
         This : access IXMLDocument;
         p : access BSTR
      ) return HRESULT is abstract;
      function get_fileModifiedDate(
         This : access IXMLDocument;
         p : access BSTR
      ) return HRESULT is abstract;
      function get_fileUpdatedDate(
         This : access IXMLDocument;
         p : access BSTR
      ) return HRESULT is abstract;
      function get_URL(
         This : access IXMLDocument;
         p : access BSTR
      ) return HRESULT is abstract;
      function put_URL(
         This : access IXMLDocument;
         p : BSTR
      ) return HRESULT is abstract;
      function get_mimeType(
         This : access IXMLDocument;
         p : access BSTR
      ) return HRESULT is abstract;
      function get_readyState(
         This : access IXMLDocument;
         pl : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_charset(
         This : access IXMLDocument;
         p : access BSTR
      ) return HRESULT is abstract;
      function put_charset(
         This : access IXMLDocument;
         p : BSTR
      ) return HRESULT is abstract;
      function get_version(
         This : access IXMLDocument;
         p : access BSTR
      ) return HRESULT is abstract;
      function get_doctype(
         This : access IXMLDocument;
         p : access BSTR
      ) return HRESULT is abstract;
      function get_dtdURL(
         This : access IXMLDocument;
         p : access BSTR
      ) return HRESULT is abstract;
      function createElement(
         This : access IXMLDocument;
         vType : VARIANT;
         var1 : VARIANT;
         ppElem : access IXMLElement_Ptr
      ) return HRESULT is abstract;
   type IXMLDocument_Ptr is access all IXMLDocument'Class;
   IID_IXMLDocument2 : aliased constant IID;
   pragma import (C,IID_IXMLDocument2,"IID_IXMLDocument2");
   type IXMLElement2_Ptr is access all IXMLElement2; -- Auto Generated Dependancy
   type IXMLDocument2 is limited interface and IDispatch;
      function get_root(
         This : access IXMLDocument2;
         p : access IXMLElement2_Ptr
      ) return HRESULT is abstract;
      function get_fileSize(
         This : access IXMLDocument2;
         p : access BSTR
      ) return HRESULT is abstract;
      function get_fileModifiedDate(
         This : access IXMLDocument2;
         p : access BSTR
      ) return HRESULT is abstract;
      function get_fileUpdatedDate(
         This : access IXMLDocument2;
         p : access BSTR
      ) return HRESULT is abstract;
      function get_URL(
         This : access IXMLDocument2;
         p : access BSTR
      ) return HRESULT is abstract;
      function put_URL(
         This : access IXMLDocument2;
         p : BSTR
      ) return HRESULT is abstract;
      function get_mimeType(
         This : access IXMLDocument2;
         p : access BSTR
      ) return HRESULT is abstract;
      function get_readyState(
         This : access IXMLDocument2;
         pl : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_charset(
         This : access IXMLDocument2;
         p : access BSTR
      ) return HRESULT is abstract;
      function put_charset(
         This : access IXMLDocument2;
         p : BSTR
      ) return HRESULT is abstract;
      function get_version(
         This : access IXMLDocument2;
         p : access BSTR
      ) return HRESULT is abstract;
      function get_doctype(
         This : access IXMLDocument2;
         p : access BSTR
      ) return HRESULT is abstract;
      function get_dtdURL(
         This : access IXMLDocument2;
         p : access BSTR
      ) return HRESULT is abstract;
      function createElement(
         This : access IXMLDocument2;
         vType : VARIANT;
         var1 : VARIANT;
         ppElem : access IXMLElement2_Ptr
      ) return HRESULT is abstract;
      function get_async(
         This : access IXMLDocument2;
         pf : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function put_async(
         This : access IXMLDocument2;
         f : VARIANT_BOOL
      ) return HRESULT is abstract;
   type IXMLDocument2_Ptr is access all IXMLDocument2'Class;
   IID_IXMLElement : aliased constant IID;
   pragma import (C,IID_IXMLElement,"IID_IXMLElement");
   type IXMLElement is limited interface and IDispatch;
      function get_tagName(
         This : access IXMLElement;
         p : access BSTR
      ) return HRESULT is abstract;
      function put_tagName(
         This : access IXMLElement;
         p : BSTR
      ) return HRESULT is abstract;
      function get_parent(
         This : access IXMLElement;
         ppParent : access IXMLElement_Ptr
      ) return HRESULT is abstract;
      function setAttribute(
         This : access IXMLElement;
         strPropertyName : BSTR;
         PropertyValue : VARIANT
      ) return HRESULT is abstract;
      function getAttribute(
         This : access IXMLElement;
         strPropertyName : BSTR;
         PropertyValue : access VARIANT
      ) return HRESULT is abstract;
      function removeAttribute(
         This : access IXMLElement;
         strPropertyName : BSTR
      ) return HRESULT is abstract;
      function get_children(
         This : access IXMLElement;
         pp : access IXMLElementCollection_Ptr
      ) return HRESULT is abstract;
      function get_type(
         This : access IXMLElement;
         plType : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_text(
         This : access IXMLElement;
         p : access BSTR
      ) return HRESULT is abstract;
      function put_text(
         This : access IXMLElement;
         p : BSTR
      ) return HRESULT is abstract;
      function addChild(
         This : access IXMLElement;
         pChildElem : access IXMLElement'Class;
         lIndex : Interfaces.C.Long;
         lReserved : Interfaces.C.Long
      ) return HRESULT is abstract;
      function removeChild(
         This : access IXMLElement;
         pChildElem : access IXMLElement'Class
      ) return HRESULT is abstract;
   IID_IXMLElement2 : aliased constant IID;
   pragma import (C,IID_IXMLElement2,"IID_IXMLElement2");
   type IXMLElement2 is limited interface and IDispatch;
      function get_tagName(
         This : access IXMLElement2;
         p : access BSTR
      ) return HRESULT is abstract;
      function put_tagName(
         This : access IXMLElement2;
         p : BSTR
      ) return HRESULT is abstract;
      function get_parent(
         This : access IXMLElement2;
         ppParent : access IXMLElement2_Ptr
      ) return HRESULT is abstract;
      function setAttribute(
         This : access IXMLElement2;
         strPropertyName : BSTR;
         PropertyValue : VARIANT
      ) return HRESULT is abstract;
      function getAttribute(
         This : access IXMLElement2;
         strPropertyName : BSTR;
         PropertyValue : access VARIANT
      ) return HRESULT is abstract;
      function removeAttribute(
         This : access IXMLElement2;
         strPropertyName : BSTR
      ) return HRESULT is abstract;
      function get_children(
         This : access IXMLElement2;
         pp : access IXMLElementCollection_Ptr
      ) return HRESULT is abstract;
      function get_type(
         This : access IXMLElement2;
         plType : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_text(
         This : access IXMLElement2;
         p : access BSTR
      ) return HRESULT is abstract;
      function put_text(
         This : access IXMLElement2;
         p : BSTR
      ) return HRESULT is abstract;
      function addChild(
         This : access IXMLElement2;
         pChildElem : access IXMLElement2'Class;
         lIndex : Interfaces.C.Long;
         lReserved : Interfaces.C.Long
      ) return HRESULT is abstract;
      function removeChild(
         This : access IXMLElement2;
         pChildElem : access IXMLElement2'Class
      ) return HRESULT is abstract;
      function get_attributes(
         This : access IXMLElement2;
         pp : access IXMLElementCollection_Ptr
      ) return HRESULT is abstract;
   IID_IXMLAttribute : aliased constant IID;
   pragma import (C,IID_IXMLAttribute,"IID_IXMLAttribute");
   type IXMLAttribute is limited interface and IDispatch;
      function get_name(
         This : access IXMLAttribute;
         n : access BSTR
      ) return HRESULT is abstract;
      function get_value(
         This : access IXMLAttribute;
         v : access BSTR
      ) return HRESULT is abstract;
   type IXMLAttribute_Ptr is access all IXMLAttribute'Class;
   IID_IXMLError : aliased constant IID;
   pragma import (C,IID_IXMLError,"IID_IXMLError");
   type IXMLError is limited interface and IUnknown;
      function GetErrorInfo(
         This : access IXMLError;
         pErrorReturn : access XML_ERROR
      ) return HRESULT is abstract;
   type IXMLError_Ptr is access all IXMLError'Class;
   -- #include <urlmon.h>
   IID_IAsyncMoniker : aliased constant IID;
   pragma import (C,IID_IAsyncMoniker,"IID_IAsyncMoniker");
   IID_IAsyncBindCtx : aliased constant IID;
   pragma import (C,IID_IAsyncBindCtx,"IID_IAsyncBindCtx");
   function CreateURLMoniker(
      pMkCtx : LPMONIKER;
      szURL : LPCWSTR;
      ppmk : access LPMONIKER
   ) return HRESULT;
   pragma import (Cpp,CreateURLMoniker,"CreateURLMoniker");
   function CreateURLMonikerEx(
      pMkCtx : LPMONIKER;
      szURL : LPCWSTR;
      ppmk : access LPMONIKER;
      dwFlags : DWORD
   ) return HRESULT;
   pragma import (Cpp,CreateURLMonikerEx,"CreateURLMonikerEx");
   function GetClassURL(
      szURL : LPCWSTR;
      pClsID : access CLSID
   ) return HRESULT;
   pragma import (Cpp,GetClassURL,"GetClassURL");
   function CreateAsyncBindCtx(
      reserved : DWORD;
      pBSCb : access IBindStatusCallback'Class;
      pEFetc : access IEnumFORMATETC'Class;
      ppBC : access IBindCtx_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateAsyncBindCtx,"CreateAsyncBindCtx");
   function CreateURLMonikerEx2(
      pMkCtx : LPMONIKER;
      pUri : access IUri'Class;
      ppmk : access LPMONIKER;
      dwFlags : DWORD
   ) return HRESULT;
   pragma import (Cpp,CreateURLMonikerEx2,"CreateURLMonikerEx2");
   function CreateAsyncBindCtxEx(
      pbc : access IBindCtx'Class;
      dwOptions : DWORD;
      pBSCb : access IBindStatusCallback'Class;
      pEnum : access IEnumFORMATETC'Class;
      ppBC : access IBindCtx_Ptr;
      reserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,CreateAsyncBindCtxEx,"CreateAsyncBindCtxEx");
   function MkParseDisplayNameEx(
      pbc : access IBindCtx'Class;
      szDisplayName : LPCWSTR;
      pchEaten : access ULONG;
      ppmk : access LPMONIKER
   ) return HRESULT;
   pragma import (Cpp,MkParseDisplayNameEx,"MkParseDisplayNameEx");
   type IBindStatusCallback_Ptr is access all IBindStatusCallback; -- Auto Generated Dependancy
   function RegisterBindStatusCallback(
      pBC : LPBC;
      pBSCb : access IBindStatusCallback'Class;
      ppBSCBPrev : access IBindStatusCallback_Ptr;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,RegisterBindStatusCallback,"RegisterBindStatusCallback");
   function RevokeBindStatusCallback(
      pBC : LPBC;
      pBSCb : access IBindStatusCallback'Class
   ) return HRESULT;
   pragma import (Cpp,RevokeBindStatusCallback,"RevokeBindStatusCallback");
   function GetClassFileOrMime(
      pBC : LPBC;
      szFilename : LPCWSTR;
      pBuffer : LPVOID;
      cbSize : DWORD;
      szMime : LPCWSTR;
      dwReserved : DWORD;
      pclsid : access CLSID
   ) return HRESULT;
   pragma import (Cpp,GetClassFileOrMime,"GetClassFileOrMime");
   function IsValidURL(
      pBC : LPBC;
      szURL : LPCWSTR;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,IsValidURL,"IsValidURL");
   function CoGetClassObjectFromURL(
      rCLASSID : access constant IID;
      szCODE : LPCWSTR;
      dwFileVersionMS : DWORD;
      dwFileVersionLS : DWORD;
      szTYPE : LPCWSTR;
      pBindCtx : LPBINDCTX;
      dwClsContext : DWORD;
      pvReserved : LPVOID;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoGetClassObjectFromURL,"CoGetClassObjectFromURL");
   function IEInstallScope(
      pdwScope : LPDWORD
   ) return HRESULT;
   pragma import (Cpp,IEInstallScope,"IEInstallScope");
   function FaultInIEFeature(
      hWnd_x : HWND;
      pClassSpec : access uCLSSPEC;
      pQuery : access QUERYCONTEXT;
      dwFlags : DWORD
   ) return HRESULT;
   pragma import (Cpp,FaultInIEFeature,"FaultInIEFeature");
   function GetComponentIDFromCLSSPEC(
      pClassspec : access uCLSSPEC;
      ppszComponentID : access LPSTR
   ) return HRESULT;
   pragma import (Cpp,GetComponentIDFromCLSSPEC,"GetComponentIDFromCLSSPEC");
   function IsAsyncMoniker(
      pmk : access IMoniker'Class
   ) return HRESULT;
   pragma import (Cpp,IsAsyncMoniker,"IsAsyncMoniker");
   type IBinding_Ptr is access all IBinding; -- Auto Generated Dependancy
   function CreateURLBinding(
      lpszUrl : LPCWSTR;
      pbc : access IBindCtx'Class;
      ppBdg : access IBinding_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateURLBinding,"CreateURLBinding");
   function RegisterMediaTypes(
      ctypes : UINT;
      rgszTypes : access constant LPCSTR;
      rgcfTypes : access CLIPFORMAT
   ) return HRESULT;
   pragma import (Cpp,RegisterMediaTypes,"RegisterMediaTypes");
   function FindMediaType(
      rgszTypes : LPCSTR;
      rgcfTypes : access CLIPFORMAT
   ) return HRESULT;
   pragma import (Cpp,FindMediaType,"FindMediaType");
   function CreateFormatEnumerator(
      cfmtetc : UINT;
      rgfmtetc : access FORMATETC;
      ppenumfmtetc : access IEnumFORMATETC_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateFormatEnumerator,"CreateFormatEnumerator");
   function RegisterFormatEnumerator(
      pBC : LPBC;
      pEFetc : access IEnumFORMATETC'Class;
      reserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,RegisterFormatEnumerator,"RegisterFormatEnumerator");
   function RevokeFormatEnumerator(
      pBC : LPBC;
      pEFetc : access IEnumFORMATETC'Class
   ) return HRESULT;
   pragma import (Cpp,RevokeFormatEnumerator,"RevokeFormatEnumerator");
   function RegisterMediaTypeClass(
      pBC : LPBC;
      ctypes : UINT;
      rgszTypes : access constant LPCSTR;
      rgclsID : access CLSID;
      reserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,RegisterMediaTypeClass,"RegisterMediaTypeClass");
   function FindMediaTypeClass(
      pBC : LPBC;
      szType : LPCSTR;
      pclsID : access CLSID;
      reserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,FindMediaTypeClass,"FindMediaTypeClass");
   function UrlMkSetSessionOption(
      dwOption : DWORD;
      pBuffer : LPVOID;
      dwBufferLength : DWORD;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,UrlMkSetSessionOption,"UrlMkSetSessionOption");
   function UrlMkGetSessionOption(
      dwOption : DWORD;
      pBuffer : LPVOID;
      dwBufferLength : DWORD;
      pdwBufferLengthOut : access DWORD;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,UrlMkGetSessionOption,"UrlMkGetSessionOption");
   function FindMimeFromData(
      pBC : LPBC;
      pwzUrl : LPCWSTR;
      pBuffer : LPVOID;
      cbSize : DWORD;
      pwzMimeProposed : LPCWSTR;
      dwMimeFlags : DWORD;
      ppwzMimeOut : access LPWSTR;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,FindMimeFromData,"FindMimeFromData");
   function ObtainUserAgentString(
      dwOption : DWORD;
      pszUAOut : LPSTR;
      cbSize : access DWORD
   ) return HRESULT;
   pragma import (Cpp,ObtainUserAgentString,"ObtainUserAgentString");
   function CompareSecurityIds(
      pbSecurityId1 : access BYTE;
      dwLen1 : DWORD;
      pbSecurityId2 : access BYTE;
      dwLen2 : DWORD;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,CompareSecurityIds,"CompareSecurityIds");
   function CompatFlagsFromClsid(
      pclsid : access CLSID;
      pdwCompatFlags : LPDWORD;
      pdwMiscStatusFlags : LPDWORD
   ) return HRESULT;
   pragma import (Cpp,CompatFlagsFromClsid,"CompatFlagsFromClsid");
   type IEObjectType is (
      IE_EPM_OBJECT_EVENT,
      IE_EPM_OBJECT_MUTEX,
      IE_EPM_OBJECT_SEMAPHORE,
      IE_EPM_OBJECT_SHARED_MEMORY,
      IE_EPM_OBJECT_WAITABLE_TIMER,
      IE_EPM_OBJECT_FILE,
      IE_EPM_OBJECT_NAMED_PIPE,
      IE_EPM_OBJECT_REGISTRY
   );
   for IEObjectType use (
      IE_EPM_OBJECT_EVENT => 0,
      IE_EPM_OBJECT_MUTEX => 1,
      IE_EPM_OBJECT_SEMAPHORE => 2,
      IE_EPM_OBJECT_SHARED_MEMORY => 3,
      IE_EPM_OBJECT_WAITABLE_TIMER => 4,
      IE_EPM_OBJECT_FILE => 5,
      IE_EPM_OBJECT_NAMED_PIPE => 6,
      IE_EPM_OBJECT_REGISTRY => 7
   );
   for IEObjectType'Size use 32;
   function SetAccessForIEAppContainer(
      hObject : HANDLE;
      ieobjecttype_x : IEObjectType;
      dwAccessMask : DWORD
   ) return HRESULT;
   pragma import (Cpp,SetAccessForIEAppContainer,"SetAccessForIEAppContainer");
   type LPPERSISTMONIKER is access all IPersistMoniker;
   IID_IPersistMoniker : aliased constant IID;
   pragma import (C,IID_IPersistMoniker,"IID_IPersistMoniker");
   type IPersistMoniker is limited interface and IUnknown;
      function GetClassID(
         This : access IPersistMoniker;
         pClassID : access CLSID
      ) return HRESULT is abstract;
      function IsDirty(This : access IPersistMoniker) return HRESULT is abstract;
      function Load(
         This : access IPersistMoniker;
         fFullyAvailable : BOOL;
         pimkName : access IMoniker'Class;
         pibc : LPBC;
         grfMode : DWORD
      ) return HRESULT is abstract;
      function Save(
         This : access IPersistMoniker;
         pimkName : access IMoniker'Class;
         pbc : LPBC;
         fRemember : BOOL
      ) return HRESULT is abstract;
      function SaveCompleted(
         This : access IPersistMoniker;
         pimkName : access IMoniker'Class;
         pibc : LPBC
      ) return HRESULT is abstract;
      function GetCurMoniker(
         This : access IPersistMoniker;
         ppimkName : access IMoniker_Ptr
      ) return HRESULT is abstract;
   type IPersistMoniker_Ptr is access all IPersistMoniker'Class;
   type LPMONIKERPROP is access all IMonikerProp;
   type MIDL_IMonikerProp_0001_x is (
      MIMETYPEPROP,
      USE_SRC_URL,
      CLASSIDPROP,
      TRUSTEDDOWNLOADPROP,
      POPUPLEVELPROP
   );
   for MIDL_IMonikerProp_0001_x use (
      MIMETYPEPROP => 0,
      USE_SRC_URL => 1,
      CLASSIDPROP => 2,
      TRUSTEDDOWNLOADPROP => 3,
      POPUPLEVELPROP => 4
   );
   for MIDL_IMonikerProp_0001_x'Size use 32;
   subtype MONIKERPROPERTY is MIDL_IMonikerProp_0001_x;
   IID_IMonikerProp : aliased constant IID;
   pragma import (C,IID_IMonikerProp,"IID_IMonikerProp");
   type IMonikerProp is limited interface and IUnknown;
      function PutProperty(
         This : access IMonikerProp;
         mkp : MONIKERPROPERTY;
         val : LPCWSTR
      ) return HRESULT is abstract;
   type IMonikerProp_Ptr is access all IMonikerProp'Class;
   type LPBINDPROTOCOL is access all IBindProtocol;
   IID_IBindProtocol : aliased constant IID;
   pragma import (C,IID_IBindProtocol,"IID_IBindProtocol");
   type IBindProtocol is limited interface and IUnknown;
      function CreateBinding(
         This : access IBindProtocol;
         szUrl : LPCWSTR;
         pbc : access IBindCtx'Class;
         ppb : access IBinding_Ptr
      ) return HRESULT is abstract;
   type IBindProtocol_Ptr is access all IBindProtocol'Class;
   type LPBINDING is access all IBinding;
   IID_IBinding : aliased constant IID;
   pragma import (C,IID_IBinding,"IID_IBinding");
   type IBinding is limited interface and IUnknown;
      function abort_x_x(This : access IBinding) return HRESULT is abstract;
      function Suspend(This : access IBinding) return HRESULT is abstract;
      function Resume(This : access IBinding) return HRESULT is abstract;
      function SetPriority(
         This : access IBinding;
         nPriority : LONG
      ) return HRESULT is abstract;
      function GetPriority(
         This : access IBinding;
         pnPriority : access LONG
      ) return HRESULT is abstract;
      function GetBindResult(
         This : access IBinding;
         pclsidProtocol : access CLSID;
         pdwResult : access DWORD;
         pszResult : access LPOLESTR;
         pdwReserved : access DWORD
      ) return HRESULT is abstract;
   function IBinding_RemoteGetBindResult_Proxy(
      This : access IBinding'Class;
      pclsidProtocol : access CLSID;
      pdwResult : access DWORD;
      pszResult : access LPOLESTR;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,IBinding_RemoteGetBindResult_Proxy,"IBinding_RemoteGetBindResult_Proxy");
   procedure IBinding_RemoteGetBindResult_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IBinding_RemoteGetBindResult_Stub,"IBinding_RemoteGetBindResult_Stub");
   type LPBINDSTATUSCALLBACK is access all IBindStatusCallback;
   type MIDL_IBindStatusCallback_0001_x is (
      BINDVERB_GET,
      BINDVERB_POST,
      BINDVERB_PUT,
      BINDVERB_CUSTOM,
      BINDVERB_RESERVED1
   );
   for MIDL_IBindStatusCallback_0001_x use (
      BINDVERB_GET => 0,
      BINDVERB_POST => 1,
      BINDVERB_PUT => 2,
      BINDVERB_CUSTOM => 3,
      BINDVERB_RESERVED1 => 4
   );
   for MIDL_IBindStatusCallback_0001_x'Size use 32;
   subtype BINDVERB is MIDL_IBindStatusCallback_0001_x;
   type MIDL_IBindStatusCallback_0002_x is (
      BINDINFOF_URLENCODESTGMEDDATA,
      BINDINFOF_URLENCODEDEXTRAINFO
   );
   for MIDL_IBindStatusCallback_0002_x use (
      BINDINFOF_URLENCODESTGMEDDATA => 1,
      BINDINFOF_URLENCODEDEXTRAINFO => 2
   );
   for MIDL_IBindStatusCallback_0002_x'Size use 32;
   subtype BINDINFOF is MIDL_IBindStatusCallback_0002_x;
   type MIDL_IBindStatusCallback_0003_x is (
      BINDF_RESERVED_2,
      BINDF_ASYNCHRONOUS,
      BINDF_ASYNCSTORAGE,
      BINDF_NOPROGRESSIVERENDERING,
      BINDF_OFFLINEOPERATION,
      BINDF_GETNEWESTVERSION,
      BINDF_NOWRITECACHE,
      BINDF_NEEDFILE,
      BINDF_PULLDATA,
      BINDF_IGNORESECURITYPROBLEM,
      BINDF_RESYNCHRONIZE,
      BINDF_HYPERLINK,
      BINDF_NO_UI,
      BINDF_SILENTOPERATION,
      BINDF_PRAGMA_NO_CACHE,
      BINDF_GETCLASSOBJECT,
      BINDF_RESERVED_1,
      BINDF_FREE_THREADED,
      BINDF_DIRECT_READ,
      BINDF_FORMS_SUBMIT,
      BINDF_GETFROMCACHE_IF_NET_FAIL,
      BINDF_FROMURLMON,
      BINDF_FWD_BACK,
      BINDF_PREFERDEFAULTHANDLER,
      BINDF_ENFORCERESTRICTED,
      BINDF_RESERVED_3,
      BINDF_RESERVED_4,
      BINDF_RESERVED_5,
      BINDF_RESERVED_6,
      BINDF_RESERVED_8,
      BINDF_RESERVED_7
   );
   for MIDL_IBindStatusCallback_0003_x use (
      BINDF_RESERVED_2 => -2147483648,
      BINDF_ASYNCHRONOUS => 1,
      BINDF_ASYNCSTORAGE => 2,
      BINDF_NOPROGRESSIVERENDERING => 4,
      BINDF_OFFLINEOPERATION => 8,
      BINDF_GETNEWESTVERSION => 16,
      BINDF_NOWRITECACHE => 32,
      BINDF_NEEDFILE => 64,
      BINDF_PULLDATA => 128,
      BINDF_IGNORESECURITYPROBLEM => 256,
      BINDF_RESYNCHRONIZE => 512,
      BINDF_HYPERLINK => 1024,
      BINDF_NO_UI => 2048,
      BINDF_SILENTOPERATION => 4096,
      BINDF_PRAGMA_NO_CACHE => 8192,
      BINDF_GETCLASSOBJECT => 16384,
      BINDF_RESERVED_1 => 32768,
      BINDF_FREE_THREADED => 65536,
      BINDF_DIRECT_READ => 131072,
      BINDF_FORMS_SUBMIT => 262144,
      BINDF_GETFROMCACHE_IF_NET_FAIL => 524288,
      BINDF_FROMURLMON => 1048576,
      BINDF_FWD_BACK => 2097152,
      BINDF_PREFERDEFAULTHANDLER => 4194304,
      BINDF_ENFORCERESTRICTED => 8388608,
      BINDF_RESERVED_3 => 16777216,
      BINDF_RESERVED_4 => 33554432,
      BINDF_RESERVED_5 => 67108864,
      BINDF_RESERVED_6 => 134217728,
      BINDF_RESERVED_8 => 536870912,
      BINDF_RESERVED_7 => 1073741824
   );
   for MIDL_IBindStatusCallback_0003_x'Size use 32;
   subtype BINDF is MIDL_IBindStatusCallback_0003_x;
   type MIDL_IBindStatusCallback_0004_x is (
      URL_ENCODING_NONE,
      URL_ENCODING_ENABLE_UTF8,
      URL_ENCODING_DISABLE_UTF8
   );
   for MIDL_IBindStatusCallback_0004_x use (
      URL_ENCODING_NONE => 0,
      URL_ENCODING_ENABLE_UTF8 => 268435456,
      URL_ENCODING_DISABLE_UTF8 => 536870912
   );
   for MIDL_IBindStatusCallback_0004_x'Size use 32;
   subtype URL_ENCODING is MIDL_IBindStatusCallback_0004_x;
   type tagBINDINFO_x is record
      cbSize : ULONG;
      szExtraInfo : LPWSTR;
      stgmedData : STGMEDIUM;
      grfBindInfoF : DWORD;
      dwBindVerb : DWORD;
      szCustomVerb : LPWSTR;
      cbstgmedData : DWORD;
      dwOptions : DWORD;
      dwOptionsFlags : DWORD;
      dwCodePage : DWORD;
      securityAttributes : SECURITY_ATTRIBUTES;
      iid_x : IID;
      pUnk : access IUnknown'Class;
      dwReserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBINDINFO_x);
   for tagBINDINFO_x use record
      cbSize at 0 range 0..31;
      szExtraInfo at 0 range 64..127;
      stgmedData at 0 range 128..319;
      grfBindInfoF at 0 range 320..351;
      dwBindVerb at 0 range 352..383;
      szCustomVerb at 0 range 384..447;
      cbstgmedData at 0 range 448..479;
      dwOptions at 0 range 480..511;
      dwOptionsFlags at 0 range 512..543;
      dwCodePage at 0 range 544..575;
      securityAttributes at 0 range 576..767;
      iid_x at 0 range 768..895;
      pUnk at 0 range 896..959;
      dwReserved at 0 range 960..991;
   end record;
   for tagBINDINFO_x'Size use 1024;
   for tagBINDINFO_x'Alignment use 8;
   subtype BINDINFO is tagBINDINFO_x;
   type REMSECURITY_ATTRIBUTES_x is record
      nLength : DWORD;
      lpSecurityDescriptor : DWORD;
      bInheritHandle : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,REMSECURITY_ATTRIBUTES_x);
   for REMSECURITY_ATTRIBUTES_x use record
      nLength at 0 range 0..31;
      lpSecurityDescriptor at 0 range 32..63;
      bInheritHandle at 0 range 64..95;
   end record;
   for REMSECURITY_ATTRIBUTES_x'Size use 96;
   for REMSECURITY_ATTRIBUTES_x'Alignment use 4;
   subtype REMSECURITY_ATTRIBUTES is REMSECURITY_ATTRIBUTES_x;
   type PREMSECURITY_ATTRIBUTES is access all REMSECURITY_ATTRIBUTES_x;
   type LPREMSECURITY_ATTRIBUTES is access all REMSECURITY_ATTRIBUTES_x;
   type tagRemBINDINFO_x is record
      cbSize : ULONG;
      szExtraInfo : LPWSTR;
      grfBindInfoF : DWORD;
      dwBindVerb : DWORD;
      szCustomVerb : LPWSTR;
      cbstgmedData : DWORD;
      dwOptions : DWORD;
      dwOptionsFlags : DWORD;
      dwCodePage : DWORD;
      securityAttributes : REMSECURITY_ATTRIBUTES;
      iid_x : IID;
      pUnk : access IUnknown'Class;
      dwReserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRemBINDINFO_x);
   for tagRemBINDINFO_x use record
      cbSize at 0 range 0..31;
      szExtraInfo at 0 range 64..127;
      grfBindInfoF at 0 range 128..159;
      dwBindVerb at 0 range 160..191;
      szCustomVerb at 0 range 192..255;
      cbstgmedData at 0 range 256..287;
      dwOptions at 0 range 288..319;
      dwOptionsFlags at 0 range 320..351;
      dwCodePage at 0 range 352..383;
      securityAttributes at 0 range 384..479;
      iid_x at 0 range 480..607;
      pUnk at 0 range 640..703;
      dwReserved at 0 range 704..735;
   end record;
   for tagRemBINDINFO_x'Size use 768;
   for tagRemBINDINFO_x'Alignment use 8;
   subtype RemBINDINFO is tagRemBINDINFO_x;
   type tagRemFORMATETC is record
      cfFormat : DWORD;
      ptd : DWORD;
      dwAspect : DWORD;
      lindex : LONG;
      tymed_x : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagRemFORMATETC);
   for tagRemFORMATETC use record
      cfFormat at 0 range 0..31;
      ptd at 0 range 32..63;
      dwAspect at 0 range 64..95;
      lindex at 0 range 96..127;
      tymed_x at 0 range 128..159;
   end record;
   for tagRemFORMATETC'Size use 160;
   for tagRemFORMATETC'Alignment use 4;
   subtype RemFORMATETC is tagRemFORMATETC;
   type LPREMFORMATETC is access all tagRemFORMATETC;
   type MIDL_IBindStatusCallback_0005_x is (
      BINDINFO_OPTIONS_SHDOCVW_NAVIGATE,
      BINDINFO_OPTIONS_WININETFLAG,
      BINDINFO_OPTIONS_ENABLE_UTF8,
      BINDINFO_OPTIONS_DISABLE_UTF8,
      BINDINFO_OPTIONS_USE_IE_ENCODING,
      BINDINFO_OPTIONS_BINDTOOBJECT,
      BINDINFO_OPTIONS_SECURITYOPTOUT,
      BINDINFO_OPTIONS_IGNOREMIMETEXTPLAIN,
      BINDINFO_OPTIONS_USEBINDSTRINGCREDS,
      BINDINFO_OPTIONS_IGNOREHTTPHTTPSREDIRECTS,
      BINDINFO_OPTIONS_IGNORE_SSLERRORS_ONCE,
      BINDINFO_WPC_DOWNLOADBLOCKED,
      BINDINFO_WPC_LOGGING_ENABLED,
      BINDINFO_OPTIONS_ALLOWCONNECTDATA,
      BINDINFO_OPTIONS_DISABLEAUTOREDIRECTS
   );
   for MIDL_IBindStatusCallback_0005_x use (
      BINDINFO_OPTIONS_SHDOCVW_NAVIGATE => -2147483648,
      BINDINFO_OPTIONS_WININETFLAG => 65536,
      BINDINFO_OPTIONS_ENABLE_UTF8 => 131072,
      BINDINFO_OPTIONS_DISABLE_UTF8 => 262144,
      BINDINFO_OPTIONS_USE_IE_ENCODING => 524288,
      BINDINFO_OPTIONS_BINDTOOBJECT => 1048576,
      BINDINFO_OPTIONS_SECURITYOPTOUT => 2097152,
      BINDINFO_OPTIONS_IGNOREMIMETEXTPLAIN => 4194304,
      BINDINFO_OPTIONS_USEBINDSTRINGCREDS => 8388608,
      BINDINFO_OPTIONS_IGNOREHTTPHTTPSREDIRECTS => 16777216,
      BINDINFO_OPTIONS_IGNORE_SSLERRORS_ONCE => 33554432,
      BINDINFO_WPC_DOWNLOADBLOCKED => 134217728,
      BINDINFO_WPC_LOGGING_ENABLED => 268435456,
      BINDINFO_OPTIONS_ALLOWCONNECTDATA => 536870912,
      BINDINFO_OPTIONS_DISABLEAUTOREDIRECTS => 1073741824
   );
   for MIDL_IBindStatusCallback_0005_x'Size use 32;
   subtype BINDINFO_OPTIONS is MIDL_IBindStatusCallback_0005_x;
   type MIDL_IBindStatusCallback_0006_x is (
      BSCF_FIRSTDATANOTIFICATION,
      BSCF_INTERMEDIATEDATANOTIFICATION,
      BSCF_LASTDATANOTIFICATION,
      BSCF_DATAFULLYAVAILABLE,
      BSCF_AVAILABLEDATASIZEUNKNOWN,
      BSCF_SKIPDRAINDATAFORFILEURLS,
      BSCF_64BITLENGTHDOWNLOAD
   );
   for MIDL_IBindStatusCallback_0006_x use (
      BSCF_FIRSTDATANOTIFICATION => 1,
      BSCF_INTERMEDIATEDATANOTIFICATION => 2,
      BSCF_LASTDATANOTIFICATION => 4,
      BSCF_DATAFULLYAVAILABLE => 8,
      BSCF_AVAILABLEDATASIZEUNKNOWN => 16,
      BSCF_SKIPDRAINDATAFORFILEURLS => 32,
      BSCF_64BITLENGTHDOWNLOAD => 64
   );
   for MIDL_IBindStatusCallback_0006_x'Size use 32;
   subtype BSCF is MIDL_IBindStatusCallback_0006_x;
   type tagBINDSTATUS is (
      BINDSTATUS_FINDINGRESOURCE,
      BINDSTATUS_CONNECTING,
      BINDSTATUS_REDIRECTING,
      BINDSTATUS_BEGINDOWNLOADDATA,
      BINDSTATUS_DOWNLOADINGDATA,
      BINDSTATUS_ENDDOWNLOADDATA,
      BINDSTATUS_BEGINDOWNLOADCOMPONENTS,
      BINDSTATUS_INSTALLINGCOMPONENTS,
      BINDSTATUS_ENDDOWNLOADCOMPONENTS,
      BINDSTATUS_USINGCACHEDCOPY,
      BINDSTATUS_SENDINGREQUEST,
      BINDSTATUS_CLASSIDAVAILABLE,
      BINDSTATUS_MIMETYPEAVAILABLE,
      BINDSTATUS_CACHEFILENAMEAVAILABLE,
      BINDSTATUS_BEGINSYNCOPERATION,
      BINDSTATUS_ENDSYNCOPERATION,
      BINDSTATUS_BEGINUPLOADDATA,
      BINDSTATUS_UPLOADINGDATA,
      BINDSTATUS_ENDUPLOADDATA,
      BINDSTATUS_PROTOCOLCLASSID,
      BINDSTATUS_ENCODING,
      BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE,
      BINDSTATUS_CLASSINSTALLLOCATION,
      BINDSTATUS_DECODING,
      BINDSTATUS_LOADINGMIMEHANDLER,
      BINDSTATUS_CONTENTDISPOSITIONATTACH,
      BINDSTATUS_FILTERREPORTMIMETYPE,
      BINDSTATUS_CLSIDCANINSTANTIATE,
      BINDSTATUS_IUNKNOWNAVAILABLE,
      BINDSTATUS_DIRECTBIND,
      BINDSTATUS_RAWMIMETYPE,
      BINDSTATUS_PROXYDETECTING,
      BINDSTATUS_ACCEPTRANGES,
      BINDSTATUS_COOKIE_SENT,
      BINDSTATUS_COMPACT_POLICY_RECEIVED,
      BINDSTATUS_COOKIE_SUPPRESSED,
      BINDSTATUS_COOKIE_STATE_UNKNOWN,
      BINDSTATUS_COOKIE_STATE_ACCEPT,
      BINDSTATUS_COOKIE_STATE_REJECT,
      BINDSTATUS_COOKIE_STATE_PROMPT,
      BINDSTATUS_COOKIE_STATE_LEASH,
      BINDSTATUS_COOKIE_STATE_DOWNGRADE,
      BINDSTATUS_POLICY_HREF,
      BINDSTATUS_P3P_HEADER,
      BINDSTATUS_SESSION_COOKIE_RECEIVED,
      BINDSTATUS_PERSISTENT_COOKIE_RECEIVED,
      BINDSTATUS_SESSION_COOKIES_ALLOWED,
      BINDSTATUS_CACHECONTROL,
      BINDSTATUS_CONTENTDISPOSITIONFILENAME,
      BINDSTATUS_MIMETEXTPLAINMISMATCH,
      BINDSTATUS_PUBLISHERAVAILABLE,
      BINDSTATUS_DISPLAYNAMEAVAILABLE,
      BINDSTATUS_SSLUX_NAVBLOCKED,
      BINDSTATUS_SERVER_MIMETYPEAVAILABLE,
      BINDSTATUS_SNIFFED_CLASSIDAVAILABLE,
      BINDSTATUS_64BIT_PROGRESS,
      BINDSTATUS_RESERVED_0,
      BINDSTATUS_RESERVED_1,
      BINDSTATUS_RESERVED_2,
      BINDSTATUS_RESERVED_3,
      BINDSTATUS_RESERVED_4,
      BINDSTATUS_RESERVED_5,
      BINDSTATUS_RESERVED_6,
      BINDSTATUS_RESERVED_7,
      BINDSTATUS_RESERVED_8,
      BINDSTATUS_RESERVED_9,
      BINDSTATUS_RESERVED_A,
      BINDSTATUS_RESERVED_B,
      BINDSTATUS_RESERVED_C,
      BINDSTATUS_RESERVED_D,
      BINDSTATUS_RESERVED_E,
      BINDSTATUS_RESERVED_F,
      BINDSTATUS_RESERVED_10,
      BINDSTATUS_RESERVED_11,
      BINDSTATUS_RESERVED_12,
      BINDSTATUS_RESERVED_13
   );
   for tagBINDSTATUS use (
      BINDSTATUS_FINDINGRESOURCE => 1,
      BINDSTATUS_CONNECTING => 2,
      BINDSTATUS_REDIRECTING => 3,
      BINDSTATUS_BEGINDOWNLOADDATA => 4,
      BINDSTATUS_DOWNLOADINGDATA => 5,
      BINDSTATUS_ENDDOWNLOADDATA => 6,
      BINDSTATUS_BEGINDOWNLOADCOMPONENTS => 7,
      BINDSTATUS_INSTALLINGCOMPONENTS => 8,
      BINDSTATUS_ENDDOWNLOADCOMPONENTS => 9,
      BINDSTATUS_USINGCACHEDCOPY => 10,
      BINDSTATUS_SENDINGREQUEST => 11,
      BINDSTATUS_CLASSIDAVAILABLE => 12,
      BINDSTATUS_MIMETYPEAVAILABLE => 13,
      BINDSTATUS_CACHEFILENAMEAVAILABLE => 14,
      BINDSTATUS_BEGINSYNCOPERATION => 15,
      BINDSTATUS_ENDSYNCOPERATION => 16,
      BINDSTATUS_BEGINUPLOADDATA => 17,
      BINDSTATUS_UPLOADINGDATA => 18,
      BINDSTATUS_ENDUPLOADDATA => 19,
      BINDSTATUS_PROTOCOLCLASSID => 20,
      BINDSTATUS_ENCODING => 21,
      BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE => 22,
      BINDSTATUS_CLASSINSTALLLOCATION => 23,
      BINDSTATUS_DECODING => 24,
      BINDSTATUS_LOADINGMIMEHANDLER => 25,
      BINDSTATUS_CONTENTDISPOSITIONATTACH => 26,
      BINDSTATUS_FILTERREPORTMIMETYPE => 27,
      BINDSTATUS_CLSIDCANINSTANTIATE => 28,
      BINDSTATUS_IUNKNOWNAVAILABLE => 29,
      BINDSTATUS_DIRECTBIND => 30,
      BINDSTATUS_RAWMIMETYPE => 31,
      BINDSTATUS_PROXYDETECTING => 32,
      BINDSTATUS_ACCEPTRANGES => 33,
      BINDSTATUS_COOKIE_SENT => 34,
      BINDSTATUS_COMPACT_POLICY_RECEIVED => 35,
      BINDSTATUS_COOKIE_SUPPRESSED => 36,
      BINDSTATUS_COOKIE_STATE_UNKNOWN => 37,
      BINDSTATUS_COOKIE_STATE_ACCEPT => 38,
      BINDSTATUS_COOKIE_STATE_REJECT => 39,
      BINDSTATUS_COOKIE_STATE_PROMPT => 40,
      BINDSTATUS_COOKIE_STATE_LEASH => 41,
      BINDSTATUS_COOKIE_STATE_DOWNGRADE => 42,
      BINDSTATUS_POLICY_HREF => 43,
      BINDSTATUS_P3P_HEADER => 44,
      BINDSTATUS_SESSION_COOKIE_RECEIVED => 45,
      BINDSTATUS_PERSISTENT_COOKIE_RECEIVED => 46,
      BINDSTATUS_SESSION_COOKIES_ALLOWED => 47,
      BINDSTATUS_CACHECONTROL => 48,
      BINDSTATUS_CONTENTDISPOSITIONFILENAME => 49,
      BINDSTATUS_MIMETEXTPLAINMISMATCH => 50,
      BINDSTATUS_PUBLISHERAVAILABLE => 51,
      BINDSTATUS_DISPLAYNAMEAVAILABLE => 52,
      BINDSTATUS_SSLUX_NAVBLOCKED => 53,
      BINDSTATUS_SERVER_MIMETYPEAVAILABLE => 54,
      BINDSTATUS_SNIFFED_CLASSIDAVAILABLE => 55,
      BINDSTATUS_64BIT_PROGRESS => 56,
      BINDSTATUS_RESERVED_0 => 57,
      BINDSTATUS_RESERVED_1 => 58,
      BINDSTATUS_RESERVED_2 => 59,
      BINDSTATUS_RESERVED_3 => 60,
      BINDSTATUS_RESERVED_4 => 61,
      BINDSTATUS_RESERVED_5 => 62,
      BINDSTATUS_RESERVED_6 => 63,
      BINDSTATUS_RESERVED_7 => 64,
      BINDSTATUS_RESERVED_8 => 65,
      BINDSTATUS_RESERVED_9 => 66,
      BINDSTATUS_RESERVED_A => 67,
      BINDSTATUS_RESERVED_B => 68,
      BINDSTATUS_RESERVED_C => 69,
      BINDSTATUS_RESERVED_D => 70,
      BINDSTATUS_RESERVED_E => 71,
      BINDSTATUS_RESERVED_F => 72,
      BINDSTATUS_RESERVED_10 => 73,
      BINDSTATUS_RESERVED_11 => 74,
      BINDSTATUS_RESERVED_12 => 75,
      BINDSTATUS_RESERVED_13 => 76
   );
   for tagBINDSTATUS'Size use 32;
   subtype BINDSTATUS is tagBINDSTATUS;
   IID_IBindStatusCallback : aliased constant IID;
   pragma import (C,IID_IBindStatusCallback,"IID_IBindStatusCallback");
   type IBindStatusCallback is limited interface and IUnknown;
      function OnStartBinding(
         This : access IBindStatusCallback;
         dwReserved : DWORD;
         pib : access IBinding'Class
      ) return HRESULT is abstract;
      function GetPriority(
         This : access IBindStatusCallback;
         pnPriority : access LONG
      ) return HRESULT is abstract;
      function OnLowResource(
         This : access IBindStatusCallback;
         reserved : DWORD
      ) return HRESULT is abstract;
      function OnProgress(
         This : access IBindStatusCallback;
         ulProgress : ULONG;
         ulProgressMax : ULONG;
         ulStatusCode : ULONG;
         szStatusText : LPCWSTR
      ) return HRESULT is abstract;
      function OnStopBinding(
         This : access IBindStatusCallback;
         hresult_x : HRESULT;
         szError : LPCWSTR
      ) return HRESULT is abstract;
      function GetBindInfo(
         This : access IBindStatusCallback;
         grfBINDF : access DWORD;
         pbindinfo : access BINDINFO
      ) return HRESULT is abstract;
      function OnDataAvailable(
         This : access IBindStatusCallback;
         grfBSCF : DWORD;
         dwSize : DWORD;
         pformatetc : access FORMATETC;
         pstgmed : access STGMEDIUM
      ) return HRESULT is abstract;
      function OnObjectAvailable(
         This : access IBindStatusCallback;
         riid : access constant IID;
         punk : access IUnknown'Class
      ) return HRESULT is abstract;
   function IBindStatusCallback_RemoteGetBindInfo_Proxy(
      This : access IBindStatusCallback'Class;
      grfBINDF : access DWORD;
      pbindinfo : access RemBINDINFO;
      pstgmed : access RemSTGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IBindStatusCallback_RemoteGetBindInfo_Proxy,"IBindStatusCallback_RemoteGetBindInfo_Proxy");
   procedure IBindStatusCallback_RemoteGetBindInfo_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IBindStatusCallback_RemoteGetBindInfo_Stub,"IBindStatusCallback_RemoteGetBindInfo_Stub");
   function IBindStatusCallback_RemoteOnDataAvailable_Proxy(
      This : access IBindStatusCallback'Class;
      grfBSCF : DWORD;
      dwSize : DWORD;
      pformatetc : access RemFORMATETC;
      pstgmed : access RemSTGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IBindStatusCallback_RemoteOnDataAvailable_Proxy,"IBindStatusCallback_RemoteOnDataAvailable_Proxy");
   procedure IBindStatusCallback_RemoteOnDataAvailable_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IBindStatusCallback_RemoteOnDataAvailable_Stub,"IBindStatusCallback_RemoteOnDataAvailable_Stub");
   type LPBINDSTATUSCALLBACKEX is access all IBindStatusCallbackEx;
   type MIDL_IBindStatusCallbackEx_0001_x is (
      BINDF2_RESERVED_1,
      BINDF2_DISABLEBASICOVERHTTP,
      BINDF2_DISABLEAUTOCOOKIEHANDLING,
      BINDF2_READ_DATA_GREATER_THAN_4GB,
      BINDF2_DISABLE_HTTP_REDIRECT_XSECURITYID,
      BINDF2_SETDOWNLOADMODE,
      BINDF2_DISABLE_HTTP_REDIRECT_CACHING,
      BINDF2_KEEP_CALLBACK_MODULE_LOADED,
      BINDF2_ALLOW_PROXY_CRED_PROMPT,
      BINDF2_RESERVED_17,
      BINDF2_RESERVED_16,
      BINDF2_RESERVED_15,
      BINDF2_RESERVED_14,
      BINDF2_RESERVED_13,
      BINDF2_RESERVED_12,
      BINDF2_RESERVED_11,
      BINDF2_RESERVED_10,
      BINDF2_RESERVED_F,
      BINDF2_RESERVED_E,
      BINDF2_RESERVED_D,
      BINDF2_RESERVED_C,
      BINDF2_RESERVED_B,
      BINDF2_RESERVED_A,
      BINDF2_RESERVED_9,
      BINDF2_RESERVED_8,
      BINDF2_RESERVED_7,
      BINDF2_RESERVED_6,
      BINDF2_RESERVED_5,
      BINDF2_RESERVED_4,
      BINDF2_RESERVED_3,
      BINDF2_RESERVED_2
   );
   for MIDL_IBindStatusCallbackEx_0001_x use (
      BINDF2_RESERVED_1 => -2147483648,
      BINDF2_DISABLEBASICOVERHTTP => 1,
      BINDF2_DISABLEAUTOCOOKIEHANDLING => 2,
      BINDF2_READ_DATA_GREATER_THAN_4GB => 4,
      BINDF2_DISABLE_HTTP_REDIRECT_XSECURITYID => 8,
      BINDF2_SETDOWNLOADMODE => 32,
      BINDF2_DISABLE_HTTP_REDIRECT_CACHING => 64,
      BINDF2_KEEP_CALLBACK_MODULE_LOADED => 128,
      BINDF2_ALLOW_PROXY_CRED_PROMPT => 256,
      BINDF2_RESERVED_17 => 512,
      BINDF2_RESERVED_16 => 1024,
      BINDF2_RESERVED_15 => 2048,
      BINDF2_RESERVED_14 => 4096,
      BINDF2_RESERVED_13 => 8192,
      BINDF2_RESERVED_12 => 16384,
      BINDF2_RESERVED_11 => 32768,
      BINDF2_RESERVED_10 => 65536,
      BINDF2_RESERVED_F => 131072,
      BINDF2_RESERVED_E => 262144,
      BINDF2_RESERVED_D => 524288,
      BINDF2_RESERVED_C => 1048576,
      BINDF2_RESERVED_B => 2097152,
      BINDF2_RESERVED_A => 4194304,
      BINDF2_RESERVED_9 => 8388608,
      BINDF2_RESERVED_8 => 16777216,
      BINDF2_RESERVED_7 => 33554432,
      BINDF2_RESERVED_6 => 67108864,
      BINDF2_RESERVED_5 => 134217728,
      BINDF2_RESERVED_4 => 268435456,
      BINDF2_RESERVED_3 => 536870912,
      BINDF2_RESERVED_2 => 1073741824
   );
   for MIDL_IBindStatusCallbackEx_0001_x'Size use 32;
   subtype BINDF2 is MIDL_IBindStatusCallbackEx_0001_x;
   IID_IBindStatusCallbackEx : aliased constant IID;
   pragma import (C,IID_IBindStatusCallbackEx,"IID_IBindStatusCallbackEx");
   type IBindStatusCallbackEx is limited interface and IBindStatusCallback;
      function GetBindInfoEx(
         This : access IBindStatusCallbackEx;
         grfBINDF : access DWORD;
         pbindinfo : access BINDINFO;
         grfBINDF2 : access DWORD;
         pdwReserved : access DWORD
      ) return HRESULT is abstract;
   type IBindStatusCallbackEx_Ptr is access all IBindStatusCallbackEx'Class;
   function IBindStatusCallbackEx_RemoteGetBindInfoEx_Proxy(
      This : access IBindStatusCallbackEx'Class;
      grfBINDF : access DWORD;
      pbindinfo : access RemBINDINFO;
      pstgmed : access RemSTGMEDIUM;
      grfBINDF2 : access DWORD;
      pdwReserved : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IBindStatusCallbackEx_RemoteGetBindInfoEx_Proxy,"IBindStatusCallbackEx_RemoteGetBindInfoEx_Proxy");
   procedure IBindStatusCallbackEx_RemoteGetBindInfoEx_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IBindStatusCallbackEx_RemoteGetBindInfoEx_Stub,"IBindStatusCallbackEx_RemoteGetBindInfoEx_Stub");
   type LPAUTHENTICATION is access all IAuthenticate;
   IID_IAuthenticate : aliased constant IID;
   pragma import (C,IID_IAuthenticate,"IID_IAuthenticate");
   type IAuthenticate is limited interface and IUnknown;
      function Authenticate(
         This : access IAuthenticate;
         phwnd : access HWND;
         pszUsername : access LPWSTR;
         pszPassword : access LPWSTR
      ) return HRESULT is abstract;
   type IAuthenticate_Ptr is access all IAuthenticate'Class;
   type LPAUTHENTICATIONEX is access all IAuthenticateEx;
   type MIDL_IAuthenticateEx_0001_x is (
      AUTHENTICATEF_PROXY,
      AUTHENTICATEF_BASIC,
      AUTHENTICATEF_HTTP
   );
   for MIDL_IAuthenticateEx_0001_x use (
      AUTHENTICATEF_PROXY => 1,
      AUTHENTICATEF_BASIC => 2,
      AUTHENTICATEF_HTTP => 4
   );
   for MIDL_IAuthenticateEx_0001_x'Size use 32;
   subtype AUTHENTICATEF is MIDL_IAuthenticateEx_0001_x;
   type tagAUTHENTICATEINFO_x is record
      dwFlags : DWORD;
      dwReserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagAUTHENTICATEINFO_x);
   for tagAUTHENTICATEINFO_x use record
      dwFlags at 0 range 0..31;
      dwReserved at 0 range 32..63;
   end record;
   for tagAUTHENTICATEINFO_x'Size use 64;
   for tagAUTHENTICATEINFO_x'Alignment use 4;
   subtype AUTHENTICATEINFO is tagAUTHENTICATEINFO_x;
   IID_IAuthenticateEx : aliased constant IID;
   pragma import (C,IID_IAuthenticateEx,"IID_IAuthenticateEx");
   type IAuthenticateEx is limited interface and IAuthenticate;
      function AuthenticateEx(
         This : access IAuthenticateEx;
         phwnd : access HWND;
         pszUsername : access LPWSTR;
         pszPassword : access LPWSTR;
         pauthinfo : access AUTHENTICATEINFO
      ) return HRESULT is abstract;
   type IAuthenticateEx_Ptr is access all IAuthenticateEx'Class;
   type LPHTTPNEGOTIATE is access all IHttpNegotiate;
   IID_IHttpNegotiate : aliased constant IID;
   pragma import (C,IID_IHttpNegotiate,"IID_IHttpNegotiate");
   type IHttpNegotiate is limited interface and IUnknown;
      function BeginningTransaction(
         This : access IHttpNegotiate;
         szURL : LPCWSTR;
         szHeaders : LPCWSTR;
         dwReserved : DWORD;
         pszAdditionalHeaders : access LPWSTR
      ) return HRESULT is abstract;
      function OnResponse(
         This : access IHttpNegotiate;
         dwResponseCode : DWORD;
         szResponseHeaders : LPCWSTR;
         szRequestHeaders : LPCWSTR;
         pszAdditionalRequestHeaders : access LPWSTR
      ) return HRESULT is abstract;
   type IHttpNegotiate_Ptr is access all IHttpNegotiate'Class;
   type LPHTTPNEGOTIATE2 is access all IHttpNegotiate2;
   IID_IHttpNegotiate2 : aliased constant IID;
   pragma import (C,IID_IHttpNegotiate2,"IID_IHttpNegotiate2");
   type IHttpNegotiate2 is limited interface and IHttpNegotiate;
      function GetRootSecurityId(
         This : access IHttpNegotiate2;
         pbSecurityId : access BYTE;
         pcbSecurityId : access DWORD;
         dwReserved : DWORD_PTR
      ) return HRESULT is abstract;
   type IHttpNegotiate2_Ptr is access all IHttpNegotiate2'Class;
   type LPHTTPNEGOTIATE3 is access all IHttpNegotiate3;
   IID_IHttpNegotiate3 : aliased constant IID;
   pragma import (C,IID_IHttpNegotiate3,"IID_IHttpNegotiate3");
   type IHttpNegotiate3 is limited interface and IHttpNegotiate2;
      function GetSerializedClientCertContext(
         This : access IHttpNegotiate3;
         ppbCert : access PBYTE;
         pcbCert : access DWORD
      ) return HRESULT is abstract;
   type IHttpNegotiate3_Ptr is access all IHttpNegotiate3'Class;
   type LPWININETFILESTREAM is access all IWinInetFileStream;
   IID_IWinInetFileStream : aliased constant IID;
   pragma import (C,IID_IWinInetFileStream,"IID_IWinInetFileStream");
   type IWinInetFileStream is limited interface and IUnknown;
      function SetHandleForUnlock(
         This : access IWinInetFileStream;
         hWinInetLockHandle : DWORD_PTR;
         dwReserved : DWORD_PTR
      ) return HRESULT is abstract;
      function SetDeleteFile(
         This : access IWinInetFileStream;
         dwReserved : DWORD_PTR
      ) return HRESULT is abstract;
   type IWinInetFileStream_Ptr is access all IWinInetFileStream'Class;
   type LPWINDOWFORBINDINGUI is access all IWindowForBindingUI;
   IID_IWindowForBindingUI : aliased constant IID;
   pragma import (C,IID_IWindowForBindingUI,"IID_IWindowForBindingUI");
   type IWindowForBindingUI is limited interface and IUnknown;
      function GetWindow_x(
         This : access IWindowForBindingUI;
         rguidReason : access constant GUID;
         phwnd : access HWND
      ) return HRESULT is abstract;
   type IWindowForBindingUI_Ptr is access all IWindowForBindingUI'Class;
   type LPCODEINSTALL is access all ICodeInstall;
   type MIDL_ICodeInstall_0001_x is (
      CIP_DISK_FULL,
      CIP_ACCESS_DENIED,
      CIP_NEWER_VERSION_EXISTS,
      CIP_OLDER_VERSION_EXISTS,
      CIP_NAME_CONFLICT,
      CIP_TRUST_VERIFICATION_COMPONENT_MISSING,
      CIP_EXE_SELF_REGISTERATION_TIMEOUT,
      CIP_UNSAFE_TO_ABORT,
      CIP_NEED_REBOOT,
      CIP_NEED_REBOOT_UI_PERMISSION
   );
   for MIDL_ICodeInstall_0001_x use (
      CIP_DISK_FULL => 0,
      CIP_ACCESS_DENIED => 1,
      CIP_NEWER_VERSION_EXISTS => 2,
      CIP_OLDER_VERSION_EXISTS => 3,
      CIP_NAME_CONFLICT => 4,
      CIP_TRUST_VERIFICATION_COMPONENT_MISSING => 5,
      CIP_EXE_SELF_REGISTERATION_TIMEOUT => 6,
      CIP_UNSAFE_TO_ABORT => 7,
      CIP_NEED_REBOOT => 8,
      CIP_NEED_REBOOT_UI_PERMISSION => 9
   );
   for MIDL_ICodeInstall_0001_x'Size use 32;
   subtype CIP_STATUS is MIDL_ICodeInstall_0001_x;
   IID_ICodeInstall : aliased constant IID;
   pragma import (C,IID_ICodeInstall,"IID_ICodeInstall");
   type ICodeInstall is limited interface and IWindowForBindingUI;
      function OnCodeInstallProblem(
         This : access ICodeInstall;
         ulStatusCode : ULONG;
         szDestination : LPCWSTR;
         szSource : LPCWSTR;
         dwReserved : DWORD
      ) return HRESULT is abstract;
   type ICodeInstall_Ptr is access all ICodeInstall'Class;
   type MIDL_IUri_0001_x is (
      Uri_PROPERTY_ABSOLUTE_URI,
      Uri_PROPERTY_AUTHORITY,
      Uri_PROPERTY_DISPLAY_URI,
      Uri_PROPERTY_DOMAIN,
      Uri_PROPERTY_EXTENSION,
      Uri_PROPERTY_FRAGMENT,
      Uri_PROPERTY_HOST,
      Uri_PROPERTY_PASSWORD,
      Uri_PROPERTY_PATH,
      Uri_PROPERTY_PATH_AND_QUERY,
      Uri_PROPERTY_QUERY,
      Uri_PROPERTY_RAW_URI,
      Uri_PROPERTY_SCHEME_NAME,
      Uri_PROPERTY_USER_INFO,
      Uri_PROPERTY_USER_NAME,
      Uri_PROPERTY_HOST_TYPE,
      Uri_PROPERTY_PORT,
      Uri_PROPERTY_SCHEME,
      Uri_PROPERTY_ZONE
   );
   for MIDL_IUri_0001_x use (
      Uri_PROPERTY_ABSOLUTE_URI => 0,
      Uri_PROPERTY_AUTHORITY => 1,
      Uri_PROPERTY_DISPLAY_URI => 2,
      Uri_PROPERTY_DOMAIN => 3,
      Uri_PROPERTY_EXTENSION => 4,
      Uri_PROPERTY_FRAGMENT => 5,
      Uri_PROPERTY_HOST => 6,
      Uri_PROPERTY_PASSWORD => 7,
      Uri_PROPERTY_PATH => 8,
      Uri_PROPERTY_PATH_AND_QUERY => 9,
      Uri_PROPERTY_QUERY => 10,
      Uri_PROPERTY_RAW_URI => 11,
      Uri_PROPERTY_SCHEME_NAME => 12,
      Uri_PROPERTY_USER_INFO => 13,
      Uri_PROPERTY_USER_NAME => 14,
      Uri_PROPERTY_HOST_TYPE => 15,
      Uri_PROPERTY_PORT => 16,
      Uri_PROPERTY_SCHEME => 17,
      Uri_PROPERTY_ZONE => 18
   );
   for MIDL_IUri_0001_x'Size use 32;
   subtype Uri_PROPERTY is MIDL_IUri_0001_x;
   type MIDL_IUri_0002_x is (
      Uri_HOST_UNKNOWN,
      Uri_HOST_DNS,
      Uri_HOST_IPV4,
      Uri_HOST_IPV6,
      Uri_HOST_IDN
   );
   for MIDL_IUri_0002_x use (
      Uri_HOST_UNKNOWN => 0,
      Uri_HOST_DNS => 1,
      Uri_HOST_IPV4 => 2,
      Uri_HOST_IPV6 => 3,
      Uri_HOST_IDN => 4
   );
   for MIDL_IUri_0002_x'Size use 32;
   subtype Uri_HOST_TYPE is MIDL_IUri_0002_x;
   IID_IUri : aliased constant IID;
   pragma import (C,IID_IUri,"IID_IUri");
   type IUri is limited interface and IUnknown;
      function GetPropertyBSTR(
         This : access IUri;
         uriProp : Uri_PROPERTY;
         pbstrProperty : access BSTR;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function GetPropertyLength(
         This : access IUri;
         uriProp : Uri_PROPERTY;
         pcchProperty : access DWORD;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function GetPropertyDWORD(
         This : access IUri;
         uriProp : Uri_PROPERTY;
         pdwProperty : access DWORD;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function HasProperty(
         This : access IUri;
         uriProp : Uri_PROPERTY;
         pfHasProperty : access BOOL
      ) return HRESULT is abstract;
      function GetAbsoluteUri(
         This : access IUri;
         pbstrAbsoluteUri : access BSTR
      ) return HRESULT is abstract;
      function GetAuthority(
         This : access IUri;
         pbstrAuthority : access BSTR
      ) return HRESULT is abstract;
      function GetDisplayUri(
         This : access IUri;
         pbstrDisplayString : access BSTR
      ) return HRESULT is abstract;
      function GetDomain(
         This : access IUri;
         pbstrDomain : access BSTR
      ) return HRESULT is abstract;
      function GetExtension(
         This : access IUri;
         pbstrExtension : access BSTR
      ) return HRESULT is abstract;
      function GetFragment(
         This : access IUri;
         pbstrFragment : access BSTR
      ) return HRESULT is abstract;
      function GetHost(
         This : access IUri;
         pbstrHost : access BSTR
      ) return HRESULT is abstract;
      function GetPassword(
         This : access IUri;
         pbstrPassword : access BSTR
      ) return HRESULT is abstract;
      function GetPath_x(
         This : access IUri;
         pbstrPath : access BSTR
      ) return HRESULT is abstract;
      function GetPathAndQuery(
         This : access IUri;
         pbstrPathAndQuery : access BSTR
      ) return HRESULT is abstract;
      function GetQuery(
         This : access IUri;
         pbstrQuery : access BSTR
      ) return HRESULT is abstract;
      function GetRawUri(
         This : access IUri;
         pbstrRawUri : access BSTR
      ) return HRESULT is abstract;
      function GetSchemeName(
         This : access IUri;
         pbstrSchemeName : access BSTR
      ) return HRESULT is abstract;
      function GetUserInfo(
         This : access IUri;
         pbstrUserInfo : access BSTR
      ) return HRESULT is abstract;
      function GetUserNameA_x(
         This : access IUri;
         pbstrUserName : access BSTR
      ) return HRESULT is abstract;
      function GetHostType(
         This : access IUri;
         pdwHostType : access DWORD
      ) return HRESULT is abstract;
      function GetPort(
         This : access IUri;
         pdwPort : access DWORD
      ) return HRESULT is abstract;
      function GetScheme(
         This : access IUri;
         pdwScheme : access DWORD
      ) return HRESULT is abstract;
      function GetZone(
         This : access IUri;
         pdwZone : access DWORD
      ) return HRESULT is abstract;
      function GetProperties(
         This : access IUri;
         pdwFlags : LPDWORD
      ) return HRESULT is abstract;
      function IsEqual(
         This : access IUri;
         pUri : access IUri'Class;
         pfEqual : access BOOL
      ) return HRESULT is abstract;
   type IUri_Ptr is access all IUri'Class;
   function CreateUri(
      pwzURI : LPCWSTR;
      dwFlags : DWORD;
      dwReserved : DWORD_PTR;
      ppURI : access IUri_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateUri,"CreateUri");
   function CreateUriWithFragment(
      pwzURI : LPCWSTR;
      pwzFragment : LPCWSTR;
      dwFlags : DWORD;
      dwReserved : DWORD_PTR;
      ppURI : access IUri_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateUriWithFragment,"CreateUriWithFragment");
   function CreateUriFromMultiByteString(
      pszANSIInputUri : LPCSTR;
      dwEncodingFlags : DWORD;
      dwCodePage : DWORD;
      dwCreateFlags : DWORD;
      dwReserved : DWORD_PTR;
      ppUri : access IUri_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateUriFromMultiByteString,"CreateUriFromMultiByteString");
   IID_IUriContainer : aliased constant IID;
   pragma import (C,IID_IUriContainer,"IID_IUriContainer");
   type IUriContainer is limited interface and IUnknown;
      function GetIUri(
         This : access IUriContainer;
         ppIUri : access IUri_Ptr
      ) return HRESULT is abstract;
   type IUriContainer_Ptr is access all IUriContainer'Class;
   IID_IUriBuilder : aliased constant IID;
   pragma import (C,IID_IUriBuilder,"IID_IUriBuilder");
   type IUriBuilder is limited interface and IUnknown;
      function CreateUriSimple(
         This : access IUriBuilder;
         dwAllowEncodingPropertyMask : DWORD;
         dwReserved : DWORD_PTR;
         ppIUri : access IUri_Ptr
      ) return HRESULT is abstract;
      function CreateUri_x(
         This : access IUriBuilder;
         dwCreateFlags : DWORD;
         dwAllowEncodingPropertyMask : DWORD;
         dwReserved : DWORD_PTR;
         ppIUri : access IUri_Ptr
      ) return HRESULT is abstract;
      function CreateUriWithFlags(
         This : access IUriBuilder;
         dwCreateFlags : DWORD;
         dwUriBuilderFlags : DWORD;
         dwAllowEncodingPropertyMask : DWORD;
         dwReserved : DWORD_PTR;
         ppIUri : access IUri_Ptr
      ) return HRESULT is abstract;
      function GetIUri(
         This : access IUriBuilder;
         ppIUri : access IUri_Ptr
      ) return HRESULT is abstract;
      function SetIUri(
         This : access IUriBuilder;
         pIUri : access IUri'Class
      ) return HRESULT is abstract;
      function GetFragment(
         This : access IUriBuilder;
         pcchFragment : access DWORD;
         ppwzFragment : access LPCWSTR
      ) return HRESULT is abstract;
      function GetHost(
         This : access IUriBuilder;
         pcchHost : access DWORD;
         ppwzHost : access LPCWSTR
      ) return HRESULT is abstract;
      function GetPassword(
         This : access IUriBuilder;
         pcchPassword : access DWORD;
         ppwzPassword : access LPCWSTR
      ) return HRESULT is abstract;
      function GetPath_x(
         This : access IUriBuilder;
         pcchPath : access DWORD;
         ppwzPath : access LPCWSTR
      ) return HRESULT is abstract;
      function GetPort(
         This : access IUriBuilder;
         pfHasPort : access BOOL;
         pdwPort : access DWORD
      ) return HRESULT is abstract;
      function GetQuery(
         This : access IUriBuilder;
         pcchQuery : access DWORD;
         ppwzQuery : access LPCWSTR
      ) return HRESULT is abstract;
      function GetSchemeName(
         This : access IUriBuilder;
         pcchSchemeName : access DWORD;
         ppwzSchemeName : access LPCWSTR
      ) return HRESULT is abstract;
      function GetUserNameA_x(
         This : access IUriBuilder;
         pcchUserName : access DWORD;
         ppwzUserName : access LPCWSTR
      ) return HRESULT is abstract;
      function SetFragment(
         This : access IUriBuilder;
         pwzNewValue : LPCWSTR
      ) return HRESULT is abstract;
      function SetHost(
         This : access IUriBuilder;
         pwzNewValue : LPCWSTR
      ) return HRESULT is abstract;
      function SetPassword(
         This : access IUriBuilder;
         pwzNewValue : LPCWSTR
      ) return HRESULT is abstract;
      function SetPath(
         This : access IUriBuilder;
         pwzNewValue : LPCWSTR
      ) return HRESULT is abstract;
      function SetPortA_x(
         This : access IUriBuilder;
         fHasPort : BOOL;
         dwNewValue : DWORD
      ) return HRESULT is abstract;
      function SetQuery(
         This : access IUriBuilder;
         pwzNewValue : LPCWSTR
      ) return HRESULT is abstract;
      function SetSchemeName(
         This : access IUriBuilder;
         pwzNewValue : LPCWSTR
      ) return HRESULT is abstract;
      function SetUserName(
         This : access IUriBuilder;
         pwzNewValue : LPCWSTR
      ) return HRESULT is abstract;
      function RemoveProperties(
         This : access IUriBuilder;
         dwPropertyMask : DWORD
      ) return HRESULT is abstract;
      function HasBeenModified(
         This : access IUriBuilder;
         pfModified : access BOOL
      ) return HRESULT is abstract;
   type IUriBuilder_Ptr is access all IUriBuilder'Class;
   IID_IUriBuilderFactory : aliased constant IID;
   pragma import (C,IID_IUriBuilderFactory,"IID_IUriBuilderFactory");
   type IUriBuilderFactory is limited interface and IUnknown;
      function CreateIUriBuilder(
         This : access IUriBuilderFactory;
         dwFlags : DWORD;
         dwReserved : DWORD_PTR;
         ppIUriBuilder : access IUriBuilder_Ptr
      ) return HRESULT is abstract;
      function CreateInitializedIUriBuilder(
         This : access IUriBuilderFactory;
         dwFlags : DWORD;
         dwReserved : DWORD_PTR;
         ppIUriBuilder : access IUriBuilder_Ptr
      ) return HRESULT is abstract;
   type IUriBuilderFactory_Ptr is access all IUriBuilderFactory'Class;
   function CreateIUriBuilder(
      pIUri : access IUri'Class;
      dwFlags : DWORD;
      dwReserved : DWORD_PTR;
      ppIUriBuilder : access IUriBuilder_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateIUriBuilder,"CreateIUriBuilder");
   type LPWININETINFO is access all IWinInetInfo;
   IID_IWinInetInfo : aliased constant IID;
   pragma import (C,IID_IWinInetInfo,"IID_IWinInetInfo");
   type IWinInetInfo is limited interface and IUnknown;
      function QueryOption(
         This : access IWinInetInfo;
         dwOption : DWORD;
         pBuffer : LPVOID;
         pcbBuf : access DWORD
      ) return HRESULT is abstract;
   type IWinInetInfo_Ptr is access all IWinInetInfo'Class;
   function IWinInetInfo_RemoteQueryOption_Proxy(
      This : access IWinInetInfo'Class;
      dwOption : DWORD;
      pBuffer : access BYTE;
      pcbBuf : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IWinInetInfo_RemoteQueryOption_Proxy,"IWinInetInfo_RemoteQueryOption_Proxy");
   procedure IWinInetInfo_RemoteQueryOption_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IWinInetInfo_RemoteQueryOption_Stub,"IWinInetInfo_RemoteQueryOption_Stub");
   type LPHTTPSECURITY is access all IHttpSecurity;
   IID_IHttpSecurity : aliased constant IID;
   pragma import (C,IID_IHttpSecurity,"IID_IHttpSecurity");
   type IHttpSecurity is limited interface and IWindowForBindingUI;
      function OnSecurityProblem(
         This : access IHttpSecurity;
         dwProblem : DWORD
      ) return HRESULT is abstract;
   type IHttpSecurity_Ptr is access all IHttpSecurity'Class;
   type LPWININETHTTPINFO is access all IWinInetHttpInfo;
   IID_IWinInetHttpInfo : aliased constant IID;
   pragma import (C,IID_IWinInetHttpInfo,"IID_IWinInetHttpInfo");
   type IWinInetHttpInfo is limited interface and IWinInetInfo;
      function QueryInfo(
         This : access IWinInetHttpInfo;
         dwOption : DWORD;
         pBuffer : LPVOID;
         pcbBuf : access DWORD;
         pdwFlags : access DWORD;
         pdwReserved : access DWORD
      ) return HRESULT is abstract;
   type IWinInetHttpInfo_Ptr is access all IWinInetHttpInfo'Class;
   function IWinInetHttpInfo_RemoteQueryInfo_Proxy(
      This : access IWinInetHttpInfo'Class;
      dwOption : DWORD;
      pBuffer : access BYTE;
      pcbBuf : access DWORD;
      pdwFlags : access DWORD;
      pdwReserved : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IWinInetHttpInfo_RemoteQueryInfo_Proxy,"IWinInetHttpInfo_RemoteQueryInfo_Proxy");
   procedure IWinInetHttpInfo_RemoteQueryInfo_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IWinInetHttpInfo_RemoteQueryInfo_Stub,"IWinInetHttpInfo_RemoteQueryInfo_Stub");
   IID_IWinInetHttpTimeouts : aliased constant IID;
   pragma import (C,IID_IWinInetHttpTimeouts,"IID_IWinInetHttpTimeouts");
   type IWinInetHttpTimeouts is limited interface and IUnknown;
      function GetRequestTimeouts(
         This : access IWinInetHttpTimeouts;
         pdwConnectTimeout : access DWORD;
         pdwSendTimeout : access DWORD;
         pdwReceiveTimeout : access DWORD
      ) return HRESULT is abstract;
   type IWinInetHttpTimeouts_Ptr is access all IWinInetHttpTimeouts'Class;
   type LPWININETCACHEHINTS is access all IWinInetCacheHints;
   IID_IWinInetCacheHints : aliased constant IID;
   pragma import (C,IID_IWinInetCacheHints,"IID_IWinInetCacheHints");
   type IWinInetCacheHints is limited interface and IUnknown;
      function SetCacheExtension(
         This : access IWinInetCacheHints;
         pwzExt : LPCWSTR;
         pszCacheFile : LPVOID;
         pcbCacheFile : access DWORD;
         pdwWinInetError : access DWORD;
         pdwReserved : access DWORD
      ) return HRESULT is abstract;
   type IWinInetCacheHints_Ptr is access all IWinInetCacheHints'Class;
   type LPWININETCACHEHINTS2 is access all IWinInetCacheHints2;
   IID_IWinInetCacheHints2 : aliased constant IID;
   pragma import (C,IID_IWinInetCacheHints2,"IID_IWinInetCacheHints2");
   type IWinInetCacheHints2 is limited interface and IWinInetCacheHints;
      function SetCacheExtension2(
         This : access IWinInetCacheHints2;
         pwzExt : LPCWSTR;
         pwzCacheFile : access WCHAR;
         pcchCacheFile : access DWORD;
         pdwWinInetError : access DWORD;
         pdwReserved : access DWORD
      ) return HRESULT is abstract;
   type IWinInetCacheHints2_Ptr is access all IWinInetCacheHints2'Class;
   type LPBINDHOST is access all IBindHost;
   IID_IBindHost : aliased constant IID;
   pragma import (C,IID_IBindHost,"IID_IBindHost");
   type IBindHost is limited interface and IUnknown;
      function CreateMoniker(
         This : access IBindHost;
         szName : LPOLESTR;
         pBC : access IBindCtx'Class;
         ppmk : access IMoniker_Ptr;
         dwReserved : DWORD
      ) return HRESULT is abstract;
      function MonikerBindToStorage(
         This : access IBindHost;
         pMk : access IMoniker'Class;
         pBC : access IBindCtx'Class;
         pBSC : access IBindStatusCallback'Class;
         riid : access constant IID;
         ppvObj : access LPVOID
      ) return HRESULT is abstract;
      function MonikerBindToObject(
         This : access IBindHost;
         pMk : access IMoniker'Class;
         pBC : access IBindCtx'Class;
         pBSC : access IBindStatusCallback'Class;
         riid : access constant IID;
         ppvObj : access LPVOID
      ) return HRESULT is abstract;
   type IBindHost_Ptr is access all IBindHost'Class;
   function IBindHost_RemoteMonikerBindToStorage_Proxy(
      This : access IBindHost'Class;
      pMk : access IMoniker'Class;
      pBC : access IBindCtx'Class;
      pBSC : access IBindStatusCallback'Class;
      riid : access constant IID;
      ppvObj : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IBindHost_RemoteMonikerBindToStorage_Proxy,"IBindHost_RemoteMonikerBindToStorage_Proxy");
   procedure IBindHost_RemoteMonikerBindToStorage_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IBindHost_RemoteMonikerBindToStorage_Stub,"IBindHost_RemoteMonikerBindToStorage_Stub");
   function IBindHost_RemoteMonikerBindToObject_Proxy(
      This : access IBindHost'Class;
      pMk : access IMoniker'Class;
      pBC : access IBindCtx'Class;
      pBSC : access IBindStatusCallback'Class;
      riid : access constant IID;
      ppvObj : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IBindHost_RemoteMonikerBindToObject_Proxy,"IBindHost_RemoteMonikerBindToObject_Proxy");
   procedure IBindHost_RemoteMonikerBindToObject_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IBindHost_RemoteMonikerBindToObject_Stub,"IBindHost_RemoteMonikerBindToObject_Stub");
   function HlinkSimpleNavigateToString(
      szTarget : LPCWSTR;
      szLocation : LPCWSTR;
      szTargetFrameName : LPCWSTR;
      pUnk : access IUnknown'Class;
      pbc : access IBindCtx'Class;
      param6 : access IBindStatusCallback'Class;
      grfHLNF : DWORD;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,HlinkSimpleNavigateToString,"HlinkSimpleNavigateToString");
   function HlinkSimpleNavigateToMoniker(
      pmkTarget : access IMoniker'Class;
      szLocation : LPCWSTR;
      szTargetFrameName : LPCWSTR;
      pUnk : access IUnknown'Class;
      pbc : access IBindCtx'Class;
      param6 : access IBindStatusCallback'Class;
      grfHLNF : DWORD;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,HlinkSimpleNavigateToMoniker,"HlinkSimpleNavigateToMoniker");
   function URLOpenStreamA(
      param1 : LPUNKNOWN;
      param2 : LPCSTR;
      param3 : DWORD;
      param4 : LPBINDSTATUSCALLBACK
   ) return HRESULT;
   pragma import (Cpp,URLOpenStreamA,"URLOpenStreamA");
   function URLOpenStreamW(
      param1 : LPUNKNOWN;
      param2 : LPCWSTR;
      param3 : DWORD;
      param4 : LPBINDSTATUSCALLBACK
   ) return HRESULT;
   pragma import (Cpp,URLOpenStreamW,"URLOpenStreamW");
   function URLOpenPullStreamA(
      param1 : LPUNKNOWN;
      param2 : LPCSTR;
      param3 : DWORD;
      param4 : LPBINDSTATUSCALLBACK
   ) return HRESULT;
   pragma import (Cpp,URLOpenPullStreamA,"URLOpenPullStreamA");
   function URLOpenPullStreamW(
      param1 : LPUNKNOWN;
      param2 : LPCWSTR;
      param3 : DWORD;
      param4 : LPBINDSTATUSCALLBACK
   ) return HRESULT;
   pragma import (Cpp,URLOpenPullStreamW,"URLOpenPullStreamW");
   function URLDownloadToFileA(
      param1 : LPUNKNOWN;
      param2 : LPCSTR;
      param3 : LPCSTR;
      param4 : DWORD;
      param5 : LPBINDSTATUSCALLBACK
   ) return HRESULT;
   pragma import (Cpp,URLDownloadToFileA,"URLDownloadToFileA");
   function URLDownloadToFileW(
      param1 : LPUNKNOWN;
      param2 : LPCWSTR;
      param3 : LPCWSTR;
      param4 : DWORD;
      param5 : LPBINDSTATUSCALLBACK
   ) return HRESULT;
   pragma import (Cpp,URLDownloadToFileW,"URLDownloadToFileW");
   function URLDownloadToCacheFileA(
      param1 : LPUNKNOWN;
      param2 : LPCSTR;
      param3 : LPSTR;
      cchFileName : DWORD;
      param5 : DWORD;
      param6 : LPBINDSTATUSCALLBACK
   ) return HRESULT;
   pragma import (Cpp,URLDownloadToCacheFileA,"URLDownloadToCacheFileA");
   function URLDownloadToCacheFileW(
      param1 : LPUNKNOWN;
      param2 : LPCWSTR;
      param3 : LPWSTR;
      cchFileName : DWORD;
      param5 : DWORD;
      param6 : LPBINDSTATUSCALLBACK
   ) return HRESULT;
   pragma import (Cpp,URLDownloadToCacheFileW,"URLDownloadToCacheFileW");
   function URLOpenBlockingStreamA(
      param1 : LPUNKNOWN;
      param2 : LPCSTR;
      param3 : access LPSTREAM;
      param4 : DWORD;
      param5 : LPBINDSTATUSCALLBACK
   ) return HRESULT;
   pragma import (Cpp,URLOpenBlockingStreamA,"URLOpenBlockingStreamA");
   function URLOpenBlockingStreamW(
      param1 : LPUNKNOWN;
      param2 : LPCWSTR;
      param3 : access LPSTREAM;
      param4 : DWORD;
      param5 : LPBINDSTATUSCALLBACK
   ) return HRESULT;
   pragma import (Cpp,URLOpenBlockingStreamW,"URLOpenBlockingStreamW");
   function HlinkGoBack(
      pUnk : access IUnknown'Class
   ) return HRESULT;
   pragma import (Cpp,HlinkGoBack,"HlinkGoBack");
   function HlinkGoForward(
      pUnk : access IUnknown'Class
   ) return HRESULT;
   pragma import (Cpp,HlinkGoForward,"HlinkGoForward");
   function HlinkNavigateString(
      pUnk : access IUnknown'Class;
      szTarget : LPCWSTR
   ) return HRESULT;
   pragma import (Cpp,HlinkNavigateString,"HlinkNavigateString");
   function HlinkNavigateMoniker(
      pUnk : access IUnknown'Class;
      pmkTarget : access IMoniker'Class
   ) return HRESULT;
   pragma import (Cpp,HlinkNavigateMoniker,"HlinkNavigateMoniker");
   type LPIINTERNET is access all IInternet;
   IID_IInternet : aliased constant IID;
   pragma import (C,IID_IInternet,"IID_IInternet");
   type LPIINTERNETBINDINFO is access all IInternetBindInfo;
   type tagBINDSTRING is (
      BINDSTRING_HEADERS,
      BINDSTRING_ACCEPT_MIMES,
      BINDSTRING_EXTRA_URL,
      BINDSTRING_LANGUAGE,
      BINDSTRING_USERNAME,
      BINDSTRING_PASSWORD,
      BINDSTRING_UA_PIXELS,
      BINDSTRING_UA_COLOR,
      BINDSTRING_OS,
      BINDSTRING_USER_AGENT,
      BINDSTRING_ACCEPT_ENCODINGS,
      BINDSTRING_POST_COOKIE,
      BINDSTRING_POST_DATA_MIME,
      BINDSTRING_URL,
      BINDSTRING_IID,
      BINDSTRING_FLAG_BIND_TO_OBJECT,
      BINDSTRING_PTR_BIND_CONTEXT,
      BINDSTRING_XDR_ORIGIN,
      BINDSTRING_DOWNLOADPATH,
      BINDSTRING_ROOTDOC_URL,
      BINDSTRING_INITIAL_FILENAME,
      BINDSTRING_PROXY_USERNAME,
      BINDSTRING_PROXY_PASSWORD,
      BINDSTRING_ENTERPRISE_ID,
      BINDSTRING_DOC_URL,
      BINDSTRING_SAMESITE_COOKIE_LEVEL
   );
   for tagBINDSTRING use (
      BINDSTRING_HEADERS => 1,
      BINDSTRING_ACCEPT_MIMES => 2,
      BINDSTRING_EXTRA_URL => 3,
      BINDSTRING_LANGUAGE => 4,
      BINDSTRING_USERNAME => 5,
      BINDSTRING_PASSWORD => 6,
      BINDSTRING_UA_PIXELS => 7,
      BINDSTRING_UA_COLOR => 8,
      BINDSTRING_OS => 9,
      BINDSTRING_USER_AGENT => 10,
      BINDSTRING_ACCEPT_ENCODINGS => 11,
      BINDSTRING_POST_COOKIE => 12,
      BINDSTRING_POST_DATA_MIME => 13,
      BINDSTRING_URL => 14,
      BINDSTRING_IID => 15,
      BINDSTRING_FLAG_BIND_TO_OBJECT => 16,
      BINDSTRING_PTR_BIND_CONTEXT => 17,
      BINDSTRING_XDR_ORIGIN => 18,
      BINDSTRING_DOWNLOADPATH => 19,
      BINDSTRING_ROOTDOC_URL => 20,
      BINDSTRING_INITIAL_FILENAME => 21,
      BINDSTRING_PROXY_USERNAME => 22,
      BINDSTRING_PROXY_PASSWORD => 23,
      BINDSTRING_ENTERPRISE_ID => 24,
      BINDSTRING_DOC_URL => 25,
      BINDSTRING_SAMESITE_COOKIE_LEVEL => 26
   );
   for tagBINDSTRING'Size use 32;
   subtype BINDSTRING is tagBINDSTRING;
   IID_IInternetBindInfo : aliased constant IID;
   pragma import (C,IID_IInternetBindInfo,"IID_IInternetBindInfo");
   type IInternetBindInfo is limited interface and IUnknown;
      function GetBindInfo(
         This : access IInternetBindInfo;
         grfBINDF : access DWORD;
         pbindinfo : access BINDINFO
      ) return HRESULT is abstract;
      function GetBindString(
         This : access IInternetBindInfo;
         ulStringType : ULONG;
         ppwzStr : access LPOLESTR;
         cEl : ULONG;
         pcElFetched : access ULONG
      ) return HRESULT is abstract;
   type IInternetBindInfo_Ptr is access all IInternetBindInfo'Class;
   type LPIINTERNETBINDINFOEX is access all IInternetBindInfoEx;
   IID_IInternetBindInfoEx : aliased constant IID;
   pragma import (C,IID_IInternetBindInfoEx,"IID_IInternetBindInfoEx");
   type IInternetBindInfoEx is limited interface and IInternetBindInfo;
      function GetBindInfoEx(
         This : access IInternetBindInfoEx;
         grfBINDF : access DWORD;
         pbindinfo : access BINDINFO;
         grfBINDF2 : access DWORD;
         pdwReserved : access DWORD
      ) return HRESULT is abstract;
   type IInternetBindInfoEx_Ptr is access all IInternetBindInfoEx'Class;
   type LPIINTERNETPROTOCOLROOT is access all IInternetProtocolRoot;
   type tagPI_FLAGS_x is (
      PI_PARSE_URL,
      PI_FILTER_MODE,
      PI_FORCE_ASYNC,
      PI_USE_WORKERTHREAD,
      PI_MIMEVERIFICATION,
      PI_CLSIDLOOKUP,
      PI_DATAPROGRESS,
      PI_SYNCHRONOUS,
      PI_APARTMENTTHREADED,
      PI_CLASSINSTALL,
      PI_PASSONBINDCTX,
      PI_LOADAPPDIRECT,
      PI_NOMIMEHANDLER,
      PD_FORCE_SWITCH,
      PI_PREFERDEFAULTHANDLER
   );
   for tagPI_FLAGS_x use (
      PI_PARSE_URL => 1,
      PI_FILTER_MODE => 2,
      PI_FORCE_ASYNC => 4,
      PI_USE_WORKERTHREAD => 8,
      PI_MIMEVERIFICATION => 16,
      PI_CLSIDLOOKUP => 32,
      PI_DATAPROGRESS => 64,
      PI_SYNCHRONOUS => 128,
      PI_APARTMENTTHREADED => 256,
      PI_CLASSINSTALL => 512,
      PI_PASSONBINDCTX => 8192,
      PI_LOADAPPDIRECT => 16384,
      PI_NOMIMEHANDLER => 32768,
      PD_FORCE_SWITCH => 65536,
      PI_PREFERDEFAULTHANDLER => 131072
   );
   for tagPI_FLAGS_x'Size use 32;
   subtype PI_FLAGS is tagPI_FLAGS_x;
   type tagPROTOCOLDATA_x is record
      grfFlags : DWORD;
      dwState : DWORD;
      pData : LPVOID;
      cbData : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPROTOCOLDATA_x);
   for tagPROTOCOLDATA_x use record
      grfFlags at 0 range 0..31;
      dwState at 0 range 32..63;
      pData at 0 range 64..127;
      cbData at 0 range 128..159;
   end record;
   for tagPROTOCOLDATA_x'Size use 192;
   for tagPROTOCOLDATA_x'Alignment use 8;
   subtype PROTOCOLDATA is tagPROTOCOLDATA_x;
   type tagStartParam_x is record
      iid_x : IID;
      pIBindCtx : access IBindCtx'Class;
      pItf : access IUnknown'Class;
   end record;
   pragma Convention (C_Pass_By_Copy,tagStartParam_x);
   for tagStartParam_x use record
      iid_x at 0 range 0..127;
      pIBindCtx at 0 range 128..191;
      pItf at 0 range 192..255;
   end record;
   for tagStartParam_x'Size use 256;
   for tagStartParam_x'Alignment use 8;
   subtype StartParam is tagStartParam_x;
   IID_IInternetProtocolRoot : aliased constant IID;
   pragma import (C,IID_IInternetProtocolRoot,"IID_IInternetProtocolRoot");
   type IInternetProtocolRoot is limited interface and IUnknown;
      function Start(
         This : access IInternetProtocolRoot;
         szUrl : LPCWSTR;
         pOIProtSink : access IInternetProtocolSink'Class;
         pOIBindInfo : access IInternetBindInfo'Class;
         grfPI : DWORD;
         dwReserved : HANDLE_PTR
      ) return HRESULT is abstract;
      function Continue(
         This : access IInternetProtocolRoot;
         pProtocolData : access PROTOCOLDATA
      ) return HRESULT is abstract;
      function abort_x_x(
         This : access IInternetProtocolRoot;
         hrReason : HRESULT;
         dwOptions : DWORD
      ) return HRESULT is abstract;
      function terminate_x(
         This : access IInternetProtocolRoot;
         dwOptions : DWORD
      ) return HRESULT is abstract;
      function Suspend(This : access IInternetProtocolRoot) return HRESULT is abstract;
      function Resume(This : access IInternetProtocolRoot) return HRESULT is abstract;
   type IInternetProtocolRoot_Ptr is access all IInternetProtocolRoot'Class;
   type LPIINTERNETPROTOCOL is access all IInternetProtocol;
   IID_IInternetProtocol : aliased constant IID;
   pragma import (C,IID_IInternetProtocol,"IID_IInternetProtocol");
   type IInternetProtocol is limited interface and IInternetProtocolRoot;
      function Read(
         This : access IInternetProtocol;
         pv : access Void;
         cb : ULONG;
         pcbRead : access ULONG
      ) return HRESULT is abstract;
      function Seek(
         This : access IInternetProtocol;
         dlibMove : LARGE_INTEGER;
         dwOrigin : DWORD;
         plibNewPosition : access ULARGE_INTEGER
      ) return HRESULT is abstract;
      function LockRequest(
         This : access IInternetProtocol;
         dwOptions : DWORD
      ) return HRESULT is abstract;
      function UnlockRequest(This : access IInternetProtocol) return HRESULT is abstract;
   type IInternetProtocol_Ptr is access all IInternetProtocol'Class;
   IID_IInternetProtocolEx : aliased constant IID;
   pragma import (C,IID_IInternetProtocolEx,"IID_IInternetProtocolEx");
   type IInternetProtocolEx is limited interface and IInternetProtocol;
      function StartEx(
         This : access IInternetProtocolEx;
         pUri : access IUri'Class;
         pOIProtSink : access IInternetProtocolSink'Class;
         pOIBindInfo : access IInternetBindInfo'Class;
         grfPI : DWORD;
         dwReserved : HANDLE_PTR
      ) return HRESULT is abstract;
   type IInternetProtocolEx_Ptr is access all IInternetProtocolEx'Class;
   type LPIINTERNETPROTOCOLSINK is access all IInternetProtocolSink;
   IID_IInternetProtocolSink : aliased constant IID;
   pragma import (C,IID_IInternetProtocolSink,"IID_IInternetProtocolSink");
   type IInternetProtocolSink is limited interface and IUnknown;
      function Switch(
         This : access IInternetProtocolSink;
         pProtocolData : access PROTOCOLDATA
      ) return HRESULT is abstract;
      function ReportProgress(
         This : access IInternetProtocolSink;
         ulStatusCode : ULONG;
         szStatusText : LPCWSTR
      ) return HRESULT is abstract;
      function ReportData(
         This : access IInternetProtocolSink;
         grfBSCF : DWORD;
         ulProgress : ULONG;
         ulProgressMax : ULONG
      ) return HRESULT is abstract;
      function ReportResult(
         This : access IInternetProtocolSink;
         hrResult : HRESULT;
         dwError : DWORD;
         szResult : LPCWSTR
      ) return HRESULT is abstract;
   type IInternetProtocolSink_Ptr is access all IInternetProtocolSink'Class;
   type LPIINTERNETPROTOCOLSINKStackable is access all IInternetProtocolSinkStackable;
   IID_IInternetProtocolSinkStackable : aliased constant IID;
   pragma import (C,IID_IInternetProtocolSinkStackable,"IID_IInternetProtocolSinkStackable");
   type IInternetProtocolSinkStackable is limited interface and IUnknown;
      function SwitchSink(
         This : access IInternetProtocolSinkStackable;
         pOIProtSink : access IInternetProtocolSink'Class
      ) return HRESULT is abstract;
      function CommitSwitch(This : access IInternetProtocolSinkStackable) return HRESULT is abstract;
      function RollbackSwitch(This : access IInternetProtocolSinkStackable) return HRESULT is abstract;
   type IInternetProtocolSinkStackable_Ptr is access all IInternetProtocolSinkStackable'Class;
   type LPIINTERNETSESSION is access all IInternetSession;
   type tagOIBDG_FLAGS_x is (
      OIBDG_APARTMENTTHREADED,
      OIBDG_DATAONLY
   );
   for tagOIBDG_FLAGS_x use (
      OIBDG_APARTMENTTHREADED => 256,
      OIBDG_DATAONLY => 4096
   );
   for tagOIBDG_FLAGS_x'Size use 32;
   subtype OIBDG_FLAGS is tagOIBDG_FLAGS_x;
   IID_IInternetSession : aliased constant IID;
   pragma import (C,IID_IInternetSession,"IID_IInternetSession");
   type IInternetSession is limited interface and IUnknown;
      function RegisterNameSpace(
         This : access IInternetSession;
         pCF : access IClassFactory'Class;
         rclsid : access constant IID;
         pwzProtocol : LPCWSTR;
         cPatterns : ULONG;
         ppwzPatterns : access constant LPCWSTR;
         dwReserved : DWORD
      ) return HRESULT is abstract;
      function UnregisterNameSpace(
         This : access IInternetSession;
         pCF : access IClassFactory'Class;
         pszProtocol : LPCWSTR
      ) return HRESULT is abstract;
      function RegisterMimeFilter(
         This : access IInternetSession;
         pCF : access IClassFactory'Class;
         rclsid : access constant IID;
         pwzType : LPCWSTR
      ) return HRESULT is abstract;
      function UnregisterMimeFilter(
         This : access IInternetSession;
         pCF : access IClassFactory'Class;
         pwzType : LPCWSTR
      ) return HRESULT is abstract;
      function CreateBinding(
         This : access IInternetSession;
         pBC : LPBC;
         szUrl : LPCWSTR;
         pUnkOuter : access IUnknown'Class;
         ppUnk : access IUnknown_Ptr;
         ppOInetProt : access IInternetProtocol_Ptr;
         dwOption : DWORD
      ) return HRESULT is abstract;
      function SetSessionOption(
         This : access IInternetSession;
         dwOption : DWORD;
         pBuffer : LPVOID;
         dwBufferLength : DWORD;
         dwReserved : DWORD
      ) return HRESULT is abstract;
      function GetSessionOption(
         This : access IInternetSession;
         dwOption : DWORD;
         pBuffer : LPVOID;
         pdwBufferLength : access DWORD;
         dwReserved : DWORD
      ) return HRESULT is abstract;
   type IInternetSession_Ptr is access all IInternetSession'Class;
   type LPIINTERNETTHREADSWITCH is access all IInternetThreadSwitch;
   IID_IInternetThreadSwitch : aliased constant IID;
   pragma import (C,IID_IInternetThreadSwitch,"IID_IInternetThreadSwitch");
   type IInternetThreadSwitch is limited interface and IUnknown;
      function Prepare(This : access IInternetThreadSwitch) return HRESULT is abstract;
      function Continue(This : access IInternetThreadSwitch) return HRESULT is abstract;
   type IInternetThreadSwitch_Ptr is access all IInternetThreadSwitch'Class;
   type LPIINTERNETPRIORITY is access all IInternetPriority;
   IID_IInternetPriority : aliased constant IID;
   pragma import (C,IID_IInternetPriority,"IID_IInternetPriority");
   type IInternetPriority is limited interface and IUnknown;
      function SetPriority(
         This : access IInternetPriority;
         nPriority : LONG
      ) return HRESULT is abstract;
      function GetPriority(
         This : access IInternetPriority;
         pnPriority : access LONG
      ) return HRESULT is abstract;
   type IInternetPriority_Ptr is access all IInternetPriority'Class;
   type LPIINTERNETPROTOCOLINFO is access all IInternetProtocolInfo;
   type tagPARSEACTION_x is (
      PARSE_CANONICALIZE,
      PARSE_FRIENDLY,
      PARSE_SECURITY_URL,
      PARSE_ROOTDOCUMENT,
      PARSE_DOCUMENT,
      PARSE_ANCHOR,
      PARSE_ENCODE_IS_UNESCAPE,
      PARSE_DECODE_IS_ESCAPE,
      PARSE_PATH_FROM_URL,
      PARSE_URL_FROM_PATH,
      PARSE_MIME,
      PARSE_SERVER,
      PARSE_SCHEMA,
      PARSE_SITE,
      PARSE_DOMAIN,
      PARSE_LOCATION,
      PARSE_SECURITY_DOMAIN,
      PARSE_ESCAPE,
      PARSE_UNESCAPE
   );
   for tagPARSEACTION_x use (
      PARSE_CANONICALIZE => 1,
      PARSE_FRIENDLY => 2,
      PARSE_SECURITY_URL => 3,
      PARSE_ROOTDOCUMENT => 4,
      PARSE_DOCUMENT => 5,
      PARSE_ANCHOR => 6,
      PARSE_ENCODE_IS_UNESCAPE => 7,
      PARSE_DECODE_IS_ESCAPE => 8,
      PARSE_PATH_FROM_URL => 9,
      PARSE_URL_FROM_PATH => 10,
      PARSE_MIME => 11,
      PARSE_SERVER => 12,
      PARSE_SCHEMA => 13,
      PARSE_SITE => 14,
      PARSE_DOMAIN => 15,
      PARSE_LOCATION => 16,
      PARSE_SECURITY_DOMAIN => 17,
      PARSE_ESCAPE => 18,
      PARSE_UNESCAPE => 19
   );
   for tagPARSEACTION_x'Size use 32;
   subtype PARSEACTION is tagPARSEACTION_x;
   type tagPSUACTION_x is (
      PSU_DEFAULT,
      PSU_SECURITY_URL_ONLY
   );
   for tagPSUACTION_x use (
      PSU_DEFAULT => 1,
      PSU_SECURITY_URL_ONLY => 2
   );
   for tagPSUACTION_x'Size use 32;
   subtype PSUACTION is tagPSUACTION_x;
   type tagQUERYOPTION_x is (
      QUERY_EXPIRATION_DATE,
      QUERY_TIME_OF_LAST_CHANGE,
      QUERY_CONTENT_ENCODING,
      QUERY_CONTENT_TYPE,
      QUERY_REFRESH,
      QUERY_RECOMBINE,
      QUERY_CAN_NAVIGATE,
      QUERY_USES_NETWORK,
      QUERY_IS_CACHED,
      QUERY_IS_INSTALLEDENTRY,
      QUERY_IS_CACHED_OR_MAPPED,
      QUERY_USES_CACHE,
      QUERY_IS_SECURE,
      QUERY_IS_SAFE,
      QUERY_USES_HISTORYFOLDER,
      QUERY_IS_CACHED_AND_USABLE_OFFLINE
   );
   for tagQUERYOPTION_x use (
      QUERY_EXPIRATION_DATE => 1,
      QUERY_TIME_OF_LAST_CHANGE => 2,
      QUERY_CONTENT_ENCODING => 3,
      QUERY_CONTENT_TYPE => 4,
      QUERY_REFRESH => 5,
      QUERY_RECOMBINE => 6,
      QUERY_CAN_NAVIGATE => 7,
      QUERY_USES_NETWORK => 8,
      QUERY_IS_CACHED => 9,
      QUERY_IS_INSTALLEDENTRY => 10,
      QUERY_IS_CACHED_OR_MAPPED => 11,
      QUERY_USES_CACHE => 12,
      QUERY_IS_SECURE => 13,
      QUERY_IS_SAFE => 14,
      QUERY_USES_HISTORYFOLDER => 15,
      QUERY_IS_CACHED_AND_USABLE_OFFLINE => 16
   );
   for tagQUERYOPTION_x'Size use 32;
   subtype QUERYOPTION is tagQUERYOPTION_x;
   IID_IInternetProtocolInfo : aliased constant IID;
   pragma import (C,IID_IInternetProtocolInfo,"IID_IInternetProtocolInfo");
   type IInternetProtocolInfo is limited interface and IUnknown;
      function ParseUrl(
         This : access IInternetProtocolInfo;
         pwzUrl : LPCWSTR;
         ParseAction_x : PARSEACTION;
         dwParseFlags : DWORD;
         pwzResult : LPWSTR;
         cchResult : DWORD;
         pcchResult : access DWORD;
         dwReserved : DWORD
      ) return HRESULT is abstract;
      function CombineUrl(
         This : access IInternetProtocolInfo;
         pwzBaseUrl : LPCWSTR;
         pwzRelativeUrl : LPCWSTR;
         dwCombineFlags : DWORD;
         pwzResult : LPWSTR;
         cchResult : DWORD;
         pcchResult : access DWORD;
         dwReserved : DWORD
      ) return HRESULT is abstract;
      function CompareUrl(
         This : access IInternetProtocolInfo;
         pwzUrl1 : LPCWSTR;
         pwzUrl2 : LPCWSTR;
         dwCompareFlags : DWORD
      ) return HRESULT is abstract;
      function QueryInfo(
         This : access IInternetProtocolInfo;
         pwzUrl : LPCWSTR;
         OueryOption : QUERYOPTION;
         dwQueryFlags : DWORD;
         pBuffer : LPVOID;
         cbBuffer : DWORD;
         pcbBuf : access DWORD;
         dwReserved : DWORD
      ) return HRESULT is abstract;
   type IInternetProtocolInfo_Ptr is access all IInternetProtocolInfo'Class;
   function CoInternetParseUrl(
      pwzUrl : LPCWSTR;
      ParseAction_x : PARSEACTION;
      dwFlags : DWORD;
      pszResult : LPWSTR;
      cchResult : DWORD;
      pcchResult : access DWORD;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoInternetParseUrl,"CoInternetParseUrl");
   function CoInternetParseIUri(
      pIUri : access IUri'Class;
      ParseAction_x : PARSEACTION;
      dwFlags : DWORD;
      pwzResult : LPWSTR;
      cchResult : DWORD;
      pcchResult : access DWORD;
      dwReserved : DWORD_PTR
   ) return HRESULT;
   pragma import (Cpp,CoInternetParseIUri,"CoInternetParseIUri");
   function CoInternetCombineUrl(
      pwzBaseUrl : LPCWSTR;
      pwzRelativeUrl : LPCWSTR;
      dwCombineFlags : DWORD;
      pszResult : LPWSTR;
      cchResult : DWORD;
      pcchResult : access DWORD;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoInternetCombineUrl,"CoInternetCombineUrl");
   function CoInternetCombineUrlEx(
      pBaseUri : access IUri'Class;
      pwzRelativeUrl : LPCWSTR;
      dwCombineFlags : DWORD;
      ppCombinedUri : access IUri_Ptr;
      dwReserved : DWORD_PTR
   ) return HRESULT;
   pragma import (Cpp,CoInternetCombineUrlEx,"CoInternetCombineUrlEx");
   function CoInternetCombineIUri(
      pBaseUri : access IUri'Class;
      pRelativeUri : access IUri'Class;
      dwCombineFlags : DWORD;
      ppCombinedUri : access IUri_Ptr;
      dwReserved : DWORD_PTR
   ) return HRESULT;
   pragma import (Cpp,CoInternetCombineIUri,"CoInternetCombineIUri");
   function CoInternetCompareUrl(
      pwzUrl1 : LPCWSTR;
      pwzUrl2 : LPCWSTR;
      dwFlags : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoInternetCompareUrl,"CoInternetCompareUrl");
   function CoInternetGetProtocolFlags(
      pwzUrl : LPCWSTR;
      pdwFlags : access DWORD;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoInternetGetProtocolFlags,"CoInternetGetProtocolFlags");
   function CoInternetQueryInfo(
      pwzUrl : LPCWSTR;
      QueryOptions : QUERYOPTION;
      dwQueryFlags : DWORD;
      pvBuffer : LPVOID;
      cbBuffer : DWORD;
      pcbBuffer : access DWORD;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoInternetQueryInfo,"CoInternetQueryInfo");
   function CoInternetGetSession(
      dwSessionMode : DWORD;
      ppIInternetSession : access IInternetSession_Ptr;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoInternetGetSession,"CoInternetGetSession");
   function CoInternetGetSecurityUrl(
      pwszUrl : LPCWSTR;
      ppwszSecUrl : access LPWSTR;
      psuAction_x : PSUACTION;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoInternetGetSecurityUrl,"CoInternetGetSecurityUrl");
   function AsyncInstallDistributionUnit(
      szDistUnit : LPCWSTR;
      szTYPE : LPCWSTR;
      szExt : LPCWSTR;
      dwFileVersionMS : DWORD;
      dwFileVersionLS : DWORD;
      szURL : LPCWSTR;
      pbc : access IBindCtx'Class;
      pvReserved : LPVOID;
      flags : DWORD
   ) return HRESULT;
   pragma import (Cpp,AsyncInstallDistributionUnit,"AsyncInstallDistributionUnit");
   function CoInternetGetSecurityUrlEx(
      pUri : access IUri'Class;
      ppSecUri : access IUri_Ptr;
      psuAction_x : PSUACTION;
      dwReserved : DWORD_PTR
   ) return HRESULT;
   pragma import (Cpp,CoInternetGetSecurityUrlEx,"CoInternetGetSecurityUrlEx");
   type tagINTERNETFEATURELIST_x is (
      FEATURE_OBJECT_CACHING,
      FEATURE_ZONE_ELEVATION,
      FEATURE_MIME_HANDLING,
      FEATURE_MIME_SNIFFING,
      FEATURE_WINDOW_RESTRICTIONS,
      FEATURE_WEBOC_POPUPMANAGEMENT,
      FEATURE_BEHAVIORS,
      FEATURE_DISABLE_MK_PROTOCOL,
      FEATURE_LOCALMACHINE_LOCKDOWN,
      FEATURE_SECURITYBAND,
      FEATURE_RESTRICT_ACTIVEXINSTALL,
      FEATURE_VALIDATE_NAVIGATE_URL,
      FEATURE_RESTRICT_FILEDOWNLOAD,
      FEATURE_ADDON_MANAGEMENT,
      FEATURE_PROTOCOL_LOCKDOWN,
      FEATURE_HTTP_USERNAME_PASSWORD_DISABLE,
      FEATURE_SAFE_BINDTOOBJECT,
      FEATURE_UNC_SAVEDFILECHECK,
      FEATURE_GET_URL_DOM_FILEPATH_UNENCODED,
      FEATURE_TABBED_BROWSING,
      FEATURE_SSLUX,
      FEATURE_DISABLE_NAVIGATION_SOUNDS,
      FEATURE_DISABLE_LEGACY_COMPRESSION,
      FEATURE_FORCE_ADDR_AND_STATUS,
      FEATURE_XMLHTTP,
      FEATURE_DISABLE_TELNET_PROTOCOL,
      FEATURE_FEEDS,
      FEATURE_BLOCK_INPUT_PROMPTS,
      FEATURE_ENTRY_COUNT
   );
   for tagINTERNETFEATURELIST_x use (
      FEATURE_OBJECT_CACHING => 0,
      FEATURE_ZONE_ELEVATION => 1,
      FEATURE_MIME_HANDLING => 2,
      FEATURE_MIME_SNIFFING => 3,
      FEATURE_WINDOW_RESTRICTIONS => 4,
      FEATURE_WEBOC_POPUPMANAGEMENT => 5,
      FEATURE_BEHAVIORS => 6,
      FEATURE_DISABLE_MK_PROTOCOL => 7,
      FEATURE_LOCALMACHINE_LOCKDOWN => 8,
      FEATURE_SECURITYBAND => 9,
      FEATURE_RESTRICT_ACTIVEXINSTALL => 10,
      FEATURE_VALIDATE_NAVIGATE_URL => 11,
      FEATURE_RESTRICT_FILEDOWNLOAD => 12,
      FEATURE_ADDON_MANAGEMENT => 13,
      FEATURE_PROTOCOL_LOCKDOWN => 14,
      FEATURE_HTTP_USERNAME_PASSWORD_DISABLE => 15,
      FEATURE_SAFE_BINDTOOBJECT => 16,
      FEATURE_UNC_SAVEDFILECHECK => 17,
      FEATURE_GET_URL_DOM_FILEPATH_UNENCODED => 18,
      FEATURE_TABBED_BROWSING => 19,
      FEATURE_SSLUX => 20,
      FEATURE_DISABLE_NAVIGATION_SOUNDS => 21,
      FEATURE_DISABLE_LEGACY_COMPRESSION => 22,
      FEATURE_FORCE_ADDR_AND_STATUS => 23,
      FEATURE_XMLHTTP => 24,
      FEATURE_DISABLE_TELNET_PROTOCOL => 25,
      FEATURE_FEEDS => 26,
      FEATURE_BLOCK_INPUT_PROMPTS => 27,
      FEATURE_ENTRY_COUNT => 28
   );
   for tagINTERNETFEATURELIST_x'Size use 32;
   subtype INTERNETFEATURELIST is tagINTERNETFEATURELIST_x;
   function CoInternetSetFeatureEnabled(
      FeatureEntry : INTERNETFEATURELIST;
      dwFlags : DWORD;
      fEnable : BOOL
   ) return HRESULT;
   pragma import (Cpp,CoInternetSetFeatureEnabled,"CoInternetSetFeatureEnabled");
   function CoInternetIsFeatureEnabled(
      FeatureEntry : INTERNETFEATURELIST;
      dwFlags : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoInternetIsFeatureEnabled,"CoInternetIsFeatureEnabled");
   function CoInternetIsFeatureEnabledForUrl(
      FeatureEntry : INTERNETFEATURELIST;
      dwFlags : DWORD;
      szURL : LPCWSTR;
      pSecMgr : access IInternetSecurityManager'Class
   ) return HRESULT;
   pragma import (Cpp,CoInternetIsFeatureEnabledForUrl,"CoInternetIsFeatureEnabledForUrl");
   function CoInternetIsFeatureEnabledForIUri(
      FeatureEntry : INTERNETFEATURELIST;
      dwFlags : DWORD;
      pIUri : access IUri'Class;
      pSecMgr : access IInternetSecurityManagerEx2'Class
   ) return HRESULT;
   pragma import (Cpp,CoInternetIsFeatureEnabledForIUri,"CoInternetIsFeatureEnabledForIUri");
   function CoInternetIsFeatureZoneElevationEnabled(
      szFromURL : LPCWSTR;
      szToURL : LPCWSTR;
      pSecMgr : access IInternetSecurityManager'Class;
      dwFlags : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoInternetIsFeatureZoneElevationEnabled,"CoInternetIsFeatureZoneElevationEnabled");
   function CopyStgMedium(
      pcstgmedSrc : access constant STGMEDIUM;
      pstgmedDest : access STGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,CopyStgMedium,"CopyStgMedium");
   function CopyBindInfo(
      pcbiSrc : access constant BINDINFO;
      pbiDest : access BINDINFO
   ) return HRESULT;
   pragma import (Cpp,CopyBindInfo,"CopyBindInfo");
   procedure ReleaseBindInfo(
      pbindinfo : access BINDINFO
   );
   pragma import (Cpp,ReleaseBindInfo,"ReleaseBindInfo");
   function IEGetUserPrivateNamespaceName return PWSTR;
   pragma import (Cpp,IEGetUserPrivateNamespaceName,"IEGetUserPrivateNamespaceName");
   type IInternetSecurityManager_Ptr is access all IInternetSecurityManager; -- Auto Generated Dependancy
   function CoInternetCreateSecurityManager(
      pSP : access IServiceProvider'Class;
      ppSM : access IInternetSecurityManager_Ptr;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoInternetCreateSecurityManager,"CoInternetCreateSecurityManager");
   type IInternetZoneManager_Ptr is access all IInternetZoneManager; -- Auto Generated Dependancy
   function CoInternetCreateZoneManager(
      pSP : access IServiceProvider'Class;
      ppZM : access IInternetZoneManager_Ptr;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,CoInternetCreateZoneManager,"CoInternetCreateZoneManager");
   IID_IInternetSecurityMgrSite : aliased constant IID;
   pragma import (C,IID_IInternetSecurityMgrSite,"IID_IInternetSecurityMgrSite");
   type IInternetSecurityMgrSite is limited interface and IUnknown;
      function GetWindow_x(
         This : access IInternetSecurityMgrSite;
         phwnd : access HWND
      ) return HRESULT is abstract;
      function EnableModeless(
         This : access IInternetSecurityMgrSite;
         fEnable : BOOL
      ) return HRESULT is abstract;
   type IInternetSecurityMgrSite_Ptr is access all IInternetSecurityMgrSite'Class;
   type MIDL_IInternetSecurityManager_0001_x is (
      PUAF_DEFAULT,
      PUAF_NOUI,
      PUAF_ISFILE,
      PUAF_WARN_IF_DENIED,
      PUAF_FORCEUI_FOREGROUND,
      PUAF_CHECK_TIFS,
      PUAF_DONTCHECKBOXINDIALOG,
      PUAF_TRUSTED,
      PUAF_ACCEPT_WILDCARD_SCHEME,
      PUAF_ENFORCERESTRICTED,
      PUAF_NOSAVEDFILECHECK,
      PUAF_REQUIRESAVEDFILECHECK,
      PUAF_DONT_USE_CACHE,
      PUAF_RESERVED1,
      PUAF_RESERVED2,
      PUAF_LMZ_UNLOCKED,
      PUAF_LMZ_LOCKED,
      PUAF_DEFAULTZONEPOL,
      PUAF_NPL_USE_LOCKED_IF_RESTRICTED,
      PUAF_NOUIIFLOCKED,
      PUAF_DRAGPROTOCOLCHECK
   );
   for MIDL_IInternetSecurityManager_0001_x use (
      PUAF_DEFAULT => 0,
      PUAF_NOUI => 1,
      PUAF_ISFILE => 2,
      PUAF_WARN_IF_DENIED => 4,
      PUAF_FORCEUI_FOREGROUND => 8,
      PUAF_CHECK_TIFS => 16,
      PUAF_DONTCHECKBOXINDIALOG => 32,
      PUAF_TRUSTED => 64,
      PUAF_ACCEPT_WILDCARD_SCHEME => 128,
      PUAF_ENFORCERESTRICTED => 256,
      PUAF_NOSAVEDFILECHECK => 512,
      PUAF_REQUIRESAVEDFILECHECK => 1024,
      PUAF_DONT_USE_CACHE => 4096,
      PUAF_RESERVED1 => 8192,
      PUAF_RESERVED2 => 16384,
      PUAF_LMZ_UNLOCKED => 65536,
      PUAF_LMZ_LOCKED => 131072,
      PUAF_DEFAULTZONEPOL => 262144,
      PUAF_NPL_USE_LOCKED_IF_RESTRICTED => 524288,
      PUAF_NOUIIFLOCKED => 1048576,
      PUAF_DRAGPROTOCOLCHECK => 2097152
   );
   for MIDL_IInternetSecurityManager_0001_x'Size use 32;
   subtype PUAF is MIDL_IInternetSecurityManager_0001_x;
   type MIDL_IInternetSecurityManager_0002_x is (
      PUAFOUT_DEFAULT,
      PUAFOUT_ISLOCKZONEPOLICY
   );
   for MIDL_IInternetSecurityManager_0002_x use (
      PUAFOUT_DEFAULT => 0,
      PUAFOUT_ISLOCKZONEPOLICY => 1
   );
   for MIDL_IInternetSecurityManager_0002_x'Size use 32;
   subtype PUAFOUT is MIDL_IInternetSecurityManager_0002_x;
   type MIDL_IInternetSecurityManager_0003_x is (
      SZM_CREATE,
      SZM_DELETE
   );
   for MIDL_IInternetSecurityManager_0003_x use (
      SZM_CREATE => 0,
      SZM_DELETE => 1
   );
   for MIDL_IInternetSecurityManager_0003_x'Size use 32;
   subtype SZM_FLAGS is MIDL_IInternetSecurityManager_0003_x;
   IID_IInternetSecurityManager : aliased constant IID;
   pragma import (C,IID_IInternetSecurityManager,"IID_IInternetSecurityManager");
   type IInternetSecurityManager is limited interface and IUnknown;
      function SetSecuritySite(
         This : access IInternetSecurityManager;
         pSite : access IInternetSecurityMgrSite'Class
      ) return HRESULT is abstract;
      function GetSecuritySite(
         This : access IInternetSecurityManager;
         ppSite : access IInternetSecurityMgrSite_Ptr
      ) return HRESULT is abstract;
      function MapUrlToZone(
         This : access IInternetSecurityManager;
         pwszUrl : LPCWSTR;
         pdwZone : access DWORD;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function GetSecurityId(
         This : access IInternetSecurityManager;
         pwszUrl : LPCWSTR;
         pbSecurityId : access BYTE;
         pcbSecurityId : access DWORD;
         dwReserved : DWORD_PTR
      ) return HRESULT is abstract;
      function ProcessUrlAction(
         This : access IInternetSecurityManager;
         pwszUrl : LPCWSTR;
         dwAction : DWORD;
         pPolicy : access BYTE;
         cbPolicy : DWORD;
         pContext_x : access BYTE;
         cbContext : DWORD;
         dwFlags : DWORD;
         dwReserved : DWORD
      ) return HRESULT is abstract;
      function QueryCustomPolicy(
         This : access IInternetSecurityManager;
         pwszUrl : LPCWSTR;
         guidKey : access constant GUID;
         ppPolicy : access PBYTE;
         pcbPolicy : access DWORD;
         pContext_x : access BYTE;
         cbContext : DWORD;
         dwReserved : DWORD
      ) return HRESULT is abstract;
      function SetZoneMapping(
         This : access IInternetSecurityManager;
         dwZone : DWORD;
         lpszPattern : LPCWSTR;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function GetZoneMappings(
         This : access IInternetSecurityManager;
         dwZone : DWORD;
         ppenumString : access IEnumString_Ptr;
         dwFlags : DWORD
      ) return HRESULT is abstract;
   IID_IInternetSecurityManagerEx : aliased constant IID;
   pragma import (C,IID_IInternetSecurityManagerEx,"IID_IInternetSecurityManagerEx");
   type IInternetSecurityManagerEx is limited interface and IInternetSecurityManager;
      function ProcessUrlActionEx(
         This : access IInternetSecurityManagerEx;
         pwszUrl : LPCWSTR;
         dwAction : DWORD;
         pPolicy : access BYTE;
         cbPolicy : DWORD;
         pContext_x : access BYTE;
         cbContext : DWORD;
         dwFlags : DWORD;
         dwReserved : DWORD;
         pdwOutFlags : access DWORD
      ) return HRESULT is abstract;
   type IInternetSecurityManagerEx_Ptr is access all IInternetSecurityManagerEx'Class;
   IID_IInternetSecurityManagerEx2 : aliased constant IID;
   pragma import (C,IID_IInternetSecurityManagerEx2,"IID_IInternetSecurityManagerEx2");
   type IInternetSecurityManagerEx2 is limited interface and IInternetSecurityManagerEx;
      function MapUrlToZoneEx2(
         This : access IInternetSecurityManagerEx2;
         pUri : access IUri'Class;
         pdwZone : access DWORD;
         dwFlags : DWORD;
         ppwszMappedUrl : access LPWSTR;
         pdwOutFlags : access DWORD
      ) return HRESULT is abstract;
      function ProcessUrlActionEx2(
         This : access IInternetSecurityManagerEx2;
         pUri : access IUri'Class;
         dwAction : DWORD;
         pPolicy : access BYTE;
         cbPolicy : DWORD;
         pContext_x : access BYTE;
         cbContext : DWORD;
         dwFlags : DWORD;
         dwReserved : DWORD_PTR;
         pdwOutFlags : access DWORD
      ) return HRESULT is abstract;
      function GetSecurityIdEx2(
         This : access IInternetSecurityManagerEx2;
         pUri : access IUri'Class;
         pbSecurityId : access BYTE;
         pcbSecurityId : access DWORD;
         dwReserved : DWORD_PTR
      ) return HRESULT is abstract;
      function QueryCustomPolicyEx2(
         This : access IInternetSecurityManagerEx2;
         pUri : access IUri'Class;
         guidKey : access constant GUID;
         ppPolicy : access PBYTE;
         pcbPolicy : access DWORD;
         pContext_x : access BYTE;
         cbContext : DWORD;
         dwReserved : DWORD_PTR
      ) return HRESULT is abstract;
   type IInternetSecurityManagerEx2_Ptr is access all IInternetSecurityManagerEx2'Class;
   IID_IZoneIdentifier : aliased constant IID;
   pragma import (C,IID_IZoneIdentifier,"IID_IZoneIdentifier");
   type IZoneIdentifier is limited interface and IUnknown;
      function GetId(
         This : access IZoneIdentifier;
         pdwZone : access DWORD
      ) return HRESULT is abstract;
      function SetId(
         This : access IZoneIdentifier;
         dwZone : DWORD
      ) return HRESULT is abstract;
      function Remove(This : access IZoneIdentifier) return HRESULT is abstract;
   type IZoneIdentifier_Ptr is access all IZoneIdentifier'Class;
   IID_IZoneIdentifier2 : aliased constant IID;
   pragma import (C,IID_IZoneIdentifier2,"IID_IZoneIdentifier2");
   type IZoneIdentifier2 is limited interface and IZoneIdentifier;
      function GetLastWriterPackageFamilyName(
         This : access IZoneIdentifier2;
         packageFamilyName : access LPWSTR
      ) return HRESULT is abstract;
      function SetLastWriterPackageFamilyName(
         This : access IZoneIdentifier2;
         packageFamilyName : LPCWSTR
      ) return HRESULT is abstract;
      function RemoveLastWriterPackageFamilyName(This : access IZoneIdentifier2) return HRESULT is abstract;
      function GetAppZoneId(
         This : access IZoneIdentifier2;
         zone : access DWORD
      ) return HRESULT is abstract;
      function SetAppZoneId(
         This : access IZoneIdentifier2;
         zone : DWORD
      ) return HRESULT is abstract;
      function RemoveAppZoneId(This : access IZoneIdentifier2) return HRESULT is abstract;
   type IZoneIdentifier2_Ptr is access all IZoneIdentifier2'Class;
   IID_IInternetHostSecurityManager : aliased constant IID;
   pragma import (C,IID_IInternetHostSecurityManager,"IID_IInternetHostSecurityManager");
   type IInternetHostSecurityManager is limited interface and IUnknown;
      function GetSecurityId(
         This : access IInternetHostSecurityManager;
         pbSecurityId : access BYTE;
         pcbSecurityId : access DWORD;
         dwReserved : DWORD_PTR
      ) return HRESULT is abstract;
      function ProcessUrlAction(
         This : access IInternetHostSecurityManager;
         dwAction : DWORD;
         pPolicy : access BYTE;
         cbPolicy : DWORD;
         pContext_x : access BYTE;
         cbContext : DWORD;
         dwFlags : DWORD;
         dwReserved : DWORD
      ) return HRESULT is abstract;
      function QueryCustomPolicy(
         This : access IInternetHostSecurityManager;
         guidKey : access constant GUID;
         ppPolicy : access PBYTE;
         pcbPolicy : access DWORD;
         pContext_x : access BYTE;
         cbContext : DWORD;
         dwReserved : DWORD
      ) return HRESULT is abstract;
   type IInternetHostSecurityManager_Ptr is access all IInternetHostSecurityManager'Class;
   type LPURLZONEMANAGER is access all IInternetZoneManager;
   type tagURLZONE is (
      URLZONE_INVALID,
      URLZONE_PREDEFINED_MIN,
      URLZONE_INTRANET,
      URLZONE_TRUSTED,
      URLZONE_INTERNET,
      URLZONE_UNTRUSTED,
      URLZONE_PREDEFINED_MAX,
      URLZONE_USER_MIN,
      URLZONE_USER_MAX
   );
   for tagURLZONE use (
      URLZONE_INVALID => -1,
      URLZONE_PREDEFINED_MIN => 0,
      URLZONE_INTRANET => 1,
      URLZONE_TRUSTED => 2,
      URLZONE_INTERNET => 3,
      URLZONE_UNTRUSTED => 4,
      URLZONE_PREDEFINED_MAX => 999,
      URLZONE_USER_MIN => 1000,
      URLZONE_USER_MAX => 10000
   );
   for tagURLZONE'Size use 32;
   subtype URLZONE is tagURLZONE;
   type tagURLTEMPLATE is (
      URLTEMPLATE_CUSTOM,
      URLTEMPLATE_PREDEFINED_MIN,
      URLTEMPLATE_MEDLOW,
      URLTEMPLATE_MEDIUM,
      URLTEMPLATE_MEDHIGH,
      URLTEMPLATE_HIGH,
      URLTEMPLATE_PREDEFINED_MAX
   );
   for tagURLTEMPLATE use (
      URLTEMPLATE_CUSTOM => 0,
      URLTEMPLATE_PREDEFINED_MIN => 65536,
      URLTEMPLATE_MEDLOW => 66816,
      URLTEMPLATE_MEDIUM => 69632,
      URLTEMPLATE_MEDHIGH => 70912,
      URLTEMPLATE_HIGH => 73728,
      URLTEMPLATE_PREDEFINED_MAX => 131072
   );
   for tagURLTEMPLATE'Size use 32;
   subtype URLTEMPLATE is tagURLTEMPLATE;
   type MIDL_IInternetZoneManager_0001_x is (
      MAX_ZONE_DESCRIPTION,
      MAX_ZONE_PATH
   );
   for MIDL_IInternetZoneManager_0001_x use (
      MAX_ZONE_DESCRIPTION => 200,
      MAX_ZONE_PATH => 260
   );
   for MIDL_IInternetZoneManager_0001_x'Size use 32;
   type MIDL_IInternetZoneManager_0002_x is (
      ZAFLAGS_CUSTOM_EDIT,
      ZAFLAGS_ADD_SITES,
      ZAFLAGS_REQUIRE_VERIFICATION,
      ZAFLAGS_INCLUDE_PROXY_OVERRIDE,
      ZAFLAGS_INCLUDE_INTRANET_SITES,
      ZAFLAGS_NO_UI,
      ZAFLAGS_SUPPORTS_VERIFICATION,
      ZAFLAGS_UNC_AS_INTRANET,
      ZAFLAGS_DETECT_INTRANET,
      ZAFLAGS_USE_LOCKED_ZONES,
      ZAFLAGS_VERIFY_TEMPLATE_SETTINGS,
      ZAFLAGS_NO_CACHE
   );
   for MIDL_IInternetZoneManager_0002_x use (
      ZAFLAGS_CUSTOM_EDIT => 1,
      ZAFLAGS_ADD_SITES => 2,
      ZAFLAGS_REQUIRE_VERIFICATION => 4,
      ZAFLAGS_INCLUDE_PROXY_OVERRIDE => 8,
      ZAFLAGS_INCLUDE_INTRANET_SITES => 16,
      ZAFLAGS_NO_UI => 32,
      ZAFLAGS_SUPPORTS_VERIFICATION => 64,
      ZAFLAGS_UNC_AS_INTRANET => 128,
      ZAFLAGS_DETECT_INTRANET => 256,
      ZAFLAGS_USE_LOCKED_ZONES => 65536,
      ZAFLAGS_VERIFY_TEMPLATE_SETTINGS => 131072,
      ZAFLAGS_NO_CACHE => 262144
   );
   for MIDL_IInternetZoneManager_0002_x'Size use 32;
   subtype ZAFLAGS is MIDL_IInternetZoneManager_0002_x;
   type ZONEATTRIBUTES_x_szDisplayName_Array is array(1..260) of WCHAR; -- Auto Generated Dependancy
   type ZONEATTRIBUTES_x_szDescription_Array is array(1..200) of WCHAR; -- Auto Generated Dependancy
   type ZONEATTRIBUTES_x_szIconPath_Array is array(1..260) of WCHAR; -- Auto Generated Dependancy
   type ZONEATTRIBUTES_x is record
      cbSize : ULONG;
      szDisplayName : ZONEATTRIBUTES_x_szDisplayName_Array;
      szDescription : ZONEATTRIBUTES_x_szDescription_Array;
      szIconPath : ZONEATTRIBUTES_x_szIconPath_Array;
      dwTemplateMinLevel : DWORD;
      dwTemplateRecommended : DWORD;
      dwTemplateCurrentLevel : DWORD;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ZONEATTRIBUTES_x);
   for ZONEATTRIBUTES_x use record
      cbSize at 0 range 0..31;
      szDisplayName at 0 range 32..4191;
      szDescription at 0 range 4192..7391;
      szIconPath at 0 range 7392..11551;
      dwTemplateMinLevel at 0 range 11552..11583;
      dwTemplateRecommended at 0 range 11584..11615;
      dwTemplateCurrentLevel at 0 range 11616..11647;
      dwFlags at 0 range 11648..11679;
   end record;
   for ZONEATTRIBUTES_x'Size use 11680;
   for ZONEATTRIBUTES_x'Alignment use 4;
   subtype ZONEATTRIBUTES is ZONEATTRIBUTES_x;
   type LPZONEATTRIBUTES is access all ZONEATTRIBUTES_x;
   type URLZONEREG_x is (
      URLZONEREG_DEFAULT,
      URLZONEREG_HKLM,
      URLZONEREG_HKCU
   );
   for URLZONEREG_x use (
      URLZONEREG_DEFAULT => 0,
      URLZONEREG_HKLM => 1,
      URLZONEREG_HKCU => 2
   );
   for URLZONEREG_x'Size use 32;
   subtype URLZONEREG is URLZONEREG_x;
   IID_IInternetZoneManager : aliased constant IID;
   pragma import (C,IID_IInternetZoneManager,"IID_IInternetZoneManager");
   type IInternetZoneManager is limited interface and IUnknown;
      function GetZoneAttributes(
         This : access IInternetZoneManager;
         dwZone : DWORD;
         pZoneAttributes : access ZONEATTRIBUTES
      ) return HRESULT is abstract;
      function SetZoneAttributes(
         This : access IInternetZoneManager;
         dwZone : DWORD;
         pZoneAttributes : access ZONEATTRIBUTES
      ) return HRESULT is abstract;
      function GetZoneCustomPolicy(
         This : access IInternetZoneManager;
         dwZone : DWORD;
         guidKey : access constant GUID;
         ppPolicy : access PBYTE;
         pcbPolicy : access DWORD;
         urlZoneReg_x : URLZONEREG
      ) return HRESULT is abstract;
      function SetZoneCustomPolicy(
         This : access IInternetZoneManager;
         dwZone : DWORD;
         guidKey : access constant GUID;
         pPolicy : access BYTE;
         cbPolicy : DWORD;
         urlZoneReg_x : URLZONEREG
      ) return HRESULT is abstract;
      function GetZoneActionPolicy(
         This : access IInternetZoneManager;
         dwZone : DWORD;
         dwAction : DWORD;
         pPolicy : access BYTE;
         cbPolicy : DWORD;
         urlZoneReg_x : URLZONEREG
      ) return HRESULT is abstract;
      function SetZoneActionPolicy(
         This : access IInternetZoneManager;
         dwZone : DWORD;
         dwAction : DWORD;
         pPolicy : access BYTE;
         cbPolicy : DWORD;
         urlZoneReg_x : URLZONEREG
      ) return HRESULT is abstract;
      function PromptAction(
         This : access IInternetZoneManager;
         dwAction : DWORD;
         hwndParent : HWND;
         pwszUrl : LPCWSTR;
         pwszText : LPCWSTR;
         dwPromptFlags : DWORD
      ) return HRESULT is abstract;
      function LogAction(
         This : access IInternetZoneManager;
         dwAction : DWORD;
         pwszUrl : LPCWSTR;
         pwszText : LPCWSTR;
         dwLogFlags : DWORD
      ) return HRESULT is abstract;
      function CreateZoneEnumerator(
         This : access IInternetZoneManager;
         pdwEnum : access DWORD;
         pdwCount : access DWORD;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function GetZoneAt(
         This : access IInternetZoneManager;
         dwEnum : DWORD;
         dwIndex : DWORD;
         pdwZone : access DWORD
      ) return HRESULT is abstract;
      function DestroyZoneEnumerator(
         This : access IInternetZoneManager;
         dwEnum : DWORD
      ) return HRESULT is abstract;
      function CopyTemplatePoliciesToZone(
         This : access IInternetZoneManager;
         dwTemplate : DWORD;
         dwZone : DWORD;
         dwReserved : DWORD
      ) return HRESULT is abstract;
   IID_IInternetZoneManagerEx : aliased constant IID;
   pragma import (C,IID_IInternetZoneManagerEx,"IID_IInternetZoneManagerEx");
   type IInternetZoneManagerEx is limited interface and IInternetZoneManager;
      function GetZoneActionPolicyEx(
         This : access IInternetZoneManagerEx;
         dwZone : DWORD;
         dwAction : DWORD;
         pPolicy : access BYTE;
         cbPolicy : DWORD;
         urlZoneReg_x : URLZONEREG;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function SetZoneActionPolicyEx(
         This : access IInternetZoneManagerEx;
         dwZone : DWORD;
         dwAction : DWORD;
         pPolicy : access BYTE;
         cbPolicy : DWORD;
         urlZoneReg_x : URLZONEREG;
         dwFlags : DWORD
      ) return HRESULT is abstract;
   type IInternetZoneManagerEx_Ptr is access all IInternetZoneManagerEx'Class;
   IID_IInternetZoneManagerEx2 : aliased constant IID;
   pragma import (C,IID_IInternetZoneManagerEx2,"IID_IInternetZoneManagerEx2");
   type IInternetZoneManagerEx2 is limited interface and IInternetZoneManagerEx;
      function GetZoneAttributesEx(
         This : access IInternetZoneManagerEx2;
         dwZone : DWORD;
         pZoneAttributes : access ZONEATTRIBUTES;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function GetZoneSecurityState(
         This : access IInternetZoneManagerEx2;
         dwZoneIndex : DWORD;
         fRespectPolicy : BOOL;
         pdwState : LPDWORD;
         pfPolicyEncountered : access BOOL
      ) return HRESULT is abstract;
      function GetIESecurityState(
         This : access IInternetZoneManagerEx2;
         fRespectPolicy : BOOL;
         pdwState : LPDWORD;
         pfPolicyEncountered : access BOOL;
         fNoCache : BOOL
      ) return HRESULT is abstract;
      function FixUnsecureSettings(This : access IInternetZoneManagerEx2) return HRESULT is abstract;
   type IInternetZoneManagerEx2_Ptr is access all IInternetZoneManagerEx2'Class;
   type tagCODEBASEHOLD_x is record
      cbSize : ULONG;
      szDistUnit : LPWSTR;
      szCodeBase : LPWSTR;
      dwVersionMS : DWORD;
      dwVersionLS : DWORD;
      dwStyle : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCODEBASEHOLD_x);
   for tagCODEBASEHOLD_x use record
      cbSize at 0 range 0..31;
      szDistUnit at 0 range 64..127;
      szCodeBase at 0 range 128..191;
      dwVersionMS at 0 range 192..223;
      dwVersionLS at 0 range 224..255;
      dwStyle at 0 range 256..287;
   end record;
   for tagCODEBASEHOLD_x'Size use 320;
   for tagCODEBASEHOLD_x'Alignment use 8;
   subtype CODEBASEHOLD is tagCODEBASEHOLD_x;
   type LPCODEBASEHOLD is access all tagCODEBASEHOLD_x;
   type tagSOFTDISTINFO_x is record
      cbSize : ULONG;
      dwFlags : DWORD;
      dwAdState : DWORD;
      szTitle : LPWSTR;
      szAbstract : LPWSTR;
      szHREF : LPWSTR;
      dwInstalledVersionMS : DWORD;
      dwInstalledVersionLS : DWORD;
      dwUpdateVersionMS : DWORD;
      dwUpdateVersionLS : DWORD;
      dwAdvertisedVersionMS : DWORD;
      dwAdvertisedVersionLS : DWORD;
      dwReserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSOFTDISTINFO_x);
   for tagSOFTDISTINFO_x use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      dwAdState at 0 range 64..95;
      szTitle at 0 range 128..191;
      szAbstract at 0 range 192..255;
      szHREF at 0 range 256..319;
      dwInstalledVersionMS at 0 range 320..351;
      dwInstalledVersionLS at 0 range 352..383;
      dwUpdateVersionMS at 0 range 384..415;
      dwUpdateVersionLS at 0 range 416..447;
      dwAdvertisedVersionMS at 0 range 448..479;
      dwAdvertisedVersionLS at 0 range 480..511;
      dwReserved at 0 range 512..543;
   end record;
   for tagSOFTDISTINFO_x'Size use 576;
   for tagSOFTDISTINFO_x'Alignment use 8;
   subtype SOFTDISTINFO is tagSOFTDISTINFO_x;
   type LPSOFTDISTINFO is access all tagSOFTDISTINFO_x;
   IID_ISoftDistExt : aliased constant IID;
   pragma import (C,IID_ISoftDistExt,"IID_ISoftDistExt");
   type ISoftDistExt is limited interface and IUnknown;
      function ProcessSoftDist(
         This : access ISoftDistExt;
         szCDFURL : LPCWSTR;
         pSoftDistElement : access IXMLElement'Class;
         lpsdi : LPSOFTDISTINFO
      ) return HRESULT is abstract;
      function GetFirstCodeBase(
         This : access ISoftDistExt;
         szCodeBase : access LPWSTR;
         dwMaxSize : LPDWORD
      ) return HRESULT is abstract;
      function GetNextCodeBase(
         This : access ISoftDistExt;
         szCodeBase : access LPWSTR;
         dwMaxSize : LPDWORD
      ) return HRESULT is abstract;
      function AsyncInstallDistributionUnit_x(
         This : access ISoftDistExt;
         pbc : access IBindCtx'Class;
         pvReserved : LPVOID;
         flags : DWORD;
         lpcbh : LPCODEBASEHOLD
      ) return HRESULT is abstract;
   type ISoftDistExt_Ptr is access all ISoftDistExt'Class;
   function GetSoftwareUpdateInfo(
      szDistUnit : LPCWSTR;
      psdi : LPSOFTDISTINFO
   ) return HRESULT;
   pragma import (Cpp,GetSoftwareUpdateInfo,"GetSoftwareUpdateInfo");
   function SetSoftwareUpdateAdvertisementState(
      szDistUnit : LPCWSTR;
      dwAdState : DWORD;
      dwAdvertisedVersionMS : DWORD;
      dwAdvertisedVersionLS : DWORD
   ) return HRESULT;
   pragma import (Cpp,SetSoftwareUpdateAdvertisementState,"SetSoftwareUpdateAdvertisementState");
   type LPCATALOGFILEINFO is access all ICatalogFileInfo;
   IID_ICatalogFileInfo : aliased constant IID;
   pragma import (C,IID_ICatalogFileInfo,"IID_ICatalogFileInfo");
   type ICatalogFileInfo is limited interface and IUnknown;
      function GetCatalogFile(
         This : access ICatalogFileInfo;
         ppszCatalogFile : access LPSTR
      ) return HRESULT is abstract;
      function GetJavaTrust(
         This : access ICatalogFileInfo;
         ppJavaTrust : access LPVOID
      ) return HRESULT is abstract;
   type ICatalogFileInfo_Ptr is access all ICatalogFileInfo'Class;
   type LPDATAFILTER is access all IDataFilter;
   IID_IDataFilter : aliased constant IID;
   pragma import (C,IID_IDataFilter,"IID_IDataFilter");
   type IDataFilter is limited interface and IUnknown;
      function DoEncode(
         This : access IDataFilter;
         dwFlags : DWORD;
         lInBufferSize : LONG;
         pbInBuffer : access BYTE;
         lOutBufferSize : LONG;
         pbOutBuffer : access BYTE;
         lInBytesAvailable : LONG;
         plInBytesRead : access LONG;
         plOutBytesWritten : access LONG;
         dwReserved : DWORD
      ) return HRESULT is abstract;
      function DoDecode(
         This : access IDataFilter;
         dwFlags : DWORD;
         lInBufferSize : LONG;
         pbInBuffer : access BYTE;
         lOutBufferSize : LONG;
         pbOutBuffer : access BYTE;
         lInBytesAvailable : LONG;
         plInBytesRead : access LONG;
         plOutBytesWritten : access LONG;
         dwReserved : DWORD
      ) return HRESULT is abstract;
      function SetEncodingLevel(
         This : access IDataFilter;
         dwEncLevel : DWORD
      ) return HRESULT is abstract;
   type IDataFilter_Ptr is access all IDataFilter'Class;
   type tagPROTOCOLFILTERDATA_x is record
      cbSize : DWORD;
      pProtocolSink : access IInternetProtocolSink'Class;
      pProtocol : access IInternetProtocol'Class;
      pUnk : access IUnknown'Class;
      dwFilterFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPROTOCOLFILTERDATA_x);
   for tagPROTOCOLFILTERDATA_x use record
      cbSize at 0 range 0..31;
      pProtocolSink at 0 range 64..127;
      pProtocol at 0 range 128..191;
      pUnk at 0 range 192..255;
      dwFilterFlags at 0 range 256..287;
   end record;
   for tagPROTOCOLFILTERDATA_x'Size use 320;
   for tagPROTOCOLFILTERDATA_x'Alignment use 8;
   subtype PROTOCOLFILTERDATA is tagPROTOCOLFILTERDATA_x;
   type LPENCODINGFILTERFACTORY is access all IEncodingFilterFactory;
   type tagDATAINFO_x is record
      ulTotalSize : ULONG;
      ulavrPacketSize : ULONG;
      ulConnectSpeed : ULONG;
      ulProcessorSpeed : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDATAINFO_x);
   for tagDATAINFO_x use record
      ulTotalSize at 0 range 0..31;
      ulavrPacketSize at 0 range 32..63;
      ulConnectSpeed at 0 range 64..95;
      ulProcessorSpeed at 0 range 96..127;
   end record;
   for tagDATAINFO_x'Size use 128;
   for tagDATAINFO_x'Alignment use 4;
   subtype DATAINFO is tagDATAINFO_x;
   IID_IEncodingFilterFactory : aliased constant IID;
   pragma import (C,IID_IEncodingFilterFactory,"IID_IEncodingFilterFactory");
   type IEncodingFilterFactory is limited interface and IUnknown;
      function FindBestFilter(
         This : access IEncodingFilterFactory;
         pwzCodeIn : LPCWSTR;
         pwzCodeOut : LPCWSTR;
         info : DATAINFO;
         ppDF : access IDataFilter_Ptr
      ) return HRESULT is abstract;
      function GetDefaultFilter(
         This : access IEncodingFilterFactory;
         pwzCodeIn : LPCWSTR;
         pwzCodeOut : LPCWSTR;
         ppDF : access IDataFilter_Ptr
      ) return HRESULT is abstract;
   type IEncodingFilterFactory_Ptr is access all IEncodingFilterFactory'Class;
   function IsLoggingEnabledA(
      pszUrl : LPCSTR
   ) return BOOL;
   pragma import (Cpp,IsLoggingEnabledA,"IsLoggingEnabledA");
   function IsLoggingEnabledW(
      pwszUrl : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,IsLoggingEnabledW,"IsLoggingEnabledW");
   type tagHIT_LOGGING_INFO_x is record
      dwStructSize : DWORD;
      lpszLoggedUrlName : LPSTR;
      StartTime : SYSTEMTIME;
      EndTime : SYSTEMTIME;
      lpszExtendedInfo : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagHIT_LOGGING_INFO_x);
   for tagHIT_LOGGING_INFO_x use record
      dwStructSize at 0 range 0..31;
      lpszLoggedUrlName at 0 range 64..127;
      StartTime at 0 range 128..255;
      EndTime at 0 range 256..383;
      lpszExtendedInfo at 0 range 384..447;
   end record;
   for tagHIT_LOGGING_INFO_x'Size use 448;
   for tagHIT_LOGGING_INFO_x'Alignment use 8;
   subtype HIT_LOGGING_INFO is tagHIT_LOGGING_INFO_x;
   type LPHIT_LOGGING_INFO is access all tagHIT_LOGGING_INFO_x;
   function WriteHitLogging(
      lpLogginginfo : LPHIT_LOGGING_INFO
   ) return BOOL;
   pragma import (Cpp,WriteHitLogging,"WriteHitLogging");
   type CONFIRMSAFETY is record
      clsid_x : CLSID;
      pUnk : access IUnknown'Class;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CONFIRMSAFETY);
   for CONFIRMSAFETY use record
      clsid_x at 0 range 0..127;
      pUnk at 0 range 128..191;
      dwFlags at 0 range 192..223;
   end record;
   for CONFIRMSAFETY'Size use 256;
   for CONFIRMSAFETY'Alignment use 8;
   type LPIWRAPPEDPROTOCOL is access all IWrappedProtocol;
   IID_IWrappedProtocol : aliased constant IID;
   pragma import (C,IID_IWrappedProtocol,"IID_IWrappedProtocol");
   type IWrappedProtocol is limited interface and IUnknown;
      function GetWrapperCode(
         This : access IWrappedProtocol;
         pnCode : access LONG;
         dwReserved : DWORD_PTR
      ) return HRESULT is abstract;
   type IWrappedProtocol_Ptr is access all IWrappedProtocol'Class;
   type LPGETBINDHANDLE is access all IGetBindHandle;
   type MIDL_IGetBindHandle_0001_x is (
      BINDHANDLETYPES_APPCACHE,
      BINDHANDLETYPES_DEPENDENCY,
      BINDHANDLETYPES_COUNT
   );
   for MIDL_IGetBindHandle_0001_x use (
      BINDHANDLETYPES_APPCACHE => 0,
      BINDHANDLETYPES_DEPENDENCY => 1,
      BINDHANDLETYPES_COUNT => 2
   );
   for MIDL_IGetBindHandle_0001_x'Size use 32;
   subtype BINDHANDLETYPES is MIDL_IGetBindHandle_0001_x;
   IID_IGetBindHandle : aliased constant IID;
   pragma import (C,IID_IGetBindHandle,"IID_IGetBindHandle");
   type IGetBindHandle is limited interface and IUnknown;
      function GetBindHandle(
         This : access IGetBindHandle;
         enumRequestedHandle : BINDHANDLETYPES;
         pRetHandle : access HANDLE
      ) return HRESULT is abstract;
   type IGetBindHandle_Ptr is access all IGetBindHandle'Class;
   type tagPROTOCOL_ARGUMENT_x is record
      szMethod : LPCWSTR;
      szTargetUrl : LPCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPROTOCOL_ARGUMENT_x);
   for tagPROTOCOL_ARGUMENT_x use record
      szMethod at 0 range 0..63;
      szTargetUrl at 0 range 64..127;
   end record;
   for tagPROTOCOL_ARGUMENT_x'Size use 128;
   for tagPROTOCOL_ARGUMENT_x'Alignment use 8;
   subtype PROTOCOL_ARGUMENT is tagPROTOCOL_ARGUMENT_x;
   type LPPROTOCOL_ARGUMENT is access all tagPROTOCOL_ARGUMENT_x;
   type LPBINDCALLBACKREDIRECT is access all IBindCallbackRedirect;
   IID_IBindCallbackRedirect : aliased constant IID;
   pragma import (C,IID_IBindCallbackRedirect,"IID_IBindCallbackRedirect");
   type IBindCallbackRedirect is limited interface and IUnknown;
      function Redirect(
         This : access IBindCallbackRedirect;
         lpcUrl : LPCWSTR;
         vbCancel : access VARIANT_BOOL
      ) return HRESULT is abstract;
   type IBindCallbackRedirect_Ptr is access all IBindCallbackRedirect'Class;
   IID_IBindHttpSecurity : aliased constant IID;
   pragma import (C,IID_IBindHttpSecurity,"IID_IBindHttpSecurity");
   type IBindHttpSecurity is limited interface and IUnknown;
      function GetIgnoreCertMask(
         This : access IBindHttpSecurity;
         pdwIgnoreCertMask : access DWORD
      ) return HRESULT is abstract;
   type IBindHttpSecurity_Ptr is access all IBindHttpSecurity'Class;
   function IBinding_GetBindResult_Proxy(
      This : access IBinding'Class;
      pclsidProtocol : access CLSID;
      pdwResult : access DWORD;
      pszResult : access LPOLESTR;
      pdwReserved : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IBinding_GetBindResult_Proxy,"IBinding_GetBindResult_Proxy");
   function IBinding_GetBindResult_Stub(
      This : access IBinding'Class;
      pclsidProtocol : access CLSID;
      pdwResult : access DWORD;
      pszResult : access LPOLESTR;
      dwReserved : DWORD
   ) return HRESULT;
   pragma import (Cpp,IBinding_GetBindResult_Stub,"IBinding_GetBindResult_Stub");
   function IBindStatusCallback_GetBindInfo_Proxy(
      This : access IBindStatusCallback'Class;
      grfBINDF : access DWORD;
      pbindinfo : access BINDINFO
   ) return HRESULT;
   pragma import (Cpp,IBindStatusCallback_GetBindInfo_Proxy,"IBindStatusCallback_GetBindInfo_Proxy");
   function IBindStatusCallback_GetBindInfo_Stub(
      This : access IBindStatusCallback'Class;
      grfBINDF : access DWORD;
      pbindinfo : access RemBINDINFO;
      pstgmed : access RemSTGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IBindStatusCallback_GetBindInfo_Stub,"IBindStatusCallback_GetBindInfo_Stub");
   function IBindStatusCallback_OnDataAvailable_Proxy(
      This : access IBindStatusCallback'Class;
      grfBSCF : DWORD;
      dwSize : DWORD;
      pformatetc : access FORMATETC;
      pstgmed : access STGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IBindStatusCallback_OnDataAvailable_Proxy,"IBindStatusCallback_OnDataAvailable_Proxy");
   function IBindStatusCallback_OnDataAvailable_Stub(
      This : access IBindStatusCallback'Class;
      grfBSCF : DWORD;
      dwSize : DWORD;
      pformatetc : access RemFORMATETC;
      pstgmed : access RemSTGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,IBindStatusCallback_OnDataAvailable_Stub,"IBindStatusCallback_OnDataAvailable_Stub");
   function IBindStatusCallbackEx_GetBindInfoEx_Proxy(
      This : access IBindStatusCallbackEx'Class;
      grfBINDF : access DWORD;
      pbindinfo : access BINDINFO;
      grfBINDF2 : access DWORD;
      pdwReserved : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IBindStatusCallbackEx_GetBindInfoEx_Proxy,"IBindStatusCallbackEx_GetBindInfoEx_Proxy");
   function IBindStatusCallbackEx_GetBindInfoEx_Stub(
      This : access IBindStatusCallbackEx'Class;
      grfBINDF : access DWORD;
      pbindinfo : access RemBINDINFO;
      pstgmed : access RemSTGMEDIUM;
      grfBINDF2 : access DWORD;
      pdwReserved : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IBindStatusCallbackEx_GetBindInfoEx_Stub,"IBindStatusCallbackEx_GetBindInfoEx_Stub");
   function IWinInetInfo_QueryOption_Proxy(
      This : access IWinInetInfo'Class;
      dwOption : DWORD;
      pBuffer : LPVOID;
      pcbBuf : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IWinInetInfo_QueryOption_Proxy,"IWinInetInfo_QueryOption_Proxy");
   function IWinInetInfo_QueryOption_Stub(
      This : access IWinInetInfo'Class;
      dwOption : DWORD;
      pBuffer : access BYTE;
      pcbBuf : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IWinInetInfo_QueryOption_Stub,"IWinInetInfo_QueryOption_Stub");
   function IWinInetHttpInfo_QueryInfo_Proxy(
      This : access IWinInetHttpInfo'Class;
      dwOption : DWORD;
      pBuffer : LPVOID;
      pcbBuf : access DWORD;
      pdwFlags : access DWORD;
      pdwReserved : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IWinInetHttpInfo_QueryInfo_Proxy,"IWinInetHttpInfo_QueryInfo_Proxy");
   function IWinInetHttpInfo_QueryInfo_Stub(
      This : access IWinInetHttpInfo'Class;
      dwOption : DWORD;
      pBuffer : access BYTE;
      pcbBuf : access DWORD;
      pdwFlags : access DWORD;
      pdwReserved : access DWORD
   ) return HRESULT;
   pragma import (Cpp,IWinInetHttpInfo_QueryInfo_Stub,"IWinInetHttpInfo_QueryInfo_Stub");
   function IBindHost_MonikerBindToStorage_Proxy(
      This : access IBindHost'Class;
      pMk : access IMoniker'Class;
      pBC : access IBindCtx'Class;
      pBSC : access IBindStatusCallback'Class;
      riid : access constant IID;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,IBindHost_MonikerBindToStorage_Proxy,"IBindHost_MonikerBindToStorage_Proxy");
   function IBindHost_MonikerBindToStorage_Stub(
      This : access IBindHost'Class;
      pMk : access IMoniker'Class;
      pBC : access IBindCtx'Class;
      pBSC : access IBindStatusCallback'Class;
      riid : access constant IID;
      ppvObj : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IBindHost_MonikerBindToStorage_Stub,"IBindHost_MonikerBindToStorage_Stub");
   function IBindHost_MonikerBindToObject_Proxy(
      This : access IBindHost'Class;
      pMk : access IMoniker'Class;
      pBC : access IBindCtx'Class;
      pBSC : access IBindStatusCallback'Class;
      riid : access constant IID;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,IBindHost_MonikerBindToObject_Proxy,"IBindHost_MonikerBindToObject_Proxy");
   function IBindHost_MonikerBindToObject_Stub(
      This : access IBindHost'Class;
      pMk : access IMoniker'Class;
      pBC : access IBindCtx'Class;
      pBSC : access IBindStatusCallback'Class;
      riid : access constant IID;
      ppvObj : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IBindHost_MonikerBindToObject_Stub,"IBindHost_MonikerBindToObject_Stub");
   -- #include <propidl.h>
   type PIDMSI_STATUS_VALUE is (
      PIDMSI_STATUS_NORMAL,
      PIDMSI_STATUS_NEW,
      PIDMSI_STATUS_PRELIM,
      PIDMSI_STATUS_DRAFT,
      PIDMSI_STATUS_INPROGRESS,
      PIDMSI_STATUS_EDIT,
      PIDMSI_STATUS_REVIEW,
      PIDMSI_STATUS_PROOF,
      PIDMSI_STATUS_FINAL,
      PIDMSI_STATUS_OTHER
   );
   for PIDMSI_STATUS_VALUE use (
      PIDMSI_STATUS_NORMAL => 0,
      PIDMSI_STATUS_NEW => 1,
      PIDMSI_STATUS_PRELIM => 2,
      PIDMSI_STATUS_DRAFT => 3,
      PIDMSI_STATUS_INPROGRESS => 4,
      PIDMSI_STATUS_EDIT => 5,
      PIDMSI_STATUS_REVIEW => 6,
      PIDMSI_STATUS_PROOF => 7,
      PIDMSI_STATUS_FINAL => 8,
      PIDMSI_STATUS_OTHER => 32767
   );
   for PIDMSI_STATUS_VALUE'Size use 32;
   function PropVariantCopy_x(
      pvarDest : access PROPVARIANT;
      pvarSrc : access constant PROPVARIANT
   ) return HRESULT;
   pragma import (Cpp,PropVariantCopy_x,"PropVariantCopy");
   function PropVariantClear_x(
      pvar : access PROPVARIANT
   ) return HRESULT;
   pragma import (Cpp,PropVariantClear_x,"PropVariantClear");
   function FreePropVariantArray_x(
      cVariants : ULONG;
      rgvars : access PROPVARIANT
   ) return HRESULT;
   pragma import (Cpp,FreePropVariantArray_x,"FreePropVariantArray");
   -- PropVariantInit(); -- inlined function not supported
   type tagSERIALIZEDPROPERTYVALUE_rgb_Array is array(1..1) of BYTE; -- Auto Generated Dependancy
   type tagSERIALIZEDPROPERTYVALUE is record
      dwType : DWORD;
      rgb : tagSERIALIZEDPROPERTYVALUE_rgb_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagSERIALIZEDPROPERTYVALUE);
   for tagSERIALIZEDPROPERTYVALUE use record
      dwType at 0 range 0..31;
      rgb at 0 range 32..39;
   end record;
   for tagSERIALIZEDPROPERTYVALUE'Size use 64;
   for tagSERIALIZEDPROPERTYVALUE'Alignment use 4;
   subtype SERIALIZEDPROPERTYVALUE is tagSERIALIZEDPROPERTYVALUE;
   function StgConvertVariantToProperty(
      pvar : access constant PROPVARIANT;
      CodePage : USHORT;
      pprop : access SERIALIZEDPROPERTYVALUE;
      pcb : access ULONG;
      pid : PROPID;
      fReserved : BOOLEAN;
      pcIndirect : access ULONG
   ) return access SERIALIZEDPROPERTYVALUE;
   pragma import (Cpp,StgConvertVariantToProperty,"StgConvertVariantToProperty");
   function StgConvertPropertyToVariant(
      pprop : access constant SERIALIZEDPROPERTYVALUE;
      CodePage : USHORT;
      pvar : access PROPVARIANT;
      pma : access void
   ) return BOOLEAN;
   pragma import (Cpp,StgConvertPropertyToVariant,"StgConvertPropertyToVariant");
   function IEnumSTATPROPSTG_Next_Proxy_x(
      This : access IEnumSTATPROPSTG'Class;
      celt : ULONG;
      rgelt : access STATPROPSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATPROPSTG_Next_Proxy_x,"IEnumSTATPROPSTG_Next_Proxy");
   function IEnumSTATPROPSTG_Next_Stub_x(
      This : access IEnumSTATPROPSTG'Class;
      celt : ULONG;
      rgelt : access STATPROPSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATPROPSTG_Next_Stub_x,"IEnumSTATPROPSTG_Next_Stub");
   function IEnumSTATPROPSETSTG_Next_Proxy_x(
      This : access IEnumSTATPROPSETSTG'Class;
      celt : ULONG;
      rgelt : access STATPROPSETSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATPROPSETSTG_Next_Proxy_x,"IEnumSTATPROPSETSTG_Next_Proxy");
   function IEnumSTATPROPSETSTG_Next_Stub_x(
      This : access IEnumSTATPROPSETSTG'Class;
      celt : ULONG;
      rgelt : access STATPROPSETSTG;
      pceltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumSTATPROPSETSTG_Next_Stub_x,"IEnumSTATPROPSETSTG_Next_Stub");
   -- #include <objbase.h>
   function CreateStdProgressIndicator(
      hwndParent : HWND;
      pszTitle : LPCOLESTR;
      pIbscCaller : access IBindStatusCallback'Class;
      ppIbsc : access IBindStatusCallback_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateStdProgressIndicator,"CreateStdProgressIndicator");
   -- #include <oleauto.h>
   IID_StdOle : aliased constant IID;
   pragma import (C,IID_StdOle,"IID_StdOle");
   function SysAllocString(
      psz_x : access constant OLECHAR
   ) return BSTR;
   pragma import (Cpp,SysAllocString,"SysAllocString");
   function SysReAllocString(
      pbstr : access BSTR;
      psz_x : access constant OLECHAR
   ) return INT;
   pragma import (Cpp,SysReAllocString,"SysReAllocString");
   function SysAllocStringLen(
      strIn : access constant OLECHAR;
      ui : UINT
   ) return BSTR;
   pragma import (Cpp,SysAllocStringLen,"SysAllocStringLen");
   function SysReAllocStringLen(
      pbstr : access BSTR;
      psz_x : access constant OLECHAR;
      len : Interfaces.C.unsigned
   ) return INT;
   pragma import (Cpp,SysReAllocStringLen,"SysReAllocStringLen");
   function SysAddRefString(
      bstrString : BSTR
   ) return HRESULT;
   pragma import (Cpp,SysAddRefString,"SysAddRefString");
   procedure SysReleaseString(
      bstrString : BSTR
   );
   pragma import (Cpp,SysReleaseString,"SysReleaseString");
   procedure SysFreeString(
      bstrString : BSTR
   );
   pragma import (Cpp,SysFreeString,"SysFreeString");
   function SysStringLen(
      pbstr : BSTR
   ) return UINT;
   pragma import (Cpp,SysStringLen,"SysStringLen");
   function SysStringByteLen(
      bstr_x : BSTR
   ) return UINT;
   pragma import (Cpp,SysStringByteLen,"SysStringByteLen");
   function SysAllocStringByteLen(
      psz_x : LPCSTR;
      len : UINT
   ) return BSTR;
   pragma import (Cpp,SysAllocStringByteLen,"SysAllocStringByteLen");
   function DosDateTimeToVariantTime(
      wDosDate : USHORT;
      wDosTime : USHORT;
      pvtime : access DOUBLE
   ) return INT;
   pragma import (Cpp,DosDateTimeToVariantTime,"DosDateTimeToVariantTime");
   function VariantTimeToDosDateTime(
      vtime : DOUBLE;
      pwDosDate : access USHORT;
      pwDosTime : access USHORT
   ) return INT;
   pragma import (Cpp,VariantTimeToDosDateTime,"VariantTimeToDosDateTime");
   function SystemTimeToVariantTime(
      lpSystemTime_x : LPSYSTEMTIME;
      pvtime : access DOUBLE
   ) return INT;
   pragma import (Cpp,SystemTimeToVariantTime,"SystemTimeToVariantTime");
   function VariantTimeToSystemTime(
      vtime : DOUBLE;
      lpSystemTime_x : LPSYSTEMTIME
   ) return INT;
   pragma import (Cpp,VariantTimeToSystemTime,"VariantTimeToSystemTime");
   function SafeArrayAllocDescriptor(
      cDims : UINT;
      ppsaOut : access LPSAFEARRAY
   ) return HRESULT;
   pragma import (Cpp,SafeArrayAllocDescriptor,"SafeArrayAllocDescriptor");
   function SafeArrayAllocDescriptorEx(
      vt : VARTYPE;
      cDims : UINT;
      ppsaOut : access LPSAFEARRAY
   ) return HRESULT;
   pragma import (Cpp,SafeArrayAllocDescriptorEx,"SafeArrayAllocDescriptorEx");
   function SafeArrayAllocData(
      psa : access SAFEARRAY
   ) return HRESULT;
   pragma import (Cpp,SafeArrayAllocData,"SafeArrayAllocData");
   function SafeArrayCreate(
      vt : VARTYPE;
      cDims : UINT;
      rgsabound : access SAFEARRAYBOUND
   ) return access SAFEARRAY;
   pragma import (Cpp,SafeArrayCreate,"SafeArrayCreate");
   function SafeArrayCreateEx(
      vt : VARTYPE;
      cDims : UINT;
      rgsabound : access SAFEARRAYBOUND;
      pvExtra : PVOID
   ) return access SAFEARRAY;
   pragma import (Cpp,SafeArrayCreateEx,"SafeArrayCreateEx");
   function SafeArrayCopyData(
      psaSource : access SAFEARRAY;
      psaTarget : access SAFEARRAY
   ) return HRESULT;
   pragma import (Cpp,SafeArrayCopyData,"SafeArrayCopyData");
   procedure SafeArrayReleaseDescriptor(
      psa : access SAFEARRAY
   );
   pragma import (Cpp,SafeArrayReleaseDescriptor,"SafeArrayReleaseDescriptor");
   function SafeArrayDestroyDescriptor(
      psa : access SAFEARRAY
   ) return HRESULT;
   pragma import (Cpp,SafeArrayDestroyDescriptor,"SafeArrayDestroyDescriptor");
   procedure SafeArrayReleaseData(
      pData : PVOID
   );
   pragma import (Cpp,SafeArrayReleaseData,"SafeArrayReleaseData");
   function SafeArrayDestroyData(
      psa : access SAFEARRAY
   ) return HRESULT;
   pragma import (Cpp,SafeArrayDestroyData,"SafeArrayDestroyData");
   function SafeArrayAddRef(
      psa : access SAFEARRAY;
      ppDataToRelease : access PVOID
   ) return HRESULT;
   pragma import (Cpp,SafeArrayAddRef,"SafeArrayAddRef");
   function SafeArrayDestroy(
      psa : access SAFEARRAY
   ) return HRESULT;
   pragma import (Cpp,SafeArrayDestroy,"SafeArrayDestroy");
   function SafeArrayRedim(
      psa : access SAFEARRAY;
      psaboundNew : access SAFEARRAYBOUND
   ) return HRESULT;
   pragma import (Cpp,SafeArrayRedim,"SafeArrayRedim");
   function SafeArrayGetDim(
      psa : access SAFEARRAY
   ) return UINT;
   pragma import (Cpp,SafeArrayGetDim,"SafeArrayGetDim");
   function SafeArrayGetElemsize(
      psa : access SAFEARRAY
   ) return UINT;
   pragma import (Cpp,SafeArrayGetElemsize,"SafeArrayGetElemsize");
   function SafeArrayGetUBound(
      psa : access SAFEARRAY;
      nDim : UINT;
      plUbound : access LONG
   ) return HRESULT;
   pragma import (Cpp,SafeArrayGetUBound,"SafeArrayGetUBound");
   function SafeArrayGetLBound(
      psa : access SAFEARRAY;
      nDim : UINT;
      plLbound : access LONG
   ) return HRESULT;
   pragma import (Cpp,SafeArrayGetLBound,"SafeArrayGetLBound");
   function SafeArrayLock(
      psa : access SAFEARRAY
   ) return HRESULT;
   pragma import (Cpp,SafeArrayLock,"SafeArrayLock");
   function SafeArrayUnlock(
      psa : access SAFEARRAY
   ) return HRESULT;
   pragma import (Cpp,SafeArrayUnlock,"SafeArrayUnlock");
   function SafeArrayAccessData(
      psa : access SAFEARRAY;
      ppvData : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,SafeArrayAccessData,"SafeArrayAccessData");
   function SafeArrayUnaccessData(
      psa : access SAFEARRAY
   ) return HRESULT;
   pragma import (Cpp,SafeArrayUnaccessData,"SafeArrayUnaccessData");
   function SafeArrayGetElement(
      psa : access SAFEARRAY;
      rgIndices : access LONG;
      pv : access Void
   ) return HRESULT;
   pragma import (Cpp,SafeArrayGetElement,"SafeArrayGetElement");
   function SafeArrayPutElement(
      psa : access SAFEARRAY;
      rgIndices : access LONG;
      pv : access Void
   ) return HRESULT;
   pragma import (Cpp,SafeArrayPutElement,"SafeArrayPutElement");
   function SafeArrayCopy(
      psa : access SAFEARRAY;
      ppsaOut : access LPSAFEARRAY
   ) return HRESULT;
   pragma import (Cpp,SafeArrayCopy,"SafeArrayCopy");
   function SafeArrayPtrOfIndex(
      psa : access SAFEARRAY;
      rgIndices : access LONG;
      ppvData : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,SafeArrayPtrOfIndex,"SafeArrayPtrOfIndex");
   function SafeArraySetRecordInfo(
      psa : access SAFEARRAY;
      prinfo : access IRecordInfo'Class
   ) return HRESULT;
   pragma import (Cpp,SafeArraySetRecordInfo,"SafeArraySetRecordInfo");
   function SafeArrayGetRecordInfo(
      psa : access SAFEARRAY;
      prinfo : access IRecordInfo_Ptr
   ) return HRESULT;
   pragma import (Cpp,SafeArrayGetRecordInfo,"SafeArrayGetRecordInfo");
   function SafeArraySetIID(
      psa : access SAFEARRAY;
      guid_x : access constant GUID
   ) return HRESULT;
   pragma import (Cpp,SafeArraySetIID,"SafeArraySetIID");
   function SafeArrayGetIID(
      psa : access SAFEARRAY;
      pguid : access GUID
   ) return HRESULT;
   pragma import (Cpp,SafeArrayGetIID,"SafeArrayGetIID");
   function SafeArrayGetVartype(
      psa : access SAFEARRAY;
      pvt : access VARTYPE
   ) return HRESULT;
   pragma import (Cpp,SafeArrayGetVartype,"SafeArrayGetVartype");
   function SafeArrayCreateVector(
      vt : VARTYPE;
      lLbound : LONG;
      cElements : ULONG
   ) return access SAFEARRAY;
   pragma import (Cpp,SafeArrayCreateVector,"SafeArrayCreateVector");
   function SafeArrayCreateVectorEx(
      vt : VARTYPE;
      lLbound : LONG;
      cElements : ULONG;
      pvExtra : PVOID
   ) return access SAFEARRAY;
   pragma import (Cpp,SafeArrayCreateVectorEx,"SafeArrayCreateVectorEx");
   procedure VariantInit(
      pvarg : access VARIANTARG
   );
   pragma import (Cpp,VariantInit,"VariantInit");
   function VariantClear(
      pvarg : access VARIANTARG
   ) return HRESULT;
   pragma import (Cpp,VariantClear,"VariantClear");
   function VariantCopy(
      pvargDest : access VARIANTARG;
      pvargSrc : access constant VARIANTARG
   ) return HRESULT;
   pragma import (Cpp,VariantCopy,"VariantCopy");
   function VariantCopyInd(
      pvarDest : access VARIANT;
      pvargSrc : access constant VARIANTARG
   ) return HRESULT;
   pragma import (Cpp,VariantCopyInd,"VariantCopyInd");
   function VariantChangeType(
      pvargDest : access VARIANTARG;
      pvarSrc : access constant VARIANTARG;
      wFlags : USHORT;
      vt : VARTYPE
   ) return HRESULT;
   pragma import (Cpp,VariantChangeType,"VariantChangeType");
   function VariantChangeTypeEx(
      pvargDest : access VARIANTARG;
      pvarSrc : access constant VARIANTARG;
      lcid_x : LCID;
      wFlags : USHORT;
      vt : VARTYPE
   ) return HRESULT;
   pragma import (Cpp,VariantChangeTypeEx,"VariantChangeTypeEx");
   function VectorFromBstr(
      bstr_x : BSTR;
      ppsa : access LPSAFEARRAY
   ) return HRESULT;
   pragma import (Cpp,VectorFromBstr,"VectorFromBstr");
   function BstrFromVector(
      psa : access SAFEARRAY;
      pbstr : access BSTR
   ) return HRESULT;
   pragma import (Cpp,BstrFromVector,"BstrFromVector");
   function VarUI1FromI2(
      sIn : SHORT;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromI2,"VarUI1FromI2");
   function VarUI1FromI4(
      lIn : LONG;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromI4,"VarUI1FromI4");
   function VarUI1FromI8(
      i64In : LONG64;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromI8,"VarUI1FromI8");
   function VarUI1FromR4(
      fltIn : FLOAT;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromR4,"VarUI1FromR4");
   function VarUI1FromR8(
      dblIn : DOUBLE;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromR8,"VarUI1FromR8");
   function VarUI1FromCy(
      cyIn : CY;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromCy,"VarUI1FromCy");
   function VarUI1FromDate(
      dateIn : DATE;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromDate,"VarUI1FromDate");
   function VarUI1FromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromStr,"VarUI1FromStr");
   function VarUI1FromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromDisp,"VarUI1FromDisp");
   function VarUI1FromBool(
      boolIn : VARIANT_BOOL;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromBool,"VarUI1FromBool");
   function VarUI1FromI1(
      cIn : CHAR;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromI1,"VarUI1FromI1");
   function VarUI1FromUI2(
      uiIn : USHORT;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromUI2,"VarUI1FromUI2");
   function VarUI1FromUI4(
      ulIn : ULONG;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromUI4,"VarUI1FromUI4");
   function VarUI1FromUI8(
      ui64In : ULONG64;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromUI8,"VarUI1FromUI8");
   function VarUI1FromDec(
      pdecIn : access constant DECIMAL;
      pbOut : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarUI1FromDec,"VarUI1FromDec");
   function VarI2FromUI1(
      bIn : BYTE;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromUI1,"VarI2FromUI1");
   function VarI2FromI4(
      lIn : LONG;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromI4,"VarI2FromI4");
   function VarI2FromI8(
      i64In : LONG64;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromI8,"VarI2FromI8");
   function VarI2FromR4(
      fltIn : FLOAT;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromR4,"VarI2FromR4");
   function VarI2FromR8(
      dblIn : DOUBLE;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromR8,"VarI2FromR8");
   function VarI2FromCy(
      cyIn : CY;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromCy,"VarI2FromCy");
   function VarI2FromDate(
      dateIn : DATE;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromDate,"VarI2FromDate");
   function VarI2FromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromStr,"VarI2FromStr");
   function VarI2FromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromDisp,"VarI2FromDisp");
   function VarI2FromBool(
      boolIn : VARIANT_BOOL;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromBool,"VarI2FromBool");
   function VarI2FromI1(
      cIn : CHAR;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromI1,"VarI2FromI1");
   function VarI2FromUI2(
      uiIn : USHORT;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromUI2,"VarI2FromUI2");
   function VarI2FromUI4(
      ulIn : ULONG;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromUI4,"VarI2FromUI4");
   function VarI2FromUI8(
      ui64In : ULONG64;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromUI8,"VarI2FromUI8");
   function VarI2FromDec(
      pdecIn : access constant DECIMAL;
      psOut : access SHORT
   ) return HRESULT;
   pragma import (Cpp,VarI2FromDec,"VarI2FromDec");
   function VarI4FromUI1(
      bIn : BYTE;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromUI1,"VarI4FromUI1");
   function VarI4FromI2(
      sIn : SHORT;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromI2,"VarI4FromI2");
   function VarI4FromI8(
      i64In : LONG64;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromI8,"VarI4FromI8");
   function VarI4FromR4(
      fltIn : FLOAT;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromR4,"VarI4FromR4");
   function VarI4FromR8(
      dblIn : DOUBLE;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromR8,"VarI4FromR8");
   function VarI4FromCy(
      cyIn : CY;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromCy,"VarI4FromCy");
   function VarI4FromDate(
      dateIn : DATE;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromDate,"VarI4FromDate");
   function VarI4FromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromStr,"VarI4FromStr");
   function VarI4FromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromDisp,"VarI4FromDisp");
   function VarI4FromBool(
      boolIn : VARIANT_BOOL;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromBool,"VarI4FromBool");
   function VarI4FromI1(
      cIn : CHAR;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromI1,"VarI4FromI1");
   function VarI4FromUI2(
      uiIn : USHORT;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromUI2,"VarI4FromUI2");
   function VarI4FromUI4(
      ulIn : ULONG;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromUI4,"VarI4FromUI4");
   function VarI4FromUI8(
      ui64In : ULONG64;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromUI8,"VarI4FromUI8");
   function VarI4FromDec(
      pdecIn : access constant DECIMAL;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromDec,"VarI4FromDec");
   function VarI8FromUI1(
      bIn : BYTE;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromUI1,"VarI8FromUI1");
   function VarI8FromI2(
      sIn : SHORT;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromI2,"VarI8FromI2");
   function VarI8FromR4(
      fltIn : FLOAT;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromR4,"VarI8FromR4");
   function VarI8FromR8(
      dblIn : DOUBLE;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromR8,"VarI8FromR8");
   function VarI8FromCy(
      cyIn : CY;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromCy,"VarI8FromCy");
   function VarI8FromDate(
      dateIn : DATE;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromDate,"VarI8FromDate");
   function VarI8FromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromStr,"VarI8FromStr");
   function VarI8FromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromDisp,"VarI8FromDisp");
   function VarI8FromBool(
      boolIn : VARIANT_BOOL;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromBool,"VarI8FromBool");
   function VarI8FromI1(
      cIn : CHAR;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromI1,"VarI8FromI1");
   function VarI8FromUI2(
      uiIn : USHORT;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromUI2,"VarI8FromUI2");
   function VarI8FromUI4(
      ulIn : ULONG;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromUI4,"VarI8FromUI4");
   function VarI8FromUI8(
      ui64In : ULONG64;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromUI8,"VarI8FromUI8");
   function VarI8FromDec(
      pdecIn : access constant DECIMAL;
      pi64Out : access LONG64
   ) return HRESULT;
   pragma import (Cpp,VarI8FromDec,"VarI8FromDec");
   function VarR4FromUI1(
      bIn : BYTE;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromUI1,"VarR4FromUI1");
   function VarR4FromI2(
      sIn : SHORT;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromI2,"VarR4FromI2");
   function VarR4FromI4(
      lIn : LONG;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromI4,"VarR4FromI4");
   function VarR4FromI8(
      i64In : LONG64;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromI8,"VarR4FromI8");
   function VarR4FromR8(
      dblIn : DOUBLE;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromR8,"VarR4FromR8");
   function VarR4FromCy(
      cyIn : CY;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromCy,"VarR4FromCy");
   function VarR4FromDate(
      dateIn : DATE;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromDate,"VarR4FromDate");
   function VarR4FromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromStr,"VarR4FromStr");
   function VarR4FromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromDisp,"VarR4FromDisp");
   function VarR4FromBool(
      boolIn : VARIANT_BOOL;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromBool,"VarR4FromBool");
   function VarR4FromI1(
      cIn : CHAR;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromI1,"VarR4FromI1");
   function VarR4FromUI2(
      uiIn : USHORT;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromUI2,"VarR4FromUI2");
   function VarR4FromUI4(
      ulIn : ULONG;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromUI4,"VarR4FromUI4");
   function VarR4FromUI8(
      ui64In : ULONG64;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromUI8,"VarR4FromUI8");
   function VarR4FromDec(
      pdecIn : access constant DECIMAL;
      pfltOut : access FLOAT
   ) return HRESULT;
   pragma import (Cpp,VarR4FromDec,"VarR4FromDec");
   function VarR8FromUI1(
      bIn : BYTE;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromUI1,"VarR8FromUI1");
   function VarR8FromI2(
      sIn : SHORT;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromI2,"VarR8FromI2");
   function VarR8FromI4(
      lIn : LONG;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromI4,"VarR8FromI4");
   function VarR8FromI8(
      i64In : LONG64;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromI8,"VarR8FromI8");
   function VarR8FromR4(
      fltIn : FLOAT;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromR4,"VarR8FromR4");
   function VarR8FromCy(
      cyIn : CY;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromCy,"VarR8FromCy");
   function VarR8FromDate(
      dateIn : DATE;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromDate,"VarR8FromDate");
   function VarR8FromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromStr,"VarR8FromStr");
   function VarR8FromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromDisp,"VarR8FromDisp");
   function VarR8FromBool(
      boolIn : VARIANT_BOOL;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromBool,"VarR8FromBool");
   function VarR8FromI1(
      cIn : CHAR;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromI1,"VarR8FromI1");
   function VarR8FromUI2(
      uiIn : USHORT;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromUI2,"VarR8FromUI2");
   function VarR8FromUI4(
      ulIn : ULONG;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromUI4,"VarR8FromUI4");
   function VarR8FromUI8(
      ui64In : ULONG64;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromUI8,"VarR8FromUI8");
   function VarR8FromDec(
      pdecIn : access constant DECIMAL;
      pdblOut : access DOUBLE
   ) return HRESULT;
   pragma import (Cpp,VarR8FromDec,"VarR8FromDec");
   function VarDateFromUI1(
      bIn : BYTE;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromUI1,"VarDateFromUI1");
   function VarDateFromI2(
      sIn : SHORT;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromI2,"VarDateFromI2");
   function VarDateFromI4(
      lIn : LONG;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromI4,"VarDateFromI4");
   function VarDateFromI8(
      i64In : LONG64;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromI8,"VarDateFromI8");
   function VarDateFromR4(
      fltIn : FLOAT;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromR4,"VarDateFromR4");
   function VarDateFromR8(
      dblIn : DOUBLE;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromR8,"VarDateFromR8");
   function VarDateFromCy(
      cyIn : CY;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromCy,"VarDateFromCy");
   function VarDateFromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromStr,"VarDateFromStr");
   function VarDateFromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromDisp,"VarDateFromDisp");
   function VarDateFromBool(
      boolIn : VARIANT_BOOL;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromBool,"VarDateFromBool");
   function VarDateFromI1(
      cIn : CHAR;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromI1,"VarDateFromI1");
   function VarDateFromUI2(
      uiIn : USHORT;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromUI2,"VarDateFromUI2");
   function VarDateFromUI4(
      ulIn : ULONG;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromUI4,"VarDateFromUI4");
   function VarDateFromUI8(
      ui64In : ULONG64;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromUI8,"VarDateFromUI8");
   function VarDateFromDec(
      pdecIn : access constant DECIMAL;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromDec,"VarDateFromDec");
   function VarCyFromUI1(
      bIn : BYTE;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromUI1,"VarCyFromUI1");
   function VarCyFromI2(
      sIn : SHORT;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromI2,"VarCyFromI2");
   function VarCyFromI4(
      lIn : LONG;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromI4,"VarCyFromI4");
   function VarCyFromI8(
      i64In : LONG64;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromI8,"VarCyFromI8");
   function VarCyFromR4(
      fltIn : FLOAT;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromR4,"VarCyFromR4");
   function VarCyFromR8(
      dblIn : DOUBLE;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromR8,"VarCyFromR8");
   function VarCyFromDate(
      dateIn : DATE;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromDate,"VarCyFromDate");
   function VarCyFromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromStr,"VarCyFromStr");
   function VarCyFromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromDisp,"VarCyFromDisp");
   function VarCyFromBool(
      boolIn : VARIANT_BOOL;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromBool,"VarCyFromBool");
   function VarCyFromI1(
      cIn : CHAR;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromI1,"VarCyFromI1");
   function VarCyFromUI2(
      uiIn : USHORT;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromUI2,"VarCyFromUI2");
   function VarCyFromUI4(
      ulIn : ULONG;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromUI4,"VarCyFromUI4");
   function VarCyFromUI8(
      ui64In : ULONG64;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromUI8,"VarCyFromUI8");
   function VarCyFromDec(
      pdecIn : access constant DECIMAL;
      pcyOut : access CY
   ) return HRESULT;
   pragma import (Cpp,VarCyFromDec,"VarCyFromDec");
   function VarBstrFromUI1(
      bVal : BYTE;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromUI1,"VarBstrFromUI1");
   function VarBstrFromI2(
      iVal : SHORT;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromI2,"VarBstrFromI2");
   function VarBstrFromI4(
      lIn : LONG;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromI4,"VarBstrFromI4");
   function VarBstrFromI8(
      i64In : LONG64;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromI8,"VarBstrFromI8");
   function VarBstrFromR4(
      fltIn : FLOAT;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromR4,"VarBstrFromR4");
   function VarBstrFromR8(
      dblIn : DOUBLE;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromR8,"VarBstrFromR8");
   function VarBstrFromCy(
      cyIn : CY;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromCy,"VarBstrFromCy");
   function VarBstrFromDate(
      dateIn : DATE;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromDate,"VarBstrFromDate");
   function VarBstrFromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromDisp,"VarBstrFromDisp");
   function VarBstrFromBool(
      boolIn : VARIANT_BOOL;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromBool,"VarBstrFromBool");
   function VarBstrFromI1(
      cIn : CHAR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromI1,"VarBstrFromI1");
   function VarBstrFromUI2(
      uiIn : USHORT;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromUI2,"VarBstrFromUI2");
   function VarBstrFromUI4(
      ulIn : ULONG;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromUI4,"VarBstrFromUI4");
   function VarBstrFromUI8(
      ui64In : ULONG64;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromUI8,"VarBstrFromUI8");
   function VarBstrFromDec(
      pdecIn : access constant DECIMAL;
      lcid_x : LCID;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrFromDec,"VarBstrFromDec");
   function VarBoolFromUI1(
      bIn : BYTE;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromUI1,"VarBoolFromUI1");
   function VarBoolFromI2(
      sIn : SHORT;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromI2,"VarBoolFromI2");
   function VarBoolFromI4(
      lIn : LONG;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromI4,"VarBoolFromI4");
   function VarBoolFromI8(
      i64In : LONG64;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromI8,"VarBoolFromI8");
   function VarBoolFromR4(
      fltIn : FLOAT;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromR4,"VarBoolFromR4");
   function VarBoolFromR8(
      dblIn : DOUBLE;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromR8,"VarBoolFromR8");
   function VarBoolFromDate(
      dateIn : DATE;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromDate,"VarBoolFromDate");
   function VarBoolFromCy(
      cyIn : CY;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromCy,"VarBoolFromCy");
   function VarBoolFromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromStr,"VarBoolFromStr");
   function VarBoolFromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromDisp,"VarBoolFromDisp");
   function VarBoolFromI1(
      cIn : CHAR;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromI1,"VarBoolFromI1");
   function VarBoolFromUI2(
      uiIn : USHORT;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromUI2,"VarBoolFromUI2");
   function VarBoolFromUI4(
      ulIn : ULONG;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromUI4,"VarBoolFromUI4");
   function VarBoolFromUI8(
      i64In : ULONG64;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromUI8,"VarBoolFromUI8");
   function VarBoolFromDec(
      pdecIn : access constant DECIMAL;
      pboolOut : access VARIANT_BOOL
   ) return HRESULT;
   pragma import (Cpp,VarBoolFromDec,"VarBoolFromDec");
   function VarI1FromUI1(
      bIn : BYTE;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromUI1,"VarI1FromUI1");
   function VarI1FromI2(
      uiIn : SHORT;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromI2,"VarI1FromI2");
   function VarI1FromI4(
      lIn : LONG;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromI4,"VarI1FromI4");
   function VarI1FromI8(
      i64In : LONG64;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromI8,"VarI1FromI8");
   function VarI1FromR4(
      fltIn : FLOAT;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromR4,"VarI1FromR4");
   function VarI1FromR8(
      dblIn : DOUBLE;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromR8,"VarI1FromR8");
   function VarI1FromDate(
      dateIn : DATE;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromDate,"VarI1FromDate");
   function VarI1FromCy(
      cyIn : CY;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromCy,"VarI1FromCy");
   function VarI1FromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromStr,"VarI1FromStr");
   function VarI1FromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromDisp,"VarI1FromDisp");
   function VarI1FromBool(
      boolIn : VARIANT_BOOL;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromBool,"VarI1FromBool");
   function VarI1FromUI2(
      uiIn : USHORT;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromUI2,"VarI1FromUI2");
   function VarI1FromUI4(
      ulIn : ULONG;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromUI4,"VarI1FromUI4");
   function VarI1FromUI8(
      i64In : ULONG64;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromUI8,"VarI1FromUI8");
   function VarI1FromDec(
      pdecIn : access constant DECIMAL;
      pcOut : access CHAR
   ) return HRESULT;
   pragma import (Cpp,VarI1FromDec,"VarI1FromDec");
   function VarUI2FromUI1(
      bIn : BYTE;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromUI1,"VarUI2FromUI1");
   function VarUI2FromI2(
      uiIn : SHORT;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromI2,"VarUI2FromI2");
   function VarUI2FromI4(
      lIn : LONG;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromI4,"VarUI2FromI4");
   function VarUI2FromI8(
      i64In : LONG64;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromI8,"VarUI2FromI8");
   function VarUI2FromR4(
      fltIn : FLOAT;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromR4,"VarUI2FromR4");
   function VarUI2FromR8(
      dblIn : DOUBLE;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromR8,"VarUI2FromR8");
   function VarUI2FromDate(
      dateIn : DATE;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromDate,"VarUI2FromDate");
   function VarUI2FromCy(
      cyIn : CY;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromCy,"VarUI2FromCy");
   function VarUI2FromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromStr,"VarUI2FromStr");
   function VarUI2FromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromDisp,"VarUI2FromDisp");
   function VarUI2FromBool(
      boolIn : VARIANT_BOOL;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromBool,"VarUI2FromBool");
   function VarUI2FromI1(
      cIn : CHAR;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromI1,"VarUI2FromI1");
   function VarUI2FromUI4(
      ulIn : ULONG;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromUI4,"VarUI2FromUI4");
   function VarUI2FromUI8(
      i64In : ULONG64;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromUI8,"VarUI2FromUI8");
   function VarUI2FromDec(
      pdecIn : access constant DECIMAL;
      puiOut : access USHORT
   ) return HRESULT;
   pragma import (Cpp,VarUI2FromDec,"VarUI2FromDec");
   function VarUI4FromUI1(
      bIn : BYTE;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromUI1,"VarUI4FromUI1");
   function VarUI4FromI2(
      uiIn : SHORT;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromI2,"VarUI4FromI2");
   function VarUI4FromI4(
      lIn : LONG;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromI4,"VarUI4FromI4");
   function VarUI4FromI8(
      i64In : LONG64;
      plOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromI8,"VarUI4FromI8");
   function VarUI4FromR4(
      fltIn : FLOAT;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromR4,"VarUI4FromR4");
   function VarUI4FromR8(
      dblIn : DOUBLE;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromR8,"VarUI4FromR8");
   function VarUI4FromDate(
      dateIn : DATE;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromDate,"VarUI4FromDate");
   function VarUI4FromCy(
      cyIn : CY;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromCy,"VarUI4FromCy");
   function VarUI4FromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromStr,"VarUI4FromStr");
   function VarUI4FromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromDisp,"VarUI4FromDisp");
   function VarUI4FromBool(
      boolIn : VARIANT_BOOL;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromBool,"VarUI4FromBool");
   function VarUI4FromI1(
      cIn : CHAR;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromI1,"VarUI4FromI1");
   function VarUI4FromUI2(
      uiIn : USHORT;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromUI2,"VarUI4FromUI2");
   function VarUI4FromUI8(
      ui64In : ULONG64;
      plOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromUI8,"VarUI4FromUI8");
   function VarUI4FromDec(
      pdecIn : access constant DECIMAL;
      pulOut : access ULONG
   ) return HRESULT;
   pragma import (Cpp,VarUI4FromDec,"VarUI4FromDec");
   function VarUI8FromUI1(
      bIn : BYTE;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromUI1,"VarUI8FromUI1");
   function VarUI8FromI2(
      sIn : SHORT;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromI2,"VarUI8FromI2");
   function VarUI8FromI4(
      lIn : LONG;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromI4,"VarUI8FromI4");
   function VarUI8FromI8(
      ui64In : LONG64;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromI8,"VarUI8FromI8");
   function VarUI8FromR4(
      fltIn : FLOAT;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromR4,"VarUI8FromR4");
   function VarUI8FromR8(
      dblIn : DOUBLE;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromR8,"VarUI8FromR8");
   function VarUI8FromCy(
      cyIn : CY;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromCy,"VarUI8FromCy");
   function VarUI8FromDate(
      dateIn : DATE;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromDate,"VarUI8FromDate");
   function VarUI8FromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromStr,"VarUI8FromStr");
   function VarUI8FromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromDisp,"VarUI8FromDisp");
   function VarUI8FromBool(
      boolIn : VARIANT_BOOL;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromBool,"VarUI8FromBool");
   function VarUI8FromI1(
      cIn : CHAR;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromI1,"VarUI8FromI1");
   function VarUI8FromUI2(
      uiIn : USHORT;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromUI2,"VarUI8FromUI2");
   function VarUI8FromUI4(
      ulIn : ULONG;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromUI4,"VarUI8FromUI4");
   function VarUI8FromDec(
      pdecIn : access constant DECIMAL;
      pi64Out : access ULONG64
   ) return HRESULT;
   pragma import (Cpp,VarUI8FromDec,"VarUI8FromDec");
   function VarDecFromUI1(
      bIn : BYTE;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromUI1,"VarDecFromUI1");
   function VarDecFromI2(
      uiIn : SHORT;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromI2,"VarDecFromI2");
   function VarDecFromI4(
      lIn : LONG;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromI4,"VarDecFromI4");
   function VarDecFromI8(
      i64In : LONG64;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromI8,"VarDecFromI8");
   function VarDecFromR4(
      fltIn : FLOAT;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromR4,"VarDecFromR4");
   function VarDecFromR8(
      dblIn : DOUBLE;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromR8,"VarDecFromR8");
   function VarDecFromDate(
      dateIn : DATE;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromDate,"VarDecFromDate");
   function VarDecFromCy(
      cyIn : CY;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromCy,"VarDecFromCy");
   function VarDecFromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromStr,"VarDecFromStr");
   function VarDecFromDisp(
      pdispIn : access IDispatch'Class;
      lcid_x : LCID;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromDisp,"VarDecFromDisp");
   function VarDecFromBool(
      boolIn : VARIANT_BOOL;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromBool,"VarDecFromBool");
   function VarDecFromI1(
      cIn : CHAR;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromI1,"VarDecFromI1");
   function VarDecFromUI2(
      uiIn : USHORT;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromUI2,"VarDecFromUI2");
   function VarDecFromUI4(
      ulIn : ULONG;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromUI4,"VarDecFromUI4");
   function VarDecFromUI8(
      ui64In : ULONG64;
      pdecOut : access DECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFromUI8,"VarDecFromUI8");
   function VarI4FromI8_x(
      i64In : LONG64;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromI8_x,"VarI4FromI8");
   function VarI4FromUI8_x(
      ui64In : ULONG64;
      plOut : access LONG
   ) return HRESULT;
   pragma import (Cpp,VarI4FromUI8_x,"VarI4FromUI8");
   type NUMPARSE is record
      cDig : INT;
      dwInFlags : ULONG;
      dwOutFlags : ULONG;
      cchUsed : INT;
      nBaseShift : INT;
      nPwr10 : INT;
   end record;
   pragma Convention (C_Pass_By_Copy,NUMPARSE);
   for NUMPARSE use record
      cDig at 0 range 0..31;
      dwInFlags at 0 range 32..63;
      dwOutFlags at 0 range 64..95;
      cchUsed at 0 range 96..127;
      nBaseShift at 0 range 128..159;
      nPwr10 at 0 range 160..191;
   end record;
   for NUMPARSE'Size use 192;
   for NUMPARSE'Alignment use 4;
   function VarParseNumFromStr(
      strIn : LPCOLESTR;
      lcid_x : LCID;
      dwFlags : ULONG;
      pnumprs : access NUMPARSE;
      rgbDig : access BYTE
   ) return HRESULT;
   pragma import (Cpp,VarParseNumFromStr,"VarParseNumFromStr");
   function VarNumFromParseNum(
      pnumprs : access NUMPARSE;
      rgbDig : access BYTE;
      dwVtBits : ULONG;
      pvar : access VARIANT
   ) return HRESULT;
   pragma import (Cpp,VarNumFromParseNum,"VarNumFromParseNum");
   function VarAdd(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarAdd,"VarAdd");
   function VarAnd(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarAnd,"VarAnd");
   function VarCat(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarCat,"VarCat");
   function VarDiv(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarDiv,"VarDiv");
   function VarEqv(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarEqv,"VarEqv");
   function VarIdiv(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarIdiv,"VarIdiv");
   function VarImp(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarImp,"VarImp");
   function VarMod(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarMod,"VarMod");
   function VarMul(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarMul,"VarMul");
   function VarOr(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarOr,"VarOr");
   function VarPow(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarPow,"VarPow");
   function VarSub(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarSub,"VarSub");
   function VarXor(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarXor,"VarXor");
   function VarAbs(
      pvarIn : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarAbs,"VarAbs");
   function VarFix(
      pvarIn : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarFix,"VarFix");
   function VarInt(
      pvarIn : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarInt,"VarInt");
   function VarNeg(
      pvarIn : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarNeg,"VarNeg");
   function VarNot(
      pvarIn : LPVARIANT;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarNot,"VarNot");
   function VarRound(
      pvarIn : LPVARIANT;
      cDecimals : Interfaces.C.Int;
      pvarResult : LPVARIANT
   ) return HRESULT;
   pragma import (Cpp,VarRound,"VarRound");
   function VarCmp(
      pvarLeft : LPVARIANT;
      pvarRight : LPVARIANT;
      lcid_x : LCID;
      dwFlags : ULONG
   ) return HRESULT;
   pragma import (Cpp,VarCmp,"VarCmp");
   -- VarCmp_x(); -- inlined function not supported
   function VarDecAdd(
      pdecLeft : LPDECIMAL;
      pdecRight : LPDECIMAL;
      pdecResult : LPDECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecAdd,"VarDecAdd");
   function VarDecDiv(
      pdecLeft : LPDECIMAL;
      pdecRight : LPDECIMAL;
      pdecResult : LPDECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecDiv,"VarDecDiv");
   function VarDecMul(
      pdecLeft : LPDECIMAL;
      pdecRight : LPDECIMAL;
      pdecResult : LPDECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecMul,"VarDecMul");
   function VarDecSub(
      pdecLeft : LPDECIMAL;
      pdecRight : LPDECIMAL;
      pdecResult : LPDECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecSub,"VarDecSub");
   function VarDecAbs(
      pdecIn : LPDECIMAL;
      pdecResult : LPDECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecAbs,"VarDecAbs");
   function VarDecFix(
      pdecIn : LPDECIMAL;
      pdecResult : LPDECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecFix,"VarDecFix");
   function VarDecInt(
      pdecIn : LPDECIMAL;
      pdecResult : LPDECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecInt,"VarDecInt");
   function VarDecNeg(
      pdecIn : LPDECIMAL;
      pdecResult : LPDECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecNeg,"VarDecNeg");
   function VarDecRound(
      pdecIn : LPDECIMAL;
      cDecimals : Interfaces.C.Int;
      pdecResult : LPDECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecRound,"VarDecRound");
   function VarDecCmp(
      pdecLeft : LPDECIMAL;
      pdecRight : LPDECIMAL
   ) return HRESULT;
   pragma import (Cpp,VarDecCmp,"VarDecCmp");
   function VarDecCmpR8(
      pdecLeft : LPDECIMAL;
      dblRight : Long_Float
   ) return HRESULT;
   pragma import (Cpp,VarDecCmpR8,"VarDecCmpR8");
   function VarCyAdd(
      cyLeft : CY;
      cyRight : CY;
      pcyResult : LPCY
   ) return HRESULT;
   pragma import (Cpp,VarCyAdd,"VarCyAdd");
   function VarCyMul(
      cyLeft : CY;
      cyRight : CY;
      pcyResult : LPCY
   ) return HRESULT;
   pragma import (Cpp,VarCyMul,"VarCyMul");
   function VarCyMulI4(
      cyLeft : CY;
      lRight : LONG;
      pcyResult : LPCY
   ) return HRESULT;
   pragma import (Cpp,VarCyMulI4,"VarCyMulI4");
   function VarCyMulI8(
      cyLeft : CY;
      lRight : LONG64;
      pcyResult : LPCY
   ) return HRESULT;
   pragma import (Cpp,VarCyMulI8,"VarCyMulI8");
   function VarCySub(
      cyLeft : CY;
      cyRight : CY;
      pcyResult : LPCY
   ) return HRESULT;
   pragma import (Cpp,VarCySub,"VarCySub");
   function VarCyAbs(
      cyIn : CY;
      pcyResult : LPCY
   ) return HRESULT;
   pragma import (Cpp,VarCyAbs,"VarCyAbs");
   function VarCyFix(
      cyIn : CY;
      pcyResult : LPCY
   ) return HRESULT;
   pragma import (Cpp,VarCyFix,"VarCyFix");
   function VarCyInt(
      cyIn : CY;
      pcyResult : LPCY
   ) return HRESULT;
   pragma import (Cpp,VarCyInt,"VarCyInt");
   function VarCyNeg(
      cyIn : CY;
      pcyResult : LPCY
   ) return HRESULT;
   pragma import (Cpp,VarCyNeg,"VarCyNeg");
   function VarCyRound(
      cyIn : CY;
      cDecimals : Interfaces.C.Int;
      pcyResult : LPCY
   ) return HRESULT;
   pragma import (Cpp,VarCyRound,"VarCyRound");
   function VarCyCmp(
      cyLeft : CY;
      cyRight : CY
   ) return HRESULT;
   pragma import (Cpp,VarCyCmp,"VarCyCmp");
   function VarCyCmpR8(
      cyLeft : CY;
      dblRight : Long_Float
   ) return HRESULT;
   pragma import (Cpp,VarCyCmpR8,"VarCyCmpR8");
   function VarBstrCat(
      bstrLeft : BSTR;
      bstrRight : BSTR;
      pbstrResult : LPBSTR
   ) return HRESULT;
   pragma import (Cpp,VarBstrCat,"VarBstrCat");
   function VarBstrCmp(
      bstrLeft : BSTR;
      bstrRight : BSTR;
      lcid_x : LCID;
      dwFlags : ULONG
   ) return HRESULT;
   pragma import (Cpp,VarBstrCmp,"VarBstrCmp");
   function VarR8Pow(
      dblLeft : Long_Float;
      dblRight : Long_Float;
      pdblResult : access Long_Float
   ) return HRESULT;
   pragma import (Cpp,VarR8Pow,"VarR8Pow");
   function VarR4CmpR8(
      fltLeft : Standard.Float;
      dblRight : Long_Float
   ) return HRESULT;
   pragma import (Cpp,VarR4CmpR8,"VarR4CmpR8");
   function VarR8Round(
      dblIn : Long_Float;
      cDecimals : Interfaces.C.Int;
      pdblResult : access Long_Float
   ) return HRESULT;
   pragma import (Cpp,VarR8Round,"VarR8Round");
   type UDATE is record
      st : SYSTEMTIME;
      wDayOfYear : USHORT;
   end record;
   pragma Convention (C_Pass_By_Copy,UDATE);
   for UDATE use record
      st at 0 range 0..127;
      wDayOfYear at 0 range 128..143;
   end record;
   for UDATE'Size use 144;
   for UDATE'Alignment use 2;
   function VarDateFromUdate(
      pudateIn : access UDATE;
      dwFlags : ULONG;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromUdate,"VarDateFromUdate");
   function VarDateFromUdateEx(
      pudateIn : access UDATE;
      lcid_x : LCID;
      dwFlags : ULONG;
      pdateOut : access DATE
   ) return HRESULT;
   pragma import (Cpp,VarDateFromUdateEx,"VarDateFromUdateEx");
   function VarUdateFromDate(
      dateIn : DATE;
      dwFlags : ULONG;
      pudateOut : access UDATE
   ) return HRESULT;
   pragma import (Cpp,VarUdateFromDate,"VarUdateFromDate");
   function GetAltMonthNames(
      lcid_x : LCID;
      prgp : access SNB
   ) return HRESULT;
   pragma import (Cpp,GetAltMonthNames,"GetAltMonthNames");
   function VarFormat(
      pvarIn : LPVARIANT;
      pstrFormat : LPOLESTR;
      iFirstDay : Interfaces.C.Int;
      iFirstWeek : Interfaces.C.Int;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarFormat,"VarFormat");
   function VarFormatDateTime(
      pvarIn : LPVARIANT;
      iNamedFormat : Interfaces.C.Int;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarFormatDateTime,"VarFormatDateTime");
   function VarFormatNumber(
      pvarIn : LPVARIANT;
      iNumDig : Interfaces.C.Int;
      iIncLead : Interfaces.C.Int;
      iUseParens : Interfaces.C.Int;
      iGroup : Interfaces.C.Int;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarFormatNumber,"VarFormatNumber");
   function VarFormatPercent(
      pvarIn : LPVARIANT;
      iNumDig : Interfaces.C.Int;
      iIncLead : Interfaces.C.Int;
      iUseParens : Interfaces.C.Int;
      iGroup : Interfaces.C.Int;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarFormatPercent,"VarFormatPercent");
   function VarFormatCurrency(
      pvarIn : LPVARIANT;
      iNumDig : Interfaces.C.Int;
      iIncLead : Interfaces.C.Int;
      iUseParens : Interfaces.C.Int;
      iGroup : Interfaces.C.Int;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarFormatCurrency,"VarFormatCurrency");
   function VarWeekdayName(
      iWeekday : Interfaces.C.Int;
      fAbbrev : Interfaces.C.Int;
      iFirstDay : Interfaces.C.Int;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarWeekdayName,"VarWeekdayName");
   function VarMonthName(
      iMonth : Interfaces.C.Int;
      fAbbrev : Interfaces.C.Int;
      dwFlags : ULONG;
      pbstrOut : access BSTR
   ) return HRESULT;
   pragma import (Cpp,VarMonthName,"VarMonthName");
   function VarFormatFromTokens(
      pvarIn : LPVARIANT;
      pstrFormat : LPOLESTR;
      pbTokCur : LPBYTE;
      dwFlags : ULONG;
      pbstrOut : access BSTR;
      lcid_x : LCID
   ) return HRESULT;
   pragma import (Cpp,VarFormatFromTokens,"VarFormatFromTokens");
   function VarTokenizeFormatString(
      pstrFormat : LPOLESTR;
      rgbTok : LPBYTE;
      cbTok : Interfaces.C.Int;
      iFirstDay : Interfaces.C.Int;
      iFirstWeek : Interfaces.C.Int;
      lcid_x : LCID;
      pcbActual : access Interfaces.C.Int
   ) return HRESULT;
   pragma import (Cpp,VarTokenizeFormatString,"VarTokenizeFormatString");
   function LHashValOfNameSysA(
      syskind_x : SYSKIND;
      lcid_x : LCID;
      szName : LPCSTR
   ) return ULONG;
   pragma import (Cpp,LHashValOfNameSysA,"LHashValOfNameSysA");
   function LHashValOfNameSys(
      syskind_x : SYSKIND;
      lcid_x : LCID;
      szName : access constant OLECHAR
   ) return ULONG;
   pragma import (Cpp,LHashValOfNameSys,"LHashValOfNameSys");
   function LoadTypeLib(
      szFile : LPCOLESTR;
      pptlib : access ITypeLib_Ptr
   ) return HRESULT;
   pragma import (Cpp,LoadTypeLib,"LoadTypeLib");
   type tagREGKIND is (
      REGKIND_DEFAULT,
      REGKIND_REGISTER,
      REGKIND_NONE
   );
   for tagREGKIND use (
      REGKIND_DEFAULT => 0,
      REGKIND_REGISTER => 1,
      REGKIND_NONE => 2
   );
   for tagREGKIND'Size use 32;
   subtype REGKIND is tagREGKIND;
   function LoadTypeLibEx(
      szFile : LPCOLESTR;
      regkind_x : REGKIND;
      pptlib : access ITypeLib_Ptr
   ) return HRESULT;
   pragma import (Cpp,LoadTypeLibEx,"LoadTypeLibEx");
   function LoadRegTypeLib(
      rguid : access constant GUID;
      wVerMajor : WORD;
      wVerMinor : WORD;
      lcid_x : LCID;
      pptlib : access ITypeLib_Ptr
   ) return HRESULT;
   pragma import (Cpp,LoadRegTypeLib,"LoadRegTypeLib");
   function QueryPathOfRegTypeLib(
      guid_x : access constant GUID;
      wMaj : USHORT;
      wMin : USHORT;
      lcid_x : LCID;
      lpbstrPathName : LPBSTR
   ) return HRESULT;
   pragma import (Cpp,QueryPathOfRegTypeLib,"QueryPathOfRegTypeLib");
   function RegisterTypeLib(
      ptlib : access ITypeLib'Class;
      szFullPath : LPCOLESTR;
      szHelpDir : LPCOLESTR
   ) return HRESULT;
   pragma import (Cpp,RegisterTypeLib,"RegisterTypeLib");
   function UnRegisterTypeLib(
      libID : access constant GUID;
      wVerMajor : WORD;
      wVerMinor : WORD;
      lcid_x : LCID;
      syskind_x : SYSKIND
   ) return HRESULT;
   pragma import (Cpp,UnRegisterTypeLib,"UnRegisterTypeLib");
   function RegisterTypeLibForUser(
      ptlib : access ITypeLib'Class;
      szFullPath : access OLECHAR;
      szHelpDir : access OLECHAR
   ) return HRESULT;
   pragma import (Cpp,RegisterTypeLibForUser,"RegisterTypeLibForUser");
   function UnRegisterTypeLibForUser(
      libID : access constant GUID;
      wMajorVerNum : WORD;
      wMinorVerNum : WORD;
      lcid_x : LCID;
      syskind_x : SYSKIND
   ) return HRESULT;
   pragma import (Cpp,UnRegisterTypeLibForUser,"UnRegisterTypeLibForUser");
   function CreateTypeLib(
      syskind_x : SYSKIND;
      szFile : LPCOLESTR;
      ppctlib : access ICreateTypeLib_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateTypeLib,"CreateTypeLib");
   function CreateTypeLib2(
      syskind_x : SYSKIND;
      szFile : LPCOLESTR;
      ppctlib : access ICreateTypeLib2_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateTypeLib2,"CreateTypeLib2");
   type tagPARAMDATA is record
      szName : access OLECHAR;
      vt : VARTYPE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPARAMDATA);
   for tagPARAMDATA use record
      szName at 0 range 0..63;
      vt at 0 range 64..79;
   end record;
   for tagPARAMDATA'Size use 128;
   for tagPARAMDATA'Alignment use 8;
   subtype PARAMDATA is tagPARAMDATA;
   type LPPARAMDATA is access all tagPARAMDATA;
   type tagMETHODDATA is record
      szName : access OLECHAR;
      ppdata : access PARAMDATA;
      dispid_x : DISPID;
      iMeth : UINT;
      cc : CALLCONV;
      cArgs : UINT;
      wFlags : WORD;
      vtReturn : VARTYPE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMETHODDATA);
   for tagMETHODDATA use record
      szName at 0 range 0..63;
      ppdata at 0 range 64..127;
      dispid_x at 0 range 128..159;
      iMeth at 0 range 160..191;
      cc at 0 range 192..223;
      cArgs at 0 range 224..255;
      wFlags at 0 range 256..271;
      vtReturn at 0 range 272..287;
   end record;
   for tagMETHODDATA'Size use 320;
   for tagMETHODDATA'Alignment use 8;
   subtype METHODDATA is tagMETHODDATA;
   type LPMETHODDATA is access all tagMETHODDATA;
   type tagINTERFACEDATA is record
      pmethdata : access METHODDATA;
      cMembers : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagINTERFACEDATA);
   for tagINTERFACEDATA use record
      pmethdata at 0 range 0..63;
      cMembers at 0 range 64..95;
   end record;
   for tagINTERFACEDATA'Size use 128;
   for tagINTERFACEDATA'Alignment use 8;
   subtype INTERFACEDATA is tagINTERFACEDATA;
   type LPINTERFACEDATA is access all tagINTERFACEDATA;
   function DispGetParam(
      pdispparams : access DISPPARAMS;
      position : UINT;
      vtTarg : VARTYPE;
      pvarResult : access VARIANT;
      puArgErr : access UINT
   ) return HRESULT;
   pragma import (Cpp,DispGetParam,"DispGetParam");
   function DispGetIDsOfNames(
      ptinfo : access ITypeInfo'Class;
      rgszNames : access LPOLESTR;
      cNames : UINT;
      rgdispid : access DISPID
   ) return HRESULT;
   pragma import (Cpp,DispGetIDsOfNames,"DispGetIDsOfNames");
   function DispInvoke(
      this : access Void;
      ptinfo : access ITypeInfo'Class;
      dispidMember : DISPID;
      wFlags : WORD;
      pparams : access DISPPARAMS;
      pvarResult : access VARIANT;
      pexcepinfo : access EXCEPINFO;
      puArgErr : access UINT
   ) return HRESULT;
   pragma import (Cpp,DispInvoke,"DispInvoke");
   function CreateDispTypeInfo(
      pidata : access INTERFACEDATA;
      lcid_x : LCID;
      pptinfo : access ITypeInfo_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateDispTypeInfo,"CreateDispTypeInfo");
   function CreateStdDispatch(
      punkOuter : access IUnknown'Class;
      pvThis : access Void;
      ptinfo : access ITypeInfo'Class;
      ppunkStdDisp : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateStdDispatch,"CreateStdDispatch");
   type VARIANTARG_Ptr is access all VARIANTARG; -- Auto Generated Dependancy
   function DispCallFunc(
      pvInstance : access Void;
      oVft : ULONG_PTR;
      cc : CALLCONV;
      vtReturn : VARTYPE;
      cActuals : UINT;
      prgvt : access VARTYPE;
      prgpvarg : access VARIANTARG_Ptr;
      pvargResult : access VARIANT
   ) return HRESULT;
   pragma import (Cpp,DispCallFunc,"DispCallFunc");
   function RegisterActiveObject(
      punk : access IUnknown'Class;
      rclsid : access constant IID;
      dwFlags : DWORD;
      pdwRegister : access DWORD
   ) return HRESULT;
   pragma import (Cpp,RegisterActiveObject,"RegisterActiveObject");
   function RevokeActiveObject(
      dwRegister : DWORD;
      pvReserved : access Void
   ) return HRESULT;
   pragma import (Cpp,RevokeActiveObject,"RevokeActiveObject");
   function GetActiveObject(
      rclsid : access constant IID;
      pvReserved : access Void;
      ppunk : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,GetActiveObject,"GetActiveObject");
   function SetErrorInfo(
      dwReserved : ULONG;
      perrinfo : access IErrorInfo'Class
   ) return HRESULT;
   pragma import (Cpp,SetErrorInfo,"SetErrorInfo");
   function GetErrorInfo(
      dwReserved : ULONG;
      pperrinfo : access IErrorInfo_Ptr
   ) return HRESULT;
   pragma import (Cpp,GetErrorInfo,"GetErrorInfo");
   function CreateErrorInfo(
      pperrinfo : access ICreateErrorInfo_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateErrorInfo,"CreateErrorInfo");
   function GetRecordInfoFromTypeInfo(
      pTypeInfo : access ITypeInfo'Class;
      ppRecInfo : access IRecordInfo_Ptr
   ) return HRESULT;
   pragma import (Cpp,GetRecordInfoFromTypeInfo,"GetRecordInfoFromTypeInfo");
   function GetRecordInfoFromGuids(
      rGuidTypeLib : access constant GUID;
      uVerMajor : ULONG;
      uVerMinor : ULONG;
      lcid_x : LCID;
      rGuidTypeInfo : access constant GUID;
      ppRecInfo : access IRecordInfo_Ptr
   ) return HRESULT;
   pragma import (Cpp,GetRecordInfoFromGuids,"GetRecordInfoFromGuids");
   function OaBuildVersion return ULONG;
   pragma import (Cpp,OaBuildVersion,"OaBuildVersion");
   procedure ClearCustData(
      pCustData : LPCUSTDATA
   );
   pragma import (Cpp,ClearCustData,"ClearCustData");
   procedure OaEnablePerUserTLibRegistration;
   pragma import (Cpp,OaEnablePerUserTLibRegistration,"OaEnablePerUserTLibRegistration");
   -- #include <ole2.h>
   function CreateDataAdviseHolder_x(
      ppDAHolder : access LPDATAADVISEHOLDER
   ) return HRESULT;
   pragma import (Cpp,CreateDataAdviseHolder_x,"CreateDataAdviseHolder");
   function OleBuildVersion return DWORD;
   pragma import (Cpp,OleBuildVersion,"OleBuildVersion");
   function WriteFmtUserTypeStg(
      pstg : LPSTORAGE;
      cf : CLIPFORMAT;
      lpszUserType : LPOLESTR
   ) return HRESULT;
   pragma import (Cpp,WriteFmtUserTypeStg,"WriteFmtUserTypeStg");
   function ReadFmtUserTypeStg(
      pstg : LPSTORAGE;
      pcf : access CLIPFORMAT;
      lplpszUserType : access LPOLESTR
   ) return HRESULT;
   pragma import (Cpp,ReadFmtUserTypeStg,"ReadFmtUserTypeStg");
   function OleInitialize(
      pvReserved : LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleInitialize,"OleInitialize");
   procedure OleUninitialize;
   pragma import (Cpp,OleUninitialize,"OleUninitialize");
   function OleQueryLinkFromData(
      pSrcDataObject : LPDATAOBJECT
   ) return HRESULT;
   pragma import (Cpp,OleQueryLinkFromData,"OleQueryLinkFromData");
   function OleQueryCreateFromData(
      pSrcDataObject : LPDATAOBJECT
   ) return HRESULT;
   pragma import (Cpp,OleQueryCreateFromData,"OleQueryCreateFromData");
   function OleCreate(
      rclsid : access constant IID;
      riid : access constant IID;
      renderopt : DWORD;
      pFormatEtc : LPFORMATETC;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreate,"OleCreate");
   function OleCreateEx(
      rclsid : access constant IID;
      riid : access constant IID;
      dwFlags : DWORD;
      renderopt : DWORD;
      cFormats : ULONG;
      rgAdvf : access DWORD;
      rgFormatEtc : LPFORMATETC;
      lpAdviseSink_x : access IAdviseSink'Class;
      rgdwConnection : access DWORD;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateEx,"OleCreateEx");
   function OleCreateFromData(
      pSrcDataObj : LPDATAOBJECT;
      riid : access constant IID;
      renderopt : DWORD;
      pFormatEtc : LPFORMATETC;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateFromData,"OleCreateFromData");
   function OleCreateFromDataEx(
      pSrcDataObj : LPDATAOBJECT;
      riid : access constant IID;
      dwFlags : DWORD;
      renderopt : DWORD;
      cFormats : ULONG;
      rgAdvf : access DWORD;
      rgFormatEtc : LPFORMATETC;
      lpAdviseSink_x : access IAdviseSink'Class;
      rgdwConnection : access DWORD;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateFromDataEx,"OleCreateFromDataEx");
   function OleCreateLinkFromData(
      pSrcDataObj : LPDATAOBJECT;
      riid : access constant IID;
      renderopt : DWORD;
      pFormatEtc : LPFORMATETC;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateLinkFromData,"OleCreateLinkFromData");
   function OleCreateLinkFromDataEx(
      pSrcDataObj : LPDATAOBJECT;
      riid : access constant IID;
      dwFlags : DWORD;
      renderopt : DWORD;
      cFormats : ULONG;
      rgAdvf : access DWORD;
      rgFormatEtc : LPFORMATETC;
      lpAdviseSink_x : access IAdviseSink'Class;
      rgdwConnection : access DWORD;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateLinkFromDataEx,"OleCreateLinkFromDataEx");
   function OleCreateStaticFromData(
      pSrcDataObj : LPDATAOBJECT;
      iid_x : access constant IID;
      renderopt : DWORD;
      pFormatEtc : LPFORMATETC;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateStaticFromData,"OleCreateStaticFromData");
   function OleCreateLink(
      pmkLinkSrc : LPMONIKER;
      riid : access constant IID;
      renderopt : DWORD;
      lpFormatEtc_x : LPFORMATETC;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateLink,"OleCreateLink");
   function OleCreateLinkEx(
      pmkLinkSrc : LPMONIKER;
      riid : access constant IID;
      dwFlags : DWORD;
      renderopt : DWORD;
      cFormats : ULONG;
      rgAdvf : access DWORD;
      rgFormatEtc : LPFORMATETC;
      lpAdviseSink_x : access IAdviseSink'Class;
      rgdwConnection : access DWORD;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateLinkEx,"OleCreateLinkEx");
   function OleCreateLinkToFile(
      lpszFileName : LPCOLESTR;
      riid : access constant IID;
      renderopt : DWORD;
      lpFormatEtc_x : LPFORMATETC;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateLinkToFile,"OleCreateLinkToFile");
   function OleCreateLinkToFileEx(
      lpszFileName : LPCOLESTR;
      riid : access constant IID;
      dwFlags : DWORD;
      renderopt : DWORD;
      cFormats : ULONG;
      rgAdvf : access DWORD;
      rgFormatEtc : LPFORMATETC;
      lpAdviseSink_x : access IAdviseSink'Class;
      rgdwConnection : access DWORD;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateLinkToFileEx,"OleCreateLinkToFileEx");
   function OleCreateFromFile(
      rclsid : access constant IID;
      lpszFileName : LPCOLESTR;
      riid : access constant IID;
      renderopt : DWORD;
      lpFormatEtc_x : LPFORMATETC;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateFromFile,"OleCreateFromFile");
   function OleCreateFromFileEx(
      rclsid : access constant IID;
      lpszFileName : LPCOLESTR;
      riid : access constant IID;
      dwFlags : DWORD;
      renderopt : DWORD;
      cFormats : ULONG;
      rgAdvf : access DWORD;
      rgFormatEtc : LPFORMATETC;
      lpAdviseSink_x : access IAdviseSink'Class;
      rgdwConnection : access DWORD;
      pClientSite : LPOLECLIENTSITE;
      pStg : LPSTORAGE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateFromFileEx,"OleCreateFromFileEx");
   function OleLoad(
      pStg : LPSTORAGE;
      riid : access constant IID;
      pClientSite : LPOLECLIENTSITE;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleLoad,"OleLoad");
   function OleSave(
      pPS : LPPERSISTSTORAGE;
      pStg : LPSTORAGE;
      fSameAsLoad : BOOL
   ) return HRESULT;
   pragma import (Cpp,OleSave,"OleSave");
   function OleLoadFromStream(
      pStm : LPSTREAM;
      iidInterface : access constant IID;
      ppvObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleLoadFromStream,"OleLoadFromStream");
   function OleSaveToStream(
      pPStm : LPPERSISTSTREAM;
      pStm : LPSTREAM
   ) return HRESULT;
   pragma import (Cpp,OleSaveToStream,"OleSaveToStream");
   function OleSetContainedObject(
      pUnknown : LPUNKNOWN;
      fContained : BOOL
   ) return HRESULT;
   pragma import (Cpp,OleSetContainedObject,"OleSetContainedObject");
   function OleNoteObjectVisible(
      pUnknown : LPUNKNOWN;
      fVisible : BOOL
   ) return HRESULT;
   pragma import (Cpp,OleNoteObjectVisible,"OleNoteObjectVisible");
   function RegisterDragDrop(
      hwnd_x : HWND;
      pDropTarget : LPDROPTARGET
   ) return HRESULT;
   pragma import (Cpp,RegisterDragDrop,"RegisterDragDrop");
   function RevokeDragDrop(
      hwnd_x : HWND
   ) return HRESULT;
   pragma import (Cpp,RevokeDragDrop,"RevokeDragDrop");
   function DoDragDrop(
      pDataObj : LPDATAOBJECT;
      pDropSource : LPDROPSOURCE;
      dwOKEffects : DWORD;
      pdwEffect : LPDWORD
   ) return HRESULT;
   pragma import (Cpp,DoDragDrop,"DoDragDrop");
   function OleSetClipboard(
      pDataObj : LPDATAOBJECT
   ) return HRESULT;
   pragma import (Cpp,OleSetClipboard,"OleSetClipboard");
   function OleGetClipboard(
      ppDataObj : access LPDATAOBJECT
   ) return HRESULT;
   pragma import (Cpp,OleGetClipboard,"OleGetClipboard");
   function OleGetClipboardWithEnterpriseInfo(
      dataObject : access IDataObject_Ptr;
      dataEnterpriseId : access PWSTR;
      sourceDescription : access PWSTR;
      targetDescription : access PWSTR;
      dataDescription : access PWSTR
   ) return HRESULT;
   pragma import (Cpp,OleGetClipboardWithEnterpriseInfo,"OleGetClipboardWithEnterpriseInfo");
   function OleFlushClipboard return HRESULT;
   pragma import (Cpp,OleFlushClipboard,"OleFlushClipboard");
   function OleIsCurrentClipboard(
      pDataObj : LPDATAOBJECT
   ) return HRESULT;
   pragma import (Cpp,OleIsCurrentClipboard,"OleIsCurrentClipboard");
   function OleCreateMenuDescriptor(
      hmenuCombined : HMENU;
      lpMenuWidths : LPOLEMENUGROUPWIDTHS
   ) return HOLEMENU;
   pragma import (Cpp,OleCreateMenuDescriptor,"OleCreateMenuDescriptor");
   function OleSetMenuDescriptor(
      holemenu_x : HOLEMENU;
      hwndFrame : HWND;
      hwndActiveObject : HWND;
      lpFrame : LPOLEINPLACEFRAME;
      lpActiveObj : LPOLEINPLACEACTIVEOBJECT
   ) return HRESULT;
   pragma import (Cpp,OleSetMenuDescriptor,"OleSetMenuDescriptor");
   function OleDestroyMenuDescriptor(
      holemenu_x : HOLEMENU
   ) return HRESULT;
   pragma import (Cpp,OleDestroyMenuDescriptor,"OleDestroyMenuDescriptor");
   function OleTranslateAccelerator(
      lpFrame : LPOLEINPLACEFRAME;
      lpFrameInfo : LPOLEINPLACEFRAMEINFO;
      lpmsg_x : LPMSG
   ) return HRESULT;
   pragma import (Cpp,OleTranslateAccelerator,"OleTranslateAccelerator");
   function OleDuplicateData(
      hSrc : HANDLE;
      cfFormat : CLIPFORMAT;
      uiFlags : UINT
   ) return HANDLE;
   pragma import (Cpp,OleDuplicateData,"OleDuplicateData");
   function OleDraw(
      pUnknown : LPUNKNOWN;
      dwAspect : DWORD;
      hdcDraw : HDC;
      lprcBounds : LPCRECT
   ) return HRESULT;
   pragma import (Cpp,OleDraw,"OleDraw");
   function OleRun(
      pUnknown : LPUNKNOWN
   ) return HRESULT;
   pragma import (Cpp,OleRun,"OleRun");
   function OleIsRunning(
      pObject : LPOLEOBJECT
   ) return BOOL;
   pragma import (Cpp,OleIsRunning,"OleIsRunning");
   function OleLockRunning(
      pUnknown : LPUNKNOWN;
      fLock : BOOL;
      fLastUnlockCloses : BOOL
   ) return HRESULT;
   pragma import (Cpp,OleLockRunning,"OleLockRunning");
   procedure ReleaseStgMedium(
      param1 : LPSTGMEDIUM
   );
   pragma import (Cpp,ReleaseStgMedium,"ReleaseStgMedium");
   function CreateOleAdviseHolder(
      ppOAHolder : access LPOLEADVISEHOLDER
   ) return HRESULT;
   pragma import (Cpp,CreateOleAdviseHolder,"CreateOleAdviseHolder");
   function OleCreateDefaultHandler(
      clsid_x : access constant IID;
      pUnkOuter : LPUNKNOWN;
      riid : access constant IID;
      lplpObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateDefaultHandler,"OleCreateDefaultHandler");
   function OleCreateEmbeddingHelper(
      clsid_x : access constant IID;
      pUnkOuter : LPUNKNOWN;
      flags : DWORD;
      pCF : LPCLASSFACTORY;
      riid : access constant IID;
      lplpObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,OleCreateEmbeddingHelper,"OleCreateEmbeddingHelper");
   function IsAccelerator(
      hAccel_x : HACCEL;
      cAccelEntries : Interfaces.C.Int;
      lpMsg_x : LPMSG;
      lpwCmd : access WORD
   ) return BOOL;
   pragma import (Cpp,IsAccelerator,"IsAccelerator");
   function OleGetIconOfFile(
      lpszPath : LPOLESTR;
      fUseFileAsLabel : BOOL
   ) return HGLOBAL;
   pragma import (Cpp,OleGetIconOfFile,"OleGetIconOfFile");
   function OleGetIconOfClass(
      rclsid : access constant IID;
      lpszLabel : LPOLESTR;
      fUseTypeAsLabel : BOOL
   ) return HGLOBAL;
   pragma import (Cpp,OleGetIconOfClass,"OleGetIconOfClass");
   function OleMetafilePictFromIconAndLabel(
      hIcon_x : HICON;
      lpszLabel : LPOLESTR;
      lpszSourceFile : LPOLESTR;
      iIconIndex : UINT
   ) return HGLOBAL;
   pragma import (Cpp,OleMetafilePictFromIconAndLabel,"OleMetafilePictFromIconAndLabel");
   function OleRegGetUserType(
      clsid_x : access constant IID;
      dwFormOfType : DWORD;
      pszUserType : access LPOLESTR
   ) return HRESULT;
   pragma import (Cpp,OleRegGetUserType,"OleRegGetUserType");
   function OleRegGetMiscStatus(
      clsid_x : access constant IID;
      dwAspect : DWORD;
      pdwStatus : access DWORD
   ) return HRESULT;
   pragma import (Cpp,OleRegGetMiscStatus,"OleRegGetMiscStatus");
   function OleRegEnumFormatEtc(
      clsid_x : access constant IID;
      dwDirection : DWORD;
      ppenum : access LPENUMFORMATETC
   ) return HRESULT;
   pragma import (Cpp,OleRegEnumFormatEtc,"OleRegEnumFormatEtc");
   function OleRegEnumVerbs(
      clsid_x : access constant IID;
      ppenum : access LPENUMOLEVERB
   ) return HRESULT;
   pragma import (Cpp,OleRegEnumVerbs,"OleRegEnumVerbs");
   type OLESTREAM_x;
   type LPOLESTREAM is access all OLESTREAM_x;
   type OLESTREAMVTBL_x is record
      Get : access System.Address;
      Put : access System.Address;
   end record;
   pragma Convention (C_Pass_By_Copy,OLESTREAMVTBL_x);
   for OLESTREAMVTBL_x use record
      Get at 0 range 0..63;
      Put at 0 range 64..127;
   end record;
   for OLESTREAMVTBL_x'Size use 128;
   for OLESTREAMVTBL_x'Alignment use 8;
   subtype OLESTREAMVTBL is OLESTREAMVTBL_x;
   type LPOLESTREAMVTBL is access all OLESTREAMVTBL;
   type OLESTREAM_x is record
      lpstbl : LPOLESTREAMVTBL;
   end record;
   pragma Convention (C_Pass_By_Copy,OLESTREAM_x);
   for OLESTREAM_x use record
      lpstbl at 0 range 0..63;
   end record;
   for OLESTREAM_x'Size use 64;
   for OLESTREAM_x'Alignment use 8;
   subtype OLESTREAM is OLESTREAM_x;
   function OleConvertOLESTREAMToIStorage(
      lpolestream_x : LPOLESTREAM;
      pstg : LPSTORAGE;
      ptd : access constant DVTARGETDEVICE
   ) return HRESULT;
   pragma import (Cpp,OleConvertOLESTREAMToIStorage,"OleConvertOLESTREAMToIStorage");
   function OleConvertIStorageToOLESTREAM(
      pstg : LPSTORAGE;
      lpolestream_x : LPOLESTREAM
   ) return HRESULT;
   pragma import (Cpp,OleConvertIStorageToOLESTREAM,"OleConvertIStorageToOLESTREAM");
   function OleDoAutoConvert(
      pStg : LPSTORAGE;
      pClsidNew : LPCLSID
   ) return HRESULT;
   pragma import (Cpp,OleDoAutoConvert,"OleDoAutoConvert");
   function OleGetAutoConvert(
      clsidOld : access constant IID;
      pClsidNew : LPCLSID
   ) return HRESULT;
   pragma import (Cpp,OleGetAutoConvert,"OleGetAutoConvert");
   function OleSetAutoConvert(
      clsidOld : access constant IID;
      clsidNew : access constant IID
   ) return HRESULT;
   pragma import (Cpp,OleSetAutoConvert,"OleSetAutoConvert");
   function SetConvertStg(
      pStg : LPSTORAGE;
      fConvert : BOOL
   ) return HRESULT;
   pragma import (Cpp,SetConvertStg,"SetConvertStg");
   function OleConvertIStorageToOLESTREAMEx(
      pstg : LPSTORAGE;
      cfFormat : CLIPFORMAT;
      lWidth : LONG;
      lHeight : LONG;
      dwSize : DWORD;
      pmedium : LPSTGMEDIUM;
      polestm : LPOLESTREAM
   ) return HRESULT;
   pragma import (Cpp,OleConvertIStorageToOLESTREAMEx,"OleConvertIStorageToOLESTREAMEx");
   function OleConvertOLESTREAMToIStorageEx(
      polestm : LPOLESTREAM;
      pstg : LPSTORAGE;
      pcfFormat : access CLIPFORMAT;
      plwWidth : access LONG;
      plHeight : access LONG;
      pdwSize : access DWORD;
      pmedium : LPSTGMEDIUM
   ) return HRESULT;
   pragma import (Cpp,OleConvertOLESTREAMToIStorageEx,"OleConvertOLESTREAMToIStorageEx");
   -- #include <commdlg.h>
   IID_IPrintDialogCallback : aliased constant GUID;
   pragma import (C,IID_IPrintDialogCallback,"IID_IPrintDialogCallback");
   IID_IPrintDialogServices : aliased constant GUID;
   pragma import (C,IID_IPrintDialogServices,"IID_IPrintDialogServices");
   type LPOFNHOOKPROC is access function (p1 : HWND ; p2 : UINT ; p3 : WPARAM ; p4 : LPARAM) return UINT_PTR; -- UINT_PTR (HWND, UINT, WPARAM, LPARAM)
   pragma Convention(C,LPOFNHOOKPROC);
   type tagOFN_NT4A is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hInstance_x : HINSTANCE;
      lpstrFilter : LPCSTR;
      lpstrCustomFilter : LPSTR;
      nMaxCustFilter : DWORD;
      nFilterIndex : DWORD;
      lpstrFile : LPSTR;
      nMaxFile : DWORD;
      lpstrFileTitle : LPSTR;
      nMaxFileTitle : DWORD;
      lpstrInitialDir : LPCSTR;
      lpstrTitle : LPCSTR;
      Flags : DWORD;
      nFileOffset : WORD;
      nFileExtension : WORD;
      lpstrDefExt : LPCSTR;
      lCustData : LPARAM;
      lpfnHook : LPOFNHOOKPROC;
      lpTemplateName : LPCSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagOFN_NT4A);
   for tagOFN_NT4A use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      lpstrFilter at 0 range 192..255;
      lpstrCustomFilter at 0 range 256..319;
      nMaxCustFilter at 0 range 320..351;
      nFilterIndex at 0 range 352..383;
      lpstrFile at 0 range 384..447;
      nMaxFile at 0 range 448..479;
      lpstrFileTitle at 0 range 512..575;
      nMaxFileTitle at 0 range 576..607;
      lpstrInitialDir at 0 range 640..703;
      lpstrTitle at 0 range 704..767;
      Flags at 0 range 768..799;
      nFileOffset at 0 range 800..815;
      nFileExtension at 0 range 816..831;
      lpstrDefExt at 0 range 832..895;
      lCustData at 0 range 896..959;
      lpfnHook at 0 range 960..1023;
      lpTemplateName at 0 range 1024..1087;
   end record;
   for tagOFN_NT4A'Size use 1088;
   for tagOFN_NT4A'Alignment use 8;
   subtype OPENFILENAME_NT4A is tagOFN_NT4A;
   type LPOPENFILENAME_NT4A is access all tagOFN_NT4A;
   type tagOFN_NT4W is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hInstance_x : HINSTANCE;
      lpstrFilter : LPCWSTR;
      lpstrCustomFilter : LPWSTR;
      nMaxCustFilter : DWORD;
      nFilterIndex : DWORD;
      lpstrFile : LPWSTR;
      nMaxFile : DWORD;
      lpstrFileTitle : LPWSTR;
      nMaxFileTitle : DWORD;
      lpstrInitialDir : LPCWSTR;
      lpstrTitle : LPCWSTR;
      Flags : DWORD;
      nFileOffset : WORD;
      nFileExtension : WORD;
      lpstrDefExt : LPCWSTR;
      lCustData : LPARAM;
      lpfnHook : LPOFNHOOKPROC;
      lpTemplateName : LPCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagOFN_NT4W);
   for tagOFN_NT4W use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      lpstrFilter at 0 range 192..255;
      lpstrCustomFilter at 0 range 256..319;
      nMaxCustFilter at 0 range 320..351;
      nFilterIndex at 0 range 352..383;
      lpstrFile at 0 range 384..447;
      nMaxFile at 0 range 448..479;
      lpstrFileTitle at 0 range 512..575;
      nMaxFileTitle at 0 range 576..607;
      lpstrInitialDir at 0 range 640..703;
      lpstrTitle at 0 range 704..767;
      Flags at 0 range 768..799;
      nFileOffset at 0 range 800..815;
      nFileExtension at 0 range 816..831;
      lpstrDefExt at 0 range 832..895;
      lCustData at 0 range 896..959;
      lpfnHook at 0 range 960..1023;
      lpTemplateName at 0 range 1024..1087;
   end record;
   for tagOFN_NT4W'Size use 1088;
   for tagOFN_NT4W'Alignment use 8;
   subtype OPENFILENAME_NT4W is tagOFN_NT4W;
   type LPOPENFILENAME_NT4W is access all tagOFN_NT4W;
   subtype OPENFILENAME_NT4 is OPENFILENAME_NT4A;
   subtype LPOPENFILENAME_NT4 is LPOPENFILENAME_NT4A;
   type tagOFNA is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hInstance_x : HINSTANCE;
      lpstrFilter : LPCSTR;
      lpstrCustomFilter : LPSTR;
      nMaxCustFilter : DWORD;
      nFilterIndex : DWORD;
      lpstrFile : LPSTR;
      nMaxFile : DWORD;
      lpstrFileTitle : LPSTR;
      nMaxFileTitle : DWORD;
      lpstrInitialDir : LPCSTR;
      lpstrTitle : LPCSTR;
      Flags : DWORD;
      nFileOffset : WORD;
      nFileExtension : WORD;
      lpstrDefExt : LPCSTR;
      lCustData : LPARAM;
      lpfnHook : LPOFNHOOKPROC;
      lpTemplateName : LPCSTR;
      pvReserved : access Void;
      dwReserved : DWORD;
      FlagsEx : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagOFNA);
   for tagOFNA use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      lpstrFilter at 0 range 192..255;
      lpstrCustomFilter at 0 range 256..319;
      nMaxCustFilter at 0 range 320..351;
      nFilterIndex at 0 range 352..383;
      lpstrFile at 0 range 384..447;
      nMaxFile at 0 range 448..479;
      lpstrFileTitle at 0 range 512..575;
      nMaxFileTitle at 0 range 576..607;
      lpstrInitialDir at 0 range 640..703;
      lpstrTitle at 0 range 704..767;
      Flags at 0 range 768..799;
      nFileOffset at 0 range 800..815;
      nFileExtension at 0 range 816..831;
      lpstrDefExt at 0 range 832..895;
      lCustData at 0 range 896..959;
      lpfnHook at 0 range 960..1023;
      lpTemplateName at 0 range 1024..1087;
      pvReserved at 0 range 1088..1151;
      dwReserved at 0 range 1152..1183;
      FlagsEx at 0 range 1184..1215;
   end record;
   for tagOFNA'Size use 1216;
   for tagOFNA'Alignment use 8;
   subtype OPENFILENAMEA is tagOFNA;
   type LPOPENFILENAMEA is access all tagOFNA;
   type tagOFNW is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hInstance_x : HINSTANCE;
      lpstrFilter : LPCWSTR;
      lpstrCustomFilter : LPWSTR;
      nMaxCustFilter : DWORD;
      nFilterIndex : DWORD;
      lpstrFile : LPWSTR;
      nMaxFile : DWORD;
      lpstrFileTitle : LPWSTR;
      nMaxFileTitle : DWORD;
      lpstrInitialDir : LPCWSTR;
      lpstrTitle : LPCWSTR;
      Flags : DWORD;
      nFileOffset : WORD;
      nFileExtension : WORD;
      lpstrDefExt : LPCWSTR;
      lCustData : LPARAM;
      lpfnHook : LPOFNHOOKPROC;
      lpTemplateName : LPCWSTR;
      pvReserved : access Void;
      dwReserved : DWORD;
      FlagsEx : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagOFNW);
   for tagOFNW use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      lpstrFilter at 0 range 192..255;
      lpstrCustomFilter at 0 range 256..319;
      nMaxCustFilter at 0 range 320..351;
      nFilterIndex at 0 range 352..383;
      lpstrFile at 0 range 384..447;
      nMaxFile at 0 range 448..479;
      lpstrFileTitle at 0 range 512..575;
      nMaxFileTitle at 0 range 576..607;
      lpstrInitialDir at 0 range 640..703;
      lpstrTitle at 0 range 704..767;
      Flags at 0 range 768..799;
      nFileOffset at 0 range 800..815;
      nFileExtension at 0 range 816..831;
      lpstrDefExt at 0 range 832..895;
      lCustData at 0 range 896..959;
      lpfnHook at 0 range 960..1023;
      lpTemplateName at 0 range 1024..1087;
      pvReserved at 0 range 1088..1151;
      dwReserved at 0 range 1152..1183;
      FlagsEx at 0 range 1184..1215;
   end record;
   for tagOFNW'Size use 1216;
   for tagOFNW'Alignment use 8;
   subtype OPENFILENAMEW is tagOFNW;
   type LPOPENFILENAMEW is access all tagOFNW;
   subtype OPENFILENAME is OPENFILENAMEA;
   subtype LPOPENFILENAME is LPOPENFILENAMEA;
   function GetOpenFileNameA(
      param1 : LPOPENFILENAMEA
   ) return BOOL;
   pragma import (Cpp,GetOpenFileNameA,"GetOpenFileNameA");
   function GetOpenFileNameW(
      param1 : LPOPENFILENAMEW
   ) return BOOL;
   pragma import (Cpp,GetOpenFileNameW,"GetOpenFileNameW");
   function GetSaveFileNameA(
      param1 : LPOPENFILENAMEA
   ) return BOOL;
   pragma import (Cpp,GetSaveFileNameA,"GetSaveFileNameA");
   function GetSaveFileNameW(
      param1 : LPOPENFILENAMEW
   ) return BOOL;
   pragma import (Cpp,GetSaveFileNameW,"GetSaveFileNameW");
   function GetFileTitleA(
      param1 : LPCSTR;
      Buf : LPSTR;
      cchSize : WORD
   ) return Interfaces.C.Short;
   pragma import (Cpp,GetFileTitleA,"GetFileTitleA");
   function GetFileTitleW(
      param1 : LPCWSTR;
      Buf : LPWSTR;
      cchSize : WORD
   ) return Interfaces.C.Short;
   pragma import (Cpp,GetFileTitleW,"GetFileTitleW");
   type LPCCHOOKPROC is access function (p1 : HWND ; p2 : UINT ; p3 : WPARAM ; p4 : LPARAM) return UINT_PTR; -- UINT_PTR (HWND, UINT, WPARAM, LPARAM)
   pragma Convention(C,LPCCHOOKPROC);
   type OFNOTIFYA_x is record
      hdr : NMHDR;
      lpOFN : LPOPENFILENAMEA;
      pszFile : LPSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,OFNOTIFYA_x);
   for OFNOTIFYA_x use record
      hdr at 0 range 0..191;
      lpOFN at 0 range 192..255;
      pszFile at 0 range 256..319;
   end record;
   for OFNOTIFYA_x'Size use 320;
   for OFNOTIFYA_x'Alignment use 8;
   subtype OFNOTIFYA is OFNOTIFYA_x;
   type LPOFNOTIFYA is access all OFNOTIFYA_x;
   type OFNOTIFYW_x is record
      hdr : NMHDR;
      lpOFN : LPOPENFILENAMEW;
      pszFile : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,OFNOTIFYW_x);
   for OFNOTIFYW_x use record
      hdr at 0 range 0..191;
      lpOFN at 0 range 192..255;
      pszFile at 0 range 256..319;
   end record;
   for OFNOTIFYW_x'Size use 320;
   for OFNOTIFYW_x'Alignment use 8;
   subtype OFNOTIFYW is OFNOTIFYW_x;
   type LPOFNOTIFYW is access all OFNOTIFYW_x;
   subtype OFNOTIFY is OFNOTIFYA;
   subtype LPOFNOTIFY is LPOFNOTIFYA;
   type OFNOTIFYEXA_x is record
      hdr : NMHDR;
      lpOFN : LPOPENFILENAMEA;
      psf : LPVOID;
      pidl : LPVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,OFNOTIFYEXA_x);
   for OFNOTIFYEXA_x use record
      hdr at 0 range 0..191;
      lpOFN at 0 range 192..255;
      psf at 0 range 256..319;
      pidl at 0 range 320..383;
   end record;
   for OFNOTIFYEXA_x'Size use 384;
   for OFNOTIFYEXA_x'Alignment use 8;
   subtype OFNOTIFYEXA is OFNOTIFYEXA_x;
   type LPOFNOTIFYEXA is access all OFNOTIFYEXA_x;
   type OFNOTIFYEXW_x is record
      hdr : NMHDR;
      lpOFN : LPOPENFILENAMEW;
      psf : LPVOID;
      pidl : LPVOID;
   end record;
   pragma Convention (C_Pass_By_Copy,OFNOTIFYEXW_x);
   for OFNOTIFYEXW_x use record
      hdr at 0 range 0..191;
      lpOFN at 0 range 192..255;
      psf at 0 range 256..319;
      pidl at 0 range 320..383;
   end record;
   for OFNOTIFYEXW_x'Size use 384;
   for OFNOTIFYEXW_x'Alignment use 8;
   subtype OFNOTIFYEXW is OFNOTIFYEXW_x;
   type LPOFNOTIFYEXW is access all OFNOTIFYEXW_x;
   subtype OFNOTIFYEX is OFNOTIFYEXA;
   subtype LPOFNOTIFYEX is LPOFNOTIFYEXA;
   type tagCHOOSECOLORA is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hInstance_x : HWND;
      rgbResult : COLORREF;
      lpCustColors : access COLORREF;
      Flags : DWORD;
      lCustData : LPARAM;
      lpfnHook : LPCCHOOKPROC;
      lpTemplateName : LPCSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCHOOSECOLORA);
   for tagCHOOSECOLORA use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      rgbResult at 0 range 192..223;
      lpCustColors at 0 range 256..319;
      Flags at 0 range 320..351;
      lCustData at 0 range 384..447;
      lpfnHook at 0 range 448..511;
      lpTemplateName at 0 range 512..575;
   end record;
   for tagCHOOSECOLORA'Size use 576;
   for tagCHOOSECOLORA'Alignment use 8;
   subtype CHOOSECOLORA is tagCHOOSECOLORA;
   type LPCHOOSECOLORA is access all tagCHOOSECOLORA;
   type tagCHOOSECOLORW is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hInstance_x : HWND;
      rgbResult : COLORREF;
      lpCustColors : access COLORREF;
      Flags : DWORD;
      lCustData : LPARAM;
      lpfnHook : LPCCHOOKPROC;
      lpTemplateName : LPCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCHOOSECOLORW);
   for tagCHOOSECOLORW use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      rgbResult at 0 range 192..223;
      lpCustColors at 0 range 256..319;
      Flags at 0 range 320..351;
      lCustData at 0 range 384..447;
      lpfnHook at 0 range 448..511;
      lpTemplateName at 0 range 512..575;
   end record;
   for tagCHOOSECOLORW'Size use 576;
   for tagCHOOSECOLORW'Alignment use 8;
   subtype CHOOSECOLORW is tagCHOOSECOLORW;
   type LPCHOOSECOLORW is access all tagCHOOSECOLORW;
   subtype CHOOSECOLOR is CHOOSECOLORA;
   subtype LPCHOOSECOLOR is LPCHOOSECOLORA;
   function ChooseColorA_x(
      param1 : LPCHOOSECOLORA
   ) return BOOL;
   pragma import (Cpp,ChooseColorA_x,"ChooseColorA");
   function ChooseColorW_x(
      param1 : LPCHOOSECOLORW
   ) return BOOL;
   pragma import (Cpp,ChooseColorW_x,"ChooseColorW");
   type LPFRHOOKPROC is access function (p1 : HWND ; p2 : UINT ; p3 : WPARAM ; p4 : LPARAM) return UINT_PTR; -- UINT_PTR (HWND, UINT, WPARAM, LPARAM)
   pragma Convention(C,LPFRHOOKPROC);
   type tagFINDREPLACEA is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hInstance_x : HINSTANCE;
      Flags : DWORD;
      lpstrFindWhat : LPSTR;
      lpstrReplaceWith : LPSTR;
      wFindWhatLen : WORD;
      wReplaceWithLen : WORD;
      lCustData : LPARAM;
      lpfnHook : LPFRHOOKPROC;
      lpTemplateName : LPCSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagFINDREPLACEA);
   for tagFINDREPLACEA use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      Flags at 0 range 192..223;
      lpstrFindWhat at 0 range 256..319;
      lpstrReplaceWith at 0 range 320..383;
      wFindWhatLen at 0 range 384..399;
      wReplaceWithLen at 0 range 400..415;
      lCustData at 0 range 448..511;
      lpfnHook at 0 range 512..575;
      lpTemplateName at 0 range 576..639;
   end record;
   for tagFINDREPLACEA'Size use 640;
   for tagFINDREPLACEA'Alignment use 8;
   subtype FINDREPLACEA is tagFINDREPLACEA;
   type LPFINDREPLACEA is access all tagFINDREPLACEA;
   type tagFINDREPLACEW is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hInstance_x : HINSTANCE;
      Flags : DWORD;
      lpstrFindWhat : LPWSTR;
      lpstrReplaceWith : LPWSTR;
      wFindWhatLen : WORD;
      wReplaceWithLen : WORD;
      lCustData : LPARAM;
      lpfnHook : LPFRHOOKPROC;
      lpTemplateName : LPCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagFINDREPLACEW);
   for tagFINDREPLACEW use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hInstance_x at 0 range 128..191;
      Flags at 0 range 192..223;
      lpstrFindWhat at 0 range 256..319;
      lpstrReplaceWith at 0 range 320..383;
      wFindWhatLen at 0 range 384..399;
      wReplaceWithLen at 0 range 400..415;
      lCustData at 0 range 448..511;
      lpfnHook at 0 range 512..575;
      lpTemplateName at 0 range 576..639;
   end record;
   for tagFINDREPLACEW'Size use 640;
   for tagFINDREPLACEW'Alignment use 8;
   subtype FINDREPLACEW is tagFINDREPLACEW;
   type LPFINDREPLACEW is access all tagFINDREPLACEW;
   subtype FINDREPLACE is FINDREPLACEA;
   subtype LPFINDREPLACE is LPFINDREPLACEA;
   function FindTextA(
      param1 : LPFINDREPLACEA
   ) return HWND;
   pragma import (Cpp,FindTextA,"FindTextA");
   function FindTextW(
      param1 : LPFINDREPLACEW
   ) return HWND;
   pragma import (Cpp,FindTextW,"FindTextW");
   function ReplaceTextA(
      param1 : LPFINDREPLACEA
   ) return HWND;
   pragma import (Cpp,ReplaceTextA,"ReplaceTextA");
   function ReplaceTextW(
      param1 : LPFINDREPLACEW
   ) return HWND;
   pragma import (Cpp,ReplaceTextW,"ReplaceTextW");
   type LPCFHOOKPROC is access function (p1 : HWND ; p2 : UINT ; p3 : WPARAM ; p4 : LPARAM) return UINT_PTR; -- UINT_PTR (HWND, UINT, WPARAM, LPARAM)
   pragma Convention(C,LPCFHOOKPROC);
   type tagCHOOSEFONTA is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hDC_x : HDC;
      lpLogFont_x : LPLOGFONTA;
      iPointSize : INT;
      Flags : DWORD;
      rgbColors : COLORREF;
      lCustData : LPARAM;
      lpfnHook : LPCFHOOKPROC;
      lpTemplateName : LPCSTR;
      hInstance_x : HINSTANCE;
      lpszStyle : LPSTR;
      nFontType : WORD;
      MISSING_ALIGNMENT_x : WORD;
      nSizeMin : INT;
      nSizeMax : INT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCHOOSEFONTA);
   for tagCHOOSEFONTA use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hDC_x at 0 range 128..191;
      lpLogFont_x at 0 range 192..255;
      iPointSize at 0 range 256..287;
      Flags at 0 range 288..319;
      rgbColors at 0 range 320..351;
      lCustData at 0 range 384..447;
      lpfnHook at 0 range 448..511;
      lpTemplateName at 0 range 512..575;
      hInstance_x at 0 range 576..639;
      lpszStyle at 0 range 640..703;
      nFontType at 0 range 704..719;
      MISSING_ALIGNMENT_x at 0 range 720..735;
      nSizeMin at 0 range 736..767;
      nSizeMax at 0 range 768..799;
   end record;
   for tagCHOOSEFONTA'Size use 832;
   for tagCHOOSEFONTA'Alignment use 8;
   subtype CHOOSEFONTA is tagCHOOSEFONTA;
   type tagCHOOSEFONTW is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hDC_x : HDC;
      lpLogFont_x : LPLOGFONTW;
      iPointSize : INT;
      Flags : DWORD;
      rgbColors : COLORREF;
      lCustData : LPARAM;
      lpfnHook : LPCFHOOKPROC;
      lpTemplateName : LPCWSTR;
      hInstance_x : HINSTANCE;
      lpszStyle : LPWSTR;
      nFontType : WORD;
      MISSING_ALIGNMENT_x : WORD;
      nSizeMin : INT;
      nSizeMax : INT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCHOOSEFONTW);
   for tagCHOOSEFONTW use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hDC_x at 0 range 128..191;
      lpLogFont_x at 0 range 192..255;
      iPointSize at 0 range 256..287;
      Flags at 0 range 288..319;
      rgbColors at 0 range 320..351;
      lCustData at 0 range 384..447;
      lpfnHook at 0 range 448..511;
      lpTemplateName at 0 range 512..575;
      hInstance_x at 0 range 576..639;
      lpszStyle at 0 range 640..703;
      nFontType at 0 range 704..719;
      MISSING_ALIGNMENT_x at 0 range 720..735;
      nSizeMin at 0 range 736..767;
      nSizeMax at 0 range 768..799;
   end record;
   for tagCHOOSEFONTW'Size use 832;
   for tagCHOOSEFONTW'Alignment use 8;
   subtype CHOOSEFONTW is tagCHOOSEFONTW;
   subtype CHOOSEFONT is CHOOSEFONTA;
   type LPCHOOSEFONTA is access all CHOOSEFONTA;
   type LPCHOOSEFONTW is access all CHOOSEFONTW;
   subtype LPCHOOSEFONT is LPCHOOSEFONTA;
   type PCCHOOSEFONTA is access constant CHOOSEFONTA;
   type PCCHOOSEFONTW is access constant CHOOSEFONTW;
   subtype PCCHOOSEFONT is PCCHOOSEFONTA;
   function ChooseFontA_x(
      param1 : LPCHOOSEFONTA
   ) return BOOL;
   pragma import (Cpp,ChooseFontA_x,"ChooseFontA");
   function ChooseFontW_x(
      param1 : LPCHOOSEFONTW
   ) return BOOL;
   pragma import (Cpp,ChooseFontW_x,"ChooseFontW");
   type LPPRINTHOOKPROC is access function (p1 : HWND ; p2 : UINT ; p3 : WPARAM ; p4 : LPARAM) return UINT_PTR; -- UINT_PTR (HWND, UINT, WPARAM, LPARAM)
   pragma Convention(C,LPPRINTHOOKPROC);
   type LPSETUPHOOKPROC is access function (p1 : HWND ; p2 : UINT ; p3 : WPARAM ; p4 : LPARAM) return UINT_PTR; -- UINT_PTR (HWND, UINT, WPARAM, LPARAM)
   pragma Convention(C,LPSETUPHOOKPROC);
   type tagPDA is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hDevMode : HGLOBAL;
      hDevNames : HGLOBAL;
      hDC_x : HDC;
      Flags : DWORD;
      nFromPage : WORD;
      nToPage : WORD;
      nMinPage : WORD;
      nMaxPage : WORD;
      nCopies : WORD;
      hInstance_x : HINSTANCE;
      lCustData : LPARAM;
      lpfnPrintHook : LPPRINTHOOKPROC;
      lpfnSetupHook : LPSETUPHOOKPROC;
      lpPrintTemplateName : LPCSTR;
      lpSetupTemplateName : LPCSTR;
      hPrintTemplate : HGLOBAL;
      hSetupTemplate : HGLOBAL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPDA);
   for tagPDA use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hDevMode at 0 range 128..191;
      hDevNames at 0 range 192..255;
      hDC_x at 0 range 256..319;
      Flags at 0 range 320..351;
      nFromPage at 0 range 352..367;
      nToPage at 0 range 368..383;
      nMinPage at 0 range 384..399;
      nMaxPage at 0 range 400..415;
      nCopies at 0 range 416..431;
      hInstance_x at 0 range 448..511;
      lCustData at 0 range 512..575;
      lpfnPrintHook at 0 range 576..639;
      lpfnSetupHook at 0 range 640..703;
      lpPrintTemplateName at 0 range 704..767;
      lpSetupTemplateName at 0 range 768..831;
      hPrintTemplate at 0 range 832..895;
      hSetupTemplate at 0 range 896..959;
   end record;
   for tagPDA'Size use 960;
   for tagPDA'Alignment use 8;
   subtype PRINTDLGA is tagPDA;
   type LPPRINTDLGA is access all tagPDA;
   type tagPDW is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hDevMode : HGLOBAL;
      hDevNames : HGLOBAL;
      hDC_x : HDC;
      Flags : DWORD;
      nFromPage : WORD;
      nToPage : WORD;
      nMinPage : WORD;
      nMaxPage : WORD;
      nCopies : WORD;
      hInstance_x : HINSTANCE;
      lCustData : LPARAM;
      lpfnPrintHook : LPPRINTHOOKPROC;
      lpfnSetupHook : LPSETUPHOOKPROC;
      lpPrintTemplateName : LPCWSTR;
      lpSetupTemplateName : LPCWSTR;
      hPrintTemplate : HGLOBAL;
      hSetupTemplate : HGLOBAL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPDW);
   for tagPDW use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hDevMode at 0 range 128..191;
      hDevNames at 0 range 192..255;
      hDC_x at 0 range 256..319;
      Flags at 0 range 320..351;
      nFromPage at 0 range 352..367;
      nToPage at 0 range 368..383;
      nMinPage at 0 range 384..399;
      nMaxPage at 0 range 400..415;
      nCopies at 0 range 416..431;
      hInstance_x at 0 range 448..511;
      lCustData at 0 range 512..575;
      lpfnPrintHook at 0 range 576..639;
      lpfnSetupHook at 0 range 640..703;
      lpPrintTemplateName at 0 range 704..767;
      lpSetupTemplateName at 0 range 768..831;
      hPrintTemplate at 0 range 832..895;
      hSetupTemplate at 0 range 896..959;
   end record;
   for tagPDW'Size use 960;
   for tagPDW'Alignment use 8;
   subtype PRINTDLGW is tagPDW;
   type LPPRINTDLGW is access all tagPDW;
   subtype PRINTDLG is PRINTDLGA;
   subtype LPPRINTDLG is LPPRINTDLGA;
   function PrintDlgA_x(
      pPD : LPPRINTDLGA
   ) return BOOL;
   pragma import (Cpp,PrintDlgA_x,"PrintDlgA");
   function PrintDlgW_x(
      pPD : LPPRINTDLGW
   ) return BOOL;
   pragma import (Cpp,PrintDlgW_x,"PrintDlgW");
   type IPrintDialogCallback is limited interface and IUnknown;
      function QueryInterface(
         This : access IPrintDialogCallback;
         riid : access constant IID;
         ppvObj : access LPVOID
      ) return HRESULT is abstract;
      function AddRef(This : access IPrintDialogCallback) return ULONG is abstract;
      function Release(This : access IPrintDialogCallback) return ULONG is abstract;
      function InitDone(This : access IPrintDialogCallback) return HRESULT is abstract;
      function SelectionChange(This : access IPrintDialogCallback) return HRESULT is abstract;
      function HandleMessage(
         This : access IPrintDialogCallback;
         hDlg : HWND;
         uMsg : UINT;
         wParam_x : WPARAM;
         lParam_x : LPARAM;
         pResult : access LRESULT
      ) return HRESULT is abstract;
   type IPrintDialogCallback_Ptr is access all IPrintDialogCallback'Class;
   type IPrintDialogServices is limited interface and IUnknown;
      function QueryInterface(
         This : access IPrintDialogServices;
         riid : access constant IID;
         ppvObj : access LPVOID
      ) return HRESULT is abstract;
      function AddRef(This : access IPrintDialogServices) return ULONG is abstract;
      function Release(This : access IPrintDialogServices) return ULONG is abstract;
      function GetCurrentDevMode(
         This : access IPrintDialogServices;
         pDevMode_x : LPDEVMODE;
         pcbSize : access UINT
      ) return HRESULT is abstract;
      function GetCurrentPrinterName(
         This : access IPrintDialogServices;
         pPrinterName : LPWSTR;
         pcchSize : access UINT
      ) return HRESULT is abstract;
      function GetCurrentPortName(
         This : access IPrintDialogServices;
         pPortName : LPWSTR;
         pcchSize : access UINT
      ) return HRESULT is abstract;
   type IPrintDialogServices_Ptr is access all IPrintDialogServices'Class;
   type tagPRINTPAGERANGE is record
      nFromPage : DWORD;
      nToPage : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPRINTPAGERANGE);
   for tagPRINTPAGERANGE use record
      nFromPage at 0 range 0..31;
      nToPage at 0 range 32..63;
   end record;
   for tagPRINTPAGERANGE'Size use 64;
   for tagPRINTPAGERANGE'Alignment use 4;
   subtype PRINTPAGERANGE is tagPRINTPAGERANGE;
   type LPPRINTPAGERANGE is access all PRINTPAGERANGE;
   type PCPRINTPAGERANGE is access constant PRINTPAGERANGE;
   type tagPDEXA is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hDevMode : HGLOBAL;
      hDevNames : HGLOBAL;
      hDC_x : HDC;
      Flags : DWORD;
      Flags2 : DWORD;
      ExclusionFlags : DWORD;
      nPageRanges : DWORD;
      nMaxPageRanges : DWORD;
      lpPageRanges : LPPRINTPAGERANGE;
      nMinPage : DWORD;
      nMaxPage : DWORD;
      nCopies : DWORD;
      hInstance_x : HINSTANCE;
      lpPrintTemplateName : LPCSTR;
      lpCallback : LPUNKNOWN;
      nPropertyPages : DWORD;
      lphPropertyPages : access HPROPSHEETPAGE;
      nStartPage : DWORD;
      dwResultAction : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPDEXA);
   for tagPDEXA use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hDevMode at 0 range 128..191;
      hDevNames at 0 range 192..255;
      hDC_x at 0 range 256..319;
      Flags at 0 range 320..351;
      Flags2 at 0 range 352..383;
      ExclusionFlags at 0 range 384..415;
      nPageRanges at 0 range 416..447;
      nMaxPageRanges at 0 range 448..479;
      lpPageRanges at 0 range 512..575;
      nMinPage at 0 range 576..607;
      nMaxPage at 0 range 608..639;
      nCopies at 0 range 640..671;
      hInstance_x at 0 range 704..767;
      lpPrintTemplateName at 0 range 768..831;
      lpCallback at 0 range 832..895;
      nPropertyPages at 0 range 896..927;
      lphPropertyPages at 0 range 960..1023;
      nStartPage at 0 range 1024..1055;
      dwResultAction at 0 range 1056..1087;
   end record;
   for tagPDEXA'Size use 1088;
   for tagPDEXA'Alignment use 8;
   subtype PRINTDLGEXA is tagPDEXA;
   type LPPRINTDLGEXA is access all tagPDEXA;
   type tagPDEXW is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hDevMode : HGLOBAL;
      hDevNames : HGLOBAL;
      hDC_x : HDC;
      Flags : DWORD;
      Flags2 : DWORD;
      ExclusionFlags : DWORD;
      nPageRanges : DWORD;
      nMaxPageRanges : DWORD;
      lpPageRanges : LPPRINTPAGERANGE;
      nMinPage : DWORD;
      nMaxPage : DWORD;
      nCopies : DWORD;
      hInstance_x : HINSTANCE;
      lpPrintTemplateName : LPCWSTR;
      lpCallback : LPUNKNOWN;
      nPropertyPages : DWORD;
      lphPropertyPages : access HPROPSHEETPAGE;
      nStartPage : DWORD;
      dwResultAction : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPDEXW);
   for tagPDEXW use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hDevMode at 0 range 128..191;
      hDevNames at 0 range 192..255;
      hDC_x at 0 range 256..319;
      Flags at 0 range 320..351;
      Flags2 at 0 range 352..383;
      ExclusionFlags at 0 range 384..415;
      nPageRanges at 0 range 416..447;
      nMaxPageRanges at 0 range 448..479;
      lpPageRanges at 0 range 512..575;
      nMinPage at 0 range 576..607;
      nMaxPage at 0 range 608..639;
      nCopies at 0 range 640..671;
      hInstance_x at 0 range 704..767;
      lpPrintTemplateName at 0 range 768..831;
      lpCallback at 0 range 832..895;
      nPropertyPages at 0 range 896..927;
      lphPropertyPages at 0 range 960..1023;
      nStartPage at 0 range 1024..1055;
      dwResultAction at 0 range 1056..1087;
   end record;
   for tagPDEXW'Size use 1088;
   for tagPDEXW'Alignment use 8;
   subtype PRINTDLGEXW is tagPDEXW;
   type LPPRINTDLGEXW is access all tagPDEXW;
   subtype PRINTDLGEX is PRINTDLGEXA;
   subtype LPPRINTDLGEX is LPPRINTDLGEXA;
   function PrintDlgExA_x(
      pPD : LPPRINTDLGEXA
   ) return HRESULT;
   pragma import (Cpp,PrintDlgExA_x,"PrintDlgExA");
   function PrintDlgExW_x(
      pPD : LPPRINTDLGEXW
   ) return HRESULT;
   pragma import (Cpp,PrintDlgExW_x,"PrintDlgExW");
   type tagDEVNAMES is record
      wDriverOffset : WORD;
      wDeviceOffset : WORD;
      wOutputOffset : WORD;
      wDefault : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDEVNAMES);
   for tagDEVNAMES use record
      wDriverOffset at 0 range 0..15;
      wDeviceOffset at 0 range 16..31;
      wOutputOffset at 0 range 32..47;
      wDefault at 0 range 48..63;
   end record;
   for tagDEVNAMES'Size use 64;
   for tagDEVNAMES'Alignment use 2;
   subtype DEVNAMES is tagDEVNAMES;
   type LPDEVNAMES is access all DEVNAMES;
   type PCDEVNAMES is access constant DEVNAMES;
   function CommDlgExtendedError return DWORD;
   pragma import (Cpp,CommDlgExtendedError,"CommDlgExtendedError");
   type LPPAGEPAINTHOOK is access function (p1 : HWND ; p2 : UINT ; p3 : WPARAM ; p4 : LPARAM) return UINT_PTR; -- UINT_PTR (HWND, UINT, WPARAM, LPARAM)
   pragma Convention(C,LPPAGEPAINTHOOK);
   type LPPAGESETUPHOOK is access function (p1 : HWND ; p2 : UINT ; p3 : WPARAM ; p4 : LPARAM) return UINT_PTR; -- UINT_PTR (HWND, UINT, WPARAM, LPARAM)
   pragma Convention(C,LPPAGESETUPHOOK);
   type tagPSDA is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hDevMode : HGLOBAL;
      hDevNames : HGLOBAL;
      Flags : DWORD;
      ptPaperSize : POINT;
      rtMinMargin : RECT;
      rtMargin : RECT;
      hInstance_x : HINSTANCE;
      lCustData : LPARAM;
      lpfnPageSetupHook : LPPAGESETUPHOOK;
      lpfnPagePaintHook : LPPAGEPAINTHOOK;
      lpPageSetupTemplateName : LPCSTR;
      hPageSetupTemplate : HGLOBAL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPSDA);
   for tagPSDA use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hDevMode at 0 range 128..191;
      hDevNames at 0 range 192..255;
      Flags at 0 range 256..287;
      ptPaperSize at 0 range 288..351;
      rtMinMargin at 0 range 352..479;
      rtMargin at 0 range 480..607;
      hInstance_x at 0 range 640..703;
      lCustData at 0 range 704..767;
      lpfnPageSetupHook at 0 range 768..831;
      lpfnPagePaintHook at 0 range 832..895;
      lpPageSetupTemplateName at 0 range 896..959;
      hPageSetupTemplate at 0 range 960..1023;
   end record;
   for tagPSDA'Size use 1024;
   for tagPSDA'Alignment use 8;
   subtype PAGESETUPDLGA is tagPSDA;
   type LPPAGESETUPDLGA is access all tagPSDA;
   type tagPSDW is record
      lStructSize : DWORD;
      hwndOwner : HWND;
      hDevMode : HGLOBAL;
      hDevNames : HGLOBAL;
      Flags : DWORD;
      ptPaperSize : POINT;
      rtMinMargin : RECT;
      rtMargin : RECT;
      hInstance_x : HINSTANCE;
      lCustData : LPARAM;
      lpfnPageSetupHook : LPPAGESETUPHOOK;
      lpfnPagePaintHook : LPPAGEPAINTHOOK;
      lpPageSetupTemplateName : LPCWSTR;
      hPageSetupTemplate : HGLOBAL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPSDW);
   for tagPSDW use record
      lStructSize at 0 range 0..31;
      hwndOwner at 0 range 64..127;
      hDevMode at 0 range 128..191;
      hDevNames at 0 range 192..255;
      Flags at 0 range 256..287;
      ptPaperSize at 0 range 288..351;
      rtMinMargin at 0 range 352..479;
      rtMargin at 0 range 480..607;
      hInstance_x at 0 range 640..703;
      lCustData at 0 range 704..767;
      lpfnPageSetupHook at 0 range 768..831;
      lpfnPagePaintHook at 0 range 832..895;
      lpPageSetupTemplateName at 0 range 896..959;
      hPageSetupTemplate at 0 range 960..1023;
   end record;
   for tagPSDW'Size use 1024;
   for tagPSDW'Alignment use 8;
   subtype PAGESETUPDLGW is tagPSDW;
   type LPPAGESETUPDLGW is access all tagPSDW;
   subtype PAGESETUPDLG is PAGESETUPDLGA;
   subtype LPPAGESETUPDLG is LPPAGESETUPDLGA;
   function PageSetupDlgA_x(
      param1 : LPPAGESETUPDLGA
   ) return BOOL;
   pragma import (Cpp,PageSetupDlgA_x,"PageSetupDlgA");
   function PageSetupDlgW_x(
      param1 : LPPAGESETUPDLGW
   ) return BOOL;
   pragma import (Cpp,PageSetupDlgW_x,"PageSetupDlgW");
   -- #include <CommCtrl.h>
   procedure InitCommonControls;
   pragma import (Cpp,InitCommonControls,"InitCommonControls");
   type tagINITCOMMONCONTROLSEX is record
      dwSize : DWORD;
      dwICC : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagINITCOMMONCONTROLSEX);
   for tagINITCOMMONCONTROLSEX use record
      dwSize at 0 range 0..31;
      dwICC at 0 range 32..63;
   end record;
   for tagINITCOMMONCONTROLSEX'Size use 64;
   for tagINITCOMMONCONTROLSEX'Alignment use 4;
   subtype INITCOMMONCONTROLSEX is tagINITCOMMONCONTROLSEX;
   type LPINITCOMMONCONTROLSEX is access all tagINITCOMMONCONTROLSEX;
   function InitCommonControlsEx_x(
      picce : access constant INITCOMMONCONTROLSEX
   ) return BOOL;
   pragma import (Cpp,InitCommonControlsEx_x,"InitCommonControlsEx");
   type tagCOLORSCHEME is record
      dwSize : DWORD;
      clrBtnHighlight : COLORREF;
      clrBtnShadow : COLORREF;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCOLORSCHEME);
   for tagCOLORSCHEME use record
      dwSize at 0 range 0..31;
      clrBtnHighlight at 0 range 32..63;
      clrBtnShadow at 0 range 64..95;
   end record;
   for tagCOLORSCHEME'Size use 96;
   for tagCOLORSCHEME'Alignment use 4;
   subtype COLORSCHEME is tagCOLORSCHEME;
   type LPCOLORSCHEME is access all tagCOLORSCHEME;
   type tagNMTOOLTIPSCREATED is record
      hdr : NMHDR;
      hwndToolTips : HWND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTOOLTIPSCREATED);
   for tagNMTOOLTIPSCREATED use record
      hdr at 0 range 0..191;
      hwndToolTips at 0 range 192..255;
   end record;
   for tagNMTOOLTIPSCREATED'Size use 256;
   for tagNMTOOLTIPSCREATED'Alignment use 8;
   subtype NMTOOLTIPSCREATED is tagNMTOOLTIPSCREATED;
   type LPNMTOOLTIPSCREATED is access all tagNMTOOLTIPSCREATED;
   type tagNMMOUSE is record
      hdr : NMHDR;
      dwItemSpec : DWORD_PTR;
      dwItemData : DWORD_PTR;
      pt : POINT;
      dwHitInfo : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMMOUSE);
   for tagNMMOUSE use record
      hdr at 0 range 0..191;
      dwItemSpec at 0 range 192..255;
      dwItemData at 0 range 256..319;
      pt at 0 range 320..383;
      dwHitInfo at 0 range 384..447;
   end record;
   for tagNMMOUSE'Size use 448;
   for tagNMMOUSE'Alignment use 8;
   subtype NMMOUSE is tagNMMOUSE;
   type LPNMMOUSE is access all tagNMMOUSE;
   subtype NMCLICK is NMMOUSE;
   subtype LPNMCLICK is LPNMMOUSE;
   type tagNMOBJECTNOTIFY is record
      hdr : NMHDR;
      iItem : Interfaces.C.Int;
      piid : access constant IID;
      pObject : access Void;
      hResult_x : HRESULT;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMOBJECTNOTIFY);
   for tagNMOBJECTNOTIFY use record
      hdr at 0 range 0..191;
      iItem at 0 range 192..223;
      piid at 0 range 256..319;
      pObject at 0 range 320..383;
      hResult_x at 0 range 384..415;
      dwFlags at 0 range 416..447;
   end record;
   for tagNMOBJECTNOTIFY'Size use 448;
   for tagNMOBJECTNOTIFY'Alignment use 8;
   subtype NMOBJECTNOTIFY is tagNMOBJECTNOTIFY;
   type LPNMOBJECTNOTIFY is access all tagNMOBJECTNOTIFY;
   type tagNMKEY is record
      hdr : NMHDR;
      nVKey : UINT;
      uFlags : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMKEY);
   for tagNMKEY use record
      hdr at 0 range 0..191;
      nVKey at 0 range 192..223;
      uFlags at 0 range 224..255;
   end record;
   for tagNMKEY'Size use 256;
   for tagNMKEY'Alignment use 8;
   subtype NMKEY is tagNMKEY;
   type LPNMKEY is access all tagNMKEY;
   type tagNMCHAR is record
      hdr : NMHDR;
      ch : UINT;
      dwItemPrev : DWORD;
      dwItemNext : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMCHAR);
   for tagNMCHAR use record
      hdr at 0 range 0..191;
      ch at 0 range 192..223;
      dwItemPrev at 0 range 224..255;
      dwItemNext at 0 range 256..287;
   end record;
   for tagNMCHAR'Size use 320;
   for tagNMCHAR'Alignment use 8;
   subtype NMCHAR is tagNMCHAR;
   type LPNMCHAR is access all tagNMCHAR;
   type tagNMCUSTOMTEXT is record
      hdr : NMHDR;
      hDC_x : HDC;
      lpString : LPCWSTR;
      nCount : Interfaces.C.Int;
      lpRect_x : LPRECT;
      uFormat : UINT;
      fLink : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMCUSTOMTEXT);
   for tagNMCUSTOMTEXT use record
      hdr at 0 range 0..191;
      hDC_x at 0 range 192..255;
      lpString at 0 range 256..319;
      nCount at 0 range 320..351;
      lpRect_x at 0 range 384..447;
      uFormat at 0 range 448..479;
      fLink at 0 range 480..511;
   end record;
   for tagNMCUSTOMTEXT'Size use 512;
   for tagNMCUSTOMTEXT'Alignment use 8;
   subtype NMCUSTOMTEXT is tagNMCUSTOMTEXT;
   type LPNMCUSTOMTEXT is access all tagNMCUSTOMTEXT;
   type tagNMCUSTOMDRAWINFO is record
      hdr : NMHDR;
      dwDrawStage : DWORD;
      hdc_x : HDC;
      rc : RECT;
      dwItemSpec : DWORD_PTR;
      uItemState : UINT;
      lItemlParam : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMCUSTOMDRAWINFO);
   for tagNMCUSTOMDRAWINFO use record
      hdr at 0 range 0..191;
      dwDrawStage at 0 range 192..223;
      hdc_x at 0 range 256..319;
      rc at 0 range 320..447;
      dwItemSpec at 0 range 448..511;
      uItemState at 0 range 512..543;
      lItemlParam at 0 range 576..639;
   end record;
   for tagNMCUSTOMDRAWINFO'Size use 640;
   for tagNMCUSTOMDRAWINFO'Alignment use 8;
   subtype NMCUSTOMDRAW is tagNMCUSTOMDRAWINFO;
   type LPNMCUSTOMDRAW is access all tagNMCUSTOMDRAWINFO;
   type tagNMTTCUSTOMDRAW is record
      nmcd : NMCUSTOMDRAW;
      uDrawFlags : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTTCUSTOMDRAW);
   for tagNMTTCUSTOMDRAW use record
      nmcd at 0 range 0..639;
      uDrawFlags at 0 range 640..671;
   end record;
   for tagNMTTCUSTOMDRAW'Size use 704;
   for tagNMTTCUSTOMDRAW'Alignment use 8;
   subtype NMTTCUSTOMDRAW is tagNMTTCUSTOMDRAW;
   type LPNMTTCUSTOMDRAW is access all tagNMTTCUSTOMDRAW;
   type tagNMCUSTOMSPLITRECTINFO is record
      hdr : NMHDR;
      rcClient : RECT;
      rcButton : RECT;
      rcSplit : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMCUSTOMSPLITRECTINFO);
   for tagNMCUSTOMSPLITRECTINFO use record
      hdr at 0 range 0..191;
      rcClient at 0 range 192..319;
      rcButton at 0 range 320..447;
      rcSplit at 0 range 448..575;
   end record;
   for tagNMCUSTOMSPLITRECTINFO'Size use 576;
   for tagNMCUSTOMSPLITRECTINFO'Alignment use 8;
   subtype NMCUSTOMSPLITRECTINFO is tagNMCUSTOMSPLITRECTINFO;
   type LPNMCUSTOMSPLITRECTINFO is access all tagNMCUSTOMSPLITRECTINFO;
   type IMAGELIST_x;
   type HIMAGELIST is access all IMAGELIST_x;
   type IMAGELISTDRAWPARAMS_x is record
      cbSize : DWORD;
      himl : HIMAGELIST;
      i : Interfaces.C.Int;
      hdcDst : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      cy_x : Interfaces.C.Int;
      xBitmap : Interfaces.C.Int;
      yBitmap : Interfaces.C.Int;
      rgbBk : COLORREF;
      rgbFg : COLORREF;
      fStyle : UINT;
      dwRop : DWORD;
      fState : DWORD;
      Frame : DWORD;
      crEffect : COLORREF;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGELISTDRAWPARAMS_x);
   for IMAGELISTDRAWPARAMS_x use record
      cbSize at 0 range 0..31;
      himl at 0 range 64..127;
      i at 0 range 128..159;
      hdcDst at 0 range 192..255;
      x at 0 range 256..287;
      y at 0 range 288..319;
      cx at 0 range 320..351;
      cy_x at 0 range 352..383;
      xBitmap at 0 range 384..415;
      yBitmap at 0 range 416..447;
      rgbBk at 0 range 448..479;
      rgbFg at 0 range 480..511;
      fStyle at 0 range 512..543;
      dwRop at 0 range 544..575;
      fState at 0 range 576..607;
      Frame at 0 range 608..639;
      crEffect at 0 range 640..671;
   end record;
   for IMAGELISTDRAWPARAMS_x'Size use 704;
   for IMAGELISTDRAWPARAMS_x'Alignment use 8;
   subtype IMAGELISTDRAWPARAMS is IMAGELISTDRAWPARAMS_x;
   type LPIMAGELISTDRAWPARAMS is access all IMAGELISTDRAWPARAMS_x;
   function ImageList_Create(
      cx : Interfaces.C.Int;
      cy_x : Interfaces.C.Int;
      flags : UINT;
      cInitial : Interfaces.C.Int;
      cGrow : Interfaces.C.Int
   ) return HIMAGELIST;
   pragma import (Cpp,ImageList_Create,"ImageList_Create");
   function ImageList_Destroy(
      himl : HIMAGELIST
   ) return BOOL;
   pragma import (Cpp,ImageList_Destroy,"ImageList_Destroy");
   function ImageList_GetImageCount(
      himl : HIMAGELIST
   ) return Interfaces.C.Int;
   pragma import (Cpp,ImageList_GetImageCount,"ImageList_GetImageCount");
   function ImageList_SetImageCount(
      himl : HIMAGELIST;
      uNewCount : UINT
   ) return BOOL;
   pragma import (Cpp,ImageList_SetImageCount,"ImageList_SetImageCount");
   function ImageList_Add(
      himl : HIMAGELIST;
      hbmImage : HBITMAP;
      hbmMask : HBITMAP
   ) return Interfaces.C.Int;
   pragma import (Cpp,ImageList_Add,"ImageList_Add");
   function ImageList_ReplaceIcon(
      himl : HIMAGELIST;
      i : Interfaces.C.Int;
      hicon_x : HICON
   ) return Interfaces.C.Int;
   pragma import (Cpp,ImageList_ReplaceIcon,"ImageList_ReplaceIcon");
   function ImageList_SetBkColor(
      himl : HIMAGELIST;
      clrBk : COLORREF
   ) return COLORREF;
   pragma import (Cpp,ImageList_SetBkColor,"ImageList_SetBkColor");
   function ImageList_GetBkColor(
      himl : HIMAGELIST
   ) return COLORREF;
   pragma import (Cpp,ImageList_GetBkColor,"ImageList_GetBkColor");
   function ImageList_SetOverlayImage(
      himl : HIMAGELIST;
      iImage : Interfaces.C.Int;
      iOverlay : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,ImageList_SetOverlayImage,"ImageList_SetOverlayImage");
   function ImageList_Draw(
      himl : HIMAGELIST;
      i : Interfaces.C.Int;
      hdcDst : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      fStyle : UINT
   ) return BOOL;
   pragma import (Cpp,ImageList_Draw,"ImageList_Draw");
   function ImageList_Replace(
      himl : HIMAGELIST;
      i : Interfaces.C.Int;
      hbmImage : HBITMAP;
      hbmMask : HBITMAP
   ) return BOOL;
   pragma import (Cpp,ImageList_Replace,"ImageList_Replace");
   function ImageList_AddMasked(
      himl : HIMAGELIST;
      hbmImage : HBITMAP;
      crMask : COLORREF
   ) return Interfaces.C.Int;
   pragma import (Cpp,ImageList_AddMasked,"ImageList_AddMasked");
   function ImageList_DrawEx(
      himl : HIMAGELIST;
      i : Interfaces.C.Int;
      hdcDst : HDC;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      dx : Interfaces.C.Int;
      dy : Interfaces.C.Int;
      rgbBk : COLORREF;
      rgbFg : COLORREF;
      fStyle : UINT
   ) return BOOL;
   pragma import (Cpp,ImageList_DrawEx,"ImageList_DrawEx");
   function ImageList_DrawIndirect(
      pimldp : access IMAGELISTDRAWPARAMS
   ) return BOOL;
   pragma import (Cpp,ImageList_DrawIndirect,"ImageList_DrawIndirect");
   function ImageList_Remove(
      himl : HIMAGELIST;
      i : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,ImageList_Remove,"ImageList_Remove");
   function ImageList_GetIcon(
      himl : HIMAGELIST;
      i : Interfaces.C.Int;
      flags : UINT
   ) return HICON;
   pragma import (Cpp,ImageList_GetIcon,"ImageList_GetIcon");
   function ImageList_LoadImageA(
      hi : HINSTANCE;
      lpbmp : LPCSTR;
      cx : Interfaces.C.Int;
      cGrow : Interfaces.C.Int;
      crMask : COLORREF;
      uType : UINT;
      uFlags : UINT
   ) return HIMAGELIST;
   pragma import (Cpp,ImageList_LoadImageA,"ImageList_LoadImageA");
   function ImageList_LoadImageW(
      hi : HINSTANCE;
      lpbmp : LPCWSTR;
      cx : Interfaces.C.Int;
      cGrow : Interfaces.C.Int;
      crMask : COLORREF;
      uType : UINT;
      uFlags : UINT
   ) return HIMAGELIST;
   pragma import (Cpp,ImageList_LoadImageW,"ImageList_LoadImageW");
   function ImageList_Copy(
      himlDst : HIMAGELIST;
      iDst : Interfaces.C.Int;
      himlSrc : HIMAGELIST;
      iSrc : Interfaces.C.Int;
      uFlags : UINT
   ) return BOOL;
   pragma import (Cpp,ImageList_Copy,"ImageList_Copy");
   function ImageList_BeginDrag(
      himlTrack : HIMAGELIST;
      iTrack : Interfaces.C.Int;
      dxHotspot : Interfaces.C.Int;
      dyHotspot : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,ImageList_BeginDrag,"ImageList_BeginDrag");
   procedure ImageList_EndDrag;
   pragma import (Cpp,ImageList_EndDrag,"ImageList_EndDrag");
   function ImageList_DragEnter(
      hwndLock : HWND;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,ImageList_DragEnter,"ImageList_DragEnter");
   function ImageList_DragLeave(
      hwndLock : HWND
   ) return BOOL;
   pragma import (Cpp,ImageList_DragLeave,"ImageList_DragLeave");
   function ImageList_DragMove(
      x : Interfaces.C.Int;
      y : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,ImageList_DragMove,"ImageList_DragMove");
   function ImageList_SetDragCursorImage(
      himlDrag : HIMAGELIST;
      iDrag : Interfaces.C.Int;
      dxHotspot : Interfaces.C.Int;
      dyHotspot : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,ImageList_SetDragCursorImage,"ImageList_SetDragCursorImage");
   function ImageList_DragShowNolock(
      fShow : BOOL
   ) return BOOL;
   pragma import (Cpp,ImageList_DragShowNolock,"ImageList_DragShowNolock");
   function ImageList_GetDragImage(
      ppt : access POINT;
      pptHotspot : access POINT
   ) return HIMAGELIST;
   pragma import (Cpp,ImageList_GetDragImage,"ImageList_GetDragImage");
   -- #include <objidlbase.h>
   -- #include <CommCtrl.h>
   function ImageList_Read(
      pstm : access IStream'Class
   ) return HIMAGELIST;
   pragma import (Cpp,ImageList_Read,"ImageList_Read");
   function ImageList_Write(
      himl : HIMAGELIST;
      pstm : access IStream'Class
   ) return BOOL;
   pragma import (Cpp,ImageList_Write,"ImageList_Write");
   function ImageList_ReadEx(
      dwFlags : DWORD;
      pstm : access IStream'Class;
      riid : access constant IID;
      ppv : access PVOID
   ) return HRESULT;
   pragma import (Cpp,ImageList_ReadEx,"ImageList_ReadEx");
   function ImageList_WriteEx(
      himl : HIMAGELIST;
      dwFlags : DWORD;
      pstm : access IStream'Class
   ) return HRESULT;
   pragma import (Cpp,ImageList_WriteEx,"ImageList_WriteEx");
   type IMAGEINFO_x is record
      hbmImage : HBITMAP;
      hbmMask : HBITMAP;
      Unused1 : Interfaces.C.Int;
      Unused2 : Interfaces.C.Int;
      rcImage : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,IMAGEINFO_x);
   for IMAGEINFO_x use record
      hbmImage at 0 range 0..63;
      hbmMask at 0 range 64..127;
      Unused1 at 0 range 128..159;
      Unused2 at 0 range 160..191;
      rcImage at 0 range 192..319;
   end record;
   for IMAGEINFO_x'Size use 320;
   for IMAGEINFO_x'Alignment use 8;
   subtype IMAGEINFO is IMAGEINFO_x;
   type LPIMAGEINFO is access all IMAGEINFO_x;
   function ImageList_GetIconSize(
      himl : HIMAGELIST;
      cx : access Interfaces.C.Int;
      cy_x : access Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,ImageList_GetIconSize,"ImageList_GetIconSize");
   function ImageList_SetIconSize(
      himl : HIMAGELIST;
      cx : Interfaces.C.Int;
      cy_x : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,ImageList_SetIconSize,"ImageList_SetIconSize");
   function ImageList_GetImageInfo(
      himl : HIMAGELIST;
      i : Interfaces.C.Int;
      pImageInfo : access IMAGEINFO
   ) return BOOL;
   pragma import (Cpp,ImageList_GetImageInfo,"ImageList_GetImageInfo");
   function ImageList_Merge(
      himl1 : HIMAGELIST;
      i1 : Interfaces.C.Int;
      himl2 : HIMAGELIST;
      i2 : Interfaces.C.Int;
      dx : Interfaces.C.Int;
      dy : Interfaces.C.Int
   ) return HIMAGELIST;
   pragma import (Cpp,ImageList_Merge,"ImageList_Merge");
   function ImageList_Duplicate(
      himl : HIMAGELIST
   ) return HIMAGELIST;
   pragma import (Cpp,ImageList_Duplicate,"ImageList_Duplicate");
   function HIMAGELIST_QueryInterface(
      himl : HIMAGELIST;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,HIMAGELIST_QueryInterface,"HIMAGELIST_QueryInterface");
   type IImageList;
   -- IImageListToHIMAGELIST(); -- inlined function not supported
   type HD_TEXTFILTERA_x is record
      pszText : LPSTR;
      cchTextMax : INT;
   end record;
   pragma Convention (C_Pass_By_Copy,HD_TEXTFILTERA_x);
   for HD_TEXTFILTERA_x use record
      pszText at 0 range 0..63;
      cchTextMax at 0 range 64..95;
   end record;
   for HD_TEXTFILTERA_x'Size use 128;
   for HD_TEXTFILTERA_x'Alignment use 8;
   subtype HD_TEXTFILTERA is HD_TEXTFILTERA_x;
   type LPHD_TEXTFILTERA is access all HD_TEXTFILTERA_x;
   type HD_TEXTFILTERW_x is record
      pszText : LPWSTR;
      cchTextMax : INT;
   end record;
   pragma Convention (C_Pass_By_Copy,HD_TEXTFILTERW_x);
   for HD_TEXTFILTERW_x use record
      pszText at 0 range 0..63;
      cchTextMax at 0 range 64..95;
   end record;
   for HD_TEXTFILTERW_x'Size use 128;
   for HD_TEXTFILTERW_x'Alignment use 8;
   subtype HD_TEXTFILTERW is HD_TEXTFILTERW_x;
   type LPHD_TEXTFILTERW is access all HD_TEXTFILTERW_x;
   type HD_ITEMA_x is record
      mask : UINT;
      cxy : Interfaces.C.Int;
      pszText : LPSTR;
      hbm : HBITMAP;
      cchTextMax : Interfaces.C.Int;
      fmt : Interfaces.C.Int;
      lParam_x : LPARAM;
      iImage : Interfaces.C.Int;
      iOrder : Interfaces.C.Int;
      type_x : UINT;
      pvFilter : access Void;
      state : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,HD_ITEMA_x);
   for HD_ITEMA_x use record
      mask at 0 range 0..31;
      cxy at 0 range 32..63;
      pszText at 0 range 64..127;
      hbm at 0 range 128..191;
      cchTextMax at 0 range 192..223;
      fmt at 0 range 224..255;
      lParam_x at 0 range 256..319;
      iImage at 0 range 320..351;
      iOrder at 0 range 352..383;
      type_x at 0 range 384..415;
      pvFilter at 0 range 448..511;
      state at 0 range 512..543;
   end record;
   for HD_ITEMA_x'Size use 576;
   for HD_ITEMA_x'Alignment use 8;
   subtype HDITEMA is HD_ITEMA_x;
   type LPHDITEMA is access all HD_ITEMA_x;
   type HD_ITEMW_x is record
      mask : UINT;
      cxy : Interfaces.C.Int;
      pszText : LPWSTR;
      hbm : HBITMAP;
      cchTextMax : Interfaces.C.Int;
      fmt : Interfaces.C.Int;
      lParam_x : LPARAM;
      iImage : Interfaces.C.Int;
      iOrder : Interfaces.C.Int;
      type_x : UINT;
      pvFilter : access Void;
      state : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,HD_ITEMW_x);
   for HD_ITEMW_x use record
      mask at 0 range 0..31;
      cxy at 0 range 32..63;
      pszText at 0 range 64..127;
      hbm at 0 range 128..191;
      cchTextMax at 0 range 192..223;
      fmt at 0 range 224..255;
      lParam_x at 0 range 256..319;
      iImage at 0 range 320..351;
      iOrder at 0 range 352..383;
      type_x at 0 range 384..415;
      pvFilter at 0 range 448..511;
      state at 0 range 512..543;
   end record;
   for HD_ITEMW_x'Size use 576;
   for HD_ITEMW_x'Alignment use 8;
   subtype HDITEMW is HD_ITEMW_x;
   type LPHDITEMW is access all HD_ITEMW_x;
   type HD_LAYOUT_x is record
      prc : access RECT;
      pwpos : access WINDOWPOS;
   end record;
   pragma Convention (C_Pass_By_Copy,HD_LAYOUT_x);
   for HD_LAYOUT_x use record
      prc at 0 range 0..63;
      pwpos at 0 range 64..127;
   end record;
   for HD_LAYOUT_x'Size use 128;
   for HD_LAYOUT_x'Alignment use 8;
   subtype HDLAYOUT is HD_LAYOUT_x;
   type LPHDLAYOUT is access all HD_LAYOUT_x;
   type HD_HITTESTINFO_x is record
      pt : POINT;
      flags : UINT;
      iItem : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HD_HITTESTINFO_x);
   for HD_HITTESTINFO_x use record
      pt at 0 range 0..63;
      flags at 0 range 64..95;
      iItem at 0 range 96..127;
   end record;
   for HD_HITTESTINFO_x'Size use 128;
   for HD_HITTESTINFO_x'Alignment use 4;
   subtype HDHITTESTINFO is HD_HITTESTINFO_x;
   type LPHDHITTESTINFO is access all HD_HITTESTINFO_x;
   type tagNMHEADERA is record
      hdr : NMHDR;
      iItem : Interfaces.C.Int;
      iButton : Interfaces.C.Int;
      pitem : access HDITEMA;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMHEADERA);
   for tagNMHEADERA use record
      hdr at 0 range 0..191;
      iItem at 0 range 192..223;
      iButton at 0 range 224..255;
      pitem at 0 range 256..319;
   end record;
   for tagNMHEADERA'Size use 320;
   for tagNMHEADERA'Alignment use 8;
   subtype NMHEADERA is tagNMHEADERA;
   type LPNMHEADERA is access all tagNMHEADERA;
   type tagNMHEADERW is record
      hdr : NMHDR;
      iItem : Interfaces.C.Int;
      iButton : Interfaces.C.Int;
      pitem : access HDITEMW;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMHEADERW);
   for tagNMHEADERW use record
      hdr at 0 range 0..191;
      iItem at 0 range 192..223;
      iButton at 0 range 224..255;
      pitem at 0 range 256..319;
   end record;
   for tagNMHEADERW'Size use 320;
   for tagNMHEADERW'Alignment use 8;
   subtype NMHEADERW is tagNMHEADERW;
   type LPNMHEADERW is access all tagNMHEADERW;
   type tagNMHDDISPINFOW is record
      hdr : NMHDR;
      iItem : Interfaces.C.Int;
      mask : UINT;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMHDDISPINFOW);
   for tagNMHDDISPINFOW use record
      hdr at 0 range 0..191;
      iItem at 0 range 192..223;
      mask at 0 range 224..255;
      pszText at 0 range 256..319;
      cchTextMax at 0 range 320..351;
      iImage at 0 range 352..383;
      lParam_x at 0 range 384..447;
   end record;
   for tagNMHDDISPINFOW'Size use 448;
   for tagNMHDDISPINFOW'Alignment use 8;
   subtype NMHDDISPINFOW is tagNMHDDISPINFOW;
   type LPNMHDDISPINFOW is access all tagNMHDDISPINFOW;
   type tagNMHDDISPINFOA is record
      hdr : NMHDR;
      iItem : Interfaces.C.Int;
      mask : UINT;
      pszText : LPSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMHDDISPINFOA);
   for tagNMHDDISPINFOA use record
      hdr at 0 range 0..191;
      iItem at 0 range 192..223;
      mask at 0 range 224..255;
      pszText at 0 range 256..319;
      cchTextMax at 0 range 320..351;
      iImage at 0 range 352..383;
      lParam_x at 0 range 384..447;
   end record;
   for tagNMHDDISPINFOA'Size use 448;
   for tagNMHDDISPINFOA'Alignment use 8;
   subtype NMHDDISPINFOA is tagNMHDDISPINFOA;
   type LPNMHDDISPINFOA is access all tagNMHDDISPINFOA;
   type tagNMHDFILTERBTNCLICK is record
      hdr : NMHDR;
      iItem : INT;
      rc : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMHDFILTERBTNCLICK);
   for tagNMHDFILTERBTNCLICK use record
      hdr at 0 range 0..191;
      iItem at 0 range 192..223;
      rc at 0 range 224..351;
   end record;
   for tagNMHDFILTERBTNCLICK'Size use 384;
   for tagNMHDFILTERBTNCLICK'Alignment use 8;
   subtype NMHDFILTERBTNCLICK is tagNMHDFILTERBTNCLICK;
   type LPNMHDFILTERBTNCLICK is access all tagNMHDFILTERBTNCLICK;
   type TBBUTTON_x_bReserved_Array is array(1..6) of BYTE; -- Auto Generated Dependancy
   type TBBUTTON_x is record
      iBitmap : Interfaces.C.Int;
      idCommand : Interfaces.C.Int;
      fsState : BYTE;
      fsStyle : BYTE;
      bReserved : TBBUTTON_x_bReserved_Array;
      dwData : DWORD_PTR;
      iString : INT_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,TBBUTTON_x);
   for TBBUTTON_x use record
      iBitmap at 0 range 0..31;
      idCommand at 0 range 32..63;
      fsState at 0 range 64..71;
      fsStyle at 0 range 72..79;
      bReserved at 0 range 80..127;
      dwData at 0 range 128..191;
      iString at 0 range 192..255;
   end record;
   for TBBUTTON_x'Size use 256;
   for TBBUTTON_x'Alignment use 8;
   subtype TBBUTTON is TBBUTTON_x;
   type PTBBUTTON is access all TBBUTTON_x;
   type LPTBBUTTON is access all TBBUTTON_x;
   type LPCTBBUTTON is access constant TBBUTTON;
   type COLORMAP_x is record
      from : COLORREF;
      to : COLORREF;
   end record;
   pragma Convention (C_Pass_By_Copy,COLORMAP_x);
   for COLORMAP_x use record
      from at 0 range 0..31;
      to at 0 range 32..63;
   end record;
   for COLORMAP_x'Size use 64;
   for COLORMAP_x'Alignment use 4;
   subtype COLORMAP is COLORMAP_x;
   type LPCOLORMAP is access all COLORMAP_x;
   function CreateToolbarEx(
      hwnd_x : HWND;
      ws : DWORD;
      wID : UINT;
      nBitmaps : Interfaces.C.Int;
      hBMInst : HINSTANCE;
      wBMID : UINT_PTR;
      lpButtons : LPCTBBUTTON;
      iNumButtons : Interfaces.C.Int;
      dxButton : Interfaces.C.Int;
      dyButton : Interfaces.C.Int;
      dxBitmap : Interfaces.C.Int;
      dyBitmap : Interfaces.C.Int;
      uStructSize : UINT
   ) return HWND;
   pragma import (Cpp,CreateToolbarEx,"CreateToolbarEx");
   function CreateMappedBitmap(
      hInstance_x : HINSTANCE;
      idBitmap : INT_PTR;
      wFlags : UINT;
      lpColorMap_x : LPCOLORMAP;
      iNumMaps : Interfaces.C.Int
   ) return HBITMAP;
   pragma import (Cpp,CreateMappedBitmap,"CreateMappedBitmap");
   type NMTBCUSTOMDRAW_x is record
      nmcd : NMCUSTOMDRAW;
      hbrMonoDither : HBRUSH;
      hbrLines : HBRUSH;
      hpenLines : HPEN;
      clrText : COLORREF;
      clrMark : COLORREF;
      clrTextHighlight : COLORREF;
      clrBtnFace : COLORREF;
      clrBtnHighlight : COLORREF;
      clrHighlightHotTrack : COLORREF;
      rcText : RECT;
      nStringBkMode : Interfaces.C.Int;
      nHLStringBkMode : Interfaces.C.Int;
      iListGap : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,NMTBCUSTOMDRAW_x);
   for NMTBCUSTOMDRAW_x use record
      nmcd at 0 range 0..639;
      hbrMonoDither at 0 range 640..703;
      hbrLines at 0 range 704..767;
      hpenLines at 0 range 768..831;
      clrText at 0 range 832..863;
      clrMark at 0 range 864..895;
      clrTextHighlight at 0 range 896..927;
      clrBtnFace at 0 range 928..959;
      clrBtnHighlight at 0 range 960..991;
      clrHighlightHotTrack at 0 range 992..1023;
      rcText at 0 range 1024..1151;
      nStringBkMode at 0 range 1152..1183;
      nHLStringBkMode at 0 range 1184..1215;
      iListGap at 0 range 1216..1247;
   end record;
   for NMTBCUSTOMDRAW_x'Size use 1280;
   for NMTBCUSTOMDRAW_x'Alignment use 8;
   subtype NMTBCUSTOMDRAW is NMTBCUSTOMDRAW_x;
   type LPNMTBCUSTOMDRAW is access all NMTBCUSTOMDRAW_x;
   type tagTBADDBITMAP is record
      hInst : HINSTANCE;
      nID : UINT_PTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTBADDBITMAP);
   for tagTBADDBITMAP use record
      hInst at 0 range 0..63;
      nID at 0 range 64..127;
   end record;
   for tagTBADDBITMAP'Size use 128;
   for tagTBADDBITMAP'Alignment use 8;
   subtype TBADDBITMAP is tagTBADDBITMAP;
   type LPTBADDBITMAP is access all tagTBADDBITMAP;
   type tagTBSAVEPARAMSA is record
      hkr : HKEY;
      pszSubKey : LPCSTR;
      pszValueName : LPCSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTBSAVEPARAMSA);
   for tagTBSAVEPARAMSA use record
      hkr at 0 range 0..63;
      pszSubKey at 0 range 64..127;
      pszValueName at 0 range 128..191;
   end record;
   for tagTBSAVEPARAMSA'Size use 192;
   for tagTBSAVEPARAMSA'Alignment use 8;
   subtype TBSAVEPARAMSA is tagTBSAVEPARAMSA;
   type LPTBSAVEPARAMSA is access all tagTBSAVEPARAMSA;
   type tagTBSAVEPARAMSW is record
      hkr : HKEY;
      pszSubKey : LPCWSTR;
      pszValueName : LPCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTBSAVEPARAMSW);
   for tagTBSAVEPARAMSW use record
      hkr at 0 range 0..63;
      pszSubKey at 0 range 64..127;
      pszValueName at 0 range 128..191;
   end record;
   for tagTBSAVEPARAMSW'Size use 192;
   for tagTBSAVEPARAMSW'Alignment use 8;
   subtype TBSAVEPARAMSW is tagTBSAVEPARAMSW;
   type LPTBSAVEPARAMW is access all tagTBSAVEPARAMSW;
   type TBINSERTMARK is record
      iButton : Interfaces.C.Int;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,TBINSERTMARK);
   for TBINSERTMARK use record
      iButton at 0 range 0..31;
      dwFlags at 0 range 32..63;
   end record;
   for TBINSERTMARK'Size use 64;
   for TBINSERTMARK'Alignment use 4;
   type LPTBINSERTMARK is access all TBINSERTMARK;
   type TBREPLACEBITMAP is record
      hInstOld : HINSTANCE;
      nIDOld : UINT_PTR;
      hInstNew : HINSTANCE;
      nIDNew : UINT_PTR;
      nButtons : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,TBREPLACEBITMAP);
   for TBREPLACEBITMAP use record
      hInstOld at 0 range 0..63;
      nIDOld at 0 range 64..127;
      hInstNew at 0 range 128..191;
      nIDNew at 0 range 192..255;
      nButtons at 0 range 256..287;
   end record;
   for TBREPLACEBITMAP'Size use 320;
   for TBREPLACEBITMAP'Alignment use 8;
   type LPTBREPLACEBITMAP is access all TBREPLACEBITMAP;
   type TBBUTTONINFOA is record
      cbSize : UINT;
      dwMask : DWORD;
      idCommand : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      fsState : BYTE;
      fsStyle : BYTE;
      cx : WORD;
      lParam_x : DWORD_PTR;
      pszText : LPSTR;
      cchText : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,TBBUTTONINFOA);
   for TBBUTTONINFOA use record
      cbSize at 0 range 0..31;
      dwMask at 0 range 32..63;
      idCommand at 0 range 64..95;
      iImage at 0 range 96..127;
      fsState at 0 range 128..135;
      fsStyle at 0 range 136..143;
      cx at 0 range 144..159;
      lParam_x at 0 range 192..255;
      pszText at 0 range 256..319;
      cchText at 0 range 320..351;
   end record;
   for TBBUTTONINFOA'Size use 384;
   for TBBUTTONINFOA'Alignment use 8;
   type LPTBBUTTONINFOA is access all TBBUTTONINFOA;
   type TBBUTTONINFOW is record
      cbSize : UINT;
      dwMask : DWORD;
      idCommand : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      fsState : BYTE;
      fsStyle : BYTE;
      cx : WORD;
      lParam_x : DWORD_PTR;
      pszText : LPWSTR;
      cchText : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,TBBUTTONINFOW);
   for TBBUTTONINFOW use record
      cbSize at 0 range 0..31;
      dwMask at 0 range 32..63;
      idCommand at 0 range 64..95;
      iImage at 0 range 96..127;
      fsState at 0 range 128..135;
      fsStyle at 0 range 136..143;
      cx at 0 range 144..159;
      lParam_x at 0 range 192..255;
      pszText at 0 range 256..319;
      cchText at 0 range 320..351;
   end record;
   for TBBUTTONINFOW'Size use 384;
   for TBBUTTONINFOW'Alignment use 8;
   type LPTBBUTTONINFOW is access all TBBUTTONINFOW;
   type TBMETRICS is record
      cbSize : UINT;
      dwMask : DWORD;
      cxPad : Interfaces.C.Int;
      cyPad : Interfaces.C.Int;
      cxBarPad : Interfaces.C.Int;
      cyBarPad : Interfaces.C.Int;
      cxButtonSpacing : Interfaces.C.Int;
      cyButtonSpacing : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,TBMETRICS);
   for TBMETRICS use record
      cbSize at 0 range 0..31;
      dwMask at 0 range 32..63;
      cxPad at 0 range 64..95;
      cyPad at 0 range 96..127;
      cxBarPad at 0 range 128..159;
      cyBarPad at 0 range 160..191;
      cxButtonSpacing at 0 range 192..223;
      cyButtonSpacing at 0 range 224..255;
   end record;
   for TBMETRICS'Size use 256;
   for TBMETRICS'Alignment use 4;
   type LPTBMETRICS is access all TBMETRICS;
   type tagNMTBHOTITEM is record
      hdr : NMHDR;
      idOld : Interfaces.C.Int;
      idNew : Interfaces.C.Int;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTBHOTITEM);
   for tagNMTBHOTITEM use record
      hdr at 0 range 0..191;
      idOld at 0 range 192..223;
      idNew at 0 range 224..255;
      dwFlags at 0 range 256..287;
   end record;
   for tagNMTBHOTITEM'Size use 320;
   for tagNMTBHOTITEM'Alignment use 8;
   subtype NMTBHOTITEM is tagNMTBHOTITEM;
   type LPNMTBHOTITEM is access all tagNMTBHOTITEM;
   type tagNMTBSAVE is record
      hdr : NMHDR;
      pData : access DWORD;
      pCurrent : access DWORD;
      cbData : UINT;
      iItem : Interfaces.C.Int;
      cButtons : Interfaces.C.Int;
      tbButton_x : TBBUTTON;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTBSAVE);
   for tagNMTBSAVE use record
      hdr at 0 range 0..191;
      pData at 0 range 192..255;
      pCurrent at 0 range 256..319;
      cbData at 0 range 320..351;
      iItem at 0 range 352..383;
      cButtons at 0 range 384..415;
      tbButton_x at 0 range 448..703;
   end record;
   for tagNMTBSAVE'Size use 704;
   for tagNMTBSAVE'Alignment use 8;
   subtype NMTBSAVE is tagNMTBSAVE;
   type LPNMTBSAVE is access all tagNMTBSAVE;
   type tagNMTBRESTORE is record
      hdr : NMHDR;
      pData : access DWORD;
      pCurrent : access DWORD;
      cbData : UINT;
      iItem : Interfaces.C.Int;
      cButtons : Interfaces.C.Int;
      cbBytesPerRecord : Interfaces.C.Int;
      tbButton_x : TBBUTTON;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTBRESTORE);
   for tagNMTBRESTORE use record
      hdr at 0 range 0..191;
      pData at 0 range 192..255;
      pCurrent at 0 range 256..319;
      cbData at 0 range 320..351;
      iItem at 0 range 352..383;
      cButtons at 0 range 384..415;
      cbBytesPerRecord at 0 range 416..447;
      tbButton_x at 0 range 448..703;
   end record;
   for tagNMTBRESTORE'Size use 704;
   for tagNMTBRESTORE'Alignment use 8;
   subtype NMTBRESTORE is tagNMTBRESTORE;
   type LPNMTBRESTORE is access all tagNMTBRESTORE;
   type tagNMTBGETINFOTIPA is record
      hdr : NMHDR;
      pszText : LPSTR;
      cchTextMax : Interfaces.C.Int;
      iItem : Interfaces.C.Int;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTBGETINFOTIPA);
   for tagNMTBGETINFOTIPA use record
      hdr at 0 range 0..191;
      pszText at 0 range 192..255;
      cchTextMax at 0 range 256..287;
      iItem at 0 range 288..319;
      lParam_x at 0 range 320..383;
   end record;
   for tagNMTBGETINFOTIPA'Size use 384;
   for tagNMTBGETINFOTIPA'Alignment use 8;
   subtype NMTBGETINFOTIPA is tagNMTBGETINFOTIPA;
   type LPNMTBGETINFOTIPA is access all tagNMTBGETINFOTIPA;
   type tagNMTBGETINFOTIPW is record
      hdr : NMHDR;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      iItem : Interfaces.C.Int;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTBGETINFOTIPW);
   for tagNMTBGETINFOTIPW use record
      hdr at 0 range 0..191;
      pszText at 0 range 192..255;
      cchTextMax at 0 range 256..287;
      iItem at 0 range 288..319;
      lParam_x at 0 range 320..383;
   end record;
   for tagNMTBGETINFOTIPW'Size use 384;
   for tagNMTBGETINFOTIPW'Alignment use 8;
   subtype NMTBGETINFOTIPW is tagNMTBGETINFOTIPW;
   type LPNMTBGETINFOTIPW is access all tagNMTBGETINFOTIPW;
   type NMTBDISPINFOA is record
      hdr : NMHDR;
      dwMask : DWORD;
      idCommand : Interfaces.C.Int;
      lParam_x : DWORD_PTR;
      iImage : Interfaces.C.Int;
      pszText : LPSTR;
      cchText : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,NMTBDISPINFOA);
   for NMTBDISPINFOA use record
      hdr at 0 range 0..191;
      dwMask at 0 range 192..223;
      idCommand at 0 range 224..255;
      lParam_x at 0 range 256..319;
      iImage at 0 range 320..351;
      pszText at 0 range 384..447;
      cchText at 0 range 448..479;
   end record;
   for NMTBDISPINFOA'Size use 512;
   for NMTBDISPINFOA'Alignment use 8;
   type LPNMTBDISPINFOA is access all NMTBDISPINFOA;
   type NMTBDISPINFOW is record
      hdr : NMHDR;
      dwMask : DWORD;
      idCommand : Interfaces.C.Int;
      lParam_x : DWORD_PTR;
      iImage : Interfaces.C.Int;
      pszText : LPWSTR;
      cchText : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,NMTBDISPINFOW);
   for NMTBDISPINFOW use record
      hdr at 0 range 0..191;
      dwMask at 0 range 192..223;
      idCommand at 0 range 224..255;
      lParam_x at 0 range 256..319;
      iImage at 0 range 320..351;
      pszText at 0 range 384..447;
      cchText at 0 range 448..479;
   end record;
   for NMTBDISPINFOW'Size use 512;
   for NMTBDISPINFOW'Alignment use 8;
   type LPNMTBDISPINFOW is access all NMTBDISPINFOW;
   type tagNMTOOLBARA is record
      hdr : NMHDR;
      iItem : Interfaces.C.Int;
      tbButton_x : TBBUTTON;
      cchText : Interfaces.C.Int;
      pszText : LPSTR;
      rcButton : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTOOLBARA);
   for tagNMTOOLBARA use record
      hdr at 0 range 0..191;
      iItem at 0 range 192..223;
      tbButton_x at 0 range 256..511;
      cchText at 0 range 512..543;
      pszText at 0 range 576..639;
      rcButton at 0 range 640..767;
   end record;
   for tagNMTOOLBARA'Size use 768;
   for tagNMTOOLBARA'Alignment use 8;
   subtype NMTOOLBARA is tagNMTOOLBARA;
   type LPNMTOOLBARA is access all tagNMTOOLBARA;
   type tagNMTOOLBARW is record
      hdr : NMHDR;
      iItem : Interfaces.C.Int;
      tbButton_x : TBBUTTON;
      cchText : Interfaces.C.Int;
      pszText : LPWSTR;
      rcButton : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTOOLBARW);
   for tagNMTOOLBARW use record
      hdr at 0 range 0..191;
      iItem at 0 range 192..223;
      tbButton_x at 0 range 256..511;
      cchText at 0 range 512..543;
      pszText at 0 range 576..639;
      rcButton at 0 range 640..767;
   end record;
   for tagNMTOOLBARW'Size use 768;
   for tagNMTOOLBARW'Alignment use 8;
   subtype NMTOOLBARW is tagNMTOOLBARW;
   type LPNMTOOLBARW is access all tagNMTOOLBARW;
   type tagREBARINFO is record
      cbSize : UINT;
      fMask : UINT;
      himl : HIMAGELIST;
   end record;
   pragma Convention (C_Pass_By_Copy,tagREBARINFO);
   for tagREBARINFO use record
      cbSize at 0 range 0..31;
      fMask at 0 range 32..63;
      himl at 0 range 64..127;
   end record;
   for tagREBARINFO'Size use 128;
   for tagREBARINFO'Alignment use 8;
   subtype REBARINFO is tagREBARINFO;
   type LPREBARINFO is access all tagREBARINFO;
   type tagREBARBANDINFOA is record
      cbSize : UINT;
      fMask : UINT;
      fStyle : UINT;
      clrFore : COLORREF;
      clrBack : COLORREF;
      lpText : LPSTR;
      cch : UINT;
      iImage : Interfaces.C.Int;
      hwndChild : HWND;
      cxMinChild : UINT;
      cyMinChild : UINT;
      cx : UINT;
      hbmBack : HBITMAP;
      wID : UINT;
      cyChild : UINT;
      cyMaxChild : UINT;
      cyIntegral : UINT;
      cxIdeal : UINT;
      lParam_x : LPARAM;
      cxHeader : UINT;
      rcChevronLocation : RECT;
      uChevronState : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagREBARBANDINFOA);
   for tagREBARBANDINFOA use record
      cbSize at 0 range 0..31;
      fMask at 0 range 32..63;
      fStyle at 0 range 64..95;
      clrFore at 0 range 96..127;
      clrBack at 0 range 128..159;
      lpText at 0 range 192..255;
      cch at 0 range 256..287;
      iImage at 0 range 288..319;
      hwndChild at 0 range 320..383;
      cxMinChild at 0 range 384..415;
      cyMinChild at 0 range 416..447;
      cx at 0 range 448..479;
      hbmBack at 0 range 512..575;
      wID at 0 range 576..607;
      cyChild at 0 range 608..639;
      cyMaxChild at 0 range 640..671;
      cyIntegral at 0 range 672..703;
      cxIdeal at 0 range 704..735;
      lParam_x at 0 range 768..831;
      cxHeader at 0 range 832..863;
      rcChevronLocation at 0 range 864..991;
      uChevronState at 0 range 992..1023;
   end record;
   for tagREBARBANDINFOA'Size use 1024;
   for tagREBARBANDINFOA'Alignment use 8;
   subtype REBARBANDINFOA is tagREBARBANDINFOA;
   type LPREBARBANDINFOA is access all tagREBARBANDINFOA;
   type LPCREBARBANDINFOA is access constant REBARBANDINFOA;
   type tagREBARBANDINFOW is record
      cbSize : UINT;
      fMask : UINT;
      fStyle : UINT;
      clrFore : COLORREF;
      clrBack : COLORREF;
      lpText : LPWSTR;
      cch : UINT;
      iImage : Interfaces.C.Int;
      hwndChild : HWND;
      cxMinChild : UINT;
      cyMinChild : UINT;
      cx : UINT;
      hbmBack : HBITMAP;
      wID : UINT;
      cyChild : UINT;
      cyMaxChild : UINT;
      cyIntegral : UINT;
      cxIdeal : UINT;
      lParam_x : LPARAM;
      cxHeader : UINT;
      rcChevronLocation : RECT;
      uChevronState : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagREBARBANDINFOW);
   for tagREBARBANDINFOW use record
      cbSize at 0 range 0..31;
      fMask at 0 range 32..63;
      fStyle at 0 range 64..95;
      clrFore at 0 range 96..127;
      clrBack at 0 range 128..159;
      lpText at 0 range 192..255;
      cch at 0 range 256..287;
      iImage at 0 range 288..319;
      hwndChild at 0 range 320..383;
      cxMinChild at 0 range 384..415;
      cyMinChild at 0 range 416..447;
      cx at 0 range 448..479;
      hbmBack at 0 range 512..575;
      wID at 0 range 576..607;
      cyChild at 0 range 608..639;
      cyMaxChild at 0 range 640..671;
      cyIntegral at 0 range 672..703;
      cxIdeal at 0 range 704..735;
      lParam_x at 0 range 768..831;
      cxHeader at 0 range 832..863;
      rcChevronLocation at 0 range 864..991;
      uChevronState at 0 range 992..1023;
   end record;
   for tagREBARBANDINFOW'Size use 1024;
   for tagREBARBANDINFOW'Alignment use 8;
   subtype REBARBANDINFOW is tagREBARBANDINFOW;
   type LPREBARBANDINFOW is access all tagREBARBANDINFOW;
   type LPCREBARBANDINFOW is access constant REBARBANDINFOW;
   type tagNMREBARCHILDSIZE is record
      hdr : NMHDR;
      uBand : UINT;
      wID : UINT;
      rcChild : RECT;
      rcBand : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMREBARCHILDSIZE);
   for tagNMREBARCHILDSIZE use record
      hdr at 0 range 0..191;
      uBand at 0 range 192..223;
      wID at 0 range 224..255;
      rcChild at 0 range 256..383;
      rcBand at 0 range 384..511;
   end record;
   for tagNMREBARCHILDSIZE'Size use 512;
   for tagNMREBARCHILDSIZE'Alignment use 8;
   subtype NMREBARCHILDSIZE is tagNMREBARCHILDSIZE;
   type LPNMREBARCHILDSIZE is access all tagNMREBARCHILDSIZE;
   type tagNMREBAR is record
      hdr : NMHDR;
      dwMask : DWORD;
      uBand : UINT;
      fStyle : UINT;
      wID : UINT;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMREBAR);
   for tagNMREBAR use record
      hdr at 0 range 0..191;
      dwMask at 0 range 192..223;
      uBand at 0 range 224..255;
      fStyle at 0 range 256..287;
      wID at 0 range 288..319;
      lParam_x at 0 range 320..383;
   end record;
   for tagNMREBAR'Size use 384;
   for tagNMREBAR'Alignment use 8;
   subtype NMREBAR is tagNMREBAR;
   type LPNMREBAR is access all tagNMREBAR;
   type tagNMRBAUTOSIZE is record
      hdr : NMHDR;
      fChanged : BOOL;
      rcTarget : RECT;
      rcActual : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMRBAUTOSIZE);
   for tagNMRBAUTOSIZE use record
      hdr at 0 range 0..191;
      fChanged at 0 range 192..223;
      rcTarget at 0 range 224..351;
      rcActual at 0 range 352..479;
   end record;
   for tagNMRBAUTOSIZE'Size use 512;
   for tagNMRBAUTOSIZE'Alignment use 8;
   subtype NMRBAUTOSIZE is tagNMRBAUTOSIZE;
   type LPNMRBAUTOSIZE is access all tagNMRBAUTOSIZE;
   type tagNMREBARCHEVRON is record
      hdr : NMHDR;
      uBand : UINT;
      wID : UINT;
      lParam_x : LPARAM;
      rc : RECT;
      lParamNM : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMREBARCHEVRON);
   for tagNMREBARCHEVRON use record
      hdr at 0 range 0..191;
      uBand at 0 range 192..223;
      wID at 0 range 224..255;
      lParam_x at 0 range 256..319;
      rc at 0 range 320..447;
      lParamNM at 0 range 448..511;
   end record;
   for tagNMREBARCHEVRON'Size use 512;
   for tagNMREBARCHEVRON'Alignment use 8;
   subtype NMREBARCHEVRON is tagNMREBARCHEVRON;
   type LPNMREBARCHEVRON is access all tagNMREBARCHEVRON;
   type tagNMREBARSPLITTER is record
      hdr : NMHDR;
      rcSizing : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMREBARSPLITTER);
   for tagNMREBARSPLITTER use record
      hdr at 0 range 0..191;
      rcSizing at 0 range 192..319;
   end record;
   for tagNMREBARSPLITTER'Size use 320;
   for tagNMREBARSPLITTER'Alignment use 8;
   subtype NMREBARSPLITTER is tagNMREBARSPLITTER;
   type LPNMREBARSPLITTER is access all tagNMREBARSPLITTER;
   type tagNMREBARAUTOBREAK is record
      hdr : NMHDR;
      uBand : UINT;
      wID : UINT;
      lParam_x : LPARAM;
      uMsg : UINT;
      fStyleCurrent : UINT;
      fAutoBreak : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMREBARAUTOBREAK);
   for tagNMREBARAUTOBREAK use record
      hdr at 0 range 0..191;
      uBand at 0 range 192..223;
      wID at 0 range 224..255;
      lParam_x at 0 range 256..319;
      uMsg at 0 range 320..351;
      fStyleCurrent at 0 range 352..383;
      fAutoBreak at 0 range 384..415;
   end record;
   for tagNMREBARAUTOBREAK'Size use 448;
   for tagNMREBARAUTOBREAK'Alignment use 8;
   subtype NMREBARAUTOBREAK is tagNMREBARAUTOBREAK;
   type LPNMREBARAUTOBREAK is access all tagNMREBARAUTOBREAK;
   type RB_HITTESTINFO_x is record
      pt : POINT;
      flags : UINT;
      iBand : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,RB_HITTESTINFO_x);
   for RB_HITTESTINFO_x use record
      pt at 0 range 0..63;
      flags at 0 range 64..95;
      iBand at 0 range 96..127;
   end record;
   for RB_HITTESTINFO_x'Size use 128;
   for RB_HITTESTINFO_x'Alignment use 4;
   subtype RBHITTESTINFO is RB_HITTESTINFO_x;
   type LPRBHITTESTINFO is access all RB_HITTESTINFO_x;
   type tagTOOLINFOA is record
      cbSize : UINT;
      uFlags : UINT;
      hwnd_x : HWND;
      uId : UINT_PTR;
      rect_x : RECT;
      hinst : HINSTANCE;
      lpszText : LPSTR;
      lParam_x : LPARAM;
      lpReserved : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTOOLINFOA);
   for tagTOOLINFOA use record
      cbSize at 0 range 0..31;
      uFlags at 0 range 32..63;
      hwnd_x at 0 range 64..127;
      uId at 0 range 128..191;
      rect_x at 0 range 192..319;
      hinst at 0 range 320..383;
      lpszText at 0 range 384..447;
      lParam_x at 0 range 448..511;
      lpReserved at 0 range 512..575;
   end record;
   for tagTOOLINFOA'Size use 576;
   for tagTOOLINFOA'Alignment use 8;
   subtype TTTOOLINFOA is tagTOOLINFOA;
   type PTOOLINFOA is access all tagTOOLINFOA;
   type LPTTTOOLINFOA is access all tagTOOLINFOA;
   type tagTOOLINFOW is record
      cbSize : UINT;
      uFlags : UINT;
      hwnd_x : HWND;
      uId : UINT_PTR;
      rect_x : RECT;
      hinst : HINSTANCE;
      lpszText : LPWSTR;
      lParam_x : LPARAM;
      lpReserved : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTOOLINFOW);
   for tagTOOLINFOW use record
      cbSize at 0 range 0..31;
      uFlags at 0 range 32..63;
      hwnd_x at 0 range 64..127;
      uId at 0 range 128..191;
      rect_x at 0 range 192..319;
      hinst at 0 range 320..383;
      lpszText at 0 range 384..447;
      lParam_x at 0 range 448..511;
      lpReserved at 0 range 512..575;
   end record;
   for tagTOOLINFOW'Size use 576;
   for tagTOOLINFOW'Alignment use 8;
   subtype TTTOOLINFOW is tagTOOLINFOW;
   type PTOOLINFOW is access all tagTOOLINFOW;
   type LPTTTOOLINFOW is access all tagTOOLINFOW;
   type TTGETTITLE_x is record
      dwSize : DWORD;
      uTitleBitmap : UINT;
      cch : UINT;
      pszTitle : access WCHAR;
   end record;
   pragma Convention (C_Pass_By_Copy,TTGETTITLE_x);
   for TTGETTITLE_x use record
      dwSize at 0 range 0..31;
      uTitleBitmap at 0 range 32..63;
      cch at 0 range 64..95;
      pszTitle at 0 range 128..191;
   end record;
   for TTGETTITLE_x'Size use 192;
   for TTGETTITLE_x'Alignment use 8;
   subtype TTGETTITLE is TTGETTITLE_x;
   type PTTGETTITLE is access all TTGETTITLE_x;
   type TT_HITTESTINFOA_x is record
      hwnd_x : HWND;
      pt : POINT;
      ti : TTTOOLINFOA;
   end record;
   pragma Convention (C_Pass_By_Copy,TT_HITTESTINFOA_x);
   for TT_HITTESTINFOA_x use record
      hwnd_x at 0 range 0..63;
      pt at 0 range 64..127;
      ti at 0 range 128..703;
   end record;
   for TT_HITTESTINFOA_x'Size use 704;
   for TT_HITTESTINFOA_x'Alignment use 8;
   subtype TTHITTESTINFOA is TT_HITTESTINFOA_x;
   type LPTTHITTESTINFOA is access all TT_HITTESTINFOA_x;
   type TT_HITTESTINFOW_x is record
      hwnd_x : HWND;
      pt : POINT;
      ti : TTTOOLINFOW;
   end record;
   pragma Convention (C_Pass_By_Copy,TT_HITTESTINFOW_x);
   for TT_HITTESTINFOW_x use record
      hwnd_x at 0 range 0..63;
      pt at 0 range 64..127;
      ti at 0 range 128..703;
   end record;
   for TT_HITTESTINFOW_x'Size use 704;
   for TT_HITTESTINFOW_x'Alignment use 8;
   subtype TTHITTESTINFOW is TT_HITTESTINFOW_x;
   type LPTTHITTESTINFOW is access all TT_HITTESTINFOW_x;
   type tagNMTTDISPINFOA_szText_Array is array(1..80) of Character; -- Auto Generated Dependancy
   type tagNMTTDISPINFOA is record
      hdr : NMHDR;
      lpszText : LPSTR;
      szText : tagNMTTDISPINFOA_szText_Array;
      hinst : HINSTANCE;
      uFlags : UINT;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTTDISPINFOA);
   for tagNMTTDISPINFOA use record
      hdr at 0 range 0..191;
      lpszText at 0 range 192..255;
      szText at 0 range 256..895;
      hinst at 0 range 896..959;
      uFlags at 0 range 960..991;
      lParam_x at 0 range 1024..1087;
   end record;
   for tagNMTTDISPINFOA'Size use 1088;
   for tagNMTTDISPINFOA'Alignment use 8;
   subtype NMTTDISPINFOA is tagNMTTDISPINFOA;
   type LPNMTTDISPINFOA is access all tagNMTTDISPINFOA;
   type tagNMTTDISPINFOW_szText_Array is array(1..80) of WCHAR; -- Auto Generated Dependancy
   type tagNMTTDISPINFOW is record
      hdr : NMHDR;
      lpszText : LPWSTR;
      szText : tagNMTTDISPINFOW_szText_Array;
      hinst : HINSTANCE;
      uFlags : UINT;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTTDISPINFOW);
   for tagNMTTDISPINFOW use record
      hdr at 0 range 0..191;
      lpszText at 0 range 192..255;
      szText at 0 range 256..1535;
      hinst at 0 range 1536..1599;
      uFlags at 0 range 1600..1631;
      lParam_x at 0 range 1664..1727;
   end record;
   for tagNMTTDISPINFOW'Size use 1728;
   for tagNMTTDISPINFOW'Alignment use 8;
   subtype NMTTDISPINFOW is tagNMTTDISPINFOW;
   type LPNMTTDISPINFOW is access all tagNMTTDISPINFOW;
   procedure DrawStatusTextA(
      hDC_x : HDC;
      lprc : LPCRECT;
      pszText : LPCSTR;
      uFlags : UINT
   );
   pragma import (Cpp,DrawStatusTextA,"DrawStatusTextA");
   procedure DrawStatusTextW(
      hDC_x : HDC;
      lprc : LPCRECT;
      pszText : LPCWSTR;
      uFlags : UINT
   );
   pragma import (Cpp,DrawStatusTextW,"DrawStatusTextW");
   function CreateStatusWindowA(
      style : LONG;
      lpszText : LPCSTR;
      hwndParent : HWND;
      wID : UINT
   ) return HWND;
   pragma import (Cpp,CreateStatusWindowA,"CreateStatusWindowA");
   function CreateStatusWindowW(
      style : LONG;
      lpszText : LPCWSTR;
      hwndParent : HWND;
      wID : UINT
   ) return HWND;
   pragma import (Cpp,CreateStatusWindowW,"CreateStatusWindowW");
   procedure MenuHelp(
      uMsg : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM;
      hMainMenu : HMENU;
      hInst : HINSTANCE;
      hwndStatus : HWND;
      lpwIDs : access UINT
   );
   pragma import (Cpp,MenuHelp,"MenuHelp");
   function ShowHideMenuCtl(
      hWnd_x : HWND;
      uFlags : UINT_PTR;
      lpInfo : LPINT
   ) return BOOL;
   pragma import (Cpp,ShowHideMenuCtl,"ShowHideMenuCtl");
   procedure GetEffectiveClientRect(
      hWnd_x : HWND;
      lprc : LPRECT;
      lpInfo : access constant INT
   );
   pragma import (Cpp,GetEffectiveClientRect,"GetEffectiveClientRect");
   type tagTRBTHUMBPOSCHANGING is record
      hdr : NMHDR;
      dwPos : DWORD;
      nReason : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTRBTHUMBPOSCHANGING);
   for tagTRBTHUMBPOSCHANGING use record
      hdr at 0 range 0..191;
      dwPos at 0 range 192..223;
      nReason at 0 range 224..255;
   end record;
   for tagTRBTHUMBPOSCHANGING'Size use 256;
   for tagTRBTHUMBPOSCHANGING'Alignment use 8;
   subtype NMTRBTHUMBPOSCHANGING is tagTRBTHUMBPOSCHANGING;
   type tagDRAGLISTINFO is record
      uNotification : UINT;
      hWnd_x : HWND;
      ptCursor : POINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDRAGLISTINFO);
   for tagDRAGLISTINFO use record
      uNotification at 0 range 0..31;
      hWnd_x at 0 range 64..127;
      ptCursor at 0 range 128..191;
   end record;
   for tagDRAGLISTINFO'Size use 192;
   for tagDRAGLISTINFO'Alignment use 8;
   subtype DRAGLISTINFO is tagDRAGLISTINFO;
   type LPDRAGLISTINFO is access all tagDRAGLISTINFO;
   function MakeDragList(
      hLB : HWND
   ) return BOOL;
   pragma import (Cpp,MakeDragList,"MakeDragList");
   procedure DrawInsert(
      handParent : HWND;
      hLB : HWND;
      nItem : Interfaces.C.Int
   );
   pragma import (Cpp,DrawInsert,"DrawInsert");
   function LBItemFromPt(
      hLB : HWND;
      pt : POINT;
      bAutoScroll : BOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,LBItemFromPt,"LBItemFromPt");
   type UDACCEL_x is record
      nSec : UINT;
      nInc : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,UDACCEL_x);
   for UDACCEL_x use record
      nSec at 0 range 0..31;
      nInc at 0 range 32..63;
   end record;
   for UDACCEL_x'Size use 64;
   for UDACCEL_x'Alignment use 4;
   subtype UDACCEL is UDACCEL_x;
   type LPUDACCEL is access all UDACCEL_x;
   function CreateUpDownControl(
      dwStyle : DWORD;
      x : Interfaces.C.Int;
      y : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      cy_x : Interfaces.C.Int;
      hParent : HWND;
      nID : Interfaces.C.Int;
      hInst : HINSTANCE;
      hBuddy : HWND;
      nUpper : Interfaces.C.Int;
      nLower : Interfaces.C.Int;
      nPos : Interfaces.C.Int
   ) return HWND;
   pragma import (Cpp,CreateUpDownControl,"CreateUpDownControl");
   type NM_UPDOWN_x is record
      hdr : NMHDR;
      iPos : Interfaces.C.Int;
      iDelta : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,NM_UPDOWN_x);
   for NM_UPDOWN_x use record
      hdr at 0 range 0..191;
      iPos at 0 range 192..223;
      iDelta at 0 range 224..255;
   end record;
   for NM_UPDOWN_x'Size use 256;
   for NM_UPDOWN_x'Alignment use 8;
   subtype NMUPDOWN is NM_UPDOWN_x;
   type LPNMUPDOWN is access all NM_UPDOWN_x;
   type PBRANGE is record
      iLow : Interfaces.C.Int;
      iHigh : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,PBRANGE);
   for PBRANGE use record
      iLow at 0 range 0..31;
      iHigh at 0 range 32..63;
   end record;
   for PBRANGE'Size use 64;
   for PBRANGE'Alignment use 4;
   type PPBRANGE is access all PBRANGE;
   type tagLITEM_szID_Array is array(1..48) of WCHAR; -- Auto Generated Dependancy
   type tagLITEM_szUrl_Array is array(1..2084) of WCHAR; -- Auto Generated Dependancy
   type tagLITEM is record
      mask : UINT;
      iLink : Interfaces.C.Int;
      state : UINT;
      stateMask : UINT;
      szID : tagLITEM_szID_Array;
      szUrl : tagLITEM_szUrl_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLITEM);
   for tagLITEM use record
      mask at 0 range 0..31;
      iLink at 0 range 32..63;
      state at 0 range 64..95;
      stateMask at 0 range 96..127;
      szID at 0 range 128..895;
      szUrl at 0 range 896..34239;
   end record;
   for tagLITEM'Size use 34240;
   for tagLITEM'Alignment use 4;
   subtype LITEM is tagLITEM;
   type PLITEM is access all tagLITEM;
   type tagLHITTESTINFO is record
      pt : POINT;
      item : LITEM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLHITTESTINFO);
   for tagLHITTESTINFO use record
      pt at 0 range 0..63;
      item at 0 range 64..34303;
   end record;
   for tagLHITTESTINFO'Size use 34304;
   for tagLHITTESTINFO'Alignment use 4;
   subtype LHITTESTINFO is tagLHITTESTINFO;
   type PLHITTESTINFO is access all tagLHITTESTINFO;
   type tagNMLINK is record
      hdr : NMHDR;
      item : LITEM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMLINK);
   for tagNMLINK use record
      hdr at 0 range 0..191;
      item at 0 range 192..34431;
   end record;
   for tagNMLINK'Size use 34432;
   for tagNMLINK'Alignment use 8;
   subtype NMLINK is tagNMLINK;
   type PNMLINK is access all tagNMLINK;
   type tagLVITEMA is record
      mask : UINT;
      iItem : Interfaces.C.Int;
      iSubItem : Interfaces.C.Int;
      state : UINT;
      stateMask : UINT;
      pszText : LPSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      lParam_x : LPARAM;
      iIndent : Interfaces.C.Int;
      iGroupId : Interfaces.C.Int;
      cColumns : UINT;
      puColumns : PUINT;
      piColFmt : access Interfaces.C.Int;
      iGroup : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVITEMA);
   for tagLVITEMA use record
      mask at 0 range 0..31;
      iItem at 0 range 32..63;
      iSubItem at 0 range 64..95;
      state at 0 range 96..127;
      stateMask at 0 range 128..159;
      pszText at 0 range 192..255;
      cchTextMax at 0 range 256..287;
      iImage at 0 range 288..319;
      lParam_x at 0 range 320..383;
      iIndent at 0 range 384..415;
      iGroupId at 0 range 416..447;
      cColumns at 0 range 448..479;
      puColumns at 0 range 512..575;
      piColFmt at 0 range 576..639;
      iGroup at 0 range 640..671;
   end record;
   for tagLVITEMA'Size use 704;
   for tagLVITEMA'Alignment use 8;
   subtype LVITEMA is tagLVITEMA;
   type LPLVITEMA is access all tagLVITEMA;
   type tagLVITEMW is record
      mask : UINT;
      iItem : Interfaces.C.Int;
      iSubItem : Interfaces.C.Int;
      state : UINT;
      stateMask : UINT;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      lParam_x : LPARAM;
      iIndent : Interfaces.C.Int;
      iGroupId : Interfaces.C.Int;
      cColumns : UINT;
      puColumns : PUINT;
      piColFmt : access Interfaces.C.Int;
      iGroup : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVITEMW);
   for tagLVITEMW use record
      mask at 0 range 0..31;
      iItem at 0 range 32..63;
      iSubItem at 0 range 64..95;
      state at 0 range 96..127;
      stateMask at 0 range 128..159;
      pszText at 0 range 192..255;
      cchTextMax at 0 range 256..287;
      iImage at 0 range 288..319;
      lParam_x at 0 range 320..383;
      iIndent at 0 range 384..415;
      iGroupId at 0 range 416..447;
      cColumns at 0 range 448..479;
      puColumns at 0 range 512..575;
      piColFmt at 0 range 576..639;
      iGroup at 0 range 640..671;
   end record;
   for tagLVITEMW'Size use 704;
   for tagLVITEMW'Alignment use 8;
   subtype LVITEMW is tagLVITEMW;
   type LPLVITEMW is access all tagLVITEMW;
   type tagLVFINDINFOA is record
      flags : UINT;
      psz_x : LPCSTR;
      lParam_x : LPARAM;
      pt : POINT;
      vkDirection : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVFINDINFOA);
   for tagLVFINDINFOA use record
      flags at 0 range 0..31;
      psz_x at 0 range 64..127;
      lParam_x at 0 range 128..191;
      pt at 0 range 192..255;
      vkDirection at 0 range 256..287;
   end record;
   for tagLVFINDINFOA'Size use 320;
   for tagLVFINDINFOA'Alignment use 8;
   subtype LVFINDINFOA is tagLVFINDINFOA;
   type LPFINDINFOA is access all tagLVFINDINFOA;
   type tagLVFINDINFOW is record
      flags : UINT;
      psz_x : LPCWSTR;
      lParam_x : LPARAM;
      pt : POINT;
      vkDirection : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVFINDINFOW);
   for tagLVFINDINFOW use record
      flags at 0 range 0..31;
      psz_x at 0 range 64..127;
      lParam_x at 0 range 128..191;
      pt at 0 range 192..255;
      vkDirection at 0 range 256..287;
   end record;
   for tagLVFINDINFOW'Size use 320;
   for tagLVFINDINFOW'Alignment use 8;
   subtype LVFINDINFOW is tagLVFINDINFOW;
   type LPFINDINFOW is access all tagLVFINDINFOW;
   type tagLVHITTESTINFO is record
      pt : POINT;
      flags : UINT;
      iItem : Interfaces.C.Int;
      iSubItem : Interfaces.C.Int;
      iGroup : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVHITTESTINFO);
   for tagLVHITTESTINFO use record
      pt at 0 range 0..63;
      flags at 0 range 64..95;
      iItem at 0 range 96..127;
      iSubItem at 0 range 128..159;
      iGroup at 0 range 160..191;
   end record;
   for tagLVHITTESTINFO'Size use 192;
   for tagLVHITTESTINFO'Alignment use 4;
   subtype LVHITTESTINFO is tagLVHITTESTINFO;
   type LPLVHITTESTINFO is access all tagLVHITTESTINFO;
   type tagLVCOLUMNA is record
      mask : UINT;
      fmt : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      pszText : LPSTR;
      cchTextMax : Interfaces.C.Int;
      iSubItem : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      iOrder : Interfaces.C.Int;
      cxMin : Interfaces.C.Int;
      cxDefault : Interfaces.C.Int;
      cxIdeal : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVCOLUMNA);
   for tagLVCOLUMNA use record
      mask at 0 range 0..31;
      fmt at 0 range 32..63;
      cx at 0 range 64..95;
      pszText at 0 range 128..191;
      cchTextMax at 0 range 192..223;
      iSubItem at 0 range 224..255;
      iImage at 0 range 256..287;
      iOrder at 0 range 288..319;
      cxMin at 0 range 320..351;
      cxDefault at 0 range 352..383;
      cxIdeal at 0 range 384..415;
   end record;
   for tagLVCOLUMNA'Size use 448;
   for tagLVCOLUMNA'Alignment use 8;
   subtype LVCOLUMNA is tagLVCOLUMNA;
   type LPLVCOLUMNA is access all tagLVCOLUMNA;
   type tagLVCOLUMNW is record
      mask : UINT;
      fmt : Interfaces.C.Int;
      cx : Interfaces.C.Int;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      iSubItem : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      iOrder : Interfaces.C.Int;
      cxMin : Interfaces.C.Int;
      cxDefault : Interfaces.C.Int;
      cxIdeal : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVCOLUMNW);
   for tagLVCOLUMNW use record
      mask at 0 range 0..31;
      fmt at 0 range 32..63;
      cx at 0 range 64..95;
      pszText at 0 range 128..191;
      cchTextMax at 0 range 192..223;
      iSubItem at 0 range 224..255;
      iImage at 0 range 256..287;
      iOrder at 0 range 288..319;
      cxMin at 0 range 320..351;
      cxDefault at 0 range 352..383;
      cxIdeal at 0 range 384..415;
   end record;
   for tagLVCOLUMNW'Size use 448;
   for tagLVCOLUMNW'Alignment use 8;
   subtype LVCOLUMNW is tagLVCOLUMNW;
   type LPLVCOLUMNW is access all tagLVCOLUMNW;
   type PFNLVCOMPARE is access function (p1 : LPARAM ; p2 : LPARAM ; p3 : LPARAM) return int; -- int (LPARAM, LPARAM, LPARAM)
   pragma Convention(C,PFNLVCOMPARE);
   type tagLVBKIMAGEA is record
      ulFlags : ULONG;
      hbm : HBITMAP;
      pszImage : LPSTR;
      cchImageMax : UINT;
      xOffsetPercent : Interfaces.C.Int;
      yOffsetPercent : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVBKIMAGEA);
   for tagLVBKIMAGEA use record
      ulFlags at 0 range 0..31;
      hbm at 0 range 64..127;
      pszImage at 0 range 128..191;
      cchImageMax at 0 range 192..223;
      xOffsetPercent at 0 range 224..255;
      yOffsetPercent at 0 range 256..287;
   end record;
   for tagLVBKIMAGEA'Size use 320;
   for tagLVBKIMAGEA'Alignment use 8;
   subtype LVBKIMAGEA is tagLVBKIMAGEA;
   type LPLVBKIMAGEA is access all tagLVBKIMAGEA;
   type tagLVBKIMAGEW is record
      ulFlags : ULONG;
      hbm : HBITMAP;
      pszImage : LPWSTR;
      cchImageMax : UINT;
      xOffsetPercent : Interfaces.C.Int;
      yOffsetPercent : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVBKIMAGEW);
   for tagLVBKIMAGEW use record
      ulFlags at 0 range 0..31;
      hbm at 0 range 64..127;
      pszImage at 0 range 128..191;
      cchImageMax at 0 range 192..223;
      xOffsetPercent at 0 range 224..255;
      yOffsetPercent at 0 range 256..287;
   end record;
   for tagLVBKIMAGEW'Size use 320;
   for tagLVBKIMAGEW'Alignment use 8;
   subtype LVBKIMAGEW is tagLVBKIMAGEW;
   type LPLVBKIMAGEW is access all tagLVBKIMAGEW;
   type tagLVGROUP is record
      cbSize : UINT;
      mask : UINT;
      pszHeader : LPWSTR;
      cchHeader : Interfaces.C.Int;
      pszFooter : LPWSTR;
      cchFooter : Interfaces.C.Int;
      iGroupId : Interfaces.C.Int;
      stateMask : UINT;
      state : UINT;
      uAlign : UINT;
      pszSubtitle : LPWSTR;
      cchSubtitle : UINT;
      pszTask : LPWSTR;
      cchTask : UINT;
      pszDescriptionTop : LPWSTR;
      cchDescriptionTop : UINT;
      pszDescriptionBottom : LPWSTR;
      cchDescriptionBottom : UINT;
      iTitleImage : Interfaces.C.Int;
      iExtendedImage : Interfaces.C.Int;
      iFirstItem : Interfaces.C.Int;
      cItems : UINT;
      pszSubsetTitle : LPWSTR;
      cchSubsetTitle : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVGROUP);
   for tagLVGROUP use record
      cbSize at 0 range 0..31;
      mask at 0 range 32..63;
      pszHeader at 0 range 64..127;
      cchHeader at 0 range 128..159;
      pszFooter at 0 range 192..255;
      cchFooter at 0 range 256..287;
      iGroupId at 0 range 288..319;
      stateMask at 0 range 320..351;
      state at 0 range 352..383;
      uAlign at 0 range 384..415;
      pszSubtitle at 0 range 448..511;
      cchSubtitle at 0 range 512..543;
      pszTask at 0 range 576..639;
      cchTask at 0 range 640..671;
      pszDescriptionTop at 0 range 704..767;
      cchDescriptionTop at 0 range 768..799;
      pszDescriptionBottom at 0 range 832..895;
      cchDescriptionBottom at 0 range 896..927;
      iTitleImage at 0 range 928..959;
      iExtendedImage at 0 range 960..991;
      iFirstItem at 0 range 992..1023;
      cItems at 0 range 1024..1055;
      pszSubsetTitle at 0 range 1088..1151;
      cchSubsetTitle at 0 range 1152..1183;
   end record;
   for tagLVGROUP'Size use 1216;
   for tagLVGROUP'Alignment use 8;
   subtype LVGROUP is tagLVGROUP;
   type PLVGROUP is access all tagLVGROUP;
   type tagLVGROUPMETRICS is record
      cbSize : UINT;
      mask : UINT;
      Left : UINT;
      Top : UINT;
      Right : UINT;
      Bottom : UINT;
      crLeft : COLORREF;
      crTop : COLORREF;
      crRight : COLORREF;
      crBottom : COLORREF;
      crHeader : COLORREF;
      crFooter : COLORREF;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVGROUPMETRICS);
   for tagLVGROUPMETRICS use record
      cbSize at 0 range 0..31;
      mask at 0 range 32..63;
      Left at 0 range 64..95;
      Top at 0 range 96..127;
      Right at 0 range 128..159;
      Bottom at 0 range 160..191;
      crLeft at 0 range 192..223;
      crTop at 0 range 224..255;
      crRight at 0 range 256..287;
      crBottom at 0 range 288..319;
      crHeader at 0 range 320..351;
      crFooter at 0 range 352..383;
   end record;
   for tagLVGROUPMETRICS'Size use 384;
   for tagLVGROUPMETRICS'Alignment use 4;
   subtype LVGROUPMETRICS is tagLVGROUPMETRICS;
   type PLVGROUPMETRICS is access all tagLVGROUPMETRICS;
   type PFNLVGROUPCOMPARE is access function (p1 : int ; p2 : int ; p3 : access void) return int; -- int (int, int, void *)
   pragma Convention(C,PFNLVGROUPCOMPARE);
   type tagLVINSERTGROUPSORTED is record
      pfnGroupCompare : PFNLVGROUPCOMPARE;
      pvData : access Void;
      lvGroup_x : LVGROUP;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVINSERTGROUPSORTED);
   for tagLVINSERTGROUPSORTED use record
      pfnGroupCompare at 0 range 0..63;
      pvData at 0 range 64..127;
      lvGroup_x at 0 range 128..1343;
   end record;
   for tagLVINSERTGROUPSORTED'Size use 1344;
   for tagLVINSERTGROUPSORTED'Alignment use 8;
   subtype LVINSERTGROUPSORTED is tagLVINSERTGROUPSORTED;
   type PLVINSERTGROUPSORTED is access all tagLVINSERTGROUPSORTED;
   type tagLVTILEVIEWINFO is record
      cbSize : UINT;
      dwMask : DWORD;
      dwFlags : DWORD;
      sizeTile : SIZE;
      cLines : Interfaces.C.Int;
      rcLabelMargin : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVTILEVIEWINFO);
   for tagLVTILEVIEWINFO use record
      cbSize at 0 range 0..31;
      dwMask at 0 range 32..63;
      dwFlags at 0 range 64..95;
      sizeTile at 0 range 96..159;
      cLines at 0 range 160..191;
      rcLabelMargin at 0 range 192..319;
   end record;
   for tagLVTILEVIEWINFO'Size use 320;
   for tagLVTILEVIEWINFO'Alignment use 4;
   subtype LVTILEVIEWINFO is tagLVTILEVIEWINFO;
   type PLVTILEVIEWINFO is access all tagLVTILEVIEWINFO;
   type tagLVTILEINFO is record
      cbSize : UINT;
      iItem : Interfaces.C.Int;
      cColumns : UINT;
      puColumns : PUINT;
      piColFmt : access Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVTILEINFO);
   for tagLVTILEINFO use record
      cbSize at 0 range 0..31;
      iItem at 0 range 32..63;
      cColumns at 0 range 64..95;
      puColumns at 0 range 128..191;
      piColFmt at 0 range 192..255;
   end record;
   for tagLVTILEINFO'Size use 256;
   for tagLVTILEINFO'Alignment use 8;
   subtype LVTILEINFO is tagLVTILEINFO;
   type PLVTILEINFO is access all tagLVTILEINFO;
   type LVINSERTMARK is record
      cbSize : UINT;
      dwFlags : DWORD;
      iItem : Interfaces.C.Int;
      dwReserved : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,LVINSERTMARK);
   for LVINSERTMARK use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      iItem at 0 range 64..95;
      dwReserved at 0 range 96..127;
   end record;
   for LVINSERTMARK'Size use 128;
   for LVINSERTMARK'Alignment use 4;
   type LPLVINSERTMARK is access all LVINSERTMARK;
   type tagLVSETINFOTIP is record
      cbSize : UINT;
      dwFlags : DWORD;
      pszText : LPWSTR;
      iItem : Interfaces.C.Int;
      iSubItem : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVSETINFOTIP);
   for tagLVSETINFOTIP use record
      cbSize at 0 range 0..31;
      dwFlags at 0 range 32..63;
      pszText at 0 range 64..127;
      iItem at 0 range 128..159;
      iSubItem at 0 range 160..191;
   end record;
   for tagLVSETINFOTIP'Size use 192;
   for tagLVSETINFOTIP'Alignment use 8;
   subtype LVSETINFOTIP is tagLVSETINFOTIP;
   type PLVSETINFOTIP is access all tagLVSETINFOTIP;
   type tagLVFOOTERINFO is record
      mask : UINT;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      cItems : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVFOOTERINFO);
   for tagLVFOOTERINFO use record
      mask at 0 range 0..31;
      pszText at 0 range 64..127;
      cchTextMax at 0 range 128..159;
      cItems at 0 range 160..191;
   end record;
   for tagLVFOOTERINFO'Size use 192;
   for tagLVFOOTERINFO'Alignment use 8;
   subtype LVFOOTERINFO is tagLVFOOTERINFO;
   type LPLVFOOTERINFO is access all tagLVFOOTERINFO;
   type tagLVFOOTERITEM is record
      mask : UINT;
      iItem : Interfaces.C.Int;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      state : UINT;
      stateMask : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVFOOTERITEM);
   for tagLVFOOTERITEM use record
      mask at 0 range 0..31;
      iItem at 0 range 32..63;
      pszText at 0 range 64..127;
      cchTextMax at 0 range 128..159;
      state at 0 range 160..191;
      stateMask at 0 range 192..223;
   end record;
   for tagLVFOOTERITEM'Size use 256;
   for tagLVFOOTERITEM'Alignment use 8;
   subtype LVFOOTERITEM is tagLVFOOTERITEM;
   type LPLVFOOTERITEM is access all tagLVFOOTERITEM;
   type tagLVITEMINDEX is record
      iItem : Interfaces.C.Int;
      iGroup : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVITEMINDEX);
   for tagLVITEMINDEX use record
      iItem at 0 range 0..31;
      iGroup at 0 range 32..63;
   end record;
   for tagLVITEMINDEX'Size use 64;
   for tagLVITEMINDEX'Alignment use 4;
   subtype LVITEMINDEX is tagLVITEMINDEX;
   type PLVITEMINDEX is access all tagLVITEMINDEX;
   type tagNMLISTVIEW is record
      hdr : NMHDR;
      iItem : Interfaces.C.Int;
      iSubItem : Interfaces.C.Int;
      uNewState : UINT;
      uOldState : UINT;
      uChanged : UINT;
      ptAction : POINT;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMLISTVIEW);
   for tagNMLISTVIEW use record
      hdr at 0 range 0..191;
      iItem at 0 range 192..223;
      iSubItem at 0 range 224..255;
      uNewState at 0 range 256..287;
      uOldState at 0 range 288..319;
      uChanged at 0 range 320..351;
      ptAction at 0 range 352..415;
      lParam_x at 0 range 448..511;
   end record;
   for tagNMLISTVIEW'Size use 512;
   for tagNMLISTVIEW'Alignment use 8;
   subtype NMLISTVIEW is tagNMLISTVIEW;
   type LPNMLISTVIEW is access all tagNMLISTVIEW;
   type tagNMITEMACTIVATE is record
      hdr : NMHDR;
      iItem : Interfaces.C.Int;
      iSubItem : Interfaces.C.Int;
      uNewState : UINT;
      uOldState : UINT;
      uChanged : UINT;
      ptAction : POINT;
      lParam_x : LPARAM;
      uKeyFlags : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMITEMACTIVATE);
   for tagNMITEMACTIVATE use record
      hdr at 0 range 0..191;
      iItem at 0 range 192..223;
      iSubItem at 0 range 224..255;
      uNewState at 0 range 256..287;
      uOldState at 0 range 288..319;
      uChanged at 0 range 320..351;
      ptAction at 0 range 352..415;
      lParam_x at 0 range 448..511;
      uKeyFlags at 0 range 512..543;
   end record;
   for tagNMITEMACTIVATE'Size use 576;
   for tagNMITEMACTIVATE'Alignment use 8;
   subtype NMITEMACTIVATE is tagNMITEMACTIVATE;
   type LPNMITEMACTIVATE is access all tagNMITEMACTIVATE;
   type tagNMLVCUSTOMDRAW is record
      nmcd : NMCUSTOMDRAW;
      clrText : COLORREF;
      clrTextBk : COLORREF;
      iSubItem : Interfaces.C.Int;
      dwItemType : DWORD;
      clrFace : COLORREF;
      iIconEffect : Interfaces.C.Int;
      iIconPhase : Interfaces.C.Int;
      iPartId : Interfaces.C.Int;
      iStateId : Interfaces.C.Int;
      rcText : RECT;
      uAlign : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMLVCUSTOMDRAW);
   for tagNMLVCUSTOMDRAW use record
      nmcd at 0 range 0..639;
      clrText at 0 range 640..671;
      clrTextBk at 0 range 672..703;
      iSubItem at 0 range 704..735;
      dwItemType at 0 range 736..767;
      clrFace at 0 range 768..799;
      iIconEffect at 0 range 800..831;
      iIconPhase at 0 range 832..863;
      iPartId at 0 range 864..895;
      iStateId at 0 range 896..927;
      rcText at 0 range 928..1055;
      uAlign at 0 range 1056..1087;
   end record;
   for tagNMLVCUSTOMDRAW'Size use 1088;
   for tagNMLVCUSTOMDRAW'Alignment use 8;
   subtype NMLVCUSTOMDRAW is tagNMLVCUSTOMDRAW;
   type LPNMLVCUSTOMDRAW is access all tagNMLVCUSTOMDRAW;
   type tagNMLVCACHEHINT is record
      hdr : NMHDR;
      iFrom : Interfaces.C.Int;
      iTo : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMLVCACHEHINT);
   for tagNMLVCACHEHINT use record
      hdr at 0 range 0..191;
      iFrom at 0 range 192..223;
      iTo at 0 range 224..255;
   end record;
   for tagNMLVCACHEHINT'Size use 256;
   for tagNMLVCACHEHINT'Alignment use 8;
   subtype NMLVCACHEHINT is tagNMLVCACHEHINT;
   type LPNMLVCACHEHINT is access all tagNMLVCACHEHINT;
   type tagNMLVFINDITEMA is record
      hdr : NMHDR;
      iStart : Interfaces.C.Int;
      lvfi : LVFINDINFOA;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMLVFINDITEMA);
   for tagNMLVFINDITEMA use record
      hdr at 0 range 0..191;
      iStart at 0 range 192..223;
      lvfi at 0 range 256..575;
   end record;
   for tagNMLVFINDITEMA'Size use 576;
   for tagNMLVFINDITEMA'Alignment use 8;
   subtype NMLVFINDITEMA is tagNMLVFINDITEMA;
   type LPNMLVFINDITEMA is access all tagNMLVFINDITEMA;
   type tagNMLVFINDITEMW is record
      hdr : NMHDR;
      iStart : Interfaces.C.Int;
      lvfi : LVFINDINFOW;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMLVFINDITEMW);
   for tagNMLVFINDITEMW use record
      hdr at 0 range 0..191;
      iStart at 0 range 192..223;
      lvfi at 0 range 256..575;
   end record;
   for tagNMLVFINDITEMW'Size use 576;
   for tagNMLVFINDITEMW'Alignment use 8;
   subtype NMLVFINDITEMW is tagNMLVFINDITEMW;
   type LPNMLVFINDITEMW is access all tagNMLVFINDITEMW;
   type tagNMLVODSTATECHANGE is record
      hdr : NMHDR;
      iFrom : Interfaces.C.Int;
      iTo : Interfaces.C.Int;
      uNewState : UINT;
      uOldState : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMLVODSTATECHANGE);
   for tagNMLVODSTATECHANGE use record
      hdr at 0 range 0..191;
      iFrom at 0 range 192..223;
      iTo at 0 range 224..255;
      uNewState at 0 range 256..287;
      uOldState at 0 range 288..319;
   end record;
   for tagNMLVODSTATECHANGE'Size use 320;
   for tagNMLVODSTATECHANGE'Alignment use 8;
   subtype NMLVODSTATECHANGE is tagNMLVODSTATECHANGE;
   type LPNMLVODSTATECHANGE is access all tagNMLVODSTATECHANGE;
   type tagLVDISPINFO is record
      hdr : NMHDR;
      item : LVITEMA;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVDISPINFO);
   for tagLVDISPINFO use record
      hdr at 0 range 0..191;
      item at 0 range 192..895;
   end record;
   for tagLVDISPINFO'Size use 896;
   for tagLVDISPINFO'Alignment use 8;
   subtype NMLVDISPINFOA is tagLVDISPINFO;
   type LPNMLVDISPINFOA is access all tagLVDISPINFO;
   type tagLVDISPINFOW is record
      hdr : NMHDR;
      item : LVITEMW;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVDISPINFOW);
   for tagLVDISPINFOW use record
      hdr at 0 range 0..191;
      item at 0 range 192..895;
   end record;
   for tagLVDISPINFOW'Size use 896;
   for tagLVDISPINFOW'Alignment use 8;
   subtype NMLVDISPINFOW is tagLVDISPINFOW;
   type LPNMLVDISPINFOW is access all tagLVDISPINFOW;
   type tagLVKEYDOWN is record
      hdr : NMHDR;
      wVKey : WORD;
      flags : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLVKEYDOWN);
   for tagLVKEYDOWN use record
      hdr at 0 range 0..191;
      wVKey at 0 range 192..207;
      flags at 0 range 208..239;
   end record;
   for tagLVKEYDOWN'Size use 240;
   for tagLVKEYDOWN'Alignment use 1;
   subtype NMLVKEYDOWN is tagLVKEYDOWN;
   type LPNMLVKEYDOWN is access all tagLVKEYDOWN;
   type tagNMLVLINK is record
      hdr : NMHDR;
      link : LITEM;
      iItem : Interfaces.C.Int;
      iSubItem : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMLVLINK);
   for tagNMLVLINK use record
      hdr at 0 range 0..191;
      link at 0 range 192..34431;
      iItem at 0 range 34432..34463;
      iSubItem at 0 range 34464..34495;
   end record;
   for tagNMLVLINK'Size use 34496;
   for tagNMLVLINK'Alignment use 8;
   subtype NMLVLINK is tagNMLVLINK;
   type PNMLVLINK is access all tagNMLVLINK;
   type tagNMLVGETINFOTIPA is record
      hdr : NMHDR;
      dwFlags : DWORD;
      pszText : LPSTR;
      cchTextMax : Interfaces.C.Int;
      iItem : Interfaces.C.Int;
      iSubItem : Interfaces.C.Int;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMLVGETINFOTIPA);
   for tagNMLVGETINFOTIPA use record
      hdr at 0 range 0..191;
      dwFlags at 0 range 192..223;
      pszText at 0 range 256..319;
      cchTextMax at 0 range 320..351;
      iItem at 0 range 352..383;
      iSubItem at 0 range 384..415;
      lParam_x at 0 range 448..511;
   end record;
   for tagNMLVGETINFOTIPA'Size use 512;
   for tagNMLVGETINFOTIPA'Alignment use 8;
   subtype NMLVGETINFOTIPA is tagNMLVGETINFOTIPA;
   type LPNMLVGETINFOTIPA is access all tagNMLVGETINFOTIPA;
   type tagNMLVGETINFOTIPW is record
      hdr : NMHDR;
      dwFlags : DWORD;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      iItem : Interfaces.C.Int;
      iSubItem : Interfaces.C.Int;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMLVGETINFOTIPW);
   for tagNMLVGETINFOTIPW use record
      hdr at 0 range 0..191;
      dwFlags at 0 range 192..223;
      pszText at 0 range 256..319;
      cchTextMax at 0 range 320..351;
      iItem at 0 range 352..383;
      iSubItem at 0 range 384..415;
      lParam_x at 0 range 448..511;
   end record;
   for tagNMLVGETINFOTIPW'Size use 512;
   for tagNMLVGETINFOTIPW'Alignment use 8;
   subtype NMLVGETINFOTIPW is tagNMLVGETINFOTIPW;
   type LPNMLVGETINFOTIPW is access all tagNMLVGETINFOTIPW;
   type tagNMLVSCROLL is record
      hdr : NMHDR;
      dx : Interfaces.C.Int;
      dy : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMLVSCROLL);
   for tagNMLVSCROLL use record
      hdr at 0 range 0..191;
      dx at 0 range 192..223;
      dy at 0 range 224..255;
   end record;
   for tagNMLVSCROLL'Size use 256;
   for tagNMLVSCROLL'Alignment use 8;
   subtype NMLVSCROLL is tagNMLVSCROLL;
   type LPNMLVSCROLL is access all tagNMLVSCROLL;
   type tagNMLVEMPTYMARKUP_szMarkup_Array is array(1..2084) of WCHAR; -- Auto Generated Dependancy
   type tagNMLVEMPTYMARKUP is record
      hdr : NMHDR;
      dwFlags : DWORD;
      szMarkup : tagNMLVEMPTYMARKUP_szMarkup_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMLVEMPTYMARKUP);
   for tagNMLVEMPTYMARKUP use record
      hdr at 0 range 0..191;
      dwFlags at 0 range 192..223;
      szMarkup at 0 range 224..33567;
   end record;
   for tagNMLVEMPTYMARKUP'Size use 33600;
   for tagNMLVEMPTYMARKUP'Alignment use 8;
   subtype NMLVEMPTYMARKUP is tagNMLVEMPTYMARKUP;
   type TREEITEM_x;
   type HTREEITEM is access all TREEITEM_x;
   type tagNMTVSTATEIMAGECHANGING is record
      hdr : NMHDR;
      hti : HTREEITEM;
      iOldStateImageIndex : Interfaces.C.Int;
      iNewStateImageIndex : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTVSTATEIMAGECHANGING);
   for tagNMTVSTATEIMAGECHANGING use record
      hdr at 0 range 0..191;
      hti at 0 range 192..255;
      iOldStateImageIndex at 0 range 256..287;
      iNewStateImageIndex at 0 range 288..319;
   end record;
   for tagNMTVSTATEIMAGECHANGING'Size use 320;
   for tagNMTVSTATEIMAGECHANGING'Alignment use 8;
   subtype NMTVSTATEIMAGECHANGING is tagNMTVSTATEIMAGECHANGING;
   type LPNMTVSTATEIMAGECHANGING is access all tagNMTVSTATEIMAGECHANGING;
   type tagTVITEMA is record
      mask : UINT;
      hItem : HTREEITEM;
      state : UINT;
      stateMask : UINT;
      pszText : LPSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      iSelectedImage : Interfaces.C.Int;
      cChildren : Interfaces.C.Int;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVITEMA);
   for tagTVITEMA use record
      mask at 0 range 0..31;
      hItem at 0 range 64..127;
      state at 0 range 128..159;
      stateMask at 0 range 160..191;
      pszText at 0 range 192..255;
      cchTextMax at 0 range 256..287;
      iImage at 0 range 288..319;
      iSelectedImage at 0 range 320..351;
      cChildren at 0 range 352..383;
      lParam_x at 0 range 384..447;
   end record;
   for tagTVITEMA'Size use 448;
   for tagTVITEMA'Alignment use 8;
   subtype TVITEMA is tagTVITEMA;
   type LPTVITEMA is access all tagTVITEMA;
   type tagTVITEMW is record
      mask : UINT;
      hItem : HTREEITEM;
      state : UINT;
      stateMask : UINT;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      iSelectedImage : Interfaces.C.Int;
      cChildren : Interfaces.C.Int;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVITEMW);
   for tagTVITEMW use record
      mask at 0 range 0..31;
      hItem at 0 range 64..127;
      state at 0 range 128..159;
      stateMask at 0 range 160..191;
      pszText at 0 range 192..255;
      cchTextMax at 0 range 256..287;
      iImage at 0 range 288..319;
      iSelectedImage at 0 range 320..351;
      cChildren at 0 range 352..383;
      lParam_x at 0 range 384..447;
   end record;
   for tagTVITEMW'Size use 448;
   for tagTVITEMW'Alignment use 8;
   subtype TVITEMW is tagTVITEMW;
   type LPTVITEMW is access all tagTVITEMW;
   type tagTVITEMEXA is record
      mask : UINT;
      hItem : HTREEITEM;
      state : UINT;
      stateMask : UINT;
      pszText : LPSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      iSelectedImage : Interfaces.C.Int;
      cChildren : Interfaces.C.Int;
      lParam_x : LPARAM;
      iIntegral : Interfaces.C.Int;
      uStateEx : UINT;
      hwnd_x : HWND;
      iExpandedImage : Interfaces.C.Int;
      iReserved : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVITEMEXA);
   for tagTVITEMEXA use record
      mask at 0 range 0..31;
      hItem at 0 range 64..127;
      state at 0 range 128..159;
      stateMask at 0 range 160..191;
      pszText at 0 range 192..255;
      cchTextMax at 0 range 256..287;
      iImage at 0 range 288..319;
      iSelectedImage at 0 range 320..351;
      cChildren at 0 range 352..383;
      lParam_x at 0 range 384..447;
      iIntegral at 0 range 448..479;
      uStateEx at 0 range 480..511;
      hwnd_x at 0 range 512..575;
      iExpandedImage at 0 range 576..607;
      iReserved at 0 range 608..639;
   end record;
   for tagTVITEMEXA'Size use 640;
   for tagTVITEMEXA'Alignment use 8;
   subtype TVITEMEXA is tagTVITEMEXA;
   type LPTVITEMEXA is access all tagTVITEMEXA;
   type tagTVITEMEXW is record
      mask : UINT;
      hItem : HTREEITEM;
      state : UINT;
      stateMask : UINT;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      iSelectedImage : Interfaces.C.Int;
      cChildren : Interfaces.C.Int;
      lParam_x : LPARAM;
      iIntegral : Interfaces.C.Int;
      uStateEx : UINT;
      hwnd_x : HWND;
      iExpandedImage : Interfaces.C.Int;
      iReserved : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVITEMEXW);
   for tagTVITEMEXW use record
      mask at 0 range 0..31;
      hItem at 0 range 64..127;
      state at 0 range 128..159;
      stateMask at 0 range 160..191;
      pszText at 0 range 192..255;
      cchTextMax at 0 range 256..287;
      iImage at 0 range 288..319;
      iSelectedImage at 0 range 320..351;
      cChildren at 0 range 352..383;
      lParam_x at 0 range 384..447;
      iIntegral at 0 range 448..479;
      uStateEx at 0 range 480..511;
      hwnd_x at 0 range 512..575;
      iExpandedImage at 0 range 576..607;
      iReserved at 0 range 608..639;
   end record;
   for tagTVITEMEXW'Size use 640;
   for tagTVITEMEXW'Alignment use 8;
   subtype TVITEMEXW is tagTVITEMEXW;
   type LPTVITEMEXW is access all tagTVITEMEXW;
   subtype TVITEMEX is TVITEMEXA;
   subtype LPTVITEMEX is LPTVITEMEXA;
   type Anonymous_Record_292 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            itemex : TVITEMEXA;
         when others => 
            item : TVITEMA;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_292);
   pragma Unchecked_Union (Anonymous_Record_292);
   for Anonymous_Record_292'Size use 640;
   for Anonymous_Record_292'Alignment use 8;
   type tagTVINSERTSTRUCTA is record
      hParent : HTREEITEM;
      hInsertAfter : HTREEITEM;
      field_1 : Anonymous_Record_292;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVINSERTSTRUCTA);
   for tagTVINSERTSTRUCTA use record
      hParent at 0 range 0..63;
      hInsertAfter at 0 range 64..127;
      field_1 at 0 range 128..767;
   end record;
   for tagTVINSERTSTRUCTA'Size use 768;
   for tagTVINSERTSTRUCTA'Alignment use 8;
   subtype TVINSERTSTRUCTA is tagTVINSERTSTRUCTA;
   type LPTVINSERTSTRUCTA is access all tagTVINSERTSTRUCTA;
   type Anonymous_Record_293 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            itemex : TVITEMEXW;
         when others => 
            item : TVITEMW;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_293);
   pragma Unchecked_Union (Anonymous_Record_293);
   for Anonymous_Record_293'Size use 640;
   for Anonymous_Record_293'Alignment use 8;
   type tagTVINSERTSTRUCTW is record
      hParent : HTREEITEM;
      hInsertAfter : HTREEITEM;
      field_1 : Anonymous_Record_293;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVINSERTSTRUCTW);
   for tagTVINSERTSTRUCTW use record
      hParent at 0 range 0..63;
      hInsertAfter at 0 range 64..127;
      field_1 at 0 range 128..767;
   end record;
   for tagTVINSERTSTRUCTW'Size use 768;
   for tagTVINSERTSTRUCTW'Alignment use 8;
   subtype TVINSERTSTRUCTW is tagTVINSERTSTRUCTW;
   type LPTVINSERTSTRUCTW is access all tagTVINSERTSTRUCTW;
   type tagTVHITTESTINFO is record
      pt : POINT;
      flags : UINT;
      hItem : HTREEITEM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVHITTESTINFO);
   for tagTVHITTESTINFO use record
      pt at 0 range 0..63;
      flags at 0 range 64..95;
      hItem at 0 range 128..191;
   end record;
   for tagTVHITTESTINFO'Size use 192;
   for tagTVHITTESTINFO'Alignment use 8;
   subtype TVHITTESTINFO is tagTVHITTESTINFO;
   type LPTVHITTESTINFO is access all tagTVHITTESTINFO;
   type TVITEMPART_x is (
      TVGIPR_BUTTON
   );
   for TVITEMPART_x use (
      TVGIPR_BUTTON => 1
   );
   for TVITEMPART_x'Size use 32;
   subtype TVITEMPART is TVITEMPART_x;
   type tagTVGETITEMPARTRECTINFO is record
      hti : HTREEITEM;
      prc : access RECT;
      partID : TVITEMPART;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVGETITEMPARTRECTINFO);
   for tagTVGETITEMPARTRECTINFO use record
      hti at 0 range 0..63;
      prc at 0 range 64..127;
      partID at 0 range 128..159;
   end record;
   for tagTVGETITEMPARTRECTINFO'Size use 192;
   for tagTVGETITEMPARTRECTINFO'Alignment use 8;
   subtype TVGETITEMPARTRECTINFO is tagTVGETITEMPARTRECTINFO;
   type PFNTVCOMPARE is access function (p1 : LPARAM ; p2 : LPARAM ; p3 : LPARAM) return int; -- int (LPARAM, LPARAM, LPARAM)
   pragma Convention(C,PFNTVCOMPARE);
   type tagTVSORTCB is record
      hParent : HTREEITEM;
      lpfnCompare : PFNTVCOMPARE;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVSORTCB);
   for tagTVSORTCB use record
      hParent at 0 range 0..63;
      lpfnCompare at 0 range 64..127;
      lParam_x at 0 range 128..191;
   end record;
   for tagTVSORTCB'Size use 192;
   for tagTVSORTCB'Alignment use 8;
   subtype TVSORTCB is tagTVSORTCB;
   type LPTVSORTCB is access all tagTVSORTCB;
   type tagNMTREEVIEWA is record
      hdr : NMHDR;
      action : UINT;
      itemOld : TVITEMA;
      itemNew : TVITEMA;
      ptDrag : POINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTREEVIEWA);
   for tagNMTREEVIEWA use record
      hdr at 0 range 0..191;
      action at 0 range 192..223;
      itemOld at 0 range 256..703;
      itemNew at 0 range 704..1151;
      ptDrag at 0 range 1152..1215;
   end record;
   for tagNMTREEVIEWA'Size use 1216;
   for tagNMTREEVIEWA'Alignment use 8;
   subtype NMTREEVIEWA is tagNMTREEVIEWA;
   type LPNMTREEVIEWA is access all tagNMTREEVIEWA;
   type tagNMTREEVIEWW is record
      hdr : NMHDR;
      action : UINT;
      itemOld : TVITEMW;
      itemNew : TVITEMW;
      ptDrag : POINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTREEVIEWW);
   for tagNMTREEVIEWW use record
      hdr at 0 range 0..191;
      action at 0 range 192..223;
      itemOld at 0 range 256..703;
      itemNew at 0 range 704..1151;
      ptDrag at 0 range 1152..1215;
   end record;
   for tagNMTREEVIEWW'Size use 1216;
   for tagNMTREEVIEWW'Alignment use 8;
   subtype NMTREEVIEWW is tagNMTREEVIEWW;
   type LPNMTREEVIEWW is access all tagNMTREEVIEWW;
   type tagTVDISPINFOA is record
      hdr : NMHDR;
      item : TVITEMA;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVDISPINFOA);
   for tagTVDISPINFOA use record
      hdr at 0 range 0..191;
      item at 0 range 192..639;
   end record;
   for tagTVDISPINFOA'Size use 640;
   for tagTVDISPINFOA'Alignment use 8;
   subtype NMTVDISPINFOA is tagTVDISPINFOA;
   type LPNMTVDISPINFOA is access all tagTVDISPINFOA;
   type tagTVDISPINFOW is record
      hdr : NMHDR;
      item : TVITEMW;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVDISPINFOW);
   for tagTVDISPINFOW use record
      hdr at 0 range 0..191;
      item at 0 range 192..639;
   end record;
   for tagTVDISPINFOW'Size use 640;
   for tagTVDISPINFOW'Alignment use 8;
   subtype NMTVDISPINFOW is tagTVDISPINFOW;
   type LPNMTVDISPINFOW is access all tagTVDISPINFOW;
   type tagTVDISPINFOEXA is record
      hdr : NMHDR;
      item : TVITEMEXA;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVDISPINFOEXA);
   for tagTVDISPINFOEXA use record
      hdr at 0 range 0..191;
      item at 0 range 192..831;
   end record;
   for tagTVDISPINFOEXA'Size use 832;
   for tagTVDISPINFOEXA'Alignment use 8;
   subtype NMTVDISPINFOEXA is tagTVDISPINFOEXA;
   type LPNMTVDISPINFOEXA is access all tagTVDISPINFOEXA;
   type tagTVDISPINFOEXW is record
      hdr : NMHDR;
      item : TVITEMEXW;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVDISPINFOEXW);
   for tagTVDISPINFOEXW use record
      hdr at 0 range 0..191;
      item at 0 range 192..831;
   end record;
   for tagTVDISPINFOEXW'Size use 832;
   for tagTVDISPINFOEXW'Alignment use 8;
   subtype NMTVDISPINFOEXW is tagTVDISPINFOEXW;
   type LPNMTVDISPINFOEXW is access all tagTVDISPINFOEXW;
   type tagTVKEYDOWN is record
      hdr : NMHDR;
      wVKey : WORD;
      flags : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVKEYDOWN);
   for tagTVKEYDOWN use record
      hdr at 0 range 0..191;
      wVKey at 0 range 192..207;
      flags at 0 range 208..239;
   end record;
   for tagTVKEYDOWN'Size use 240;
   for tagTVKEYDOWN'Alignment use 1;
   subtype NMTVKEYDOWN is tagTVKEYDOWN;
   type LPNMTVKEYDOWN is access all tagTVKEYDOWN;
   type tagNMTVCUSTOMDRAW is record
      nmcd : NMCUSTOMDRAW;
      clrText : COLORREF;
      clrTextBk : COLORREF;
      iLevel : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTVCUSTOMDRAW);
   for tagNMTVCUSTOMDRAW use record
      nmcd at 0 range 0..639;
      clrText at 0 range 640..671;
      clrTextBk at 0 range 672..703;
      iLevel at 0 range 704..735;
   end record;
   for tagNMTVCUSTOMDRAW'Size use 768;
   for tagNMTVCUSTOMDRAW'Alignment use 8;
   subtype NMTVCUSTOMDRAW is tagNMTVCUSTOMDRAW;
   type LPNMTVCUSTOMDRAW is access all tagNMTVCUSTOMDRAW;
   type tagNMTVGETINFOTIPA is record
      hdr : NMHDR;
      pszText : LPSTR;
      cchTextMax : Interfaces.C.Int;
      hItem : HTREEITEM;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTVGETINFOTIPA);
   for tagNMTVGETINFOTIPA use record
      hdr at 0 range 0..191;
      pszText at 0 range 192..255;
      cchTextMax at 0 range 256..287;
      hItem at 0 range 320..383;
      lParam_x at 0 range 384..447;
   end record;
   for tagNMTVGETINFOTIPA'Size use 448;
   for tagNMTVGETINFOTIPA'Alignment use 8;
   subtype NMTVGETINFOTIPA is tagNMTVGETINFOTIPA;
   type LPNMTVGETINFOTIPA is access all tagNMTVGETINFOTIPA;
   type tagNMTVGETINFOTIPW is record
      hdr : NMHDR;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      hItem : HTREEITEM;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTVGETINFOTIPW);
   for tagNMTVGETINFOTIPW use record
      hdr at 0 range 0..191;
      pszText at 0 range 192..255;
      cchTextMax at 0 range 256..287;
      hItem at 0 range 320..383;
      lParam_x at 0 range 384..447;
   end record;
   for tagNMTVGETINFOTIPW'Size use 448;
   for tagNMTVGETINFOTIPW'Alignment use 8;
   subtype NMTVGETINFOTIPW is tagNMTVGETINFOTIPW;
   type LPNMTVGETINFOTIPW is access all tagNMTVGETINFOTIPW;
   type tagTVITEMCHANGE is record
      hdr : NMHDR;
      uChanged : UINT;
      hItem : HTREEITEM;
      uStateNew : UINT;
      uStateOld : UINT;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTVITEMCHANGE);
   for tagTVITEMCHANGE use record
      hdr at 0 range 0..191;
      uChanged at 0 range 192..223;
      hItem at 0 range 256..319;
      uStateNew at 0 range 320..351;
      uStateOld at 0 range 352..383;
      lParam_x at 0 range 384..447;
   end record;
   for tagTVITEMCHANGE'Size use 448;
   for tagTVITEMCHANGE'Alignment use 8;
   subtype NMTVITEMCHANGE is tagTVITEMCHANGE;
   type tagNMTVASYNCDRAW is record
      hdr : NMHDR;
      pimldp : access IMAGELISTDRAWPARAMS;
      hr : HRESULT;
      hItem : HTREEITEM;
      lParam_x : LPARAM;
      dwRetFlags : DWORD;
      iRetImageIndex : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMTVASYNCDRAW);
   for tagNMTVASYNCDRAW use record
      hdr at 0 range 0..191;
      pimldp at 0 range 192..255;
      hr at 0 range 256..287;
      hItem at 0 range 320..383;
      lParam_x at 0 range 384..447;
      dwRetFlags at 0 range 448..479;
      iRetImageIndex at 0 range 480..511;
   end record;
   for tagNMTVASYNCDRAW'Size use 512;
   for tagNMTVASYNCDRAW'Alignment use 8;
   subtype NMTVASYNCDRAW is tagNMTVASYNCDRAW;
   type tagCOMBOBOXEXITEMA is record
      mask : UINT;
      iItem : INT_PTR;
      pszText : LPSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      iSelectedImage : Interfaces.C.Int;
      iOverlay : Interfaces.C.Int;
      iIndent : Interfaces.C.Int;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCOMBOBOXEXITEMA);
   for tagCOMBOBOXEXITEMA use record
      mask at 0 range 0..31;
      iItem at 0 range 64..127;
      pszText at 0 range 128..191;
      cchTextMax at 0 range 192..223;
      iImage at 0 range 224..255;
      iSelectedImage at 0 range 256..287;
      iOverlay at 0 range 288..319;
      iIndent at 0 range 320..351;
      lParam_x at 0 range 384..447;
   end record;
   for tagCOMBOBOXEXITEMA'Size use 448;
   for tagCOMBOBOXEXITEMA'Alignment use 8;
   subtype COMBOBOXEXITEMA is tagCOMBOBOXEXITEMA;
   type PCOMBOBOXEXITEMA is access all tagCOMBOBOXEXITEMA;
   type PCCOMBOEXITEMA is access constant COMBOBOXEXITEMA;
   type tagCOMBOBOXEXITEMW is record
      mask : UINT;
      iItem : INT_PTR;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      iSelectedImage : Interfaces.C.Int;
      iOverlay : Interfaces.C.Int;
      iIndent : Interfaces.C.Int;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCOMBOBOXEXITEMW);
   for tagCOMBOBOXEXITEMW use record
      mask at 0 range 0..31;
      iItem at 0 range 64..127;
      pszText at 0 range 128..191;
      cchTextMax at 0 range 192..223;
      iImage at 0 range 224..255;
      iSelectedImage at 0 range 256..287;
      iOverlay at 0 range 288..319;
      iIndent at 0 range 320..351;
      lParam_x at 0 range 384..447;
   end record;
   for tagCOMBOBOXEXITEMW'Size use 448;
   for tagCOMBOBOXEXITEMW'Alignment use 8;
   subtype COMBOBOXEXITEMW is tagCOMBOBOXEXITEMW;
   type PCOMBOBOXEXITEMW is access all tagCOMBOBOXEXITEMW;
   type PCCOMBOEXITEMW is access constant COMBOBOXEXITEMW;
   type NMCOMBOBOXEXA is record
      hdr : NMHDR;
      ceItem : COMBOBOXEXITEMA;
   end record;
   pragma Convention (C_Pass_By_Copy,NMCOMBOBOXEXA);
   for NMCOMBOBOXEXA use record
      hdr at 0 range 0..191;
      ceItem at 0 range 192..639;
   end record;
   for NMCOMBOBOXEXA'Size use 640;
   for NMCOMBOBOXEXA'Alignment use 8;
   type PNMCOMBOBOXEXA is access all NMCOMBOBOXEXA;
   type NMCOMBOBOXEXW is record
      hdr : NMHDR;
      ceItem : COMBOBOXEXITEMW;
   end record;
   pragma Convention (C_Pass_By_Copy,NMCOMBOBOXEXW);
   for NMCOMBOBOXEXW use record
      hdr at 0 range 0..191;
      ceItem at 0 range 192..639;
   end record;
   for NMCOMBOBOXEXW'Size use 640;
   for NMCOMBOBOXEXW'Alignment use 8;
   type PNMCOMBOBOXEXW is access all NMCOMBOBOXEXW;
   type NMCBEDRAGBEGINW_szText_Array is array(1..260) of WCHAR; -- Auto Generated Dependancy
   type NMCBEDRAGBEGINW is record
      hdr : NMHDR;
      iItemid : Interfaces.C.Int;
      szText : NMCBEDRAGBEGINW_szText_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,NMCBEDRAGBEGINW);
   for NMCBEDRAGBEGINW use record
      hdr at 0 range 0..191;
      iItemid at 0 range 192..223;
      szText at 0 range 224..4383;
   end record;
   for NMCBEDRAGBEGINW'Size use 4416;
   for NMCBEDRAGBEGINW'Alignment use 8;
   type LPNMCBEDRAGBEGINW is access all NMCBEDRAGBEGINW;
   type PNMCBEDRAGBEGINW is access all NMCBEDRAGBEGINW;
   type NMCBEDRAGBEGINA_szText_Array is array(1..260) of Character; -- Auto Generated Dependancy
   type NMCBEDRAGBEGINA is record
      hdr : NMHDR;
      iItemid : Interfaces.C.Int;
      szText : NMCBEDRAGBEGINA_szText_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,NMCBEDRAGBEGINA);
   for NMCBEDRAGBEGINA use record
      hdr at 0 range 0..191;
      iItemid at 0 range 192..223;
      szText at 0 range 224..2303;
   end record;
   for NMCBEDRAGBEGINA'Size use 2304;
   for NMCBEDRAGBEGINA'Alignment use 8;
   type LPNMCBEDRAGBEGINA is access all NMCBEDRAGBEGINA;
   type PNMCBEDRAGBEGINA is access all NMCBEDRAGBEGINA;
   type NMCBEENDEDITW_szText_Array is array(1..260) of WCHAR; -- Auto Generated Dependancy
   type NMCBEENDEDITW is record
      hdr : NMHDR;
      fChanged : BOOL;
      iNewSelection : Interfaces.C.Int;
      szText : NMCBEENDEDITW_szText_Array;
      iWhy : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,NMCBEENDEDITW);
   for NMCBEENDEDITW use record
      hdr at 0 range 0..191;
      fChanged at 0 range 192..223;
      iNewSelection at 0 range 224..255;
      szText at 0 range 256..4415;
      iWhy at 0 range 4416..4447;
   end record;
   for NMCBEENDEDITW'Size use 4480;
   for NMCBEENDEDITW'Alignment use 8;
   type LPNMCBEENDEDITW is access all NMCBEENDEDITW;
   type PNMCBEENDEDITW is access all NMCBEENDEDITW;
   type NMCBEENDEDITA_szText_Array is array(1..260) of Character; -- Auto Generated Dependancy
   type NMCBEENDEDITA is record
      hdr : NMHDR;
      fChanged : BOOL;
      iNewSelection : Interfaces.C.Int;
      szText : NMCBEENDEDITA_szText_Array;
      iWhy : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,NMCBEENDEDITA);
   for NMCBEENDEDITA use record
      hdr at 0 range 0..191;
      fChanged at 0 range 192..223;
      iNewSelection at 0 range 224..255;
      szText at 0 range 256..2335;
      iWhy at 0 range 2336..2367;
   end record;
   for NMCBEENDEDITA'Size use 2368;
   for NMCBEENDEDITA'Alignment use 8;
   type LPNMCBEENDEDITA is access all NMCBEENDEDITA;
   type PNMCBEENDEDITA is access all NMCBEENDEDITA;
   type tagTCITEMHEADERA is record
      mask : UINT;
      lpReserved1 : UINT;
      lpReserved2 : UINT;
      pszText : LPSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTCITEMHEADERA);
   for tagTCITEMHEADERA use record
      mask at 0 range 0..31;
      lpReserved1 at 0 range 32..63;
      lpReserved2 at 0 range 64..95;
      pszText at 0 range 128..191;
      cchTextMax at 0 range 192..223;
      iImage at 0 range 224..255;
   end record;
   for tagTCITEMHEADERA'Size use 256;
   for tagTCITEMHEADERA'Alignment use 8;
   subtype TCITEMHEADERA is tagTCITEMHEADERA;
   type LPTCITEMHEADERA is access all tagTCITEMHEADERA;
   type tagTCITEMHEADERW is record
      mask : UINT;
      lpReserved1 : UINT;
      lpReserved2 : UINT;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTCITEMHEADERW);
   for tagTCITEMHEADERW use record
      mask at 0 range 0..31;
      lpReserved1 at 0 range 32..63;
      lpReserved2 at 0 range 64..95;
      pszText at 0 range 128..191;
      cchTextMax at 0 range 192..223;
      iImage at 0 range 224..255;
   end record;
   for tagTCITEMHEADERW'Size use 256;
   for tagTCITEMHEADERW'Alignment use 8;
   subtype TCITEMHEADERW is tagTCITEMHEADERW;
   type LPTCITEMHEADERW is access all tagTCITEMHEADERW;
   type tagTCITEMA is record
      mask : UINT;
      dwState : DWORD;
      dwStateMask : DWORD;
      pszText : LPSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTCITEMA);
   for tagTCITEMA use record
      mask at 0 range 0..31;
      dwState at 0 range 32..63;
      dwStateMask at 0 range 64..95;
      pszText at 0 range 128..191;
      cchTextMax at 0 range 192..223;
      iImage at 0 range 224..255;
      lParam_x at 0 range 256..319;
   end record;
   for tagTCITEMA'Size use 320;
   for tagTCITEMA'Alignment use 8;
   subtype TCITEMA is tagTCITEMA;
   type LPTCITEMA is access all tagTCITEMA;
   type tagTCITEMW is record
      mask : UINT;
      dwState : DWORD;
      dwStateMask : DWORD;
      pszText : LPWSTR;
      cchTextMax : Interfaces.C.Int;
      iImage : Interfaces.C.Int;
      lParam_x : LPARAM;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTCITEMW);
   for tagTCITEMW use record
      mask at 0 range 0..31;
      dwState at 0 range 32..63;
      dwStateMask at 0 range 64..95;
      pszText at 0 range 128..191;
      cchTextMax at 0 range 192..223;
      iImage at 0 range 224..255;
      lParam_x at 0 range 256..319;
   end record;
   for tagTCITEMW'Size use 320;
   for tagTCITEMW'Alignment use 8;
   subtype TCITEMW is tagTCITEMW;
   type LPTCITEMW is access all tagTCITEMW;
   type tagTCHITTESTINFO is record
      pt : POINT;
      flags : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTCHITTESTINFO);
   for tagTCHITTESTINFO use record
      pt at 0 range 0..63;
      flags at 0 range 64..95;
   end record;
   for tagTCHITTESTINFO'Size use 96;
   for tagTCHITTESTINFO'Alignment use 4;
   subtype TCHITTESTINFO is tagTCHITTESTINFO;
   type LPTCHITTESTINFO is access all tagTCHITTESTINFO;
   type tagTCKEYDOWN is record
      hdr : NMHDR;
      wVKey : WORD;
      flags : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagTCKEYDOWN);
   for tagTCKEYDOWN use record
      hdr at 0 range 0..191;
      wVKey at 0 range 192..207;
      flags at 0 range 208..239;
   end record;
   for tagTCKEYDOWN'Size use 240;
   for tagTCKEYDOWN'Alignment use 1;
   subtype NMTCKEYDOWN is tagTCKEYDOWN;
   subtype MONTHDAYSTATE is DWORD;
   type LPMONTHDAYSTATE is access all DWORD;
   type MCHITTESTINFO is record
      cbSize : UINT;
      pt : POINT;
      uHit : UINT;
      st : SYSTEMTIME;
      rc : RECT;
      iOffset : Interfaces.C.Int;
      iRow : Interfaces.C.Int;
      iCol : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,MCHITTESTINFO);
   for MCHITTESTINFO use record
      cbSize at 0 range 0..31;
      pt at 0 range 32..95;
      uHit at 0 range 96..127;
      st at 0 range 128..255;
      rc at 0 range 256..383;
      iOffset at 0 range 384..415;
      iRow at 0 range 416..447;
      iCol at 0 range 448..479;
   end record;
   for MCHITTESTINFO'Size use 480;
   for MCHITTESTINFO'Alignment use 4;
   type PMCHITTESTINFO is access all MCHITTESTINFO;
   type tagMCGRIDINFO is record
      cbSize : UINT;
      dwPart : DWORD;
      dwFlags : DWORD;
      iCalendar : Interfaces.C.Int;
      iRow : Interfaces.C.Int;
      iCol : Interfaces.C.Int;
      bSelected : BOOL;
      stStart : SYSTEMTIME;
      stEnd : SYSTEMTIME;
      rc : RECT;
      pszName : PWSTR;
      cchName : size_t;
   end record;
   pragma Convention (C_Pass_By_Copy,tagMCGRIDINFO);
   for tagMCGRIDINFO use record
      cbSize at 0 range 0..31;
      dwPart at 0 range 32..63;
      dwFlags at 0 range 64..95;
      iCalendar at 0 range 96..127;
      iRow at 0 range 128..159;
      iCol at 0 range 160..191;
      bSelected at 0 range 192..223;
      stStart at 0 range 224..351;
      stEnd at 0 range 352..479;
      rc at 0 range 480..607;
      pszName at 0 range 640..703;
      cchName at 0 range 704..767;
   end record;
   for tagMCGRIDINFO'Size use 768;
   for tagMCGRIDINFO'Alignment use 8;
   subtype MCGRIDINFO is tagMCGRIDINFO;
   type PMCGRIDINFO is access all tagMCGRIDINFO;
   type tagNMSELCHANGE is record
      nmhdr_x : NMHDR;
      stSelStart : SYSTEMTIME;
      stSelEnd : SYSTEMTIME;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMSELCHANGE);
   for tagNMSELCHANGE use record
      nmhdr_x at 0 range 0..191;
      stSelStart at 0 range 192..319;
      stSelEnd at 0 range 320..447;
   end record;
   for tagNMSELCHANGE'Size use 448;
   for tagNMSELCHANGE'Alignment use 8;
   subtype NMSELCHANGE is tagNMSELCHANGE;
   type LPNMSELCHANGE is access all tagNMSELCHANGE;
   type tagNMDAYSTATE is record
      nmhdr_x : NMHDR;
      stStart : SYSTEMTIME;
      cDayState : Interfaces.C.Int;
      prgDayState : LPMONTHDAYSTATE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMDAYSTATE);
   for tagNMDAYSTATE use record
      nmhdr_x at 0 range 0..191;
      stStart at 0 range 192..319;
      cDayState at 0 range 320..351;
      prgDayState at 0 range 384..447;
   end record;
   for tagNMDAYSTATE'Size use 448;
   for tagNMDAYSTATE'Alignment use 8;
   subtype NMDAYSTATE is tagNMDAYSTATE;
   type LPNMDAYSTATE is access all tagNMDAYSTATE;
   subtype NMSELECT is NMSELCHANGE;
   type LPNMSELECT is access all NMSELCHANGE;
   type tagNMVIEWCHANGE is record
      nmhdr_x : NMHDR;
      dwOldView : DWORD;
      dwNewView : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMVIEWCHANGE);
   for tagNMVIEWCHANGE use record
      nmhdr_x at 0 range 0..191;
      dwOldView at 0 range 192..223;
      dwNewView at 0 range 224..255;
   end record;
   for tagNMVIEWCHANGE'Size use 256;
   for tagNMVIEWCHANGE'Alignment use 8;
   subtype NMVIEWCHANGE is tagNMVIEWCHANGE;
   type LPNMVIEWCHANGE is access all tagNMVIEWCHANGE;
   type tagDATETIMEPICKERINFO is record
      cbSize : DWORD;
      rcCheck : RECT;
      stateCheck : DWORD;
      rcButton : RECT;
      stateButton : DWORD;
      hwndEdit : HWND;
      hwndUD : HWND;
      hwndDropDown : HWND;
   end record;
   pragma Convention (C_Pass_By_Copy,tagDATETIMEPICKERINFO);
   for tagDATETIMEPICKERINFO use record
      cbSize at 0 range 0..31;
      rcCheck at 0 range 32..159;
      stateCheck at 0 range 160..191;
      rcButton at 0 range 192..319;
      stateButton at 0 range 320..351;
      hwndEdit at 0 range 384..447;
      hwndUD at 0 range 448..511;
      hwndDropDown at 0 range 512..575;
   end record;
   for tagDATETIMEPICKERINFO'Size use 576;
   for tagDATETIMEPICKERINFO'Alignment use 8;
   subtype DATETIMEPICKERINFO is tagDATETIMEPICKERINFO;
   type LPDATETIMEPICKERINFO is access all tagDATETIMEPICKERINFO;
   type tagNMDATETIMECHANGE is record
      nmhdr_x : NMHDR;
      dwFlags : DWORD;
      st : SYSTEMTIME;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMDATETIMECHANGE);
   for tagNMDATETIMECHANGE use record
      nmhdr_x at 0 range 0..191;
      dwFlags at 0 range 192..223;
      st at 0 range 224..351;
   end record;
   for tagNMDATETIMECHANGE'Size use 384;
   for tagNMDATETIMECHANGE'Alignment use 8;
   subtype NMDATETIMECHANGE is tagNMDATETIMECHANGE;
   type LPNMDATETIMECHANGE is access all tagNMDATETIMECHANGE;
   type tagNMDATETIMESTRINGA is record
      nmhdr_x : NMHDR;
      pszUserString : LPCSTR;
      st : SYSTEMTIME;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMDATETIMESTRINGA);
   for tagNMDATETIMESTRINGA use record
      nmhdr_x at 0 range 0..191;
      pszUserString at 0 range 192..255;
      st at 0 range 256..383;
      dwFlags at 0 range 384..415;
   end record;
   for tagNMDATETIMESTRINGA'Size use 448;
   for tagNMDATETIMESTRINGA'Alignment use 8;
   subtype NMDATETIMESTRINGA is tagNMDATETIMESTRINGA;
   type LPNMDATETIMESTRINGA is access all tagNMDATETIMESTRINGA;
   type tagNMDATETIMESTRINGW is record
      nmhdr_x : NMHDR;
      pszUserString : LPCWSTR;
      st : SYSTEMTIME;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMDATETIMESTRINGW);
   for tagNMDATETIMESTRINGW use record
      nmhdr_x at 0 range 0..191;
      pszUserString at 0 range 192..255;
      st at 0 range 256..383;
      dwFlags at 0 range 384..415;
   end record;
   for tagNMDATETIMESTRINGW'Size use 448;
   for tagNMDATETIMESTRINGW'Alignment use 8;
   subtype NMDATETIMESTRINGW is tagNMDATETIMESTRINGW;
   type LPNMDATETIMESTRINGW is access all tagNMDATETIMESTRINGW;
   type tagNMDATETIMEWMKEYDOWNA is record
      nmhdr_x : NMHDR;
      nVirtKey : Interfaces.C.Int;
      pszFormat : LPCSTR;
      st : SYSTEMTIME;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMDATETIMEWMKEYDOWNA);
   for tagNMDATETIMEWMKEYDOWNA use record
      nmhdr_x at 0 range 0..191;
      nVirtKey at 0 range 192..223;
      pszFormat at 0 range 256..319;
      st at 0 range 320..447;
   end record;
   for tagNMDATETIMEWMKEYDOWNA'Size use 448;
   for tagNMDATETIMEWMKEYDOWNA'Alignment use 8;
   subtype NMDATETIMEWMKEYDOWNA is tagNMDATETIMEWMKEYDOWNA;
   type LPNMDATETIMEWMKEYDOWNA is access all tagNMDATETIMEWMKEYDOWNA;
   type tagNMDATETIMEWMKEYDOWNW is record
      nmhdr_x : NMHDR;
      nVirtKey : Interfaces.C.Int;
      pszFormat : LPCWSTR;
      st : SYSTEMTIME;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMDATETIMEWMKEYDOWNW);
   for tagNMDATETIMEWMKEYDOWNW use record
      nmhdr_x at 0 range 0..191;
      nVirtKey at 0 range 192..223;
      pszFormat at 0 range 256..319;
      st at 0 range 320..447;
   end record;
   for tagNMDATETIMEWMKEYDOWNW'Size use 448;
   for tagNMDATETIMEWMKEYDOWNW'Alignment use 8;
   subtype NMDATETIMEWMKEYDOWNW is tagNMDATETIMEWMKEYDOWNW;
   type LPNMDATETIMEWMKEYDOWNW is access all tagNMDATETIMEWMKEYDOWNW;
   type tagNMDATETIMEFORMATA_szDisplay_Array is array(1..64) of CHAR; -- Auto Generated Dependancy
   type tagNMDATETIMEFORMATA is record
      nmhdr_x : NMHDR;
      pszFormat : LPCSTR;
      st : SYSTEMTIME;
      pszDisplay : LPCSTR;
      szDisplay : tagNMDATETIMEFORMATA_szDisplay_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMDATETIMEFORMATA);
   for tagNMDATETIMEFORMATA use record
      nmhdr_x at 0 range 0..191;
      pszFormat at 0 range 192..255;
      st at 0 range 256..383;
      pszDisplay at 0 range 384..447;
      szDisplay at 0 range 448..959;
   end record;
   for tagNMDATETIMEFORMATA'Size use 960;
   for tagNMDATETIMEFORMATA'Alignment use 8;
   subtype NMDATETIMEFORMATA is tagNMDATETIMEFORMATA;
   type LPNMDATETIMEFORMATA is access all tagNMDATETIMEFORMATA;
   type tagNMDATETIMEFORMATW_szDisplay_Array is array(1..64) of WCHAR; -- Auto Generated Dependancy
   type tagNMDATETIMEFORMATW is record
      nmhdr_x : NMHDR;
      pszFormat : LPCWSTR;
      st : SYSTEMTIME;
      pszDisplay : LPCWSTR;
      szDisplay : tagNMDATETIMEFORMATW_szDisplay_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMDATETIMEFORMATW);
   for tagNMDATETIMEFORMATW use record
      nmhdr_x at 0 range 0..191;
      pszFormat at 0 range 192..255;
      st at 0 range 256..383;
      pszDisplay at 0 range 384..447;
      szDisplay at 0 range 448..1471;
   end record;
   for tagNMDATETIMEFORMATW'Size use 1472;
   for tagNMDATETIMEFORMATW'Alignment use 8;
   subtype NMDATETIMEFORMATW is tagNMDATETIMEFORMATW;
   type LPNMDATETIMEFORMATW is access all tagNMDATETIMEFORMATW;
   type tagNMDATETIMEFORMATQUERYA is record
      nmhdr_x : NMHDR;
      pszFormat : LPCSTR;
      szMax : SIZE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMDATETIMEFORMATQUERYA);
   for tagNMDATETIMEFORMATQUERYA use record
      nmhdr_x at 0 range 0..191;
      pszFormat at 0 range 192..255;
      szMax at 0 range 256..319;
   end record;
   for tagNMDATETIMEFORMATQUERYA'Size use 320;
   for tagNMDATETIMEFORMATQUERYA'Alignment use 8;
   subtype NMDATETIMEFORMATQUERYA is tagNMDATETIMEFORMATQUERYA;
   type LPNMDATETIMEFORMATQUERYA is access all tagNMDATETIMEFORMATQUERYA;
   type tagNMDATETIMEFORMATQUERYW is record
      nmhdr_x : NMHDR;
      pszFormat : LPCWSTR;
      szMax : SIZE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMDATETIMEFORMATQUERYW);
   for tagNMDATETIMEFORMATQUERYW use record
      nmhdr_x at 0 range 0..191;
      pszFormat at 0 range 192..255;
      szMax at 0 range 256..319;
   end record;
   for tagNMDATETIMEFORMATQUERYW'Size use 320;
   for tagNMDATETIMEFORMATQUERYW'Alignment use 8;
   subtype NMDATETIMEFORMATQUERYW is tagNMDATETIMEFORMATQUERYW;
   type LPNMDATETIMEFORMATQUERYW is access all tagNMDATETIMEFORMATQUERYW;
   type tagNMIPADDRESS is record
      hdr : NMHDR;
      iField : Interfaces.C.Int;
      iValue : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMIPADDRESS);
   for tagNMIPADDRESS use record
      hdr at 0 range 0..191;
      iField at 0 range 192..223;
      iValue at 0 range 224..255;
   end record;
   for tagNMIPADDRESS'Size use 256;
   for tagNMIPADDRESS'Alignment use 8;
   subtype NMIPADDRESS is tagNMIPADDRESS;
   type LPNMIPADDRESS is access all tagNMIPADDRESS;
   type NMPGSCROLL is record
      hdr : NMHDR;
      fwKeys : WORD;
      rcParent : RECT;
      iDir : Interfaces.C.Int;
      iXpos : Interfaces.C.Int;
      iYpos : Interfaces.C.Int;
      iScroll : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,NMPGSCROLL);
   for NMPGSCROLL use record
      hdr at 0 range 0..191;
      fwKeys at 0 range 192..207;
      rcParent at 0 range 208..335;
      iDir at 0 range 336..367;
      iXpos at 0 range 368..399;
      iYpos at 0 range 400..431;
      iScroll at 0 range 432..463;
   end record;
   for NMPGSCROLL'Size use 464;
   for NMPGSCROLL'Alignment use 1;
   type LPNMPGSCROLL is access all NMPGSCROLL;
   type NMPGCALCSIZE is record
      hdr : NMHDR;
      dwFlag : DWORD;
      iWidth : Interfaces.C.Int;
      iHeight : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,NMPGCALCSIZE);
   for NMPGCALCSIZE use record
      hdr at 0 range 0..191;
      dwFlag at 0 range 192..223;
      iWidth at 0 range 224..255;
      iHeight at 0 range 256..287;
   end record;
   for NMPGCALCSIZE'Size use 320;
   for NMPGCALCSIZE'Alignment use 8;
   type LPNMPGCALCSIZE is access all NMPGCALCSIZE;
   type tagNMPGHOTITEM is record
      hdr : NMHDR;
      idOld : Interfaces.C.Int;
      idNew : Interfaces.C.Int;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMPGHOTITEM);
   for tagNMPGHOTITEM use record
      hdr at 0 range 0..191;
      idOld at 0 range 192..223;
      idNew at 0 range 224..255;
      dwFlags at 0 range 256..287;
   end record;
   for tagNMPGHOTITEM'Size use 320;
   for tagNMPGHOTITEM'Alignment use 8;
   subtype NMPGHOTITEM is tagNMPGHOTITEM;
   type LPNMPGHOTITEM is access all tagNMPGHOTITEM;
   type BUTTON_IMAGELIST is record
      himl : HIMAGELIST;
      margin : RECT;
      uAlign : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,BUTTON_IMAGELIST);
   for BUTTON_IMAGELIST use record
      himl at 0 range 0..63;
      margin at 0 range 64..191;
      uAlign at 0 range 192..223;
   end record;
   for BUTTON_IMAGELIST'Size use 256;
   for BUTTON_IMAGELIST'Alignment use 8;
   type PBUTTON_IMAGELIST is access all BUTTON_IMAGELIST;
   type tagNMBCHOTITEM is record
      hdr : NMHDR;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMBCHOTITEM);
   for tagNMBCHOTITEM use record
      hdr at 0 range 0..191;
      dwFlags at 0 range 192..223;
   end record;
   for tagNMBCHOTITEM'Size use 256;
   for tagNMBCHOTITEM'Alignment use 8;
   subtype NMBCHOTITEM is tagNMBCHOTITEM;
   type LPNMBCHOTITEM is access all tagNMBCHOTITEM;
   type tagBUTTON_SPLITINFO is record
      mask : UINT;
      himlGlyph : HIMAGELIST;
      uSplitStyle : UINT;
      size_x : SIZE;
   end record;
   pragma Convention (C_Pass_By_Copy,tagBUTTON_SPLITINFO);
   for tagBUTTON_SPLITINFO use record
      mask at 0 range 0..31;
      himlGlyph at 0 range 64..127;
      uSplitStyle at 0 range 128..159;
      size_x at 0 range 160..223;
   end record;
   for tagBUTTON_SPLITINFO'Size use 256;
   for tagBUTTON_SPLITINFO'Alignment use 8;
   subtype BUTTON_SPLITINFO is tagBUTTON_SPLITINFO;
   type PBUTTON_SPLITINFO is access all tagBUTTON_SPLITINFO;
   type tagNMBCDROPDOWN is record
      hdr : NMHDR;
      rcButton : RECT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagNMBCDROPDOWN);
   for tagNMBCDROPDOWN use record
      hdr at 0 range 0..191;
      rcButton at 0 range 192..319;
   end record;
   for tagNMBCDROPDOWN'Size use 320;
   for tagNMBCDROPDOWN'Alignment use 8;
   subtype NMBCDROPDOWN is tagNMBCDROPDOWN;
   type LPNMBCDROPDOWN is access all tagNMBCDROPDOWN;
   type tagEDITBALLOONTIP_x is record
      cbStruct : DWORD;
      pszTitle : LPCWSTR;
      pszText : LPCWSTR;
      ttiIcon : INT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagEDITBALLOONTIP_x);
   for tagEDITBALLOONTIP_x use record
      cbStruct at 0 range 0..31;
      pszTitle at 0 range 64..127;
      pszText at 0 range 128..191;
      ttiIcon at 0 range 192..223;
   end record;
   for tagEDITBALLOONTIP_x'Size use 256;
   for tagEDITBALLOONTIP_x'Alignment use 8;
   subtype EDITBALLOONTIP is tagEDITBALLOONTIP_x;
   type PEDITBALLOONTIP is access all tagEDITBALLOONTIP_x;
   type EC_ENDOFLINE is (
      EC_ENDOFLINE_DETECTFROMCONTENT,
      EC_ENDOFLINE_CRLF,
      EC_ENDOFLINE_CR,
      EC_ENDOFLINE_LF
   );
   for EC_ENDOFLINE use (
      EC_ENDOFLINE_DETECTFROMCONTENT => 0,
      EC_ENDOFLINE_CRLF => 1,
      EC_ENDOFLINE_CR => 2,
      EC_ENDOFLINE_LF => 3
   );
   for EC_ENDOFLINE'Size use 32;
   type EC_SEARCHWEB_ENTRYPOINT is (
      EC_SEARCHWEB_ENTRYPOINT_EXTERNAL,
      EC_SEARCHWEB_ENTRYPOINT_CONTEXTMENU
   );
   for EC_SEARCHWEB_ENTRYPOINT use (
      EC_SEARCHWEB_ENTRYPOINT_EXTERNAL => 0,
      EC_SEARCHWEB_ENTRYPOINT_CONTEXTMENU => 1
   );
   for EC_SEARCHWEB_ENTRYPOINT'Size use 32;
   type NMSEARCHWEB is record
      hdr : NMHDR;
      entrypoint : EC_SEARCHWEB_ENTRYPOINT;
      hasQueryText : BOOL;
      invokeSucceeded : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,NMSEARCHWEB);
   for NMSEARCHWEB use record
      hdr at 0 range 0..191;
      entrypoint at 0 range 192..223;
      hasQueryText at 0 range 224..255;
      invokeSucceeded at 0 range 256..287;
   end record;
   for NMSEARCHWEB'Size use 320;
   for NMSEARCHWEB'Alignment use 8;
   type PFTASKDIALOGCALLBACK is access function (p1 : HWND ; p2 : UINT ; p3 : WPARAM ; p4 : LPARAM ; p5 : LONG_PTR) return HRESULT; -- HRESULT (HWND, UINT, WPARAM, LPARAM, LONG_PTR)
   pragma Convention(C,PFTASKDIALOGCALLBACK);
   type TASKDIALOG_FLAGS_x is (
      TDF_ENABLE_HYPERLINKS,
      TDF_USE_HICON_MAIN,
      TDF_USE_HICON_FOOTER,
      TDF_ALLOW_DIALOG_CANCELLATION,
      TDF_USE_COMMAND_LINKS,
      TDF_USE_COMMAND_LINKS_NO_ICON,
      TDF_EXPAND_FOOTER_AREA,
      TDF_EXPANDED_BY_DEFAULT,
      TDF_VERIFICATION_FLAG_CHECKED,
      TDF_SHOW_PROGRESS_BAR,
      TDF_SHOW_MARQUEE_PROGRESS_BAR,
      TDF_CALLBACK_TIMER,
      TDF_POSITION_RELATIVE_TO_WINDOW,
      TDF_RTL_LAYOUT,
      TDF_NO_DEFAULT_RADIO_BUTTON,
      TDF_CAN_BE_MINIMIZED,
      TDF_NO_SET_FOREGROUND,
      TDF_SIZE_TO_CONTENT
   );
   for TASKDIALOG_FLAGS_x use (
      TDF_ENABLE_HYPERLINKS => 1,
      TDF_USE_HICON_MAIN => 2,
      TDF_USE_HICON_FOOTER => 4,
      TDF_ALLOW_DIALOG_CANCELLATION => 8,
      TDF_USE_COMMAND_LINKS => 16,
      TDF_USE_COMMAND_LINKS_NO_ICON => 32,
      TDF_EXPAND_FOOTER_AREA => 64,
      TDF_EXPANDED_BY_DEFAULT => 128,
      TDF_VERIFICATION_FLAG_CHECKED => 256,
      TDF_SHOW_PROGRESS_BAR => 512,
      TDF_SHOW_MARQUEE_PROGRESS_BAR => 1024,
      TDF_CALLBACK_TIMER => 2048,
      TDF_POSITION_RELATIVE_TO_WINDOW => 4096,
      TDF_RTL_LAYOUT => 8192,
      TDF_NO_DEFAULT_RADIO_BUTTON => 16384,
      TDF_CAN_BE_MINIMIZED => 32768,
      TDF_NO_SET_FOREGROUND => 65536,
      TDF_SIZE_TO_CONTENT => 16777216
   );
   for TASKDIALOG_FLAGS_x'Size use 32;
   subtype TASKDIALOG_FLAGS is Interfaces.C.Int;
   type TASKDIALOG_MESSAGES_x is (
      TDM_NAVIGATE_PAGE,
      TDM_CLICK_BUTTON,
      TDM_SET_MARQUEE_PROGRESS_BAR,
      TDM_SET_PROGRESS_BAR_STATE,
      TDM_SET_PROGRESS_BAR_RANGE,
      TDM_SET_PROGRESS_BAR_POS,
      TDM_SET_PROGRESS_BAR_MARQUEE,
      TDM_SET_ELEMENT_TEXT,
      TDM_CLICK_RADIO_BUTTON,
      TDM_ENABLE_BUTTON,
      TDM_ENABLE_RADIO_BUTTON,
      TDM_CLICK_VERIFICATION,
      TDM_UPDATE_ELEMENT_TEXT,
      TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE,
      TDM_UPDATE_ICON
   );
   for TASKDIALOG_MESSAGES_x use (
      TDM_NAVIGATE_PAGE => 1125,
      TDM_CLICK_BUTTON => 1126,
      TDM_SET_MARQUEE_PROGRESS_BAR => 1127,
      TDM_SET_PROGRESS_BAR_STATE => 1128,
      TDM_SET_PROGRESS_BAR_RANGE => 1129,
      TDM_SET_PROGRESS_BAR_POS => 1130,
      TDM_SET_PROGRESS_BAR_MARQUEE => 1131,
      TDM_SET_ELEMENT_TEXT => 1132,
      TDM_CLICK_RADIO_BUTTON => 1134,
      TDM_ENABLE_BUTTON => 1135,
      TDM_ENABLE_RADIO_BUTTON => 1136,
      TDM_CLICK_VERIFICATION => 1137,
      TDM_UPDATE_ELEMENT_TEXT => 1138,
      TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE => 1139,
      TDM_UPDATE_ICON => 1140
   );
   for TASKDIALOG_MESSAGES_x'Size use 32;
   subtype TASKDIALOG_MESSAGES is TASKDIALOG_MESSAGES_x;
   type TASKDIALOG_NOTIFICATIONS_x is (
      TDN_CREATED,
      TDN_NAVIGATED,
      TDN_BUTTON_CLICKED,
      TDN_HYPERLINK_CLICKED,
      TDN_TIMER,
      TDN_DESTROYED,
      TDN_RADIO_BUTTON_CLICKED,
      TDN_DIALOG_CONSTRUCTED,
      TDN_VERIFICATION_CLICKED,
      TDN_HELP,
      TDN_EXPANDO_BUTTON_CLICKED
   );
   for TASKDIALOG_NOTIFICATIONS_x use (
      TDN_CREATED => 0,
      TDN_NAVIGATED => 1,
      TDN_BUTTON_CLICKED => 2,
      TDN_HYPERLINK_CLICKED => 3,
      TDN_TIMER => 4,
      TDN_DESTROYED => 5,
      TDN_RADIO_BUTTON_CLICKED => 6,
      TDN_DIALOG_CONSTRUCTED => 7,
      TDN_VERIFICATION_CLICKED => 8,
      TDN_HELP => 9,
      TDN_EXPANDO_BUTTON_CLICKED => 10
   );
   for TASKDIALOG_NOTIFICATIONS_x'Size use 32;
   subtype TASKDIALOG_NOTIFICATIONS is TASKDIALOG_NOTIFICATIONS_x;
   type TASKDIALOG_BUTTON_x is record
      nButtonID : Interfaces.C.Int;
      pszButtonText : PCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,TASKDIALOG_BUTTON_x);
   for TASKDIALOG_BUTTON_x use record
      nButtonID at 0 range 0..31;
      pszButtonText at 0 range 32..95;
   end record;
   for TASKDIALOG_BUTTON_x'Size use 96;
   for TASKDIALOG_BUTTON_x'Alignment use 1;
   subtype TASKDIALOG_BUTTON is TASKDIALOG_BUTTON_x;
   type TASKDIALOG_ELEMENTS_x is (
      TDE_CONTENT,
      TDE_EXPANDED_INFORMATION,
      TDE_FOOTER,
      TDE_MAIN_INSTRUCTION
   );
   for TASKDIALOG_ELEMENTS_x use (
      TDE_CONTENT => 0,
      TDE_EXPANDED_INFORMATION => 1,
      TDE_FOOTER => 2,
      TDE_MAIN_INSTRUCTION => 3
   );
   for TASKDIALOG_ELEMENTS_x'Size use 32;
   subtype TASKDIALOG_ELEMENTS is TASKDIALOG_ELEMENTS_x;
   type TASKDIALOG_ICON_ELEMENTS_x is (
      TDIE_ICON_MAIN,
      TDIE_ICON_FOOTER
   );
   for TASKDIALOG_ICON_ELEMENTS_x use (
      TDIE_ICON_MAIN => 0,
      TDIE_ICON_FOOTER => 1
   );
   for TASKDIALOG_ICON_ELEMENTS_x'Size use 32;
   subtype TASKDIALOG_ICON_ELEMENTS is TASKDIALOG_ICON_ELEMENTS_x;
   type TASKDIALOG_COMMON_BUTTON_FLAGS_x is (
      TDCBF_OK_BUTTON,
      TDCBF_YES_BUTTON,
      TDCBF_NO_BUTTON,
      TDCBF_CANCEL_BUTTON,
      TDCBF_RETRY_BUTTON,
      TDCBF_CLOSE_BUTTON
   );
   for TASKDIALOG_COMMON_BUTTON_FLAGS_x use (
      TDCBF_OK_BUTTON => 1,
      TDCBF_YES_BUTTON => 2,
      TDCBF_NO_BUTTON => 4,
      TDCBF_CANCEL_BUTTON => 8,
      TDCBF_RETRY_BUTTON => 16,
      TDCBF_CLOSE_BUTTON => 32
   );
   for TASKDIALOG_COMMON_BUTTON_FLAGS_x'Size use 32;
   subtype TASKDIALOG_COMMON_BUTTON_FLAGS is Interfaces.C.Int;
   type Anonymous_Record_294 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hMainIcon : HICON;
         when others => 
            pszMainIcon : PCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_294);
   pragma Unchecked_Union (Anonymous_Record_294);
   for Anonymous_Record_294'Size use 64;
   for Anonymous_Record_294'Alignment use 1;
   type Anonymous_Record_295 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            hFooterIcon : HICON;
         when others => 
            pszFooterIcon : PCWSTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_295);
   pragma Unchecked_Union (Anonymous_Record_295);
   for Anonymous_Record_295'Size use 64;
   for Anonymous_Record_295'Alignment use 1;
   type TASKDIALOGCONFIG_x is record
      cbSize : UINT;
      hwndParent : HWND;
      hInstance_x : HINSTANCE;
      dwFlags : TASKDIALOG_FLAGS;
      dwCommonButtons : TASKDIALOG_COMMON_BUTTON_FLAGS;
      pszWindowTitle : PCWSTR;
      field_1 : Anonymous_Record_294;
      pszMainInstruction : PCWSTR;
      pszContent : PCWSTR;
      cButtons : UINT;
      pButtons : access constant TASKDIALOG_BUTTON;
      nDefaultButton : Interfaces.C.Int;
      cRadioButtons : UINT;
      pRadioButtons : access constant TASKDIALOG_BUTTON;
      nDefaultRadioButton : Interfaces.C.Int;
      pszVerificationText : PCWSTR;
      pszExpandedInformation : PCWSTR;
      pszExpandedControlText : PCWSTR;
      pszCollapsedControlText : PCWSTR;
      field_2 : Anonymous_Record_295;
      pszFooter : PCWSTR;
      pfCallback : PFTASKDIALOGCALLBACK;
      lpCallbackData : LONG_PTR;
      cxWidth : UINT;
   end record;
   pragma Convention (C_Pass_By_Copy,TASKDIALOGCONFIG_x);
   for TASKDIALOGCONFIG_x use record
      cbSize at 0 range 0..31;
      hwndParent at 0 range 32..95;
      hInstance_x at 0 range 96..159;
      dwFlags at 0 range 160..191;
      dwCommonButtons at 0 range 192..223;
      pszWindowTitle at 0 range 224..287;
      field_1 at 0 range 288..351;
      pszMainInstruction at 0 range 352..415;
      pszContent at 0 range 416..479;
      cButtons at 0 range 480..511;
      pButtons at 0 range 512..575;
      nDefaultButton at 0 range 576..607;
      cRadioButtons at 0 range 608..639;
      pRadioButtons at 0 range 640..703;
      nDefaultRadioButton at 0 range 704..735;
      pszVerificationText at 0 range 736..799;
      pszExpandedInformation at 0 range 800..863;
      pszExpandedControlText at 0 range 864..927;
      pszCollapsedControlText at 0 range 928..991;
      field_2 at 0 range 992..1055;
      pszFooter at 0 range 1056..1119;
      pfCallback at 0 range 1120..1183;
      lpCallbackData at 0 range 1184..1247;
      cxWidth at 0 range 1248..1279;
   end record;
   for TASKDIALOGCONFIG_x'Size use 1280;
   for TASKDIALOGCONFIG_x'Alignment use 1;
   subtype TASKDIALOGCONFIG is TASKDIALOGCONFIG_x;
   function TaskDialogIndirect(
      pTaskConfig : access constant TASKDIALOGCONFIG;
      pnButton : access Interfaces.C.Int;
      pnRadioButton : access Interfaces.C.Int;
      pfVerificationFlagChecked : access BOOL
   ) return HRESULT;
   pragma import (Cpp,TaskDialogIndirect,"TaskDialogIndirect");
   function TaskDialog(
      hwndOwner : HWND;
      hInstance_x : HINSTANCE;
      pszWindowTitle : PCWSTR;
      pszMainInstruction : PCWSTR;
      pszContent : PCWSTR;
      dwCommonButtons : TASKDIALOG_COMMON_BUTTON_FLAGS;
      pszIcon : PCWSTR;
      pnButton : access Interfaces.C.Int
   ) return HRESULT;
   pragma import (Cpp,TaskDialog,"TaskDialog");
   procedure InitMUILanguage(
      uiLang : LANGID
   );
   pragma import (Cpp,InitMUILanguage,"InitMUILanguage");
   function GetMUILanguage return LANGID;
   pragma import (Cpp,GetMUILanguage,"GetMUILanguage");
   -- #include <dpa_dsa.h>
   type PFNDAENUMCALLBACK is access function (p1 : access void ; p2 : access void) return int; -- int (void *, void *)
   pragma Convention(C,PFNDAENUMCALLBACK);
   type PFNDAENUMCALLBACKCONST is access function (p1 : access void ; p2 : access void) return int; -- int (const void *, void *)
   pragma Convention(C,PFNDAENUMCALLBACKCONST);
   type PFNDACOMPARE is access function (p1 : access void ; p2 : access void ; p3 : LPARAM) return int; -- int (void *, void *, LPARAM)
   pragma Convention(C,PFNDACOMPARE);
   type PFNDACOMPARECONST is access function (p1 : access void ; p2 : access void ; p3 : LPARAM) return int; -- int (const void *, const void *, LPARAM)
   pragma Convention(C,PFNDACOMPARECONST);
   type DSA_x;
   type HDSA is access all DSA_x;
   function DSA_Create(
      cbItem : Interfaces.C.Int;
      cItemGrow : Interfaces.C.Int
   ) return HDSA;
   pragma import (Cpp,DSA_Create,"DSA_Create");
   function DSA_Destroy(
      hdsa_x : HDSA
   ) return BOOL;
   pragma import (Cpp,DSA_Destroy,"DSA_Destroy");
   procedure DSA_DestroyCallback(
      hdsa_x : HDSA;
      pfnCB : PFNDAENUMCALLBACK;
      pData : access Void
   );
   pragma import (Cpp,DSA_DestroyCallback,"DSA_DestroyCallback");
   -- DSA_DestroyCallback_x(); -- inlined function not supported
   function DSA_DeleteItem(
      hdsa_x : HDSA;
      i : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,DSA_DeleteItem,"DSA_DeleteItem");
   function DSA_DeleteAllItems(
      hdsa_x : HDSA
   ) return BOOL;
   pragma import (Cpp,DSA_DeleteAllItems,"DSA_DeleteAllItems");
   procedure DSA_EnumCallback(
      hdsa_x : HDSA;
      pfnCB : PFNDAENUMCALLBACK;
      pData : access Void
   );
   pragma import (Cpp,DSA_EnumCallback,"DSA_EnumCallback");
   -- DSA_EnumCallback_x(); -- inlined function not supported
   function DSA_InsertItem(
      hdsa_x : HDSA;
      i : Interfaces.C.Int;
      pitem : access Void
   ) return Interfaces.C.Int;
   pragma import (Cpp,DSA_InsertItem,"DSA_InsertItem");
   procedure DSA_GetItemPtr(
      hdsa_x : HDSA;
      i : Interfaces.C.Int
   );
   pragma import (Cpp,DSA_GetItemPtr,"DSA_GetItemPtr");
   function DSA_GetItem(
      hdsa_x : HDSA;
      i : Interfaces.C.Int;
      pitem : access Void
   ) return BOOL;
   pragma import (Cpp,DSA_GetItem,"DSA_GetItem");
   function DSA_SetItem(
      hdsa_x : HDSA;
      i : Interfaces.C.Int;
      pitem : access Void
   ) return BOOL;
   pragma import (Cpp,DSA_SetItem,"DSA_SetItem");
   function DSA_Clone(
      hdsa_x : HDSA
   ) return HDSA;
   pragma import (Cpp,DSA_Clone,"DSA_Clone");
   function DSA_GetSize(
      hdsa_x : HDSA
   ) return ULONGLONG;
   pragma import (Cpp,DSA_GetSize,"DSA_GetSize");
   function DSA_Sort(
      pdsa : HDSA;
      pfnCompare : PFNDACOMPARE;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,DSA_Sort,"DSA_Sort");
   -- DSA_Sort_x(); -- inlined function not supported
   type DPA_x;
   type HDPA is access all DPA_x;
   function DPA_Create(
      cItemGrow : Interfaces.C.Int
   ) return HDPA;
   pragma import (Cpp,DPA_Create,"DPA_Create");
   function DPA_CreateEx(
      cpGrow : Interfaces.C.Int;
      hheap : HANDLE
   ) return HDPA;
   pragma import (Cpp,DPA_CreateEx,"DPA_CreateEx");
   function DPA_Clone(
      hdpa_x : HDPA;
      hdpaNew : HDPA
   ) return HDPA;
   pragma import (Cpp,DPA_Clone,"DPA_Clone");
   function DPA_Destroy(
      hdpa_x : HDPA
   ) return BOOL;
   pragma import (Cpp,DPA_Destroy,"DPA_Destroy");
   procedure DPA_DestroyCallback(
      hdpa_x : HDPA;
      pfnCB : PFNDAENUMCALLBACK;
      pData : access Void
   );
   pragma import (Cpp,DPA_DestroyCallback,"DPA_DestroyCallback");
   -- DPA_DestroyCallback_x(); -- inlined function not supported
   procedure DPA_DeletePtr(
      hdpa_x : HDPA;
      i : Interfaces.C.Int
   );
   pragma import (Cpp,DPA_DeletePtr,"DPA_DeletePtr");
   function DPA_DeleteAllPtrs(
      hdpa_x : HDPA
   ) return BOOL;
   pragma import (Cpp,DPA_DeleteAllPtrs,"DPA_DeleteAllPtrs");
   procedure DPA_EnumCallback(
      hdpa_x : HDPA;
      pfnCB : PFNDAENUMCALLBACK;
      pData : access Void
   );
   pragma import (Cpp,DPA_EnumCallback,"DPA_EnumCallback");
   -- DPA_EnumCallback_x(); -- inlined function not supported
   function DPA_Grow(
      pdpa : HDPA;
      cp : Interfaces.C.Int
   ) return BOOL;
   pragma import (Cpp,DPA_Grow,"DPA_Grow");
   function DPA_InsertPtr(
      hdpa_x : HDPA;
      i : Interfaces.C.Int;
      p : access Void
   ) return Interfaces.C.Int;
   pragma import (Cpp,DPA_InsertPtr,"DPA_InsertPtr");
   function DPA_SetPtr(
      hdpa_x : HDPA;
      i : Interfaces.C.Int;
      p : access Void
   ) return BOOL;
   pragma import (Cpp,DPA_SetPtr,"DPA_SetPtr");
   procedure DPA_GetPtr(
      hdpa_x : HDPA;
      i : INT_PTR
   );
   pragma import (Cpp,DPA_GetPtr,"DPA_GetPtr");
   function DPA_GetPtrIndex(
      hdpa_x : HDPA;
      p : access Void
   ) return Interfaces.C.Int;
   pragma import (Cpp,DPA_GetPtrIndex,"DPA_GetPtrIndex");
   function DPA_GetSize(
      hdpa_x : HDPA
   ) return ULONGLONG;
   pragma import (Cpp,DPA_GetSize,"DPA_GetSize");
   function DPA_Sort(
      hdpa_x : HDPA;
      pfnCompare : PFNDACOMPARE;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,DPA_Sort,"DPA_Sort");
   -- DPA_Sort_x(); -- inlined function not supported
   type DPASTREAMINFO_x is record
      iPos : Interfaces.C.Int;
      pvItem : access Void;
   end record;
   pragma Convention (C_Pass_By_Copy,DPASTREAMINFO_x);
   for DPASTREAMINFO_x use record
      iPos at 0 range 0..31;
      pvItem at 0 range 64..127;
   end record;
   for DPASTREAMINFO_x'Size use 128;
   for DPASTREAMINFO_x'Alignment use 8;
   subtype DPASTREAMINFO is DPASTREAMINFO_x;
   -- #include <objidlbase.h>
   -- #include <dpa_dsa.h>
   type PFNDPASTREAM is access function (p1 : access DPASTREAMINFO ; p2 : access IStream ; p3 : access void) return HRESULT; -- HRESULT (DPASTREAMINFO *, struct IStream *, void *)
   pragma Convention(C,PFNDPASTREAM);
   function DPA_LoadStream(
      phdpa : access HDPA;
      pfn : PFNDPASTREAM;
      pstream : access IStream'Class;
      pvInstData : access Void
   ) return HRESULT;
   pragma import (Cpp,DPA_LoadStream,"DPA_LoadStream");
   function DPA_SaveStream(
      hdpa_x : HDPA;
      pfn : PFNDPASTREAM;
      pstream : access IStream'Class;
      pvInstData : access Void
   ) return HRESULT;
   pragma import (Cpp,DPA_SaveStream,"DPA_SaveStream");
   type PFNDPAMERGE is access function (p1 : UINT ; p2 : access void ; p3 : access void ; p4 : LPARAM) return void; -- void *(UINT, void *, void *, LPARAM)
   pragma Convention(C,PFNDPAMERGE);
   type PFNDPAMERGECONST is access function (p1 : UINT ; p2 : access void ; p3 : access void ; p4 : LPARAM) return void; -- const void *(UINT, const void *, const void *, LPARAM)
   pragma Convention(C,PFNDPAMERGECONST);
   function DPA_Merge(
      hdpaDest : HDPA;
      hdpaSrc : HDPA;
      dwFlags : DWORD;
      pfnCompare : PFNDACOMPARE;
      pfnMerge : PFNDPAMERGE;
      lParam_x : LPARAM
   ) return BOOL;
   pragma import (Cpp,DPA_Merge,"DPA_Merge");
   -- DPA_Merge_x(); -- inlined function not supported
   function DPA_Search(
      hdpa_x : HDPA;
      pFind : access Void;
      iStart : Interfaces.C.Int;
      pfnCompare : PFNDACOMPARE;
      lParam_x : LPARAM;
      options : UINT
   ) return Interfaces.C.Int;
   pragma import (Cpp,DPA_Search,"DPA_Search");
   -- DPA_Search_x(); -- inlined function not supported
   function Str_SetPtrW(
      ppsz : access LPWSTR;
      psz_x : LPCWSTR
   ) return BOOL;
   pragma import (Cpp,Str_SetPtrW,"Str_SetPtrW");
   -- #include <CommCtrl.h>
   function TrackMouseEvent_x_x(
      lpEventTrack : LPTRACKMOUSEEVENT
   ) return BOOL;
   pragma import (Cpp,TrackMouseEvent_x_x,"_TrackMouseEvent");
   function FlatSB_EnableScrollBar(
      param1 : HWND;
      param2 : Interfaces.C.Int;
      param3 : UINT
   ) return BOOL;
   pragma import (Cpp,FlatSB_EnableScrollBar,"FlatSB_EnableScrollBar");
   function FlatSB_ShowScrollBar(
      param1 : HWND;
      code : Interfaces.C.Int;
      param3 : BOOL
   ) return BOOL;
   pragma import (Cpp,FlatSB_ShowScrollBar,"FlatSB_ShowScrollBar");
   function FlatSB_GetScrollRange(
      param1 : HWND;
      code : Interfaces.C.Int;
      param3 : LPINT;
      param4 : LPINT
   ) return BOOL;
   pragma import (Cpp,FlatSB_GetScrollRange,"FlatSB_GetScrollRange");
   function FlatSB_GetScrollInfo(
      param1 : HWND;
      code : Interfaces.C.Int;
      param3 : LPSCROLLINFO
   ) return BOOL;
   pragma import (Cpp,FlatSB_GetScrollInfo,"FlatSB_GetScrollInfo");
   function FlatSB_GetScrollPos(
      param1 : HWND;
      code : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,FlatSB_GetScrollPos,"FlatSB_GetScrollPos");
   function FlatSB_GetScrollProp(
      param1 : HWND;
      propIndex : Interfaces.C.Int;
      param3 : LPINT
   ) return BOOL;
   pragma import (Cpp,FlatSB_GetScrollProp,"FlatSB_GetScrollProp");
   function FlatSB_GetScrollPropPtr(
      param1 : HWND;
      propIndex : Interfaces.C.Int;
      param3 : PINT_PTR
   ) return BOOL;
   pragma import (Cpp,FlatSB_GetScrollPropPtr,"FlatSB_GetScrollPropPtr");
   function FlatSB_SetScrollPos(
      param1 : HWND;
      code : Interfaces.C.Int;
      pos : Interfaces.C.Int;
      fRedraw : BOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,FlatSB_SetScrollPos,"FlatSB_SetScrollPos");
   function FlatSB_SetScrollInfo(
      param1 : HWND;
      code : Interfaces.C.Int;
      psi : LPSCROLLINFO;
      fRedraw : BOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,FlatSB_SetScrollInfo,"FlatSB_SetScrollInfo");
   function FlatSB_SetScrollRange(
      param1 : HWND;
      code : Interfaces.C.Int;
      min : Interfaces.C.Int;
      max : Interfaces.C.Int;
      fRedraw : BOOL
   ) return Interfaces.C.Int;
   pragma import (Cpp,FlatSB_SetScrollRange,"FlatSB_SetScrollRange");
   function FlatSB_SetScrollProp(
      param1 : HWND;
      index : UINT;
      newValue : INT_PTR;
      param4 : BOOL
   ) return BOOL;
   pragma import (Cpp,FlatSB_SetScrollProp,"FlatSB_SetScrollProp");
   function InitializeFlatSB(
      param1 : HWND
   ) return BOOL;
   pragma import (Cpp,InitializeFlatSB,"InitializeFlatSB");
   function UninitializeFlatSB(
      param1 : HWND
   ) return HRESULT;
   pragma import (Cpp,UninitializeFlatSB,"UninitializeFlatSB");
   type SUBCLASSPROC is access function (p1 : HWND ; p2 : UINT ; p3 : WPARAM ; p4 : LPARAM ; p5 : UINT_PTR ; p6 : DWORD_PTR) return LRESULT; -- LRESULT (HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR)
   pragma Convention(C,SUBCLASSPROC);
   function SetWindowSubclass(
      hWnd_x : HWND;
      pfnSubclass : SUBCLASSPROC;
      uIdSubclass : UINT_PTR;
      dwRefData : DWORD_PTR
   ) return BOOL;
   pragma import (Cpp,SetWindowSubclass,"SetWindowSubclass");
   function GetWindowSubclass(
      hWnd_x : HWND;
      pfnSubclass : SUBCLASSPROC;
      uIdSubclass : UINT_PTR;
      pdwRefData : access DWORD_PTR
   ) return BOOL;
   pragma import (Cpp,GetWindowSubclass,"GetWindowSubclass");
   function RemoveWindowSubclass(
      hWnd_x : HWND;
      pfnSubclass : SUBCLASSPROC;
      uIdSubclass : UINT_PTR
   ) return BOOL;
   pragma import (Cpp,RemoveWindowSubclass,"RemoveWindowSubclass");
   function DefSubclassProc(
      hWnd_x : HWND;
      uMsg : UINT;
      wParam_x : WPARAM;
      lParam_x : LPARAM
   ) return LRESULT;
   pragma import (Cpp,DefSubclassProc,"DefSubclassProc");
   type LI_METRIC_x is (
      LIM_SMALL,
      LIM_LARGE
   );
   for LI_METRIC_x use (
      LIM_SMALL => 0,
      LIM_LARGE => 1
   );
   for LI_METRIC_x'Size use 32;
   function LoadIconMetric(
      hinst : HINSTANCE;
      pszName : PCWSTR;
      lims : Interfaces.C.Int;
      phico : access HICON
   ) return HRESULT;
   pragma import (Cpp,LoadIconMetric,"LoadIconMetric");
   function LoadIconWithScaleDown(
      hinst : HINSTANCE;
      pszName : PCWSTR;
      cx : Interfaces.C.Int;
      cy_x : Interfaces.C.Int;
      phico : access HICON
   ) return HRESULT;
   pragma import (Cpp,LoadIconWithScaleDown,"LoadIconWithScaleDown");
   function DrawShadowText(
      hdc_x : HDC;
      pszText : LPCWSTR;
      cch : UINT;
      prc : access RECT;
      dwFlags : DWORD;
      crText : COLORREF;
      crShadow : COLORREF;
      ixOffset : Interfaces.C.Int;
      iyOffset : Interfaces.C.Int
   ) return Interfaces.C.Int;
   pragma import (Cpp,DrawShadowText,"DrawShadowText");
   -- #include <ComSvcs.h>
   type ISecurityIdentityColl;
   type ISecurityCallersColl;
   type ISecurityCallContext;
   type IGetSecurityCallContext;
   type SecurityProperty;
   type ContextInfo;
   type ContextInfo2;
   type ObjectContext;
   type ITransactionContextEx;
   type ITransactionContext;
   type ICreateWithTransactionEx;
   type ICreateWithLocalTransaction;
   type ICreateWithTipTransactionEx;
   type IComLTxEvents;
   type IComUserEvent;
   type IComThreadEvents;
   type IComAppEvents;
   type IComInstanceEvents;
   type IComTransactionEvents;
   type IComMethodEvents;
   type IComObjectEvents;
   type IComResourceEvents;
   type IComSecurityEvents;
   type IComObjectPoolEvents;
   type IComObjectPoolEvents2;
   type IComObjectConstructionEvents;
   type IComActivityEvents;
   type IComIdentityEvents;
   type IComQCEvents;
   type IComExceptionEvents;
   type ILBEvents;
   type IComCRMEvents;
   type IComMethod2Events;
   type IComTrackingInfoEvents;
   type IComTrackingInfoCollection;
   type IComTrackingInfoObject;
   type IComTrackingInfoProperties;
   type IComApp2Events;
   type IComTransaction2Events;
   type IComInstance2Events;
   type IComObjectPool2Events;
   type IComObjectConstruction2Events;
   type ISystemAppEventData;
   type IMtsEvents;
   type IMtsEventInfo;
   type IMTSLocator;
   type IMtsGrp;
   type IMessageMover;
   type IEventServerTrace;
   type IGetAppTrackerData;
   type IDispenserManager;
   type IHolder;
   type IDispenserDriver;
   type ITransactionProxy;
   type IContextSecurityPerimeter;
   type ITxProxyHolder;
   type IObjectContext;
   type IObjectControl;
   type IEnumNames;
   type ISecurityProperty;
   type ObjectControl;
   type ISharedProperty;
   type ISharedPropertyGroup;
   type ISharedPropertyGroupManager;
   type IObjectConstruct;
   type IObjectConstructString;
   type IObjectContextActivity;
   type IObjectContextInfo;
   type IObjectContextInfo2;
   type ITransactionStatus;
   type IObjectContextTip;
   type IPlaybackControl;
   type IGetContextProperties;
   type IContextState;
   type IPoolManager;
   type ISelectCOMLBServer;
   type ICOMLBArguments;
   type ICrmLogControl;
   type ICrmCompensatorVariants;
   type ICrmCompensator;
   type ICrmMonitorLogRecords;
   type ICrmMonitorClerks;
   type ICrmMonitor;
   type ICrmFormatLogRecords;
   type IServiceIISIntrinsicsConfig;
   type IServiceComTIIntrinsicsConfig;
   type IServiceSxsConfig;
   type ICheckSxsConfig;
   type IServiceInheritanceConfig;
   type IServiceThreadPoolConfig;
   type IServiceTransactionConfigBase;
   type IServiceTransactionConfig;
   type IServiceSysTxnConfig;
   type IServiceSynchronizationConfig;
   type IServiceTrackerConfig;
   type IServicePartitionConfig;
   type IServiceCall;
   type IAsyncErrorNotify;
   type IServiceActivity;
   type IThreadPoolKnobs;
   type IComStaThreadPoolKnobs;
   type IComMtaThreadPoolKnobs;
   type IComStaThreadPoolKnobs2;
   type IProcessInitializer;
   type IServicePoolConfig;
   type IServicePool;
   type IManagedPooledObj;
   type IManagedPoolAction;
   type IManagedObjectInfo;
   type IAppDomainHelper;
   type IAssemblyLocator;
   type IManagedActivationEvents;
   type ISendMethodEvents;
   type ITransactionResourcePool;
   type IMTSCall;
   type IContextProperties;
   type IObjPool;
   type ITransactionProperty;
   type IMTSActivity;
   -- #include <ocidl.h>
   type IEnumConnections;
   type IConnectionPoint;
   type IEnumConnectionPoints;
   type IConnectionPointContainer;
   type IClassFactory2;
   type IProvideClassInfo;
   type IProvideClassInfo2;
   type IProvideMultipleClassInfo;
   type IOleControl;
   type IOleControlSite;
   type IPropertyPage;
   type IPropertyPage2;
   type IPropertyPageSite;
   type IPropertyNotifySink;
   type ISpecifyPropertyPages;
   type IPersistMemory;
   type IPersistStreamInit;
   type IPersistPropertyBag;
   type ISimpleFrameSite;
   type IFont;
   type IPicture;
   type IPicture2;
   type IFontEventsDisp;
   type IFontDisp;
   type IPictureDisp;
   type IOleInPlaceObjectWindowless;
   type IOleInPlaceSiteEx;
   type IOleInPlaceSiteWindowless;
   type IViewObjectEx;
   type IOleUndoUnit;
   type IOleParentUndoUnit;
   type IEnumOleUndoUnits;
   type IOleUndoManager;
   type IPointerInactive;
   type IObjectWithSite;
   type IPerPropertyBrowsing;
   type IPropertyBag2;
   type IPersistPropertyBag2;
   type IAdviseSinkEx;
   type IQuickActivate;
   type tagUASFLAGS is (
      UAS_NORMAL,
      UAS_BLOCKED,
      UAS_NOPARENTENABLE,
      UAS_MASK
   );
   for tagUASFLAGS use (
      UAS_NORMAL => 0,
      UAS_BLOCKED => 1,
      UAS_NOPARENTENABLE => 2,
      UAS_MASK => 3
   );
   for tagUASFLAGS'Size use 32;
   subtype UASFLAGS is tagUASFLAGS;
   type tagREADYSTATE is (
      READYSTATE_UNINITIALIZED,
      READYSTATE_LOADING,
      READYSTATE_LOADED,
      READYSTATE_INTERACTIVE,
      READYSTATE_COMPLETE
   );
   for tagREADYSTATE use (
      READYSTATE_UNINITIALIZED => 0,
      READYSTATE_LOADING => 1,
      READYSTATE_LOADED => 2,
      READYSTATE_INTERACTIVE => 3,
      READYSTATE_COMPLETE => 4
   );
   for tagREADYSTATE'Size use 32;
   subtype READYSTATE is tagREADYSTATE;
   type PENUMCONNECTIONS is access all IEnumConnections;
   type LPENUMCONNECTIONS is access all IEnumConnections;
   type tagCONNECTDATA is record
      pUnk : access IUnknown'Class;
      dwCookie : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCONNECTDATA);
   for tagCONNECTDATA use record
      pUnk at 0 range 0..63;
      dwCookie at 0 range 64..95;
   end record;
   for tagCONNECTDATA'Size use 128;
   for tagCONNECTDATA'Alignment use 8;
   subtype CONNECTDATA is tagCONNECTDATA;
   type PCONNECTDATA is access all tagCONNECTDATA;
   type LPCONNECTDATA is access all tagCONNECTDATA;
   IID_IEnumConnections : aliased constant IID;
   pragma import (C,IID_IEnumConnections,"IID_IEnumConnections");
   type IEnumConnections_Ptr is access all IEnumConnections; -- Auto Generated Dependancy
   type IEnumConnections is limited interface and IUnknown;
      function Next(
         This : access IEnumConnections;
         cConnections : ULONG;
         rgcd : LPCONNECTDATA;
         pcFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumConnections;
         cConnections : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumConnections) return HRESULT is abstract;
      function Clone(
         This : access IEnumConnections;
         ppEnum : access IEnumConnections_Ptr
      ) return HRESULT is abstract;
   function IEnumConnections_RemoteNext_Proxy(
      This : access IEnumConnections'Class;
      cConnections : ULONG;
      rgcd : LPCONNECTDATA;
      pcFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumConnections_RemoteNext_Proxy,"IEnumConnections_RemoteNext_Proxy");
   procedure IEnumConnections_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumConnections_RemoteNext_Stub,"IEnumConnections_RemoteNext_Stub");
   type PCONNECTIONPOINT is access all IConnectionPoint;
   type LPCONNECTIONPOINT is access all IConnectionPoint;
   IID_IConnectionPoint : aliased constant IID;
   pragma import (C,IID_IConnectionPoint,"IID_IConnectionPoint");
   type IConnectionPointContainer_Ptr is access all IConnectionPointContainer; -- Auto Generated Dependancy
   type IConnectionPoint is limited interface and IUnknown;
      function GetConnectionInterface(
         This : access IConnectionPoint;
         pIID : access IID
      ) return HRESULT is abstract;
      function GetConnectionPointContainer(
         This : access IConnectionPoint;
         ppCPC : access IConnectionPointContainer_Ptr
      ) return HRESULT is abstract;
      function Advise(
         This : access IConnectionPoint;
         pUnkSink : access IUnknown'Class;
         pdwCookie : access DWORD
      ) return HRESULT is abstract;
      function Unadvise(
         This : access IConnectionPoint;
         dwCookie : DWORD
      ) return HRESULT is abstract;
      function EnumConnections(
         This : access IConnectionPoint;
         ppEnum : access IEnumConnections_Ptr
      ) return HRESULT is abstract;
   type IConnectionPoint_Ptr is access all IConnectionPoint'Class;
   type PENUMCONNECTIONPOINTS is access all IEnumConnectionPoints;
   type LPENUMCONNECTIONPOINTS is access all IEnumConnectionPoints;
   IID_IEnumConnectionPoints : aliased constant IID;
   pragma import (C,IID_IEnumConnectionPoints,"IID_IEnumConnectionPoints");
   type IEnumConnectionPoints_Ptr is access all IEnumConnectionPoints; -- Auto Generated Dependancy
   type IEnumConnectionPoints is limited interface and IUnknown;
      function Next(
         This : access IEnumConnectionPoints;
         cConnections : ULONG;
         ppCP : access LPCONNECTIONPOINT;
         pcFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumConnectionPoints;
         cConnections : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumConnectionPoints) return HRESULT is abstract;
      function Clone(
         This : access IEnumConnectionPoints;
         ppEnum : access IEnumConnectionPoints_Ptr
      ) return HRESULT is abstract;
   function IEnumConnectionPoints_RemoteNext_Proxy(
      This : access IEnumConnectionPoints'Class;
      cConnections : ULONG;
      ppCP : access LPCONNECTIONPOINT;
      pcFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumConnectionPoints_RemoteNext_Proxy,"IEnumConnectionPoints_RemoteNext_Proxy");
   procedure IEnumConnectionPoints_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumConnectionPoints_RemoteNext_Stub,"IEnumConnectionPoints_RemoteNext_Stub");
   type PCONNECTIONPOINTCONTAINER is access all IConnectionPointContainer;
   type LPCONNECTIONPOINTCONTAINER is access all IConnectionPointContainer;
   IID_IConnectionPointContainer : aliased constant IID;
   pragma import (C,IID_IConnectionPointContainer,"IID_IConnectionPointContainer");
   type IConnectionPointContainer is limited interface and IUnknown;
      function EnumConnectionPoints(
         This : access IConnectionPointContainer;
         ppEnum : access IEnumConnectionPoints_Ptr
      ) return HRESULT is abstract;
      function FindConnectionPoint(
         This : access IConnectionPointContainer;
         riid : access constant IID;
         ppCP : access IConnectionPoint_Ptr
      ) return HRESULT is abstract;
   type LPCLASSFACTORY2 is access all IClassFactory2;
   type tagLICINFO is record
      cbLicInfo : LONG;
      fRuntimeKeyAvail : BOOL;
      fLicVerified : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagLICINFO);
   for tagLICINFO use record
      cbLicInfo at 0 range 0..31;
      fRuntimeKeyAvail at 0 range 32..63;
      fLicVerified at 0 range 64..95;
   end record;
   for tagLICINFO'Size use 96;
   for tagLICINFO'Alignment use 4;
   subtype LICINFO is tagLICINFO;
   type LPLICINFO is access all tagLICINFO;
   IID_IClassFactory2 : aliased constant IID;
   pragma import (C,IID_IClassFactory2,"IID_IClassFactory2");
   type IClassFactory2 is limited interface and IClassFactory;
      function GetLicInfo(
         This : access IClassFactory2;
         pLicInfo : access LICINFO
      ) return HRESULT is abstract;
      function RequestLicKey(
         This : access IClassFactory2;
         dwReserved : DWORD;
         pBstrKey : access BSTR
      ) return HRESULT is abstract;
      function CreateInstanceLic(
         This : access IClassFactory2;
         pUnkOuter : access IUnknown'Class;
         pUnkReserved : access IUnknown'Class;
         riid : access constant IID;
         bstrKey : BSTR;
         ppvObj : access PVOID
      ) return HRESULT is abstract;
   type IClassFactory2_Ptr is access all IClassFactory2'Class;
   function IClassFactory2_RemoteCreateInstanceLic_Proxy(
      This : access IClassFactory2'Class;
      riid : access constant IID;
      bstrKey : BSTR;
      ppvObj : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IClassFactory2_RemoteCreateInstanceLic_Proxy,"IClassFactory2_RemoteCreateInstanceLic_Proxy");
   procedure IClassFactory2_RemoteCreateInstanceLic_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IClassFactory2_RemoteCreateInstanceLic_Stub,"IClassFactory2_RemoteCreateInstanceLic_Stub");
   type LPPROVIDECLASSINFO is access all IProvideClassInfo;
   IID_IProvideClassInfo : aliased constant IID;
   pragma import (C,IID_IProvideClassInfo,"IID_IProvideClassInfo");
   type IProvideClassInfo is limited interface and IUnknown;
      function GetClassInfoA_x(
         This : access IProvideClassInfo;
         ppTI : access ITypeInfo_Ptr
      ) return HRESULT is abstract;
   type IProvideClassInfo_Ptr is access all IProvideClassInfo'Class;
   type LPPROVIDECLASSINFO2 is access all IProvideClassInfo2;
   type tagGUIDKIND is (
      GUIDKIND_DEFAULT_SOURCE_DISP_IID
   );
   for tagGUIDKIND use (
      GUIDKIND_DEFAULT_SOURCE_DISP_IID => 1
   );
   for tagGUIDKIND'Size use 32;
   subtype GUIDKIND is tagGUIDKIND;
   IID_IProvideClassInfo2 : aliased constant IID;
   pragma import (C,IID_IProvideClassInfo2,"IID_IProvideClassInfo2");
   type IProvideClassInfo2 is limited interface and IProvideClassInfo;
      function GetGUID(
         This : access IProvideClassInfo2;
         dwGuidKind : DWORD;
         pGUID : access GUID
      ) return HRESULT is abstract;
   type IProvideClassInfo2_Ptr is access all IProvideClassInfo2'Class;
   type LPPROVIDEMULTIPLECLASSINFO is access all IProvideMultipleClassInfo;
   IID_IProvideMultipleClassInfo : aliased constant IID;
   pragma import (C,IID_IProvideMultipleClassInfo,"IID_IProvideMultipleClassInfo");
   type IProvideMultipleClassInfo is limited interface and IProvideClassInfo2;
      function GetMultiTypeInfoCount(
         This : access IProvideMultipleClassInfo;
         pcti : access ULONG
      ) return HRESULT is abstract;
      function GetInfoOfIndex(
         This : access IProvideMultipleClassInfo;
         iti : ULONG;
         dwFlags : DWORD;
         pptiCoClass : access ITypeInfo_Ptr;
         pdwTIFlags : access DWORD;
         pcdispidReserved : access ULONG;
         piidPrimary : access IID;
         piidSource : access IID
      ) return HRESULT is abstract;
   type IProvideMultipleClassInfo_Ptr is access all IProvideMultipleClassInfo'Class;
   type LPOLECONTROL is access all IOleControl;
   type tagCONTROLINFO is record
      cb : ULONG;
      hAccel_x : HACCEL;
      cAccel : USHORT;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCONTROLINFO);
   for tagCONTROLINFO use record
      cb at 0 range 0..31;
      hAccel_x at 0 range 64..127;
      cAccel at 0 range 128..143;
      dwFlags at 0 range 160..191;
   end record;
   for tagCONTROLINFO'Size use 192;
   for tagCONTROLINFO'Alignment use 8;
   subtype CONTROLINFO is tagCONTROLINFO;
   type LPCONTROLINFO is access all tagCONTROLINFO;
   type tagCTRLINFO is (
      CTRLINFO_EATS_RETURN,
      CTRLINFO_EATS_ESCAPE
   );
   for tagCTRLINFO use (
      CTRLINFO_EATS_RETURN => 1,
      CTRLINFO_EATS_ESCAPE => 2
   );
   for tagCTRLINFO'Size use 32;
   subtype CTRLINFO is tagCTRLINFO;
   IID_IOleControl : aliased constant IID;
   pragma import (C,IID_IOleControl,"IID_IOleControl");
   type IOleControl is limited interface and IUnknown;
      function GetControlInfo(
         This : access IOleControl;
         pCI : access CONTROLINFO
      ) return HRESULT is abstract;
      function OnMnemonic(
         This : access IOleControl;
         pMsg_x : access MSG
      ) return HRESULT is abstract;
      function OnAmbientPropertyChange(
         This : access IOleControl;
         dispID_x : DISPID
      ) return HRESULT is abstract;
      function FreezeEvents(
         This : access IOleControl;
         bFreeze : BOOL
      ) return HRESULT is abstract;
   type IOleControl_Ptr is access all IOleControl'Class;
   type LPOLECONTROLSITE is access all IOleControlSite;
   type tagPOINTF is record
      x : FLOAT;
      y : FLOAT;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPOINTF);
   for tagPOINTF use record
      x at 0 range 0..31;
      y at 0 range 32..63;
   end record;
   for tagPOINTF'Size use 64;
   for tagPOINTF'Alignment use 4;
   subtype POINTF is tagPOINTF;
   type LPPOINTF is access all tagPOINTF;
   type tagXFORMCOORDS is (
      XFORMCOORDS_POSITION,
      XFORMCOORDS_SIZE,
      XFORMCOORDS_HIMETRICTOCONTAINER,
      XFORMCOORDS_CONTAINERTOHIMETRIC,
      XFORMCOORDS_EVENTCOMPAT
   );
   for tagXFORMCOORDS use (
      XFORMCOORDS_POSITION => 1,
      XFORMCOORDS_SIZE => 2,
      XFORMCOORDS_HIMETRICTOCONTAINER => 4,
      XFORMCOORDS_CONTAINERTOHIMETRIC => 8,
      XFORMCOORDS_EVENTCOMPAT => 16
   );
   for tagXFORMCOORDS'Size use 32;
   subtype XFORMCOORDS is tagXFORMCOORDS;
   IID_IOleControlSite : aliased constant IID;
   pragma import (C,IID_IOleControlSite,"IID_IOleControlSite");
   type IOleControlSite is limited interface and IUnknown;
      function OnControlInfoChanged(This : access IOleControlSite) return HRESULT is abstract;
      function LockInPlaceActive(
         This : access IOleControlSite;
         fLock : BOOL
      ) return HRESULT is abstract;
      function GetExtendedControl(
         This : access IOleControlSite;
         ppDisp : access IDispatch_Ptr
      ) return HRESULT is abstract;
      function TransformCoords(
         This : access IOleControlSite;
         pPtlHimetric : access POINTL;
         pPtfContainer : access POINTF;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function TranslateAcceleratorA_x(
         This : access IOleControlSite;
         pMsg_x : access MSG;
         grfModifiers : DWORD
      ) return HRESULT is abstract;
      function OnFocus(
         This : access IOleControlSite;
         fGotFocus : BOOL
      ) return HRESULT is abstract;
      function ShowPropertyFrame(This : access IOleControlSite) return HRESULT is abstract;
   type IOleControlSite_Ptr is access all IOleControlSite'Class;
   type LPPROPERTYPAGE is access all IPropertyPage;
   type tagPROPPAGEINFO is record
      cb : ULONG;
      pszTitle : LPOLESTR;
      size_x : SIZE;
      pszDocString : LPOLESTR;
      pszHelpFile : LPOLESTR;
      dwHelpContext : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPROPPAGEINFO);
   for tagPROPPAGEINFO use record
      cb at 0 range 0..31;
      pszTitle at 0 range 64..127;
      size_x at 0 range 128..191;
      pszDocString at 0 range 192..255;
      pszHelpFile at 0 range 256..319;
      dwHelpContext at 0 range 320..351;
   end record;
   for tagPROPPAGEINFO'Size use 384;
   for tagPROPPAGEINFO'Alignment use 8;
   subtype PROPPAGEINFO is tagPROPPAGEINFO;
   type LPPROPPAGEINFO is access all tagPROPPAGEINFO;
   IID_IPropertyPage : aliased constant IID;
   pragma import (C,IID_IPropertyPage,"IID_IPropertyPage");
   type IPropertyPage is limited interface and IUnknown;
      function SetPageSite(
         This : access IPropertyPage;
         pPageSite : access IPropertyPageSite'Class
      ) return HRESULT is abstract;
      function Activate(
         This : access IPropertyPage;
         hWndParent : HWND;
         pRect_x : LPCRECT;
         bModal : BOOL
      ) return HRESULT is abstract;
      function Deactivate(This : access IPropertyPage) return HRESULT is abstract;
      function GetPageInfo(
         This : access IPropertyPage;
         pPageInfo : access PROPPAGEINFO
      ) return HRESULT is abstract;
      function SetObjects(
         This : access IPropertyPage;
         cObjects : ULONG;
         ppUnk : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function Show(
         This : access IPropertyPage;
         nCmdShow : UINT
      ) return HRESULT is abstract;
      function Move(
         This : access IPropertyPage;
         pRect_x : LPCRECT
      ) return HRESULT is abstract;
      function IsPageDirty(This : access IPropertyPage) return HRESULT is abstract;
      function Apply(This : access IPropertyPage) return HRESULT is abstract;
      function Help(
         This : access IPropertyPage;
         pszHelpDir : LPCOLESTR
      ) return HRESULT is abstract;
      function TranslateAcceleratorA_x(
         This : access IPropertyPage;
         pMsg_x : access MSG
      ) return HRESULT is abstract;
   type IPropertyPage_Ptr is access all IPropertyPage'Class;
   type LPPROPERTYPAGE2 is access all IPropertyPage2;
   IID_IPropertyPage2 : aliased constant IID;
   pragma import (C,IID_IPropertyPage2,"IID_IPropertyPage2");
   type IPropertyPage2 is limited interface and IPropertyPage;
      function EditProperty(
         This : access IPropertyPage2;
         dispID_x : DISPID
      ) return HRESULT is abstract;
   type IPropertyPage2_Ptr is access all IPropertyPage2'Class;
   type LPPROPERTYPAGESITE is access all IPropertyPageSite;
   type tagPROPPAGESTATUS is (
      PROPPAGESTATUS_DIRTY,
      PROPPAGESTATUS_VALIDATE,
      PROPPAGESTATUS_CLEAN
   );
   for tagPROPPAGESTATUS use (
      PROPPAGESTATUS_DIRTY => 1,
      PROPPAGESTATUS_VALIDATE => 2,
      PROPPAGESTATUS_CLEAN => 4
   );
   for tagPROPPAGESTATUS'Size use 32;
   subtype PROPPAGESTATUS is tagPROPPAGESTATUS;
   IID_IPropertyPageSite : aliased constant IID;
   pragma import (C,IID_IPropertyPageSite,"IID_IPropertyPageSite");
   type IPropertyPageSite is limited interface and IUnknown;
      function OnStatusChange(
         This : access IPropertyPageSite;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function GetLocaleID(
         This : access IPropertyPageSite;
         pLocaleID : access LCID
      ) return HRESULT is abstract;
      function GetPageContainer(
         This : access IPropertyPageSite;
         ppUnk : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function TranslateAcceleratorA_x(
         This : access IPropertyPageSite;
         pMsg_x : access MSG
      ) return HRESULT is abstract;
   type IPropertyPageSite_Ptr is access all IPropertyPageSite'Class;
   type LPPROPERTYNOTIFYSINK is access all IPropertyNotifySink;
   IID_IPropertyNotifySink : aliased constant IID;
   pragma import (C,IID_IPropertyNotifySink,"IID_IPropertyNotifySink");
   type IPropertyNotifySink is limited interface and IUnknown;
      function OnChanged(
         This : access IPropertyNotifySink;
         dispID_x : DISPID
      ) return HRESULT is abstract;
      function OnRequestEdit(
         This : access IPropertyNotifySink;
         dispID_x : DISPID
      ) return HRESULT is abstract;
   type IPropertyNotifySink_Ptr is access all IPropertyNotifySink'Class;
   type LPSPECIFYPROPERTYPAGES is access all ISpecifyPropertyPages;
   type tagCAUUID is record
      cElems : ULONG;
      pElems : access GUID;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCAUUID);
   for tagCAUUID use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCAUUID'Size use 128;
   for tagCAUUID'Alignment use 8;
   subtype CAUUID is tagCAUUID;
   type LPCAUUID is access all tagCAUUID;
   IID_ISpecifyPropertyPages : aliased constant IID;
   pragma import (C,IID_ISpecifyPropertyPages,"IID_ISpecifyPropertyPages");
   type ISpecifyPropertyPages is limited interface and IUnknown;
      function GetPages(
         This : access ISpecifyPropertyPages;
         pPages : access CAUUID
      ) return HRESULT is abstract;
   type ISpecifyPropertyPages_Ptr is access all ISpecifyPropertyPages'Class;
   type LPPERSISTMEMORY is access all IPersistMemory;
   IID_IPersistMemory : aliased constant IID;
   pragma import (C,IID_IPersistMemory,"IID_IPersistMemory");
   type IPersistMemory is limited interface and IPersist;
      function IsDirty(This : access IPersistMemory) return HRESULT is abstract;
      function Load(
         This : access IPersistMemory;
         pMem : LPVOID;
         cbSize : ULONG
      ) return HRESULT is abstract;
      function Save(
         This : access IPersistMemory;
         pMem : LPVOID;
         fClearDirty : BOOL;
         cbSize : ULONG
      ) return HRESULT is abstract;
      function GetSizeMax(
         This : access IPersistMemory;
         pCbSize : access ULONG
      ) return HRESULT is abstract;
      function InitNew(This : access IPersistMemory) return HRESULT is abstract;
   type IPersistMemory_Ptr is access all IPersistMemory'Class;
   function IPersistMemory_RemoteLoad_Proxy(
      This : access IPersistMemory'Class;
      pMem : access BYTE;
      cbSize : ULONG
   ) return HRESULT;
   pragma import (Cpp,IPersistMemory_RemoteLoad_Proxy,"IPersistMemory_RemoteLoad_Proxy");
   procedure IPersistMemory_RemoteLoad_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IPersistMemory_RemoteLoad_Stub,"IPersistMemory_RemoteLoad_Stub");
   function IPersistMemory_RemoteSave_Proxy(
      This : access IPersistMemory'Class;
      pMem : access BYTE;
      fClearDirty : BOOL;
      cbSize : ULONG
   ) return HRESULT;
   pragma import (Cpp,IPersistMemory_RemoteSave_Proxy,"IPersistMemory_RemoteSave_Proxy");
   procedure IPersistMemory_RemoteSave_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IPersistMemory_RemoteSave_Stub,"IPersistMemory_RemoteSave_Stub");
   type LPPERSISTSTREAMINIT is access all IPersistStreamInit;
   IID_IPersistStreamInit : aliased constant IID;
   pragma import (C,IID_IPersistStreamInit,"IID_IPersistStreamInit");
   type IPersistStreamInit is limited interface and IPersist;
      function IsDirty(This : access IPersistStreamInit) return HRESULT is abstract;
      function Load(
         This : access IPersistStreamInit;
         pStm : LPSTREAM
      ) return HRESULT is abstract;
      function Save(
         This : access IPersistStreamInit;
         pStm : LPSTREAM;
         fClearDirty : BOOL
      ) return HRESULT is abstract;
      function GetSizeMax(
         This : access IPersistStreamInit;
         pCbSize : access ULARGE_INTEGER
      ) return HRESULT is abstract;
      function InitNew(This : access IPersistStreamInit) return HRESULT is abstract;
   type IPersistStreamInit_Ptr is access all IPersistStreamInit'Class;
   type LPPERSISTPROPERTYBAG is access all IPersistPropertyBag;
   IID_IPersistPropertyBag : aliased constant IID;
   pragma import (C,IID_IPersistPropertyBag,"IID_IPersistPropertyBag");
   type IPersistPropertyBag is limited interface and IPersist;
      function InitNew(This : access IPersistPropertyBag) return HRESULT is abstract;
      function Load(
         This : access IPersistPropertyBag;
         pPropBag : access IPropertyBag'Class;
         pErrorLog : access IErrorLog'Class
      ) return HRESULT is abstract;
      function Save(
         This : access IPersistPropertyBag;
         pPropBag : access IPropertyBag'Class;
         fClearDirty : BOOL;
         fSaveAllProperties : BOOL
      ) return HRESULT is abstract;
   type IPersistPropertyBag_Ptr is access all IPersistPropertyBag'Class;
   type LPSIMPLEFRAMESITE is access all ISimpleFrameSite;
   IID_ISimpleFrameSite : aliased constant IID;
   pragma import (C,IID_ISimpleFrameSite,"IID_ISimpleFrameSite");
   type ISimpleFrameSite is limited interface and IUnknown;
      function PreMessageFilter(
         This : access ISimpleFrameSite;
         hWnd_x : HWND;
         msg_x : UINT;
         wp : WPARAM;
         lp : LPARAM;
         plResult : access LRESULT;
         pdwCookie : access DWORD
      ) return HRESULT is abstract;
      function PostMessageFilter(
         This : access ISimpleFrameSite;
         hWnd_x : HWND;
         msg_x : UINT;
         wp : WPARAM;
         lp : LPARAM;
         plResult : access LRESULT;
         dwCookie : DWORD
      ) return HRESULT is abstract;
   type ISimpleFrameSite_Ptr is access all ISimpleFrameSite'Class;
   type LPFONT is access all IFont;
   subtype TEXTMETRICOLE is TEXTMETRICW;
   type LPTEXTMETRICOLE is access all TEXTMETRICOLE;
   IID_IFont : aliased constant IID;
   pragma import (C,IID_IFont,"IID_IFont");
   type IFont_Ptr is access all IFont; -- Auto Generated Dependancy
   type IFont is limited interface and IUnknown;
      function get_Name(
         This : access IFont;
         pName : access BSTR
      ) return HRESULT is abstract;
      function put_Name(
         This : access IFont;
         name : BSTR
      ) return HRESULT is abstract;
      function get_Size(
         This : access IFont;
         pSize_x : access CY
      ) return HRESULT is abstract;
      function put_Size(
         This : access IFont;
         size_x : CY
      ) return HRESULT is abstract;
      function get_Bold(
         This : access IFont;
         pBold : access BOOL
      ) return HRESULT is abstract;
      function put_Bold(
         This : access IFont;
         bold : BOOL
      ) return HRESULT is abstract;
      function get_Italic(
         This : access IFont;
         pItalic : access BOOL
      ) return HRESULT is abstract;
      function put_Italic(
         This : access IFont;
         italic : BOOL
      ) return HRESULT is abstract;
      function get_Underline(
         This : access IFont;
         pUnderline : access BOOL
      ) return HRESULT is abstract;
      function put_Underline(
         This : access IFont;
         underline : BOOL
      ) return HRESULT is abstract;
      function get_Strikethrough(
         This : access IFont;
         pStrikethrough : access BOOL
      ) return HRESULT is abstract;
      function put_Strikethrough(
         This : access IFont;
         strikethrough : BOOL
      ) return HRESULT is abstract;
      function get_Weight(
         This : access IFont;
         pWeight : access SHORT
      ) return HRESULT is abstract;
      function put_Weight(
         This : access IFont;
         weight : SHORT
      ) return HRESULT is abstract;
      function get_Charset(
         This : access IFont;
         pCharset : access SHORT
      ) return HRESULT is abstract;
      function put_Charset(
         This : access IFont;
         charset : SHORT
      ) return HRESULT is abstract;
      function get_hFont(
         This : access IFont;
         phFont : access HFONT
      ) return HRESULT is abstract;
      function Clone(
         This : access IFont;
         ppFont : access IFont_Ptr
      ) return HRESULT is abstract;
      function IsEqual(
         This : access IFont;
         pFontOther : access IFont'Class
      ) return HRESULT is abstract;
      function SetRatio(
         This : access IFont;
         cyLogical : LONG;
         cyHimetric : LONG
      ) return HRESULT is abstract;
      function QueryTextMetrics(
         This : access IFont;
         pTM : access TEXTMETRICOLE
      ) return HRESULT is abstract;
      function AddRefHfont(
         This : access IFont;
         hFont_x : HFONT
      ) return HRESULT is abstract;
      function ReleaseHfont(
         This : access IFont;
         hFont_x : HFONT
      ) return HRESULT is abstract;
      function SetHdc(
         This : access IFont;
         hDC_x : HDC
      ) return HRESULT is abstract;
   type LPPICTURE is access all IPicture;
   type tagPictureAttributes is (
      PICTURE_SCALABLE,
      PICTURE_TRANSPARENT
   );
   for tagPictureAttributes use (
      PICTURE_SCALABLE => 1,
      PICTURE_TRANSPARENT => 2
   );
   for tagPictureAttributes'Size use 32;
   subtype PICTUREATTRIBUTES is tagPictureAttributes;
   subtype OLE_HANDLE is UINT;
   subtype OLE_XPOS_HIMETRIC is LONG;
   subtype OLE_YPOS_HIMETRIC is LONG;
   subtype OLE_XSIZE_HIMETRIC is LONG;
   subtype OLE_YSIZE_HIMETRIC is LONG;
   IID_IPicture : aliased constant IID;
   pragma import (C,IID_IPicture,"IID_IPicture");
   type IPicture is limited interface and IUnknown;
      function get_Handle(
         This : access IPicture;
         pHandle_x : access OLE_HANDLE
      ) return HRESULT is abstract;
      function get_hPal(
         This : access IPicture;
         phPal : access OLE_HANDLE
      ) return HRESULT is abstract;
      function get_Type(
         This : access IPicture;
         pType : access SHORT
      ) return HRESULT is abstract;
      function get_Width(
         This : access IPicture;
         pWidth : access OLE_XSIZE_HIMETRIC
      ) return HRESULT is abstract;
      function get_Height(
         This : access IPicture;
         pHeight : access OLE_YSIZE_HIMETRIC
      ) return HRESULT is abstract;
      function Render(
         This : access IPicture;
         hDC_x : HDC;
         x : LONG;
         y : LONG;
         cx : LONG;
         cy_x : LONG;
         xSrc : OLE_XPOS_HIMETRIC;
         ySrc : OLE_YPOS_HIMETRIC;
         cxSrc : OLE_XSIZE_HIMETRIC;
         cySrc : OLE_YSIZE_HIMETRIC;
         pRcWBounds : LPCRECT
      ) return HRESULT is abstract;
      function set_hPal(
         This : access IPicture;
         hPal : OLE_HANDLE
      ) return HRESULT is abstract;
      function get_CurDC(
         This : access IPicture;
         phDC : access HDC
      ) return HRESULT is abstract;
      function SelectPicture(
         This : access IPicture;
         hDCIn : HDC;
         phDCOut : access HDC;
         phBmpOut : access OLE_HANDLE
      ) return HRESULT is abstract;
      function get_KeepOriginalFormat(
         This : access IPicture;
         pKeep : access BOOL
      ) return HRESULT is abstract;
      function put_KeepOriginalFormat(
         This : access IPicture;
         keep : BOOL
      ) return HRESULT is abstract;
      function PictureChanged(This : access IPicture) return HRESULT is abstract;
      function SaveAsFile(
         This : access IPicture;
         pStream : LPSTREAM;
         fSaveMemCopy : BOOL;
         pCbSize : access LONG
      ) return HRESULT is abstract;
      function get_Attributes(
         This : access IPicture;
         pDwAttr : access DWORD
      ) return HRESULT is abstract;
   type IPicture_Ptr is access all IPicture'Class;
   type LPPICTURE2 is access all IPicture2;
   subtype HHANDLE is UINT_PTR;
   IID_IPicture2 : aliased constant IID;
   pragma import (C,IID_IPicture2,"IID_IPicture2");
   type IPicture2 is limited interface and IUnknown;
      function get_Handle(
         This : access IPicture2;
         pHandle_x : access HHANDLE
      ) return HRESULT is abstract;
      function get_hPal(
         This : access IPicture2;
         phPal : access HHANDLE
      ) return HRESULT is abstract;
      function get_Type(
         This : access IPicture2;
         pType : access SHORT
      ) return HRESULT is abstract;
      function get_Width(
         This : access IPicture2;
         pWidth : access OLE_XSIZE_HIMETRIC
      ) return HRESULT is abstract;
      function get_Height(
         This : access IPicture2;
         pHeight : access OLE_YSIZE_HIMETRIC
      ) return HRESULT is abstract;
      function Render(
         This : access IPicture2;
         hDC_x : HDC;
         x : LONG;
         y : LONG;
         cx : LONG;
         cy_x : LONG;
         xSrc : OLE_XPOS_HIMETRIC;
         ySrc : OLE_YPOS_HIMETRIC;
         cxSrc : OLE_XSIZE_HIMETRIC;
         cySrc : OLE_YSIZE_HIMETRIC;
         pRcWBounds : LPCRECT
      ) return HRESULT is abstract;
      function set_hPal(
         This : access IPicture2;
         hPal : HHANDLE
      ) return HRESULT is abstract;
      function get_CurDC(
         This : access IPicture2;
         phDC : access HDC
      ) return HRESULT is abstract;
      function SelectPicture(
         This : access IPicture2;
         hDCIn : HDC;
         phDCOut : access HDC;
         phBmpOut : access HHANDLE
      ) return HRESULT is abstract;
      function get_KeepOriginalFormat(
         This : access IPicture2;
         pKeep : access BOOL
      ) return HRESULT is abstract;
      function put_KeepOriginalFormat(
         This : access IPicture2;
         keep : BOOL
      ) return HRESULT is abstract;
      function PictureChanged(This : access IPicture2) return HRESULT is abstract;
      function SaveAsFile(
         This : access IPicture2;
         pStream : LPSTREAM;
         fSaveMemCopy : BOOL;
         pCbSize : access LONG
      ) return HRESULT is abstract;
      function get_Attributes(
         This : access IPicture2;
         pDwAttr : access DWORD
      ) return HRESULT is abstract;
   type IPicture2_Ptr is access all IPicture2'Class;
   type LPFONTEVENTS is access all IFontEventsDisp;
   IID_IFontEventsDisp : aliased constant IID;
   pragma import (C,IID_IFontEventsDisp,"IID_IFontEventsDisp");
   type LPFONTDISP is access all IFontDisp;
   IID_IFontDisp : aliased constant IID;
   pragma import (C,IID_IFontDisp,"IID_IFontDisp");
   type LPPICTUREDISP is access all IPictureDisp;
   IID_IPictureDisp : aliased constant IID;
   pragma import (C,IID_IPictureDisp,"IID_IPictureDisp");
   type LPOLEINPLACEOBJECTWINDOWLESS is access all IOleInPlaceObjectWindowless;
   IID_IOleInPlaceObjectWindowless : aliased constant IID;
   pragma import (C,IID_IOleInPlaceObjectWindowless,"IID_IOleInPlaceObjectWindowless");
   type IOleInPlaceObjectWindowless is limited interface and IOleInPlaceObject;
      function OnWindowMessage(
         This : access IOleInPlaceObjectWindowless;
         msg_x : UINT;
         wParam_x : WPARAM;
         lParam_x : LPARAM;
         plResult : access LRESULT
      ) return HRESULT is abstract;
      function GetDropTarget(
         This : access IOleInPlaceObjectWindowless;
         ppDropTarget : access IDropTarget_Ptr
      ) return HRESULT is abstract;
   type IOleInPlaceObjectWindowless_Ptr is access all IOleInPlaceObjectWindowless'Class;
   type LPOLEINPLACESITEEX is access all IOleInPlaceSiteEx;
   type tagACTIVATEFLAGS is (
      ACTIVATE_WINDOWLESS
   );
   for tagACTIVATEFLAGS use (
      ACTIVATE_WINDOWLESS => 1
   );
   for tagACTIVATEFLAGS'Size use 32;
   subtype ACTIVATEFLAGS is tagACTIVATEFLAGS;
   IID_IOleInPlaceSiteEx : aliased constant IID;
   pragma import (C,IID_IOleInPlaceSiteEx,"IID_IOleInPlaceSiteEx");
   type IOleInPlaceSiteEx is limited interface and IOleInPlaceSite;
      function OnInPlaceActivateEx(
         This : access IOleInPlaceSiteEx;
         pfNoRedraw : access BOOL;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function OnInPlaceDeactivateEx(
         This : access IOleInPlaceSiteEx;
         fNoRedraw : BOOL
      ) return HRESULT is abstract;
      function RequestUIActivate(This : access IOleInPlaceSiteEx) return HRESULT is abstract;
   type IOleInPlaceSiteEx_Ptr is access all IOleInPlaceSiteEx'Class;
   type LPOLEINPLACESITEWINDOWLESS is access all IOleInPlaceSiteWindowless;
   type tagOLEDCFLAGS is (
      OLEDC_NODRAW,
      OLEDC_PAINTBKGND,
      OLEDC_OFFSCREEN
   );
   for tagOLEDCFLAGS use (
      OLEDC_NODRAW => 1,
      OLEDC_PAINTBKGND => 2,
      OLEDC_OFFSCREEN => 4
   );
   for tagOLEDCFLAGS'Size use 32;
   subtype OLEDCFLAGS is tagOLEDCFLAGS;
   IID_IOleInPlaceSiteWindowless : aliased constant IID;
   pragma import (C,IID_IOleInPlaceSiteWindowless,"IID_IOleInPlaceSiteWindowless");
   type IOleInPlaceSiteWindowless is limited interface and IOleInPlaceSiteEx;
      function CanWindowlessActivate(This : access IOleInPlaceSiteWindowless) return HRESULT is abstract;
      function GetCapture_x(This : access IOleInPlaceSiteWindowless) return HRESULT is abstract;
      function SetCapture_x(
         This : access IOleInPlaceSiteWindowless;
         fCapture : BOOL
      ) return HRESULT is abstract;
      function GetFocus_x(This : access IOleInPlaceSiteWindowless) return HRESULT is abstract;
      function SetFocus_x(
         This : access IOleInPlaceSiteWindowless;
         fFocus : BOOL
      ) return HRESULT is abstract;
      function GetDC_x(
         This : access IOleInPlaceSiteWindowless;
         pRect_x : LPCRECT;
         grfFlags : DWORD;
         phDC : access HDC
      ) return HRESULT is abstract;
      function ReleaseDC_x(
         This : access IOleInPlaceSiteWindowless;
         hDC_x : HDC
      ) return HRESULT is abstract;
      function InvalidateRect_x(
         This : access IOleInPlaceSiteWindowless;
         pRect_x : LPCRECT;
         fErase : BOOL
      ) return HRESULT is abstract;
      function InvalidateRgn_x(
         This : access IOleInPlaceSiteWindowless;
         hRGN_x : HRGN;
         fErase : BOOL
      ) return HRESULT is abstract;
      function ScrollRect(
         This : access IOleInPlaceSiteWindowless;
         dx : INT;
         dy : INT;
         pRectScroll : LPCRECT;
         pRectClip : LPCRECT
      ) return HRESULT is abstract;
      function AdjustRect(
         This : access IOleInPlaceSiteWindowless;
         prc : LPRECT
      ) return HRESULT is abstract;
      function OnDefWindowMessage(
         This : access IOleInPlaceSiteWindowless;
         msg_x : UINT;
         wParam_x : WPARAM;
         lParam_x : LPARAM;
         plResult : access LRESULT
      ) return HRESULT is abstract;
   type IOleInPlaceSiteWindowless_Ptr is access all IOleInPlaceSiteWindowless'Class;
   type LPVIEWOBJECTEX is access all IViewObjectEx;
   type tagVIEWSTATUS is (
      VIEWSTATUS_OPAQUE,
      VIEWSTATUS_SOLIDBKGND,
      VIEWSTATUS_DVASPECTOPAQUE,
      VIEWSTATUS_DVASPECTTRANSPARENT,
      VIEWSTATUS_SURFACE,
      VIEWSTATUS_3DSURFACE
   );
   for tagVIEWSTATUS use (
      VIEWSTATUS_OPAQUE => 1,
      VIEWSTATUS_SOLIDBKGND => 2,
      VIEWSTATUS_DVASPECTOPAQUE => 4,
      VIEWSTATUS_DVASPECTTRANSPARENT => 8,
      VIEWSTATUS_SURFACE => 16,
      VIEWSTATUS_3DSURFACE => 32
   );
   for tagVIEWSTATUS'Size use 32;
   subtype VIEWSTATUS is tagVIEWSTATUS;
   type tagHITRESULT is (
      HITRESULT_OUTSIDE,
      HITRESULT_TRANSPARENT,
      HITRESULT_CLOSE,
      HITRESULT_HIT
   );
   for tagHITRESULT use (
      HITRESULT_OUTSIDE => 0,
      HITRESULT_TRANSPARENT => 1,
      HITRESULT_CLOSE => 2,
      HITRESULT_HIT => 3
   );
   for tagHITRESULT'Size use 32;
   subtype HITRESULT is tagHITRESULT;
   type tagDVASPECT2 is (
      DVASPECT_OPAQUE,
      DVASPECT_TRANSPARENT
   );
   for tagDVASPECT2 use (
      DVASPECT_OPAQUE => 16,
      DVASPECT_TRANSPARENT => 32
   );
   for tagDVASPECT2'Size use 32;
   subtype DVASPECT2 is tagDVASPECT2;
   type tagExtentInfo is record
      cb : ULONG;
      dwExtentMode : DWORD;
      sizelProposed : SIZEL;
   end record;
   pragma Convention (C_Pass_By_Copy,tagExtentInfo);
   for tagExtentInfo use record
      cb at 0 range 0..31;
      dwExtentMode at 0 range 32..63;
      sizelProposed at 0 range 64..127;
   end record;
   for tagExtentInfo'Size use 128;
   for tagExtentInfo'Alignment use 4;
   subtype DVEXTENTINFO is tagExtentInfo;
   type tagExtentMode is (
      DVEXTENT_CONTENT,
      DVEXTENT_INTEGRAL
   );
   for tagExtentMode use (
      DVEXTENT_CONTENT => 0,
      DVEXTENT_INTEGRAL => 1
   );
   for tagExtentMode'Size use 32;
   subtype DVEXTENTMODE is tagExtentMode;
   type tagAspectInfoFlag is (
      DVASPECTINFOFLAG_CANOPTIMIZE
   );
   for tagAspectInfoFlag use (
      DVASPECTINFOFLAG_CANOPTIMIZE => 1
   );
   for tagAspectInfoFlag'Size use 32;
   subtype DVASPECTINFOFLAG is tagAspectInfoFlag;
   type tagAspectInfo is record
      cb : ULONG;
      dwFlags : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagAspectInfo);
   for tagAspectInfo use record
      cb at 0 range 0..31;
      dwFlags at 0 range 32..63;
   end record;
   for tagAspectInfo'Size use 64;
   for tagAspectInfo'Alignment use 4;
   subtype DVASPECTINFO is tagAspectInfo;
   IID_IViewObjectEx : aliased constant IID;
   pragma import (C,IID_IViewObjectEx,"IID_IViewObjectEx");
   type IViewObjectEx is limited interface and IViewObject2;
      function GetRect(
         This : access IViewObjectEx;
         dwAspect : DWORD;
         pRect_x : LPRECTL
      ) return HRESULT is abstract;
      function GetViewStatus(
         This : access IViewObjectEx;
         pdwStatus : access DWORD
      ) return HRESULT is abstract;
      function QueryHitPoint(
         This : access IViewObjectEx;
         dwAspect : DWORD;
         pRectBounds : LPCRECT;
         ptlLoc : POINT;
         lCloseHint : LONG;
         pHitResult : access DWORD
      ) return HRESULT is abstract;
      function QueryHitRect(
         This : access IViewObjectEx;
         dwAspect : DWORD;
         pRectBounds : LPCRECT;
         pRectLoc : LPCRECT;
         lCloseHint : LONG;
         pHitResult : access DWORD
      ) return HRESULT is abstract;
      function GetNaturalExtent(
         This : access IViewObjectEx;
         dwAspect : DWORD;
         lindex : LONG;
         ptd : access DVTARGETDEVICE;
         hicTargetDev : HDC;
         pExtentInfo : access DVEXTENTINFO;
         pSizel_x : LPSIZEL
      ) return HRESULT is abstract;
   type IViewObjectEx_Ptr is access all IViewObjectEx'Class;
   type LPOLEUNDOUNIT is access all IOleUndoUnit;
   IID_IOleUndoUnit : aliased constant IID;
   pragma import (C,IID_IOleUndoUnit,"IID_IOleUndoUnit");
   type IOleUndoUnit is limited interface and IUnknown;
      function do_x(
         This : access IOleUndoUnit;
         pUndoManager : access IOleUndoManager'Class
      ) return HRESULT is abstract;
      function GetDescription(
         This : access IOleUndoUnit;
         pBstr : access BSTR
      ) return HRESULT is abstract;
      function GetUnitType(
         This : access IOleUndoUnit;
         pClsid : access CLSID;
         plID : access LONG
      ) return HRESULT is abstract;
      function OnNextAdd(This : access IOleUndoUnit) return HRESULT is abstract;
   type IOleUndoUnit_Ptr is access all IOleUndoUnit'Class;
   type LPOLEPARENTUNDOUNIT is access all IOleParentUndoUnit;
   IID_IOleParentUndoUnit : aliased constant IID;
   pragma import (C,IID_IOleParentUndoUnit,"IID_IOleParentUndoUnit");
   type IOleParentUndoUnit is limited interface and IOleUndoUnit;
      function Open(
         This : access IOleParentUndoUnit;
         pPUU : access IOleParentUndoUnit'Class
      ) return HRESULT is abstract;
      function Close(
         This : access IOleParentUndoUnit;
         pPUU : access IOleParentUndoUnit'Class;
         fCommit : BOOL
      ) return HRESULT is abstract;
      function Add(
         This : access IOleParentUndoUnit;
         pUU : access IOleUndoUnit'Class
      ) return HRESULT is abstract;
      function FindUnit(
         This : access IOleParentUndoUnit;
         pUU : access IOleUndoUnit'Class
      ) return HRESULT is abstract;
      function GetParentState(
         This : access IOleParentUndoUnit;
         pdwState : access DWORD
      ) return HRESULT is abstract;
   type IOleParentUndoUnit_Ptr is access all IOleParentUndoUnit'Class;
   type LPENUMOLEUNDOUNITS is access all IEnumOleUndoUnits;
   IID_IEnumOleUndoUnits : aliased constant IID;
   pragma import (C,IID_IEnumOleUndoUnits,"IID_IEnumOleUndoUnits");
   type IEnumOleUndoUnits_Ptr is access all IEnumOleUndoUnits; -- Auto Generated Dependancy
   type IEnumOleUndoUnits is limited interface and IUnknown;
      function Next(
         This : access IEnumOleUndoUnits;
         cElt : ULONG;
         rgElt : access IOleUndoUnit_Ptr;
         pcEltFetched : access ULONG
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumOleUndoUnits;
         cElt : ULONG
      ) return HRESULT is abstract;
      function Reset(This : access IEnumOleUndoUnits) return HRESULT is abstract;
      function Clone(
         This : access IEnumOleUndoUnits;
         ppEnum : access IEnumOleUndoUnits_Ptr
      ) return HRESULT is abstract;
   function IEnumOleUndoUnits_RemoteNext_Proxy(
      This : access IEnumOleUndoUnits'Class;
      cElt : ULONG;
      rgElt : access IOleUndoUnit_Ptr;
      pcEltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumOleUndoUnits_RemoteNext_Proxy,"IEnumOleUndoUnits_RemoteNext_Proxy");
   procedure IEnumOleUndoUnits_RemoteNext_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IEnumOleUndoUnits_RemoteNext_Stub,"IEnumOleUndoUnits_RemoteNext_Stub");
   type LPOLEUNDOMANAGER is access all IOleUndoManager;
   IID_IOleUndoManager : aliased constant IID;
   pragma import (C,IID_IOleUndoManager,"IID_IOleUndoManager");
   type IOleUndoManager is limited interface and IUnknown;
      function Open(
         This : access IOleUndoManager;
         pPUU : access IOleParentUndoUnit'Class
      ) return HRESULT is abstract;
      function Close(
         This : access IOleUndoManager;
         pPUU : access IOleParentUndoUnit'Class;
         fCommit : BOOL
      ) return HRESULT is abstract;
      function Add(
         This : access IOleUndoManager;
         pUU : access IOleUndoUnit'Class
      ) return HRESULT is abstract;
      function GetOpenParentState(
         This : access IOleUndoManager;
         pdwState : access DWORD
      ) return HRESULT is abstract;
      function DiscardFrom(
         This : access IOleUndoManager;
         pUU : access IOleUndoUnit'Class
      ) return HRESULT is abstract;
      function UndoTo(
         This : access IOleUndoManager;
         pUU : access IOleUndoUnit'Class
      ) return HRESULT is abstract;
      function RedoTo(
         This : access IOleUndoManager;
         pUU : access IOleUndoUnit'Class
      ) return HRESULT is abstract;
      function EnumUndoable(
         This : access IOleUndoManager;
         ppEnum : access IEnumOleUndoUnits_Ptr
      ) return HRESULT is abstract;
      function EnumRedoable(
         This : access IOleUndoManager;
         ppEnum : access IEnumOleUndoUnits_Ptr
      ) return HRESULT is abstract;
      function GetLastUndoDescription(
         This : access IOleUndoManager;
         pBstr : access BSTR
      ) return HRESULT is abstract;
      function GetLastRedoDescription(
         This : access IOleUndoManager;
         pBstr : access BSTR
      ) return HRESULT is abstract;
      function Enable(
         This : access IOleUndoManager;
         fEnable : BOOL
      ) return HRESULT is abstract;
   type IOleUndoManager_Ptr is access all IOleUndoManager'Class;
   type LPPOINTERINACTIVE is access all IPointerInactive;
   type tagPOINTERINACTIVE is (
      POINTERINACTIVE_ACTIVATEONENTRY,
      POINTERINACTIVE_DEACTIVATEONLEAVE,
      POINTERINACTIVE_ACTIVATEONDRAG
   );
   for tagPOINTERINACTIVE use (
      POINTERINACTIVE_ACTIVATEONENTRY => 1,
      POINTERINACTIVE_DEACTIVATEONLEAVE => 2,
      POINTERINACTIVE_ACTIVATEONDRAG => 4
   );
   for tagPOINTERINACTIVE'Size use 32;
   subtype POINTERINACTIVE is tagPOINTERINACTIVE;
   IID_IPointerInactive : aliased constant IID;
   pragma import (C,IID_IPointerInactive,"IID_IPointerInactive");
   type IPointerInactive is limited interface and IUnknown;
      function GetActivationPolicy(
         This : access IPointerInactive;
         pdwPolicy : access DWORD
      ) return HRESULT is abstract;
      function OnInactiveMouseMove(
         This : access IPointerInactive;
         pRectBounds : LPCRECT;
         x : LONG;
         y : LONG;
         grfKeyState : DWORD
      ) return HRESULT is abstract;
      function OnInactiveSetCursor(
         This : access IPointerInactive;
         pRectBounds : LPCRECT;
         x : LONG;
         y : LONG;
         dwMouseMsg : DWORD;
         fSetAlways : BOOL
      ) return HRESULT is abstract;
   type IPointerInactive_Ptr is access all IPointerInactive'Class;
   type LPOBJECTWITHSITE is access all IObjectWithSite;
   IID_IObjectWithSite : aliased constant IID;
   pragma import (C,IID_IObjectWithSite,"IID_IObjectWithSite");
   type IObjectWithSite is limited interface and IUnknown;
      function SetSite(
         This : access IObjectWithSite;
         pUnkSite : access IUnknown'Class
      ) return HRESULT is abstract;
      function GetSite(
         This : access IObjectWithSite;
         riid : access constant IID;
         ppvSite : access LPVOID
      ) return HRESULT is abstract;
   type IObjectWithSite_Ptr is access all IObjectWithSite'Class;
   type LPPERPROPERTYBROWSING is access all IPerPropertyBrowsing;
   type tagCALPOLESTR is record
      cElems : ULONG;
      pElems : access LPOLESTR;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCALPOLESTR);
   for tagCALPOLESTR use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCALPOLESTR'Size use 128;
   for tagCALPOLESTR'Alignment use 8;
   subtype CALPOLESTR is tagCALPOLESTR;
   type LPCALPOLESTR is access all tagCALPOLESTR;
   type tagCADWORD is record
      cElems : ULONG;
      pElems : access DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCADWORD);
   for tagCADWORD use record
      cElems at 0 range 0..31;
      pElems at 0 range 64..127;
   end record;
   for tagCADWORD'Size use 128;
   for tagCADWORD'Alignment use 8;
   subtype CADWORD is tagCADWORD;
   type LPCADWORD is access all tagCADWORD;
   IID_IPerPropertyBrowsing : aliased constant IID;
   pragma import (C,IID_IPerPropertyBrowsing,"IID_IPerPropertyBrowsing");
   type IPerPropertyBrowsing is limited interface and IUnknown;
      function GetDisplayString(
         This : access IPerPropertyBrowsing;
         dispID_x : DISPID;
         pBstr : access BSTR
      ) return HRESULT is abstract;
      function MapPropertyToPage(
         This : access IPerPropertyBrowsing;
         dispID_x : DISPID;
         pClsid : access CLSID
      ) return HRESULT is abstract;
      function GetPredefinedStrings(
         This : access IPerPropertyBrowsing;
         dispID_x : DISPID;
         pCaStringsOut : access CALPOLESTR;
         pCaCookiesOut : access CADWORD
      ) return HRESULT is abstract;
      function GetPredefinedValue(
         This : access IPerPropertyBrowsing;
         dispID_x : DISPID;
         dwCookie : DWORD;
         pVarOut : access VARIANT
      ) return HRESULT is abstract;
   type IPerPropertyBrowsing_Ptr is access all IPerPropertyBrowsing'Class;
   type LPPROPERTYBAG2 is access all IPropertyBag2;
   type tagPROPBAG2_TYPE is (
      PROPBAG2_TYPE_UNDEFINED,
      PROPBAG2_TYPE_DATA,
      PROPBAG2_TYPE_URL,
      PROPBAG2_TYPE_OBJECT,
      PROPBAG2_TYPE_STREAM,
      PROPBAG2_TYPE_STORAGE,
      PROPBAG2_TYPE_MONIKER
   );
   for tagPROPBAG2_TYPE use (
      PROPBAG2_TYPE_UNDEFINED => 0,
      PROPBAG2_TYPE_DATA => 1,
      PROPBAG2_TYPE_URL => 2,
      PROPBAG2_TYPE_OBJECT => 3,
      PROPBAG2_TYPE_STREAM => 4,
      PROPBAG2_TYPE_STORAGE => 5,
      PROPBAG2_TYPE_MONIKER => 6
   );
   for tagPROPBAG2_TYPE'Size use 32;
   subtype PROPBAG2_TYPE is tagPROPBAG2_TYPE;
   type tagPROPBAG2 is record
      dwType : DWORD;
      vt : VARTYPE;
      cfType : CLIPFORMAT;
      dwHint : DWORD;
      pstrName : LPOLESTR;
      clsid_x : CLSID;
   end record;
   pragma Convention (C_Pass_By_Copy,tagPROPBAG2);
   for tagPROPBAG2 use record
      dwType at 0 range 0..31;
      vt at 0 range 32..47;
      cfType at 0 range 48..63;
      dwHint at 0 range 64..95;
      pstrName at 0 range 128..191;
      clsid_x at 0 range 192..319;
   end record;
   for tagPROPBAG2'Size use 320;
   for tagPROPBAG2'Alignment use 8;
   subtype PROPBAG2 is tagPROPBAG2;
   IID_IPropertyBag2 : aliased constant IID;
   pragma import (C,IID_IPropertyBag2,"IID_IPropertyBag2");
   type IPropertyBag2 is limited interface and IUnknown;
      function Read(
         This : access IPropertyBag2;
         cProperties : ULONG;
         pPropBag : access PROPBAG2;
         pErrLog : access IErrorLog'Class;
         pvarValue : access VARIANT;
         phrError : access HRESULT
      ) return HRESULT is abstract;
      function Write(
         This : access IPropertyBag2;
         cProperties : ULONG;
         pPropBag : access PROPBAG2;
         pvarValue : access VARIANT
      ) return HRESULT is abstract;
      function CountProperties(
         This : access IPropertyBag2;
         pcProperties : access ULONG
      ) return HRESULT is abstract;
      function GetPropertyInfo(
         This : access IPropertyBag2;
         iProperty : ULONG;
         cProperties : ULONG;
         pPropBag : access PROPBAG2;
         pcProperties : access ULONG
      ) return HRESULT is abstract;
      function LoadObject(
         This : access IPropertyBag2;
         pstrName : LPCOLESTR;
         dwHint : DWORD;
         pUnkObject : access IUnknown'Class;
         pErrLog : access IErrorLog'Class
      ) return HRESULT is abstract;
   type IPropertyBag2_Ptr is access all IPropertyBag2'Class;
   type LPPERSISTPROPERTYBAG2 is access all IPersistPropertyBag2;
   IID_IPersistPropertyBag2 : aliased constant IID;
   pragma import (C,IID_IPersistPropertyBag2,"IID_IPersistPropertyBag2");
   type IPersistPropertyBag2 is limited interface and IPersist;
      function InitNew(This : access IPersistPropertyBag2) return HRESULT is abstract;
      function Load(
         This : access IPersistPropertyBag2;
         pPropBag : access IPropertyBag2'Class;
         pErrLog : access IErrorLog'Class
      ) return HRESULT is abstract;
      function Save(
         This : access IPersistPropertyBag2;
         pPropBag : access IPropertyBag2'Class;
         fClearDirty : BOOL;
         fSaveAllProperties : BOOL
      ) return HRESULT is abstract;
      function IsDirty(This : access IPersistPropertyBag2) return HRESULT is abstract;
   type IPersistPropertyBag2_Ptr is access all IPersistPropertyBag2'Class;
   type LPADVISESINKEX is access all IAdviseSinkEx;
   IID_IAdviseSinkEx : aliased constant IID;
   pragma import (C,IID_IAdviseSinkEx,"IID_IAdviseSinkEx");
   type IAdviseSinkEx is limited interface and IAdviseSink;
      procedure OnViewStatusChange(
         This : access IAdviseSinkEx;
         dwViewStatus : DWORD
      ) is abstract;
   type IAdviseSinkEx_Ptr is access all IAdviseSinkEx'Class;
   function IAdviseSinkEx_RemoteOnViewStatusChange_Proxy(
      This : access IAdviseSinkEx'Class;
      dwViewStatus : DWORD
   ) return HRESULT;
   pragma import (Cpp,IAdviseSinkEx_RemoteOnViewStatusChange_Proxy,"IAdviseSinkEx_RemoteOnViewStatusChange_Proxy");
   procedure IAdviseSinkEx_RemoteOnViewStatusChange_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IAdviseSinkEx_RemoteOnViewStatusChange_Stub,"IAdviseSinkEx_RemoteOnViewStatusChange_Stub");
   type LPQUICKACTIVATE is access all IQuickActivate;
   type tagQACONTAINERFLAGS is (
      QACONTAINER_SHOWHATCHING,
      QACONTAINER_SHOWGRABHANDLES,
      QACONTAINER_USERMODE,
      QACONTAINER_DISPLAYASDEFAULT,
      QACONTAINER_UIDEAD,
      QACONTAINER_AUTOCLIP,
      QACONTAINER_MESSAGEREFLECT,
      QACONTAINER_SUPPORTSMNEMONICS
   );
   for tagQACONTAINERFLAGS use (
      QACONTAINER_SHOWHATCHING => 1,
      QACONTAINER_SHOWGRABHANDLES => 2,
      QACONTAINER_USERMODE => 4,
      QACONTAINER_DISPLAYASDEFAULT => 8,
      QACONTAINER_UIDEAD => 16,
      QACONTAINER_AUTOCLIP => 32,
      QACONTAINER_MESSAGEREFLECT => 64,
      QACONTAINER_SUPPORTSMNEMONICS => 128
   );
   for tagQACONTAINERFLAGS'Size use 32;
   subtype QACONTAINERFLAGS is tagQACONTAINERFLAGS;
   subtype OLE_COLOR is DWORD;
   type tagQACONTAINER is record
      cbSize : ULONG;
      pClientSite : access IOleClientSite'Class;
      pAdviseSink : access IAdviseSinkEx'Class;
      pPropertyNotifySink : access IPropertyNotifySink'Class;
      pUnkEventSink : access IUnknown'Class;
      dwAmbientFlags : DWORD;
      colorFore : OLE_COLOR;
      colorBack : OLE_COLOR;
      pFont : access IFont'Class;
      pUndoMgr : access IOleUndoManager'Class;
      dwAppearance : DWORD;
      lcid_x : LONG;
      hpal : HPALETTE;
      pBindHost : access IBindHost'Class;
      pOleControlSite : access IOleControlSite'Class;
      pServiceProvider : access IServiceProvider'Class;
   end record;
   pragma Convention (C_Pass_By_Copy,tagQACONTAINER);
   for tagQACONTAINER use record
      cbSize at 0 range 0..31;
      pClientSite at 0 range 64..127;
      pAdviseSink at 0 range 128..191;
      pPropertyNotifySink at 0 range 192..255;
      pUnkEventSink at 0 range 256..319;
      dwAmbientFlags at 0 range 320..351;
      colorFore at 0 range 352..383;
      colorBack at 0 range 384..415;
      pFont at 0 range 448..511;
      pUndoMgr at 0 range 512..575;
      dwAppearance at 0 range 576..607;
      lcid_x at 0 range 608..639;
      hpal at 0 range 640..703;
      pBindHost at 0 range 704..767;
      pOleControlSite at 0 range 768..831;
      pServiceProvider at 0 range 832..895;
   end record;
   for tagQACONTAINER'Size use 896;
   for tagQACONTAINER'Alignment use 8;
   subtype QACONTAINER is tagQACONTAINER;
   type tagQACONTROL is record
      cbSize : ULONG;
      dwMiscStatus : DWORD;
      dwViewStatus : DWORD;
      dwEventCookie : DWORD;
      dwPropNotifyCookie : DWORD;
      dwPointerActivationPolicy : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,tagQACONTROL);
   for tagQACONTROL use record
      cbSize at 0 range 0..31;
      dwMiscStatus at 0 range 32..63;
      dwViewStatus at 0 range 64..95;
      dwEventCookie at 0 range 96..127;
      dwPropNotifyCookie at 0 range 128..159;
      dwPointerActivationPolicy at 0 range 160..191;
   end record;
   for tagQACONTROL'Size use 192;
   for tagQACONTROL'Alignment use 4;
   subtype QACONTROL is tagQACONTROL;
   IID_IQuickActivate : aliased constant IID;
   pragma import (C,IID_IQuickActivate,"IID_IQuickActivate");
   type IQuickActivate is limited interface and IUnknown;
      function QuickActivate(
         This : access IQuickActivate;
         pQaContainer : access QACONTAINER;
         pQaControl : access QACONTROL
      ) return HRESULT is abstract;
      function SetContentExtent(
         This : access IQuickActivate;
         pSizel_x : LPSIZEL
      ) return HRESULT is abstract;
      function GetContentExtent(
         This : access IQuickActivate;
         pSizel_x : LPSIZEL
      ) return HRESULT is abstract;
   type IQuickActivate_Ptr is access all IQuickActivate'Class;
   function IQuickActivate_RemoteQuickActivate_Proxy(
      This : access IQuickActivate'Class;
      pQaContainer : access QACONTAINER;
      pQaControl : access QACONTROL
   ) return HRESULT;
   pragma import (Cpp,IQuickActivate_RemoteQuickActivate_Proxy,"IQuickActivate_RemoteQuickActivate_Proxy");
   procedure IQuickActivate_RemoteQuickActivate_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IQuickActivate_RemoteQuickActivate_Stub,"IQuickActivate_RemoteQuickActivate_Stub");
   function HFONT_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HFONT
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HFONT_UserSize,"HFONT_UserSize");
   function HFONT_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HFONT
   ) return access UCHAR;
   pragma import (Cpp,HFONT_UserMarshal,"HFONT_UserMarshal");
   function HFONT_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HFONT
   ) return access UCHAR;
   pragma import (Cpp,HFONT_UserUnmarshal,"HFONT_UserUnmarshal");
   procedure HFONT_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HFONT
   );
   pragma import (Cpp,HFONT_UserFree,"HFONT_UserFree");
   function HPALETTE_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HPALETTE
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HPALETTE_UserSize,"HPALETTE_UserSize");
   function HPALETTE_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HPALETTE
   ) return access UCHAR;
   pragma import (Cpp,HPALETTE_UserMarshal,"HPALETTE_UserMarshal");
   function HPALETTE_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HPALETTE
   ) return access UCHAR;
   pragma import (Cpp,HPALETTE_UserUnmarshal,"HPALETTE_UserUnmarshal");
   procedure HPALETTE_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HPALETTE
   );
   pragma import (Cpp,HPALETTE_UserFree,"HPALETTE_UserFree");
   function HRGN_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HRGN
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HRGN_UserSize,"HRGN_UserSize");
   function HRGN_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HRGN
   ) return access UCHAR;
   pragma import (Cpp,HRGN_UserMarshal,"HRGN_UserMarshal");
   function HRGN_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HRGN
   ) return access UCHAR;
   pragma import (Cpp,HRGN_UserUnmarshal,"HRGN_UserUnmarshal");
   procedure HRGN_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HRGN
   );
   pragma import (Cpp,HRGN_UserFree,"HRGN_UserFree");
   function HFONT_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HFONT
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HFONT_UserSize64,"HFONT_UserSize64");
   function HFONT_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HFONT
   ) return access UCHAR;
   pragma import (Cpp,HFONT_UserMarshal64,"HFONT_UserMarshal64");
   function HFONT_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HFONT
   ) return access UCHAR;
   pragma import (Cpp,HFONT_UserUnmarshal64,"HFONT_UserUnmarshal64");
   procedure HFONT_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HFONT
   );
   pragma import (Cpp,HFONT_UserFree64,"HFONT_UserFree64");
   function HPALETTE_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HPALETTE
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HPALETTE_UserSize64,"HPALETTE_UserSize64");
   function HPALETTE_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HPALETTE
   ) return access UCHAR;
   pragma import (Cpp,HPALETTE_UserMarshal64,"HPALETTE_UserMarshal64");
   function HPALETTE_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HPALETTE
   ) return access UCHAR;
   pragma import (Cpp,HPALETTE_UserUnmarshal64,"HPALETTE_UserUnmarshal64");
   procedure HPALETTE_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HPALETTE
   );
   pragma import (Cpp,HPALETTE_UserFree64,"HPALETTE_UserFree64");
   function HRGN_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HRGN
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HRGN_UserSize64,"HRGN_UserSize64");
   function HRGN_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HRGN
   ) return access UCHAR;
   pragma import (Cpp,HRGN_UserMarshal64,"HRGN_UserMarshal64");
   function HRGN_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HRGN
   ) return access UCHAR;
   pragma import (Cpp,HRGN_UserUnmarshal64,"HRGN_UserUnmarshal64");
   procedure HRGN_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HRGN
   );
   pragma import (Cpp,HRGN_UserFree64,"HRGN_UserFree64");
   function IEnumConnections_Next_Proxy(
      This : access IEnumConnections'Class;
      cConnections : ULONG;
      rgcd : LPCONNECTDATA;
      pcFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumConnections_Next_Proxy,"IEnumConnections_Next_Proxy");
   function IEnumConnections_Next_Stub(
      This : access IEnumConnections'Class;
      cConnections : ULONG;
      rgcd : LPCONNECTDATA;
      pcFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumConnections_Next_Stub,"IEnumConnections_Next_Stub");
   function IEnumConnectionPoints_Next_Proxy(
      This : access IEnumConnectionPoints'Class;
      cConnections : ULONG;
      ppCP : access LPCONNECTIONPOINT;
      pcFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumConnectionPoints_Next_Proxy,"IEnumConnectionPoints_Next_Proxy");
   function IEnumConnectionPoints_Next_Stub(
      This : access IEnumConnectionPoints'Class;
      cConnections : ULONG;
      ppCP : access LPCONNECTIONPOINT;
      pcFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumConnectionPoints_Next_Stub,"IEnumConnectionPoints_Next_Stub");
   function IClassFactory2_CreateInstanceLic_Proxy(
      This : access IClassFactory2'Class;
      pUnkOuter : access IUnknown'Class;
      pUnkReserved : access IUnknown'Class;
      riid : access constant IID;
      bstrKey : BSTR;
      ppvObj : access PVOID
   ) return HRESULT;
   pragma import (Cpp,IClassFactory2_CreateInstanceLic_Proxy,"IClassFactory2_CreateInstanceLic_Proxy");
   function IClassFactory2_CreateInstanceLic_Stub(
      This : access IClassFactory2'Class;
      riid : access constant IID;
      bstrKey : BSTR;
      ppvObj : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,IClassFactory2_CreateInstanceLic_Stub,"IClassFactory2_CreateInstanceLic_Stub");
   function IPersistMemory_Load_Proxy(
      This : access IPersistMemory'Class;
      pMem : LPVOID;
      cbSize : ULONG
   ) return HRESULT;
   pragma import (Cpp,IPersistMemory_Load_Proxy,"IPersistMemory_Load_Proxy");
   function IPersistMemory_Load_Stub(
      This : access IPersistMemory'Class;
      pMem : access BYTE;
      cbSize : ULONG
   ) return HRESULT;
   pragma import (Cpp,IPersistMemory_Load_Stub,"IPersistMemory_Load_Stub");
   function IPersistMemory_Save_Proxy(
      This : access IPersistMemory'Class;
      pMem : LPVOID;
      fClearDirty : BOOL;
      cbSize : ULONG
   ) return HRESULT;
   pragma import (Cpp,IPersistMemory_Save_Proxy,"IPersistMemory_Save_Proxy");
   function IPersistMemory_Save_Stub(
      This : access IPersistMemory'Class;
      pMem : access BYTE;
      fClearDirty : BOOL;
      cbSize : ULONG
   ) return HRESULT;
   pragma import (Cpp,IPersistMemory_Save_Stub,"IPersistMemory_Save_Stub");
   function IEnumOleUndoUnits_Next_Proxy(
      This : access IEnumOleUndoUnits'Class;
      cElt : ULONG;
      rgElt : access IOleUndoUnit_Ptr;
      pcEltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumOleUndoUnits_Next_Proxy,"IEnumOleUndoUnits_Next_Proxy");
   function IEnumOleUndoUnits_Next_Stub(
      This : access IEnumOleUndoUnits'Class;
      cElt : ULONG;
      rgElt : access IOleUndoUnit_Ptr;
      pcEltFetched : access ULONG
   ) return HRESULT;
   pragma import (Cpp,IEnumOleUndoUnits_Next_Stub,"IEnumOleUndoUnits_Next_Stub");
   procedure IAdviseSinkEx_OnViewStatusChange_Proxy(
      This : access IAdviseSinkEx'Class;
      dwViewStatus : DWORD
   );
   pragma import (Cpp,IAdviseSinkEx_OnViewStatusChange_Proxy,"IAdviseSinkEx_OnViewStatusChange_Proxy");
   function IAdviseSinkEx_OnViewStatusChange_Stub(
      This : access IAdviseSinkEx'Class;
      dwViewStatus : DWORD
   ) return HRESULT;
   pragma import (Cpp,IAdviseSinkEx_OnViewStatusChange_Stub,"IAdviseSinkEx_OnViewStatusChange_Stub");
   function IQuickActivate_QuickActivate_Proxy(
      This : access IQuickActivate'Class;
      pQaContainer : access QACONTAINER;
      pQaControl : access QACONTROL
   ) return HRESULT;
   pragma import (Cpp,IQuickActivate_QuickActivate_Proxy,"IQuickActivate_QuickActivate_Proxy");
   function IQuickActivate_QuickActivate_Stub(
      This : access IQuickActivate'Class;
      pQaContainer : access QACONTAINER;
      pQaControl : access QACONTROL
   ) return HRESULT;
   pragma import (Cpp,IQuickActivate_QuickActivate_Stub,"IQuickActivate_QuickActivate_Stub");
   -- #include <comadmin.h>
   type ICOMAdminCatalog;
   type ICOMAdminCatalog2;
   type ICatalogObject;
   type ICatalogCollection;
   IID_ICOMAdminCatalog : aliased constant IID;
   pragma import (C,IID_ICOMAdminCatalog,"IID_ICOMAdminCatalog");
   type ICOMAdminCatalog is limited interface and IDispatch;
      function GetCollection(
         This : access ICOMAdminCatalog;
         bstrCollName : BSTR;
         ppCatalogCollection : access IDispatch_Ptr
      ) return HRESULT is abstract;
      function Connect_x(
         This : access ICOMAdminCatalog;
         bstrCatalogServerName : BSTR;
         ppCatalogCollection : access IDispatch_Ptr
      ) return HRESULT is abstract;
      function get_MajorVersion(
         This : access ICOMAdminCatalog;
         plMajorVersion : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_MinorVersion(
         This : access ICOMAdminCatalog;
         plMinorVersion : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function GetCollectionByQuery(
         This : access ICOMAdminCatalog;
         bstrCollName : BSTR;
         ppsaVarQuery : access LPSAFEARRAY;
         ppCatalogCollection : access IDispatch_Ptr
      ) return HRESULT is abstract;
      function ImportComponent(
         This : access ICOMAdminCatalog;
         bstrApplIDOrName : BSTR;
         bstrCLSIDOrProgID : BSTR
      ) return HRESULT is abstract;
      function InstallComponent(
         This : access ICOMAdminCatalog;
         bstrApplIDOrName : BSTR;
         bstrDLL : BSTR;
         bstrTLB : BSTR;
         bstrPSDLL : BSTR
      ) return HRESULT is abstract;
      function ShutdownApplication(
         This : access ICOMAdminCatalog;
         bstrApplIDOrName : BSTR
      ) return HRESULT is abstract;
      function ExportApplication(
         This : access ICOMAdminCatalog;
         bstrApplIDOrName : BSTR;
         bstrApplicationFile : BSTR;
         lOptions : Interfaces.C.Long
      ) return HRESULT is abstract;
      function InstallApplication(
         This : access ICOMAdminCatalog;
         bstrApplicationFile : BSTR;
         bstrDestinationDirectory : BSTR;
         lOptions : Interfaces.C.Long;
         bstrUserId : BSTR;
         bstrPassword : BSTR;
         bstrRSN : BSTR
      ) return HRESULT is abstract;
      function StopRouter(This : access ICOMAdminCatalog) return HRESULT is abstract;
      function RefreshRouter(This : access ICOMAdminCatalog) return HRESULT is abstract;
      function StartRouter(This : access ICOMAdminCatalog) return HRESULT is abstract;
      function Reserved1(This : access ICOMAdminCatalog) return HRESULT is abstract;
      function Reserved2(This : access ICOMAdminCatalog) return HRESULT is abstract;
      function InstallMultipleComponents(
         This : access ICOMAdminCatalog;
         bstrApplIDOrName : BSTR;
         ppsaVarFileNames : access LPSAFEARRAY;
         ppsaVarCLSIDs : access LPSAFEARRAY
      ) return HRESULT is abstract;
      function GetMultipleComponentsInfo(
         This : access ICOMAdminCatalog;
         bstrApplIdOrName : BSTR;
         ppsaVarFileNames : access LPSAFEARRAY;
         ppsaVarCLSIDs : access LPSAFEARRAY;
         ppsaVarClassNames : access LPSAFEARRAY;
         ppsaVarFileFlags : access LPSAFEARRAY;
         ppsaVarComponentFlags : access LPSAFEARRAY
      ) return HRESULT is abstract;
      function RefreshComponents(This : access ICOMAdminCatalog) return HRESULT is abstract;
      function BackupREGDB(
         This : access ICOMAdminCatalog;
         bstrBackupFilePath : BSTR
      ) return HRESULT is abstract;
      function RestoreREGDB(
         This : access ICOMAdminCatalog;
         bstrBackupFilePath : BSTR
      ) return HRESULT is abstract;
      function QueryApplicationFile(
         This : access ICOMAdminCatalog;
         bstrApplicationFile : BSTR;
         pbstrApplicationName : access BSTR;
         pbstrApplicationDescription : access BSTR;
         pbHasUsers : access VARIANT_BOOL;
         pbIsProxy : access VARIANT_BOOL;
         ppsaVarFileNames : access LPSAFEARRAY
      ) return HRESULT is abstract;
      function StartApplication(
         This : access ICOMAdminCatalog;
         bstrApplIdOrName : BSTR
      ) return HRESULT is abstract;
      function ServiceCheck(
         This : access ICOMAdminCatalog;
         lService : Interfaces.C.Long;
         plStatus : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function InstallMultipleEventClasses(
         This : access ICOMAdminCatalog;
         bstrApplIdOrName : BSTR;
         ppsaVarFileNames : access LPSAFEARRAY;
         ppsaVarCLSIDS : access LPSAFEARRAY
      ) return HRESULT is abstract;
      function InstallEventClass(
         This : access ICOMAdminCatalog;
         bstrApplIdOrName : BSTR;
         bstrDLL : BSTR;
         bstrTLB : BSTR;
         bstrPSDLL : BSTR
      ) return HRESULT is abstract;
      function GetEventClassesForIID(
         This : access ICOMAdminCatalog;
         bstrIID : BSTR;
         ppsaVarCLSIDs : access LPSAFEARRAY;
         ppsaVarProgIDs : access LPSAFEARRAY;
         ppsaVarDescriptions : access LPSAFEARRAY
      ) return HRESULT is abstract;
   type ICOMAdminCatalog_Ptr is access all ICOMAdminCatalog'Class;
   type COMAdminInUse is (
      COMAdminNotInUse,
      COMAdminInUseByCatalog,
      COMAdminInUseByRegistryUnknown,
      COMAdminInUseByRegistryProxyStub,
      COMAdminInUseByRegistryTypeLib,
      COMAdminInUseByRegistryClsid
   );
   for COMAdminInUse use (
      COMAdminNotInUse => 0,
      COMAdminInUseByCatalog => 1,
      COMAdminInUseByRegistryUnknown => 2,
      COMAdminInUseByRegistryProxyStub => 3,
      COMAdminInUseByRegistryTypeLib => 4,
      COMAdminInUseByRegistryClsid => 5
   );
   for COMAdminInUse'Size use 32;
   IID_ICOMAdminCatalog2 : aliased constant IID;
   pragma import (C,IID_ICOMAdminCatalog2,"IID_ICOMAdminCatalog2");
   type ICOMAdminCatalog2 is limited interface and ICOMAdminCatalog;
      function GetCollectionByQuery2(
         This : access ICOMAdminCatalog2;
         bstrCollectionName : BSTR;
         pVarQueryStrings : access VARIANT;
         ppCatalogCollection : access IDispatch_Ptr
      ) return HRESULT is abstract;
      function GetApplicationInstanceIDFromProcessID(
         This : access ICOMAdminCatalog2;
         lProcessID : Interfaces.C.Long;
         pbstrApplicationInstanceID : access BSTR
      ) return HRESULT is abstract;
      function ShutdownApplicationInstances(
         This : access ICOMAdminCatalog2;
         pVarApplicationInstanceID : access VARIANT
      ) return HRESULT is abstract;
      function PauseApplicationInstances(
         This : access ICOMAdminCatalog2;
         pVarApplicationInstanceID : access VARIANT
      ) return HRESULT is abstract;
      function ResumeApplicationInstances(
         This : access ICOMAdminCatalog2;
         pVarApplicationInstanceID : access VARIANT
      ) return HRESULT is abstract;
      function RecycleApplicationInstances(
         This : access ICOMAdminCatalog2;
         pVarApplicationInstanceID : access VARIANT;
         lReasonCode : Interfaces.C.Long
      ) return HRESULT is abstract;
      function AreApplicationInstancesPaused(
         This : access ICOMAdminCatalog2;
         pVarApplicationInstanceID : access VARIANT;
         pVarBoolPaused : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function DumpApplicationInstance(
         This : access ICOMAdminCatalog2;
         bstrApplicationInstanceID : BSTR;
         bstrDirectory : BSTR;
         lMaxImages : Interfaces.C.Long;
         pbstrDumpFile : access BSTR
      ) return HRESULT is abstract;
      function get_IsApplicationInstanceDumpSupported(
         This : access ICOMAdminCatalog2;
         pVarBoolDumpSupported : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function CreateServiceForApplication(
         This : access ICOMAdminCatalog2;
         bstrApplicationIDOrName : BSTR;
         bstrServiceName : BSTR;
         bstrStartType : BSTR;
         bstrErrorControl : BSTR;
         bstrDependencies : BSTR;
         bstrRunAs : BSTR;
         bstrPassword : BSTR;
         bDesktopOk : VARIANT_BOOL
      ) return HRESULT is abstract;
      function DeleteServiceForApplication(
         This : access ICOMAdminCatalog2;
         bstrApplicationIDOrName : BSTR
      ) return HRESULT is abstract;
      function GetPartitionID(
         This : access ICOMAdminCatalog2;
         bstrApplicationIDOrName : BSTR;
         pbstrPartitionID : access BSTR
      ) return HRESULT is abstract;
      function GetPartitionName(
         This : access ICOMAdminCatalog2;
         bstrApplicationIDOrName : BSTR;
         pbstrPartitionName : access BSTR
      ) return HRESULT is abstract;
      function put_CurrentPartition(
         This : access ICOMAdminCatalog2;
         bstrPartitionIDOrName : BSTR
      ) return HRESULT is abstract;
      function get_CurrentPartitionID(
         This : access ICOMAdminCatalog2;
         pbstrPartitionID : access BSTR
      ) return HRESULT is abstract;
      function get_CurrentPartitionName(
         This : access ICOMAdminCatalog2;
         pbstrPartitionName : access BSTR
      ) return HRESULT is abstract;
      function get_GlobalPartitionID(
         This : access ICOMAdminCatalog2;
         pbstrGlobalPartitionID : access BSTR
      ) return HRESULT is abstract;
      function FlushPartitionCache(This : access ICOMAdminCatalog2) return HRESULT is abstract;
      function CopyApplications(
         This : access ICOMAdminCatalog2;
         bstrSourcePartitionIDOrName : BSTR;
         pVarApplicationID : access VARIANT;
         bstrDestinationPartitionIDOrName : BSTR
      ) return HRESULT is abstract;
      function CopyComponents(
         This : access ICOMAdminCatalog2;
         bstrSourceApplicationIDOrName : BSTR;
         pVarCLSIDOrProgID : access VARIANT;
         bstrDestinationApplicationIDOrName : BSTR
      ) return HRESULT is abstract;
      function MoveComponents(
         This : access ICOMAdminCatalog2;
         bstrSourceApplicationIDOrName : BSTR;
         pVarCLSIDOrProgID : access VARIANT;
         bstrDestinationApplicationIDOrName : BSTR
      ) return HRESULT is abstract;
      function AliasComponent(
         This : access ICOMAdminCatalog2;
         bstrSrcApplicationIDOrName : BSTR;
         bstrCLSIDOrProgID : BSTR;
         bstrDestApplicationIDOrName : BSTR;
         bstrNewProgId : BSTR;
         bstrNewClsid : BSTR
      ) return HRESULT is abstract;
      function IsSafeToDelete(
         This : access ICOMAdminCatalog2;
         bstrDllName : BSTR;
         pCOMAdminInUse : access COMAdminInUse
      ) return HRESULT is abstract;
      function ImportUnconfiguredComponents(
         This : access ICOMAdminCatalog2;
         bstrApplicationIDOrName : BSTR;
         pVarCLSIDOrProgID : access VARIANT;
         pVarComponentType : access VARIANT
      ) return HRESULT is abstract;
      function PromoteUnconfiguredComponents(
         This : access ICOMAdminCatalog2;
         bstrApplicationIDOrName : BSTR;
         pVarCLSIDOrProgID : access VARIANT;
         pVarComponentType : access VARIANT
      ) return HRESULT is abstract;
      function ImportComponents(
         This : access ICOMAdminCatalog2;
         bstrApplicationIDOrName : BSTR;
         pVarCLSIDOrProgID : access VARIANT;
         pVarComponentType : access VARIANT
      ) return HRESULT is abstract;
      function get_Is64BitCatalogServer(
         This : access ICOMAdminCatalog2;
         pbIs64Bit : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function ExportPartition(
         This : access ICOMAdminCatalog2;
         bstrPartitionIDOrName : BSTR;
         bstrPartitionFileName : BSTR;
         lOptions : Interfaces.C.Long
      ) return HRESULT is abstract;
      function InstallPartition(
         This : access ICOMAdminCatalog2;
         bstrFileName : BSTR;
         bstrDestDirectory : BSTR;
         lOptions : Interfaces.C.Long;
         bstrUserID : BSTR;
         bstrPassword : BSTR;
         bstrRSN : BSTR
      ) return HRESULT is abstract;
      function QueryApplicationFile2(
         This : access ICOMAdminCatalog2;
         bstrApplicationFile : BSTR;
         ppFilesForImport : access IDispatch_Ptr
      ) return HRESULT is abstract;
      function GetComponentVersionCount(
         This : access ICOMAdminCatalog2;
         bstrCLSIDOrProgID : BSTR;
         plVersionCount : access Interfaces.C.Long
      ) return HRESULT is abstract;
   type ICOMAdminCatalog2_Ptr is access all ICOMAdminCatalog2'Class;
   IID_ICatalogObject : aliased constant IID;
   pragma import (C,IID_ICatalogObject,"IID_ICatalogObject");
   type ICatalogObject is limited interface and IDispatch;
      function get_Value(
         This : access ICatalogObject;
         bstrPropName : BSTR;
         pvarRetVal : access VARIANT
      ) return HRESULT is abstract;
      function put_Value(
         This : access ICatalogObject;
         bstrPropName : BSTR;
         val : VARIANT
      ) return HRESULT is abstract;
      function get_Key(
         This : access ICatalogObject;
         pvarRetVal : access VARIANT
      ) return HRESULT is abstract;
      function get_Name(
         This : access ICatalogObject;
         pvarRetVal : access VARIANT
      ) return HRESULT is abstract;
      function IsPropertyReadOnly(
         This : access ICatalogObject;
         bstrPropName : BSTR;
         pbRetVal : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function get_Valid(
         This : access ICatalogObject;
         pbRetVal : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function IsPropertyWriteOnly(
         This : access ICatalogObject;
         bstrPropName : BSTR;
         pbRetVal : access VARIANT_BOOL
      ) return HRESULT is abstract;
   type ICatalogObject_Ptr is access all ICatalogObject'Class;
   IID_ICatalogCollection : aliased constant IID;
   pragma import (C,IID_ICatalogCollection,"IID_ICatalogCollection");
   type ICatalogCollection is limited interface and IDispatch;
      function get_NewEnum(
         This : access ICatalogCollection;
         ppEnumVariant : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function get_Item(
         This : access ICatalogCollection;
         lIndex : Interfaces.C.Long;
         ppCatalogObject : access IDispatch_Ptr
      ) return HRESULT is abstract;
      function get_Count(
         This : access ICatalogCollection;
         plObjectCount : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function Remove(
         This : access ICatalogCollection;
         lIndex : Interfaces.C.Long
      ) return HRESULT is abstract;
      function Add(
         This : access ICatalogCollection;
         ppCatalogObject : access IDispatch_Ptr
      ) return HRESULT is abstract;
      function Populate(This : access ICatalogCollection) return HRESULT is abstract;
      function SaveChanges(
         This : access ICatalogCollection;
         pcChanges : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function GetCollection(
         This : access ICatalogCollection;
         bstrCollName : BSTR;
         varObjectKey : VARIANT;
         ppCatalogCollection : access IDispatch_Ptr
      ) return HRESULT is abstract;
      function get_Name(
         This : access ICatalogCollection;
         pVarNamel : access VARIANT
      ) return HRESULT is abstract;
      function get_AddEnabled(
         This : access ICatalogCollection;
         pVarBool : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function get_RemoveEnabled(
         This : access ICatalogCollection;
         pVarBool : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function GetUtilInterface(
         This : access ICatalogCollection;
         ppIDispatch : access IDispatch_Ptr
      ) return HRESULT is abstract;
      function get_DataStoreMajorVersion(
         This : access ICatalogCollection;
         plMajorVersion : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_DataStoreMinorVersion(
         This : access ICatalogCollection;
         plMinorVersionl : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function PopulateByKey(
         This : access ICatalogCollection;
         psaKeys : access SAFEARRAY
      ) return HRESULT is abstract;
      function PopulateByQuery(
         This : access ICatalogCollection;
         bstrQueryString : BSTR;
         lQueryType : Interfaces.C.Long
      ) return HRESULT is abstract;
   type ICatalogCollection_Ptr is access all ICatalogCollection'Class;
   type COMAdminComponentType is (
      COMAdmin32BitComponent,
      COMAdmin64BitComponent
   );
   for COMAdminComponentType use (
      COMAdmin32BitComponent => 1,
      COMAdmin64BitComponent => 2
   );
   for COMAdminComponentType'Size use 32;
   type COMAdminApplicationInstallOptions is (
      COMAdminInstallNoUsers,
      COMAdminInstallUsers,
      COMAdminInstallForceOverwriteOfFiles
   );
   for COMAdminApplicationInstallOptions use (
      COMAdminInstallNoUsers => 0,
      COMAdminInstallUsers => 1,
      COMAdminInstallForceOverwriteOfFiles => 2
   );
   for COMAdminApplicationInstallOptions'Size use 32;
   type COMAdminApplicationExportOptions is (
      COMAdminExportNoUsers,
      COMAdminExportUsers,
      COMAdminExportApplicationProxy,
      COMAdminExportForceOverwriteOfFiles,
      COMAdminExportIn10Format
   );
   for COMAdminApplicationExportOptions use (
      COMAdminExportNoUsers => 0,
      COMAdminExportUsers => 1,
      COMAdminExportApplicationProxy => 2,
      COMAdminExportForceOverwriteOfFiles => 4,
      COMAdminExportIn10Format => 16
   );
   for COMAdminApplicationExportOptions'Size use 32;
   type COMAdminThreadingModels is (
      COMAdminThreadingModelApartment,
      COMAdminThreadingModelFree,
      COMAdminThreadingModelMain,
      COMAdminThreadingModelBoth,
      COMAdminThreadingModelNeutral,
      COMAdminThreadingModelNotSpecified
   );
   for COMAdminThreadingModels use (
      COMAdminThreadingModelApartment => 0,
      COMAdminThreadingModelFree => 1,
      COMAdminThreadingModelMain => 2,
      COMAdminThreadingModelBoth => 3,
      COMAdminThreadingModelNeutral => 4,
      COMAdminThreadingModelNotSpecified => 5
   );
   for COMAdminThreadingModels'Size use 32;
   type COMAdminTransactionOptions is (
      COMAdminTransactionIgnored,
      COMAdminTransactionNone,
      COMAdminTransactionSupported,
      COMAdminTransactionRequired,
      COMAdminTransactionRequiresNew
   );
   for COMAdminTransactionOptions use (
      COMAdminTransactionIgnored => 0,
      COMAdminTransactionNone => 1,
      COMAdminTransactionSupported => 2,
      COMAdminTransactionRequired => 3,
      COMAdminTransactionRequiresNew => 4
   );
   for COMAdminTransactionOptions'Size use 32;
   type COMAdminTxIsolationLevelOptions is (
      COMAdminTxIsolationLevelAny,
      COMAdminTxIsolationLevelReadUnCommitted,
      COMAdminTxIsolationLevelReadCommitted,
      COMAdminTxIsolationLevelRepeatableRead,
      COMAdminTxIsolationLevelSerializable
   );
   for COMAdminTxIsolationLevelOptions use (
      COMAdminTxIsolationLevelAny => 0,
      COMAdminTxIsolationLevelReadUnCommitted => 1,
      COMAdminTxIsolationLevelReadCommitted => 2,
      COMAdminTxIsolationLevelRepeatableRead => 3,
      COMAdminTxIsolationLevelSerializable => 4
   );
   for COMAdminTxIsolationLevelOptions'Size use 32;
   type COMAdminSynchronizationOptions is (
      COMAdminSynchronizationIgnored,
      COMAdminSynchronizationNone,
      COMAdminSynchronizationSupported,
      COMAdminSynchronizationRequired,
      COMAdminSynchronizationRequiresNew
   );
   for COMAdminSynchronizationOptions use (
      COMAdminSynchronizationIgnored => 0,
      COMAdminSynchronizationNone => 1,
      COMAdminSynchronizationSupported => 2,
      COMAdminSynchronizationRequired => 3,
      COMAdminSynchronizationRequiresNew => 4
   );
   for COMAdminSynchronizationOptions'Size use 32;
   type COMAdminActivationOptions is (
      COMAdminActivationInproc,
      COMAdminActivationLocal
   );
   for COMAdminActivationOptions use (
      COMAdminActivationInproc => 0,
      COMAdminActivationLocal => 1
   );
   for COMAdminActivationOptions'Size use 32;
   type COMAdminAccessChecksLevelOptions is (
      COMAdminAccessChecksApplicationLevel,
      COMAdminAccessChecksApplicationComponentLevel
   );
   for COMAdminAccessChecksLevelOptions use (
      COMAdminAccessChecksApplicationLevel => 0,
      COMAdminAccessChecksApplicationComponentLevel => 1
   );
   for COMAdminAccessChecksLevelOptions'Size use 32;
   type COMAdminAuthenticationLevelOptions is (
      COMAdminAuthenticationDefault,
      COMAdminAuthenticationNone,
      COMAdminAuthenticationConnect,
      COMAdminAuthenticationCall,
      COMAdminAuthenticationPacket,
      COMAdminAuthenticationIntegrity,
      COMAdminAuthenticationPrivacy
   );
   for COMAdminAuthenticationLevelOptions use (
      COMAdminAuthenticationDefault => 0,
      COMAdminAuthenticationNone => 1,
      COMAdminAuthenticationConnect => 2,
      COMAdminAuthenticationCall => 3,
      COMAdminAuthenticationPacket => 4,
      COMAdminAuthenticationIntegrity => 5,
      COMAdminAuthenticationPrivacy => 6
   );
   for COMAdminAuthenticationLevelOptions'Size use 32;
   type COMAdminImpersonationLevelOptions is (
      COMAdminImpersonationAnonymous,
      COMAdminImpersonationIdentify,
      COMAdminImpersonationImpersonate,
      COMAdminImpersonationDelegate
   );
   for COMAdminImpersonationLevelOptions use (
      COMAdminImpersonationAnonymous => 1,
      COMAdminImpersonationIdentify => 2,
      COMAdminImpersonationImpersonate => 3,
      COMAdminImpersonationDelegate => 4
   );
   for COMAdminImpersonationLevelOptions'Size use 32;
   type COMAdminAuthenticationCapabilitiesOptions is (
      COMAdminAuthenticationCapabilitiesNone,
      COMAdminAuthenticationCapabilitiesSecureReference,
      COMAdminAuthenticationCapabilitiesStaticCloaking,
      COMAdminAuthenticationCapabilitiesDynamicCloaking
   );
   for COMAdminAuthenticationCapabilitiesOptions use (
      COMAdminAuthenticationCapabilitiesNone => 0,
      COMAdminAuthenticationCapabilitiesSecureReference => 2,
      COMAdminAuthenticationCapabilitiesStaticCloaking => 32,
      COMAdminAuthenticationCapabilitiesDynamicCloaking => 64
   );
   for COMAdminAuthenticationCapabilitiesOptions'Size use 32;
   type COMAdminOS is (
      COMAdminOSNotInitialized,
      COMAdminOSWindows3_1,
      COMAdminOSWindows9x,
      COMAdminOSWindows2000,
      COMAdminOSWindows2000AdvancedServer,
      COMAdminOSWindows2000Unknown,
      COMAdminOSUnknown,
      COMAdminOSWindowsXPPersonal,
      COMAdminOSWindowsXPProfessional,
      COMAdminOSWindowsNETStandardServer,
      COMAdminOSWindowsNETEnterpriseServer,
      COMAdminOSWindowsNETDatacenterServer,
      COMAdminOSWindowsNETWebServer,
      COMAdminOSWindowsLonghornPersonal,
      COMAdminOSWindowsLonghornProfessional,
      COMAdminOSWindowsLonghornStandardServer,
      COMAdminOSWindowsLonghornEnterpriseServer,
      COMAdminOSWindowsLonghornDatacenterServer,
      COMAdminOSWindowsLonghornWebServer,
      COMAdminOSWindows7Personal,
      COMAdminOSWindows7Professional,
      COMAdminOSWindows7StandardServer,
      COMAdminOSWindows7EnterpriseServer,
      COMAdminOSWindows7DatacenterServer,
      COMAdminOSWindows7WebServer,
      COMAdminOSWindows8Personal,
      COMAdminOSWindows8Professional,
      COMAdminOSWindows8StandardServer,
      COMAdminOSWindows8EnterpriseServer,
      COMAdminOSWindows8DatacenterServer,
      COMAdminOSWindows8WebServer,
      COMAdminOSWindowsBluePersonal,
      COMAdminOSWindowsBlueProfessional,
      COMAdminOSWindowsBlueStandardServer,
      COMAdminOSWindowsBlueEnterpriseServer,
      COMAdminOSWindowsBlueDatacenterServer,
      COMAdminOSWindowsBlueWebServer
   );
   for COMAdminOS use (
      COMAdminOSNotInitialized => 0,
      COMAdminOSWindows3_1 => 1,
      COMAdminOSWindows9x => 2,
      COMAdminOSWindows2000 => 3,
      COMAdminOSWindows2000AdvancedServer => 4,
      COMAdminOSWindows2000Unknown => 5,
      COMAdminOSUnknown => 6,
      COMAdminOSWindowsXPPersonal => 11,
      COMAdminOSWindowsXPProfessional => 12,
      COMAdminOSWindowsNETStandardServer => 13,
      COMAdminOSWindowsNETEnterpriseServer => 14,
      COMAdminOSWindowsNETDatacenterServer => 15,
      COMAdminOSWindowsNETWebServer => 16,
      COMAdminOSWindowsLonghornPersonal => 17,
      COMAdminOSWindowsLonghornProfessional => 18,
      COMAdminOSWindowsLonghornStandardServer => 19,
      COMAdminOSWindowsLonghornEnterpriseServer => 20,
      COMAdminOSWindowsLonghornDatacenterServer => 21,
      COMAdminOSWindowsLonghornWebServer => 22,
      COMAdminOSWindows7Personal => 23,
      COMAdminOSWindows7Professional => 24,
      COMAdminOSWindows7StandardServer => 25,
      COMAdminOSWindows7EnterpriseServer => 26,
      COMAdminOSWindows7DatacenterServer => 27,
      COMAdminOSWindows7WebServer => 28,
      COMAdminOSWindows8Personal => 29,
      COMAdminOSWindows8Professional => 30,
      COMAdminOSWindows8StandardServer => 31,
      COMAdminOSWindows8EnterpriseServer => 32,
      COMAdminOSWindows8DatacenterServer => 33,
      COMAdminOSWindows8WebServer => 34,
      COMAdminOSWindowsBluePersonal => 35,
      COMAdminOSWindowsBlueProfessional => 36,
      COMAdminOSWindowsBlueStandardServer => 37,
      COMAdminOSWindowsBlueEnterpriseServer => 38,
      COMAdminOSWindowsBlueDatacenterServer => 39,
      COMAdminOSWindowsBlueWebServer => 40
   );
   for COMAdminOS'Size use 32;
   type COMAdminServiceOptions is (
      COMAdminServiceLoadBalanceRouter
   );
   for COMAdminServiceOptions use (
      COMAdminServiceLoadBalanceRouter => 1
   );
   for COMAdminServiceOptions'Size use 32;
   type COMAdminServiceStatusOptions is (
      COMAdminServiceStopped,
      COMAdminServiceStartPending,
      COMAdminServiceStopPending,
      COMAdminServiceRunning,
      COMAdminServiceContinuePending,
      COMAdminServicePausePending,
      COMAdminServicePaused,
      COMAdminServiceUnknownState
   );
   for COMAdminServiceStatusOptions use (
      COMAdminServiceStopped => 0,
      COMAdminServiceStartPending => 1,
      COMAdminServiceStopPending => 2,
      COMAdminServiceRunning => 3,
      COMAdminServiceContinuePending => 4,
      COMAdminServicePausePending => 5,
      COMAdminServicePaused => 6,
      COMAdminServiceUnknownState => 7
   );
   for COMAdminServiceStatusOptions'Size use 32;
   type COMAdminQCMessageAuthenticateOptions is (
      COMAdminQCMessageAuthenticateSecureApps,
      COMAdminQCMessageAuthenticateOff,
      COMAdminQCMessageAuthenticateOn
   );
   for COMAdminQCMessageAuthenticateOptions use (
      COMAdminQCMessageAuthenticateSecureApps => 0,
      COMAdminQCMessageAuthenticateOff => 1,
      COMAdminQCMessageAuthenticateOn => 2
   );
   for COMAdminQCMessageAuthenticateOptions'Size use 32;
   type COMAdminFileFlags is (
      COMAdminFileFlagLoadable,
      COMAdminFileFlagCOM,
      COMAdminFileFlagContainsPS,
      COMAdminFileFlagContainsComp,
      COMAdminFileFlagContainsTLB,
      COMAdminFileFlagSelfReg,
      COMAdminFileFlagSelfUnReg,
      COMAdminFileFlagUnloadableDLL,
      COMAdminFileFlagDoesNotExist,
      COMAdminFileFlagAlreadyInstalled,
      COMAdminFileFlagBadTLB,
      COMAdminFileFlagGetClassObjFailed,
      COMAdminFileFlagClassNotAvailable,
      COMAdminFileFlagRegistrar,
      COMAdminFileFlagNoRegistrar,
      COMAdminFileFlagDLLRegsvrFailed,
      COMAdminFileFlagRegTLBFailed,
      COMAdminFileFlagRegistrarFailed,
      COMAdminFileFlagError
   );
   for COMAdminFileFlags use (
      COMAdminFileFlagLoadable => 1,
      COMAdminFileFlagCOM => 2,
      COMAdminFileFlagContainsPS => 4,
      COMAdminFileFlagContainsComp => 8,
      COMAdminFileFlagContainsTLB => 16,
      COMAdminFileFlagSelfReg => 32,
      COMAdminFileFlagSelfUnReg => 64,
      COMAdminFileFlagUnloadableDLL => 128,
      COMAdminFileFlagDoesNotExist => 256,
      COMAdminFileFlagAlreadyInstalled => 512,
      COMAdminFileFlagBadTLB => 1024,
      COMAdminFileFlagGetClassObjFailed => 2048,
      COMAdminFileFlagClassNotAvailable => 4096,
      COMAdminFileFlagRegistrar => 8192,
      COMAdminFileFlagNoRegistrar => 16384,
      COMAdminFileFlagDLLRegsvrFailed => 32768,
      COMAdminFileFlagRegTLBFailed => 65536,
      COMAdminFileFlagRegistrarFailed => 131072,
      COMAdminFileFlagError => 262144
   );
   for COMAdminFileFlags'Size use 32;
   type COMAdminComponentFlags is (
      COMAdminCompFlagTypeInfoFound,
      COMAdminCompFlagCOMPlusPropertiesFound,
      COMAdminCompFlagProxyFound,
      COMAdminCompFlagInterfacesFound,
      COMAdminCompFlagAlreadyInstalled,
      COMAdminCompFlagNotInApplication
   );
   for COMAdminComponentFlags use (
      COMAdminCompFlagTypeInfoFound => 1,
      COMAdminCompFlagCOMPlusPropertiesFound => 2,
      COMAdminCompFlagProxyFound => 4,
      COMAdminCompFlagInterfacesFound => 8,
      COMAdminCompFlagAlreadyInstalled => 16,
      COMAdminCompFlagNotInApplication => 32
   );
   for COMAdminComponentFlags'Size use 32;
   type COMAdminErrorCodes is (
      COMAdminErrObjectErrors,
      COMAdminErrObjectInvalid,
      COMAdminErrKeyMissing,
      COMAdminErrAlreadyInstalled,
      COMAdminErrAppFileWriteFail,
      COMAdminErrAppFileReadFail,
      COMAdminErrAppFileVersion,
      COMAdminErrBadPath,
      COMAdminErrApplicationExists,
      COMAdminErrRoleExists,
      COMAdminErrCantCopyFile,
      COMAdminErrNoUser,
      COMAdminErrInvalidUserids,
      COMAdminErrNoRegistryCLSID,
      COMAdminErrBadRegistryProgID,
      COMAdminErrAuthenticationLevel,
      COMAdminErrUserPasswdNotValid,
      COMAdminErrCLSIDOrIIDMismatch,
      COMAdminErrRemoteInterface,
      COMAdminErrDllRegisterServer,
      COMAdminErrNoServerShare,
      COMAdminErrDllLoadFailed,
      COMAdminErrBadRegistryLibID,
      COMAdminErrAppDirNotFound,
      COMAdminErrRegistrarFailed,
      COMAdminErrCompFileDoesNotExist,
      COMAdminErrCompFileLoadDLLFail,
      COMAdminErrCompFileGetClassObj,
      COMAdminErrCompFileClassNotAvail,
      COMAdminErrCompFileBadTLB,
      COMAdminErrCompFileNotInstallable,
      COMAdminErrNotChangeable,
      COMAdminErrNotDeletable,
      COMAdminErrSession,
      COMAdminErrCompMoveLocked,
      COMAdminErrCompMoveBadDest,
      COMAdminErrRegisterTLB,
      COMAdminErrSystemApp,
      COMAdminErrCompFileNoRegistrar,
      COMAdminErrCoReqCompInstalled,
      COMAdminErrServiceNotInstalled,
      COMAdminErrPropertySaveFailed,
      COMAdminErrObjectExists,
      COMAdminErrComponentExists,
      COMAdminErrRegFileCorrupt,
      COMAdminErrPropertyOverflow,
      COMAdminErrNotInRegistry,
      COMAdminErrObjectNotPoolable,
      COMAdminErrApplidMatchesClsid,
      COMAdminErrRoleDoesNotExist,
      COMAdminErrStartAppNeedsComponents,
      COMAdminErrRequiresDifferentPlatform,
      COMAdminErrCanNotExportAppProxy,
      COMAdminErrCanNotStartApp,
      COMAdminErrCanNotExportSystemApp,
      COMAdminErrCanNotSubscribeToComponent,
      COMAdminErrEventClassCannotBeSubscriber,
      COMAdminErrLibAppProxyIncompatible,
      COMAdminErrBasePartitionOnly,
      COMAdminErrStartAppDisabled,
      COMAdminErrDuplicatePartitionName,
      COMAdminErrPartitionInUse,
      COMAdminErrImportedComponentsNotAllowed,
      COMAdminErrRegdbNotInitialized,
      COMAdminErrRegdbNotOpen,
      COMAdminErrRegdbSystemErr,
      COMAdminErrRegdbAlreadyRunning,
      COMAdminErrMigVersionNotSupported,
      COMAdminErrMigSchemaNotFound,
      COMAdminErrCatBitnessMismatch,
      COMAdminErrCatUnacceptableBitness,
      COMAdminErrCatWrongAppBitnessBitness,
      COMAdminErrCatPauseResumeNotSupported,
      COMAdminErrCatServerFault,
      COMAdminErrQueuingServiceNotAvailable,
      COMAdminErrObjectParentMissing,
      COMAdminErrObjectDoesNotExist,
      COMAdminErrAppNotRunning,
      COMAdminErrInvalidPartition,
      COMAdminErrCantRecycleLibraryApps,
      COMAdminErrCantRecycleServiceApps,
      COMAdminErrProcessAlreadyRecycled,
      COMAdminErrPausedProcessMayNotBeRecycled,
      COMAdminErrPartitionMsiOnly,
      COMAdminErrCompMoveSource,
      COMAdminErrCompMoveDest,
      COMAdminErrCompMovePrivate,
      COMAdminErrCannotCopyEventClass
   );
   for COMAdminErrorCodes use (
      COMAdminErrObjectErrors => -2146368511,
      COMAdminErrObjectInvalid => -2146368510,
      COMAdminErrKeyMissing => -2146368509,
      COMAdminErrAlreadyInstalled => -2146368508,
      COMAdminErrAppFileWriteFail => -2146368505,
      COMAdminErrAppFileReadFail => -2146368504,
      COMAdminErrAppFileVersion => -2146368503,
      COMAdminErrBadPath => -2146368502,
      COMAdminErrApplicationExists => -2146368501,
      COMAdminErrRoleExists => -2146368500,
      COMAdminErrCantCopyFile => -2146368499,
      COMAdminErrNoUser => -2146368497,
      COMAdminErrInvalidUserids => -2146368496,
      COMAdminErrNoRegistryCLSID => -2146368495,
      COMAdminErrBadRegistryProgID => -2146368494,
      COMAdminErrAuthenticationLevel => -2146368493,
      COMAdminErrUserPasswdNotValid => -2146368492,
      COMAdminErrCLSIDOrIIDMismatch => -2146368488,
      COMAdminErrRemoteInterface => -2146368487,
      COMAdminErrDllRegisterServer => -2146368486,
      COMAdminErrNoServerShare => -2146368485,
      COMAdminErrDllLoadFailed => -2146368483,
      COMAdminErrBadRegistryLibID => -2146368482,
      COMAdminErrAppDirNotFound => -2146368481,
      COMAdminErrRegistrarFailed => -2146368477,
      COMAdminErrCompFileDoesNotExist => -2146368476,
      COMAdminErrCompFileLoadDLLFail => -2146368475,
      COMAdminErrCompFileGetClassObj => -2146368474,
      COMAdminErrCompFileClassNotAvail => -2146368473,
      COMAdminErrCompFileBadTLB => -2146368472,
      COMAdminErrCompFileNotInstallable => -2146368471,
      COMAdminErrNotChangeable => -2146368470,
      COMAdminErrNotDeletable => -2146368469,
      COMAdminErrSession => -2146368468,
      COMAdminErrCompMoveLocked => -2146368467,
      COMAdminErrCompMoveBadDest => -2146368466,
      COMAdminErrRegisterTLB => -2146368464,
      COMAdminErrSystemApp => -2146368461,
      COMAdminErrCompFileNoRegistrar => -2146368460,
      COMAdminErrCoReqCompInstalled => -2146368459,
      COMAdminErrServiceNotInstalled => -2146368458,
      COMAdminErrPropertySaveFailed => -2146368457,
      COMAdminErrObjectExists => -2146368456,
      COMAdminErrComponentExists => -2146368455,
      COMAdminErrRegFileCorrupt => -2146368453,
      COMAdminErrPropertyOverflow => -2146368452,
      COMAdminErrNotInRegistry => -2146368450,
      COMAdminErrObjectNotPoolable => -2146368449,
      COMAdminErrApplidMatchesClsid => -2146368442,
      COMAdminErrRoleDoesNotExist => -2146368441,
      COMAdminErrStartAppNeedsComponents => -2146368440,
      COMAdminErrRequiresDifferentPlatform => -2146368439,
      COMAdminErrCanNotExportAppProxy => -2146368438,
      COMAdminErrCanNotStartApp => -2146368437,
      COMAdminErrCanNotExportSystemApp => -2146368436,
      COMAdminErrCanNotSubscribeToComponent => -2146368435,
      COMAdminErrEventClassCannotBeSubscriber => -2146368434,
      COMAdminErrLibAppProxyIncompatible => -2146368433,
      COMAdminErrBasePartitionOnly => -2146368432,
      COMAdminErrStartAppDisabled => -2146368431,
      COMAdminErrDuplicatePartitionName => -2146368425,
      COMAdminErrPartitionInUse => -2146368423,
      COMAdminErrImportedComponentsNotAllowed => -2146368421,
      COMAdminErrRegdbNotInitialized => -2146368398,
      COMAdminErrRegdbNotOpen => -2146368397,
      COMAdminErrRegdbSystemErr => -2146368396,
      COMAdminErrRegdbAlreadyRunning => -2146368395,
      COMAdminErrMigVersionNotSupported => -2146368384,
      COMAdminErrMigSchemaNotFound => -2146368383,
      COMAdminErrCatBitnessMismatch => -2146368382,
      COMAdminErrCatUnacceptableBitness => -2146368381,
      COMAdminErrCatWrongAppBitnessBitness => -2146368380,
      COMAdminErrCatPauseResumeNotSupported => -2146368379,
      COMAdminErrCatServerFault => -2146368378,
      COMAdminErrQueuingServiceNotAvailable => -2146367998,
      COMAdminErrObjectParentMissing => -2146367480,
      COMAdminErrObjectDoesNotExist => -2146367479,
      COMAdminErrAppNotRunning => -2146367478,
      COMAdminErrInvalidPartition => -2146367477,
      COMAdminErrCantRecycleLibraryApps => -2146367473,
      COMAdminErrCantRecycleServiceApps => -2146367471,
      COMAdminErrProcessAlreadyRecycled => -2146367470,
      COMAdminErrPausedProcessMayNotBeRecycled => -2146367469,
      COMAdminErrPartitionMsiOnly => -2146367463,
      COMAdminErrCompMoveSource => -2146367460,
      COMAdminErrCompMoveDest => -2146367459,
      COMAdminErrCompMovePrivate => -2146367458,
      COMAdminErrCannotCopyEventClass => -2146367456
   );
   for COMAdminErrorCodes'Size use 32;
   -- #include <transact.h>
   type ITransaction;
   type ITransactionCloner;
   type ITransaction2;
   type ITransactionDispenser;
   type ITransactionOptions;
   type ITransactionOutcomeEvents;
   type ITmNodeName;
   type IKernelTransaction;
   type BOID_rgb_Array is array(1..16) of byte; -- Auto Generated Dependancy
   type BOID is record
      rgb : BOID_rgb_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,BOID);
   for BOID use record
      rgb at 0 range 0..127;
   end record;
   for BOID'Size use 128;
   for BOID'Alignment use 1;
   type TX_MISC_CONSTANTS is (
      MAX_TRAN_DESC
   );
   for TX_MISC_CONSTANTS use (
      MAX_TRAN_DESC => 40
   );
   for TX_MISC_CONSTANTS'Size use 32;
   subtype XACTUOW is BOID;
   subtype ISOLEVEL is LONG;
   type ISOLATIONLEVEL is (
      ISOLATIONLEVEL_UNSPECIFIED,
      ISOLATIONLEVEL_CHAOS,
      ISOLATIONLEVEL_READUNCOMMITTED,
      ISOLATIONLEVEL_CURSORSTABILITY,
      ISOLATIONLEVEL_REPEATABLEREAD,
      ISOLATIONLEVEL_SERIALIZABLE
   );
   for ISOLATIONLEVEL use (
      ISOLATIONLEVEL_UNSPECIFIED => -1,
      ISOLATIONLEVEL_CHAOS => 16,
      ISOLATIONLEVEL_READUNCOMMITTED => 256,
      ISOLATIONLEVEL_CURSORSTABILITY => 4096,
      ISOLATIONLEVEL_REPEATABLEREAD => 65536,
      ISOLATIONLEVEL_SERIALIZABLE => 1048576
   );
   for ISOLATIONLEVEL'Size use 32;
   type XACTTRANSINFO is record
      uow_x : XACTUOW;
      isoLevel_x : ISOLEVEL;
      isoFlags : ULONG;
      grfTCSupported : DWORD;
      grfRMSupported : DWORD;
      grfTCSupportedRetaining : DWORD;
      grfRMSupportedRetaining : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,XACTTRANSINFO);
   for XACTTRANSINFO use record
      uow_x at 0 range 0..127;
      isoLevel_x at 0 range 128..159;
      isoFlags at 0 range 160..191;
      grfTCSupported at 0 range 192..223;
      grfRMSupported at 0 range 224..255;
      grfTCSupportedRetaining at 0 range 256..287;
      grfRMSupportedRetaining at 0 range 288..319;
   end record;
   for XACTTRANSINFO'Size use 320;
   for XACTTRANSINFO'Alignment use 4;
   type XACTSTATS is record
      cOpen : ULONG;
      cCommitting : ULONG;
      cCommitted : ULONG;
      cAborting : ULONG;
      cAborted : ULONG;
      cInDoubt : ULONG;
      cHeuristicDecision : ULONG;
      timeTransactionsUp : FILETIME;
   end record;
   pragma Convention (C_Pass_By_Copy,XACTSTATS);
   for XACTSTATS use record
      cOpen at 0 range 0..31;
      cCommitting at 0 range 32..63;
      cCommitted at 0 range 64..95;
      cAborting at 0 range 96..127;
      cAborted at 0 range 128..159;
      cInDoubt at 0 range 160..191;
      cHeuristicDecision at 0 range 192..223;
      timeTransactionsUp at 0 range 224..287;
   end record;
   for XACTSTATS'Size use 288;
   for XACTSTATS'Alignment use 4;
   type ISOFLAG is (
      ISOFLAG_RETAIN_COMMIT_DC,
      ISOFLAG_RETAIN_COMMIT,
      ISOFLAG_RETAIN_COMMIT_NO,
      ISOFLAG_RETAIN_ABORT_DC,
      ISOFLAG_RETAIN_DONTCARE,
      ISOFLAG_RETAIN_ABORT,
      ISOFLAG_RETAIN_BOTH,
      ISOFLAG_RETAIN_ABORT_NO,
      ISOFLAG_RETAIN_NONE,
      ISOFLAG_OPTIMISTIC,
      ISOFLAG_READONLY
   );
   for ISOFLAG use (
      ISOFLAG_RETAIN_COMMIT_DC => 1,
      ISOFLAG_RETAIN_COMMIT => 2,
      ISOFLAG_RETAIN_COMMIT_NO => 3,
      ISOFLAG_RETAIN_ABORT_DC => 4,
      ISOFLAG_RETAIN_DONTCARE => 5,
      ISOFLAG_RETAIN_ABORT => 8,
      ISOFLAG_RETAIN_BOTH => 10,
      ISOFLAG_RETAIN_ABORT_NO => 12,
      ISOFLAG_RETAIN_NONE => 15,
      ISOFLAG_OPTIMISTIC => 16,
      ISOFLAG_READONLY => 32
   );
   for ISOFLAG'Size use 32;
   type XACTTC is (
      XACTTC_NONE,
      XACTTC_SYNC_PHASEONE,
      XACTTC_SYNC_PHASETWO,
      XACTTC_ASYNC_PHASEONE
   );
   for XACTTC use (
      XACTTC_NONE => 0,
      XACTTC_SYNC_PHASEONE => 1,
      XACTTC_SYNC_PHASETWO => 2,
      XACTTC_ASYNC_PHASEONE => 4
   );
   for XACTTC'Size use 32;
   type XACTRM is (
      XACTRM_OPTIMISTICLASTWINS,
      XACTRM_NOREADONLYPREPARES
   );
   for XACTRM use (
      XACTRM_OPTIMISTICLASTWINS => 1,
      XACTRM_NOREADONLYPREPARES => 2
   );
   for XACTRM'Size use 32;
   type XACTCONST is (
      XACTCONST_TIMEOUTINFINITE
   );
   for XACTCONST use (
      XACTCONST_TIMEOUTINFINITE => 0
   );
   for XACTCONST'Size use 32;
   type XACTHEURISTIC is (
      XACTHEURISTIC_ABORT,
      XACTHEURISTIC_COMMIT,
      XACTHEURISTIC_DAMAGE,
      XACTHEURISTIC_DANGER
   );
   for XACTHEURISTIC use (
      XACTHEURISTIC_ABORT => 1,
      XACTHEURISTIC_COMMIT => 2,
      XACTHEURISTIC_DAMAGE => 3,
      XACTHEURISTIC_DANGER => 4
   );
   for XACTHEURISTIC'Size use 32;
   type XACTSTAT is (
      XACTSTAT_NONE,
      XACTSTAT_OPENNORMAL,
      XACTSTAT_OPENREFUSED,
      XACTSTAT_OPEN,
      XACTSTAT_PREPARING,
      XACTSTAT_PREPARED,
      XACTSTAT_PREPARERETAINING,
      XACTSTAT_PREPARERETAINED,
      XACTSTAT_COMMITTING,
      XACTSTAT_COMMITRETAINING,
      XACTSTAT_ABORTING,
      XACTSTAT_ABORTED,
      XACTSTAT_COMMITTED,
      XACTSTAT_HEURISTIC_ABORT,
      XACTSTAT_HEURISTIC_COMMIT,
      XACTSTAT_HEURISTIC_DAMAGE,
      XACTSTAT_HEURISTIC_DANGER,
      XACTSTAT_FORCED_ABORT,
      XACTSTAT_FORCED_COMMIT,
      XACTSTAT_INDOUBT,
      XACTSTAT_CLOSED,
      XACTSTAT_NOTPREPARED,
      XACTSTAT_ALL
   );
   for XACTSTAT use (
      XACTSTAT_NONE => 0,
      XACTSTAT_OPENNORMAL => 1,
      XACTSTAT_OPENREFUSED => 2,
      XACTSTAT_OPEN => 3,
      XACTSTAT_PREPARING => 4,
      XACTSTAT_PREPARED => 8,
      XACTSTAT_PREPARERETAINING => 16,
      XACTSTAT_PREPARERETAINED => 32,
      XACTSTAT_COMMITTING => 64,
      XACTSTAT_COMMITRETAINING => 128,
      XACTSTAT_ABORTING => 256,
      XACTSTAT_ABORTED => 512,
      XACTSTAT_COMMITTED => 1024,
      XACTSTAT_HEURISTIC_ABORT => 2048,
      XACTSTAT_HEURISTIC_COMMIT => 4096,
      XACTSTAT_HEURISTIC_DAMAGE => 8192,
      XACTSTAT_HEURISTIC_DANGER => 16384,
      XACTSTAT_FORCED_ABORT => 32768,
      XACTSTAT_FORCED_COMMIT => 65536,
      XACTSTAT_INDOUBT => 131072,
      XACTSTAT_CLOSED => 262144,
      XACTSTAT_NOTPREPARED => 524227,
      XACTSTAT_ALL => 524287
   );
   for XACTSTAT'Size use 32;
   type XACTOPT_szDescription_Array is array(1..40) of Character; -- Auto Generated Dependancy
   type XACTOPT is record
      ulTimeout : ULONG;
      szDescription : XACTOPT_szDescription_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,XACTOPT);
   for XACTOPT use record
      ulTimeout at 0 range 0..31;
      szDescription at 0 range 32..351;
   end record;
   for XACTOPT'Size use 352;
   for XACTOPT'Alignment use 4;
   IID_ITransaction : aliased constant IID;
   pragma import (C,IID_ITransaction,"IID_ITransaction");
   type ITransaction is limited interface and IUnknown;
      function Commit(
         This : access ITransaction;
         fRetaining : BOOL;
         grfTC : DWORD;
         grfRM : DWORD
      ) return HRESULT is abstract;
      function abort_x_x(
         This : access ITransaction;
         pboidReason : access BOID;
         fRetaining : BOOL;
         fAsync : BOOL
      ) return HRESULT is abstract;
      function GetTransactionInfo(
         This : access ITransaction;
         pinfo : access XACTTRANSINFO
      ) return HRESULT is abstract;
   type ITransaction_Ptr is access all ITransaction'Class;
   IID_ITransactionCloner : aliased constant IID;
   pragma import (C,IID_ITransactionCloner,"IID_ITransactionCloner");
   type ITransactionCloner is limited interface and ITransaction;
      function CloneWithCommitDisabled(
         This : access ITransactionCloner;
         ppITransaction : access ITransaction_Ptr
      ) return HRESULT is abstract;
   type ITransactionCloner_Ptr is access all ITransactionCloner'Class;
   IID_ITransaction2 : aliased constant IID;
   pragma import (C,IID_ITransaction2,"IID_ITransaction2");
   type ITransaction2 is limited interface and ITransactionCloner;
      function GetTransactionInfo2(
         This : access ITransaction2;
         pinfo : access XACTTRANSINFO
      ) return HRESULT is abstract;
   type ITransaction2_Ptr is access all ITransaction2'Class;
   IID_ITransactionDispenser : aliased constant IID;
   pragma import (C,IID_ITransactionDispenser,"IID_ITransactionDispenser");
   type ITransactionOptions_Ptr is access all ITransactionOptions; -- Auto Generated Dependancy
   type ITransactionDispenser is limited interface and IUnknown;
      function GetOptionsObject(
         This : access ITransactionDispenser;
         ppOptions : access ITransactionOptions_Ptr
      ) return HRESULT is abstract;
      function BeginTransaction(
         This : access ITransactionDispenser;
         punkOuter : access IUnknown'Class;
         isoLevel_x : ISOLEVEL;
         isoFlags : ULONG;
         pOptions : access ITransactionOptions'Class;
         ppTransaction : access ITransaction_Ptr
      ) return HRESULT is abstract;
   type ITransactionDispenser_Ptr is access all ITransactionDispenser'Class;
   IID_ITransactionOptions : aliased constant IID;
   pragma import (C,IID_ITransactionOptions,"IID_ITransactionOptions");
   type ITransactionOptions is limited interface and IUnknown;
      function SetOptions(
         This : access ITransactionOptions;
         pOptions : access XACTOPT
      ) return HRESULT is abstract;
      function GetOptions(
         This : access ITransactionOptions;
         pOptions : access XACTOPT
      ) return HRESULT is abstract;
   IID_ITransactionOutcomeEvents : aliased constant IID;
   pragma import (C,IID_ITransactionOutcomeEvents,"IID_ITransactionOutcomeEvents");
   type ITransactionOutcomeEvents is limited interface and IUnknown;
      function Committed(
         This : access ITransactionOutcomeEvents;
         fRetaining : BOOL;
         pNewUOW : access XACTUOW;
         hr : HRESULT
      ) return HRESULT is abstract;
      function Aborted(
         This : access ITransactionOutcomeEvents;
         pboidReason : access BOID;
         fRetaining : BOOL;
         pNewUOW : access XACTUOW;
         hr : HRESULT
      ) return HRESULT is abstract;
      function HeuristicDecision(
         This : access ITransactionOutcomeEvents;
         dwDecision : DWORD;
         pboidReason : access BOID;
         hr : HRESULT
      ) return HRESULT is abstract;
      function Indoubt(This : access ITransactionOutcomeEvents) return HRESULT is abstract;
   type ITransactionOutcomeEvents_Ptr is access all ITransactionOutcomeEvents'Class;
   IID_ITmNodeName : aliased constant IID;
   pragma import (C,IID_ITmNodeName,"IID_ITmNodeName");
   type ITmNodeName is limited interface and IUnknown;
      function GetNodeNameSize(
         This : access ITmNodeName;
         pcbNodeNameSize : access ULONG
      ) return HRESULT is abstract;
      function GetNodeName(
         This : access ITmNodeName;
         cbNodeNameBufferSize : ULONG;
         pNodeNameBuffer : LPWSTR
      ) return HRESULT is abstract;
   type ITmNodeName_Ptr is access all ITmNodeName'Class;
   IID_IKernelTransaction : aliased constant IID;
   pragma import (C,IID_IKernelTransaction,"IID_IKernelTransaction");
   type IKernelTransaction is limited interface and IUnknown;
      function GetHandle(
         This : access IKernelTransaction;
         pHandle_x : access HANDLE
      ) return HRESULT is abstract;
   type IKernelTransaction_Ptr is access all IKernelTransaction'Class;
   -- #include <txdtc.h>
   type IXATransLookup;
   type IXATransLookup2;
   type IResourceManagerSink;
   type IResourceManager;
   type ILastResourceManager;
   type IResourceManager2;
   type IResourceManagerRejoinable;
   type IXAConfig;
   type IRMHelper;
   type IXAObtainRMInfo;
   type IResourceManagerFactory;
   type IResourceManagerFactory2;
   type IPrepareInfo;
   type IPrepareInfo2;
   type IGetDispenser;
   type ITransactionVoterBallotAsync2;
   type ITransactionVoterNotifyAsync2;
   type ITransactionVoterFactory2;
   type ITransactionPhase0EnlistmentAsync;
   type ITransactionPhase0NotifyAsync;
   type ITransactionPhase0Factory;
   type ITransactionTransmitter;
   type ITransactionTransmitterFactory;
   type ITransactionReceiver;
   type ITransactionReceiverFactory;
   type IDtcLuConfigure;
   type IDtcLuRecovery;
   type IDtcLuRecoveryFactory;
   type IDtcLuRecoveryInitiatedByDtcTransWork;
   type IDtcLuRecoveryInitiatedByDtcStatusWork;
   type IDtcLuRecoveryInitiatedByDtc;
   type IDtcLuRecoveryInitiatedByLuWork;
   type IDtcLuRecoveryInitiatedByLu;
   type IDtcLuRmEnlistment;
   type IDtcLuRmEnlistmentSink;
   type IDtcLuRmEnlistmentFactory;
   type IDtcLuSubordinateDtc;
   type IDtcLuSubordinateDtcSink;
   type IDtcLuSubordinateDtcFactory;
   -- #include <txcoord.h>
   type ITransactionResourceAsync;
   type ITransactionLastResourceAsync;
   type ITransactionResource;
   type ITransactionEnlistmentAsync;
   type ITransactionLastEnlistmentAsync;
   type ITransactionExportFactory;
   type ITransactionImportWhereabouts;
   type ITransactionExport;
   type ITransactionImport;
   type ITipTransaction;
   type ITipHelper;
   type ITipPullSink;
   type IDtcNetworkAccessConfig;
   type IDtcNetworkAccessConfig2;
   type IDtcNetworkAccessConfig3;
   IID_ITransactionResourceAsync : aliased constant IID;
   pragma import (C,IID_ITransactionResourceAsync,"IID_ITransactionResourceAsync");
   type ITransactionResourceAsync is limited interface and IUnknown;
      function PrepareRequest(
         This : access ITransactionResourceAsync;
         fRetaining : BOOL;
         grfRM : DWORD;
         fWantMoniker : BOOL;
         fSinglePhase : BOOL
      ) return HRESULT is abstract;
      function CommitRequest(
         This : access ITransactionResourceAsync;
         grfRM : DWORD;
         pNewUOW : access XACTUOW
      ) return HRESULT is abstract;
      function AbortRequest(
         This : access ITransactionResourceAsync;
         pboidReason : access BOID;
         fRetaining : BOOL;
         pNewUOW : access XACTUOW
      ) return HRESULT is abstract;
      function TMDown(This : access ITransactionResourceAsync) return HRESULT is abstract;
   type ITransactionResourceAsync_Ptr is access all ITransactionResourceAsync'Class;
   IID_ITransactionLastResourceAsync : aliased constant IID;
   pragma import (C,IID_ITransactionLastResourceAsync,"IID_ITransactionLastResourceAsync");
   type ITransactionLastResourceAsync is limited interface and IUnknown;
      function DelegateCommit(
         This : access ITransactionLastResourceAsync;
         grfRM : DWORD
      ) return HRESULT is abstract;
      function ForgetRequest(
         This : access ITransactionLastResourceAsync;
         pNewUOW : access XACTUOW
      ) return HRESULT is abstract;
   type ITransactionLastResourceAsync_Ptr is access all ITransactionLastResourceAsync'Class;
   IID_ITransactionResource : aliased constant IID;
   pragma import (C,IID_ITransactionResource,"IID_ITransactionResource");
   type ITransactionResource is limited interface and IUnknown;
      function PrepareRequest(
         This : access ITransactionResource;
         fRetaining : BOOL;
         grfRM : DWORD;
         fWantMoniker : BOOL;
         fSinglePhase : BOOL
      ) return HRESULT is abstract;
      function CommitRequest(
         This : access ITransactionResource;
         grfRM : DWORD;
         pNewUOW : access XACTUOW
      ) return HRESULT is abstract;
      function AbortRequest(
         This : access ITransactionResource;
         pboidReason : access BOID;
         fRetaining : BOOL;
         pNewUOW : access XACTUOW
      ) return HRESULT is abstract;
      function TMDown(This : access ITransactionResource) return HRESULT is abstract;
   type ITransactionResource_Ptr is access all ITransactionResource'Class;
   IID_ITransactionEnlistmentAsync : aliased constant IID;
   pragma import (C,IID_ITransactionEnlistmentAsync,"IID_ITransactionEnlistmentAsync");
   type ITransactionEnlistmentAsync is limited interface and IUnknown;
      function PrepareRequestDone(
         This : access ITransactionEnlistmentAsync;
         hr : HRESULT;
         pmk : access IMoniker'Class;
         pboidReason : access BOID
      ) return HRESULT is abstract;
      function CommitRequestDone(
         This : access ITransactionEnlistmentAsync;
         hr : HRESULT
      ) return HRESULT is abstract;
      function AbortRequestDone(
         This : access ITransactionEnlistmentAsync;
         hr : HRESULT
      ) return HRESULT is abstract;
   type ITransactionEnlistmentAsync_Ptr is access all ITransactionEnlistmentAsync'Class;
   IID_ITransactionLastEnlistmentAsync : aliased constant IID;
   pragma import (C,IID_ITransactionLastEnlistmentAsync,"IID_ITransactionLastEnlistmentAsync");
   type ITransactionLastEnlistmentAsync is limited interface and IUnknown;
      function TransactionOutcome(
         This : access ITransactionLastEnlistmentAsync;
         XactStat_x : XACTSTAT;
         pboidReason : access BOID
      ) return HRESULT is abstract;
   type ITransactionLastEnlistmentAsync_Ptr is access all ITransactionLastEnlistmentAsync'Class;
   IID_ITransactionExportFactory : aliased constant IID;
   pragma import (C,IID_ITransactionExportFactory,"IID_ITransactionExportFactory");
   type ITransactionExport_Ptr is access all ITransactionExport; -- Auto Generated Dependancy
   type ITransactionExportFactory is limited interface and IUnknown;
      function GetRemoteClassId(
         This : access ITransactionExportFactory;
         pclsid : access CLSID
      ) return HRESULT is abstract;
      function Create(
         This : access ITransactionExportFactory;
         cbWhereabouts : ULONG;
         rgbWhereabouts : access byte;
         ppExport : access ITransactionExport_Ptr
      ) return HRESULT is abstract;
   type ITransactionExportFactory_Ptr is access all ITransactionExportFactory'Class;
   IID_ITransactionImportWhereabouts : aliased constant IID;
   pragma import (C,IID_ITransactionImportWhereabouts,"IID_ITransactionImportWhereabouts");
   type ITransactionImportWhereabouts is limited interface and IUnknown;
      function GetWhereaboutsSize(
         This : access ITransactionImportWhereabouts;
         pcbWhereabouts : access ULONG
      ) return HRESULT is abstract;
      function GetWhereabouts(
         This : access ITransactionImportWhereabouts;
         cbWhereabouts : ULONG;
         rgbWhereabouts : access byte;
         pcbUsed : access ULONG
      ) return HRESULT is abstract;
   type ITransactionImportWhereabouts_Ptr is access all ITransactionImportWhereabouts'Class;
   function ITransactionImportWhereabouts_RemoteGetWhereabouts_Proxy(
      This : access ITransactionImportWhereabouts'Class;
      pcbUsed : access ULONG;
      cbWhereabouts : ULONG;
      rgbWhereabouts : access byte
   ) return HRESULT;
   pragma import (Cpp,ITransactionImportWhereabouts_RemoteGetWhereabouts_Proxy,"ITransactionImportWhereabouts_RemoteGetWhereabouts_Proxy");
   procedure ITransactionImportWhereabouts_RemoteGetWhereabouts_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITransactionImportWhereabouts_RemoteGetWhereabouts_Stub,"ITransactionImportWhereabouts_RemoteGetWhereabouts_Stub");
   IID_ITransactionExport : aliased constant IID;
   pragma import (C,IID_ITransactionExport,"IID_ITransactionExport");
   type ITransactionExport is limited interface and IUnknown;
      function Export(
         This : access ITransactionExport;
         punkTransaction : access IUnknown'Class;
         pcbTransactionCookie : access ULONG
      ) return HRESULT is abstract;
      function GetTransactionCookie(
         This : access ITransactionExport;
         punkTransaction : access IUnknown'Class;
         cbTransactionCookie : ULONG;
         rgbTransactionCookie : access byte;
         pcbUsed : access ULONG
      ) return HRESULT is abstract;
   function ITransactionExport_RemoteGetTransactionCookie_Proxy(
      This : access ITransactionExport'Class;
      punkTransaction : access IUnknown'Class;
      pcbUsed : access ULONG;
      cbTransactionCookie : ULONG;
      rgbTransactionCookie : access byte
   ) return HRESULT;
   pragma import (Cpp,ITransactionExport_RemoteGetTransactionCookie_Proxy,"ITransactionExport_RemoteGetTransactionCookie_Proxy");
   procedure ITransactionExport_RemoteGetTransactionCookie_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,ITransactionExport_RemoteGetTransactionCookie_Stub,"ITransactionExport_RemoteGetTransactionCookie_Stub");
   IID_ITransactionImport : aliased constant IID;
   pragma import (C,IID_ITransactionImport,"IID_ITransactionImport");
   type ITransactionImport is limited interface and IUnknown;
      function Import(
         This : access ITransactionImport;
         cbTransactionCookie : ULONG;
         rgbTransactionCookie : access byte;
         piid : access IID;
         ppvTransaction : access LPVOID
      ) return HRESULT is abstract;
   type ITransactionImport_Ptr is access all ITransactionImport'Class;
   IID_ITipTransaction : aliased constant IID;
   pragma import (C,IID_ITipTransaction,"IID_ITipTransaction");
   type ITipTransaction is limited interface and IUnknown;
      function Push(
         This : access ITipTransaction;
         i_pszRemoteTmUrl : access Character;
         o_ppszRemoteTxUrl : access LPSTR
      ) return HRESULT is abstract;
      function GetTransactionUrl(
         This : access ITipTransaction;
         o_ppszLocalTxUrl : access LPSTR
      ) return HRESULT is abstract;
   type ITipTransaction_Ptr is access all ITipTransaction'Class;
   IID_ITipHelper : aliased constant IID;
   pragma import (C,IID_ITipHelper,"IID_ITipHelper");
   type ITipHelper is limited interface and IUnknown;
      function Pull(
         This : access ITipHelper;
         i_pszTxUrl : access Character;
         o_ppITransaction : access ITransaction_Ptr
      ) return HRESULT is abstract;
      function PullAsync(
         This : access ITipHelper;
         i_pszTxUrl : access Character;
         i_pTipPullSink : access ITipPullSink'Class;
         o_ppITransaction : access ITransaction_Ptr
      ) return HRESULT is abstract;
      function GetLocalTmUrl(
         This : access ITipHelper;
         o_ppszLocalTmUrl : access va_list
      ) return HRESULT is abstract;
   type ITipHelper_Ptr is access all ITipHelper'Class;
   IID_ITipPullSink : aliased constant IID;
   pragma import (C,IID_ITipPullSink,"IID_ITipPullSink");
   type ITipPullSink is limited interface and IUnknown;
      function PullComplete(
         This : access ITipPullSink;
         i_hrPull : HRESULT
      ) return HRESULT is abstract;
   type ITipPullSink_Ptr is access all ITipPullSink'Class;
   IID_IDtcNetworkAccessConfig : aliased constant IID;
   pragma import (C,IID_IDtcNetworkAccessConfig,"IID_IDtcNetworkAccessConfig");
   type IDtcNetworkAccessConfig is limited interface and IUnknown;
      function GetAnyNetworkAccess(
         This : access IDtcNetworkAccessConfig;
         pbAnyNetworkAccess : access BOOL
      ) return HRESULT is abstract;
      function SetAnyNetworkAccess(
         This : access IDtcNetworkAccessConfig;
         bAnyNetworkAccess : BOOL
      ) return HRESULT is abstract;
      function GetNetworkAdministrationAccess(
         This : access IDtcNetworkAccessConfig;
         pbNetworkAdministrationAccess : access BOOL
      ) return HRESULT is abstract;
      function SetNetworkAdministrationAccess(
         This : access IDtcNetworkAccessConfig;
         bNetworkAdministrationAccess : BOOL
      ) return HRESULT is abstract;
      function GetNetworkTransactionAccess(
         This : access IDtcNetworkAccessConfig;
         pbNetworkTransactionAccess : access BOOL
      ) return HRESULT is abstract;
      function SetNetworkTransactionAccess(
         This : access IDtcNetworkAccessConfig;
         bNetworkTransactionAccess : BOOL
      ) return HRESULT is abstract;
      function GetNetworkClientAccess(
         This : access IDtcNetworkAccessConfig;
         pbNetworkClientAccess : access BOOL
      ) return HRESULT is abstract;
      function SetNetworkClientAccess(
         This : access IDtcNetworkAccessConfig;
         bNetworkClientAccess : BOOL
      ) return HRESULT is abstract;
      function GetNetworkTIPAccess(
         This : access IDtcNetworkAccessConfig;
         pbNetworkTIPAccess : access BOOL
      ) return HRESULT is abstract;
      function SetNetworkTIPAccess(
         This : access IDtcNetworkAccessConfig;
         bNetworkTIPAccess : BOOL
      ) return HRESULT is abstract;
      function GetXAAccess(
         This : access IDtcNetworkAccessConfig;
         pbXAAccess : access BOOL
      ) return HRESULT is abstract;
      function SetXAAccess(
         This : access IDtcNetworkAccessConfig;
         bXAAccess : BOOL
      ) return HRESULT is abstract;
      function RestartDtcService(This : access IDtcNetworkAccessConfig) return HRESULT is abstract;
   type IDtcNetworkAccessConfig_Ptr is access all IDtcNetworkAccessConfig'Class;
   type AUTHENTICATION_LEVEL is (
      NO_AUTHENTICATION_REQUIRED,
      INCOMING_AUTHENTICATION_REQUIRED,
      MUTUAL_AUTHENTICATION_REQUIRED
   );
   for AUTHENTICATION_LEVEL use (
      NO_AUTHENTICATION_REQUIRED => 0,
      INCOMING_AUTHENTICATION_REQUIRED => 1,
      MUTUAL_AUTHENTICATION_REQUIRED => 2
   );
   for AUTHENTICATION_LEVEL'Size use 32;
   IID_IDtcNetworkAccessConfig2 : aliased constant IID;
   pragma import (C,IID_IDtcNetworkAccessConfig2,"IID_IDtcNetworkAccessConfig2");
   type IDtcNetworkAccessConfig2 is limited interface and IDtcNetworkAccessConfig;
      function GetNetworkInboundAccess(
         This : access IDtcNetworkAccessConfig2;
         pbInbound : access BOOL
      ) return HRESULT is abstract;
      function GetNetworkOutboundAccess(
         This : access IDtcNetworkAccessConfig2;
         pbOutbound : access BOOL
      ) return HRESULT is abstract;
      function SetNetworkInboundAccess(
         This : access IDtcNetworkAccessConfig2;
         bInbound : BOOL
      ) return HRESULT is abstract;
      function SetNetworkOutboundAccess(
         This : access IDtcNetworkAccessConfig2;
         bOutbound : BOOL
      ) return HRESULT is abstract;
      function GetAuthenticationLevel(
         This : access IDtcNetworkAccessConfig2;
         pAuthLevel : access AUTHENTICATION_LEVEL
      ) return HRESULT is abstract;
      function SetAuthenticationLevel(
         This : access IDtcNetworkAccessConfig2;
         AuthLevel : AUTHENTICATION_LEVEL
      ) return HRESULT is abstract;
   type IDtcNetworkAccessConfig2_Ptr is access all IDtcNetworkAccessConfig2'Class;
   IID_IDtcNetworkAccessConfig3 : aliased constant IID;
   pragma import (C,IID_IDtcNetworkAccessConfig3,"IID_IDtcNetworkAccessConfig3");
   type IDtcNetworkAccessConfig3 is limited interface and IDtcNetworkAccessConfig2;
      function GetLUAccess(
         This : access IDtcNetworkAccessConfig3;
         pbLUAccess : access BOOL
      ) return HRESULT is abstract;
      function SetLUAccess(
         This : access IDtcNetworkAccessConfig3;
         bLUAccess : BOOL
      ) return HRESULT is abstract;
   type IDtcNetworkAccessConfig3_Ptr is access all IDtcNetworkAccessConfig3'Class;
   function ITransactionImportWhereabouts_GetWhereabouts_Proxy(
      This : access ITransactionImportWhereabouts'Class;
      cbWhereabouts : ULONG;
      rgbWhereabouts : access byte;
      pcbUsed : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ITransactionImportWhereabouts_GetWhereabouts_Proxy,"ITransactionImportWhereabouts_GetWhereabouts_Proxy");
   function ITransactionImportWhereabouts_GetWhereabouts_Stub(
      This : access ITransactionImportWhereabouts'Class;
      pcbUsed : access ULONG;
      cbWhereabouts : ULONG;
      rgbWhereabouts : access byte
   ) return HRESULT;
   pragma import (Cpp,ITransactionImportWhereabouts_GetWhereabouts_Stub,"ITransactionImportWhereabouts_GetWhereabouts_Stub");
   function ITransactionExport_GetTransactionCookie_Proxy(
      This : access ITransactionExport'Class;
      punkTransaction : access IUnknown'Class;
      cbTransactionCookie : ULONG;
      rgbTransactionCookie : access byte;
      pcbUsed : access ULONG
   ) return HRESULT;
   pragma import (Cpp,ITransactionExport_GetTransactionCookie_Proxy,"ITransactionExport_GetTransactionCookie_Proxy");
   function ITransactionExport_GetTransactionCookie_Stub(
      This : access ITransactionExport'Class;
      punkTransaction : access IUnknown'Class;
      pcbUsed : access ULONG;
      cbTransactionCookie : ULONG;
      rgbTransactionCookie : access byte
   ) return HRESULT;
   pragma import (Cpp,ITransactionExport_GetTransactionCookie_Stub,"ITransactionExport_GetTransactionCookie_Stub");
   -- #include <txdtc.h>
   type XACT_DTC_CONSTANTS is (
      XACT_E_CONNECTION_REQUEST_DENIED,
      XACT_E_TOOMANY_ENLISTMENTS,
      XACT_E_DUPLICATE_GUID,
      XACT_E_NOTSINGLEPHASE,
      XACT_E_RECOVERYALREADYDONE,
      XACT_E_PROTOCOL,
      XACT_E_RM_FAILURE,
      XACT_E_RECOVERY_FAILED,
      XACT_E_LU_NOT_FOUND,
      XACT_E_DUPLICATE_LU,
      XACT_E_LU_NOT_CONNECTED,
      XACT_E_DUPLICATE_TRANSID,
      XACT_E_LU_BUSY,
      XACT_E_LU_NO_RECOVERY_PROCESS,
      XACT_E_LU_DOWN,
      XACT_E_LU_RECOVERING,
      XACT_E_LU_RECOVERY_MISMATCH,
      XACT_E_RM_UNAVAILABLE,
      XACT_E_LRMRECOVERYALREADYDONE,
      XACT_E_NOLASTRESOURCEINTERFACE,
      dwUSER_MS_SQLSERVER,
      XACT_S_NONOTIFY,
      XACT_OK_NONOTIFY
   );
   for XACT_DTC_CONSTANTS use (
      XACT_E_CONNECTION_REQUEST_DENIED => -2147168000,
      XACT_E_TOOMANY_ENLISTMENTS => -2147167999,
      XACT_E_DUPLICATE_GUID => -2147167998,
      XACT_E_NOTSINGLEPHASE => -2147167997,
      XACT_E_RECOVERYALREADYDONE => -2147167996,
      XACT_E_PROTOCOL => -2147167995,
      XACT_E_RM_FAILURE => -2147167994,
      XACT_E_RECOVERY_FAILED => -2147167993,
      XACT_E_LU_NOT_FOUND => -2147167992,
      XACT_E_DUPLICATE_LU => -2147167991,
      XACT_E_LU_NOT_CONNECTED => -2147167990,
      XACT_E_DUPLICATE_TRANSID => -2147167989,
      XACT_E_LU_BUSY => -2147167988,
      XACT_E_LU_NO_RECOVERY_PROCESS => -2147167987,
      XACT_E_LU_DOWN => -2147167986,
      XACT_E_LU_RECOVERING => -2147167985,
      XACT_E_LU_RECOVERY_MISMATCH => -2147167984,
      XACT_E_RM_UNAVAILABLE => -2147167983,
      XACT_E_LRMRECOVERYALREADYDONE => -2147167982,
      XACT_E_NOLASTRESOURCEINTERFACE => -2147167981,
      dwUSER_MS_SQLSERVER => 65535,
      XACT_S_NONOTIFY => 315648,
      XACT_OK_NONOTIFY => 315649
   );
   for XACT_DTC_CONSTANTS'Size use 32;
   type xid_t_data_Array is array(1..128) of Character; -- Auto Generated Dependancy
   type xid_t is record
      formatID : Interfaces.C.Long;
      gtrid_length : Interfaces.C.Long;
      bqual_length : Interfaces.C.Long;
      data : xid_t_data_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,xid_t);
   for xid_t use record
      formatID at 0 range 0..31;
      gtrid_length at 0 range 32..63;
      bqual_length at 0 range 64..95;
      data at 0 range 96..1119;
   end record;
   for xid_t'Size use 1120;
   for xid_t'Alignment use 4;
   subtype XID is xid_t;
   type xa_switch_t_name_Array is array(1..32) of Character; -- Auto Generated Dependancy
   type xa_switch_t is record
      name : xa_switch_t_name_Array;
      flags : Interfaces.C.Long;
      version : Interfaces.C.Long;
      xa_open_entry : access System.Address;
      xa_close_entry : access System.Address;
      xa_start_entry : access System.Address;
      xa_end_entry : access System.Address;
      xa_rollback_entry : access System.Address;
      xa_prepare_entry : access System.Address;
      xa_commit_entry : access System.Address;
      xa_recover_entry : access System.Address;
      xa_forget_entry : access System.Address;
      xa_complete_entry : access System.Address;
   end record;
   pragma Convention (C_Pass_By_Copy,xa_switch_t);
   for xa_switch_t use record
      name at 0 range 0..255;
      flags at 0 range 256..287;
      version at 0 range 288..319;
      xa_open_entry at 0 range 320..383;
      xa_close_entry at 0 range 384..447;
      xa_start_entry at 0 range 448..511;
      xa_end_entry at 0 range 512..575;
      xa_rollback_entry at 0 range 576..639;
      xa_prepare_entry at 0 range 640..703;
      xa_commit_entry at 0 range 704..767;
      xa_recover_entry at 0 range 768..831;
      xa_forget_entry at 0 range 832..895;
      xa_complete_entry at 0 range 896..959;
   end record;
   for xa_switch_t'Size use 960;
   for xa_switch_t'Alignment use 8;
   IID_IXATransLookup : aliased constant IID;
   pragma import (C,IID_IXATransLookup,"IID_IXATransLookup");
   type IXATransLookup is limited interface and IUnknown;
      function Lookup(
         This : access IXATransLookup;
         ppTransaction : access ITransaction_Ptr
      ) return HRESULT is abstract;
   type IXATransLookup_Ptr is access all IXATransLookup'Class;
   IID_IXATransLookup2 : aliased constant IID;
   pragma import (C,IID_IXATransLookup2,"IID_IXATransLookup2");
   type IXATransLookup2 is limited interface and IUnknown;
      function Lookup(
         This : access IXATransLookup2;
         pXID : access XID;
         ppTransaction : access ITransaction_Ptr
      ) return HRESULT is abstract;
   type IXATransLookup2_Ptr is access all IXATransLookup2'Class;
   IID_IResourceManagerSink : aliased constant IID;
   pragma import (C,IID_IResourceManagerSink,"IID_IResourceManagerSink");
   type IResourceManagerSink is limited interface and IUnknown;
      function TMDown(This : access IResourceManagerSink) return HRESULT is abstract;
   type IResourceManagerSink_Ptr is access all IResourceManagerSink'Class;
   IID_IResourceManager : aliased constant IID;
   pragma import (C,IID_IResourceManager,"IID_IResourceManager");
   type IResourceManager is limited interface and IUnknown;
      function Enlist(
         This : access IResourceManager;
         pTransaction : access ITransaction'Class;
         pRes : access ITransactionResourceAsync'Class;
         pUOW_x : access XACTUOW;
         pisoLevel : access LONG;
         ppEnlist : access ITransactionEnlistmentAsync_Ptr
      ) return HRESULT is abstract;
      function Reenlist(
         This : access IResourceManager;
         pPrepInfo : access byte;
         cbPrepInfo : ULONG;
         lTimeout : DWORD;
         pXactStat : access XACTSTAT
      ) return HRESULT is abstract;
      function ReenlistmentComplete(This : access IResourceManager) return HRESULT is abstract;
      function GetDistributedTransactionManager(
         This : access IResourceManager;
         iid_x : access constant IID;
         ppvObject : access LPVOID
      ) return HRESULT is abstract;
   type IResourceManager_Ptr is access all IResourceManager'Class;
   IID_ILastResourceManager : aliased constant IID;
   pragma import (C,IID_ILastResourceManager,"IID_ILastResourceManager");
   type ILastResourceManager is limited interface and IUnknown;
      function TransactionCommitted(
         This : access ILastResourceManager;
         pPrepInfo : access byte;
         cbPrepInfo : ULONG
      ) return HRESULT is abstract;
      function RecoveryDone(This : access ILastResourceManager) return HRESULT is abstract;
   type ILastResourceManager_Ptr is access all ILastResourceManager'Class;
   IID_IResourceManager2 : aliased constant IID;
   pragma import (C,IID_IResourceManager2,"IID_IResourceManager2");
   type IResourceManager2 is limited interface and IResourceManager;
      function Enlist2(
         This : access IResourceManager2;
         pTransaction : access ITransaction'Class;
         pResAsync : access ITransactionResourceAsync'Class;
         pUOW_x : access XACTUOW;
         pisoLevel : access LONG;
         pXid : access XID;
         ppEnlist : access ITransactionEnlistmentAsync_Ptr
      ) return HRESULT is abstract;
      function Reenlist2(
         This : access IResourceManager2;
         pXid : access XID;
         dwTimeout : DWORD;
         pXactStat : access XACTSTAT
      ) return HRESULT is abstract;
   type IResourceManager2_Ptr is access all IResourceManager2'Class;
   IID_IResourceManagerRejoinable : aliased constant IID;
   pragma import (C,IID_IResourceManagerRejoinable,"IID_IResourceManagerRejoinable");
   type IResourceManagerRejoinable is limited interface and IResourceManager2;
      function Rejoin(
         This : access IResourceManagerRejoinable;
         pPrepInfo : access byte;
         cbPrepInfo : ULONG;
         lTimeout : DWORD;
         pXactStat : access XACTSTAT
      ) return HRESULT is abstract;
   type IResourceManagerRejoinable_Ptr is access all IResourceManagerRejoinable'Class;
   IID_IXAConfig : aliased constant IID;
   pragma import (C,IID_IXAConfig,"IID_IXAConfig");
   type IXAConfig is limited interface and IUnknown;
      function Initialize(
         This : access IXAConfig;
         clsidHelperDll : GUID
      ) return HRESULT is abstract;
      function terminate_x(This : access IXAConfig) return HRESULT is abstract;
   type IXAConfig_Ptr is access all IXAConfig'Class;
   IID_IRMHelper : aliased constant IID;
   pragma import (C,IID_IRMHelper,"IID_IRMHelper");
   type IRMHelper is limited interface and IUnknown;
      function RMCount(
         This : access IRMHelper;
         dwcTotalNumberOfRMs : DWORD
      ) return HRESULT is abstract;
      function RMInfo(
         This : access IRMHelper;
         pXa_Switch : access xa_switch_t;
         fCDeclCallingConv : BOOL;
         pszOpenString : access Character;
         pszCloseString : access Character;
         guidRMRecovery : GUID
      ) return HRESULT is abstract;
   type IRMHelper_Ptr is access all IRMHelper'Class;
   IID_IXAObtainRMInfo : aliased constant IID;
   pragma import (C,IID_IXAObtainRMInfo,"IID_IXAObtainRMInfo");
   type IXAObtainRMInfo is limited interface and IUnknown;
      function ObtainRMInfo(
         This : access IXAObtainRMInfo;
         pIRMHelper : access IRMHelper'Class
      ) return HRESULT is abstract;
   type IXAObtainRMInfo_Ptr is access all IXAObtainRMInfo'Class;
   IID_IResourceManagerFactory : aliased constant IID;
   pragma import (C,IID_IResourceManagerFactory,"IID_IResourceManagerFactory");
   type IResourceManagerFactory is limited interface and IUnknown;
      function Create(
         This : access IResourceManagerFactory;
         pguidRM : access GUID;
         pszRMName : access CHAR;
         pIResMgrSink : access IResourceManagerSink'Class;
         ppResMgr : access IResourceManager_Ptr
      ) return HRESULT is abstract;
   type IResourceManagerFactory_Ptr is access all IResourceManagerFactory'Class;
   IID_IResourceManagerFactory2 : aliased constant IID;
   pragma import (C,IID_IResourceManagerFactory2,"IID_IResourceManagerFactory2");
   type IResourceManagerFactory2 is limited interface and IResourceManagerFactory;
      function CreateEx(
         This : access IResourceManagerFactory2;
         pguidRM : access GUID;
         pszRMName : access CHAR;
         pIResMgrSink : access IResourceManagerSink'Class;
         riidRequested : access constant IID;
         ppvResMgr : access LPVOID
      ) return HRESULT is abstract;
   type IResourceManagerFactory2_Ptr is access all IResourceManagerFactory2'Class;
   IID_IPrepareInfo : aliased constant IID;
   pragma import (C,IID_IPrepareInfo,"IID_IPrepareInfo");
   type IPrepareInfo is limited interface and IUnknown;
      function GetPrepareInfoSize(
         This : access IPrepareInfo;
         pcbPrepInfo : access ULONG
      ) return HRESULT is abstract;
      function GetPrepareInfo(
         This : access IPrepareInfo;
         pPrepInfo : access byte
      ) return HRESULT is abstract;
   type IPrepareInfo_Ptr is access all IPrepareInfo'Class;
   IID_IPrepareInfo2 : aliased constant IID;
   pragma import (C,IID_IPrepareInfo2,"IID_IPrepareInfo2");
   type IPrepareInfo2 is limited interface and IUnknown;
      function GetPrepareInfoSize(
         This : access IPrepareInfo2;
         pcbPrepInfo : access ULONG
      ) return HRESULT is abstract;
      function GetPrepareInfo(
         This : access IPrepareInfo2;
         cbPrepareInfo : ULONG;
         pPrepInfo : access byte
      ) return HRESULT is abstract;
   type IPrepareInfo2_Ptr is access all IPrepareInfo2'Class;
   IID_IGetDispenser : aliased constant IID;
   pragma import (C,IID_IGetDispenser,"IID_IGetDispenser");
   type IGetDispenser is limited interface and IUnknown;
      function GetDispenser(
         This : access IGetDispenser;
         iid_x : access constant IID;
         ppvObject : access LPVOID
      ) return HRESULT is abstract;
   type IGetDispenser_Ptr is access all IGetDispenser'Class;
   IID_ITransactionVoterBallotAsync2 : aliased constant IID;
   pragma import (C,IID_ITransactionVoterBallotAsync2,"IID_ITransactionVoterBallotAsync2");
   type ITransactionVoterBallotAsync2 is limited interface and IUnknown;
      function VoteRequestDone(
         This : access ITransactionVoterBallotAsync2;
         hr : HRESULT;
         pboidReason : access BOID
      ) return HRESULT is abstract;
   type ITransactionVoterBallotAsync2_Ptr is access all ITransactionVoterBallotAsync2'Class;
   IID_ITransactionVoterNotifyAsync2 : aliased constant IID;
   pragma import (C,IID_ITransactionVoterNotifyAsync2,"IID_ITransactionVoterNotifyAsync2");
   type ITransactionVoterNotifyAsync2 is limited interface and ITransactionOutcomeEvents;
      function VoteRequest(This : access ITransactionVoterNotifyAsync2) return HRESULT is abstract;
   type ITransactionVoterNotifyAsync2_Ptr is access all ITransactionVoterNotifyAsync2'Class;
   IID_ITransactionVoterFactory2 : aliased constant IID;
   pragma import (C,IID_ITransactionVoterFactory2,"IID_ITransactionVoterFactory2");
   type ITransactionVoterFactory2 is limited interface and IUnknown;
      function Create(
         This : access ITransactionVoterFactory2;
         pTransaction : access ITransaction'Class;
         pVoterNotify : access ITransactionVoterNotifyAsync2'Class;
         ppVoterBallot : access ITransactionVoterBallotAsync2_Ptr
      ) return HRESULT is abstract;
   type ITransactionVoterFactory2_Ptr is access all ITransactionVoterFactory2'Class;
   IID_ITransactionPhase0EnlistmentAsync : aliased constant IID;
   pragma import (C,IID_ITransactionPhase0EnlistmentAsync,"IID_ITransactionPhase0EnlistmentAsync");
   type ITransactionPhase0EnlistmentAsync is limited interface and IUnknown;
      function Enable(This : access ITransactionPhase0EnlistmentAsync) return HRESULT is abstract;
      function WaitForEnlistment(This : access ITransactionPhase0EnlistmentAsync) return HRESULT is abstract;
      function Phase0Done(This : access ITransactionPhase0EnlistmentAsync) return HRESULT is abstract;
      function Unenlist(This : access ITransactionPhase0EnlistmentAsync) return HRESULT is abstract;
      function GetTransaction(
         This : access ITransactionPhase0EnlistmentAsync;
         ppITransaction : access ITransaction_Ptr
      ) return HRESULT is abstract;
   type ITransactionPhase0EnlistmentAsync_Ptr is access all ITransactionPhase0EnlistmentAsync'Class;
   IID_ITransactionPhase0NotifyAsync : aliased constant IID;
   pragma import (C,IID_ITransactionPhase0NotifyAsync,"IID_ITransactionPhase0NotifyAsync");
   type ITransactionPhase0NotifyAsync is limited interface and IUnknown;
      function Phase0Request(
         This : access ITransactionPhase0NotifyAsync;
         fAbortingHint : BOOL
      ) return HRESULT is abstract;
      function EnlistCompleted(
         This : access ITransactionPhase0NotifyAsync;
         status : HRESULT
      ) return HRESULT is abstract;
   type ITransactionPhase0NotifyAsync_Ptr is access all ITransactionPhase0NotifyAsync'Class;
   IID_ITransactionPhase0Factory : aliased constant IID;
   pragma import (C,IID_ITransactionPhase0Factory,"IID_ITransactionPhase0Factory");
   type ITransactionPhase0Factory is limited interface and IUnknown;
      function Create(
         This : access ITransactionPhase0Factory;
         pPhase0Notify : access ITransactionPhase0NotifyAsync'Class;
         ppPhase0Enlistment : access ITransactionPhase0EnlistmentAsync_Ptr
      ) return HRESULT is abstract;
   type ITransactionPhase0Factory_Ptr is access all ITransactionPhase0Factory'Class;
   IID_ITransactionTransmitter : aliased constant IID;
   pragma import (C,IID_ITransactionTransmitter,"IID_ITransactionTransmitter");
   type ITransactionTransmitter is limited interface and IUnknown;
      function Set(
         This : access ITransactionTransmitter;
         pTransaction : access ITransaction'Class
      ) return HRESULT is abstract;
      function GetPropagationTokenSize(
         This : access ITransactionTransmitter;
         pcbToken : access ULONG
      ) return HRESULT is abstract;
      function MarshalPropagationToken(
         This : access ITransactionTransmitter;
         cbToken : ULONG;
         rgbToken : access byte;
         pcbUsed : access ULONG
      ) return HRESULT is abstract;
      function UnmarshalReturnToken(
         This : access ITransactionTransmitter;
         cbReturnToken : ULONG;
         rgbReturnToken : access byte
      ) return HRESULT is abstract;
      function Reset(This : access ITransactionTransmitter) return HRESULT is abstract;
   type ITransactionTransmitter_Ptr is access all ITransactionTransmitter'Class;
   IID_ITransactionTransmitterFactory : aliased constant IID;
   pragma import (C,IID_ITransactionTransmitterFactory,"IID_ITransactionTransmitterFactory");
   type ITransactionTransmitterFactory is limited interface and IUnknown;
      function Create(
         This : access ITransactionTransmitterFactory;
         ppTransmitter : access ITransactionTransmitter_Ptr
      ) return HRESULT is abstract;
   type ITransactionTransmitterFactory_Ptr is access all ITransactionTransmitterFactory'Class;
   IID_ITransactionReceiver : aliased constant IID;
   pragma import (C,IID_ITransactionReceiver,"IID_ITransactionReceiver");
   type ITransactionReceiver is limited interface and IUnknown;
      function UnmarshalPropagationToken(
         This : access ITransactionReceiver;
         cbToken : ULONG;
         rgbToken : access byte;
         ppTransaction : access ITransaction_Ptr
      ) return HRESULT is abstract;
      function GetReturnTokenSize(
         This : access ITransactionReceiver;
         pcbReturnToken : access ULONG
      ) return HRESULT is abstract;
      function MarshalReturnToken(
         This : access ITransactionReceiver;
         cbReturnToken : ULONG;
         rgbReturnToken : access byte;
         pcbUsed : access ULONG
      ) return HRESULT is abstract;
      function Reset(This : access ITransactionReceiver) return HRESULT is abstract;
   type ITransactionReceiver_Ptr is access all ITransactionReceiver'Class;
   IID_ITransactionReceiverFactory : aliased constant IID;
   pragma import (C,IID_ITransactionReceiverFactory,"IID_ITransactionReceiverFactory");
   type ITransactionReceiverFactory is limited interface and IUnknown;
      function Create(
         This : access ITransactionReceiverFactory;
         ppReceiver : access ITransactionReceiver_Ptr
      ) return HRESULT is abstract;
   type ITransactionReceiverFactory_Ptr is access all ITransactionReceiverFactory'Class;
   type ProxyConfigParams_x is record
      wcThreadsMax : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,ProxyConfigParams_x);
   for ProxyConfigParams_x use record
      wcThreadsMax at 0 range 0..15;
   end record;
   for ProxyConfigParams_x'Size use 16;
   for ProxyConfigParams_x'Alignment use 2;
   subtype PROXY_CONFIG_PARAMS is ProxyConfigParams_x;
   IID_IDtcLuConfigure : aliased constant IID;
   pragma import (C,IID_IDtcLuConfigure,"IID_IDtcLuConfigure");
   type IDtcLuConfigure is limited interface and IUnknown;
      function Add(
         This : access IDtcLuConfigure;
         pucLuPair : access byte;
         cbLuPair : DWORD
      ) return HRESULT is abstract;
      function Delete_x(
         This : access IDtcLuConfigure;
         pucLuPair : access byte;
         cbLuPair : DWORD
      ) return HRESULT is abstract;
   type IDtcLuConfigure_Ptr is access all IDtcLuConfigure'Class;
   IID_IDtcLuRecovery : aliased constant IID;
   pragma import (C,IID_IDtcLuRecovery,"IID_IDtcLuRecovery");
   IID_IDtcLuRecoveryFactory : aliased constant IID;
   pragma import (C,IID_IDtcLuRecoveryFactory,"IID_IDtcLuRecoveryFactory");
   type IDtcLuRecovery_Ptr is access all IDtcLuRecovery; -- Auto Generated Dependancy
   type IDtcLuRecoveryFactory is limited interface and IUnknown;
      function Create(
         This : access IDtcLuRecoveryFactory;
         pucLuPair : access byte;
         cbLuPair : DWORD;
         ppRecovery : access IDtcLuRecovery_Ptr
      ) return HRESULT is abstract;
   type IDtcLuRecoveryFactory_Ptr is access all IDtcLuRecoveryFactory'Class;
   type DtcLu_LocalRecovery_Work_x is (
      DTCINITIATEDRECOVERYWORK_CHECKLUSTATUS,
      DTCINITIATEDRECOVERYWORK_TRANS,
      DTCINITIATEDRECOVERYWORK_TMDOWN
   );
   for DtcLu_LocalRecovery_Work_x use (
      DTCINITIATEDRECOVERYWORK_CHECKLUSTATUS => 1,
      DTCINITIATEDRECOVERYWORK_TRANS => 2,
      DTCINITIATEDRECOVERYWORK_TMDOWN => 3
   );
   for DtcLu_LocalRecovery_Work_x'Size use 32;
   subtype DTCINITIATEDRECOVERYWORK is DtcLu_LocalRecovery_Work_x;
   type DtcLu_Xln_x is (
      DTCLUXLN_COLD,
      DTCLUXLN_WARM
   );
   for DtcLu_Xln_x use (
      DTCLUXLN_COLD => 1,
      DTCLUXLN_WARM => 2
   );
   for DtcLu_Xln_x'Size use 32;
   subtype DTCLUXLN is DtcLu_Xln_x;
   type DtcLu_Xln_Confirmation_x is (
      DTCLUXLNCONFIRMATION_CONFIRM,
      DTCLUXLNCONFIRMATION_LOGNAMEMISMATCH,
      DTCLUXLNCONFIRMATION_COLDWARMMISMATCH,
      DTCLUXLNCONFIRMATION_OBSOLETE
   );
   for DtcLu_Xln_Confirmation_x use (
      DTCLUXLNCONFIRMATION_CONFIRM => 1,
      DTCLUXLNCONFIRMATION_LOGNAMEMISMATCH => 2,
      DTCLUXLNCONFIRMATION_COLDWARMMISMATCH => 3,
      DTCLUXLNCONFIRMATION_OBSOLETE => 4
   );
   for DtcLu_Xln_Confirmation_x'Size use 32;
   subtype DTCLUXLNCONFIRMATION is DtcLu_Xln_Confirmation_x;
   type DtcLu_Xln_Response_x is (
      DTCLUXLNRESPONSE_OK_SENDOURXLNBACK,
      DTCLUXLNRESPONSE_OK_SENDCONFIRMATION,
      DTCLUXLNRESPONSE_LOGNAMEMISMATCH,
      DTCLUXLNRESPONSE_COLDWARMMISMATCH
   );
   for DtcLu_Xln_Response_x use (
      DTCLUXLNRESPONSE_OK_SENDOURXLNBACK => 1,
      DTCLUXLNRESPONSE_OK_SENDCONFIRMATION => 2,
      DTCLUXLNRESPONSE_LOGNAMEMISMATCH => 3,
      DTCLUXLNRESPONSE_COLDWARMMISMATCH => 4
   );
   for DtcLu_Xln_Response_x'Size use 32;
   subtype DTCLUXLNRESPONSE is DtcLu_Xln_Response_x;
   type DtcLu_Xln_Error_x is (
      DTCLUXLNERROR_PROTOCOL,
      DTCLUXLNERROR_LOGNAMEMISMATCH,
      DTCLUXLNERROR_COLDWARMMISMATCH
   );
   for DtcLu_Xln_Error_x use (
      DTCLUXLNERROR_PROTOCOL => 1,
      DTCLUXLNERROR_LOGNAMEMISMATCH => 2,
      DTCLUXLNERROR_COLDWARMMISMATCH => 3
   );
   for DtcLu_Xln_Error_x'Size use 32;
   subtype DTCLUXLNERROR is DtcLu_Xln_Error_x;
   type DtcLu_CompareState_x is (
      DTCLUCOMPARESTATE_COMMITTED,
      DTCLUCOMPARESTATE_HEURISTICCOMMITTED,
      DTCLUCOMPARESTATE_HEURISTICMIXED,
      DTCLUCOMPARESTATE_HEURISTICRESET,
      DTCLUCOMPARESTATE_INDOUBT,
      DTCLUCOMPARESTATE_RESET
   );
   for DtcLu_CompareState_x use (
      DTCLUCOMPARESTATE_COMMITTED => 1,
      DTCLUCOMPARESTATE_HEURISTICCOMMITTED => 2,
      DTCLUCOMPARESTATE_HEURISTICMIXED => 3,
      DTCLUCOMPARESTATE_HEURISTICRESET => 4,
      DTCLUCOMPARESTATE_INDOUBT => 5,
      DTCLUCOMPARESTATE_RESET => 6
   );
   for DtcLu_CompareState_x'Size use 32;
   subtype DTCLUCOMPARESTATE is DtcLu_CompareState_x;
   type DtcLu_CompareStates_Confirmation_x is (
      DTCLUCOMPARESTATESCONFIRMATION_CONFIRM,
      DTCLUCOMPARESTATESCONFIRMATION_PROTOCOL
   );
   for DtcLu_CompareStates_Confirmation_x use (
      DTCLUCOMPARESTATESCONFIRMATION_CONFIRM => 1,
      DTCLUCOMPARESTATESCONFIRMATION_PROTOCOL => 2
   );
   for DtcLu_CompareStates_Confirmation_x'Size use 32;
   subtype DTCLUCOMPARESTATESCONFIRMATION is DtcLu_CompareStates_Confirmation_x;
   type DtcLu_CompareStates_Error_x is (
      DTCLUCOMPARESTATESERROR_PROTOCOL
   );
   for DtcLu_CompareStates_Error_x use (
      DTCLUCOMPARESTATESERROR_PROTOCOL => 1
   );
   for DtcLu_CompareStates_Error_x'Size use 32;
   subtype DTCLUCOMPARESTATESERROR is DtcLu_CompareStates_Error_x;
   type DtcLu_CompareStates_Response_x is (
      DTCLUCOMPARESTATESRESPONSE_OK,
      DTCLUCOMPARESTATESRESPONSE_PROTOCOL
   );
   for DtcLu_CompareStates_Response_x use (
      DTCLUCOMPARESTATESRESPONSE_OK => 1,
      DTCLUCOMPARESTATESRESPONSE_PROTOCOL => 2
   );
   for DtcLu_CompareStates_Response_x'Size use 32;
   subtype DTCLUCOMPARESTATESRESPONSE is DtcLu_CompareStates_Response_x;
   IID_IDtcLuRecoveryInitiatedByDtcTransWork : aliased constant IID;
   pragma import (C,IID_IDtcLuRecoveryInitiatedByDtcTransWork,"IID_IDtcLuRecoveryInitiatedByDtcTransWork");
   type IDtcLuRecoveryInitiatedByDtcTransWork is limited interface and IUnknown;
      function GetLogNameSizes(
         This : access IDtcLuRecoveryInitiatedByDtcTransWork;
         pcbOurLogName : access DWORD;
         pcbRemoteLogName : access DWORD
      ) return HRESULT is abstract;
      function GetOurXln(
         This : access IDtcLuRecoveryInitiatedByDtcTransWork;
         pXln : access DTCLUXLN;
         pOurLogName : access Interfaces.C.unsigned_char;
         pRemoteLogName : access Interfaces.C.unsigned_char;
         pdwProtocol : access DWORD
      ) return HRESULT is abstract;
      function HandleConfirmationFromOurXln(
         This : access IDtcLuRecoveryInitiatedByDtcTransWork;
         Confirmation : DTCLUXLNCONFIRMATION
      ) return HRESULT is abstract;
      function HandleTheirXlnResponse(
         This : access IDtcLuRecoveryInitiatedByDtcTransWork;
         Xln : DTCLUXLN;
         pRemoteLogName : access Interfaces.C.unsigned_char;
         cbRemoteLogName : DWORD;
         dwProtocol : DWORD;
         pConfirmation : access DTCLUXLNCONFIRMATION
      ) return HRESULT is abstract;
      function HandleErrorFromOurXln(
         This : access IDtcLuRecoveryInitiatedByDtcTransWork;
         Error_x : DTCLUXLNERROR
      ) return HRESULT is abstract;
      function CheckForCompareStates(
         This : access IDtcLuRecoveryInitiatedByDtcTransWork;
         fCompareStates : access BOOL
      ) return HRESULT is abstract;
      function GetOurTransIdSize(
         This : access IDtcLuRecoveryInitiatedByDtcTransWork;
         pcbOurTransId : access DWORD
      ) return HRESULT is abstract;
      function GetOurCompareStates(
         This : access IDtcLuRecoveryInitiatedByDtcTransWork;
         pOurTransId : access Interfaces.C.unsigned_char;
         pCompareState : access DTCLUCOMPARESTATE
      ) return HRESULT is abstract;
      function HandleTheirCompareStatesResponse(
         This : access IDtcLuRecoveryInitiatedByDtcTransWork;
         CompareState : DTCLUCOMPARESTATE;
         pConfirmation : access DTCLUCOMPARESTATESCONFIRMATION
      ) return HRESULT is abstract;
      function HandleErrorFromOurCompareStates(
         This : access IDtcLuRecoveryInitiatedByDtcTransWork;
         Error_x : DTCLUCOMPARESTATESERROR
      ) return HRESULT is abstract;
      function ConversationLost(This : access IDtcLuRecoveryInitiatedByDtcTransWork) return HRESULT is abstract;
      function GetRecoverySeqNum(
         This : access IDtcLuRecoveryInitiatedByDtcTransWork;
         plRecoverySeqNum : access LONG
      ) return HRESULT is abstract;
      function ObsoleteRecoverySeqNum(
         This : access IDtcLuRecoveryInitiatedByDtcTransWork;
         lNewRecoverySeqNum : LONG
      ) return HRESULT is abstract;
   type IDtcLuRecoveryInitiatedByDtcTransWork_Ptr is access all IDtcLuRecoveryInitiatedByDtcTransWork'Class;
   IID_IDtcLuRecoveryInitiatedByDtcStatusWork : aliased constant IID;
   pragma import (C,IID_IDtcLuRecoveryInitiatedByDtcStatusWork,"IID_IDtcLuRecoveryInitiatedByDtcStatusWork");
   type IDtcLuRecoveryInitiatedByDtcStatusWork is limited interface and IUnknown;
      function HandleCheckLuStatus(
         This : access IDtcLuRecoveryInitiatedByDtcStatusWork;
         lRecoverySeqNum : LONG
      ) return HRESULT is abstract;
   type IDtcLuRecoveryInitiatedByDtcStatusWork_Ptr is access all IDtcLuRecoveryInitiatedByDtcStatusWork'Class;
   IID_IDtcLuRecoveryInitiatedByDtc : aliased constant IID;
   pragma import (C,IID_IDtcLuRecoveryInitiatedByDtc,"IID_IDtcLuRecoveryInitiatedByDtc");
   type IDtcLuRecoveryInitiatedByDtc is limited interface and IUnknown;
      function GetWork(
         This : access IDtcLuRecoveryInitiatedByDtc;
         pWork : access DTCINITIATEDRECOVERYWORK;
         ppv : access LPVOID
      ) return HRESULT is abstract;
   type IDtcLuRecoveryInitiatedByDtc_Ptr is access all IDtcLuRecoveryInitiatedByDtc'Class;
   IID_IDtcLuRecoveryInitiatedByLuWork : aliased constant IID;
   pragma import (C,IID_IDtcLuRecoveryInitiatedByLuWork,"IID_IDtcLuRecoveryInitiatedByLuWork");
   type IDtcLuRecoveryInitiatedByLuWork is limited interface and IUnknown;
      function HandleTheirXln(
         This : access IDtcLuRecoveryInitiatedByLuWork;
         lRecoverySeqNum : LONG;
         Xln : DTCLUXLN;
         pRemoteLogName : access Interfaces.C.unsigned_char;
         cbRemoteLogName : DWORD;
         pOurLogName : access Interfaces.C.unsigned_char;
         cbOurLogName : DWORD;
         dwProtocol : DWORD;
         pResponse : access DTCLUXLNRESPONSE
      ) return HRESULT is abstract;
      function GetOurLogNameSize(
         This : access IDtcLuRecoveryInitiatedByLuWork;
         pcbOurLogName : access DWORD
      ) return HRESULT is abstract;
      function GetOurXln(
         This : access IDtcLuRecoveryInitiatedByLuWork;
         pXln : access DTCLUXLN;
         pOurLogName : access Interfaces.C.unsigned_char;
         pdwProtocol : access DWORD
      ) return HRESULT is abstract;
      function HandleConfirmationOfOurXln(
         This : access IDtcLuRecoveryInitiatedByLuWork;
         Confirmation : DTCLUXLNCONFIRMATION
      ) return HRESULT is abstract;
      function HandleTheirCompareStates(
         This : access IDtcLuRecoveryInitiatedByLuWork;
         pRemoteTransId : access Interfaces.C.unsigned_char;
         cbRemoteTransId : DWORD;
         CompareState : DTCLUCOMPARESTATE;
         pResponse : access DTCLUCOMPARESTATESRESPONSE;
         pCompareState : access DTCLUCOMPARESTATE
      ) return HRESULT is abstract;
      function HandleConfirmationOfOurCompareStates(
         This : access IDtcLuRecoveryInitiatedByLuWork;
         Confirmation : DTCLUCOMPARESTATESCONFIRMATION
      ) return HRESULT is abstract;
      function HandleErrorFromOurCompareStates(
         This : access IDtcLuRecoveryInitiatedByLuWork;
         Error_x : DTCLUCOMPARESTATESERROR
      ) return HRESULT is abstract;
      function ConversationLost(This : access IDtcLuRecoveryInitiatedByLuWork) return HRESULT is abstract;
   type IDtcLuRecoveryInitiatedByLuWork_Ptr is access all IDtcLuRecoveryInitiatedByLuWork'Class;
   IID_IDtcLuRecoveryInitiatedByLu : aliased constant IID;
   pragma import (C,IID_IDtcLuRecoveryInitiatedByLu,"IID_IDtcLuRecoveryInitiatedByLu");
   type IDtcLuRecoveryInitiatedByLu is limited interface and IUnknown;
      function GetObjectToHandleWorkFromLu(
         This : access IDtcLuRecoveryInitiatedByLu;
         ppWork : access IDtcLuRecoveryInitiatedByLuWork_Ptr
      ) return HRESULT is abstract;
   type IDtcLuRecoveryInitiatedByLu_Ptr is access all IDtcLuRecoveryInitiatedByLu'Class;
   IID_IDtcLuRmEnlistment : aliased constant IID;
   pragma import (C,IID_IDtcLuRmEnlistment,"IID_IDtcLuRmEnlistment");
   type IDtcLuRmEnlistment is limited interface and IUnknown;
      function Unplug(
         This : access IDtcLuRmEnlistment;
         fConversationLost : BOOL
      ) return HRESULT is abstract;
      function BackedOut(This : access IDtcLuRmEnlistment) return HRESULT is abstract;
      function BackOut(This : access IDtcLuRmEnlistment) return HRESULT is abstract;
      function Committed(This : access IDtcLuRmEnlistment) return HRESULT is abstract;
      function Forget(This : access IDtcLuRmEnlistment) return HRESULT is abstract;
      function RequestCommit(This : access IDtcLuRmEnlistment) return HRESULT is abstract;
   type IDtcLuRmEnlistment_Ptr is access all IDtcLuRmEnlistment'Class;
   IID_IDtcLuRmEnlistmentSink : aliased constant IID;
   pragma import (C,IID_IDtcLuRmEnlistmentSink,"IID_IDtcLuRmEnlistmentSink");
   type IDtcLuRmEnlistmentSink is limited interface and IUnknown;
      function AckUnplug(This : access IDtcLuRmEnlistmentSink) return HRESULT is abstract;
      function TmDown(This : access IDtcLuRmEnlistmentSink) return HRESULT is abstract;
      function SessionLost(This : access IDtcLuRmEnlistmentSink) return HRESULT is abstract;
      function BackedOut(This : access IDtcLuRmEnlistmentSink) return HRESULT is abstract;
      function BackOut(This : access IDtcLuRmEnlistmentSink) return HRESULT is abstract;
      function Committed(This : access IDtcLuRmEnlistmentSink) return HRESULT is abstract;
      function Forget(This : access IDtcLuRmEnlistmentSink) return HRESULT is abstract;
      function Prepare(This : access IDtcLuRmEnlistmentSink) return HRESULT is abstract;
      function RequestCommit(This : access IDtcLuRmEnlistmentSink) return HRESULT is abstract;
   type IDtcLuRmEnlistmentSink_Ptr is access all IDtcLuRmEnlistmentSink'Class;
   IID_IDtcLuRmEnlistmentFactory : aliased constant IID;
   pragma import (C,IID_IDtcLuRmEnlistmentFactory,"IID_IDtcLuRmEnlistmentFactory");
   type IDtcLuRmEnlistmentFactory is limited interface and IUnknown;
      function Create(
         This : access IDtcLuRmEnlistmentFactory;
         pucLuPair : access Interfaces.C.unsigned_char;
         cbLuPair : DWORD;
         pITransaction : access ITransaction'Class;
         pTransId : access Interfaces.C.unsigned_char;
         cbTransId : DWORD;
         pRmEnlistmentSink : access IDtcLuRmEnlistmentSink'Class;
         ppRmEnlistment : access IDtcLuRmEnlistment_Ptr
      ) return HRESULT is abstract;
   type IDtcLuRmEnlistmentFactory_Ptr is access all IDtcLuRmEnlistmentFactory'Class;
   IID_IDtcLuSubordinateDtc : aliased constant IID;
   pragma import (C,IID_IDtcLuSubordinateDtc,"IID_IDtcLuSubordinateDtc");
   type IDtcLuSubordinateDtc is limited interface and IUnknown;
      function Unplug(
         This : access IDtcLuSubordinateDtc;
         fConversationLost : BOOL
      ) return HRESULT is abstract;
      function BackedOut(This : access IDtcLuSubordinateDtc) return HRESULT is abstract;
      function BackOut(This : access IDtcLuSubordinateDtc) return HRESULT is abstract;
      function Committed(This : access IDtcLuSubordinateDtc) return HRESULT is abstract;
      function Forget(This : access IDtcLuSubordinateDtc) return HRESULT is abstract;
      function Prepare(This : access IDtcLuSubordinateDtc) return HRESULT is abstract;
      function RequestCommit(This : access IDtcLuSubordinateDtc) return HRESULT is abstract;
   type IDtcLuSubordinateDtc_Ptr is access all IDtcLuSubordinateDtc'Class;
   IID_IDtcLuSubordinateDtcSink : aliased constant IID;
   pragma import (C,IID_IDtcLuSubordinateDtcSink,"IID_IDtcLuSubordinateDtcSink");
   type IDtcLuSubordinateDtcSink is limited interface and IUnknown;
      function AckUnplug(This : access IDtcLuSubordinateDtcSink) return HRESULT is abstract;
      function TmDown(This : access IDtcLuSubordinateDtcSink) return HRESULT is abstract;
      function SessionLost(This : access IDtcLuSubordinateDtcSink) return HRESULT is abstract;
      function BackedOut(This : access IDtcLuSubordinateDtcSink) return HRESULT is abstract;
      function BackOut(This : access IDtcLuSubordinateDtcSink) return HRESULT is abstract;
      function Committed(This : access IDtcLuSubordinateDtcSink) return HRESULT is abstract;
      function Forget(This : access IDtcLuSubordinateDtcSink) return HRESULT is abstract;
      function RequestCommit(This : access IDtcLuSubordinateDtcSink) return HRESULT is abstract;
   type IDtcLuSubordinateDtcSink_Ptr is access all IDtcLuSubordinateDtcSink'Class;
   IID_IDtcLuSubordinateDtcFactory : aliased constant IID;
   pragma import (C,IID_IDtcLuSubordinateDtcFactory,"IID_IDtcLuSubordinateDtcFactory");
   type IDtcLuSubordinateDtcFactory is limited interface and IUnknown;
      function Create(
         This : access IDtcLuSubordinateDtcFactory;
         pucLuPair : access Interfaces.C.unsigned_char;
         cbLuPair : DWORD;
         punkTransactionOuter : access IUnknown'Class;
         isoLevel_x : ISOLEVEL;
         isoFlags : ULONG;
         pOptions : access ITransactionOptions'Class;
         ppTransaction : access ITransaction_Ptr;
         pTransId : access Interfaces.C.unsigned_char;
         cbTransId : DWORD;
         pSubordinateDtcSink : access IDtcLuSubordinateDtcSink'Class;
         ppSubordinateDtc : access IDtcLuSubordinateDtc_Ptr
      ) return HRESULT is abstract;
   type IDtcLuSubordinateDtcFactory_Ptr is access all IDtcLuSubordinateDtcFactory'Class;
   -- #include <ComSvcs.h>
   IID_ISecurityIdentityColl : aliased constant IID;
   pragma import (C,IID_ISecurityIdentityColl,"IID_ISecurityIdentityColl");
   type ISecurityIdentityColl is limited interface and IDispatch;
      function get_Count(
         This : access ISecurityIdentityColl;
         plCount : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_Item(
         This : access ISecurityIdentityColl;
         name : BSTR;
         pItem : access VARIANT
      ) return HRESULT is abstract;
      function get_NewEnum(
         This : access ISecurityIdentityColl;
         ppEnum : access IUnknown_Ptr
      ) return HRESULT is abstract;
   type ISecurityIdentityColl_Ptr is access all ISecurityIdentityColl'Class;
   IID_ISecurityCallersColl : aliased constant IID;
   pragma import (C,IID_ISecurityCallersColl,"IID_ISecurityCallersColl");
   type ISecurityCallersColl is limited interface and IDispatch;
      function get_Count(
         This : access ISecurityCallersColl;
         plCount : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_Item(
         This : access ISecurityCallersColl;
         lIndex : Interfaces.C.Long;
         pObj : access ISecurityIdentityColl_Ptr
      ) return HRESULT is abstract;
      function get_NewEnum(
         This : access ISecurityCallersColl;
         ppEnum : access IUnknown_Ptr
      ) return HRESULT is abstract;
   type ISecurityCallersColl_Ptr is access all ISecurityCallersColl'Class;
   IID_ISecurityCallContext : aliased constant IID;
   pragma import (C,IID_ISecurityCallContext,"IID_ISecurityCallContext");
   type ISecurityCallContext is limited interface and IDispatch;
      function get_Count(
         This : access ISecurityCallContext;
         plCount : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_Item(
         This : access ISecurityCallContext;
         name : BSTR;
         pItem : access VARIANT
      ) return HRESULT is abstract;
      function get_NewEnum(
         This : access ISecurityCallContext;
         ppEnum : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function IsCallerInRole(
         This : access ISecurityCallContext;
         bstrRole : BSTR;
         pfInRole : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function IsSecurityEnabled(
         This : access ISecurityCallContext;
         pfIsEnabled : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function IsUserInRole(
         This : access ISecurityCallContext;
         pUser : access VARIANT;
         bstrRole : BSTR;
         pfInRole : access VARIANT_BOOL
      ) return HRESULT is abstract;
   type ISecurityCallContext_Ptr is access all ISecurityCallContext'Class;
   IID_IGetSecurityCallContext : aliased constant IID;
   pragma import (C,IID_IGetSecurityCallContext,"IID_IGetSecurityCallContext");
   type IGetSecurityCallContext is limited interface and IDispatch;
      function GetSecurityCallContext(
         This : access IGetSecurityCallContext;
         ppObject : access ISecurityCallContext_Ptr
      ) return HRESULT is abstract;
   type IGetSecurityCallContext_Ptr is access all IGetSecurityCallContext'Class;
   IID_SecurityProperty : aliased constant IID;
   pragma import (C,IID_SecurityProperty,"IID_SecurityProperty");
   type SecurityProperty is limited interface and IDispatch;
      function GetDirectCallerName(
         This : access SecurityProperty;
         bstrUserName : access BSTR
      ) return HRESULT is abstract;
      function GetDirectCreatorName(
         This : access SecurityProperty;
         bstrUserName : access BSTR
      ) return HRESULT is abstract;
      function GetOriginalCallerName(
         This : access SecurityProperty;
         bstrUserName : access BSTR
      ) return HRESULT is abstract;
      function GetOriginalCreatorName(
         This : access SecurityProperty;
         bstrUserName : access BSTR
      ) return HRESULT is abstract;
   type SecurityProperty_Ptr is access all SecurityProperty'Class;
   IID_ContextInfo : aliased constant IID;
   pragma import (C,IID_ContextInfo,"IID_ContextInfo");
   type ContextInfo is limited interface and IDispatch;
      function IsInTransaction(
         This : access ContextInfo;
         pbIsInTx : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function GetTransaction(
         This : access ContextInfo;
         ppTx : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function GetTransactionId(
         This : access ContextInfo;
         pbstrTxId : access BSTR
      ) return HRESULT is abstract;
      function GetActivityId(
         This : access ContextInfo;
         pbstrActivityId : access BSTR
      ) return HRESULT is abstract;
      function GetContextId(
         This : access ContextInfo;
         pbstrCtxId : access BSTR
      ) return HRESULT is abstract;
   type ContextInfo_Ptr is access all ContextInfo'Class;
   IID_ContextInfo2 : aliased constant IID;
   pragma import (C,IID_ContextInfo2,"IID_ContextInfo2");
   type ContextInfo2 is limited interface and ContextInfo;
      function GetPartitionId(
         This : access ContextInfo2;
         MIDL_ContextInfo20000 : access BSTR
      ) return HRESULT is abstract;
      function GetApplicationId(
         This : access ContextInfo2;
         MIDL_ContextInfo20001 : access BSTR
      ) return HRESULT is abstract;
      function GetApplicationInstanceId(
         This : access ContextInfo2;
         MIDL_ContextInfo20002 : access BSTR
      ) return HRESULT is abstract;
   type ContextInfo2_Ptr is access all ContextInfo2'Class;
   IID_ObjectContext : aliased constant IID;
   pragma import (C,IID_ObjectContext,"IID_ObjectContext");
   type ObjectContext is limited interface and IDispatch;
      function CreateInstance(
         This : access ObjectContext;
         bstrProgID : BSTR;
         pObject : access VARIANT
      ) return HRESULT is abstract;
      function SetComplete(This : access ObjectContext) return HRESULT is abstract;
      function SetAbort(This : access ObjectContext) return HRESULT is abstract;
      function EnableCommit(This : access ObjectContext) return HRESULT is abstract;
      function DisableCommit(This : access ObjectContext) return HRESULT is abstract;
      function IsInTransaction(
         This : access ObjectContext;
         pbIsInTx : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function IsSecurityEnabled(
         This : access ObjectContext;
         pbIsEnabled : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function IsCallerInRole(
         This : access ObjectContext;
         bstrRole : BSTR;
         pbInRole : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function get_Count(
         This : access ObjectContext;
         plCount : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_Item(
         This : access ObjectContext;
         name : BSTR;
         pItem : access VARIANT
      ) return HRESULT is abstract;
      function get_NewEnum(
         This : access ObjectContext;
         ppEnum : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function get_Security(
         This : access ObjectContext;
         ppSecurityProperty : access SecurityProperty_Ptr
      ) return HRESULT is abstract;
      function get_ContextInfo(
         This : access ObjectContext;
         ppContextInfo : access ContextInfo_Ptr
      ) return HRESULT is abstract;
   type ObjectContext_Ptr is access all ObjectContext'Class;
   IID_ITransactionContextEx : aliased constant IID;
   pragma import (C,IID_ITransactionContextEx,"IID_ITransactionContextEx");
   type ITransactionContextEx is limited interface and IUnknown;
      function CreateInstance(
         This : access ITransactionContextEx;
         rclsid : access constant IID;
         riid : access constant IID;
         pObject : access LPVOID
      ) return HRESULT is abstract;
      function Commit(This : access ITransactionContextEx) return HRESULT is abstract;
      function abort_x_x(This : access ITransactionContextEx) return HRESULT is abstract;
   type ITransactionContextEx_Ptr is access all ITransactionContextEx'Class;
   IID_ITransactionContext : aliased constant IID;
   pragma import (C,IID_ITransactionContext,"IID_ITransactionContext");
   type ITransactionContext is limited interface and IDispatch;
      function CreateInstance(
         This : access ITransactionContext;
         pszProgId : BSTR;
         pObject : access VARIANT
      ) return HRESULT is abstract;
      function Commit(This : access ITransactionContext) return HRESULT is abstract;
      function abort_x_x(This : access ITransactionContext) return HRESULT is abstract;
   type ITransactionContext_Ptr is access all ITransactionContext'Class;
   IID_ICreateWithTransactionEx : aliased constant IID;
   pragma import (C,IID_ICreateWithTransactionEx,"IID_ICreateWithTransactionEx");
   type ICreateWithTransactionEx is limited interface and IUnknown;
      function CreateInstance(
         This : access ICreateWithTransactionEx;
         pTransaction : access ITransaction'Class;
         rclsid : access constant IID;
         riid : access constant IID;
         pObject : access LPVOID
      ) return HRESULT is abstract;
   type ICreateWithTransactionEx_Ptr is access all ICreateWithTransactionEx'Class;
   IID_ICreateWithLocalTransaction : aliased constant IID;
   pragma import (C,IID_ICreateWithLocalTransaction,"IID_ICreateWithLocalTransaction");
   type ICreateWithLocalTransaction is limited interface and IUnknown;
      function CreateInstanceWithSysTx(
         This : access ICreateWithLocalTransaction;
         pTransaction : access IUnknown'Class;
         rclsid : access constant IID;
         riid : access constant IID;
         pObject : access LPVOID
      ) return HRESULT is abstract;
   type ICreateWithLocalTransaction_Ptr is access all ICreateWithLocalTransaction'Class;
   IID_ICreateWithTipTransactionEx : aliased constant IID;
   pragma import (C,IID_ICreateWithTipTransactionEx,"IID_ICreateWithTipTransactionEx");
   type ICreateWithTipTransactionEx is limited interface and IUnknown;
      function CreateInstance(
         This : access ICreateWithTipTransactionEx;
         bstrTipUrl : BSTR;
         rclsid : access constant IID;
         riid : access constant IID;
         pObject : access LPVOID
      ) return HRESULT is abstract;
   type ICreateWithTipTransactionEx_Ptr is access all ICreateWithTipTransactionEx'Class;
   subtype MTS_OBJID is Interfaces.C.Extensions.unsigned_long_long;
   subtype MTS_RESID is Interfaces.C.Extensions.unsigned_long_long;
   type MIDL_MIDL_itf_autosvcs_0000_0013_0001_x is record
      cbSize : DWORD;
      dwPid : DWORD;
      lTime : LONGLONG;
      lMicroTime : LONG;
      perfCount : LONGLONG;
      guidApp : GUID;
      sMachineName : LPOLESTR;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_MIDL_itf_autosvcs_0000_0013_0001_x);
   for MIDL_MIDL_itf_autosvcs_0000_0013_0001_x use record
      cbSize at 0 range 0..31;
      dwPid at 0 range 32..63;
      lTime at 0 range 64..127;
      lMicroTime at 0 range 128..159;
      perfCount at 0 range 192..255;
      guidApp at 0 range 256..383;
      sMachineName at 0 range 384..447;
   end record;
   for MIDL_MIDL_itf_autosvcs_0000_0013_0001_x'Size use 448;
   for MIDL_MIDL_itf_autosvcs_0000_0013_0001_x'Alignment use 8;
   subtype COMSVCSEVENTINFO is MIDL_MIDL_itf_autosvcs_0000_0013_0001_x;
   IID_IComLTxEvents : aliased constant IID;
   pragma import (C,IID_IComLTxEvents,"IID_IComLTxEvents");
   type IComLTxEvents is limited interface and IUnknown;
      function OnLtxTransactionStart(
         This : access IComLTxEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidLtx : GUID;
         tsid : GUID;
         fRoot : BOOL;
         nIsolationLevel : Interfaces.C.Int
      ) return HRESULT is abstract;
      function OnLtxTransactionPrepare(
         This : access IComLTxEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidLtx : GUID;
         fVote : BOOL
      ) return HRESULT is abstract;
      function OnLtxTransactionAbort(
         This : access IComLTxEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidLtx : GUID
      ) return HRESULT is abstract;
      function OnLtxTransactionCommit(
         This : access IComLTxEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidLtx : GUID
      ) return HRESULT is abstract;
      function OnLtxTransactionPromote(
         This : access IComLTxEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidLtx : GUID;
         txnId : GUID
      ) return HRESULT is abstract;
   type IComLTxEvents_Ptr is access all IComLTxEvents'Class;
   IID_IComUserEvent : aliased constant IID;
   pragma import (C,IID_IComUserEvent,"IID_IComUserEvent");
   type IComUserEvent is limited interface and IUnknown;
      function OnUserEvent(
         This : access IComUserEvent;
         pInfo : access COMSVCSEVENTINFO;
         pvarEvent : access VARIANT
      ) return HRESULT is abstract;
   type IComUserEvent_Ptr is access all IComUserEvent'Class;
   IID_IComThreadEvents : aliased constant IID;
   pragma import (C,IID_IComThreadEvents,"IID_IComThreadEvents");
   type IComThreadEvents is limited interface and IUnknown;
      function OnThreadStart(
         This : access IComThreadEvents;
         pInfo : access COMSVCSEVENTINFO;
         ThreadID_x : ULONG64;
         dwThread : DWORD;
         dwTheadCnt : DWORD
      ) return HRESULT is abstract;
      function OnThreadTerminate(
         This : access IComThreadEvents;
         pInfo : access COMSVCSEVENTINFO;
         ThreadID_x : ULONG64;
         dwThread : DWORD;
         dwTheadCnt : DWORD
      ) return HRESULT is abstract;
      function OnThreadBindToApartment(
         This : access IComThreadEvents;
         pInfo : access COMSVCSEVENTINFO;
         ThreadID_x : ULONG64;
         AptID : ULONG64;
         dwActCnt : DWORD;
         dwLowCnt : DWORD
      ) return HRESULT is abstract;
      function OnThreadUnBind(
         This : access IComThreadEvents;
         pInfo : access COMSVCSEVENTINFO;
         ThreadID_x : ULONG64;
         AptID : ULONG64;
         dwActCnt : DWORD
      ) return HRESULT is abstract;
      function OnThreadWorkEnque(
         This : access IComThreadEvents;
         pInfo : access COMSVCSEVENTINFO;
         ThreadID_x : ULONG64;
         MsgWorkID : ULONG64;
         QueueLen : DWORD
      ) return HRESULT is abstract;
      function OnThreadWorkPrivate(
         This : access IComThreadEvents;
         pInfo : access COMSVCSEVENTINFO;
         ThreadID_x : ULONG64;
         MsgWorkID : ULONG64
      ) return HRESULT is abstract;
      function OnThreadWorkPublic(
         This : access IComThreadEvents;
         pInfo : access COMSVCSEVENTINFO;
         ThreadID_x : ULONG64;
         MsgWorkID : ULONG64;
         QueueLen : DWORD
      ) return HRESULT is abstract;
      function OnThreadWorkRedirect(
         This : access IComThreadEvents;
         pInfo : access COMSVCSEVENTINFO;
         ThreadID_x : ULONG64;
         MsgWorkID : ULONG64;
         QueueLen : DWORD;
         ThreadNum : ULONG64
      ) return HRESULT is abstract;
      function OnThreadWorkReject(
         This : access IComThreadEvents;
         pInfo : access COMSVCSEVENTINFO;
         ThreadID_x : ULONG64;
         MsgWorkID : ULONG64;
         QueueLen : DWORD
      ) return HRESULT is abstract;
      function OnThreadAssignApartment(
         This : access IComThreadEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID;
         AptID : ULONG64
      ) return HRESULT is abstract;
      function OnThreadUnassignApartment(
         This : access IComThreadEvents;
         pInfo : access COMSVCSEVENTINFO;
         AptID : ULONG64
      ) return HRESULT is abstract;
   type IComThreadEvents_Ptr is access all IComThreadEvents'Class;
   IID_IComAppEvents : aliased constant IID;
   pragma import (C,IID_IComAppEvents,"IID_IComAppEvents");
   type IComAppEvents is limited interface and IUnknown;
      function OnAppActivation(
         This : access IComAppEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidApp : GUID
      ) return HRESULT is abstract;
      function OnAppShutdown(
         This : access IComAppEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidApp : GUID
      ) return HRESULT is abstract;
      function OnAppForceShutdown(
         This : access IComAppEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidApp : GUID
      ) return HRESULT is abstract;
   type IComAppEvents_Ptr is access all IComAppEvents'Class;
   IID_IComInstanceEvents : aliased constant IID;
   pragma import (C,IID_IComInstanceEvents,"IID_IComInstanceEvents");
   type IComInstanceEvents is limited interface and IUnknown;
      function OnObjectCreate(
         This : access IComInstanceEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID;
         clsid_x : access constant IID;
         tsid : access constant GUID;
         CtxtID : ULONG64;
         ObjectID_x : ULONG64
      ) return HRESULT is abstract;
      function OnObjectDestroy(
         This : access IComInstanceEvents;
         pInfo : access COMSVCSEVENTINFO;
         CtxtID : ULONG64
      ) return HRESULT is abstract;
   type IComInstanceEvents_Ptr is access all IComInstanceEvents'Class;
   IID_IComTransactionEvents : aliased constant IID;
   pragma import (C,IID_IComTransactionEvents,"IID_IComTransactionEvents");
   type IComTransactionEvents is limited interface and IUnknown;
      function OnTransactionStart(
         This : access IComTransactionEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidTx : access constant GUID;
         tsid : access constant GUID;
         fRoot : BOOL
      ) return HRESULT is abstract;
      function OnTransactionPrepare(
         This : access IComTransactionEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidTx : access constant GUID;
         fVoteYes : BOOL
      ) return HRESULT is abstract;
      function OnTransactionAbort(
         This : access IComTransactionEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidTx : access constant GUID
      ) return HRESULT is abstract;
      function OnTransactionCommit(
         This : access IComTransactionEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidTx : access constant GUID
      ) return HRESULT is abstract;
   type IComTransactionEvents_Ptr is access all IComTransactionEvents'Class;
   IID_IComMethodEvents : aliased constant IID;
   pragma import (C,IID_IComMethodEvents,"IID_IComMethodEvents");
   type IComMethodEvents is limited interface and IUnknown;
      function OnMethodCall(
         This : access IComMethodEvents;
         pInfo : access COMSVCSEVENTINFO;
         oid : ULONG64;
         guidCid : access constant IID;
         guidRid : access constant IID;
         iMeth : ULONG
      ) return HRESULT is abstract;
      function OnMethodReturn(
         This : access IComMethodEvents;
         pInfo : access COMSVCSEVENTINFO;
         oid : ULONG64;
         guidCid : access constant IID;
         guidRid : access constant IID;
         iMeth : ULONG;
         hresult_x : HRESULT
      ) return HRESULT is abstract;
      function OnMethodException(
         This : access IComMethodEvents;
         pInfo : access COMSVCSEVENTINFO;
         oid : ULONG64;
         guidCid : access constant IID;
         guidRid : access constant IID;
         iMeth : ULONG
      ) return HRESULT is abstract;
   type IComMethodEvents_Ptr is access all IComMethodEvents'Class;
   IID_IComObjectEvents : aliased constant IID;
   pragma import (C,IID_IComObjectEvents,"IID_IComObjectEvents");
   type IComObjectEvents is limited interface and IUnknown;
      function OnObjectActivate(
         This : access IComObjectEvents;
         pInfo : access COMSVCSEVENTINFO;
         CtxtID : ULONG64;
         ObjectID_x : ULONG64
      ) return HRESULT is abstract;
      function OnObjectDeactivate(
         This : access IComObjectEvents;
         pInfo : access COMSVCSEVENTINFO;
         CtxtID : ULONG64;
         ObjectID_x : ULONG64
      ) return HRESULT is abstract;
      function OnDisableCommit(
         This : access IComObjectEvents;
         pInfo : access COMSVCSEVENTINFO;
         CtxtID : ULONG64
      ) return HRESULT is abstract;
      function OnEnableCommit(
         This : access IComObjectEvents;
         pInfo : access COMSVCSEVENTINFO;
         CtxtID : ULONG64
      ) return HRESULT is abstract;
      function OnSetComplete(
         This : access IComObjectEvents;
         pInfo : access COMSVCSEVENTINFO;
         CtxtID : ULONG64
      ) return HRESULT is abstract;
      function OnSetAbort(
         This : access IComObjectEvents;
         pInfo : access COMSVCSEVENTINFO;
         CtxtID : ULONG64
      ) return HRESULT is abstract;
   type IComObjectEvents_Ptr is access all IComObjectEvents'Class;
   IID_IComResourceEvents : aliased constant IID;
   pragma import (C,IID_IComResourceEvents,"IID_IComResourceEvents");
   type IComResourceEvents is limited interface and IUnknown;
      function OnResourceCreate(
         This : access IComResourceEvents;
         pInfo : access COMSVCSEVENTINFO;
         ObjectID_x : ULONG64;
         pszType : LPCOLESTR;
         resId : ULONG64;
         enlisted : BOOL
      ) return HRESULT is abstract;
      function OnResourceAllocate(
         This : access IComResourceEvents;
         pInfo : access COMSVCSEVENTINFO;
         ObjectID_x : ULONG64;
         pszType : LPCOLESTR;
         resId : ULONG64;
         enlisted : BOOL;
         NumRated : DWORD;
         Rating : DWORD
      ) return HRESULT is abstract;
      function OnResourceRecycle(
         This : access IComResourceEvents;
         pInfo : access COMSVCSEVENTINFO;
         ObjectID_x : ULONG64;
         pszType : LPCOLESTR;
         resId : ULONG64
      ) return HRESULT is abstract;
      function OnResourceDestroy(
         This : access IComResourceEvents;
         pInfo : access COMSVCSEVENTINFO;
         ObjectID_x : ULONG64;
         hr : HRESULT;
         pszType : LPCOLESTR;
         resId : ULONG64
      ) return HRESULT is abstract;
      function OnResourceTrack(
         This : access IComResourceEvents;
         pInfo : access COMSVCSEVENTINFO;
         ObjectID_x : ULONG64;
         pszType : LPCOLESTR;
         resId : ULONG64;
         enlisted : BOOL
      ) return HRESULT is abstract;
   type IComResourceEvents_Ptr is access all IComResourceEvents'Class;
   IID_IComSecurityEvents : aliased constant IID;
   pragma import (C,IID_IComSecurityEvents,"IID_IComSecurityEvents");
   type IComSecurityEvents is limited interface and IUnknown;
      function OnAuthenticate(
         This : access IComSecurityEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID;
         ObjectID_x : ULONG64;
         guidIID : access constant GUID;
         iMeth : ULONG;
         cbByteOrig : ULONG;
         pSidOriginalUser : access BYTE;
         cbByteCur : ULONG;
         pSidCurrentUser : access BYTE;
         bCurrentUserInpersonatingInProc : BOOL
      ) return HRESULT is abstract;
      function OnAuthenticateFail(
         This : access IComSecurityEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID;
         ObjectID_x : ULONG64;
         guidIID : access constant GUID;
         iMeth : ULONG;
         cbByteOrig : ULONG;
         pSidOriginalUser : access BYTE;
         cbByteCur : ULONG;
         pSidCurrentUser : access BYTE;
         bCurrentUserInpersonatingInProc : BOOL
      ) return HRESULT is abstract;
   type IComSecurityEvents_Ptr is access all IComSecurityEvents'Class;
   IID_IComObjectPoolEvents : aliased constant IID;
   pragma import (C,IID_IComObjectPoolEvents,"IID_IComObjectPoolEvents");
   type IComObjectPoolEvents is limited interface and IUnknown;
      function OnObjPoolPutObject(
         This : access IComObjectPoolEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidObject : access constant GUID;
         nReason : Interfaces.C.Int;
         dwAvailable : DWORD;
         oid : ULONG64
      ) return HRESULT is abstract;
      function OnObjPoolGetObject(
         This : access IComObjectPoolEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID;
         guidObject : access constant GUID;
         dwAvailable : DWORD;
         oid : ULONG64
      ) return HRESULT is abstract;
      function OnObjPoolRecycleToTx(
         This : access IComObjectPoolEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID;
         guidObject : access constant GUID;
         guidTx : access constant GUID;
         objid : ULONG64
      ) return HRESULT is abstract;
      function OnObjPoolGetFromTx(
         This : access IComObjectPoolEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID;
         guidObject : access constant GUID;
         guidTx : access constant GUID;
         objid : ULONG64
      ) return HRESULT is abstract;
   type IComObjectPoolEvents_Ptr is access all IComObjectPoolEvents'Class;
   IID_IComObjectPoolEvents2 : aliased constant IID;
   pragma import (C,IID_IComObjectPoolEvents2,"IID_IComObjectPoolEvents2");
   type IComObjectPoolEvents2 is limited interface and IUnknown;
      function OnObjPoolCreateObject(
         This : access IComObjectPoolEvents2;
         pInfo : access COMSVCSEVENTINFO;
         guidObject : access constant GUID;
         dwObjsCreated : DWORD;
         oid : ULONG64
      ) return HRESULT is abstract;
      function OnObjPoolDestroyObject(
         This : access IComObjectPoolEvents2;
         pInfo : access COMSVCSEVENTINFO;
         guidObject : access constant GUID;
         dwObjsCreated : DWORD;
         oid : ULONG64
      ) return HRESULT is abstract;
      function OnObjPoolCreateDecision(
         This : access IComObjectPoolEvents2;
         pInfo : access COMSVCSEVENTINFO;
         dwThreadsWaiting : DWORD;
         dwAvail : DWORD;
         dwCreated : DWORD;
         dwMin : DWORD;
         dwMax : DWORD
      ) return HRESULT is abstract;
      function OnObjPoolTimeout(
         This : access IComObjectPoolEvents2;
         pInfo : access COMSVCSEVENTINFO;
         guidObject : access constant GUID;
         guidActivity : access constant GUID;
         dwTimeout : DWORD
      ) return HRESULT is abstract;
      function OnObjPoolCreatePool(
         This : access IComObjectPoolEvents2;
         pInfo : access COMSVCSEVENTINFO;
         guidObject : access constant GUID;
         dwMin : DWORD;
         dwMax : DWORD;
         dwTimeout : DWORD
      ) return HRESULT is abstract;
   type IComObjectPoolEvents2_Ptr is access all IComObjectPoolEvents2'Class;
   IID_IComObjectConstructionEvents : aliased constant IID;
   pragma import (C,IID_IComObjectConstructionEvents,"IID_IComObjectConstructionEvents");
   type IComObjectConstructionEvents is limited interface and IUnknown;
      function OnObjectConstruct(
         This : access IComObjectConstructionEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidObject : access constant GUID;
         sConstructString : LPCOLESTR;
         oid : ULONG64
      ) return HRESULT is abstract;
   type IComObjectConstructionEvents_Ptr is access all IComObjectConstructionEvents'Class;
   IID_IComActivityEvents : aliased constant IID;
   pragma import (C,IID_IComActivityEvents,"IID_IComActivityEvents");
   type IComActivityEvents is limited interface and IUnknown;
      function OnActivityCreate(
         This : access IComActivityEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID
      ) return HRESULT is abstract;
      function OnActivityDestroy(
         This : access IComActivityEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID
      ) return HRESULT is abstract;
      function OnActivityEnter(
         This : access IComActivityEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidCurrent : access constant GUID;
         guidEntered : access constant GUID;
         dwThread : DWORD
      ) return HRESULT is abstract;
      function OnActivityTimeout(
         This : access IComActivityEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidCurrent : access constant GUID;
         guidEntered : access constant GUID;
         dwThread : DWORD;
         dwTimeout : DWORD
      ) return HRESULT is abstract;
      function OnActivityReenter(
         This : access IComActivityEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidCurrent : access constant GUID;
         dwThread : DWORD;
         dwCallDepth : DWORD
      ) return HRESULT is abstract;
      function OnActivityLeave(
         This : access IComActivityEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidCurrent : access constant GUID;
         guidLeft : access constant GUID
      ) return HRESULT is abstract;
      function OnActivityLeaveSame(
         This : access IComActivityEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidCurrent : access constant GUID;
         dwCallDepth : DWORD
      ) return HRESULT is abstract;
   type IComActivityEvents_Ptr is access all IComActivityEvents'Class;
   IID_IComIdentityEvents : aliased constant IID;
   pragma import (C,IID_IComIdentityEvents,"IID_IComIdentityEvents");
   type IComIdentityEvents is limited interface and IUnknown;
      function OnIISRequestInfo(
         This : access IComIdentityEvents;
         pInfo : access COMSVCSEVENTINFO;
         ObjId : ULONG64;
         pszClientIP : LPCOLESTR;
         pszServerIP : LPCOLESTR;
         pszURL : LPCOLESTR
      ) return HRESULT is abstract;
   type IComIdentityEvents_Ptr is access all IComIdentityEvents'Class;
   IID_IComQCEvents : aliased constant IID;
   pragma import (C,IID_IComQCEvents,"IID_IComQCEvents");
   type IComQCEvents_OnQCRecord_szQueue_Array is array(1..60) of WCHAR; -- Auto Generated Dependancy
   type IComQCEvents_OnQCQueueOpen_szQueue_Array is array(1..60) of WCHAR; -- Auto Generated Dependancy
   type IComQCEvents is limited interface and IUnknown;
      function OnQCRecord(
         This : access IComQCEvents;
         pInfo : access COMSVCSEVENTINFO;
         objid : ULONG64;
         szQueue : IComQCEvents_OnQCRecord_szQueue_Array;
         guidMsgId : access constant GUID;
         guidWorkFlowId : access constant GUID;
         msmqhr : HRESULT
      ) return HRESULT is abstract;
      function OnQCQueueOpen(
         This : access IComQCEvents;
         pInfo : access COMSVCSEVENTINFO;
         szQueue : IComQCEvents_OnQCQueueOpen_szQueue_Array;
         QueueID : ULONG64;
         hr : HRESULT
      ) return HRESULT is abstract;
      function OnQCReceive(
         This : access IComQCEvents;
         pInfo : access COMSVCSEVENTINFO;
         QueueID : ULONG64;
         guidMsgId : access constant GUID;
         guidWorkFlowId : access constant GUID;
         hr : HRESULT
      ) return HRESULT is abstract;
      function OnQCReceiveFail(
         This : access IComQCEvents;
         pInfo : access COMSVCSEVENTINFO;
         QueueID : ULONG64;
         msmqhr : HRESULT
      ) return HRESULT is abstract;
      function OnQCMoveToReTryQueue(
         This : access IComQCEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidMsgId : access constant GUID;
         guidWorkFlowId : access constant GUID;
         RetryIndex : ULONG
      ) return HRESULT is abstract;
      function OnQCMoveToDeadQueue(
         This : access IComQCEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidMsgId : access constant GUID;
         guidWorkFlowId : access constant GUID
      ) return HRESULT is abstract;
      function OnQCPlayback(
         This : access IComQCEvents;
         pInfo : access COMSVCSEVENTINFO;
         objid : ULONG64;
         guidMsgId : access constant GUID;
         guidWorkFlowId : access constant GUID;
         hr : HRESULT
      ) return HRESULT is abstract;
   type IComQCEvents_Ptr is access all IComQCEvents'Class;
   IID_IComExceptionEvents : aliased constant IID;
   pragma import (C,IID_IComExceptionEvents,"IID_IComExceptionEvents");
   type IComExceptionEvents is limited interface and IUnknown;
      function OnExceptionUser(
         This : access IComExceptionEvents;
         pInfo : access COMSVCSEVENTINFO;
         code : ULONG;
         address : ULONG64;
         pszStackTrace : LPCOLESTR
      ) return HRESULT is abstract;
   type IComExceptionEvents_Ptr is access all IComExceptionEvents'Class;
   IID_ILBEvents : aliased constant IID;
   pragma import (C,IID_ILBEvents,"IID_ILBEvents");
   type ILBEvents is limited interface and IUnknown;
      function TargetUp(
         This : access ILBEvents;
         bstrServerName : BSTR;
         bstrClsidEng : BSTR
      ) return HRESULT is abstract;
      function TargetDown(
         This : access ILBEvents;
         bstrServerName : BSTR;
         bstrClsidEng : BSTR
      ) return HRESULT is abstract;
      function EngineDefined(
         This : access ILBEvents;
         bstrPropName : BSTR;
         varPropValue : access VARIANT;
         bstrClsidEng : BSTR
      ) return HRESULT is abstract;
   type ILBEvents_Ptr is access all ILBEvents'Class;
   IID_IComCRMEvents : aliased constant IID;
   pragma import (C,IID_IComCRMEvents,"IID_IComCRMEvents");
   type IComCRMEvents_OnCRMBegin_szProgIdCompensator_Array is array(1..64) of WCHAR; -- Auto Generated Dependancy
   type IComCRMEvents_OnCRMBegin_szDescription_Array is array(1..64) of WCHAR; -- Auto Generated Dependancy
   type IComCRMEvents is limited interface and IUnknown;
      function OnCRMRecoveryStart(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidApp : GUID
      ) return HRESULT is abstract;
      function OnCRMRecoveryDone(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidApp : GUID
      ) return HRESULT is abstract;
      function OnCRMCheckpoint(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidApp : GUID
      ) return HRESULT is abstract;
      function OnCRMBegin(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidClerkCLSID : GUID;
         guidActivity : GUID;
         guidTx : GUID;
         szProgIdCompensator : IComCRMEvents_OnCRMBegin_szProgIdCompensator_Array;
         szDescription : IComCRMEvents_OnCRMBegin_szDescription_Array
      ) return HRESULT is abstract;
      function OnCRMPrepare(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidClerkCLSID : GUID
      ) return HRESULT is abstract;
      function OnCRMCommit(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidClerkCLSID : GUID
      ) return HRESULT is abstract;
      function OnCRMAbort(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidClerkCLSID : GUID
      ) return HRESULT is abstract;
      function OnCRMIndoubt(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidClerkCLSID : GUID
      ) return HRESULT is abstract;
      function OnCRMDone(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidClerkCLSID : GUID
      ) return HRESULT is abstract;
      function OnCRMRelease(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidClerkCLSID : GUID
      ) return HRESULT is abstract;
      function OnCRMAnalyze(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidClerkCLSID : GUID;
         dwCrmRecordType : DWORD;
         dwRecordSize : DWORD
      ) return HRESULT is abstract;
      function OnCRMWrite(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidClerkCLSID : GUID;
         fVariants : BOOL;
         dwRecordSize : DWORD
      ) return HRESULT is abstract;
      function OnCRMForget(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidClerkCLSID : GUID
      ) return HRESULT is abstract;
      function OnCRMForce(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidClerkCLSID : GUID
      ) return HRESULT is abstract;
      function OnCRMDeliver(
         This : access IComCRMEvents;
         pInfo : access COMSVCSEVENTINFO;
         guidClerkCLSID : GUID;
         fVariants : BOOL;
         dwRecordSize : DWORD
      ) return HRESULT is abstract;
   type IComCRMEvents_Ptr is access all IComCRMEvents'Class;
   IID_IComMethod2Events : aliased constant IID;
   pragma import (C,IID_IComMethod2Events,"IID_IComMethod2Events");
   type IComMethod2Events is limited interface and IUnknown;
      function OnMethodCall2(
         This : access IComMethod2Events;
         pInfo : access COMSVCSEVENTINFO;
         oid : ULONG64;
         guidCid : access constant IID;
         guidRid : access constant IID;
         dwThread : DWORD;
         iMeth : ULONG
      ) return HRESULT is abstract;
      function OnMethodReturn2(
         This : access IComMethod2Events;
         pInfo : access COMSVCSEVENTINFO;
         oid : ULONG64;
         guidCid : access constant IID;
         guidRid : access constant IID;
         dwThread : DWORD;
         iMeth : ULONG;
         hresult_x : HRESULT
      ) return HRESULT is abstract;
      function OnMethodException2(
         This : access IComMethod2Events;
         pInfo : access COMSVCSEVENTINFO;
         oid : ULONG64;
         guidCid : access constant IID;
         guidRid : access constant IID;
         dwThread : DWORD;
         iMeth : ULONG
      ) return HRESULT is abstract;
   type IComMethod2Events_Ptr is access all IComMethod2Events'Class;
   IID_IComTrackingInfoEvents : aliased constant IID;
   pragma import (C,IID_IComTrackingInfoEvents,"IID_IComTrackingInfoEvents");
   type IComTrackingInfoEvents is limited interface and IUnknown;
      function OnNewTrackingInfo(
         This : access IComTrackingInfoEvents;
         pToplevelCollection : access IUnknown'Class
      ) return HRESULT is abstract;
   type IComTrackingInfoEvents_Ptr is access all IComTrackingInfoEvents'Class;
   type MIDL_MIDL_itf_autosvcs_0000_0034_0001_x is (
      TRKCOLL_PROCESSES,
      TRKCOLL_APPLICATIONS,
      TRKCOLL_COMPONENTS
   );
   for MIDL_MIDL_itf_autosvcs_0000_0034_0001_x use (
      TRKCOLL_PROCESSES => 0,
      TRKCOLL_APPLICATIONS => 1,
      TRKCOLL_COMPONENTS => 2
   );
   for MIDL_MIDL_itf_autosvcs_0000_0034_0001_x'Size use 32;
   subtype TRACKING_COLL_TYPE is MIDL_MIDL_itf_autosvcs_0000_0034_0001_x;
   IID_IComTrackingInfoCollection : aliased constant IID;
   pragma import (C,IID_IComTrackingInfoCollection,"IID_IComTrackingInfoCollection");
   type IComTrackingInfoCollection is limited interface and IUnknown;
      function Type_Func(
         This : access IComTrackingInfoCollection;
         pType : access TRACKING_COLL_TYPE
      ) return HRESULT is abstract;
      function Count(
         This : access IComTrackingInfoCollection;
         pCount : access ULONG
      ) return HRESULT is abstract;
      function Item(
         This : access IComTrackingInfoCollection;
         ulIndex : ULONG;
         riid : access constant IID;
         ppv : access LPVOID
      ) return HRESULT is abstract;
   type IComTrackingInfoCollection_Ptr is access all IComTrackingInfoCollection'Class;
   IID_IComTrackingInfoObject : aliased constant IID;
   pragma import (C,IID_IComTrackingInfoObject,"IID_IComTrackingInfoObject");
   type IComTrackingInfoObject is limited interface and IUnknown;
      function GetValue(
         This : access IComTrackingInfoObject;
         szPropertyName : LPOLESTR;
         pvarOut : access VARIANT
      ) return HRESULT is abstract;
   type IComTrackingInfoObject_Ptr is access all IComTrackingInfoObject'Class;
   IID_IComTrackingInfoProperties : aliased constant IID;
   pragma import (C,IID_IComTrackingInfoProperties,"IID_IComTrackingInfoProperties");
   type IComTrackingInfoProperties is limited interface and IUnknown;
      function PropCount(
         This : access IComTrackingInfoProperties;
         pCount : access ULONG
      ) return HRESULT is abstract;
      function GetPropName(
         This : access IComTrackingInfoProperties;
         ulIndex : ULONG;
         ppszPropName : access LPOLESTR
      ) return HRESULT is abstract;
   type IComTrackingInfoProperties_Ptr is access all IComTrackingInfoProperties'Class;
   IID_IComApp2Events : aliased constant IID;
   pragma import (C,IID_IComApp2Events,"IID_IComApp2Events");
   type IComApp2Events is limited interface and IUnknown;
      function OnAppActivation2(
         This : access IComApp2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidApp : GUID;
         guidProcess : GUID
      ) return HRESULT is abstract;
      function OnAppShutdown2(
         This : access IComApp2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidApp : GUID
      ) return HRESULT is abstract;
      function OnAppForceShutdown2(
         This : access IComApp2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidApp : GUID
      ) return HRESULT is abstract;
      function OnAppPaused2(
         This : access IComApp2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidApp : GUID;
         bPaused : BOOL
      ) return HRESULT is abstract;
      function OnAppRecycle2(
         This : access IComApp2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidApp : GUID;
         guidProcess : GUID;
         lReason : Interfaces.C.Long
      ) return HRESULT is abstract;
   type IComApp2Events_Ptr is access all IComApp2Events'Class;
   IID_IComTransaction2Events : aliased constant IID;
   pragma import (C,IID_IComTransaction2Events,"IID_IComTransaction2Events");
   type IComTransaction2Events is limited interface and IUnknown;
      function OnTransactionStart2(
         This : access IComTransaction2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidTx : access constant GUID;
         tsid : access constant GUID;
         fRoot : BOOL;
         nIsolationLevel : Interfaces.C.Int
      ) return HRESULT is abstract;
      function OnTransactionPrepare2(
         This : access IComTransaction2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidTx : access constant GUID;
         fVoteYes : BOOL
      ) return HRESULT is abstract;
      function OnTransactionAbort2(
         This : access IComTransaction2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidTx : access constant GUID
      ) return HRESULT is abstract;
      function OnTransactionCommit2(
         This : access IComTransaction2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidTx : access constant GUID
      ) return HRESULT is abstract;
   type IComTransaction2Events_Ptr is access all IComTransaction2Events'Class;
   IID_IComInstance2Events : aliased constant IID;
   pragma import (C,IID_IComInstance2Events,"IID_IComInstance2Events");
   type IComInstance2Events is limited interface and IUnknown;
      function OnObjectCreate2(
         This : access IComInstance2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID;
         clsid_x : access constant IID;
         tsid : access constant GUID;
         CtxtID : ULONG64;
         ObjectID_x : ULONG64;
         guidPartition : access constant GUID
      ) return HRESULT is abstract;
      function OnObjectDestroy2(
         This : access IComInstance2Events;
         pInfo : access COMSVCSEVENTINFO;
         CtxtID : ULONG64
      ) return HRESULT is abstract;
   type IComInstance2Events_Ptr is access all IComInstance2Events'Class;
   IID_IComObjectPool2Events : aliased constant IID;
   pragma import (C,IID_IComObjectPool2Events,"IID_IComObjectPool2Events");
   type IComObjectPool2Events is limited interface and IUnknown;
      function OnObjPoolPutObject2(
         This : access IComObjectPool2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidObject : access constant GUID;
         nReason : Interfaces.C.Int;
         dwAvailable : DWORD;
         oid : ULONG64
      ) return HRESULT is abstract;
      function OnObjPoolGetObject2(
         This : access IComObjectPool2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID;
         guidObject : access constant GUID;
         dwAvailable : DWORD;
         oid : ULONG64;
         guidPartition : access constant GUID
      ) return HRESULT is abstract;
      function OnObjPoolRecycleToTx2(
         This : access IComObjectPool2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID;
         guidObject : access constant GUID;
         guidTx : access constant GUID;
         objid : ULONG64
      ) return HRESULT is abstract;
      function OnObjPoolGetFromTx2(
         This : access IComObjectPool2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidActivity : access constant GUID;
         guidObject : access constant GUID;
         guidTx : access constant GUID;
         objid : ULONG64;
         guidPartition : access constant GUID
      ) return HRESULT is abstract;
   type IComObjectPool2Events_Ptr is access all IComObjectPool2Events'Class;
   IID_IComObjectConstruction2Events : aliased constant IID;
   pragma import (C,IID_IComObjectConstruction2Events,"IID_IComObjectConstruction2Events");
   type IComObjectConstruction2Events is limited interface and IUnknown;
      function OnObjectConstruct2(
         This : access IComObjectConstruction2Events;
         pInfo : access COMSVCSEVENTINFO;
         guidObject : access constant GUID;
         sConstructString : LPCOLESTR;
         oid : ULONG64;
         guidPartition : access constant GUID
      ) return HRESULT is abstract;
   type IComObjectConstruction2Events_Ptr is access all IComObjectConstruction2Events'Class;
   IID_ISystemAppEventData : aliased constant IID;
   pragma import (C,IID_ISystemAppEventData,"IID_ISystemAppEventData");
   type ISystemAppEventData is limited interface and IUnknown;
      function Startup(This : access ISystemAppEventData) return HRESULT is abstract;
      function OnDataChanged(
         This : access ISystemAppEventData;
         dwPID : DWORD;
         dwMask : DWORD;
         dwNumberSinks : DWORD;
         bstrDwMethodMask : BSTR;
         dwReason : DWORD;
         u64TraceHandle : ULONG64
      ) return HRESULT is abstract;
   type ISystemAppEventData_Ptr is access all ISystemAppEventData'Class;
   IID_IMtsEvents : aliased constant IID;
   pragma import (C,IID_IMtsEvents,"IID_IMtsEvents");
   type IMtsEvents is limited interface and IDispatch;
      function get_PackageName(
         This : access IMtsEvents;
         pVal : access BSTR
      ) return HRESULT is abstract;
      function get_PackageGuid(
         This : access IMtsEvents;
         pVal : access BSTR
      ) return HRESULT is abstract;
      function PostEvent(
         This : access IMtsEvents;
         vEvent : access VARIANT
      ) return HRESULT is abstract;
      function get_FireEvents(
         This : access IMtsEvents;
         pVal : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function GetProcessID_x(
         This : access IMtsEvents;
         id : access Interfaces.C.Long
      ) return HRESULT is abstract;
   type IMtsEvents_Ptr is access all IMtsEvents'Class;
   IID_IMtsEventInfo : aliased constant IID;
   pragma import (C,IID_IMtsEventInfo,"IID_IMtsEventInfo");
   type IMtsEventInfo is limited interface and IDispatch;
      function get_Names(
         This : access IMtsEventInfo;
         pUnk : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function get_DisplayName(
         This : access IMtsEventInfo;
         sDisplayName : access BSTR
      ) return HRESULT is abstract;
      function get_EventID(
         This : access IMtsEventInfo;
         sGuidEventID : access BSTR
      ) return HRESULT is abstract;
      function get_Count(
         This : access IMtsEventInfo;
         lCount : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_Value(
         This : access IMtsEventInfo;
         sKey : BSTR;
         pVal : access VARIANT
      ) return HRESULT is abstract;
   type IMtsEventInfo_Ptr is access all IMtsEventInfo'Class;
   IID_IMTSLocator : aliased constant IID;
   pragma import (C,IID_IMTSLocator,"IID_IMTSLocator");
   type IMTSLocator is limited interface and IDispatch;
      function GetEventDispatcher(
         This : access IMTSLocator;
         pUnk : access IUnknown_Ptr
      ) return HRESULT is abstract;
   type IMTSLocator_Ptr is access all IMTSLocator'Class;
   IID_IMtsGrp : aliased constant IID;
   pragma import (C,IID_IMtsGrp,"IID_IMtsGrp");
   type IMtsGrp is limited interface and IDispatch;
      function get_Count(
         This : access IMtsGrp;
         pVal : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function Item(
         This : access IMtsGrp;
         lIndex : Interfaces.C.Long;
         ppUnkDispatcher : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function Refresh(This : access IMtsGrp) return HRESULT is abstract;
   type IMtsGrp_Ptr is access all IMtsGrp'Class;
   IID_IMessageMover : aliased constant IID;
   pragma import (C,IID_IMessageMover,"IID_IMessageMover");
   type IMessageMover is limited interface and IDispatch;
      function get_SourcePath(
         This : access IMessageMover;
         pVal : access BSTR
      ) return HRESULT is abstract;
      function put_SourcePath(
         This : access IMessageMover;
         newVal : BSTR
      ) return HRESULT is abstract;
      function get_DestPath(
         This : access IMessageMover;
         pVal : access BSTR
      ) return HRESULT is abstract;
      function put_DestPath(
         This : access IMessageMover;
         newVal : BSTR
      ) return HRESULT is abstract;
      function get_CommitBatchSize(
         This : access IMessageMover;
         pVal : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function put_CommitBatchSize(
         This : access IMessageMover;
         newVal : Interfaces.C.Long
      ) return HRESULT is abstract;
      function MoveMessages(
         This : access IMessageMover;
         plMessagesMoved : access Interfaces.C.Long
      ) return HRESULT is abstract;
   type IMessageMover_Ptr is access all IMessageMover'Class;
   IID_IEventServerTrace : aliased constant IID;
   pragma import (C,IID_IEventServerTrace,"IID_IEventServerTrace");
   type IEventServerTrace is limited interface and IDispatch;
      function StartTraceGuid(
         This : access IEventServerTrace;
         bstrguidEvent : BSTR;
         bstrguidFilter : BSTR;
         lPidFilter : LONG
      ) return HRESULT is abstract;
      function StopTraceGuid(
         This : access IEventServerTrace;
         bstrguidEvent : BSTR;
         bstrguidFilter : BSTR;
         lPidFilter : LONG
      ) return HRESULT is abstract;
      function EnumTraceGuid(
         This : access IEventServerTrace;
         plCntGuids : access LONG;
         pbstrGuidList : access BSTR
      ) return HRESULT is abstract;
   type IEventServerTrace_Ptr is access all IEventServerTrace'Class;
   type RECYCLE_INFO_x is record
      guidCombaseProcessIdentifier : GUID;
      ProcessStartTime : LONGLONG;
      dwRecycleLifetimeLimit : DWORD;
      dwRecycleMemoryLimit : DWORD;
      dwRecycleExpirationTimeout : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,RECYCLE_INFO_x);
   for RECYCLE_INFO_x use record
      guidCombaseProcessIdentifier at 0 range 0..127;
      ProcessStartTime at 0 range 128..191;
      dwRecycleLifetimeLimit at 0 range 192..223;
      dwRecycleMemoryLimit at 0 range 224..255;
      dwRecycleExpirationTimeout at 0 range 256..287;
   end record;
   for RECYCLE_INFO_x'Size use 320;
   for RECYCLE_INFO_x'Alignment use 8;
   subtype RECYCLE_INFO is RECYCLE_INFO_x;
   type tagDUMPTYPE is (
      DUMPTYPE_FULL,
      DUMPTYPE_MINI,
      DUMPTYPE_NONE
   );
   for tagDUMPTYPE use (
      DUMPTYPE_FULL => 0,
      DUMPTYPE_MINI => 1,
      DUMPTYPE_NONE => 2
   );
   for tagDUMPTYPE'Size use 32;
   subtype DUMPTYPE is tagDUMPTYPE;
   type HANG_INFO_x is record
      fAppHangMonitorEnabled : BOOL;
      fTerminateOnHang : BOOL;
      DumpType_x : DUMPTYPE;
      dwHangTimeout : DWORD;
      dwDumpCount : DWORD;
      dwInfoMsgCount : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,HANG_INFO_x);
   for HANG_INFO_x use record
      fAppHangMonitorEnabled at 0 range 0..31;
      fTerminateOnHang at 0 range 32..63;
      DumpType_x at 0 range 64..95;
      dwHangTimeout at 0 range 96..127;
      dwDumpCount at 0 range 128..159;
      dwInfoMsgCount at 0 range 160..191;
   end record;
   for HANG_INFO_x'Size use 192;
   for HANG_INFO_x'Alignment use 4;
   subtype HANG_INFO is HANG_INFO_x;
   type tagCOMPLUS_APPTYPE is (
      APPTYPE_UNKNOWN,
      APPTYPE_LIBRARY,
      APPTYPE_SERVER,
      APPTYPE_SWC
   );
   for tagCOMPLUS_APPTYPE use (
      APPTYPE_UNKNOWN => -1,
      APPTYPE_LIBRARY => 0,
      APPTYPE_SERVER => 1,
      APPTYPE_SWC => 2
   );
   for tagCOMPLUS_APPTYPE'Size use 32;
   subtype COMPLUS_APPTYPE is tagCOMPLUS_APPTYPE;
   type CAppStatistics is record
      m_cTotalCalls : DWORD;
      m_cTotalInstances : DWORD;
      m_cTotalClasses : DWORD;
      m_cCallsPerSecond : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CAppStatistics);
   for CAppStatistics use record
      m_cTotalCalls at 0 range 0..31;
      m_cTotalInstances at 0 range 32..63;
      m_cTotalClasses at 0 range 64..95;
      m_cCallsPerSecond at 0 range 96..127;
   end record;
   for CAppStatistics'Size use 128;
   for CAppStatistics'Alignment use 4;
   subtype APPSTATISTICS is CAppStatistics;
   type CAppData_m_szAppGuid_Array is array(1..40) of WCHAR; -- Auto Generated Dependancy
   type CAppData is record
      m_idApp : DWORD;
      m_szAppGuid : CAppData_m_szAppGuid_Array;
      m_dwAppProcessId : DWORD;
      m_AppStatistics : APPSTATISTICS;
   end record;
   pragma Convention (C_Pass_By_Copy,CAppData);
   for CAppData use record
      m_idApp at 0 range 0..31;
      m_szAppGuid at 0 range 32..671;
      m_dwAppProcessId at 0 range 672..703;
      m_AppStatistics at 0 range 704..831;
   end record;
   for CAppData'Size use 832;
   for CAppData'Alignment use 4;
   subtype APPDATA is CAppData;
   type CCLSIDData is record
      m_clsid : CLSID;
      m_cReferences : DWORD;
      m_cBound : DWORD;
      m_cPooled : DWORD;
      m_cInCall : DWORD;
      m_dwRespTime : DWORD;
      m_cCallsCompleted : DWORD;
      m_cCallsFailed : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CCLSIDData);
   for CCLSIDData use record
      m_clsid at 0 range 0..127;
      m_cReferences at 0 range 128..159;
      m_cBound at 0 range 160..191;
      m_cPooled at 0 range 192..223;
      m_cInCall at 0 range 224..255;
      m_dwRespTime at 0 range 256..287;
      m_cCallsCompleted at 0 range 288..319;
      m_cCallsFailed at 0 range 320..351;
   end record;
   for CCLSIDData'Size use 352;
   for CCLSIDData'Alignment use 4;
   subtype CLSIDDATA is CCLSIDData;
   type CCLSIDData2 is record
      m_clsid : CLSID;
      m_appid : GUID;
      m_partid : GUID;
      m_pwszAppName : access WCHAR;
      m_pwszCtxName : access WCHAR;
      m_eAppType : COMPLUS_APPTYPE;
      m_cReferences : DWORD;
      m_cBound : DWORD;
      m_cPooled : DWORD;
      m_cInCall : DWORD;
      m_dwRespTime : DWORD;
      m_cCallsCompleted : DWORD;
      m_cCallsFailed : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CCLSIDData2);
   for CCLSIDData2 use record
      m_clsid at 0 range 0..127;
      m_appid at 0 range 128..255;
      m_partid at 0 range 256..383;
      m_pwszAppName at 0 range 384..447;
      m_pwszCtxName at 0 range 448..511;
      m_eAppType at 0 range 512..543;
      m_cReferences at 0 range 544..575;
      m_cBound at 0 range 576..607;
      m_cPooled at 0 range 608..639;
      m_cInCall at 0 range 640..671;
      m_dwRespTime at 0 range 672..703;
      m_cCallsCompleted at 0 range 704..735;
      m_cCallsFailed at 0 range 736..767;
   end record;
   for CCLSIDData2'Size use 768;
   for CCLSIDData2'Alignment use 8;
   subtype CLSIDDATA2 is CCLSIDData2;
   type GetAppTrackerDataFlags_x is (
      GATD_INCLUDE_PROCESS_EXE_NAME,
      GATD_INCLUDE_LIBRARY_APPS,
      GATD_INCLUDE_SWC,
      GATD_INCLUDE_CLASS_NAME,
      GATD_INCLUDE_APPLICATION_NAME
   );
   for GetAppTrackerDataFlags_x use (
      GATD_INCLUDE_PROCESS_EXE_NAME => 1,
      GATD_INCLUDE_LIBRARY_APPS => 2,
      GATD_INCLUDE_SWC => 4,
      GATD_INCLUDE_CLASS_NAME => 8,
      GATD_INCLUDE_APPLICATION_NAME => 16
   );
   for GetAppTrackerDataFlags_x'Size use 32;
   subtype GetAppTrackerDataFlags is GetAppTrackerDataFlags_x;
   type ApplicationProcessSummary_x is record
      PartitionIdPrimaryApplication : GUID;
      ApplicationIdPrimaryApplication : GUID;
      ApplicationInstanceId : GUID;
      ProcessId : DWORD;
      type_x : COMPLUS_APPTYPE;
      ProcessExeName : LPWSTR;
      IsService : BOOL;
      IsPaused : BOOL;
      IsRecycled : BOOL;
   end record;
   pragma Convention (C_Pass_By_Copy,ApplicationProcessSummary_x);
   for ApplicationProcessSummary_x use record
      PartitionIdPrimaryApplication at 0 range 0..127;
      ApplicationIdPrimaryApplication at 0 range 128..255;
      ApplicationInstanceId at 0 range 256..383;
      ProcessId at 0 range 384..415;
      type_x at 0 range 416..447;
      ProcessExeName at 0 range 448..511;
      IsService at 0 range 512..543;
      IsPaused at 0 range 544..575;
      IsRecycled at 0 range 576..607;
   end record;
   for ApplicationProcessSummary_x'Size use 640;
   for ApplicationProcessSummary_x'Alignment use 8;
   subtype ApplicationProcessSummary is ApplicationProcessSummary_x;
   type ApplicationProcessStatistics_x is record
      NumCallsOutstanding : ULONG;
      NumTrackedComponents : ULONG;
      NumComponentInstances : ULONG;
      AvgCallsPerSecond : ULONG;
      Reserved1 : ULONG;
      Reserved2 : ULONG;
      Reserved3 : ULONG;
      Reserved4 : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,ApplicationProcessStatistics_x);
   for ApplicationProcessStatistics_x use record
      NumCallsOutstanding at 0 range 0..31;
      NumTrackedComponents at 0 range 32..63;
      NumComponentInstances at 0 range 64..95;
      AvgCallsPerSecond at 0 range 96..127;
      Reserved1 at 0 range 128..159;
      Reserved2 at 0 range 160..191;
      Reserved3 at 0 range 192..223;
      Reserved4 at 0 range 224..255;
   end record;
   for ApplicationProcessStatistics_x'Size use 256;
   for ApplicationProcessStatistics_x'Alignment use 4;
   subtype ApplicationProcessStatistics is ApplicationProcessStatistics_x;
   type ApplicationProcessRecycleInfo_x is record
      IsRecyclable : BOOL;
      IsRecycled : BOOL;
      TimeRecycled : FILETIME;
      TimeToTerminate : FILETIME;
      RecycleReasonCode : Interfaces.C.Long;
      IsPendingRecycle : BOOL;
      HasAutomaticLifetimeRecycling : BOOL;
      TimeForAutomaticRecycling : FILETIME;
      MemoryLimitInKB : ULONG;
      MemoryUsageInKBLastCheck : ULONG;
      ActivationLimit : ULONG;
      NumActivationsLastReported : ULONG;
      CallLimit : ULONG;
      NumCallsLastReported : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,ApplicationProcessRecycleInfo_x);
   for ApplicationProcessRecycleInfo_x use record
      IsRecyclable at 0 range 0..31;
      IsRecycled at 0 range 32..63;
      TimeRecycled at 0 range 64..127;
      TimeToTerminate at 0 range 128..191;
      RecycleReasonCode at 0 range 192..223;
      IsPendingRecycle at 0 range 224..255;
      HasAutomaticLifetimeRecycling at 0 range 256..287;
      TimeForAutomaticRecycling at 0 range 288..351;
      MemoryLimitInKB at 0 range 352..383;
      MemoryUsageInKBLastCheck at 0 range 384..415;
      ActivationLimit at 0 range 416..447;
      NumActivationsLastReported at 0 range 448..479;
      CallLimit at 0 range 480..511;
      NumCallsLastReported at 0 range 512..543;
   end record;
   for ApplicationProcessRecycleInfo_x'Size use 544;
   for ApplicationProcessRecycleInfo_x'Alignment use 4;
   subtype ApplicationProcessRecycleInfo is ApplicationProcessRecycleInfo_x;
   type ApplicationSummary_x is record
      ApplicationInstanceId : GUID;
      PartitionId : GUID;
      ApplicationId : GUID;
      type_x : COMPLUS_APPTYPE;
      ApplicationName : LPWSTR;
      NumTrackedComponents : ULONG;
      NumComponentInstances : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,ApplicationSummary_x);
   for ApplicationSummary_x use record
      ApplicationInstanceId at 0 range 0..127;
      PartitionId at 0 range 128..255;
      ApplicationId at 0 range 256..383;
      type_x at 0 range 384..415;
      ApplicationName at 0 range 448..511;
      NumTrackedComponents at 0 range 512..543;
      NumComponentInstances at 0 range 544..575;
   end record;
   for ApplicationSummary_x'Size use 576;
   for ApplicationSummary_x'Alignment use 8;
   subtype ApplicationSummary is ApplicationSummary_x;
   type ComponentSummary_x is record
      ApplicationInstanceId : GUID;
      PartitionId : GUID;
      ApplicationId : GUID;
      Clsid_x : CLSID;
      ClassName : LPWSTR;
      ApplicationName : LPWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,ComponentSummary_x);
   for ComponentSummary_x use record
      ApplicationInstanceId at 0 range 0..127;
      PartitionId at 0 range 128..255;
      ApplicationId at 0 range 256..383;
      Clsid_x at 0 range 384..511;
      ClassName at 0 range 512..575;
      ApplicationName at 0 range 576..639;
   end record;
   for ComponentSummary_x'Size use 640;
   for ComponentSummary_x'Alignment use 8;
   subtype ComponentSummary is ComponentSummary_x;
   type ComponentStatistics_x is record
      NumInstances : ULONG;
      NumBoundReferences : ULONG;
      NumPooledObjects : ULONG;
      NumObjectsInCall : ULONG;
      AvgResponseTimeInMs : ULONG;
      NumCallsCompletedRecent : ULONG;
      NumCallsFailedRecent : ULONG;
      NumCallsCompletedTotal : ULONG;
      NumCallsFailedTotal : ULONG;
      Reserved1 : ULONG;
      Reserved2 : ULONG;
      Reserved3 : ULONG;
      Reserved4 : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,ComponentStatistics_x);
   for ComponentStatistics_x use record
      NumInstances at 0 range 0..31;
      NumBoundReferences at 0 range 32..63;
      NumPooledObjects at 0 range 64..95;
      NumObjectsInCall at 0 range 96..127;
      AvgResponseTimeInMs at 0 range 128..159;
      NumCallsCompletedRecent at 0 range 160..191;
      NumCallsFailedRecent at 0 range 192..223;
      NumCallsCompletedTotal at 0 range 224..255;
      NumCallsFailedTotal at 0 range 256..287;
      Reserved1 at 0 range 288..319;
      Reserved2 at 0 range 320..351;
      Reserved3 at 0 range 352..383;
      Reserved4 at 0 range 384..415;
   end record;
   for ComponentStatistics_x'Size use 416;
   for ComponentStatistics_x'Alignment use 4;
   subtype ComponentStatistics is ComponentStatistics_x;
   type ComponentHangMonitorInfo_x is record
      IsMonitored : BOOL;
      TerminateOnHang : BOOL;
      AvgCallThresholdInMs : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,ComponentHangMonitorInfo_x);
   for ComponentHangMonitorInfo_x use record
      IsMonitored at 0 range 0..31;
      TerminateOnHang at 0 range 32..63;
      AvgCallThresholdInMs at 0 range 64..95;
   end record;
   for ComponentHangMonitorInfo_x'Size use 96;
   for ComponentHangMonitorInfo_x'Alignment use 4;
   subtype ComponentHangMonitorInfo is ComponentHangMonitorInfo_x;
   IID_IGetAppTrackerData : aliased constant IID;
   pragma import (C,IID_IGetAppTrackerData,"IID_IGetAppTrackerData");
   type ApplicationProcessSummary_Ptr is access all ApplicationProcessSummary; -- Auto Generated Dependancy
   type ApplicationSummary_Ptr is access all ApplicationSummary; -- Auto Generated Dependancy
   type ComponentSummary_Ptr is access all ComponentSummary; -- Auto Generated Dependancy
   type IGetAppTrackerData is limited interface and IUnknown;
      function GetApplicationProcesses(
         This : access IGetAppTrackerData;
         PartitionId : access constant GUID;
         ApplicationId : access constant GUID;
         Flags : DWORD;
         NumApplicationProcesses : access ULONG;
         ApplicationProcesses : access ApplicationProcessSummary_Ptr
      ) return HRESULT is abstract;
      function GetApplicationProcessDetails(
         This : access IGetAppTrackerData;
         ApplicationInstanceId : access constant GUID;
         ProcessId : DWORD;
         Flags : DWORD;
         Summary : access ApplicationProcessSummary;
         Statistics : access ApplicationProcessStatistics;
         RecycleInfo : access ApplicationProcessRecycleInfo;
         AnyComponentsHangMonitored : access BOOL
      ) return HRESULT is abstract;
      function GetApplicationsInProcess(
         This : access IGetAppTrackerData;
         ApplicationInstanceId : access constant GUID;
         ProcessId : DWORD;
         PartitionId : access constant GUID;
         Flags : DWORD;
         NumApplicationsInProcess : access ULONG;
         Applications : access ApplicationSummary_Ptr
      ) return HRESULT is abstract;
      function GetComponentsInProcess(
         This : access IGetAppTrackerData;
         ApplicationInstanceId : access constant GUID;
         ProcessId : DWORD;
         PartitionId : access constant GUID;
         ApplicationId : access constant GUID;
         Flags : DWORD;
         NumComponentsInProcess : access ULONG;
         Components : access ComponentSummary_Ptr
      ) return HRESULT is abstract;
      function GetComponentDetails(
         This : access IGetAppTrackerData;
         ApplicationInstanceId : access constant GUID;
         ProcessId : DWORD;
         Clsid_x : access constant IID;
         Flags : DWORD;
         Summary : access ComponentSummary;
         Statistics : access ComponentStatistics;
         HangMonitorInfo : access ComponentHangMonitorInfo
      ) return HRESULT is abstract;
      function GetTrackerDataAsCollectionObject(
         This : access IGetAppTrackerData;
         TopLevelCollection : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function GetSuggestedPollingInterval(
         This : access IGetAppTrackerData;
         PollingIntervalInSeconds : access DWORD
      ) return HRESULT is abstract;
   type IGetAppTrackerData_Ptr is access all IGetAppTrackerData'Class;
   function IGetAppTrackerData_RemoteGetApplicationProcessDetails_Proxy(
      This : access IGetAppTrackerData'Class;
      ApplicationInstanceId : access constant GUID;
      ProcessId : DWORD;
      Flags : DWORD;
      Summary : access ApplicationProcessSummary;
      Statistics : access ApplicationProcessStatistics;
      RecycleInfo : access ApplicationProcessRecycleInfo;
      AnyComponentsHangMonitored : access BOOL
   ) return HRESULT;
   pragma import (Cpp,IGetAppTrackerData_RemoteGetApplicationProcessDetails_Proxy,"IGetAppTrackerData_RemoteGetApplicationProcessDetails_Proxy");
   procedure IGetAppTrackerData_RemoteGetApplicationProcessDetails_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IGetAppTrackerData_RemoteGetApplicationProcessDetails_Stub,"IGetAppTrackerData_RemoteGetApplicationProcessDetails_Stub");
   function IGetAppTrackerData_RemoteGetComponentDetails_Proxy(
      This : access IGetAppTrackerData'Class;
      ApplicationInstanceId : access constant GUID;
      ProcessId : DWORD;
      Clsid_x : access constant IID;
      Flags : DWORD;
      Summary : access ComponentSummary;
      Statistics : access ComponentStatistics;
      HangMonitorInfo : access ComponentHangMonitorInfo
   ) return HRESULT;
   pragma import (Cpp,IGetAppTrackerData_RemoteGetComponentDetails_Proxy,"IGetAppTrackerData_RemoteGetComponentDetails_Proxy");
   procedure IGetAppTrackerData_RemoteGetComponentDetails_Stub(
      This : access IRpcStubBuffer'Class;
      pRpcChannelBuffer : access IRpcChannelBuffer'Class;
      pRpcMessage : PRPC_MESSAGE;
      pdwStubPhase : access DWORD
   );
   pragma import (Cpp,IGetAppTrackerData_RemoteGetComponentDetails_Stub,"IGetAppTrackerData_RemoteGetComponentDetails_Stub");
   subtype RESTYPID is DWORD_PTR;
   subtype RESID is DWORD_PTR;
   subtype SRESID is LPOLESTR;
   subtype constSRESID is LPCOLESTR;
   subtype RESOURCERATING is DWORD;
   subtype TIMEINSECS is Interfaces.C.Long;
   subtype INSTID is DWORD_PTR;
   subtype TRANSID is DWORD_PTR;
   IID_IDispenserManager : aliased constant IID;
   pragma import (C,IID_IDispenserManager,"IID_IDispenserManager");
   type IHolder_Ptr is access all IHolder; -- Auto Generated Dependancy
   type IDispenserManager is limited interface and IUnknown;
      function RegisterDispenser(
         This : access IDispenserManager;
         MIDL_IDispenserManager0000 : access IDispenserDriver'Class;
         szDispenserName : LPCOLESTR;
         MIDL_IDispenserManager0001 : access IHolder_Ptr
      ) return HRESULT is abstract;
      function GetContext(
         This : access IDispenserManager;
         MIDL_IDispenserManager0002 : access INSTID;
         MIDL_IDispenserManager0003 : access TRANSID
      ) return HRESULT is abstract;
   type IDispenserManager_Ptr is access all IDispenserManager'Class;
   IID_IHolder : aliased constant IID;
   pragma import (C,IID_IHolder,"IID_IHolder");
   type IHolder is limited interface and IUnknown;
      function AllocResource(
         This : access IHolder;
         MIDL_IHolder0000 : RESTYPID;
         MIDL_IHolder0001 : access RESID
      ) return HRESULT is abstract;
      function FreeResource_x(
         This : access IHolder;
         MIDL_IHolder0002 : RESID
      ) return HRESULT is abstract;
      function TrackResource(
         This : access IHolder;
         MIDL_IHolder0003 : RESID
      ) return HRESULT is abstract;
      function TrackResourceS(
         This : access IHolder;
         MIDL_IHolder0004 : constSRESID
      ) return HRESULT is abstract;
      function UntrackResource(
         This : access IHolder;
         MIDL_IHolder0005 : RESID;
         MIDL_IHolder0006 : BOOL
      ) return HRESULT is abstract;
      function UntrackResourceS(
         This : access IHolder;
         MIDL_IHolder0007 : constSRESID;
         MIDL_IHolder0008 : BOOL
      ) return HRESULT is abstract;
      function Close(This : access IHolder) return HRESULT is abstract;
      function RequestDestroyResource(
         This : access IHolder;
         MIDL_IHolder0009 : RESID
      ) return HRESULT is abstract;
   IID_IDispenserDriver : aliased constant IID;
   pragma import (C,IID_IDispenserDriver,"IID_IDispenserDriver");
   type IDispenserDriver is limited interface and IUnknown;
      function CreateResource(
         This : access IDispenserDriver;
         ResTypId_x : RESTYPID;
         pResId : access RESID;
         pSecsFreeBeforeDestroy : access TIMEINSECS
      ) return HRESULT is abstract;
      function RateResource(
         This : access IDispenserDriver;
         ResTypId_x : RESTYPID;
         ResId_x : RESID;
         fRequiresTransactionEnlistment : BOOL;
         pRating : access RESOURCERATING
      ) return HRESULT is abstract;
      function EnlistResource(
         This : access IDispenserDriver;
         ResId_x : RESID;
         TransId_x : TRANSID
      ) return HRESULT is abstract;
      function ResetResource(
         This : access IDispenserDriver;
         ResId_x : RESID
      ) return HRESULT is abstract;
      function DestroyResource(
         This : access IDispenserDriver;
         ResId_x : RESID
      ) return HRESULT is abstract;
      function DestroyResourceS(
         This : access IDispenserDriver;
         ResId_x : constSRESID
      ) return HRESULT is abstract;
   type IDispenserDriver_Ptr is access all IDispenserDriver'Class;
   IID_IEnterActivityWithNoLock : aliased constant GUID;
   pragma import (C,IID_IEnterActivityWithNoLock,"IID_IEnterActivityWithNoLock");
   IID_ITransactionProxy : aliased constant IID;
   pragma import (C,IID_ITransactionProxy,"IID_ITransactionProxy");
   type ITransactionProxy is limited interface and IUnknown;
      function Commit(
         This : access ITransactionProxy;
         guid_x : GUID
      ) return HRESULT is abstract;
      function abort_x_x(This : access ITransactionProxy) return HRESULT is abstract;
      function Promote(
         This : access ITransactionProxy;
         pTransaction : access ITransaction_Ptr
      ) return HRESULT is abstract;
      function CreateVoter(
         This : access ITransactionProxy;
         pTxAsync : access ITransactionVoterNotifyAsync2'Class;
         ppBallot : access ITransactionVoterBallotAsync2_Ptr
      ) return HRESULT is abstract;
      function GetIsolationLevel(
         This : access ITransactionProxy;
         MIDL_ITransactionProxy0000 : access ISOLEVEL
      ) return HRESULT is abstract;
      function GetIdentifier(
         This : access ITransactionProxy;
         pbstrIdentifier : access GUID
      ) return HRESULT is abstract;
      function IsReusable(
         This : access ITransactionProxy;
         pfIsReusable : access BOOL
      ) return HRESULT is abstract;
   type ITransactionProxy_Ptr is access all ITransactionProxy'Class;
   IID_IContextSecurityPerimeter : aliased constant IID;
   pragma import (C,IID_IContextSecurityPerimeter,"IID_IContextSecurityPerimeter");
   type IContextSecurityPerimeter is limited interface and IUnknown;
      function GetPerimeterFlag(
         This : access IContextSecurityPerimeter;
         pFlag : access BOOL
      ) return HRESULT is abstract;
      function SetPerimeterFlag(
         This : access IContextSecurityPerimeter;
         fFlag : BOOL
      ) return HRESULT is abstract;
   type IContextSecurityPerimeter_Ptr is access all IContextSecurityPerimeter'Class;
   IID_ITxProxyHolder : aliased constant IID;
   pragma import (C,IID_ITxProxyHolder,"IID_ITxProxyHolder");
   type ITxProxyHolder is limited interface and IUnknown;
      procedure GetIdentifier(
         This : access ITxProxyHolder;
         pGuidLtx : access GUID
      ) is abstract;
   type ITxProxyHolder_Ptr is access all ITxProxyHolder'Class;
   IID_IObjectContext : aliased constant IID;
   pragma import (C,IID_IObjectContext,"IID_IObjectContext");
   type IObjectContext is limited interface and IUnknown;
      function CreateInstance(
         This : access IObjectContext;
         rclsid : access constant IID;
         riid : access constant IID;
         ppv : access LPVOID
      ) return HRESULT is abstract;
      function SetComplete(This : access IObjectContext) return HRESULT is abstract;
      function SetAbort(This : access IObjectContext) return HRESULT is abstract;
      function EnableCommit(This : access IObjectContext) return HRESULT is abstract;
      function DisableCommit(This : access IObjectContext) return HRESULT is abstract;
      function IsInTransaction(This : access IObjectContext) return BOOL is abstract;
      function IsSecurityEnabled(This : access IObjectContext) return BOOL is abstract;
      function IsCallerInRole(
         This : access IObjectContext;
         bstrRole : BSTR;
         pfIsInRole : access BOOL
      ) return HRESULT is abstract;
   type IObjectContext_Ptr is access all IObjectContext'Class;
   IID_IObjectControl : aliased constant IID;
   pragma import (C,IID_IObjectControl,"IID_IObjectControl");
   type IObjectControl is limited interface and IUnknown;
      function Activate(This : access IObjectControl) return HRESULT is abstract;
      procedure Deactivate(This : access IObjectControl) is abstract;
      function CanBePooled(This : access IObjectControl) return BOOL is abstract;
   type IObjectControl_Ptr is access all IObjectControl'Class;
   IID_IEnumNames : aliased constant IID;
   pragma import (C,IID_IEnumNames,"IID_IEnumNames");
   type IEnumNames_Ptr is access all IEnumNames; -- Auto Generated Dependancy
   type IEnumNames is limited interface and IUnknown;
      function Next(
         This : access IEnumNames;
         celt : Interfaces.C.unsigned_long;
         rgname : access BSTR;
         pceltFetched : access Interfaces.C.unsigned_long
      ) return HRESULT is abstract;
      function Skip(
         This : access IEnumNames;
         celt : Interfaces.C.unsigned_long
      ) return HRESULT is abstract;
      function Reset(This : access IEnumNames) return HRESULT is abstract;
      function Clone(
         This : access IEnumNames;
         ppenum : access IEnumNames_Ptr
      ) return HRESULT is abstract;
   IID_ISecurityProperty : aliased constant IID;
   pragma import (C,IID_ISecurityProperty,"IID_ISecurityProperty");
   type ISecurityProperty is limited interface and IUnknown;
      function GetDirectCreatorSID(
         This : access ISecurityProperty;
         pSID_x : access PSID
      ) return HRESULT is abstract;
      function GetOriginalCreatorSID(
         This : access ISecurityProperty;
         pSID_x : access PSID
      ) return HRESULT is abstract;
      function GetDirectCallerSID(
         This : access ISecurityProperty;
         pSID_x : access PSID
      ) return HRESULT is abstract;
      function GetOriginalCallerSID(
         This : access ISecurityProperty;
         pSID_x : access PSID
      ) return HRESULT is abstract;
      function ReleaseSID(
         This : access ISecurityProperty;
         pSID_x : PSID
      ) return HRESULT is abstract;
   type ISecurityProperty_Ptr is access all ISecurityProperty'Class;
   IID_ObjectControl : aliased constant IID;
   pragma import (C,IID_ObjectControl,"IID_ObjectControl");
   type ObjectControl is limited interface and IUnknown;
      function Activate(This : access ObjectControl) return HRESULT is abstract;
      function Deactivate(This : access ObjectControl) return HRESULT is abstract;
      function CanBePooled(
         This : access ObjectControl;
         pbPoolable : access VARIANT_BOOL
      ) return HRESULT is abstract;
   type ObjectControl_Ptr is access all ObjectControl'Class;
   IID_ISharedProperty : aliased constant IID;
   pragma import (C,IID_ISharedProperty,"IID_ISharedProperty");
   type ISharedProperty is limited interface and IDispatch;
      function get_Value(
         This : access ISharedProperty;
         pVal : access VARIANT
      ) return HRESULT is abstract;
      function put_Value(
         This : access ISharedProperty;
         val : VARIANT
      ) return HRESULT is abstract;
   type ISharedProperty_Ptr is access all ISharedProperty'Class;
   IID_ISharedPropertyGroup : aliased constant IID;
   pragma import (C,IID_ISharedPropertyGroup,"IID_ISharedPropertyGroup");
   type ISharedPropertyGroup is limited interface and IDispatch;
      function CreatePropertyByPosition(
         This : access ISharedPropertyGroup;
         Index : Interfaces.C.Int;
         fExists : access VARIANT_BOOL;
         ppProp : access ISharedProperty_Ptr
      ) return HRESULT is abstract;
      function get_PropertyByPosition(
         This : access ISharedPropertyGroup;
         Index : Interfaces.C.Int;
         ppProperty : access ISharedProperty_Ptr
      ) return HRESULT is abstract;
      function CreateProperty(
         This : access ISharedPropertyGroup;
         Name : BSTR;
         fExists : access VARIANT_BOOL;
         ppProp : access ISharedProperty_Ptr
      ) return HRESULT is abstract;
      function get_Property(
         This : access ISharedPropertyGroup;
         Name : BSTR;
         ppProperty : access ISharedProperty_Ptr
      ) return HRESULT is abstract;
   type ISharedPropertyGroup_Ptr is access all ISharedPropertyGroup'Class;
   IID_ISharedPropertyGroupManager : aliased constant IID;
   pragma import (C,IID_ISharedPropertyGroupManager,"IID_ISharedPropertyGroupManager");
   type ISharedPropertyGroupManager is limited interface and IDispatch;
      function CreatePropertyGroup(
         This : access ISharedPropertyGroupManager;
         Name : BSTR;
         dwIsoMode : access LONG;
         dwRelMode : access LONG;
         fExists : access VARIANT_BOOL;
         ppGroup : access ISharedPropertyGroup_Ptr
      ) return HRESULT is abstract;
      function get_Group(
         This : access ISharedPropertyGroupManager;
         Name : BSTR;
         ppGroup : access ISharedPropertyGroup_Ptr
      ) return HRESULT is abstract;
      function get_NewEnum(
         This : access ISharedPropertyGroupManager;
         retval : access IUnknown_Ptr
      ) return HRESULT is abstract;
   type ISharedPropertyGroupManager_Ptr is access all ISharedPropertyGroupManager'Class;
   IID_IObjectConstruct : aliased constant IID;
   pragma import (C,IID_IObjectConstruct,"IID_IObjectConstruct");
   type IObjectConstruct is limited interface and IUnknown;
      function Construct(
         This : access IObjectConstruct;
         pCtorObj : access IDispatch'Class
      ) return HRESULT is abstract;
   type IObjectConstruct_Ptr is access all IObjectConstruct'Class;
   IID_IObjectConstructString : aliased constant IID;
   pragma import (C,IID_IObjectConstructString,"IID_IObjectConstructString");
   type IObjectConstructString is limited interface and IDispatch;
      function get_ConstructString(
         This : access IObjectConstructString;
         pVal : access BSTR
      ) return HRESULT is abstract;
   type IObjectConstructString_Ptr is access all IObjectConstructString'Class;
   IID_IObjectContextActivity : aliased constant IID;
   pragma import (C,IID_IObjectContextActivity,"IID_IObjectContextActivity");
   type IObjectContextActivity is limited interface and IUnknown;
      function GetActivityId(
         This : access IObjectContextActivity;
         pGUID : access GUID
      ) return HRESULT is abstract;
   type IObjectContextActivity_Ptr is access all IObjectContextActivity'Class;
   IID_IObjectContextInfo : aliased constant IID;
   pragma import (C,IID_IObjectContextInfo,"IID_IObjectContextInfo");
   type IObjectContextInfo is limited interface and IUnknown;
      function IsInTransaction(This : access IObjectContextInfo) return BOOL is abstract;
      function GetTransaction(
         This : access IObjectContextInfo;
         pptrans : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function GetTransactionId(
         This : access IObjectContextInfo;
         pGuid : access GUID
      ) return HRESULT is abstract;
      function GetActivityId(
         This : access IObjectContextInfo;
         pGUID : access GUID
      ) return HRESULT is abstract;
      function GetContextId(
         This : access IObjectContextInfo;
         pGuid : access GUID
      ) return HRESULT is abstract;
   type IObjectContextInfo_Ptr is access all IObjectContextInfo'Class;
   IID_IObjectContextInfo2 : aliased constant IID;
   pragma import (C,IID_IObjectContextInfo2,"IID_IObjectContextInfo2");
   type IObjectContextInfo2 is limited interface and IObjectContextInfo;
      function GetPartitionId(
         This : access IObjectContextInfo2;
         pGuid : access GUID
      ) return HRESULT is abstract;
      function GetApplicationId(
         This : access IObjectContextInfo2;
         pGuid : access GUID
      ) return HRESULT is abstract;
      function GetApplicationInstanceId(
         This : access IObjectContextInfo2;
         pGuid : access GUID
      ) return HRESULT is abstract;
   type IObjectContextInfo2_Ptr is access all IObjectContextInfo2'Class;
   IID_ITransactionStatus : aliased constant IID;
   pragma import (C,IID_ITransactionStatus,"IID_ITransactionStatus");
   type ITransactionStatus is limited interface and IUnknown;
      function SetTransactionStatus(
         This : access ITransactionStatus;
         hrStatus : HRESULT
      ) return HRESULT is abstract;
      function GetTransactionStatus(
         This : access ITransactionStatus;
         pHrStatus : access HRESULT
      ) return HRESULT is abstract;
   type ITransactionStatus_Ptr is access all ITransactionStatus'Class;
   IID_IObjectContextTip : aliased constant IID;
   pragma import (C,IID_IObjectContextTip,"IID_IObjectContextTip");
   type IObjectContextTip is limited interface and IUnknown;
      function GetTipUrl(
         This : access IObjectContextTip;
         pTipUrl : access BSTR
      ) return HRESULT is abstract;
   type IObjectContextTip_Ptr is access all IObjectContextTip'Class;
   IID_IPlaybackControl : aliased constant IID;
   pragma import (C,IID_IPlaybackControl,"IID_IPlaybackControl");
   type IPlaybackControl is limited interface and IUnknown;
      function FinalClientRetry(This : access IPlaybackControl) return HRESULT is abstract;
      function FinalServerRetry(This : access IPlaybackControl) return HRESULT is abstract;
   type IPlaybackControl_Ptr is access all IPlaybackControl'Class;
   IID_IGetContextProperties : aliased constant IID;
   pragma import (C,IID_IGetContextProperties,"IID_IGetContextProperties");
   type IGetContextProperties is limited interface and IUnknown;
      function Count(
         This : access IGetContextProperties;
         plCount : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function GetProperty(
         This : access IGetContextProperties;
         name : BSTR;
         pProperty : access VARIANT
      ) return HRESULT is abstract;
      function EnumNames(
         This : access IGetContextProperties;
         ppenum : access IEnumNames_Ptr
      ) return HRESULT is abstract;
   type IGetContextProperties_Ptr is access all IGetContextProperties'Class;
   type tagTransactionVote is (
      TxCommit,
      TxAbort
   );
   for tagTransactionVote use (
      TxCommit => 0,
      TxAbort => 1
   );
   for tagTransactionVote'Size use 32;
   subtype TransactionVote is tagTransactionVote;
   IID_IContextState : aliased constant IID;
   pragma import (C,IID_IContextState,"IID_IContextState");
   type IContextState is limited interface and IUnknown;
      function SetDeactivateOnReturn(
         This : access IContextState;
         bDeactivate : VARIANT_BOOL
      ) return HRESULT is abstract;
      function GetDeactivateOnReturn(
         This : access IContextState;
         pbDeactivate : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function SetMyTransactionVote(
         This : access IContextState;
         txVote : TransactionVote
      ) return HRESULT is abstract;
      function GetMyTransactionVote(
         This : access IContextState;
         ptxVote : access TransactionVote
      ) return HRESULT is abstract;
   type IContextState_Ptr is access all IContextState'Class;
   IID_IPoolManager : aliased constant IID;
   pragma import (C,IID_IPoolManager,"IID_IPoolManager");
   type IPoolManager is limited interface and IDispatch;
      function ShutdownPool(
         This : access IPoolManager;
         CLSIDOrProgID : BSTR
      ) return HRESULT is abstract;
   type IPoolManager_Ptr is access all IPoolManager'Class;
   IID_ISelectCOMLBServer : aliased constant IID;
   pragma import (C,IID_ISelectCOMLBServer,"IID_ISelectCOMLBServer");
   type ISelectCOMLBServer is limited interface and IUnknown;
      function Init(This : access ISelectCOMLBServer) return HRESULT is abstract;
      function GetLBServer(
         This : access ISelectCOMLBServer;
         pUnk : access IUnknown'Class
      ) return HRESULT is abstract;
   type ISelectCOMLBServer_Ptr is access all ISelectCOMLBServer'Class;
   IID_ICOMLBArguments : aliased constant IID;
   pragma import (C,IID_ICOMLBArguments,"IID_ICOMLBArguments");
   type ICOMLBArguments is limited interface and IUnknown;
      function GetCLSID(
         This : access ICOMLBArguments;
         pCLSID : access CLSID
      ) return HRESULT is abstract;
      function SetCLSID(
         This : access ICOMLBArguments;
         pCLSID : access CLSID
      ) return HRESULT is abstract;
      function GetMachineName(
         This : access ICOMLBArguments;
         cchSvr : ULONG;
         szServerName : WCHAR
      ) return HRESULT is abstract;
      function SetMachineName(
         This : access ICOMLBArguments;
         cchSvr : ULONG;
         szServerName : WCHAR
      ) return HRESULT is abstract;
   type ICOMLBArguments_Ptr is access all ICOMLBArguments'Class;
   function CoCreateActivity(
      pIUnknown : access IUnknown'Class;
      riid : access constant IID;
      ppObj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CoCreateActivity,"CoCreateActivity");
   function CoEnterServiceDomain(
      pConfigObject : access IUnknown'Class
   ) return HRESULT;
   pragma import (Cpp,CoEnterServiceDomain,"CoEnterServiceDomain");
   procedure CoLeaveServiceDomain(
      pUnkStatus : access IUnknown'Class
   );
   pragma import (Cpp,CoLeaveServiceDomain,"CoLeaveServiceDomain");
   function GetManagedExtensions(
      dwExts : access DWORD
   ) return HRESULT;
   pragma import (Cpp,GetManagedExtensions,"GetManagedExtensions");
   procedure SafeRef(
      rid : access constant IID;
      pUnk : access IUnknown'Class
   );
   pragma import (Cpp,SafeRef,"SafeRef");
   function RecycleSurrogate(
      lReasonCode : Interfaces.C.Long
   ) return HRESULT;
   pragma import (Cpp,RecycleSurrogate,"RecycleSurrogate");
   IID_ICrmLogControl : aliased constant IID;
   pragma import (C,IID_ICrmLogControl,"IID_ICrmLogControl");
   type ICrmLogControl is limited interface and IUnknown;
      function get_TransactionUOW(
         This : access ICrmLogControl;
         pVal : access BSTR
      ) return HRESULT is abstract;
      function RegisterCompensator(
         This : access ICrmLogControl;
         lpcwstrProgIdCompensator : LPCWSTR;
         lpcwstrDescription : LPCWSTR;
         lCrmRegFlags : LONG
      ) return HRESULT is abstract;
      function WriteLogRecordVariants(
         This : access ICrmLogControl;
         pLogRecord : access VARIANT
      ) return HRESULT is abstract;
      function ForceLog(This : access ICrmLogControl) return HRESULT is abstract;
      function ForgetLogRecord(This : access ICrmLogControl) return HRESULT is abstract;
      function ForceTransactionToAbort(This : access ICrmLogControl) return HRESULT is abstract;
      function WriteLogRecord(
         This : access ICrmLogControl;
         rgBlob : BLOB;
         cBlob : ULONG
      ) return HRESULT is abstract;
   type ICrmLogControl_Ptr is access all ICrmLogControl'Class;
   IID_ICrmCompensatorVariants : aliased constant IID;
   pragma import (C,IID_ICrmCompensatorVariants,"IID_ICrmCompensatorVariants");
   type ICrmCompensatorVariants is limited interface and IUnknown;
      function SetLogControlVariants(
         This : access ICrmCompensatorVariants;
         pLogControl : access ICrmLogControl'Class
      ) return HRESULT is abstract;
      function BeginPrepareVariants(This : access ICrmCompensatorVariants) return HRESULT is abstract;
      function PrepareRecordVariants(
         This : access ICrmCompensatorVariants;
         pLogRecord : access VARIANT;
         pbForget : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function EndPrepareVariants(
         This : access ICrmCompensatorVariants;
         pbOkToPrepare : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function BeginCommitVariants(
         This : access ICrmCompensatorVariants;
         bRecovery : VARIANT_BOOL
      ) return HRESULT is abstract;
      function CommitRecordVariants(
         This : access ICrmCompensatorVariants;
         pLogRecord : access VARIANT;
         pbForget : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function EndCommitVariants(This : access ICrmCompensatorVariants) return HRESULT is abstract;
      function BeginAbortVariants(
         This : access ICrmCompensatorVariants;
         bRecovery : VARIANT_BOOL
      ) return HRESULT is abstract;
      function AbortRecordVariants(
         This : access ICrmCompensatorVariants;
         pLogRecord : access VARIANT;
         pbForget : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function EndAbortVariants(This : access ICrmCompensatorVariants) return HRESULT is abstract;
   type ICrmCompensatorVariants_Ptr is access all ICrmCompensatorVariants'Class;
   type tagCrmLogRecordRead is record
      dwCrmFlags : DWORD;
      dwSequenceNumber : DWORD;
      blobUserData : BLOB;
   end record;
   pragma Convention (C_Pass_By_Copy,tagCrmLogRecordRead);
   for tagCrmLogRecordRead use record
      dwCrmFlags at 0 range 0..31;
      dwSequenceNumber at 0 range 32..63;
      blobUserData at 0 range 64..191;
   end record;
   for tagCrmLogRecordRead'Size use 192;
   for tagCrmLogRecordRead'Alignment use 8;
   subtype CrmLogRecordRead is tagCrmLogRecordRead;
   IID_ICrmCompensator : aliased constant IID;
   pragma import (C,IID_ICrmCompensator,"IID_ICrmCompensator");
   type ICrmCompensator is limited interface and IUnknown;
      function SetLogControl(
         This : access ICrmCompensator;
         pLogControl : access ICrmLogControl'Class
      ) return HRESULT is abstract;
      function BeginPrepare(This : access ICrmCompensator) return HRESULT is abstract;
      function PrepareRecord(
         This : access ICrmCompensator;
         crmLogRec : CrmLogRecordRead;
         pfForget : access BOOL
      ) return HRESULT is abstract;
      function EndPrepare(
         This : access ICrmCompensator;
         pfOkToPrepare : access BOOL
      ) return HRESULT is abstract;
      function BeginCommit(
         This : access ICrmCompensator;
         fRecovery : BOOL
      ) return HRESULT is abstract;
      function CommitRecord(
         This : access ICrmCompensator;
         crmLogRec : CrmLogRecordRead;
         pfForget : access BOOL
      ) return HRESULT is abstract;
      function EndCommit(This : access ICrmCompensator) return HRESULT is abstract;
      function BeginAbort(
         This : access ICrmCompensator;
         fRecovery : BOOL
      ) return HRESULT is abstract;
      function AbortRecord(
         This : access ICrmCompensator;
         crmLogRec : CrmLogRecordRead;
         pfForget : access BOOL
      ) return HRESULT is abstract;
      function EndAbort(This : access ICrmCompensator) return HRESULT is abstract;
   type ICrmCompensator_Ptr is access all ICrmCompensator'Class;
   type tagCrmTransactionState is (
      TxState_Active,
      TxState_Committed,
      TxState_Aborted,
      TxState_Indoubt
   );
   for tagCrmTransactionState use (
      TxState_Active => 0,
      TxState_Committed => 1,
      TxState_Aborted => 2,
      TxState_Indoubt => 3
   );
   for tagCrmTransactionState'Size use 32;
   subtype CrmTransactionState is tagCrmTransactionState;
   IID_ICrmMonitorLogRecords : aliased constant IID;
   pragma import (C,IID_ICrmMonitorLogRecords,"IID_ICrmMonitorLogRecords");
   type ICrmMonitorLogRecords is limited interface and IUnknown;
      function get_Count(
         This : access ICrmMonitorLogRecords;
         pVal : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function get_TransactionState(
         This : access ICrmMonitorLogRecords;
         pVal : access CrmTransactionState
      ) return HRESULT is abstract;
      function get_StructuredRecords(
         This : access ICrmMonitorLogRecords;
         pVal : access VARIANT_BOOL
      ) return HRESULT is abstract;
      function GetLogRecord(
         This : access ICrmMonitorLogRecords;
         dwIndex : DWORD;
         pCrmLogRec : access CrmLogRecordRead
      ) return HRESULT is abstract;
      function GetLogRecordVariants(
         This : access ICrmMonitorLogRecords;
         IndexNumber : VARIANT;
         pLogRecord : LPVARIANT
      ) return HRESULT is abstract;
   type ICrmMonitorLogRecords_Ptr is access all ICrmMonitorLogRecords'Class;
   IID_ICrmMonitorClerks : aliased constant IID;
   pragma import (C,IID_ICrmMonitorClerks,"IID_ICrmMonitorClerks");
   type ICrmMonitorClerks is limited interface and IDispatch;
      function Item(
         This : access ICrmMonitorClerks;
         Index : VARIANT;
         pItem : LPVARIANT
      ) return HRESULT is abstract;
      function get_NewEnum(
         This : access ICrmMonitorClerks;
         pVal : access LPUNKNOWN
      ) return HRESULT is abstract;
      function get_Count(
         This : access ICrmMonitorClerks;
         pVal : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function ProgIdCompensator(
         This : access ICrmMonitorClerks;
         Index : VARIANT;
         pItem : LPVARIANT
      ) return HRESULT is abstract;
      function Description(
         This : access ICrmMonitorClerks;
         Index : VARIANT;
         pItem : LPVARIANT
      ) return HRESULT is abstract;
      function TransactionUOW(
         This : access ICrmMonitorClerks;
         Index : VARIANT;
         pItem : LPVARIANT
      ) return HRESULT is abstract;
      function ActivityId(
         This : access ICrmMonitorClerks;
         Index : VARIANT;
         pItem : LPVARIANT
      ) return HRESULT is abstract;
   type ICrmMonitorClerks_Ptr is access all ICrmMonitorClerks'Class;
   IID_ICrmMonitor : aliased constant IID;
   pragma import (C,IID_ICrmMonitor,"IID_ICrmMonitor");
   type ICrmMonitor is limited interface and IUnknown;
      function GetClerks(
         This : access ICrmMonitor;
         pClerks : access ICrmMonitorClerks_Ptr
      ) return HRESULT is abstract;
      function HoldClerk(
         This : access ICrmMonitor;
         Index : VARIANT;
         pItem : LPVARIANT
      ) return HRESULT is abstract;
   type ICrmMonitor_Ptr is access all ICrmMonitor'Class;
   IID_ICrmFormatLogRecords : aliased constant IID;
   pragma import (C,IID_ICrmFormatLogRecords,"IID_ICrmFormatLogRecords");
   type ICrmFormatLogRecords is limited interface and IUnknown;
      function GetColumnCount(
         This : access ICrmFormatLogRecords;
         plColumnCount : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function GetColumnHeaders(
         This : access ICrmFormatLogRecords;
         pHeaders : LPVARIANT
      ) return HRESULT is abstract;
      function GetColumn(
         This : access ICrmFormatLogRecords;
         CrmLogRec : CrmLogRecordRead;
         pFormattedLogRecord : LPVARIANT
      ) return HRESULT is abstract;
      function GetColumnVariants(
         This : access ICrmFormatLogRecords;
         LogRecord : VARIANT;
         pFormattedLogRecord : LPVARIANT
      ) return HRESULT is abstract;
   type ICrmFormatLogRecords_Ptr is access all ICrmFormatLogRecords'Class;
   type tagCSC_InheritanceConfig is (
      CSC_Inherit,
      CSC_Ignore
   );
   for tagCSC_InheritanceConfig use (
      CSC_Inherit => 0,
      CSC_Ignore => 1
   );
   for tagCSC_InheritanceConfig'Size use 32;
   subtype CSC_InheritanceConfig is tagCSC_InheritanceConfig;
   type tagCSC_ThreadPool is (
      CSC_ThreadPoolNone,
      CSC_ThreadPoolInherit,
      CSC_STAThreadPool,
      CSC_MTAThreadPool
   );
   for tagCSC_ThreadPool use (
      CSC_ThreadPoolNone => 0,
      CSC_ThreadPoolInherit => 1,
      CSC_STAThreadPool => 2,
      CSC_MTAThreadPool => 3
   );
   for tagCSC_ThreadPool'Size use 32;
   subtype CSC_ThreadPool is tagCSC_ThreadPool;
   type tagCSC_Binding is (
      CSC_NoBinding,
      CSC_BindToPoolThread
   );
   for tagCSC_Binding use (
      CSC_NoBinding => 0,
      CSC_BindToPoolThread => 1
   );
   for tagCSC_Binding'Size use 32;
   subtype CSC_Binding is tagCSC_Binding;
   type tagCSC_TransactionConfig is (
      CSC_NoTransaction,
      CSC_IfContainerIsTransactional,
      CSC_CreateTransactionIfNecessary,
      CSC_NewTransaction
   );
   for tagCSC_TransactionConfig use (
      CSC_NoTransaction => 0,
      CSC_IfContainerIsTransactional => 1,
      CSC_CreateTransactionIfNecessary => 2,
      CSC_NewTransaction => 3
   );
   for tagCSC_TransactionConfig'Size use 32;
   subtype CSC_TransactionConfig is tagCSC_TransactionConfig;
   type tagCSC_SynchronizationConfig is (
      CSC_NoSynchronization,
      CSC_IfContainerIsSynchronized,
      CSC_NewSynchronizationIfNecessary,
      CSC_NewSynchronization
   );
   for tagCSC_SynchronizationConfig use (
      CSC_NoSynchronization => 0,
      CSC_IfContainerIsSynchronized => 1,
      CSC_NewSynchronizationIfNecessary => 2,
      CSC_NewSynchronization => 3
   );
   for tagCSC_SynchronizationConfig'Size use 32;
   subtype CSC_SynchronizationConfig is tagCSC_SynchronizationConfig;
   type tagCSC_TrackerConfig is (
      CSC_DontUseTracker,
      CSC_UseTracker
   );
   for tagCSC_TrackerConfig use (
      CSC_DontUseTracker => 0,
      CSC_UseTracker => 1
   );
   for tagCSC_TrackerConfig'Size use 32;
   subtype CSC_TrackerConfig is tagCSC_TrackerConfig;
   type tagCSC_PartitionConfig is (
      CSC_NoPartition,
      CSC_InheritPartition,
      CSC_NewPartition
   );
   for tagCSC_PartitionConfig use (
      CSC_NoPartition => 0,
      CSC_InheritPartition => 1,
      CSC_NewPartition => 2
   );
   for tagCSC_PartitionConfig'Size use 32;
   subtype CSC_PartitionConfig is tagCSC_PartitionConfig;
   type tagCSC_IISIntrinsicsConfig is (
      CSC_NoIISIntrinsics,
      CSC_InheritIISIntrinsics
   );
   for tagCSC_IISIntrinsicsConfig use (
      CSC_NoIISIntrinsics => 0,
      CSC_InheritIISIntrinsics => 1
   );
   for tagCSC_IISIntrinsicsConfig'Size use 32;
   subtype CSC_IISIntrinsicsConfig is tagCSC_IISIntrinsicsConfig;
   type tagCSC_COMTIIntrinsicsConfig is (
      CSC_NoCOMTIIntrinsics,
      CSC_InheritCOMTIIntrinsics
   );
   for tagCSC_COMTIIntrinsicsConfig use (
      CSC_NoCOMTIIntrinsics => 0,
      CSC_InheritCOMTIIntrinsics => 1
   );
   for tagCSC_COMTIIntrinsicsConfig'Size use 32;
   subtype CSC_COMTIIntrinsicsConfig is tagCSC_COMTIIntrinsicsConfig;
   type tagCSC_SxsConfig is (
      CSC_NoSxs,
      CSC_InheritSxs,
      CSC_NewSxs
   );
   for tagCSC_SxsConfig use (
      CSC_NoSxs => 0,
      CSC_InheritSxs => 1,
      CSC_NewSxs => 2
   );
   for tagCSC_SxsConfig'Size use 32;
   subtype CSC_SxsConfig is tagCSC_SxsConfig;
   IID_IServiceIISIntrinsicsConfig : aliased constant IID;
   pragma import (C,IID_IServiceIISIntrinsicsConfig,"IID_IServiceIISIntrinsicsConfig");
   type IServiceIISIntrinsicsConfig is limited interface and IUnknown;
      function IISIntrinsicsConfig(
         This : access IServiceIISIntrinsicsConfig;
         iisIntrinsicsConfig : CSC_IISIntrinsicsConfig
      ) return HRESULT is abstract;
   type IServiceIISIntrinsicsConfig_Ptr is access all IServiceIISIntrinsicsConfig'Class;
   IID_IServiceComTIIntrinsicsConfig : aliased constant IID;
   pragma import (C,IID_IServiceComTIIntrinsicsConfig,"IID_IServiceComTIIntrinsicsConfig");
   type IServiceComTIIntrinsicsConfig is limited interface and IUnknown;
      function ComTIIntrinsicsConfig(
         This : access IServiceComTIIntrinsicsConfig;
         comtiIntrinsicsConfig : CSC_COMTIIntrinsicsConfig
      ) return HRESULT is abstract;
   type IServiceComTIIntrinsicsConfig_Ptr is access all IServiceComTIIntrinsicsConfig'Class;
   IID_IServiceSxsConfig : aliased constant IID;
   pragma import (C,IID_IServiceSxsConfig,"IID_IServiceSxsConfig");
   type IServiceSxsConfig is limited interface and IUnknown;
      function SxsConfig(
         This : access IServiceSxsConfig;
         scsConfig : CSC_SxsConfig
      ) return HRESULT is abstract;
      function SxsName(
         This : access IServiceSxsConfig;
         szSxsName : LPCWSTR
      ) return HRESULT is abstract;
      function SxsDirectory(
         This : access IServiceSxsConfig;
         szSxsDirectory : LPCWSTR
      ) return HRESULT is abstract;
   type IServiceSxsConfig_Ptr is access all IServiceSxsConfig'Class;
   IID_ICheckSxsConfig : aliased constant IID;
   pragma import (C,IID_ICheckSxsConfig,"IID_ICheckSxsConfig");
   type ICheckSxsConfig is limited interface and IUnknown;
      function IsSameSxsConfig(
         This : access ICheckSxsConfig;
         wszSxsName : LPCWSTR;
         wszSxsDirectory : LPCWSTR;
         wszSxsAppName : LPCWSTR
      ) return HRESULT is abstract;
   type ICheckSxsConfig_Ptr is access all ICheckSxsConfig'Class;
   IID_IServiceInheritanceConfig : aliased constant IID;
   pragma import (C,IID_IServiceInheritanceConfig,"IID_IServiceInheritanceConfig");
   type IServiceInheritanceConfig is limited interface and IUnknown;
      function ContainingContextTreatment(
         This : access IServiceInheritanceConfig;
         inheritanceConfig : CSC_InheritanceConfig
      ) return HRESULT is abstract;
   type IServiceInheritanceConfig_Ptr is access all IServiceInheritanceConfig'Class;
   IID_IServiceThreadPoolConfig : aliased constant IID;
   pragma import (C,IID_IServiceThreadPoolConfig,"IID_IServiceThreadPoolConfig");
   type IServiceThreadPoolConfig is limited interface and IUnknown;
      function SelectThreadPool(
         This : access IServiceThreadPoolConfig;
         threadPool : CSC_ThreadPool
      ) return HRESULT is abstract;
      function SetBindingInfo(
         This : access IServiceThreadPoolConfig;
         binding : CSC_Binding
      ) return HRESULT is abstract;
   type IServiceThreadPoolConfig_Ptr is access all IServiceThreadPoolConfig'Class;
   IID_IServiceTransactionConfigBase : aliased constant IID;
   pragma import (C,IID_IServiceTransactionConfigBase,"IID_IServiceTransactionConfigBase");
   type IServiceTransactionConfigBase is limited interface and IUnknown;
      function ConfigureTransaction(
         This : access IServiceTransactionConfigBase;
         transactionConfig : CSC_TransactionConfig
      ) return HRESULT is abstract;
      function IsolationLevel_x(
         This : access IServiceTransactionConfigBase;
         option : COMAdminTxIsolationLevelOptions
      ) return HRESULT is abstract;
      function TransactionTimeout(
         This : access IServiceTransactionConfigBase;
         ulTimeoutSec : ULONG
      ) return HRESULT is abstract;
      function BringYourOwnTransaction(
         This : access IServiceTransactionConfigBase;
         szTipURL : LPCWSTR
      ) return HRESULT is abstract;
      function NewTransactionDescription(
         This : access IServiceTransactionConfigBase;
         szTxDesc : LPCWSTR
      ) return HRESULT is abstract;
   type IServiceTransactionConfigBase_Ptr is access all IServiceTransactionConfigBase'Class;
   IID_IServiceTransactionConfig : aliased constant IID;
   pragma import (C,IID_IServiceTransactionConfig,"IID_IServiceTransactionConfig");
   type IServiceTransactionConfig is limited interface and IServiceTransactionConfigBase;
      function ConfigureBYOT(
         This : access IServiceTransactionConfig;
         pITxByot : access ITransaction'Class
      ) return HRESULT is abstract;
   type IServiceTransactionConfig_Ptr is access all IServiceTransactionConfig'Class;
   IID_IServiceSysTxnConfig : aliased constant IID;
   pragma import (C,IID_IServiceSysTxnConfig,"IID_IServiceSysTxnConfig");
   type IServiceSysTxnConfig is limited interface and IServiceTransactionConfig;
      function ConfigureBYOTSysTxn(
         This : access IServiceSysTxnConfig;
         pTxProxy : access ITransactionProxy'Class
      ) return HRESULT is abstract;
   type IServiceSysTxnConfig_Ptr is access all IServiceSysTxnConfig'Class;
   IID_IServiceSynchronizationConfig : aliased constant IID;
   pragma import (C,IID_IServiceSynchronizationConfig,"IID_IServiceSynchronizationConfig");
   type IServiceSynchronizationConfig is limited interface and IUnknown;
      function ConfigureSynchronization(
         This : access IServiceSynchronizationConfig;
         synchConfig : CSC_SynchronizationConfig
      ) return HRESULT is abstract;
   type IServiceSynchronizationConfig_Ptr is access all IServiceSynchronizationConfig'Class;
   IID_IServiceTrackerConfig : aliased constant IID;
   pragma import (C,IID_IServiceTrackerConfig,"IID_IServiceTrackerConfig");
   type IServiceTrackerConfig is limited interface and IUnknown;
      function TrackerConfig(
         This : access IServiceTrackerConfig;
         trackerConfig : CSC_TrackerConfig;
         szTrackerAppName : LPCWSTR;
         szTrackerCtxName : LPCWSTR
      ) return HRESULT is abstract;
   type IServiceTrackerConfig_Ptr is access all IServiceTrackerConfig'Class;
   IID_IServicePartitionConfig : aliased constant IID;
   pragma import (C,IID_IServicePartitionConfig,"IID_IServicePartitionConfig");
   type IServicePartitionConfig is limited interface and IUnknown;
      function PartitionConfig(
         This : access IServicePartitionConfig;
         partitionConfig : CSC_PartitionConfig
      ) return HRESULT is abstract;
      function PartitionID(
         This : access IServicePartitionConfig;
         guidPartitionID : access constant GUID
      ) return HRESULT is abstract;
   type IServicePartitionConfig_Ptr is access all IServicePartitionConfig'Class;
   IID_IServiceCall : aliased constant IID;
   pragma import (C,IID_IServiceCall,"IID_IServiceCall");
   type IServiceCall is limited interface and IUnknown;
      function OnCall(This : access IServiceCall) return HRESULT is abstract;
   type IServiceCall_Ptr is access all IServiceCall'Class;
   IID_IAsyncErrorNotify : aliased constant IID;
   pragma import (C,IID_IAsyncErrorNotify,"IID_IAsyncErrorNotify");
   type IAsyncErrorNotify is limited interface and IUnknown;
      function OnError(
         This : access IAsyncErrorNotify;
         hr : HRESULT
      ) return HRESULT is abstract;
   type IAsyncErrorNotify_Ptr is access all IAsyncErrorNotify'Class;
   IID_IServiceActivity : aliased constant IID;
   pragma import (C,IID_IServiceActivity,"IID_IServiceActivity");
   type IServiceActivity is limited interface and IUnknown;
      function SynchronousCall(
         This : access IServiceActivity;
         pIServiceCall : access IServiceCall'Class
      ) return HRESULT is abstract;
      function AsynchronousCall(
         This : access IServiceActivity;
         pIServiceCall : access IServiceCall'Class
      ) return HRESULT is abstract;
      function BindToCurrentThread(This : access IServiceActivity) return HRESULT is abstract;
      function UnbindFromThread(This : access IServiceActivity) return HRESULT is abstract;
   type IServiceActivity_Ptr is access all IServiceActivity'Class;
   IID_IThreadPoolKnobs : aliased constant IID;
   pragma import (C,IID_IThreadPoolKnobs,"IID_IThreadPoolKnobs");
   type IThreadPoolKnobs is limited interface and IUnknown;
      function GetMaxThreads(
         This : access IThreadPoolKnobs;
         plcMaxThreads : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function GetCurrentThreads(
         This : access IThreadPoolKnobs;
         plcCurrentThreads : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function SetMaxThreads(
         This : access IThreadPoolKnobs;
         lcMaxThreads : Interfaces.C.Long
      ) return HRESULT is abstract;
      function GetDeleteDelay(
         This : access IThreadPoolKnobs;
         pmsecDeleteDelay : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function SetDeleteDelay(
         This : access IThreadPoolKnobs;
         msecDeleteDelay : Interfaces.C.Long
      ) return HRESULT is abstract;
      function GetMaxQueuedRequests(
         This : access IThreadPoolKnobs;
         plcMaxQueuedRequests : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function GetCurrentQueuedRequests(
         This : access IThreadPoolKnobs;
         plcCurrentQueuedRequests : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function SetMaxQueuedRequests(
         This : access IThreadPoolKnobs;
         lcMaxQueuedRequests : Interfaces.C.Long
      ) return HRESULT is abstract;
      function SetMinThreads(
         This : access IThreadPoolKnobs;
         lcMinThreads : Interfaces.C.Long
      ) return HRESULT is abstract;
      function SetQueueDepth(
         This : access IThreadPoolKnobs;
         lcQueueDepth : Interfaces.C.Long
      ) return HRESULT is abstract;
   type IThreadPoolKnobs_Ptr is access all IThreadPoolKnobs'Class;
   IID_IComStaThreadPoolKnobs : aliased constant IID;
   pragma import (C,IID_IComStaThreadPoolKnobs,"IID_IComStaThreadPoolKnobs");
   type IComStaThreadPoolKnobs is limited interface and IUnknown;
      function SetMinThreadCount(
         This : access IComStaThreadPoolKnobs;
         minThreads : DWORD
      ) return HRESULT is abstract;
      function GetMinThreadCount(
         This : access IComStaThreadPoolKnobs;
         minThreads : access DWORD
      ) return HRESULT is abstract;
      function SetMaxThreadCount(
         This : access IComStaThreadPoolKnobs;
         maxThreads : DWORD
      ) return HRESULT is abstract;
      function GetMaxThreadCount(
         This : access IComStaThreadPoolKnobs;
         maxThreads : access DWORD
      ) return HRESULT is abstract;
      function SetActivityPerThread(
         This : access IComStaThreadPoolKnobs;
         activitiesPerThread : DWORD
      ) return HRESULT is abstract;
      function GetActivityPerThread(
         This : access IComStaThreadPoolKnobs;
         activitiesPerThread : access DWORD
      ) return HRESULT is abstract;
      function SetActivityRatio(
         This : access IComStaThreadPoolKnobs;
         activityRatio : DOUBLE
      ) return HRESULT is abstract;
      function GetActivityRatio(
         This : access IComStaThreadPoolKnobs;
         activityRatio : access DOUBLE
      ) return HRESULT is abstract;
      function GetThreadCount(
         This : access IComStaThreadPoolKnobs;
         pdwThreads : access DWORD
      ) return HRESULT is abstract;
      function GetQueueDepth(
         This : access IComStaThreadPoolKnobs;
         pdwQDepth : access DWORD
      ) return HRESULT is abstract;
      function SetQueueDepth(
         This : access IComStaThreadPoolKnobs;
         dwQDepth : Interfaces.C.Long
      ) return HRESULT is abstract;
   type IComStaThreadPoolKnobs_Ptr is access all IComStaThreadPoolKnobs'Class;
   IID_IComMtaThreadPoolKnobs : aliased constant IID;
   pragma import (C,IID_IComMtaThreadPoolKnobs,"IID_IComMtaThreadPoolKnobs");
   type IComMtaThreadPoolKnobs is limited interface and IUnknown;
      function MTASetMaxThreadCount(
         This : access IComMtaThreadPoolKnobs;
         dwMaxThreads : DWORD
      ) return HRESULT is abstract;
      function MTAGetMaxThreadCount(
         This : access IComMtaThreadPoolKnobs;
         pdwMaxThreads : access DWORD
      ) return HRESULT is abstract;
      function MTASetThrottleValue(
         This : access IComMtaThreadPoolKnobs;
         dwThrottle : DWORD
      ) return HRESULT is abstract;
      function MTAGetThrottleValue(
         This : access IComMtaThreadPoolKnobs;
         pdwThrottle : access DWORD
      ) return HRESULT is abstract;
   type IComMtaThreadPoolKnobs_Ptr is access all IComMtaThreadPoolKnobs'Class;
   IID_IComStaThreadPoolKnobs2 : aliased constant IID;
   pragma import (C,IID_IComStaThreadPoolKnobs2,"IID_IComStaThreadPoolKnobs2");
   type IComStaThreadPoolKnobs2 is limited interface and IComStaThreadPoolKnobs;
      function GetMaxCPULoad(
         This : access IComStaThreadPoolKnobs2;
         pdwLoad : access DWORD
      ) return HRESULT is abstract;
      function SetMaxCPULoad(
         This : access IComStaThreadPoolKnobs2;
         pdwLoad : Interfaces.C.Long
      ) return HRESULT is abstract;
      function GetCPUMetricEnabled(
         This : access IComStaThreadPoolKnobs2;
         pbMetricEnabled : access BOOL
      ) return HRESULT is abstract;
      function SetCPUMetricEnabled(
         This : access IComStaThreadPoolKnobs2;
         bMetricEnabled : BOOL
      ) return HRESULT is abstract;
      function GetCreateThreadsAggressively(
         This : access IComStaThreadPoolKnobs2;
         pbMetricEnabled : access BOOL
      ) return HRESULT is abstract;
      function SetCreateThreadsAggressively(
         This : access IComStaThreadPoolKnobs2;
         bMetricEnabled : BOOL
      ) return HRESULT is abstract;
      function GetMaxCSR(
         This : access IComStaThreadPoolKnobs2;
         pdwCSR : access DWORD
      ) return HRESULT is abstract;
      function SetMaxCSR(
         This : access IComStaThreadPoolKnobs2;
         dwCSR : Interfaces.C.Long
      ) return HRESULT is abstract;
      function GetWaitTimeForThreadCleanup(
         This : access IComStaThreadPoolKnobs2;
         pdwThreadCleanupWaitTime : access DWORD
      ) return HRESULT is abstract;
      function SetWaitTimeForThreadCleanup(
         This : access IComStaThreadPoolKnobs2;
         dwThreadCleanupWaitTime : Interfaces.C.Long
      ) return HRESULT is abstract;
   type IComStaThreadPoolKnobs2_Ptr is access all IComStaThreadPoolKnobs2'Class;
   IID_IProcessInitializer : aliased constant IID;
   pragma import (C,IID_IProcessInitializer,"IID_IProcessInitializer");
   type IProcessInitializer is limited interface and IUnknown;
      function Startup(
         This : access IProcessInitializer;
         punkProcessControl : access IUnknown'Class
      ) return HRESULT is abstract;
      function Shutdown_x(This : access IProcessInitializer) return HRESULT is abstract;
   type IProcessInitializer_Ptr is access all IProcessInitializer'Class;
   IID_IServicePoolConfig : aliased constant IID;
   pragma import (C,IID_IServicePoolConfig,"IID_IServicePoolConfig");
   type IServicePoolConfig is limited interface and IUnknown;
      function put_MaxPoolSize(
         This : access IServicePoolConfig;
         dwMaxPool : DWORD
      ) return HRESULT is abstract;
      function get_MaxPoolSize(
         This : access IServicePoolConfig;
         pdwMaxPool : access DWORD
      ) return HRESULT is abstract;
      function put_MinPoolSize(
         This : access IServicePoolConfig;
         dwMinPool : DWORD
      ) return HRESULT is abstract;
      function get_MinPoolSize(
         This : access IServicePoolConfig;
         pdwMinPool : access DWORD
      ) return HRESULT is abstract;
      function put_CreationTimeout(
         This : access IServicePoolConfig;
         dwCreationTimeout : DWORD
      ) return HRESULT is abstract;
      function get_CreationTimeout(
         This : access IServicePoolConfig;
         pdwCreationTimeout : access DWORD
      ) return HRESULT is abstract;
      function put_TransactionAffinity(
         This : access IServicePoolConfig;
         fTxAffinity : BOOL
      ) return HRESULT is abstract;
      function get_TransactionAffinity(
         This : access IServicePoolConfig;
         pfTxAffinity : access BOOL
      ) return HRESULT is abstract;
      function put_ClassFactory(
         This : access IServicePoolConfig;
         pFactory : access IClassFactory'Class
      ) return HRESULT is abstract;
      function get_ClassFactory(
         This : access IServicePoolConfig;
         pFactory : access IClassFactory_Ptr
      ) return HRESULT is abstract;
   type IServicePoolConfig_Ptr is access all IServicePoolConfig'Class;
   IID_IServicePool : aliased constant IID;
   pragma import (C,IID_IServicePool,"IID_IServicePool");
   type IServicePool is limited interface and IUnknown;
      function Initialize(
         This : access IServicePool;
         pPoolConfig : access IUnknown'Class
      ) return HRESULT is abstract;
      function GetObjectA_x(
         This : access IServicePool;
         riid : access constant IID;
         ppv : access LPVOID
      ) return HRESULT is abstract;
      function Shutdown_x(This : access IServicePool) return HRESULT is abstract;
   type IServicePool_Ptr is access all IServicePool'Class;
   IID_IManagedPooledObj : aliased constant IID;
   pragma import (C,IID_IManagedPooledObj,"IID_IManagedPooledObj");
   type IManagedPooledObj is limited interface and IUnknown;
      function SetHeld(
         This : access IManagedPooledObj;
         m_bHeld : BOOL
      ) return HRESULT is abstract;
   type IManagedPooledObj_Ptr is access all IManagedPooledObj'Class;
   IID_IManagedPoolAction : aliased constant IID;
   pragma import (C,IID_IManagedPoolAction,"IID_IManagedPoolAction");
   type IManagedPoolAction is limited interface and IUnknown;
      function LastRelease(This : access IManagedPoolAction) return HRESULT is abstract;
   type IManagedPoolAction_Ptr is access all IManagedPoolAction'Class;
   IID_IManagedObjectInfo : aliased constant IID;
   pragma import (C,IID_IManagedObjectInfo,"IID_IManagedObjectInfo");
   type IManagedObjectInfo is limited interface and IUnknown;
      function GetIUnknown(
         This : access IManagedObjectInfo;
         pUnk : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function GetIObjectControl(
         This : access IManagedObjectInfo;
         pCtrl : access IObjectControl_Ptr
      ) return HRESULT is abstract;
      function SetInPool(
         This : access IManagedObjectInfo;
         bInPool : BOOL;
         pPooledObj : access IManagedPooledObj'Class
      ) return HRESULT is abstract;
      function SetWrapperStrength(
         This : access IManagedObjectInfo;
         bStrong : BOOL
      ) return HRESULT is abstract;
   type IManagedObjectInfo_Ptr is access all IManagedObjectInfo'Class;
   IID_IAppDomainHelper : aliased constant IID;
   pragma import (C,IID_IAppDomainHelper,"IID_IAppDomainHelper");
   type IAppDomainHelper is limited interface and IDispatch;
      function Initialize(
         This : access IAppDomainHelper;
         pUnkAD : access IUnknown'Class;
         MIDL_IAppDomainHelper0000 : System.Address;
         pPool : access Void
      ) return HRESULT is abstract;
      function DoCallback(
         This : access IAppDomainHelper;
         pUnkAD : access IUnknown'Class;
         MIDL_IAppDomainHelper0001 : System.Address;
         pPool : access Void
      ) return HRESULT is abstract;
   type IAppDomainHelper_Ptr is access all IAppDomainHelper'Class;
   IID_IAssemblyLocator : aliased constant IID;
   pragma import (C,IID_IAssemblyLocator,"IID_IAssemblyLocator");
   type IAssemblyLocator is limited interface and IDispatch;
      function GetModules(
         This : access IAssemblyLocator;
         applicationDir : BSTR;
         applicationName : BSTR;
         assemblyName : BSTR;
         pModules : access LPSAFEARRAY
      ) return HRESULT is abstract;
   type IAssemblyLocator_Ptr is access all IAssemblyLocator'Class;
   IID_IManagedActivationEvents : aliased constant IID;
   pragma import (C,IID_IManagedActivationEvents,"IID_IManagedActivationEvents");
   type IManagedActivationEvents is limited interface and IUnknown;
      function CreateManagedStub(
         This : access IManagedActivationEvents;
         pInfo : access IManagedObjectInfo'Class;
         fDist : BOOL
      ) return HRESULT is abstract;
      function DestroyManagedStub(
         This : access IManagedActivationEvents;
         pInfo : access IManagedObjectInfo'Class
      ) return HRESULT is abstract;
   type IManagedActivationEvents_Ptr is access all IManagedActivationEvents'Class;
   IID_ISendMethodEvents : aliased constant IID;
   pragma import (C,IID_ISendMethodEvents,"IID_ISendMethodEvents");
   type ISendMethodEvents is limited interface and IUnknown;
      function SendMethodCall(
         This : access ISendMethodEvents;
         pIdentity : access Void;
         riid : access constant IID;
         dwMeth : DWORD
      ) return HRESULT is abstract;
      function SendMethodReturn(
         This : access ISendMethodEvents;
         pIdentity : access Void;
         riid : access constant IID;
         dwMeth : DWORD;
         hrCall : HRESULT;
         hrServer : HRESULT
      ) return HRESULT is abstract;
   type ISendMethodEvents_Ptr is access all ISendMethodEvents'Class;
   IID_ITransactionResourcePool : aliased constant IID;
   pragma import (C,IID_ITransactionResourcePool,"IID_ITransactionResourcePool");
   type ITransactionResourcePool is limited interface and IUnknown;
      function PutResource(
         This : access ITransactionResourcePool;
         pPool : access IObjPool'Class;
         pUnk : access IUnknown'Class
      ) return HRESULT is abstract;
      function GetResource(
         This : access ITransactionResourcePool;
         pPool : access IObjPool'Class;
         ppUnk : access IUnknown_Ptr
      ) return HRESULT is abstract;
   type ITransactionResourcePool_Ptr is access all ITransactionResourcePool'Class;
   function MTSCreateActivity(
      riid : access constant IID;
      ppobj : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,MTSCreateActivity,"MTSCreateActivity");
   IID_IMTSCall : aliased constant IID;
   pragma import (C,IID_IMTSCall,"IID_IMTSCall");
   type IMTSCall is limited interface and IUnknown;
      function OnCall(This : access IMTSCall) return HRESULT is abstract;
   type IMTSCall_Ptr is access all IMTSCall'Class;
   IID_IContextProperties : aliased constant IID;
   pragma import (C,IID_IContextProperties,"IID_IContextProperties");
   type IContextProperties is limited interface and IUnknown;
      function Count(
         This : access IContextProperties;
         plCount : access Interfaces.C.Long
      ) return HRESULT is abstract;
      function GetProperty(
         This : access IContextProperties;
         name : BSTR;
         pProperty : access VARIANT
      ) return HRESULT is abstract;
      function EnumNames(
         This : access IContextProperties;
         ppenum : access IEnumNames_Ptr
      ) return HRESULT is abstract;
      function SetProperty(
         This : access IContextProperties;
         name : BSTR;
         property : VARIANT
      ) return HRESULT is abstract;
      function RemoveProperty(
         This : access IContextProperties;
         name : BSTR
      ) return HRESULT is abstract;
   type IContextProperties_Ptr is access all IContextProperties'Class;
   IID_IObjPool : aliased constant IID;
   pragma import (C,IID_IObjPool,"IID_IObjPool");
   type IObjPool is limited interface and IUnknown;
      procedure Reserved1(This : access IObjPool) is abstract;
      procedure Reserved2(This : access IObjPool) is abstract;
      procedure Reserved3(This : access IObjPool) is abstract;
      procedure Reserved4(This : access IObjPool) is abstract;
      procedure PutEndTx(
         This : access IObjPool;
         pObj : access IUnknown'Class
      ) is abstract;
      procedure Reserved5(This : access IObjPool) is abstract;
      procedure Reserved6(This : access IObjPool) is abstract;
   type IObjPool_Ptr is access all IObjPool'Class;
   IID_ITransactionProperty : aliased constant IID;
   pragma import (C,IID_ITransactionProperty,"IID_ITransactionProperty");
   type ITransactionProperty is limited interface and IUnknown;
      procedure Reserved1(This : access ITransactionProperty) is abstract;
      procedure Reserved2(This : access ITransactionProperty) is abstract;
      procedure Reserved3(This : access ITransactionProperty) is abstract;
      procedure Reserved4(This : access ITransactionProperty) is abstract;
      procedure Reserved5(This : access ITransactionProperty) is abstract;
      procedure Reserved6(This : access ITransactionProperty) is abstract;
      procedure Reserved7(This : access ITransactionProperty) is abstract;
      procedure Reserved8(This : access ITransactionProperty) is abstract;
      procedure Reserved9(This : access ITransactionProperty) is abstract;
      function GetTransactionResourcePool(
         This : access ITransactionProperty;
         ppTxPool : access ITransactionResourcePool_Ptr
      ) return HRESULT is abstract;
      procedure Reserved10(This : access ITransactionProperty) is abstract;
      procedure Reserved11(This : access ITransactionProperty) is abstract;
      procedure Reserved12(This : access ITransactionProperty) is abstract;
      procedure Reserved13(This : access ITransactionProperty) is abstract;
      procedure Reserved14(This : access ITransactionProperty) is abstract;
      procedure Reserved15(This : access ITransactionProperty) is abstract;
      procedure Reserved16(This : access ITransactionProperty) is abstract;
      procedure Reserved17(This : access ITransactionProperty) is abstract;
   type ITransactionProperty_Ptr is access all ITransactionProperty'Class;
   IID_IMTSActivity : aliased constant IID;
   pragma import (C,IID_IMTSActivity,"IID_IMTSActivity");
   type IMTSActivity is limited interface and IUnknown;
      function SynchronousCall(
         This : access IMTSActivity;
         pCall : access IMTSCall'Class
      ) return HRESULT is abstract;
      function AsyncCall(
         This : access IMTSActivity;
         pCall : access IMTSCall'Class
      ) return HRESULT is abstract;
      procedure Reserved1(This : access IMTSActivity) is abstract;
      function BindToCurrentThread(This : access IMTSActivity) return HRESULT is abstract;
      function UnbindFromThread(This : access IMTSActivity) return HRESULT is abstract;
   type IMTSActivity_Ptr is access all IMTSActivity'Class;
   type MIDL_MIDL_itf_autosvcs_0001_0150_0001_x is (
      mtsErrCtxAborted,
      mtsErrCtxAborting,
      mtsErrCtxNoContext,
      mtsErrCtxNotRegistered,
      mtsErrCtxSynchTimeout,
      mtsErrCtxOldReference,
      mtsErrCtxRoleNotFound,
      mtsErrCtxNoSecurity,
      mtsErrCtxWrongThread,
      mtsErrCtxTMNotAvailable,
      comQCErrApplicationNotQueued,
      comQCErrNoQueueableInterfaces,
      comQCErrQueuingServiceNotAvailable,
      comQCErrQueueTransactMismatch,
      comqcErrRecorderMarshalled,
      comqcErrOutParam,
      comqcErrRecorderNotTrusted,
      comqcErrPSLoad,
      comqcErrMarshaledObjSameTxn,
      comqcErrInvalidMessage,
      comqcErrMsmqSidUnavailable,
      comqcErrWrongMsgExtension,
      comqcErrMsmqServiceUnavailable,
      comqcErrMsgNotAuthenticated,
      comqcErrMsmqConnectorUsed,
      comqcErrBadMarshaledObject
   );
   for MIDL_MIDL_itf_autosvcs_0001_0150_0001_x use (
      mtsErrCtxAborted => -2147164158,
      mtsErrCtxAborting => -2147164157,
      mtsErrCtxNoContext => -2147164156,
      mtsErrCtxNotRegistered => -2147164155,
      mtsErrCtxSynchTimeout => -2147164154,
      mtsErrCtxOldReference => -2147164153,
      mtsErrCtxRoleNotFound => -2147164148,
      mtsErrCtxNoSecurity => -2147164147,
      mtsErrCtxWrongThread => -2147164146,
      mtsErrCtxTMNotAvailable => -2147164145,
      comQCErrApplicationNotQueued => -2146368000,
      comQCErrNoQueueableInterfaces => -2146367999,
      comQCErrQueuingServiceNotAvailable => -2146367998,
      comQCErrQueueTransactMismatch => -2146367997,
      comqcErrRecorderMarshalled => -2146367996,
      comqcErrOutParam => -2146367995,
      comqcErrRecorderNotTrusted => -2146367994,
      comqcErrPSLoad => -2146367993,
      comqcErrMarshaledObjSameTxn => -2146367992,
      comqcErrInvalidMessage => -2146367920,
      comqcErrMsmqSidUnavailable => -2146367919,
      comqcErrWrongMsgExtension => -2146367918,
      comqcErrMsmqServiceUnavailable => -2146367917,
      comqcErrMsgNotAuthenticated => -2146367916,
      comqcErrMsmqConnectorUsed => -2146367915,
      comqcErrBadMarshaledObject => -2146367914
   );
   for MIDL_MIDL_itf_autosvcs_0001_0150_0001_x'Size use 32;
   subtype Error_Constants is MIDL_MIDL_itf_autosvcs_0001_0150_0001_x;
   type MIDL_MIDL_itf_autosvcs_0001_0159_0001_x is (
      LockSetGet,
      LockMethod
   );
   for MIDL_MIDL_itf_autosvcs_0001_0159_0001_x use (
      LockSetGet => 0,
      LockMethod => 1
   );
   for MIDL_MIDL_itf_autosvcs_0001_0159_0001_x'Size use 32;
   subtype LockModes is MIDL_MIDL_itf_autosvcs_0001_0159_0001_x;
   type MIDL_MIDL_itf_autosvcs_0001_0159_0002_x is (
      Standard,
      Process
   );
   for MIDL_MIDL_itf_autosvcs_0001_0159_0002_x use (
      Standard => 0,
      Process => 1
   );
   for MIDL_MIDL_itf_autosvcs_0001_0159_0002_x'Size use 32;
   subtype ReleaseModes is MIDL_MIDL_itf_autosvcs_0001_0159_0002_x;
   type tagCRMFLAGS is (
      CRMFLAG_FORGETTARGET,
      CRMFLAG_WRITTENDURINGPREPARE,
      CRMFLAG_WRITTENDURINGCOMMIT,
      CRMFLAG_WRITTENDURINGABORT,
      CRMFLAG_WRITTENDURINGRECOVERY,
      CRMFLAG_WRITTENDURINGREPLAY,
      CRMFLAG_REPLAYINPROGRESS
   );
   for tagCRMFLAGS use (
      CRMFLAG_FORGETTARGET => 1,
      CRMFLAG_WRITTENDURINGPREPARE => 2,
      CRMFLAG_WRITTENDURINGCOMMIT => 4,
      CRMFLAG_WRITTENDURINGABORT => 8,
      CRMFLAG_WRITTENDURINGRECOVERY => 16,
      CRMFLAG_WRITTENDURINGREPLAY => 32,
      CRMFLAG_REPLAYINPROGRESS => 64
   );
   for tagCRMFLAGS'Size use 32;
   subtype CRMFLAGS is tagCRMFLAGS;
   type tagCRMREGFLAGS is (
      CRMREGFLAG_PREPAREPHASE,
      CRMREGFLAG_COMMITPHASE,
      CRMREGFLAG_ABORTPHASE,
      CRMREGFLAG_ALLPHASES,
      CRMREGFLAG_FAILIFINDOUBTSREMAIN
   );
   for tagCRMREGFLAGS use (
      CRMREGFLAG_PREPAREPHASE => 1,
      CRMREGFLAG_COMMITPHASE => 2,
      CRMREGFLAG_ABORTPHASE => 4,
      CRMREGFLAG_ALLPHASES => 7,
      CRMREGFLAG_FAILIFINDOUBTSREMAIN => 16
   );
   for tagCRMREGFLAGS'Size use 32;
   subtype CRMREGFLAGS is tagCRMREGFLAGS;
   function IGetAppTrackerData_GetApplicationProcessDetails_Proxy(
      This : access IGetAppTrackerData'Class;
      ApplicationInstanceId : access constant GUID;
      ProcessId : DWORD;
      Flags : DWORD;
      Summary : access ApplicationProcessSummary;
      Statistics : access ApplicationProcessStatistics;
      RecycleInfo : access ApplicationProcessRecycleInfo;
      AnyComponentsHangMonitored : access BOOL
   ) return HRESULT;
   pragma import (Cpp,IGetAppTrackerData_GetApplicationProcessDetails_Proxy,"IGetAppTrackerData_GetApplicationProcessDetails_Proxy");
   function IGetAppTrackerData_GetApplicationProcessDetails_Stub(
      This : access IGetAppTrackerData'Class;
      ApplicationInstanceId : access constant GUID;
      ProcessId : DWORD;
      Flags : DWORD;
      Summary : access ApplicationProcessSummary;
      Statistics : access ApplicationProcessStatistics;
      RecycleInfo : access ApplicationProcessRecycleInfo;
      AnyComponentsHangMonitored : access BOOL
   ) return HRESULT;
   pragma import (Cpp,IGetAppTrackerData_GetApplicationProcessDetails_Stub,"IGetAppTrackerData_GetApplicationProcessDetails_Stub");
   function IGetAppTrackerData_GetComponentDetails_Proxy(
      This : access IGetAppTrackerData'Class;
      ApplicationInstanceId : access constant GUID;
      ProcessId : DWORD;
      Clsid_x : access constant IID;
      Flags : DWORD;
      Summary : access ComponentSummary;
      Statistics : access ComponentStatistics;
      HangMonitorInfo : access ComponentHangMonitorInfo
   ) return HRESULT;
   pragma import (Cpp,IGetAppTrackerData_GetComponentDetails_Proxy,"IGetAppTrackerData_GetComponentDetails_Proxy");
   function IGetAppTrackerData_GetComponentDetails_Stub(
      This : access IGetAppTrackerData'Class;
      ApplicationInstanceId : access constant GUID;
      ProcessId : DWORD;
      Clsid_x : access constant IID;
      Flags : DWORD;
      Summary : access ComponentSummary;
      Statistics : access ComponentStatistics;
      HangMonitorInfo : access ComponentHangMonitorInfo
   ) return HRESULT;
   pragma import (Cpp,IGetAppTrackerData_GetComponentDetails_Stub,"IGetAppTrackerData_GetComponentDetails_Stub");
   -- #include <inspectable.h>
   type IInspectable;
   -- #include <hstring.h>
   type HSTRING_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HSTRING_x);
   for HSTRING_x use record
      unused at 0 range 0..31;
   end record;
   for HSTRING_x'Size use 32;
   for HSTRING_x'Alignment use 4;
   type HSTRING is access all HSTRING_x;
   type Anonymous_Record_296_Reserved2_Array is array(1..24) of Character; -- Auto Generated Dependancy
   type Anonymous_Record_296 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when 0 =>
            Reserved1 : PVOID;
         when others => 
            Reserved2 : Anonymous_Record_296_Reserved2_Array;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_296);
   pragma Unchecked_Union (Anonymous_Record_296);
   for Anonymous_Record_296'Size use 192;
   for Anonymous_Record_296'Alignment use 8;
   type HSTRING_HEADER is record
      field_1 : Anonymous_Record_296;
   end record;
   pragma Convention (C_Pass_By_Copy,HSTRING_HEADER);
   for HSTRING_HEADER use record
      field_1 at 0 range 0..191;
   end record;
   for HSTRING_HEADER'Size use 192;
   for HSTRING_HEADER'Alignment use 8;
   type HSTRING_BUFFER_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,HSTRING_BUFFER_x);
   for HSTRING_BUFFER_x use record
      unused at 0 range 0..31;
   end record;
   for HSTRING_BUFFER_x'Size use 32;
   for HSTRING_BUFFER_x'Alignment use 4;
   type HSTRING_BUFFER is access all HSTRING_BUFFER_x;
   -- #include <inspectable.h>
   type LPINSPECTABLE is access all IInspectable;
   type TrustLevel is (
      BaseTrust,
      PartialTrust,
      FullTrust
   );
   for TrustLevel use (
      BaseTrust => 0,
      PartialTrust => 1,
      FullTrust => 2
   );
   for TrustLevel'Size use 32;
   IID_IInspectable : aliased constant IID;
   pragma import (C,IID_IInspectable,"IID_IInspectable");
   type IInspectable is limited interface and IUnknown;
      function GetIids(
         This : access IInspectable;
         iidCount : access ULONG;
         iids : access LPIID
      ) return HRESULT is abstract;
      function GetRuntimeClassName(
         This : access IInspectable;
         className : access HSTRING
      ) return HRESULT is abstract;
      function GetTrustLevel(
         This : access IInspectable;
         trustLevel_x : access TrustLevel
      ) return HRESULT is abstract;
   type IInspectable_Ptr is access all IInspectable'Class;
   function HSTRING_UserSize(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HSTRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HSTRING_UserSize,"HSTRING_UserSize");
   function HSTRING_UserMarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HSTRING
   ) return access UCHAR;
   pragma import (Cpp,HSTRING_UserMarshal,"HSTRING_UserMarshal");
   function HSTRING_UserUnmarshal(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HSTRING
   ) return access UCHAR;
   pragma import (Cpp,HSTRING_UserUnmarshal,"HSTRING_UserUnmarshal");
   procedure HSTRING_UserFree(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HSTRING
   );
   pragma import (Cpp,HSTRING_UserFree,"HSTRING_UserFree");
   function HSTRING_UserSize64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : Interfaces.C.unsigned_long;
      param3 : access HSTRING
   ) return Interfaces.C.unsigned_long;
   pragma import (Cpp,HSTRING_UserSize64,"HSTRING_UserSize64");
   function HSTRING_UserMarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HSTRING
   ) return access UCHAR;
   pragma import (Cpp,HSTRING_UserMarshal64,"HSTRING_UserMarshal64");
   function HSTRING_UserUnmarshal64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access Interfaces.C.unsigned_char;
      param3 : access HSTRING
   ) return access UCHAR;
   pragma import (Cpp,HSTRING_UserUnmarshal64,"HSTRING_UserUnmarshal64");
   procedure HSTRING_UserFree64(
      param1 : access Interfaces.C.unsigned_long;
      param2 : access HSTRING
   );
   pragma import (Cpp,HSTRING_UserFree64,"HSTRING_UserFree64");
   -- #include <activation.h>
   type IActivationFactory;
   type PACTIVATIONFACTORY is access all IActivationFactory;
   IID_IActivationFactory : aliased constant IID;
   pragma import (C,IID_IActivationFactory,"IID_IActivationFactory");
   type IActivationFactory is limited interface and IInspectable;
      function ActivateInstance(
         This : access IActivationFactory;
         instance : access IInspectable_Ptr
      ) return HRESULT is abstract;
   type IActivationFactory_Ptr is access all IActivationFactory'Class;
   -- #include <roapi.h>
   type RO_INIT_TYPE is (
      RO_INIT_SINGLETHREADED,
      RO_INIT_MULTITHREADED
   );
   for RO_INIT_TYPE use (
      RO_INIT_SINGLETHREADED => 0,
      RO_INIT_MULTITHREADED => 1
   );
   for RO_INIT_TYPE'Size use 32;
   type RO_REGISTRATION_COOKIE_Record is null record;
   pragma Convention (C_Pass_By_Copy,RO_REGISTRATION_COOKIE_Record);
   type RO_REGISTRATION_COOKIE is access all RO_REGISTRATION_COOKIE_Record;
   type PFNGETACTIVATIONFACTORY is access function (p1 : HSTRING ; p2 : access IActivationFactory_Ptr) return HRESULT; -- HRESULT (HSTRING, IActivationFactory **)
   pragma Convention(C,PFNGETACTIVATIONFACTORY);
   function RoInitialize(
      initType : RO_INIT_TYPE
   ) return HRESULT;
   pragma import (Cpp,RoInitialize,"RoInitialize");
   procedure RoUninitialize;
   pragma import (Cpp,RoUninitialize,"RoUninitialize");
   function RoActivateInstance(
      activatableClassId : HSTRING;
      instance : access IInspectable_Ptr
   ) return HRESULT;
   pragma import (Cpp,RoActivateInstance,"RoActivateInstance");
   function RoRegisterActivationFactories(
      activatableClassIds : access HSTRING;
      activationFactoryCallbacks : access PFNGETACTIVATIONFACTORY;
      count : UINT32;
      cookie : access RO_REGISTRATION_COOKIE
   ) return HRESULT;
   pragma import (Cpp,RoRegisterActivationFactories,"RoRegisterActivationFactories");
   procedure RoRevokeActivationFactories(
      cookie : RO_REGISTRATION_COOKIE
   );
   pragma import (Cpp,RoRevokeActivationFactories,"RoRevokeActivationFactories");
   function RoGetActivationFactory(
      activatableClassId : HSTRING;
      iid_x : access constant IID;
      factory : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,RoGetActivationFactory,"RoGetActivationFactory");
   type APARTMENT_SHUTDOWN_REGISTRATION_COOKIE_x is record
      unused : Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,APARTMENT_SHUTDOWN_REGISTRATION_COOKIE_x);
   for APARTMENT_SHUTDOWN_REGISTRATION_COOKIE_x use record
      unused at 0 range 0..31;
   end record;
   for APARTMENT_SHUTDOWN_REGISTRATION_COOKIE_x'Size use 32;
   for APARTMENT_SHUTDOWN_REGISTRATION_COOKIE_x'Alignment use 4;
   type APARTMENT_SHUTDOWN_REGISTRATION_COOKIE is access all APARTMENT_SHUTDOWN_REGISTRATION_COOKIE_x;
   function RoRegisterForApartmentShutdown(
      callbackObject : access IApartmentShutdown'Class;
      apartmentIdentifier : access UINT64;
      regCookie : access APARTMENT_SHUTDOWN_REGISTRATION_COOKIE
   ) return HRESULT;
   pragma import (Cpp,RoRegisterForApartmentShutdown,"RoRegisterForApartmentShutdown");
   function RoUnregisterForApartmentShutdown(
      regCookie : APARTMENT_SHUTDOWN_REGISTRATION_COOKIE
   ) return HRESULT;
   pragma import (Cpp,RoUnregisterForApartmentShutdown,"RoUnregisterForApartmentShutdown");
   function RoGetApartmentIdentifier(
      apartmentIdentifier : access UINT64
   ) return HRESULT;
   pragma import (Cpp,RoGetApartmentIdentifier,"RoGetApartmentIdentifier");
   -- Initialize(); -- inlined function not supported
   -- Uninitialize(); -- inlined function not supported
   -- RegisterActivationFactories(); -- inlined function not supported
   -- RevokeActivationFactories(); -- inlined function not supported
   -- Initialize(); -- inlined function not supported
   -- Uninitialize(); -- inlined function not supported
   -- RegisterActivationFactories(); -- inlined function not supported
   -- RevokeActivationFactories(); -- inlined function not supported
   -- #include <winstring.h>
   function WindowsCreateString(
      sourceString : PCNZWCH;
      length : UINT32;
      string : access HSTRING
   ) return HRESULT;
   pragma import (Cpp,WindowsCreateString,"WindowsCreateString");
   function WindowsCreateStringReference(
      sourceString : PCWSTR;
      length : UINT32;
      hstringHeader : access HSTRING_HEADER;
      string : access HSTRING
   ) return HRESULT;
   pragma import (Cpp,WindowsCreateStringReference,"WindowsCreateStringReference");
   function WindowsDeleteString(
      string : HSTRING
   ) return HRESULT;
   pragma import (Cpp,WindowsDeleteString,"WindowsDeleteString");
   function WindowsDuplicateString(
      string : HSTRING;
      newString : access HSTRING
   ) return HRESULT;
   pragma import (Cpp,WindowsDuplicateString,"WindowsDuplicateString");
   function WindowsGetStringLen(
      string : HSTRING
   ) return UINT32;
   pragma import (Cpp,WindowsGetStringLen,"WindowsGetStringLen");
   function WindowsGetStringRawBuffer(
      string : HSTRING;
      length : access UINT32
   ) return PCWSTR;
   pragma import (Cpp,WindowsGetStringRawBuffer,"WindowsGetStringRawBuffer");
   function WindowsIsStringEmpty(
      string : HSTRING
   ) return BOOL;
   pragma import (Cpp,WindowsIsStringEmpty,"WindowsIsStringEmpty");
   function WindowsStringHasEmbeddedNull(
      string : HSTRING;
      hasEmbedNull : access BOOL
   ) return HRESULT;
   pragma import (Cpp,WindowsStringHasEmbeddedNull,"WindowsStringHasEmbeddedNull");
   function WindowsCompareStringOrdinal(
      string1 : HSTRING;
      string2 : HSTRING;
      result : access INT32
   ) return HRESULT;
   pragma import (Cpp,WindowsCompareStringOrdinal,"WindowsCompareStringOrdinal");
   function WindowsSubstring(
      string : HSTRING;
      startIndex : UINT32;
      newString : access HSTRING
   ) return HRESULT;
   pragma import (Cpp,WindowsSubstring,"WindowsSubstring");
   function WindowsSubstringWithSpecifiedLength(
      string : HSTRING;
      startIndex : UINT32;
      length : UINT32;
      newString : access HSTRING
   ) return HRESULT;
   pragma import (Cpp,WindowsSubstringWithSpecifiedLength,"WindowsSubstringWithSpecifiedLength");
   function WindowsConcatString(
      string1 : HSTRING;
      string2 : HSTRING;
      newString : access HSTRING
   ) return HRESULT;
   pragma import (Cpp,WindowsConcatString,"WindowsConcatString");
   function WindowsReplaceString(
      string : HSTRING;
      stringReplaced : HSTRING;
      stringReplaceWith : HSTRING;
      newString : access HSTRING
   ) return HRESULT;
   pragma import (Cpp,WindowsReplaceString,"WindowsReplaceString");
   function WindowsTrimStringStart(
      string : HSTRING;
      trimString : HSTRING;
      newString : access HSTRING
   ) return HRESULT;
   pragma import (Cpp,WindowsTrimStringStart,"WindowsTrimStringStart");
   function WindowsTrimStringEnd(
      string : HSTRING;
      trimString : HSTRING;
      newString : access HSTRING
   ) return HRESULT;
   pragma import (Cpp,WindowsTrimStringEnd,"WindowsTrimStringEnd");
   function WindowsPreallocateStringBuffer(
      length : UINT32;
      charBuffer : access PWCHAR;
      bufferHandle : access HSTRING_BUFFER
   ) return HRESULT;
   pragma import (Cpp,WindowsPreallocateStringBuffer,"WindowsPreallocateStringBuffer");
   function WindowsPromoteStringBuffer(
      bufferHandle : HSTRING_BUFFER;
      string : access HSTRING
   ) return HRESULT;
   pragma import (Cpp,WindowsPromoteStringBuffer,"WindowsPromoteStringBuffer");
   function WindowsDeleteStringBuffer(
      bufferHandle : HSTRING_BUFFER
   ) return HRESULT;
   pragma import (Cpp,WindowsDeleteStringBuffer,"WindowsDeleteStringBuffer");
   type PINSPECT_HSTRING_CALLBACK is access function (p1 : access void ; p2 : UINT_PTR ; p3 : UINT32 ; p4 : access BYTE) return HRESULT; -- HRESULT (void *, UINT_PTR, UINT32, BYTE *)
   pragma Convention(C,PINSPECT_HSTRING_CALLBACK);
   function WindowsInspectString(
      targetHString : UINT_PTR;
      machine : USHORT;
      callback : PINSPECT_HSTRING_CALLBACK;
      context_x : access Void;
      length : access UINT32;
      targetStringAddress : access UINT_PTR
   ) return HRESULT;
   pragma import (Cpp,WindowsInspectString,"WindowsInspectString");
   type PINSPECT_HSTRING_CALLBACK2 is access function (p1 : access void ; p2 : UINT64 ; p3 : UINT32 ; p4 : access BYTE) return HRESULT; -- HRESULT (void *, UINT64, UINT32, BYTE *)
   pragma Convention(C,PINSPECT_HSTRING_CALLBACK2);
   function WindowsInspectString2(
      targetHString : UINT64;
      machine : USHORT;
      callback : PINSPECT_HSTRING_CALLBACK2;
      context_x : access Void;
      length : access UINT32;
      targetStringAddress : access UINT64
   ) return HRESULT;
   pragma import (Cpp,WindowsInspectString2,"WindowsInspectString2");
   -- #include <restrictedErrorInfo.h>
   type IRestrictedErrorInfo;
   type ILanguageExceptionErrorInfo;
   type ILanguageExceptionTransform;
   type ILanguageExceptionStackBackTrace;
   type ILanguageExceptionErrorInfo2;
   IID_IRestrictedErrorInfo : aliased constant IID;
   pragma import (C,IID_IRestrictedErrorInfo,"IID_IRestrictedErrorInfo");
   type IRestrictedErrorInfo is limited interface and IUnknown;
      function GetErrorDetails(
         This : access IRestrictedErrorInfo;
         description : access BSTR;
         error_x : access HRESULT;
         restrictedDescription : access BSTR;
         capabilitySid : access BSTR
      ) return HRESULT is abstract;
      function GetReference(
         This : access IRestrictedErrorInfo;
         reference : access BSTR
      ) return HRESULT is abstract;
   type IRestrictedErrorInfo_Ptr is access all IRestrictedErrorInfo'Class;
   IID_ILanguageExceptionErrorInfo : aliased constant IID;
   pragma import (C,IID_ILanguageExceptionErrorInfo,"IID_ILanguageExceptionErrorInfo");
   type ILanguageExceptionErrorInfo is limited interface and IUnknown;
      function GetLanguageException(
         This : access ILanguageExceptionErrorInfo;
         languageException : access IUnknown_Ptr
      ) return HRESULT is abstract;
   type ILanguageExceptionErrorInfo_Ptr is access all ILanguageExceptionErrorInfo'Class;
   IID_ILanguageExceptionTransform : aliased constant IID;
   pragma import (C,IID_ILanguageExceptionTransform,"IID_ILanguageExceptionTransform");
   type ILanguageExceptionTransform is limited interface and IUnknown;
      function GetTransformedRestrictedErrorInfo(
         This : access ILanguageExceptionTransform;
         restrictedErrorInfo : access IRestrictedErrorInfo_Ptr
      ) return HRESULT is abstract;
   type ILanguageExceptionTransform_Ptr is access all ILanguageExceptionTransform'Class;
   IID_ILanguageExceptionStackBackTrace : aliased constant IID;
   pragma import (C,IID_ILanguageExceptionStackBackTrace,"IID_ILanguageExceptionStackBackTrace");
   type ILanguageExceptionStackBackTrace is limited interface and IUnknown;
      function GetStackBackTrace(
         This : access ILanguageExceptionStackBackTrace;
         maxFramesToCapture : ULONG;
         stackBackTrace : UINT_PTR;
         framesCaptured : access ULONG
      ) return HRESULT is abstract;
   type ILanguageExceptionStackBackTrace_Ptr is access all ILanguageExceptionStackBackTrace'Class;
   IID_ILanguageExceptionErrorInfo2 : aliased constant IID;
   pragma import (C,IID_ILanguageExceptionErrorInfo2,"IID_ILanguageExceptionErrorInfo2");
   type ILanguageExceptionErrorInfo2_Ptr is access all ILanguageExceptionErrorInfo2; -- Auto Generated Dependancy
   type ILanguageExceptionErrorInfo2 is limited interface and ILanguageExceptionErrorInfo;
      function GetPreviousLanguageExceptionErrorInfo(
         This : access ILanguageExceptionErrorInfo2;
         previousLanguageExceptionErrorInfo : access ILanguageExceptionErrorInfo2_Ptr
      ) return HRESULT is abstract;
      function CapturePropagationContext(
         This : access ILanguageExceptionErrorInfo2;
         languageException : access IUnknown'Class
      ) return HRESULT is abstract;
      function GetPropagationContextHead(
         This : access ILanguageExceptionErrorInfo2;
         propagatedLanguageExceptionErrorInfoHead : access ILanguageExceptionErrorInfo2_Ptr
      ) return HRESULT is abstract;
   -- #include <roerrorapi.h>
   type RO_ERROR_REPORTING_FLAGS is (
      RO_ERROR_REPORTING_NONE,
      RO_ERROR_REPORTING_SUPPRESSEXCEPTIONS,
      RO_ERROR_REPORTING_FORCEEXCEPTIONS,
      RO_ERROR_REPORTING_USESETERRORINFO,
      RO_ERROR_REPORTING_SUPPRESSSETERRORINFO
   );
   for RO_ERROR_REPORTING_FLAGS use (
      RO_ERROR_REPORTING_NONE => 0,
      RO_ERROR_REPORTING_SUPPRESSEXCEPTIONS => 1,
      RO_ERROR_REPORTING_FORCEEXCEPTIONS => 2,
      RO_ERROR_REPORTING_USESETERRORINFO => 4,
      RO_ERROR_REPORTING_SUPPRESSSETERRORINFO => 8
   );
   for RO_ERROR_REPORTING_FLAGS'Size use 32;
   -- operator|(); -- inlined function not supported
   -- operator|=(); -- inlined function not supported
   -- operator&(); -- inlined function not supported
   -- operator&=(); -- inlined function not supported
   -- operator~(); -- inlined function not supported
   -- operator^(); -- inlined function not supported
   -- operator^=(); -- inlined function not supported
   function RoGetErrorReportingFlags(
      pflags : access UINT32
   ) return HRESULT;
   pragma import (Cpp,RoGetErrorReportingFlags,"RoGetErrorReportingFlags");
   function RoSetErrorReportingFlags(
      flags : UINT32
   ) return HRESULT;
   pragma import (Cpp,RoSetErrorReportingFlags,"RoSetErrorReportingFlags");
   function RoResolveRestrictedErrorInfoReference(
      reference : PCWSTR;
      ppRestrictedErrorInfo : access IRestrictedErrorInfo_Ptr
   ) return HRESULT;
   pragma import (Cpp,RoResolveRestrictedErrorInfoReference,"RoResolveRestrictedErrorInfoReference");
   function SetRestrictedErrorInfo(
      pRestrictedErrorInfo : access IRestrictedErrorInfo'Class
   ) return HRESULT;
   pragma import (Cpp,SetRestrictedErrorInfo,"SetRestrictedErrorInfo");
   function GetRestrictedErrorInfo(
      ppRestrictedErrorInfo : access IRestrictedErrorInfo_Ptr
   ) return HRESULT;
   pragma import (Cpp,GetRestrictedErrorInfo,"GetRestrictedErrorInfo");
   function RoOriginateErrorW(
      error_x : HRESULT;
      cchMax : UINT;
      message : PCWSTR
   ) return BOOL;
   pragma import (Cpp,RoOriginateErrorW,"RoOriginateErrorW");
   function RoOriginateError(
      error_x : HRESULT;
      message : HSTRING
   ) return BOOL;
   pragma import (Cpp,RoOriginateError,"RoOriginateError");
   function RoTransformErrorW(
      oldError : HRESULT;
      newError : HRESULT;
      cchMax : UINT;
      message : PCWSTR
   ) return BOOL;
   pragma import (Cpp,RoTransformErrorW,"RoTransformErrorW");
   function RoTransformError(
      oldError : HRESULT;
      newError : HRESULT;
      message : HSTRING
   ) return BOOL;
   pragma import (Cpp,RoTransformError,"RoTransformError");
   function RoCaptureErrorContext(
      hr : HRESULT
   ) return HRESULT;
   pragma import (Cpp,RoCaptureErrorContext,"RoCaptureErrorContext");
   procedure RoFailFastWithErrorContext(
      hrError : HRESULT
   );
   pragma import (Cpp,RoFailFastWithErrorContext,"RoFailFastWithErrorContext");
   -- operator|(); -- inlined function not supported
   -- operator|=(); -- inlined function not supported
   -- operator&(); -- inlined function not supported
   -- operator&=(); -- inlined function not supported
   -- operator~(); -- inlined function not supported
   -- operator^(); -- inlined function not supported
   -- operator^=(); -- inlined function not supported
   -- GetErrorReportingFlags(); -- inlined function not supported
   -- SetErrorReportingFlags(); -- inlined function not supported
   -- OriginateError(); -- inlined function not supported
   -- OriginateError(); -- inlined function not supported
   -- TransformError(); -- inlined function not supported
   -- TransformError(); -- inlined function not supported
   -- operator|(); -- inlined function not supported
   -- operator|=(); -- inlined function not supported
   -- operator&(); -- inlined function not supported
   -- operator&=(); -- inlined function not supported
   -- operator~(); -- inlined function not supported
   -- operator^(); -- inlined function not supported
   -- operator^=(); -- inlined function not supported
   -- GetErrorReportingFlags(); -- inlined function not supported
   -- SetErrorReportingFlags(); -- inlined function not supported
   -- OriginateError(); -- inlined function not supported
   -- OriginateError(); -- inlined function not supported
   -- TransformError(); -- inlined function not supported
   -- TransformError(); -- inlined function not supported
   function RoOriginateLanguageException(
      error_x : HRESULT;
      message : HSTRING;
      languageException : access IUnknown'Class
   ) return BOOL;
   pragma import (Cpp,RoOriginateLanguageException,"RoOriginateLanguageException");
   procedure RoClearError;
   pragma import (Cpp,RoClearError,"RoClearError");
   function RoReportUnhandledError(
      pRestrictedErrorInfo : access IRestrictedErrorInfo'Class
   ) return HRESULT;
   pragma import (Cpp,RoReportUnhandledError,"RoReportUnhandledError");
   type PINSPECT_MEMORY_CALLBACK is access function (p1 : access void ; p2 : UINT_PTR ; p3 : UINT32 ; p4 : access BYTE) return HRESULT; -- HRESULT (void *, UINT_PTR, UINT32, BYTE *)
   pragma Convention(C,PINSPECT_MEMORY_CALLBACK);
   function RoInspectThreadErrorInfo(
      targetTebAddress : UINT_PTR;
      machine : USHORT;
      readMemoryCallback : PINSPECT_MEMORY_CALLBACK;
      context_x : PVOID;
      targetErrorInfoAddress : access UINT_PTR
   ) return HRESULT;
   pragma import (Cpp,RoInspectThreadErrorInfo,"RoInspectThreadErrorInfo");
   function RoInspectCapturedStackBackTrace(
      targetErrorInfoAddress : UINT_PTR;
      machine : USHORT;
      readMemoryCallback : PINSPECT_MEMORY_CALLBACK;
      context_x : PVOID;
      frameCount : access UINT32;
      targetBackTraceAddress : access UINT_PTR
   ) return HRESULT;
   pragma import (Cpp,RoInspectCapturedStackBackTrace,"RoInspectCapturedStackBackTrace");
   function RoGetMatchingRestrictedErrorInfo(
      hrIn : HRESULT;
      ppRestrictedErrorInfo : access IRestrictedErrorInfo_Ptr
   ) return HRESULT;
   pragma import (Cpp,RoGetMatchingRestrictedErrorInfo,"RoGetMatchingRestrictedErrorInfo");
   function RoReportFailedDelegate(
      punkDelegate : access IUnknown'Class;
      pRestrictedErrorInfo : access IRestrictedErrorInfo'Class
   ) return HRESULT;
   pragma import (Cpp,RoReportFailedDelegate,"RoReportFailedDelegate");
   function IsErrorPropagationEnabled return BOOL;
   pragma import (Cpp,IsErrorPropagationEnabled,"IsErrorPropagationEnabled");
   -- #include <metahost.h>
   type ICLRMetaHost;
   type ICLRMetaHostPolicy;
   type ICLRProfiling;
   type ICLRDebuggingLibraryProvider;
   type ICLRDebugging;
   type ICLRRuntimeInfo;
   type ICLRStrongName;
   type ICLRStrongName2;
   type ICLRStrongName3;
   -- #include <mscoree.h>
   type IObjectHandle;
   type IAppDomainBinding;
   type IGCThreadControl;
   type IGCHostControl;
   type ICorThreadpool;
   type IDebuggerThreadControl;
   type IDebuggerInfo;
   type ICorConfiguration;
   type ICorRuntimeHost;
   type ICLRMemoryNotificationCallback;
   type IHostMalloc;
   type IHostMemoryManager;
   type ICLRTask;
   type ICLRTask2;
   type IHostTask;
   type ICLRTaskManager;
   type IHostTaskManager;
   type IHostThreadpoolManager;
   type ICLRIoCompletionManager;
   type IHostIoCompletionManager;
   type ICLRDebugManager;
   type ICLRErrorReportingManager;
   type IHostCrst;
   type IHostAutoEvent;
   type IHostManualEvent;
   type IHostSemaphore;
   type ICLRSyncManager;
   type IHostSyncManager;
   type ICLRPolicyManager;
   type IHostPolicyManager;
   type IActionOnCLREvent;
   type ICLROnEventManager;
   type IHostGCManager;
   type ICLRAssemblyReferenceList;
   type ICLRReferenceAssemblyEnum;
   type ICLRProbingAssemblyEnum;
   type ICLRAssemblyIdentityManager;
   type ICLRHostBindingPolicyManager;
   type ICLRGCManager;
   type ICLRGCManager2;
   type IHostAssemblyStore;
   type IHostAssemblyManager;
   type IHostControl;
   type ICLRControl;
   type ICLRRuntimeHost;
   type ICLRHostProtectionManager;
   type ICLRDomainManager;
   type ITypeName;
   type ITypeNameBuilder;
   type ITypeNameFactory;
   type IApartmentCallback;
   type IManagedObject;
   type ICatalogServices;
   type IHostSecurityContext;
   type IHostSecurityManager;
   type ICLRAppDomainResourceMonitor;
   -- #include <gchost.h>
   type IGCHost;
   type IGCHost2;
   type MIDL_MIDL_itf_gchost_0000_0000_0001_x is (
      COR_GC_COUNTS,
      COR_GC_MEMORYUSAGE
   );
   for MIDL_MIDL_itf_gchost_0000_0000_0001_x use (
      COR_GC_COUNTS => 1,
      COR_GC_MEMORYUSAGE => 2
   );
   for MIDL_MIDL_itf_gchost_0000_0000_0001_x'Size use 32;
   subtype COR_GC_STAT_TYPES is MIDL_MIDL_itf_gchost_0000_0000_0001_x;
   type MIDL_MIDL_itf_gchost_0000_0000_0002_x is (
      COR_GC_THREAD_HAS_PROMOTED_BYTES
   );
   for MIDL_MIDL_itf_gchost_0000_0000_0002_x use (
      COR_GC_THREAD_HAS_PROMOTED_BYTES => 1
   );
   for MIDL_MIDL_itf_gchost_0000_0000_0002_x'Size use 32;
   subtype COR_GC_THREAD_STATS_TYPES is MIDL_MIDL_itf_gchost_0000_0000_0002_x;
   type COR_GC_STATS_x_GenCollectionsTaken_Array is array(1..3) of SIZE_T; -- Auto Generated Dependancy
   type COR_GC_STATS_x is record
      Flags : ULONG;
      ExplicitGCCount : SIZE_T;
      GenCollectionsTaken : COR_GC_STATS_x_GenCollectionsTaken_Array;
      CommittedKBytes : SIZE_T;
      ReservedKBytes : SIZE_T;
      Gen0HeapSizeKBytes : SIZE_T;
      Gen1HeapSizeKBytes : SIZE_T;
      Gen2HeapSizeKBytes : SIZE_T;
      LargeObjectHeapSizeKBytes : SIZE_T;
      KBytesPromotedFromGen0 : SIZE_T;
      KBytesPromotedFromGen1 : SIZE_T;
   end record;
   pragma Convention (C_Pass_By_Copy,COR_GC_STATS_x);
   for COR_GC_STATS_x use record
      Flags at 0 range 0..31;
      ExplicitGCCount at 0 range 64..127;
      GenCollectionsTaken at 0 range 128..319;
      CommittedKBytes at 0 range 320..383;
      ReservedKBytes at 0 range 384..447;
      Gen0HeapSizeKBytes at 0 range 448..511;
      Gen1HeapSizeKBytes at 0 range 512..575;
      Gen2HeapSizeKBytes at 0 range 576..639;
      LargeObjectHeapSizeKBytes at 0 range 640..703;
      KBytesPromotedFromGen0 at 0 range 704..767;
      KBytesPromotedFromGen1 at 0 range 768..831;
   end record;
   for COR_GC_STATS_x'Size use 832;
   for COR_GC_STATS_x'Alignment use 8;
   subtype COR_GC_STATS is COR_GC_STATS_x;
   type COR_GC_THREAD_STATS_x is record
      PerThreadAllocation : ULONGLONG;
      Flags : ULONG;
   end record;
   pragma Convention (C_Pass_By_Copy,COR_GC_THREAD_STATS_x);
   for COR_GC_THREAD_STATS_x use record
      PerThreadAllocation at 0 range 0..63;
      Flags at 0 range 64..95;
   end record;
   for COR_GC_THREAD_STATS_x'Size use 128;
   for COR_GC_THREAD_STATS_x'Alignment use 8;
   subtype COR_GC_THREAD_STATS is COR_GC_THREAD_STATS_x;
   IID_IGCHost : aliased constant IID;
   pragma import (C,IID_IGCHost,"IID_IGCHost");
   type IGCHost is limited interface and IUnknown;
      function SetGCStartupLimits(
         This : access IGCHost;
         SegmentSize : DWORD;
         MaxGen0Size : DWORD
      ) return HRESULT is abstract;
      function Collect(
         This : access IGCHost;
         Generation : LONG
      ) return HRESULT is abstract;
      function GetStats(
         This : access IGCHost;
         pStats : access COR_GC_STATS
      ) return HRESULT is abstract;
      function GetThreadStats(
         This : access IGCHost;
         pFiberCookie : access DWORD;
         pStats : access COR_GC_THREAD_STATS
      ) return HRESULT is abstract;
      function SetVirtualMemLimit(
         This : access IGCHost;
         sztMaxVirtualMemMB : SIZE_T
      ) return HRESULT is abstract;
   type IGCHost_Ptr is access all IGCHost'Class;
   IID_IGCHost2 : aliased constant IID;
   pragma import (C,IID_IGCHost2,"IID_IGCHost2");
   type IGCHost2 is limited interface and IGCHost;
      function SetGCStartupLimitsEx(
         This : access IGCHost2;
         SegmentSize : SIZE_T;
         MaxGen0Size : SIZE_T
      ) return HRESULT is abstract;
   type IGCHost2_Ptr is access all IGCHost2'Class;
   -- #include <ivalidator.h>
   type IValidator;
   type ICLRValidator;
   -- #include <ivehandler.h>
   type IVEHandler;
   type tag_VerError is record
      flags : Interfaces.C.unsigned_long;
      opcode : Interfaces.C.unsigned_long;
      uOffset : Interfaces.C.unsigned_long;
      Token : Interfaces.C.unsigned_long;
      item1_flags : Interfaces.C.unsigned_long;
      item1_data : access Interfaces.C.Int;
      item2_flags : Interfaces.C.unsigned_long;
      item2_data : access Interfaces.C.Int;
   end record;
   pragma Convention (C_Pass_By_Copy,tag_VerError);
   for tag_VerError use record
      flags at 0 range 0..31;
      opcode at 0 range 32..63;
      uOffset at 0 range 64..95;
      Token at 0 range 96..127;
      item1_flags at 0 range 128..159;
      item1_data at 0 range 192..255;
      item2_flags at 0 range 256..287;
      item2_data at 0 range 320..383;
   end record;
   for tag_VerError'Size use 384;
   for tag_VerError'Alignment use 8;
   subtype VerError_x is tag_VerError;
   subtype VEContext is VerError_x;
   IID_IVEHandler : aliased constant IID;
   pragma import (C,IID_IVEHandler,"IID_IVEHandler");
   type IVEHandler is limited interface and IUnknown;
      function VEHandler(
         This : access IVEHandler;
         VECode : HRESULT;
         Context_x : VEContext;
         psa : access SAFEARRAY
      ) return HRESULT is abstract;
      function SetReporterFtn(
         This : access IVEHandler;
         lFnPtr : Interfaces.C.Extensions.long_long
      ) return HRESULT is abstract;
   type IVEHandler_Ptr is access all IVEHandler'Class;
   -- #include <ivalidator.h>
   type ValidatorFlags is (
      VALIDATOR_EXTRA_VERBOSE,
      VALIDATOR_SHOW_SOURCE_LINES,
      VALIDATOR_CHECK_ILONLY,
      VALIDATOR_CHECK_PEFORMAT_ONLY,
      VALIDATOR_NOCHECK_PEFORMAT,
      VALIDATOR_TRANSPARENT_ONLY
   );
   for ValidatorFlags use (
      VALIDATOR_EXTRA_VERBOSE => 1,
      VALIDATOR_SHOW_SOURCE_LINES => 2,
      VALIDATOR_CHECK_ILONLY => 4,
      VALIDATOR_CHECK_PEFORMAT_ONLY => 8,
      VALIDATOR_NOCHECK_PEFORMAT => 16,
      VALIDATOR_TRANSPARENT_ONLY => 32
   );
   for ValidatorFlags'Size use 32;
   IID_IValidator : aliased constant IID;
   pragma import (C,IID_IValidator,"IID_IValidator");
   type IValidator is limited interface and IUnknown;
      function Validate(
         This : access IValidator;
         veh : access IVEHandler'Class;
         pAppDomain : access IUnknown'Class;
         ulFlags : Interfaces.C.unsigned_long;
         ulMaxError : Interfaces.C.unsigned_long;
         token : Interfaces.C.unsigned_long;
         fileName : LPWSTR;
         pe : access BYTE;
         ulSize : Interfaces.C.unsigned_long
      ) return HRESULT is abstract;
      function FormatEventInfo(
         This : access IValidator;
         hVECode : HRESULT;
         Context_x : VEContext;
         msg_x : LPWSTR;
         ulMaxLength : Interfaces.C.unsigned_long;
         psa : access SAFEARRAY
      ) return HRESULT is abstract;
   type IValidator_Ptr is access all IValidator'Class;
   IID_ICLRValidator : aliased constant IID;
   pragma import (C,IID_ICLRValidator,"IID_ICLRValidator");
   type ICLRValidator is limited interface and IUnknown;
      function Validate(
         This : access ICLRValidator;
         veh : access IVEHandler'Class;
         ulAppDomainId : Interfaces.C.unsigned_long;
         ulFlags : Interfaces.C.unsigned_long;
         ulMaxError : Interfaces.C.unsigned_long;
         token : Interfaces.C.unsigned_long;
         fileName : LPWSTR;
         pe : access BYTE;
         ulSize : Interfaces.C.unsigned_long
      ) return HRESULT is abstract;
      function FormatEventInfo(
         This : access ICLRValidator;
         hVECode : HRESULT;
         Context_x : VEContext;
         msg_x : LPWSTR;
         ulMaxLength : Interfaces.C.unsigned_long;
         psa : access SAFEARRAY
      ) return HRESULT is abstract;
   type ICLRValidator_Ptr is access all ICLRValidator'Class;
   -- #include <mscoree.h>
   IID_IObjectHandle : aliased constant IID;
   pragma import (C,IID_IObjectHandle,"IID_IObjectHandle");
   IID_IManagedObject : aliased constant IID;
   pragma import (C,IID_IManagedObject,"IID_IManagedObject");
   IID_IApartmentCallback : aliased constant IID;
   pragma import (C,IID_IApartmentCallback,"IID_IApartmentCallback");
   IID_ICatalogServices : aliased constant IID;
   pragma import (C,IID_ICatalogServices,"IID_ICatalogServices");
   IID_ICorRuntimeHost : aliased constant IID;
   pragma import (C,IID_ICorRuntimeHost,"IID_ICorRuntimeHost");
   IID_ICorThreadpool : aliased constant IID;
   pragma import (C,IID_ICorThreadpool,"IID_ICorThreadpool");
   IID_ICLRDebugManager : aliased constant IID;
   pragma import (C,IID_ICLRDebugManager,"IID_ICLRDebugManager");
   IID_IHostMemoryNeededCallback : aliased constant IID;
   pragma import (C,IID_IHostMemoryNeededCallback,"IID_IHostMemoryNeededCallback");
   IID_IHostMalloc : aliased constant IID;
   pragma import (C,IID_IHostMalloc,"IID_IHostMalloc");
   IID_IHostMemoryManager : aliased constant IID;
   pragma import (C,IID_IHostMemoryManager,"IID_IHostMemoryManager");
   IID_ICLRTask : aliased constant IID;
   pragma import (C,IID_ICLRTask,"IID_ICLRTask");
   IID_ICLRTask2 : aliased constant IID;
   pragma import (C,IID_ICLRTask2,"IID_ICLRTask2");
   IID_IHostTask : aliased constant IID;
   pragma import (C,IID_IHostTask,"IID_IHostTask");
   IID_ICLRTaskManager : aliased constant IID;
   pragma import (C,IID_ICLRTaskManager,"IID_ICLRTaskManager");
   IID_IHostTaskManager : aliased constant IID;
   pragma import (C,IID_IHostTaskManager,"IID_IHostTaskManager");
   IID_IHostThreadpoolManager : aliased constant IID;
   pragma import (C,IID_IHostThreadpoolManager,"IID_IHostThreadpoolManager");
   IID_ICLRIoCompletionManager : aliased constant IID;
   pragma import (C,IID_ICLRIoCompletionManager,"IID_ICLRIoCompletionManager");
   IID_IHostIoCompletionManager : aliased constant IID;
   pragma import (C,IID_IHostIoCompletionManager,"IID_IHostIoCompletionManager");
   IID_IHostSyncManager : aliased constant IID;
   pragma import (C,IID_IHostSyncManager,"IID_IHostSyncManager");
   IID_IHostCrst : aliased constant IID;
   pragma import (C,IID_IHostCrst,"IID_IHostCrst");
   IID_IHostAutoEvent : aliased constant IID;
   pragma import (C,IID_IHostAutoEvent,"IID_IHostAutoEvent");
   IID_IHostManualEvent : aliased constant IID;
   pragma import (C,IID_IHostManualEvent,"IID_IHostManualEvent");
   IID_IHostSemaphore : aliased constant IID;
   pragma import (C,IID_IHostSemaphore,"IID_IHostSemaphore");
   IID_ICLRSyncManager : aliased constant IID;
   pragma import (C,IID_ICLRSyncManager,"IID_ICLRSyncManager");
   IID_ICLRAppDomainResourceMonitor : aliased constant IID;
   pragma import (C,IID_ICLRAppDomainResourceMonitor,"IID_ICLRAppDomainResourceMonitor");
   IID_ICLRPolicyManager : aliased constant IID;
   pragma import (C,IID_ICLRPolicyManager,"IID_ICLRPolicyManager");
   IID_ICLRGCManager : aliased constant IID;
   pragma import (C,IID_ICLRGCManager,"IID_ICLRGCManager");
   IID_ICLRGCManager2 : aliased constant IID;
   pragma import (C,IID_ICLRGCManager2,"IID_ICLRGCManager2");
   IID_ICLRErrorReportingManager : aliased constant IID;
   pragma import (C,IID_ICLRErrorReportingManager,"IID_ICLRErrorReportingManager");
   IID_IHostPolicyManager : aliased constant IID;
   pragma import (C,IID_IHostPolicyManager,"IID_IHostPolicyManager");
   IID_IHostGCManager : aliased constant IID;
   pragma import (C,IID_IHostGCManager,"IID_IHostGCManager");
   IID_IActionOnCLREvent : aliased constant IID;
   pragma import (C,IID_IActionOnCLREvent,"IID_IActionOnCLREvent");
   IID_ICLROnEventManager : aliased constant IID;
   pragma import (C,IID_ICLROnEventManager,"IID_ICLROnEventManager");
   IID_ICLRRuntimeHost : aliased constant IID;
   pragma import (C,IID_ICLRRuntimeHost,"IID_ICLRRuntimeHost");
   IID_ICLRHostProtectionManager : aliased constant IID;
   pragma import (C,IID_ICLRHostProtectionManager,"IID_ICLRHostProtectionManager");
   IID_IHostAssemblyStore : aliased constant IID;
   pragma import (C,IID_IHostAssemblyStore,"IID_IHostAssemblyStore");
   IID_IHostAssemblyManager : aliased constant IID;
   pragma import (C,IID_IHostAssemblyManager,"IID_IHostAssemblyManager");
   IID_IHostSecurityManager : aliased constant IID;
   pragma import (C,IID_IHostSecurityManager,"IID_IHostSecurityManager");
   IID_IHostSecurityContext : aliased constant IID;
   pragma import (C,IID_IHostSecurityContext,"IID_IHostSecurityContext");
   IID_ICLRAssemblyIdentityManager : aliased constant IID;
   pragma import (C,IID_ICLRAssemblyIdentityManager,"IID_ICLRAssemblyIdentityManager");
   IID_ICLRDomainManager : aliased constant IID;
   pragma import (C,IID_ICLRDomainManager,"IID_ICLRDomainManager");
   IID_ITypeName : aliased constant IID;
   pragma import (C,IID_ITypeName,"IID_ITypeName");
   IID_ICLRAssemblyReferenceList : aliased constant IID;
   pragma import (C,IID_ICLRAssemblyReferenceList,"IID_ICLRAssemblyReferenceList");
   IID_ICLRReferenceAssemblyEnum : aliased constant IID;
   pragma import (C,IID_ICLRReferenceAssemblyEnum,"IID_ICLRReferenceAssemblyEnum");
   IID_ICLRProbingAssemblyEnum : aliased constant IID;
   pragma import (C,IID_ICLRProbingAssemblyEnum,"IID_ICLRProbingAssemblyEnum");
   IID_ICLRHostBindingPolicyManager : aliased constant IID;
   pragma import (C,IID_ICLRHostBindingPolicyManager,"IID_ICLRHostBindingPolicyManager");
   IID_ITypeNameBuilder : aliased constant IID;
   pragma import (C,IID_ITypeNameBuilder,"IID_ITypeNameBuilder");
   IID_ITypeNameFactory : aliased constant IID;
   pragma import (C,IID_ITypeNameFactory,"IID_ITypeNameFactory");
   function GetCORSystemDirectory(
      pbuffer : LPWSTR;
      cchBuffer : DWORD;
      dwLength : access DWORD
   ) return HRESULT;
   pragma import (Cpp,GetCORSystemDirectory,"GetCORSystemDirectory");
   function GetCORVersion(
      pbBuffer : LPWSTR;
      cchBuffer : DWORD;
      dwLength : access DWORD
   ) return HRESULT;
   pragma import (Cpp,GetCORVersion,"GetCORVersion");
   function GetFileVersion(
      szFilename : LPCWSTR;
      szBuffer : LPWSTR;
      cchBuffer : DWORD;
      dwLength : access DWORD
   ) return HRESULT;
   pragma import (Cpp,GetFileVersion,"GetFileVersion");
   function GetCORRequiredVersion(
      pbuffer : LPWSTR;
      cchBuffer : DWORD;
      dwLength : access DWORD
   ) return HRESULT;
   pragma import (Cpp,GetCORRequiredVersion,"GetCORRequiredVersion");
   function GetRequestedRuntimeInfo(
      pExe : LPCWSTR;
      pwszVersion : LPCWSTR;
      pConfigurationFile : LPCWSTR;
      startupFlags : DWORD;
      runtimeInfoFlags : DWORD;
      pDirectory : LPWSTR;
      dwDirectory : DWORD;
      dwDirectoryLength : access DWORD;
      pVersion : LPWSTR;
      cchBuffer : DWORD;
      dwlength : access DWORD
   ) return HRESULT;
   pragma import (Cpp,GetRequestedRuntimeInfo,"GetRequestedRuntimeInfo");
   function GetRequestedRuntimeVersion(
      pExe : LPWSTR;
      pVersion : LPWSTR;
      cchBuffer : DWORD;
      dwLength : access DWORD
   ) return HRESULT;
   pragma import (Cpp,GetRequestedRuntimeVersion,"GetRequestedRuntimeVersion");
   function CorBindToRuntimeHost(
      pwszVersion : LPCWSTR;
      pwszBuildFlavor : LPCWSTR;
      pwszHostConfigFile : LPCWSTR;
      pReserved : access Void;
      startupFlags : DWORD;
      rclsid : access constant IID;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CorBindToRuntimeHost,"CorBindToRuntimeHost");
   function CorBindToRuntimeEx(
      pwszVersion : LPCWSTR;
      pwszBuildFlavor : LPCWSTR;
      startupFlags : DWORD;
      rclsid : access constant IID;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CorBindToRuntimeEx,"CorBindToRuntimeEx");
   function CorBindToRuntimeByCfg(
      pCfgStream : access IStream'Class;
      reserved : DWORD;
      startupFlags : DWORD;
      rclsid : access constant IID;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CorBindToRuntimeByCfg,"CorBindToRuntimeByCfg");
   function CorBindToRuntime(
      pwszVersion : LPCWSTR;
      pwszBuildFlavor : LPCWSTR;
      rclsid : access constant IID;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CorBindToRuntime,"CorBindToRuntime");
   function CorBindToCurrentRuntime(
      pwszFileName : LPCWSTR;
      rclsid : access constant IID;
      riid : access constant IID;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CorBindToCurrentRuntime,"CorBindToCurrentRuntime");
   function ClrCreateManagedInstance(
      pTypeName : LPCWSTR;
      riid : access constant IID;
      ppObject : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,ClrCreateManagedInstance,"ClrCreateManagedInstance");
   procedure CorMarkThreadInThreadPool;
   pragma import (Cpp,CorMarkThreadInThreadPool,"CorMarkThreadInThreadPool");
   function RunDll32ShimW(
      hwnd_x : HWND;
      hinst : HINSTANCE;
      lpszCmdLine : LPCWSTR;
      nCmdShow : Interfaces.C.Int
   ) return HRESULT;
   pragma import (Cpp,RunDll32ShimW,"RunDll32ShimW");
   function LoadLibraryShim(
      szDllName : LPCWSTR;
      szVersion : LPCWSTR;
      pvReserved : LPVOID;
      phModDll : access HMODULE
   ) return HRESULT;
   pragma import (Cpp,LoadLibraryShim,"LoadLibraryShim");
   function CallFunctionShim(
      szDllName : LPCWSTR;
      szFunctionName : LPCSTR;
      lpvArgument1 : LPVOID;
      lpvArgument2 : LPVOID;
      szVersion : LPCWSTR;
      pvReserved : LPVOID
   ) return HRESULT;
   pragma import (Cpp,CallFunctionShim,"CallFunctionShim");
   function GetRealProcAddress(
      pwszProcName : LPCSTR;
      ppv : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,GetRealProcAddress,"GetRealProcAddress");
   procedure CorExitProcess(
      exitCode : Interfaces.C.Int
   );
   pragma import (Cpp,CorExitProcess,"CorExitProcess");
   function LoadStringRC(
      iResouceID : UINT;
      szBuffer : LPWSTR;
      iMax : Interfaces.C.Int;
      bQuiet : Interfaces.C.Int
   ) return HRESULT;
   pragma import (Cpp,LoadStringRC,"LoadStringRC");
   function LoadStringRCEx(
      lcid_x : LCID;
      iResouceID : UINT;
      szBuffer : LPWSTR;
      iMax : Interfaces.C.Int;
      bQuiet : Interfaces.C.Int;
      pcwchUsed : access Interfaces.C.Int
   ) return HRESULT;
   pragma import (Cpp,LoadStringRCEx,"LoadStringRCEx");
   type FLockClrVersionCallback is access function  return HRESULT; -- HRESULT ()
   pragma Convention(C,FLockClrVersionCallback);
   function LockClrVersion(
      hostCallback : FLockClrVersionCallback;
      pBeginHostSetup : access FLockClrVersionCallback;
      pEndHostSetup : access FLockClrVersionCallback
   ) return HRESULT;
   pragma import (Cpp,LockClrVersion,"LockClrVersion");
   function CreateDebuggingInterfaceFromVersion(
      iDebuggerVersion : Interfaces.C.Int;
      szDebuggeeVersion : LPCWSTR;
      ppCordb : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,CreateDebuggingInterfaceFromVersion,"CreateDebuggingInterfaceFromVersion");
   function GetVersionFromProcess(
      hProcess : HANDLE;
      pVersion : LPWSTR;
      cchBuffer : DWORD;
      dwLength : access DWORD
   ) return HRESULT;
   pragma import (Cpp,GetVersionFromProcess,"GetVersionFromProcess");
   type MIDL_MIDL_itf_mscoree_0000_0000_0001_x is (
      HOST_TYPE_DEFAULT,
      HOST_TYPE_APPLAUNCH,
      HOST_TYPE_CORFLAG
   );
   for MIDL_MIDL_itf_mscoree_0000_0000_0001_x use (
      HOST_TYPE_DEFAULT => 0,
      HOST_TYPE_APPLAUNCH => 1,
      HOST_TYPE_CORFLAG => 2
   );
   for MIDL_MIDL_itf_mscoree_0000_0000_0001_x'Size use 32;
   subtype HOST_TYPE is MIDL_MIDL_itf_mscoree_0000_0000_0001_x;
   function CorLaunchApplication(
      dwClickOnceHost : HOST_TYPE;
      pwzAppFullName : LPCWSTR;
      dwManifestPaths : DWORD;
      ppwzManifestPaths : access LPCWSTR;
      dwActivationData : DWORD;
      ppwzActivationData : access LPCWSTR;
      lpProcessInformation : LPPROCESS_INFORMATION
   ) return HRESULT;
   pragma import (Cpp,CorLaunchApplication,"CorLaunchApplication");
   type FExecuteInAppDomainCallback is access function (p1 : access void) return HRESULT; -- HRESULT (void *)
   pragma Convention(C,FExecuteInAppDomainCallback);
   type MIDL_MIDL_itf_mscoree_0000_0000_0002_x is (
      STARTUP_CONCURRENT_GC,
      STARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAIN,
      STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN,
      STARTUP_LOADER_OPTIMIZATION_MASK,
      STARTUP_LOADER_SAFEMODE,
      STARTUP_LOADER_SETPREFERENCE,
      STARTUP_SERVER_GC,
      STARTUP_HOARD_GC_VM,
      STARTUP_SINGLE_VERSION_HOSTING_INTERFACE,
      STARTUP_LEGACY_IMPERSONATION,
      STARTUP_DISABLE_COMMITTHREADSTACK,
      STARTUP_ALWAYSFLOW_IMPERSONATION,
      STARTUP_TRIM_GC_COMMIT,
      STARTUP_ETW,
      STARTUP_ARM
   );
   for MIDL_MIDL_itf_mscoree_0000_0000_0002_x use (
      STARTUP_CONCURRENT_GC => 1,
      STARTUP_LOADER_OPTIMIZATION_SINGLE_DOMAIN => 2,
      STARTUP_LOADER_OPTIMIZATION_MULTI_DOMAIN => 4,
      STARTUP_LOADER_OPTIMIZATION_MASK => 6,
      STARTUP_LOADER_SAFEMODE => 16,
      STARTUP_LOADER_SETPREFERENCE => 256,
      STARTUP_SERVER_GC => 4096,
      STARTUP_HOARD_GC_VM => 8192,
      STARTUP_SINGLE_VERSION_HOSTING_INTERFACE => 16384,
      STARTUP_LEGACY_IMPERSONATION => 65536,
      STARTUP_DISABLE_COMMITTHREADSTACK => 131072,
      STARTUP_ALWAYSFLOW_IMPERSONATION => 262144,
      STARTUP_TRIM_GC_COMMIT => 524288,
      STARTUP_ETW => 1048576,
      STARTUP_ARM => 4194304
   );
   for MIDL_MIDL_itf_mscoree_0000_0000_0002_x'Size use 32;
   subtype STARTUP_FLAGS is MIDL_MIDL_itf_mscoree_0000_0000_0002_x;
   type MIDL_MIDL_itf_mscoree_0000_0000_0003_x is (
      CLSID_RESOLUTION_DEFAULT,
      CLSID_RESOLUTION_REGISTERED
   );
   for MIDL_MIDL_itf_mscoree_0000_0000_0003_x use (
      CLSID_RESOLUTION_DEFAULT => 0,
      CLSID_RESOLUTION_REGISTERED => 1
   );
   for MIDL_MIDL_itf_mscoree_0000_0000_0003_x'Size use 32;
   subtype CLSID_RESOLUTION_FLAGS is MIDL_MIDL_itf_mscoree_0000_0000_0003_x;
   type MIDL_MIDL_itf_mscoree_0000_0000_0004_x is (
      RUNTIME_INFO_UPGRADE_VERSION,
      RUNTIME_INFO_REQUEST_IA64,
      RUNTIME_INFO_REQUEST_AMD64,
      RUNTIME_INFO_REQUEST_X86,
      RUNTIME_INFO_DONT_RETURN_DIRECTORY,
      RUNTIME_INFO_DONT_RETURN_VERSION,
      RUNTIME_INFO_DONT_SHOW_ERROR_DIALOG,
      RUNTIME_INFO_IGNORE_ERROR_MODE
   );
   for MIDL_MIDL_itf_mscoree_0000_0000_0004_x use (
      RUNTIME_INFO_UPGRADE_VERSION => 1,
      RUNTIME_INFO_REQUEST_IA64 => 2,
      RUNTIME_INFO_REQUEST_AMD64 => 4,
      RUNTIME_INFO_REQUEST_X86 => 8,
      RUNTIME_INFO_DONT_RETURN_DIRECTORY => 16,
      RUNTIME_INFO_DONT_RETURN_VERSION => 32,
      RUNTIME_INFO_DONT_SHOW_ERROR_DIALOG => 64,
      RUNTIME_INFO_IGNORE_ERROR_MODE => 4096
   );
   for MIDL_MIDL_itf_mscoree_0000_0000_0004_x'Size use 32;
   subtype RUNTIME_INFO_FLAGS is MIDL_MIDL_itf_mscoree_0000_0000_0004_x;
   type MIDL_MIDL_itf_mscoree_0000_0000_0005_x is (
      APPDOMAIN_SECURITY_DEFAULT,
      APPDOMAIN_SECURITY_SANDBOXED,
      APPDOMAIN_SECURITY_FORBID_CROSSAD_REVERSE_PINVOKE,
      APPDOMAIN_FORCE_TRIVIAL_WAIT_OPERATIONS
   );
   for MIDL_MIDL_itf_mscoree_0000_0000_0005_x use (
      APPDOMAIN_SECURITY_DEFAULT => 0,
      APPDOMAIN_SECURITY_SANDBOXED => 1,
      APPDOMAIN_SECURITY_FORBID_CROSSAD_REVERSE_PINVOKE => 2,
      APPDOMAIN_FORCE_TRIVIAL_WAIT_OPERATIONS => 8
   );
   for MIDL_MIDL_itf_mscoree_0000_0000_0005_x'Size use 32;
   subtype APPDOMAIN_SECURITY_FLAGS is MIDL_MIDL_itf_mscoree_0000_0000_0005_x;
   function GetRequestedRuntimeVersionForCLSID(
      rclsid : access constant IID;
      pVersion : LPWSTR;
      cchBuffer : DWORD;
      dwLength : access DWORD;
      dwResolutionFlags : CLSID_RESOLUTION_FLAGS
   ) return HRESULT;
   pragma import (Cpp,GetRequestedRuntimeVersionForCLSID,"GetRequestedRuntimeVersionForCLSID");
   type IObjectHandle is limited interface and IUnknown;
      function Unwrap(
         This : access IObjectHandle;
         ppv : access VARIANT
      ) return HRESULT is abstract;
   type IObjectHandle_Ptr is access all IObjectHandle'Class;
   IID_IAppDomainBinding : aliased constant IID;
   pragma import (C,IID_IAppDomainBinding,"IID_IAppDomainBinding");
   type IAppDomainBinding is limited interface and IUnknown;
      function OnAppDomain(
         This : access IAppDomainBinding;
         pAppdomain : access IUnknown'Class
      ) return HRESULT is abstract;
   type IAppDomainBinding_Ptr is access all IAppDomainBinding'Class;
   IID_IGCThreadControl : aliased constant IID;
   pragma import (C,IID_IGCThreadControl,"IID_IGCThreadControl");
   type IGCThreadControl is limited interface and IUnknown;
      function ThreadIsBlockingForSuspension(This : access IGCThreadControl) return HRESULT is abstract;
      function SuspensionStarting(This : access IGCThreadControl) return HRESULT is abstract;
      function SuspensionEnding(
         This : access IGCThreadControl;
         Generation : DWORD
      ) return HRESULT is abstract;
   type IGCThreadControl_Ptr is access all IGCThreadControl'Class;
   IID_IGCHostControl : aliased constant IID;
   pragma import (C,IID_IGCHostControl,"IID_IGCHostControl");
   type IGCHostControl is limited interface and IUnknown;
      function RequestVirtualMemLimit(
         This : access IGCHostControl;
         sztMaxVirtualMemMB : SIZE_T;
         psztNewMaxVirtualMemMB : access SIZE_T
      ) return HRESULT is abstract;
   type IGCHostControl_Ptr is access all IGCHostControl'Class;
   type PTLS_CALLBACK_FUNCTION is access procedure (p1 : PVOID); -- void (PVOID)
   pragma Convention(C,PTLS_CALLBACK_FUNCTION);
   type ICorThreadpool is limited interface and IUnknown;
      function CorRegisterWaitForSingleObject(
         This : access ICorThreadpool;
         phNewWaitObject : access HANDLE;
         hWaitObject : HANDLE;
         Callback : WAITORTIMERCALLBACK;
         Context_x : PVOID;
         timeout : ULONG;
         executeOnlyOnce : BOOL;
         result : access BOOL
      ) return HRESULT is abstract;
      function CorUnregisterWait(
         This : access ICorThreadpool;
         hWaitObject : HANDLE;
         CompletionEvent : HANDLE;
         result : access BOOL
      ) return HRESULT is abstract;
      function CorQueueUserWorkItem(
         This : access ICorThreadpool;
         function_x : LPTHREAD_START_ROUTINE;
         Context_x : PVOID;
         executeOnlyOnce : BOOL;
         result : access BOOL
      ) return HRESULT is abstract;
      function CorCreateTimer(
         This : access ICorThreadpool;
         phNewTimer : access HANDLE;
         Callback : WAITORTIMERCALLBACK;
         Parameter : PVOID;
         DueTime : DWORD;
         Period : DWORD;
         result : access BOOL
      ) return HRESULT is abstract;
      function CorChangeTimer(
         This : access ICorThreadpool;
         Timer : HANDLE;
         DueTime : ULONG;
         Period : ULONG;
         result : access BOOL
      ) return HRESULT is abstract;
      function CorDeleteTimer(
         This : access ICorThreadpool;
         Timer : HANDLE;
         CompletionEvent : HANDLE;
         result : access BOOL
      ) return HRESULT is abstract;
      function CorBindIoCompletionCallback(
         This : access ICorThreadpool;
         fileHandle : HANDLE;
         callback : LPOVERLAPPED_COMPLETION_ROUTINE
      ) return HRESULT is abstract;
      function CorCallOrQueueUserWorkItem(
         This : access ICorThreadpool;
         function_x : LPTHREAD_START_ROUTINE;
         Context_x : PVOID;
         result : access BOOL
      ) return HRESULT is abstract;
      function CorSetMaxThreads(
         This : access ICorThreadpool;
         MaxWorkerThreads : DWORD;
         MaxIOCompletionThreads : DWORD
      ) return HRESULT is abstract;
      function CorGetMaxThreads(
         This : access ICorThreadpool;
         MaxWorkerThreads : access DWORD;
         MaxIOCompletionThreads : access DWORD
      ) return HRESULT is abstract;
      function CorGetAvailableThreads(
         This : access ICorThreadpool;
         AvailableWorkerThreads : access DWORD;
         AvailableIOCompletionThreads : access DWORD
      ) return HRESULT is abstract;
   type ICorThreadpool_Ptr is access all ICorThreadpool'Class;
   IID_IDebuggerThreadControl : aliased constant IID;
   pragma import (C,IID_IDebuggerThreadControl,"IID_IDebuggerThreadControl");
   type IDebuggerThreadControl is limited interface and IUnknown;
      function ThreadIsBlockingForDebugger(This : access IDebuggerThreadControl) return HRESULT is abstract;
      function ReleaseAllRuntimeThreads(This : access IDebuggerThreadControl) return HRESULT is abstract;
      function StartBlockingForDebugger(
         This : access IDebuggerThreadControl;
         dwUnused : DWORD
      ) return HRESULT is abstract;
   type IDebuggerThreadControl_Ptr is access all IDebuggerThreadControl'Class;
   IID_IDebuggerInfo : aliased constant IID;
   pragma import (C,IID_IDebuggerInfo,"IID_IDebuggerInfo");
   type IDebuggerInfo is limited interface and IUnknown;
      function IsDebuggerAttached(
         This : access IDebuggerInfo;
         pbAttached : access BOOL
      ) return HRESULT is abstract;
   type IDebuggerInfo_Ptr is access all IDebuggerInfo'Class;
   IID_ICorConfiguration : aliased constant IID;
   pragma import (C,IID_ICorConfiguration,"IID_ICorConfiguration");
   type ICorConfiguration is limited interface and IUnknown;
      function SetGCThreadControl(
         This : access ICorConfiguration;
         pGCThreadControl : access IGCThreadControl'Class
      ) return HRESULT is abstract;
      function SetGCHostControl(
         This : access ICorConfiguration;
         pGCHostControl : access IGCHostControl'Class
      ) return HRESULT is abstract;
      function SetDebuggerThreadControl(
         This : access ICorConfiguration;
         pDebuggerThreadControl : access IDebuggerThreadControl'Class
      ) return HRESULT is abstract;
      function AddDebuggerSpecialThread(
         This : access ICorConfiguration;
         dwSpecialThreadId : DWORD
      ) return HRESULT is abstract;
   type ICorConfiguration_Ptr is access all ICorConfiguration'Class;
   type HDOMAINENUM is access all Void;
   type ICorRuntimeHost is limited interface and IUnknown;
      function CreateLogicalThreadState(This : access ICorRuntimeHost) return HRESULT is abstract;
      function DeleteLogicalThreadState(This : access ICorRuntimeHost) return HRESULT is abstract;
      function SwitchInLogicalThreadState(
         This : access ICorRuntimeHost;
         pFiberCookie : access DWORD
      ) return HRESULT is abstract;
      function SwitchOutLogicalThreadState(
         This : access ICorRuntimeHost;
         pFiberCookie : access PDWORD
      ) return HRESULT is abstract;
      function LocksHeldByLogicalThread(
         This : access ICorRuntimeHost;
         pCount : access DWORD
      ) return HRESULT is abstract;
      function MapFile(
         This : access ICorRuntimeHost;
         hFile_x : HANDLE;
         hMapAddress : access HMODULE
      ) return HRESULT is abstract;
      function GetConfiguration(
         This : access ICorRuntimeHost;
         pConfiguration : access ICorConfiguration_Ptr
      ) return HRESULT is abstract;
      function Start(This : access ICorRuntimeHost) return HRESULT is abstract;
      function Stop(This : access ICorRuntimeHost) return HRESULT is abstract;
      function CreateDomain(
         This : access ICorRuntimeHost;
         pwzFriendlyName : LPCWSTR;
         pIdentityArray : access IUnknown'Class;
         pAppDomain : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function GetDefaultDomain(
         This : access ICorRuntimeHost;
         pAppDomain : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function EnumDomains(
         This : access ICorRuntimeHost;
         hEnum : access HDOMAINENUM
      ) return HRESULT is abstract;
      function NextDomain(
         This : access ICorRuntimeHost;
         hEnum : HDOMAINENUM;
         pAppDomain : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function CloseEnum(
         This : access ICorRuntimeHost;
         hEnum : HDOMAINENUM
      ) return HRESULT is abstract;
      function CreateDomainEx(
         This : access ICorRuntimeHost;
         pwzFriendlyName : LPCWSTR;
         pSetup : access IUnknown'Class;
         pEvidence : access IUnknown'Class;
         pAppDomain : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function CreateDomainSetup(
         This : access ICorRuntimeHost;
         pAppDomainSetup : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function CreateEvidence(
         This : access ICorRuntimeHost;
         pEvidence : access IUnknown_Ptr
      ) return HRESULT is abstract;
      function UnloadDomain(
         This : access ICorRuntimeHost;
         pAppDomain : access IUnknown'Class
      ) return HRESULT is abstract;
      function CurrentDomain(
         This : access ICorRuntimeHost;
         pAppDomain : access IUnknown_Ptr
      ) return HRESULT is abstract;
   type ICorRuntimeHost_Ptr is access all ICorRuntimeHost'Class;
   type MIDL_MIDL_itf_mscoree_0000_0009_0001_x is (
      eMemoryAvailableLow,
      eMemoryAvailableNeutral,
      eMemoryAvailableHigh
   );
   for MIDL_MIDL_itf_mscoree_0000_0009_0001_x use (
      eMemoryAvailableLow => 1,
      eMemoryAvailableNeutral => 2,
      eMemoryAvailableHigh => 3
   );
   for MIDL_MIDL_itf_mscoree_0000_0009_0001_x'Size use 32;
   subtype EMemoryAvailable is MIDL_MIDL_itf_mscoree_0000_0009_0001_x;
   type MIDL_MIDL_itf_mscoree_0000_0009_0002_x is (
      eTaskCritical,
      eAppDomainCritical,
      eProcessCritical
   );
   for MIDL_MIDL_itf_mscoree_0000_0009_0002_x use (
      eTaskCritical => 0,
      eAppDomainCritical => 1,
      eProcessCritical => 2
   );
   for MIDL_MIDL_itf_mscoree_0000_0009_0002_x'Size use 32;
   subtype EMemoryCriticalLevel is MIDL_MIDL_itf_mscoree_0000_0009_0002_x;
   type MIDL_MIDL_itf_mscoree_0000_0009_0003_x is (
      WAIT_MSGPUMP,
      WAIT_ALERTABLE,
      WAIT_NOTINDEADLOCK
   );
   for MIDL_MIDL_itf_mscoree_0000_0009_0003_x use (
      WAIT_MSGPUMP => 1,
      WAIT_ALERTABLE => 2,
      WAIT_NOTINDEADLOCK => 4
   );
   for MIDL_MIDL_itf_mscoree_0000_0009_0003_x'Size use 32;
   subtype WAIT_OPTION is MIDL_MIDL_itf_mscoree_0000_0009_0003_x;
   IID_ICLRMemoryNotificationCallback : aliased constant IID;
   pragma import (C,IID_ICLRMemoryNotificationCallback,"IID_ICLRMemoryNotificationCallback");
   type ICLRMemoryNotificationCallback is limited interface and IUnknown;
      function OnMemoryNotification(
         This : access ICLRMemoryNotificationCallback;
         eMemoryAvailable_x : EMemoryAvailable
      ) return HRESULT is abstract;
   type ICLRMemoryNotificationCallback_Ptr is access all ICLRMemoryNotificationCallback'Class;
   type IHostMalloc is limited interface and IUnknown;
      function Alloc(
         This : access IHostMalloc;
         cbSize : SIZE_T;
         eCriticalLevel : EMemoryCriticalLevel;
         ppMem : access LPVOID
      ) return HRESULT is abstract;
      function DebugAlloc(
         This : access IHostMalloc;
         cbSize : SIZE_T;
         eCriticalLevel : EMemoryCriticalLevel;
         pszFileName : access Character;
         iLineNo : Interfaces.C.Int;
         ppMem : access LPVOID
      ) return HRESULT is abstract;
      function Free_x(
         This : access IHostMalloc;
         pMem : access Void
      ) return HRESULT is abstract;
   type IHostMalloc_Ptr is access all IHostMalloc'Class;
   type MIDL_MIDL_itf_mscoree_0000_0011_0001_x is (
      MALLOC_THREADSAFE,
      MALLOC_EXECUTABLE
   );
   for MIDL_MIDL_itf_mscoree_0000_0011_0001_x use (
      MALLOC_THREADSAFE => 1,
      MALLOC_EXECUTABLE => 2
   );
   for MIDL_MIDL_itf_mscoree_0000_0011_0001_x'Size use 32;
   subtype MALLOC_TYPE is MIDL_MIDL_itf_mscoree_0000_0011_0001_x;
   type IHostMemoryManager is limited interface and IUnknown;
      function CreateMalloc(
         This : access IHostMemoryManager;
         dwMallocType : DWORD;
         ppMalloc : access IHostMalloc_Ptr
      ) return HRESULT is abstract;
      function VirtualAlloc_x(
         This : access IHostMemoryManager;
         pAddress : access Void;
         dwSize : SIZE_T;
         flAllocationType : DWORD;
         flProtect : DWORD;
         eCriticalLevel : EMemoryCriticalLevel;
         ppMem : access LPVOID
      ) return HRESULT is abstract;
      function VirtualFree_x(
         This : access IHostMemoryManager;
         lpAddress : LPVOID;
         dwSize : SIZE_T;
         dwFreeType : DWORD
      ) return HRESULT is abstract;
      function VirtualQuery_x(
         This : access IHostMemoryManager;
         lpAddress : access Void;
         lpBuffer : access Void;
         dwLength : SIZE_T;
         pResult : access SIZE_T
      ) return HRESULT is abstract;
      function VirtualProtect_x(
         This : access IHostMemoryManager;
         lpAddress : access Void;
         dwSize : SIZE_T;
         flNewProtect : DWORD;
         pflOldProtect : access DWORD
      ) return HRESULT is abstract;
      function GetMemoryLoad(
         This : access IHostMemoryManager;
         pMemoryLoad : access DWORD;
         pAvailableBytes : access SIZE_T
      ) return HRESULT is abstract;
      function RegisterMemoryNotificationCallback(
         This : access IHostMemoryManager;
         pCallback : access ICLRMemoryNotificationCallback'Class
      ) return HRESULT is abstract;
      function NeedsVirtualAddressSpace(
         This : access IHostMemoryManager;
         startAddress : LPVOID;
         size_x : SIZE_T
      ) return HRESULT is abstract;
      function AcquiredVirtualAddressSpace(
         This : access IHostMemoryManager;
         startAddress : LPVOID;
         size_x : SIZE_T
      ) return HRESULT is abstract;
      function ReleasedVirtualAddressSpace(
         This : access IHostMemoryManager;
         startAddress : LPVOID
      ) return HRESULT is abstract;
   type IHostMemoryManager_Ptr is access all IHostMemoryManager'Class;
   subtype TASKID is UINT64;
   subtype CONNID is DWORD;
   type ICLRTask is limited interface and IUnknown;
      function SwitchIn(
         This : access ICLRTask;
         threadHandle_x : HANDLE
      ) return HRESULT is abstract;
      function SwitchOut(This : access ICLRTask) return HRESULT is abstract;
      function GetMemStats(
         This : access ICLRTask;
         memUsage : access COR_GC_THREAD_STATS
      ) return HRESULT is abstract;
      function Reset(
         This : access ICLRTask;
         fFull : BOOL
      ) return HRESULT is abstract;
      function ExitTask(This : access ICLRTask) return HRESULT is abstract;
      function abort_x_x(This : access ICLRTask) return HRESULT is abstract;
      function RudeAbort(This : access ICLRTask) return HRESULT is abstract;
      function NeedsPriorityScheduling(
         This : access ICLRTask;
         pbNeedsPriorityScheduling : access BOOL
      ) return HRESULT is abstract;
      function YieldTask(This : access ICLRTask) return HRESULT is abstract;
      function LocksHeld(
         This : access ICLRTask;
         pLockCount : access SIZE_T
      ) return HRESULT is abstract;
      function SetTaskIdentifier(
         This : access ICLRTask;
         asked : TASKID
      ) return HRESULT is abstract;
   type ICLRTask_Ptr is access all ICLRTask'Class;
   type ICLRTask2 is limited interface and ICLRTask;
      function BeginPreventAsyncAbort(This : access ICLRTask2) return HRESULT is abstract;
      function EndPreventAsyncAbort(This : access ICLRTask2) return HRESULT is abstract;
   type ICLRTask2_Ptr is access all ICLRTask2'Class;
   type IHostTask is limited interface and IUnknown;
      function Start(This : access IHostTask) return HRESULT is abstract;
      function Alert(This : access IHostTask) return HRESULT is abstract;
      function Join(
         This : access IHostTask;
         dwMilliseconds : DWORD;
         option : DWORD
      ) return HRESULT is abstract;
      function SetPriority(
         This : access IHostTask;
         newPriority : Interfaces.C.Int
      ) return HRESULT is abstract;
      function GetPriority(
         This : access IHostTask;
         pPriority : access Interfaces.C.Int
      ) return HRESULT is abstract;
      function SetCLRTask(
         This : access IHostTask;
         pCLRTask : access ICLRTask'Class
      ) return HRESULT is abstract;
   type IHostTask_Ptr is access all IHostTask'Class;
   type ETaskType is (
      TT_UNKNOWN,
      TT_DEBUGGERHELPER,
      TT_GC,
      TT_FINALIZER,
      TT_THREADPOOL_TIMER,
      TT_THREADPOOL_GATE,
      TT_THREADPOOL_WORKER,
      TT_THREADPOOL_IOCOMPLETION,
      TT_ADUNLOAD,
      TT_USER,
      TT_THREADPOOL_WAIT
   );
   for ETaskType use (
      TT_UNKNOWN => -2147483648,
      TT_DEBUGGERHELPER => 1,
      TT_GC => 2,
      TT_FINALIZER => 4,
      TT_THREADPOOL_TIMER => 8,
      TT_THREADPOOL_GATE => 16,
      TT_THREADPOOL_WORKER => 32,
      TT_THREADPOOL_IOCOMPLETION => 64,
      TT_ADUNLOAD => 128,
      TT_USER => 256,
      TT_THREADPOOL_WAIT => 512
   );
   for ETaskType'Size use 32;
   type ICLRTaskManager is limited interface and IUnknown;
      function CreateTask(
         This : access ICLRTaskManager;
         pTask : access ICLRTask_Ptr
      ) return HRESULT is abstract;
      function GetCurrentTask(
         This : access ICLRTaskManager;
         pTask : access ICLRTask_Ptr
      ) return HRESULT is abstract;
      function SetUILocale(
         This : access ICLRTaskManager;
         lcid_x : LCID
      ) return HRESULT is abstract;
      function SetLocale(
         This : access ICLRTaskManager;
         lcid_x : LCID
      ) return HRESULT is abstract;
      function GetCurrentTaskType(
         This : access ICLRTaskManager;
         pTaskType : access ETaskType
      ) return HRESULT is abstract;
   type ICLRTaskManager_Ptr is access all ICLRTaskManager'Class;
   type IHostTaskManager is limited interface and IUnknown;
      function GetCurrentTask(
         This : access IHostTaskManager;
         pTask : access IHostTask_Ptr
      ) return HRESULT is abstract;
      function CreateTask(
         This : access IHostTaskManager;
         dwStackSize : DWORD;
         pStartAddress : LPTHREAD_START_ROUTINE;
         pParameter : PVOID;
         ppTask : access IHostTask_Ptr
      ) return HRESULT is abstract;
      function Sleep_x_x(
         This : access IHostTaskManager;
         dwMilliseconds : DWORD;
         option : DWORD
      ) return HRESULT is abstract;
      function SwitchToTask(
         This : access IHostTaskManager;
         option : DWORD
      ) return HRESULT is abstract;
      function SetUILocale(
         This : access IHostTaskManager;
         lcid_x : LCID
      ) return HRESULT is abstract;
      function SetLocale(
         This : access IHostTaskManager;
         lcid_x : LCID
      ) return HRESULT is abstract;
      function CallNeedsHostHook(
         This : access IHostTaskManager;
         target : SIZE_T;
         pbCallNeedsHostHook : access BOOL
      ) return HRESULT is abstract;
      function LeaveRuntime(
         This : access IHostTaskManager;
         target : SIZE_T
      ) return HRESULT is abstract;
      function EnterRuntime(This : access IHostTaskManager) return HRESULT is abstract;
      function ReverseLeaveRuntime(This : access IHostTaskManager) return HRESULT is abstract;
      function ReverseEnterRuntime(This : access IHostTaskManager) return HRESULT is abstract;
      function BeginDelayAbort(This : access IHostTaskManager) return HRESULT is abstract;
      function EndDelayAbort(This : access IHostTaskManager) return HRESULT is abstract;
      function BeginThreadAffinity(This : access IHostTaskManager) return HRESULT is abstract;
      function EndThreadAffinity(This : access IHostTaskManager) return HRESULT is abstract;
      function SetStackGuarantee(
         This : access IHostTaskManager;
         guarantee : ULONG
      ) return HRESULT is abstract;
      function GetStackGuarantee(
         This : access IHostTaskManager;
         pGuarantee : access ULONG
      ) return HRESULT is abstract;
      function SetCLRTaskManager(
         This : access IHostTaskManager;
         ppManager : access ICLRTaskManager'Class
      ) return HRESULT is abstract;
   type IHostTaskManager_Ptr is access all IHostTaskManager'Class;
   type IHostThreadpoolManager is limited interface and IUnknown;
      function QueueUserWorkItem_x(
         This : access IHostThreadpoolManager;
         function_x : LPTHREAD_START_ROUTINE;
         Context_x : PVOID;
         Flags : ULONG
      ) return HRESULT is abstract;
      function SetMaxThreads(
         This : access IHostThreadpoolManager;
         dwMaxWorkerThreads : DWORD
      ) return HRESULT is abstract;
      function GetMaxThreads(
         This : access IHostThreadpoolManager;
         pdwMaxWorkerThreads : access DWORD
      ) return HRESULT is abstract;
      function GetAvailableThreads(
         This : access IHostThreadpoolManager;
         pdwAvailableWorkerThreads : access DWORD
      ) return HRESULT is abstract;
      function SetMinThreads(
         This : access IHostThreadpoolManager;
         dwMinIOCompletionThreads : DWORD
      ) return HRESULT is abstract;
      function GetMinThreads(
         This : access IHostThreadpoolManager;
         pdwMinIOCompletionThreads : access DWORD
      ) return HRESULT is abstract;
   type IHostThreadpoolManager_Ptr is access all IHostThreadpoolManager'Class;
   type ICLRIoCompletionManager is limited interface and IUnknown;
      function OnComplete(
         This : access ICLRIoCompletionManager;
         dwErrorCode : DWORD;
         NumberOfBytesTransferred : DWORD;
         pvOverlapped : access Void
      ) return HRESULT is abstract;
   type ICLRIoCompletionManager_Ptr is access all ICLRIoCompletionManager'Class;
   type IHostIoCompletionManager is limited interface and IUnknown;
      function CreateIoCompletionPort_x(
         This : access IHostIoCompletionManager;
         phPort : access HANDLE
      ) return HRESULT is abstract;
      function CloseIoCompletionPort(
         This : access IHostIoCompletionManager;
         hPort : HANDLE
      ) return HRESULT is abstract;
      function SetMaxThreads(
         This : access IHostIoCompletionManager;
         dwMaxIOCompletionThreads : DWORD
      ) return HRESULT is abstract;
      function GetMaxThreads(
         This : access IHostIoCompletionManager;
         pdwMaxIOCompletionThreads : access DWORD
      ) return HRESULT is abstract;
      function GetAvailableThreads(
         This : access IHostIoCompletionManager;
         pdwAvailableIOCompletionThreads : access DWORD
      ) return HRESULT is abstract;
      function GetHostOverlappedSize(
         This : access IHostIoCompletionManager;
         pcbSize : access DWORD
      ) return HRESULT is abstract;
      function SetCLRIoCompletionManager(
         This : access IHostIoCompletionManager;
         pManager : access ICLRIoCompletionManager'Class
      ) return HRESULT is abstract;
      function InitializeHostOverlapped(
         This : access IHostIoCompletionManager;
         pvOverlapped : access Void
      ) return HRESULT is abstract;
      function Bind_x(
         This : access IHostIoCompletionManager;
         hPort : HANDLE;
         hHandle_x : HANDLE
      ) return HRESULT is abstract;
      function SetMinThreads(
         This : access IHostIoCompletionManager;
         dwMinIOCompletionThreads : DWORD
      ) return HRESULT is abstract;
      function GetMinThreads(
         This : access IHostIoCompletionManager;
         pdwMinIOCompletionThreads : access DWORD
      ) return HRESULT is abstract;
   type IHostIoCompletionManager_Ptr is access all IHostIoCompletionManager'Class;
   type MIDL_MIDL_itf_mscoree_0000_0020_0001_x is (
      eSymbolReadingNever,
      eSymbolReadingAlways,
      eSymbolReadingFullTrustOnly
   );
   for MIDL_MIDL_itf_mscoree_0000_0020_0001_x use (
      eSymbolReadingNever => 0,
      eSymbolReadingAlways => 1,
      eSymbolReadingFullTrustOnly => 2
   );
   for MIDL_MIDL_itf_mscoree_0000_0020_0001_x'Size use 32;
   subtype ESymbolReadingPolicy is MIDL_MIDL_itf_mscoree_0000_0020_0001_x;
   type ICLRDebugManager is limited interface and IUnknown;
      function BeginConnection(
         This : access ICLRDebugManager;
         dwConnectionId : CONNID;
         szConnectionName : access Wide_Character
      ) return HRESULT is abstract;
      function SetConnectionTasks(
         This : access ICLRDebugManager;
         id : CONNID;
         dwCount : DWORD;
         ppCLRTask : access ICLRTask_Ptr
      ) return HRESULT is abstract;
      function EndConnection(
         This : access ICLRDebugManager;
         dwConnectionId : CONNID
      ) return HRESULT is abstract;
      function SetDacl(
         This : access ICLRDebugManager;
         pacl_x : PACL
      ) return HRESULT is abstract;
      function GetDacl(
         This : access ICLRDebugManager;
         pacl_x : access PACL
      ) return HRESULT is abstract;
      function IsDebuggerAttached(
         This : access ICLRDebugManager;
         pbAttached : access BOOL
      ) return HRESULT is abstract;
      function SetSymbolReadingPolicy(
         This : access ICLRDebugManager;
         policy : ESymbolReadingPolicy
      ) return HRESULT is abstract;
   type ICLRDebugManager_Ptr is access all ICLRDebugManager'Class;
   type MIDL_MIDL_itf_mscoree_0000_0021_0001_x is (
      DUMP_FLAVOR_Mini,
      DUMP_FLAVOR_CriticalCLRState,
      DUMP_FLAVOR_NonHeapCLRState
   );
   for MIDL_MIDL_itf_mscoree_0000_0021_0001_x use (
      DUMP_FLAVOR_Mini => 0,
      DUMP_FLAVOR_CriticalCLRState => 1,
      DUMP_FLAVOR_NonHeapCLRState => 2
   );
   for MIDL_MIDL_itf_mscoree_0000_0021_0001_x'Size use 32;
   subtype ECustomDumpFlavor is MIDL_MIDL_itf_mscoree_0000_0021_0001_x;
   type MIDL_MIDL_itf_mscoree_0000_0021_0002_x is (
      DUMP_ITEM_None
   );
   for MIDL_MIDL_itf_mscoree_0000_0021_0002_x use (
      DUMP_ITEM_None => 0
   );
   for MIDL_MIDL_itf_mscoree_0000_0021_0002_x'Size use 32;
   subtype ECustomDumpItemKind is MIDL_MIDL_itf_mscoree_0000_0021_0002_x;
   type Anonymous_Record_297 (Discriminant : Interfaces.C.unsigned := 0) is record -- Union
      case Discriminant is
         when others => 
            pReserved : UINT_PTR;
      end case;
   end record;
   pragma Convention (C_Pass_By_Copy,Anonymous_Record_297);
   pragma Unchecked_Union (Anonymous_Record_297);
   for Anonymous_Record_297'Size use 64;
   for Anonymous_Record_297'Alignment use 8;
   type MIDL_MIDL_itf_mscoree_0000_0021_0003_x is record
      itemKind : ECustomDumpItemKind;
      field_1 : Anonymous_Record_297;
   end record;
   pragma Convention (C_Pass_By_Copy,MIDL_MIDL_itf_mscoree_0000_0021_0003_x);
   for MIDL_MIDL_itf_mscoree_0000_0021_0003_x use record
      itemKind at 0 range 0..31;
      field_1 at 0 range 32..95;
   end record;
   for MIDL_MIDL_itf_mscoree_0000_0021_0003_x'Size use 128;
   for MIDL_MIDL_itf_mscoree_0000_0021_0003_x'Alignment use 8;
   subtype CustomDumpItem is MIDL_MIDL_itf_mscoree_0000_0021_0003_x;
   type MIDL_MIDL_itf_mscoree_0000_0021_0005_x is (
      Parameter1,
      Parameter2,
      Parameter3,
      Parameter4,
      Parameter5,
      Parameter6,
      Parameter7,
      Parameter8,
      Parameter9,
      InvalidBucketParamIndex
   );
   for MIDL_MIDL_itf_mscoree_0000_0021_0005_x use (
      Parameter1 => 0,
      Parameter2 => 1,
      Parameter3 => 2,
      Parameter4 => 3,
      Parameter5 => 4,
      Parameter6 => 5,
      Parameter7 => 6,
      Parameter8 => 7,
      Parameter9 => 8,
      InvalidBucketParamIndex => 9
   );
   for MIDL_MIDL_itf_mscoree_0000_0021_0005_x'Size use 32;
   subtype BucketParameterIndex is MIDL_MIDL_itf_mscoree_0000_0021_0005_x;
   type BucketParameters_x_pszEventTypeName_Array is array(1..255) of WCHAR; -- Auto Generated Dependancy
   type BucketParameters_x_pszParams_Array is array(1..10,1..255) of WCHAR; -- Auto Generated Dependancy
   type BucketParameters_x is record
      fInited : BOOL;
      pszEventTypeName : BucketParameters_x_pszEventTypeName_Array;
      pszParams : BucketParameters_x_pszParams_Array;
   end record;
   pragma Convention (C_Pass_By_Copy,BucketParameters_x);
   for BucketParameters_x use record
      fInited at 0 range 0..31;
      pszEventTypeName at 0 range 32..4111;
      pszParams at 0 range 4112..44911;
   end record;
   for BucketParameters_x'Size use 44928;
   for BucketParameters_x'Alignment use 4;
   subtype BucketParameters is BucketParameters_x;
   type ICLRErrorReportingManager is limited interface and IUnknown;
      function GetBucketParametersForCurrentException(
         This : access ICLRErrorReportingManager;
         pParams : access BucketParameters
      ) return HRESULT is abstract;
      function BeginCustomDump(
         This : access ICLRErrorReportingManager;
         dwFlavor : ECustomDumpFlavor;
         dwNumItems : DWORD;
         items : access CustomDumpItem;
         dwReserved : DWORD
      ) return HRESULT is abstract;
      function EndCustomDump(This : access ICLRErrorReportingManager) return HRESULT is abstract;
   type ICLRErrorReportingManager_Ptr is access all ICLRErrorReportingManager'Class;
   type IHostCrst is limited interface and IUnknown;
      function Enter(
         This : access IHostCrst;
         option : DWORD
      ) return HRESULT is abstract;
      function Leave(This : access IHostCrst) return HRESULT is abstract;
      function TryEnter(
         This : access IHostCrst;
         option : DWORD;
         pbSucceeded : access BOOL
      ) return HRESULT is abstract;
      function SetSpinCount(
         This : access IHostCrst;
         dwSpinCount : DWORD
      ) return HRESULT is abstract;
   type IHostCrst_Ptr is access all IHostCrst'Class;
   type IHostAutoEvent is limited interface and IUnknown;
      function Wait(
         This : access IHostAutoEvent;
         dwMilliseconds : DWORD;
         option : DWORD
      ) return HRESULT is abstract;
      function Set(This : access IHostAutoEvent) return HRESULT is abstract;
   type IHostAutoEvent_Ptr is access all IHostAutoEvent'Class;
   type IHostManualEvent is limited interface and IUnknown;
      function Wait(
         This : access IHostManualEvent;
         dwMilliseconds : DWORD;
         option : DWORD
      ) return HRESULT is abstract;
      function Reset(This : access IHostManualEvent) return HRESULT is abstract;
      function Set(This : access IHostManualEvent) return HRESULT is abstract;
   type IHostManualEvent_Ptr is access all IHostManualEvent'Class;
   type IHostSemaphore is limited interface and IUnknown;
      function Wait(
         This : access IHostSemaphore;
         dwMilliseconds : DWORD;
         option : DWORD
      ) return HRESULT is abstract;
      function ReleaseSemaphore_x(
         This : access IHostSemaphore;
         lReleaseCount : LONG;
         lpPreviousCount : access LONG
      ) return HRESULT is abstract;
   type IHostSemaphore_Ptr is access all IHostSemaphore'Class;
   type ICLRSyncManager is limited interface and IUnknown;
      function GetMonitorOwner(
         This : access ICLRSyncManager;
         Cookie : SIZE_T;
         ppOwnerHostTask : access IHostTask_Ptr
      ) return HRESULT is abstract;
      function CreateRWLockOwnerIterator(
         This : access ICLRSyncManager;
         Cookie : SIZE_T;
         pIterator : access SIZE_T
      ) return HRESULT is abstract;
      function GetRWLockOwnerNext(
         This : access ICLRSyncManager;
         Iterator : SIZE_T;
         ppOwnerHostTask : access IHostTask_Ptr
      ) return HRESULT is abstract;
      function DeleteRWLockOwnerIterator(
         This : access ICLRSyncManager;
         Iterator : SIZE_T
      ) return HRESULT is abstract;
   type ICLRSyncManager_Ptr is access all ICLRSyncManager'Class;
   type IHostSyncManager is limited interface and IUnknown;
      function SetCLRSyncManager(
         This : access IHostSyncManager;
         pManager : access ICLRSyncManager'Class
      ) return HRESULT is abstract;
      function CreateCrst(
         This : access IHostSyncManager;
         ppCrst : access IHostCrst_Ptr
      ) return HRESULT is abstract;
      function CreateCrstWithSpinCount(
         This : access IHostSyncManager;
         dwSpinCount : DWORD;
         ppCrst : access IHostCrst_Ptr
      ) return HRESULT is abstract;
      function CreateAutoEvent(
         This : access IHostSyncManager;
         ppEvent : access IHostAutoEvent_Ptr
      ) return HRESULT is abstract;
      function CreateManualEvent(
         This : access IHostSyncManager;
         bInitialState : BOOL;
         ppEvent : access IHostManualEvent_Ptr
      ) return HRESULT is abstract;
      function CreateMonitorEvent(
         This : access IHostSyncManager;
         Cookie : SIZE_T;
         ppEvent : access IHostAutoEvent_Ptr
      ) return HRESULT is abstract;
      function CreateRWLockWriterEvent(
         This : access IHostSyncManager;
         Cookie : SIZE_T;
         ppEvent : access IHostAutoEvent_Ptr
      ) return HRESULT is abstract;
      function CreateRWLockReaderEvent(
         This : access IHostSyncManager;
         bInitialState : BOOL;
         Cookie : SIZE_T;
         ppEvent : access IHostManualEvent_Ptr
      ) return HRESULT is abstract;
      function CreateSemaphoreA_x(
         This : access IHostSyncManager;
         dwInitial : DWORD;
         dwMax : DWORD;
         ppSemaphore : access IHostSemaphore_Ptr
      ) return HRESULT is abstract;
   type IHostSyncManager_Ptr is access all IHostSyncManager'Class;
   type MIDL_MIDL_itf_mscoree_0000_0028_0001_x is (
      OPR_ThreadAbort,
      OPR_ThreadRudeAbortInNonCriticalRegion,
      OPR_ThreadRudeAbortInCriticalRegion,
      OPR_AppDomainUnload,
      OPR_AppDomainRudeUnload,
      OPR_ProcessExit,
      OPR_FinalizerRun,
      MaxClrOperation
   );
   for MIDL_MIDL_itf_mscoree_0000_0028_0001_x use (
      OPR_ThreadAbort => 0,
      OPR_ThreadRudeAbortInNonCriticalRegion => 1,
      OPR_ThreadRudeAbortInCriticalRegion => 2,
      OPR_AppDomainUnload => 3,
      OPR_AppDomainRudeUnload => 4,
      OPR_ProcessExit => 5,
      OPR_FinalizerRun => 6,
      MaxClrOperation => 7
   );
   for MIDL_MIDL_itf_mscoree_0000_0028_0001_x'Size use 32;
   subtype EClrOperation is MIDL_MIDL_itf_mscoree_0000_0028_0001_x;
   type MIDL_MIDL_itf_mscoree_0000_0028_0002_x is (
      FAIL_NonCriticalResource,
      FAIL_CriticalResource,
      FAIL_FatalRuntime,
      FAIL_OrphanedLock,
      FAIL_StackOverflow,
      FAIL_AccessViolation,
      FAIL_CodeContract,
      MaxClrFailure
   );
   for MIDL_MIDL_itf_mscoree_0000_0028_0002_x use (
      FAIL_NonCriticalResource => 0,
      FAIL_CriticalResource => 1,
      FAIL_FatalRuntime => 2,
      FAIL_OrphanedLock => 3,
      FAIL_StackOverflow => 4,
      FAIL_AccessViolation => 5,
      FAIL_CodeContract => 6,
      MaxClrFailure => 7
   );
   for MIDL_MIDL_itf_mscoree_0000_0028_0002_x'Size use 32;
   subtype EClrFailure is MIDL_MIDL_itf_mscoree_0000_0028_0002_x;
   type MIDL_MIDL_itf_mscoree_0000_0028_0003_x is (
      eRuntimeDeterminedPolicy,
      eHostDeterminedPolicy
   );
   for MIDL_MIDL_itf_mscoree_0000_0028_0003_x use (
      eRuntimeDeterminedPolicy => 0,
      eHostDeterminedPolicy => 1
   );
   for MIDL_MIDL_itf_mscoree_0000_0028_0003_x'Size use 32;
   subtype EClrUnhandledException is MIDL_MIDL_itf_mscoree_0000_0028_0003_x;
   type MIDL_MIDL_itf_mscoree_0000_0028_0004_x is (
      eNoAction,
      eThrowException,
      eAbortThread,
      eRudeAbortThread,
      eUnloadAppDomain,
      eRudeUnloadAppDomain,
      eExitProcess,
      eFastExitProcess,
      eRudeExitProcess,
      eDisableRuntime,
      MaxPolicyAction
   );
   for MIDL_MIDL_itf_mscoree_0000_0028_0004_x use (
      eNoAction => 0,
      eThrowException => 1,
      eAbortThread => 2,
      eRudeAbortThread => 3,
      eUnloadAppDomain => 4,
      eRudeUnloadAppDomain => 5,
      eExitProcess => 6,
      eFastExitProcess => 7,
      eRudeExitProcess => 8,
      eDisableRuntime => 9,
      MaxPolicyAction => 10
   );
   for MIDL_MIDL_itf_mscoree_0000_0028_0004_x'Size use 32;
   subtype EPolicyAction is MIDL_MIDL_itf_mscoree_0000_0028_0004_x;
   type ICLRPolicyManager is limited interface and IUnknown;
      function SetDefaultAction(
         This : access ICLRPolicyManager;
         operation : EClrOperation;
         action : EPolicyAction
      ) return HRESULT is abstract;
      function SetTimeout(
         This : access ICLRPolicyManager;
         operation : EClrOperation;
         dwMilliseconds : DWORD
      ) return HRESULT is abstract;
      function SetActionOnTimeout(
         This : access ICLRPolicyManager;
         operation : EClrOperation;
         action : EPolicyAction
      ) return HRESULT is abstract;
      function SetTimeoutAndAction(
         This : access ICLRPolicyManager;
         operation : EClrOperation;
         dwMilliseconds : DWORD;
         action : EPolicyAction
      ) return HRESULT is abstract;
      function SetActionOnFailure(
         This : access ICLRPolicyManager;
         failure : EClrFailure;
         action : EPolicyAction
      ) return HRESULT is abstract;
      function SetUnhandledExceptionPolicy(
         This : access ICLRPolicyManager;
         policy : EClrUnhandledException
      ) return HRESULT is abstract;
   type ICLRPolicyManager_Ptr is access all ICLRPolicyManager'Class;
   type IHostPolicyManager is limited interface and IUnknown;
      function OnDefaultAction(
         This : access IHostPolicyManager;
         operation : EClrOperation;
         action : EPolicyAction
      ) return HRESULT is abstract;
      function OnTimeout(
         This : access IHostPolicyManager;
         operation : EClrOperation;
         action : EPolicyAction
      ) return HRESULT is abstract;
      function OnFailure(
         This : access IHostPolicyManager;
         failure : EClrFailure;
         action : EPolicyAction
      ) return HRESULT is abstract;
   type IHostPolicyManager_Ptr is access all IHostPolicyManager'Class;
   type MIDL_MIDL_itf_mscoree_0000_0030_0001_x is (
      Event_DomainUnload,
      Event_ClrDisabled,
      Event_MDAFired,
      Event_StackOverflow,
      MaxClrEvent
   );
   for MIDL_MIDL_itf_mscoree_0000_0030_0001_x use (
      Event_DomainUnload => 0,
      Event_ClrDisabled => 1,
      Event_MDAFired => 2,
      Event_StackOverflow => 3,
      MaxClrEvent => 4
   );
   for MIDL_MIDL_itf_mscoree_0000_0030_0001_x'Size use 32;
   subtype EClrEvent is MIDL_MIDL_itf_mscoree_0000_0030_0001_x;
   type MDAInfo_x is record
      lpMDACaption : LPCWSTR;
      lpMDAMessage : LPCWSTR;
      lpStackTrace : LPCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,MDAInfo_x);
   for MDAInfo_x use record
      lpMDACaption at 0 range 0..63;
      lpMDAMessage at 0 range 64..127;
      lpStackTrace at 0 range 128..191;
   end record;
   for MDAInfo_x'Size use 192;
   for MDAInfo_x'Alignment use 8;
   subtype MDAInfo is MDAInfo_x;
   type MIDL_MIDL_itf_mscoree_0000_0030_0002_x is (
      SO_Managed,
      SO_ClrEngine,
      SO_Other
   );
   for MIDL_MIDL_itf_mscoree_0000_0030_0002_x use (
      SO_Managed => 0,
      SO_ClrEngine => 1,
      SO_Other => 2
   );
   for MIDL_MIDL_itf_mscoree_0000_0030_0002_x'Size use 32;
   subtype StackOverflowType is MIDL_MIDL_itf_mscoree_0000_0030_0002_x;
   type StackOverflowInfo_x is record
      soType : StackOverflowType;
      pExceptionInfo : access EXCEPTION_POINTERS;
   end record;
   pragma Convention (C_Pass_By_Copy,StackOverflowInfo_x);
   for StackOverflowInfo_x use record
      soType at 0 range 0..31;
      pExceptionInfo at 0 range 64..127;
   end record;
   for StackOverflowInfo_x'Size use 128;
   for StackOverflowInfo_x'Alignment use 8;
   subtype StackOverflowInfo is StackOverflowInfo_x;
   type IActionOnCLREvent is limited interface and IUnknown;
      function OnEvent(
         This : access IActionOnCLREvent;
         event : EClrEvent;
         data : PVOID
      ) return HRESULT is abstract;
   type IActionOnCLREvent_Ptr is access all IActionOnCLREvent'Class;
   type ICLROnEventManager is limited interface and IUnknown;
      function RegisterActionOnEvent(
         This : access ICLROnEventManager;
         event : EClrEvent;
         pAction : access IActionOnCLREvent'Class
      ) return HRESULT is abstract;
      function UnregisterActionOnEvent(
         This : access ICLROnEventManager;
         event : EClrEvent;
         pAction : access IActionOnCLREvent'Class
      ) return HRESULT is abstract;
   type ICLROnEventManager_Ptr is access all ICLROnEventManager'Class;
   type IHostGCManager is limited interface and IUnknown;
      function ThreadIsBlockingForSuspension(This : access IHostGCManager) return HRESULT is abstract;
      function SuspensionStarting(This : access IHostGCManager) return HRESULT is abstract;
      function SuspensionEnding(
         This : access IHostGCManager;
         Generation : DWORD
      ) return HRESULT is abstract;
   type IHostGCManager_Ptr is access all IHostGCManager'Class;
   type ICLRAssemblyReferenceList is limited interface and IUnknown;
      function IsStringAssemblyReferenceInList(
         This : access ICLRAssemblyReferenceList;
         pwzAssemblyName : LPCWSTR
      ) return HRESULT is abstract;
      function IsAssemblyReferenceInList(
         This : access ICLRAssemblyReferenceList;
         pName : access IUnknown'Class
      ) return HRESULT is abstract;
   type ICLRAssemblyReferenceList_Ptr is access all ICLRAssemblyReferenceList'Class;
   type ICLRReferenceAssemblyEnum is limited interface and IUnknown;
      function Get(
         This : access ICLRReferenceAssemblyEnum;
         dwIndex : DWORD;
         pwzBuffer : LPWSTR;
         pcchBufferSize : access DWORD
      ) return HRESULT is abstract;
   type ICLRReferenceAssemblyEnum_Ptr is access all ICLRReferenceAssemblyEnum'Class;
   type ICLRProbingAssemblyEnum is limited interface and IUnknown;
      function Get(
         This : access ICLRProbingAssemblyEnum;
         dwIndex : DWORD;
         pwzBuffer : LPWSTR;
         pcchBufferSize : access DWORD
      ) return HRESULT is abstract;
   type ICLRProbingAssemblyEnum_Ptr is access all ICLRProbingAssemblyEnum'Class;
   type CLRAssemblyIdentityFlags_x is (
      CLR_ASSEMBLY_IDENTITY_FLAGS_DEFAULT
   );
   for CLRAssemblyIdentityFlags_x use (
      CLR_ASSEMBLY_IDENTITY_FLAGS_DEFAULT => 0
   );
   for CLRAssemblyIdentityFlags_x'Size use 32;
   subtype ECLRAssemblyIdentityFlags is CLRAssemblyIdentityFlags_x;
   type ICLRAssemblyIdentityManager is limited interface and IUnknown;
      function GetCLRAssemblyReferenceList(
         This : access ICLRAssemblyIdentityManager;
         ppwzAssemblyReferences : access LPCWSTR;
         dwNumOfReferences : DWORD;
         ppReferenceList : access ICLRAssemblyReferenceList_Ptr
      ) return HRESULT is abstract;
      function GetBindingIdentityFromFile(
         This : access ICLRAssemblyIdentityManager;
         pwzFilePath : LPCWSTR;
         dwFlags : DWORD;
         pwzBuffer : LPWSTR;
         pcchBufferSize : access DWORD
      ) return HRESULT is abstract;
      function GetBindingIdentityFromStream(
         This : access ICLRAssemblyIdentityManager;
         pStream : access IStream'Class;
         dwFlags : DWORD;
         pwzBuffer : LPWSTR;
         pcchBufferSize : access DWORD
      ) return HRESULT is abstract;
      function GetReferencedAssembliesFromFile(
         This : access ICLRAssemblyIdentityManager;
         pwzFilePath : LPCWSTR;
         dwFlags : DWORD;
         pExcludeAssembliesList : access ICLRAssemblyReferenceList'Class;
         ppReferenceEnum : access ICLRReferenceAssemblyEnum_Ptr
      ) return HRESULT is abstract;
      function GetReferencedAssembliesFromStream(
         This : access ICLRAssemblyIdentityManager;
         pStream : access IStream'Class;
         dwFlags : DWORD;
         pExcludeAssembliesList : access ICLRAssemblyReferenceList'Class;
         ppReferenceEnum : access ICLRReferenceAssemblyEnum_Ptr
      ) return HRESULT is abstract;
      function GetProbingAssembliesFromReference(
         This : access ICLRAssemblyIdentityManager;
         dwMachineType : DWORD;
         dwFlags : DWORD;
         pwzReferenceIdentity : LPCWSTR;
         ppProbingAssemblyEnum : access ICLRProbingAssemblyEnum_Ptr
      ) return HRESULT is abstract;
      function IsStronglyNamed(
         This : access ICLRAssemblyIdentityManager;
         pwzAssemblyIdentity : LPCWSTR;
         pbIsStronglyNamed : access BOOL
      ) return HRESULT is abstract;
   type ICLRAssemblyIdentityManager_Ptr is access all ICLRAssemblyIdentityManager'Class;
   type hostBiningPolicyModifyFlags_x is (
      HOST_BINDING_POLICY_MODIFY_DEFAULT,
      HOST_BINDING_POLICY_MODIFY_CHAIN,
      HOST_BINDING_POLICY_MODIFY_REMOVE,
      HOST_BINDING_POLICY_MODIFY_MAX
   );
   for hostBiningPolicyModifyFlags_x use (
      HOST_BINDING_POLICY_MODIFY_DEFAULT => 0,
      HOST_BINDING_POLICY_MODIFY_CHAIN => 1,
      HOST_BINDING_POLICY_MODIFY_REMOVE => 2,
      HOST_BINDING_POLICY_MODIFY_MAX => 3
   );
   for hostBiningPolicyModifyFlags_x'Size use 32;
   subtype EHostBindingPolicyModifyFlags is hostBiningPolicyModifyFlags_x;
   type ICLRHostBindingPolicyManager is limited interface and IUnknown;
      function ModifyApplicationPolicy(
         This : access ICLRHostBindingPolicyManager;
         pwzSourceAssemblyIdentity : LPCWSTR;
         pwzTargetAssemblyIdentity : LPCWSTR;
         pbApplicationPolicy : access BYTE;
         cbAppPolicySize : DWORD;
         dwPolicyModifyFlags : DWORD;
         pbNewApplicationPolicy : access BYTE;
         pcbNewAppPolicySize : access DWORD
      ) return HRESULT is abstract;
      function EvaluatePolicy(
         This : access ICLRHostBindingPolicyManager;
         pwzReferenceIdentity : LPCWSTR;
         pbApplicationPolicy : access BYTE;
         cbAppPolicySize : DWORD;
         pwzPostPolicyReferenceIdentity : LPWSTR;
         pcchPostPolicyReferenceIdentity : access DWORD;
         pdwPoliciesApplied : access DWORD
      ) return HRESULT is abstract;
   type ICLRHostBindingPolicyManager_Ptr is access all ICLRHostBindingPolicyManager'Class;
   type ICLRGCManager is limited interface and IUnknown;
      function Collect(
         This : access ICLRGCManager;
         Generation : LONG
      ) return HRESULT is abstract;
      function GetStats(
         This : access ICLRGCManager;
         pStats : access COR_GC_STATS
      ) return HRESULT is abstract;
      function SetGCStartupLimits(
         This : access ICLRGCManager;
         SegmentSize : DWORD;
         MaxGen0Size : DWORD
      ) return HRESULT is abstract;
   type ICLRGCManager_Ptr is access all ICLRGCManager'Class;
   type ICLRGCManager2 is limited interface and ICLRGCManager;
      function SetGCStartupLimitsEx(
         This : access ICLRGCManager2;
         SegmentSize : SIZE_T;
         MaxGen0Size : SIZE_T
      ) return HRESULT is abstract;
   type ICLRGCManager2_Ptr is access all ICLRGCManager2'Class;
   type MIDL_MIDL_itf_mscoree_0000_0040_0001_x is (
      ePolicyLevelNone,
      ePolicyLevelRetargetable,
      ePolicyUnifiedToCLR,
      ePolicyLevelApp,
      ePolicyLevelPublisher,
      ePolicyLevelHost,
      ePolicyLevelAdmin,
      ePolicyPortability
   );
   for MIDL_MIDL_itf_mscoree_0000_0040_0001_x use (
      ePolicyLevelNone => 0,
      ePolicyLevelRetargetable => 1,
      ePolicyUnifiedToCLR => 2,
      ePolicyLevelApp => 4,
      ePolicyLevelPublisher => 8,
      ePolicyLevelHost => 16,
      ePolicyLevelAdmin => 32,
      ePolicyPortability => 64
   );
   for MIDL_MIDL_itf_mscoree_0000_0040_0001_x'Size use 32;
   subtype EBindPolicyLevels is MIDL_MIDL_itf_mscoree_0000_0040_0001_x;
   type AssemblyBindInfo_x is record
      dwAppDomainId : DWORD;
      lpReferencedIdentity : LPCWSTR;
      lpPostPolicyIdentity : LPCWSTR;
      ePolicyLevel : DWORD;
   end record;
   pragma Convention (C_Pass_By_Copy,AssemblyBindInfo_x);
   for AssemblyBindInfo_x use record
      dwAppDomainId at 0 range 0..31;
      lpReferencedIdentity at 0 range 64..127;
      lpPostPolicyIdentity at 0 range 128..191;
      ePolicyLevel at 0 range 192..223;
   end record;
   for AssemblyBindInfo_x'Size use 256;
   for AssemblyBindInfo_x'Alignment use 8;
   subtype AssemblyBindInfo is AssemblyBindInfo_x;
   type ModuleBindInfo_x is record
      dwAppDomainId : DWORD;
      lpAssemblyIdentity : LPCWSTR;
      lpModuleName : LPCWSTR;
   end record;
   pragma Convention (C_Pass_By_Copy,ModuleBindInfo_x);
   for ModuleBindInfo_x use record
      dwAppDomainId at 0 range 0..31;
      lpAssemblyIdentity at 0 range 64..127;
      lpModuleName at 0 range 128..191;
   end record;
   for ModuleBindInfo_x'Size use 192;
   for ModuleBindInfo_x'Alignment use 8;
   subtype ModuleBindInfo is ModuleBindInfo_x;
   type HostApplicationPolicy_x is (
      HOST_APPLICATION_BINDING_POLICY
   );
   for HostApplicationPolicy_x use (
      HOST_APPLICATION_BINDING_POLICY => 1
   );
   for HostApplicationPolicy_x'Size use 32;
   subtype EHostApplicationPolicy is HostApplicationPolicy_x;
   type IHostAssemblyStore is limited interface and IUnknown;
      function ProvideAssembly(
         This : access IHostAssemblyStore;
         pBindInfo : access AssemblyBindInfo;
         pAssemblyId : access UINT64;
         pContext_x : access UINT64;
         ppStmAssemblyImage : access IStream_Ptr;
         ppStmPDB : access IStream_Ptr
      ) return HRESULT is abstract;
      function ProvideModule(
         This : access IHostAssemblyStore;
         pBindInfo : access ModuleBindInfo;
         pdwModuleId : access DWORD;
         ppStmModuleImage : access IStream_Ptr;
         ppStmPDB : access IStream_Ptr
      ) return HRESULT is abstract;
   type IHostAssemblyStore_Ptr is access all IHostAssemblyStore'Class;
   type IHostAssemblyManager is limited interface and IUnknown;
      function GetNonHostStoreAssemblies(
         This : access IHostAssemblyManager;
         ppReferenceList : access ICLRAssemblyReferenceList_Ptr
      ) return HRESULT is abstract;
      function GetAssemblyStore(
         This : access IHostAssemblyManager;
         ppAssemblyStore : access IHostAssemblyStore_Ptr
      ) return HRESULT is abstract;
   type IHostAssemblyManager_Ptr is access all IHostAssemblyManager'Class;
   function GetCLRIdentityManager(
      riid : access constant IID;
      ppManager : access IUnknown_Ptr
   ) return HRESULT;
   pragma import (Cpp,GetCLRIdentityManager,"GetCLRIdentityManager");
   IID_IHostControl : aliased constant IID;
   pragma import (C,IID_IHostControl,"IID_IHostControl");
   type IHostControl is limited interface and IUnknown;
      function GetHostManager(
         This : access IHostControl;
         riid : access constant IID;
         ppObject : access LPVOID
      ) return HRESULT is abstract;
      function SetAppDomainManager(
         This : access IHostControl;
         dwAppDomainID : DWORD;
         pUnkAppDomainManager : access IUnknown'Class
      ) return HRESULT is abstract;
   type IHostControl_Ptr is access all IHostControl'Class;
   IID_ICLRControl : aliased constant IID;
   pragma import (C,IID_ICLRControl,"IID_ICLRControl");
   type ICLRControl is limited interface and IUnknown;
      function GetCLRManager(
         This : access ICLRControl;
         riid : access constant IID;
         ppObject : access LPVOID
      ) return HRESULT is abstract;
      function SetAppDomainManagerType(
         This : access ICLRControl;
         pwzAppDomainManagerAssembly : LPCWSTR;
         pwzAppDomainManagerType : LPCWSTR
      ) return HRESULT is abstract;
   type ICLRControl_Ptr is access all ICLRControl'Class;
   type ICLRRuntimeHost is limited interface and IUnknown;
      function Start(This : access ICLRRuntimeHost) return HRESULT is abstract;
      function Stop(This : access ICLRRuntimeHost) return HRESULT is abstract;
      function SetHostControl(
         This : access ICLRRuntimeHost;
         pHostControl : access IHostControl'Class
      ) return HRESULT is abstract;
      function GetCLRControl(
         This : access ICLRRuntimeHost;
         pCLRControl : access ICLRControl_Ptr
      ) return HRESULT is abstract;
      function UnloadAppDomain(
         This : access ICLRRuntimeHost;
         dwAppDomainId : DWORD;
         fWaitUntilDone : BOOL
      ) return HRESULT is abstract;
      function ExecuteInAppDomain(
         This : access ICLRRuntimeHost;
         dwAppDomainId : DWORD;
         pCallback : FExecuteInAppDomainCallback;
         cookie : access Void
      ) return HRESULT is abstract;
      function GetCurrentAppDomainId(
         This : access ICLRRuntimeHost;
         pdwAppDomainId : access DWORD
      ) return HRESULT is abstract;
      function ExecuteApplication(
         This : access ICLRRuntimeHost;
         pwzAppFullName : LPCWSTR;
         dwManifestPaths : DWORD;
         ppwzManifestPaths : access LPCWSTR;
         dwActivationData : DWORD;
         ppwzActivationData : access LPCWSTR;
         pReturnValue : access Interfaces.C.Int
      ) return HRESULT is abstract;
      function ExecuteInDefaultAppDomain(
         This : access ICLRRuntimeHost;
         pwzAssemblyPath : LPCWSTR;
         pwzTypeName : LPCWSTR;
         pwzMethodName : LPCWSTR;
         pwzArgument : LPCWSTR;
         pReturnValue : access DWORD
      ) return HRESULT is abstract;
   type ICLRRuntimeHost_Ptr is access all ICLRRuntimeHost'Class;
   type MIDL_MIDL_itf_mscoree_0000_0045_0001_x is (
      eNoChecks,
      eSynchronization,
      eSharedState,
      eExternalProcessMgmt,
      eSelfAffectingProcessMgmt,
      eExternalThreading,
      eSelfAffectingThreading,
      eSecurityInfrastructure,
      eUI,
      eMayLeakOnAbort,
      eAll
   );
   for MIDL_MIDL_itf_mscoree_0000_0045_0001_x use (
      eNoChecks => 0,
      eSynchronization => 1,
      eSharedState => 2,
      eExternalProcessMgmt => 4,
      eSelfAffectingProcessMgmt => 8,
      eExternalThreading => 16,
      eSelfAffectingThreading => 32,
      eSecurityInfrastructure => 64,
      eUI => 128,
      eMayLeakOnAbort => 256,
      eAll => 511
   );
   for MIDL_MIDL_itf_mscoree_0000_0045_0001_x'Size use 32;
   subtype EApiCategories is MIDL_MIDL_itf_mscoree_0000_0045_0001_x;
   type ICLRHostProtectionManager is limited interface and IUnknown;
      function SetProtectedCategories(
         This : access ICLRHostProtectionManager;
         categories : EApiCategories
      ) return HRESULT is abstract;
      function SetEagerSerializeGrantSets(This : access ICLRHostProtectionManager) return HRESULT is abstract;
   type ICLRHostProtectionManager_Ptr is access all ICLRHostProtectionManager'Class;
   type MIDL_MIDL_itf_mscoree_0000_0046_0001_x is (
      eInitializeNewDomainFlags_None,
      eInitializeNewDomainFlags_NoSecurityChanges
   );
   for MIDL_MIDL_itf_mscoree_0000_0046_0001_x use (
      eInitializeNewDomainFlags_None => 0,
      eInitializeNewDomainFlags_NoSecurityChanges => 2
   );
   for MIDL_MIDL_itf_mscoree_0000_0046_0001_x'Size use 32;
   subtype EInitializeNewDomainFlags is MIDL_MIDL_itf_mscoree_0000_0046_0001_x;
   type ICLRDomainManager is limited interface and IUnknown;
      function SetAppDomainManagerType(
         This : access ICLRDomainManager;
         wszAppDomainManagerAssembly : LPCWSTR;
         wszAppDomainManagerType : LPCWSTR;
         dwInitializeDomainFlags : EInitializeNewDomainFlags
      ) return HRESULT is abstract;
      function SetPropertiesForDefaultAppDomain(
         This : access ICLRDomainManager;
         nProperties : DWORD;
         pwszPropertyNames : access LPCWSTR;
         pwszPropertyValues : access LPCWSTR
      ) return HRESULT is abstract;
   type ICLRDomainManager_Ptr is access all ICLRDomainManager'Class;
   type ITypeName_Ptr is access all ITypeName; -- Auto Generated Dependancy
   type ITypeName is limited interface and IUnknown;
      function GetNameCount(
         This : access ITypeName;
         pCount : access DWORD
      ) return HRESULT is abstract;
      function GetNames(
         This : access ITypeName;
         count : DWORD;
         rgbszNames : access BSTR;
         pCount : access DWORD
      ) return HRESULT is abstract;
      function GetTypeArgumentCount(
         This : access ITypeName;
         pCount : access DWORD
      ) return HRESULT is abstract;
      function GetTypeArguments(
         This : access ITypeName;
         count : DWORD;
         rgpArguments : access ITypeName_Ptr;
         pCount : access DWORD
      ) return HRESULT is abstract;
      function GetModifierLength(
         This : access ITypeName;
         pCount : access DWORD
      ) return HRESULT is abstract;
      function GetModifiers(
         This : access ITypeName;
         count : DWORD;
         rgModifiers : access DWORD;
         pCount : access DWORD
      ) return HRESULT is abstract;
      function GetAssemblyName(
         This : access ITypeName;
         rgbszAssemblyNames : access BSTR
      ) return HRESULT is abstract;
   type ITypeNameBuilder is limited interface and IUnknown;
      function OpenGenericArguments(This : access ITypeNameBuilder) return HRESULT is abstract;
      function CloseGenericArguments(This : access ITypeNameBuilder) return HRESULT is abstract;
      function OpenGenericArgument(This : access ITypeNameBuilder) return HRESULT is abstract;
      function CloseGenericArgument(This : access ITypeNameBuilder) return HRESULT is abstract;
      function AddName(
         This : access ITypeNameBuilder;
         szName : LPCWSTR
      ) return HRESULT is abstract;
      function AddPointer(This : access ITypeNameBuilder) return HRESULT is abstract;
      function AddByRef(This : access ITypeNameBuilder) return HRESULT is abstract;
      function AddSzArray(This : access ITypeNameBuilder) return HRESULT is abstract;
      function AddArray(
         This : access ITypeNameBuilder;
         rank : DWORD
      ) return HRESULT is abstract;
      function AddAssemblySpec(
         This : access ITypeNameBuilder;
         szAssemblySpec : LPCWSTR
      ) return HRESULT is abstract;
      function ToString(
         This : access ITypeNameBuilder;
         pszStringRepresentation : access BSTR
      ) return HRESULT is abstract;
      function Clear(This : access ITypeNameBuilder) return HRESULT is abstract;
   type ITypeNameBuilder_Ptr is access all ITypeNameBuilder'Class;
   type ITypeNameFactory is limited interface and IUnknown;
      function ParseTypeName(
         This : access ITypeNameFactory;
         szName : LPCWSTR;
         pError_x : access DWORD;
         ppTypeName : access ITypeName_Ptr
      ) return HRESULT is abstract;
      function GetTypeNameBuilder(
         This : access ITypeNameFactory;
         ppTypeBuilder : access ITypeNameBuilder_Ptr
      ) return HRESULT is abstract;
   type ITypeNameFactory_Ptr is access all ITypeNameFactory'Class;
   type IApartmentCallback is limited interface and IUnknown;
      function DoCallback(
         This : access IApartmentCallback;
         pFunc : SIZE_T;
         pData : SIZE_T
      ) return HRESULT is abstract;
   type IApartmentCallback_Ptr is access all IApartmentCallback'Class;
   type IManagedObject is limited interface and IUnknown;
      function GetSerializedBuffer(
         This : access IManagedObject;
         pBSTR : access BSTR
      ) return HRESULT is abstract;
      function GetObjectIdentity(
         This : access IManagedObject;
         pBSTRGUID : access BSTR;
         AppDomainID : access Interfaces.C.Int;
         pCCW : access Interfaces.C.Int
      ) return HRESULT is abstract;
   type IManagedObject_Ptr is access all IManagedObject'Class;
   type ICatalogServices is limited interface and IUnknown;
      function Autodone(This : access ICatalogServices) return HRESULT is abstract;
      function NotAutodone(This : access ICatalogServices) return HRESULT is abstract;
   type ICatalogServices_Ptr is access all ICatalogServices'Class;
   type MIDL_MIDL_itf_mscoree_0000_0048_0001_x is (
      eCurrentContext,
      eRestrictedContext
   );
   for MIDL_MIDL_itf_mscoree_0000_0048_0001_x use (
      eCurrentContext => 0,
      eRestrictedContext => 1
   );
   for MIDL_MIDL_itf_mscoree_0000_0048_0001_x'Size use 32;
   subtype EContextType is MIDL_MIDL_itf_mscoree_0000_0048_0001_x;
   type IHostSecurityContext_Ptr is access all IHostSecurityContext; -- Auto Generated Dependancy
   type IHostSecurityContext is limited interface and IUnknown;
      function Capture(
         This : access IHostSecurityContext;
         ppClonedContext : access IHostSecurityContext_Ptr
      ) return HRESULT is abstract;
   type IHostSecurityManager is limited interface and IUnknown;
      function ImpersonateLoggedOnUser_x(
         This : access IHostSecurityManager;
         hToken : HANDLE
      ) return HRESULT is abstract;
      function RevertToSelf_x(This : access IHostSecurityManager) return HRESULT is abstract;
      function OpenThreadToken_x(
         This : access IHostSecurityManager;
         dwDesiredAccess : DWORD;
         bOpenAsSelf : BOOL;
         phThreadToken : access HANDLE
      ) return HRESULT is abstract;
      function SetThreadToken_x(
         This : access IHostSecurityManager;
         hToken : HANDLE
      ) return HRESULT is abstract;
      function GetSecurityContext(
         This : access IHostSecurityManager;
         eContextType_x : EContextType;
         ppSecurityContext : access IHostSecurityContext_Ptr
      ) return HRESULT is abstract;
      function SetSecurityContext(
         This : access IHostSecurityManager;
         eContextType_x : EContextType;
         pSecurityContext : access IHostSecurityContext'Class
      ) return HRESULT is abstract;
   type IHostSecurityManager_Ptr is access all IHostSecurityManager'Class;
   type ICLRAppDomainResourceMonitor is limited interface and IUnknown;
      function GetCurrentAllocated(
         This : access ICLRAppDomainResourceMonitor;
         dwAppDomainId : DWORD;
         pBytesAllocated : access ULONGLONG
      ) return HRESULT is abstract;
      function GetCurrentSurvived(
         This : access ICLRAppDomainResourceMonitor;
         dwAppDomainId : DWORD;
         pAppDomainBytesSurvived : access ULONGLONG;
         pTotalBytesSurvived : access ULONGLONG
      ) return HRESULT is abstract;
      function GetCurrentCpuTime(
         This : access ICLRAppDomainResourceMonitor;
         dwAppDomainId : DWORD;
         pMilliseconds : access ULONGLONG
      ) return HRESULT is abstract;
   type ICLRAppDomainResourceMonitor_Ptr is access all ICLRAppDomainResourceMonitor'Class;
   -- #include <metahost.h>
   function CLRCreateInstance(
      clsid_x : access constant IID;
      riid : access constant IID;
      ppInterface : access LPVOID
   ) return HRESULT;
   pragma import (Cpp,CLRCreateInstance,"CLRCreateInstance");
   IID_ICLRMetaHost : aliased constant IID;
   pragma import (C,IID_ICLRMetaHost,"IID_ICLRMetaHost");
   IID_ICLRMetaHostPolicy : aliased constant IID;
   pragma import (C,IID_ICLRMetaHostPolicy,"IID_ICLRMetaHostPolicy");
   IID_ICLRDebugging : aliased constant IID;
   pragma import (C,IID_ICLRDebugging,"IID_ICLRDebugging");
   IID_ICLRRuntimeInfo : aliased constant IID;
   pragma import (C,IID_ICLRRuntimeInfo,"IID_ICLRRuntimeInfo");
   IID_ICLRStrongName : aliased constant IID;
   pragma import (C,IID_ICLRStrongName,"IID_ICLRStrongName");
   IID_ICLRStrongName2 : aliased constant IID;
   pragma import (C,IID_ICLRStrongName2,"IID_ICLRStrongName2");
   IID_ICLRStrongName3 : aliased constant IID;
   pragma import (C,IID_ICLRStrongName3,"IID_ICLRStrongName3");
   IID_ICLRProfiling : aliased constant IID;
   pragma import (C,IID_ICLRProfiling,"IID_ICLRProfiling");
   IID_ICLRDebuggingLibraryProvider : aliased constant IID;
   pragma import (C,IID_ICLRDebuggingLibraryProvider,"IID_ICLRDebuggingLibraryProvider");
   type CLRCreateInstanceFnPtr is access function (p1 : access IID ; p2 : access IID ; p3 : access LPVOID) return HRESULT; -- HRESULT (const IID &, const IID &, LPVOID *)
   pragma Convention(C,CLRCreateInstanceFnPtr);
   type CreateInterfaceFnPtr is access function (p1 : access IID ; p2 : access IID ; p3 : access LPVOID) return HRESULT; -- HRESULT (const IID &, const IID &, LPVOID *)
   pragma Convention(C,CreateInterfaceFnPtr);
   type CallbackThreadSetFnPtr is access function  return HRESULT; -- HRESULT ()
   pragma Convention(C,CallbackThreadSetFnPtr);
   type CallbackThreadUnsetFnPtr is access function  return HRESULT; -- HRESULT ()
   pragma Convention(C,CallbackThreadUnsetFnPtr);
   type RuntimeLoadedCallbackFnPtr is access procedure (p1 : access ICLRRuntimeInfo ; p2 : CallbackThreadSetFnPtr ; p3 : CallbackThreadUnsetFnPtr); -- void (ICLRRuntimeInfo *, CallbackThreadSetFnPtr, CallbackThreadUnsetFnPtr)
   pragma Convention(C,RuntimeLoadedCallbackFnPtr);
   type ICLRMetaHost is limited interface and IUnknown;
      function GetRuntime(
         This : access ICLRMetaHost;
         pwzVersion : LPCWSTR;
         riid : access constant IID;
         ppRuntime : access LPVOID
      ) return HRESULT is abstract;
      function GetVersionFromFile(
         This : access ICLRMetaHost;
         pwzFilePath : LPCWSTR;
         pwzBuffer : LPWSTR;
         pcchBuffer : access DWORD
      ) return HRESULT is abstract;
      function EnumerateInstalledRuntimes(
         This : access ICLRMetaHost;
         ppEnumerator : access IEnumUnknown_Ptr
      ) return HRESULT is abstract;
      function EnumerateLoadedRuntimes(
         This : access ICLRMetaHost;
         hndProcess : HANDLE;
         ppEnumerator : access IEnumUnknown_Ptr
      ) return HRESULT is abstract;
      function RequestRuntimeLoadedNotification(
         This : access ICLRMetaHost;
         pCallbackFunction : RuntimeLoadedCallbackFnPtr
      ) return HRESULT is abstract;
      function QueryLegacyV2RuntimeBinding(
         This : access ICLRMetaHost;
         riid : access constant IID;
         ppUnk : access LPVOID
      ) return HRESULT is abstract;
      function ExitProcess_x(
         This : access ICLRMetaHost;
         iExitCode : INT32
      ) return HRESULT is abstract;
   type ICLRMetaHost_Ptr is access all ICLRMetaHost'Class;
   type MIDL_MIDL_itf_metahost_0000_0001_0001_x is (
      METAHOST_POLICY_HIGHCOMPAT,
      METAHOST_POLICY_APPLY_UPGRADE_POLICY,
      METAHOST_POLICY_EMULATE_EXE_LAUNCH,
      METAHOST_POLICY_SHOW_ERROR_DIALOG,
      METAHOST_POLICY_USE_PROCESS_IMAGE_PATH,
      METAHOST_POLICY_ENSURE_SKU_SUPPORTED,
      METAHOST_POLICY_IGNORE_ERROR_MODE
   );
   for MIDL_MIDL_itf_metahost_0000_0001_0001_x use (
      METAHOST_POLICY_HIGHCOMPAT => 0,
      METAHOST_POLICY_APPLY_UPGRADE_POLICY => 8,
      METAHOST_POLICY_EMULATE_EXE_LAUNCH => 16,
      METAHOST_POLICY_SHOW_ERROR_DIALOG => 32,
      METAHOST_POLICY_USE_PROCESS_IMAGE_PATH => 64,
      METAHOST_POLICY_ENSURE_SKU_SUPPORTED => 128,
      METAHOST_POLICY_IGNORE_ERROR_MODE => 4096
   );
   for MIDL_MIDL_itf_metahost_0000_0001_0001_x'Size use 32;
   subtype METAHOST_POLICY_FLAGS is MIDL_MIDL_itf_metahost_0000_0001_0001_x;
   type MIDL_MIDL_itf_metahost_0000_0001_0002_x is (
      METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_UNSET,
      METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_TRUE,
      METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_FALSE,
      METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_MASK
   );
   for MIDL_MIDL_itf_metahost_0000_0001_0002_x use (
      METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_UNSET => 0,
      METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_TRUE => 1,
      METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_FALSE => 2,
      METAHOST_CONFIG_FLAGS_LEGACY_V2_ACTIVATION_POLICY_MASK => 3
   );
   for MIDL_MIDL_itf_metahost_0000_0001_0002_x'Size use 32;
   subtype METAHOST_CONFIG_FLAGS is MIDL_MIDL_itf_metahost_0000_0001_0002_x;
   type ICLRMetaHostPolicy is limited interface and IUnknown;
      function GetRequestedRuntime(
         This : access ICLRMetaHostPolicy;
         dwPolicyFlags : METAHOST_POLICY_FLAGS;
         pwzBinary : LPCWSTR;
         pCfgStream : access IStream'Class;
         pwzVersion : LPWSTR;
         pcchVersion : access DWORD;
         pwzImageVersion : LPWSTR;
         pcchImageVersion : access DWORD;
         pdwConfigFlags : access DWORD;
         riid : access constant IID;
         ppRuntime : access LPVOID
      ) return HRESULT is abstract;
   type ICLRMetaHostPolicy_Ptr is access all ICLRMetaHostPolicy'Class;
   type ICLRProfiling is limited interface and IUnknown;
      function AttachProfiler(
         This : access ICLRProfiling;
         dwProfileeProcessID : DWORD;
         dwMillisecondsMax : DWORD;
         pClsidProfiler : access constant CLSID;
         wszProfilerPath : LPCWSTR;
         pvClientData : access Void;
         cbClientData : UINT
      ) return HRESULT is abstract;
   type ICLRProfiling_Ptr is access all ICLRProfiling'Class;
   type CLR_DEBUGGING_VERSION_x is record
      wStructVersion : WORD;
      wMajor : WORD;
      wMinor : WORD;
      wBuild : WORD;
      wRevision : WORD;
   end record;
   pragma Convention (C_Pass_By_Copy,CLR_DEBUGGING_VERSION_x);
   for CLR_DEBUGGING_VERSION_x use record
      wStructVersion at 0 range 0..15;
      wMajor at 0 range 16..31;
      wMinor at 0 range 32..47;
      wBuild at 0 range 48..63;
      wRevision at 0 range 64..79;
   end record;
   for CLR_DEBUGGING_VERSION_x'Size use 80;
   for CLR_DEBUGGING_VERSION_x'Alignment use 2;
   subtype CLR_DEBUGGING_VERSION is CLR_DEBUGGING_VERSION_x;
   type MIDL_MIDL_itf_metahost_0000_0003_0001_x is (
      CLR_DEBUGGING_MANAGED_EVENT_PENDING,
      CLR_DEBUGGING_MANAGED_EVENT_DEBUGGER_LAUNCH
   );
   for MIDL_MIDL_itf_metahost_0000_0003_0001_x use (
      CLR_DEBUGGING_MANAGED_EVENT_PENDING => 1,
      CLR_DEBUGGING_MANAGED_EVENT_DEBUGGER_LAUNCH => 2
   );
   for MIDL_MIDL_itf_metahost_0000_0003_0001_x'Size use 32;
   subtype CLR_DEBUGGING_PROCESS_FLAGS is MIDL_MIDL_itf_metahost_0000_0003_0001_x;
   type ICLRDebuggingLibraryProvider is limited interface and IUnknown;
      function ProvideLibrary(
         This : access ICLRDebuggingLibraryProvider;
         pwszFileName : access constant WCHAR;
         dwTimestamp : DWORD;
         dwSizeOfImage : DWORD;
         phModule : access HMODULE
      ) return HRESULT is abstract;
   type ICLRDebuggingLibraryProvider_Ptr is access all ICLRDebuggingLibraryProvider'Class;
   type ICLRDebugging is limited interface and IUnknown;
      function OpenVirtualProcess(
         This : access ICLRDebugging;
         moduleBaseAddress : ULONG64;
         pDataTarget : access IUnknown'Class;
         pLibraryProvider : access ICLRDebuggingLibraryProvider'Class;
         pMaxDebuggerSupportedVersion : access CLR_DEBUGGING_VERSION;
         riidProcess : access constant IID;
         ppProcess : access IUnknown_Ptr;
         pVersion : access CLR_DEBUGGING_VERSION;
         pdwFlags : access CLR_DEBUGGING_PROCESS_FLAGS
      ) return HRESULT is abstract;
      function CanUnloadNow(
         This : access ICLRDebugging;
         hModule_x : HMODULE
      ) return HRESULT is abstract;
   type ICLRDebugging_Ptr is access all ICLRDebugging'Class;
   type ICLRRuntimeInfo is limited interface and IUnknown;
      function GetVersionString(
         This : access ICLRRuntimeInfo;
         pwzBuffer : LPWSTR;
         pcchBuffer : access DWORD
      ) return HRESULT is abstract;
      function GetRuntimeDirectory(
         This : access ICLRRuntimeInfo;
         pwzBuffer : LPWSTR;
         pcchBuffer : access DWORD
      ) return HRESULT is abstract;
      function IsLoaded(
         This : access ICLRRuntimeInfo;
         hndProcess : HANDLE;
         pbLoaded : access BOOL
      ) return HRESULT is abstract;
      function LoadErrorString(
         This : access ICLRRuntimeInfo;
         iResourceID : UINT;
         pwzBuffer : LPWSTR;
         pcchBuffer : access DWORD;
         iLocaleID : LONG
      ) return HRESULT is abstract;
      function LoadLibraryA_x(
         This : access ICLRRuntimeInfo;
         pwzDllName : LPCWSTR;
         phndModule : access HMODULE
      ) return HRESULT is abstract;
      function GetProcAddress_x(
         This : access ICLRRuntimeInfo;
         pszProcName : LPCSTR;
         ppProc : access LPVOID
      ) return HRESULT is abstract;
      function GetInterface(
         This : access ICLRRuntimeInfo;
         rclsid : access constant IID;
         riid : access constant IID;
         ppUnk : access LPVOID
      ) return HRESULT is abstract;
      function IsLoadable(
         This : access ICLRRuntimeInfo;
         pbLoadable : access BOOL
      ) return HRESULT is abstract;
      function SetDefaultStartupFlags(
         This : access ICLRRuntimeInfo;
         dwStartupFlags : DWORD;
         pwzHostConfigFile : LPCWSTR
      ) return HRESULT is abstract;
      function GetDefaultStartupFlags(
         This : access ICLRRuntimeInfo;
         pdwStartupFlags : access DWORD;
         pwzHostConfigFile : LPWSTR;
         pcchHostConfigFile : access DWORD
      ) return HRESULT is abstract;
      function BindAsLegacyV2Runtime(This : access ICLRRuntimeInfo) return HRESULT is abstract;
      function IsStarted(
         This : access ICLRRuntimeInfo;
         pbStarted : access BOOL;
         pdwStartupFlags : access DWORD
      ) return HRESULT is abstract;
   type ICLRRuntimeInfo_Ptr is access all ICLRRuntimeInfo'Class;
   type ICLRStrongName is limited interface and IUnknown;
      function GetHashFromAssemblyFile(
         This : access ICLRStrongName;
         pszFilePath : LPCSTR;
         piHashAlg : access Interfaces.C.unsigned;
         pbHash : access BYTE;
         cchHash : DWORD;
         pchHash : access DWORD
      ) return HRESULT is abstract;
      function GetHashFromAssemblyFileW(
         This : access ICLRStrongName;
         pwzFilePath : LPCWSTR;
         piHashAlg : access Interfaces.C.unsigned;
         pbHash : access BYTE;
         cchHash : DWORD;
         pchHash : access DWORD
      ) return HRESULT is abstract;
      function GetHashFromBlob(
         This : access ICLRStrongName;
         pbBlob : access BYTE;
         cchBlob : DWORD;
         piHashAlg : access Interfaces.C.unsigned;
         pbHash : access BYTE;
         cchHash : DWORD;
         pchHash : access DWORD
      ) return HRESULT is abstract;
      function GetHashFromFile(
         This : access ICLRStrongName;
         pszFilePath : LPCSTR;
         piHashAlg : access Interfaces.C.unsigned;
         pbHash : access BYTE;
         cchHash : DWORD;
         pchHash : access DWORD
      ) return HRESULT is abstract;
      function GetHashFromFileW(
         This : access ICLRStrongName;
         pwzFilePath : LPCWSTR;
         piHashAlg : access Interfaces.C.unsigned;
         pbHash : access BYTE;
         cchHash : DWORD;
         pchHash : access DWORD
      ) return HRESULT is abstract;
      function GetHashFromHandle(
         This : access ICLRStrongName;
         hFile_x : HANDLE;
         piHashAlg : access Interfaces.C.unsigned;
         pbHash : access BYTE;
         cchHash : DWORD;
         pchHash : access DWORD
      ) return HRESULT is abstract;
      function StrongNameCompareAssemblies(
         This : access ICLRStrongName;
         pwzAssembly1 : LPCWSTR;
         pwzAssembly2 : LPCWSTR;
         pdwResult : access DWORD
      ) return HRESULT is abstract;
      function StrongNameFreeBuffer(
         This : access ICLRStrongName;
         pbMemory : access BYTE
      ) return HRESULT is abstract;
      function StrongNameGetBlob(
         This : access ICLRStrongName;
         pwzFilePath : LPCWSTR;
         pbBlob : access BYTE;
         pcbBlob : access DWORD
      ) return HRESULT is abstract;
      function StrongNameGetBlobFromImage(
         This : access ICLRStrongName;
         pbBase : access BYTE;
         dwLength : DWORD;
         pbBlob : access BYTE;
         pcbBlob : access DWORD
      ) return HRESULT is abstract;
      function StrongNameGetPublicKey(
         This : access ICLRStrongName;
         pwzKeyContainer : LPCWSTR;
         pbKeyBlob : access BYTE;
         cbKeyBlob : ULONG;
         ppbPublicKeyBlob : access PBYTE;
         pcbPublicKeyBlob : access ULONG
      ) return HRESULT is abstract;
      function StrongNameHashSize(
         This : access ICLRStrongName;
         ulHashAlg : ULONG;
         pcbSize : access DWORD
      ) return HRESULT is abstract;
      function StrongNameKeyDelete(
         This : access ICLRStrongName;
         pwzKeyContainer : LPCWSTR
      ) return HRESULT is abstract;
      function StrongNameKeyGen(
         This : access ICLRStrongName;
         pwzKeyContainer : LPCWSTR;
         dwFlags : DWORD;
         ppbKeyBlob : access PBYTE;
         pcbKeyBlob : access ULONG
      ) return HRESULT is abstract;
      function StrongNameKeyGenEx(
         This : access ICLRStrongName;
         pwzKeyContainer : LPCWSTR;
         dwFlags : DWORD;
         dwKeySize : DWORD;
         ppbKeyBlob : access PBYTE;
         pcbKeyBlob : access ULONG
      ) return HRESULT is abstract;
      function StrongNameKeyInstall(
         This : access ICLRStrongName;
         pwzKeyContainer : LPCWSTR;
         pbKeyBlob : access BYTE;
         cbKeyBlob : ULONG
      ) return HRESULT is abstract;
      function StrongNameSignatureGeneration(
         This : access ICLRStrongName;
         pwzFilePath : LPCWSTR;
         pwzKeyContainer : LPCWSTR;
         pbKeyBlob : access BYTE;
         cbKeyBlob : ULONG;
         ppbSignatureBlob : access PBYTE;
         pcbSignatureBlob : access ULONG
      ) return HRESULT is abstract;
      function StrongNameSignatureGenerationEx(
         This : access ICLRStrongName;
         wszFilePath : LPCWSTR;
         wszKeyContainer : LPCWSTR;
         pbKeyBlob : access BYTE;
         cbKeyBlob : ULONG;
         ppbSignatureBlob : access PBYTE;
         pcbSignatureBlob : access ULONG;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function StrongNameSignatureSize(
         This : access ICLRStrongName;
         pbPublicKeyBlob : access BYTE;
         cbPublicKeyBlob : ULONG;
         pcbSize : access DWORD
      ) return HRESULT is abstract;
      function StrongNameSignatureVerification(
         This : access ICLRStrongName;
         pwzFilePath : LPCWSTR;
         dwInFlags : DWORD;
         pdwOutFlags : access DWORD
      ) return HRESULT is abstract;
      function StrongNameSignatureVerificationEx(
         This : access ICLRStrongName;
         pwzFilePath : LPCWSTR;
         fForceVerification : BOOLEAN;
         pfWasVerified : access BOOLEAN
      ) return HRESULT is abstract;
      function StrongNameSignatureVerificationFromImage(
         This : access ICLRStrongName;
         pbBase : access BYTE;
         dwLength : DWORD;
         dwInFlags : DWORD;
         pdwOutFlags : access DWORD
      ) return HRESULT is abstract;
      function StrongNameTokenFromAssembly(
         This : access ICLRStrongName;
         pwzFilePath : LPCWSTR;
         ppbStrongNameToken : access PBYTE;
         pcbStrongNameToken : access ULONG
      ) return HRESULT is abstract;
      function StrongNameTokenFromAssemblyEx(
         This : access ICLRStrongName;
         pwzFilePath : LPCWSTR;
         ppbStrongNameToken : access PBYTE;
         pcbStrongNameToken : access ULONG;
         ppbPublicKeyBlob : access PBYTE;
         pcbPublicKeyBlob : access ULONG
      ) return HRESULT is abstract;
      function StrongNameTokenFromPublicKey(
         This : access ICLRStrongName;
         pbPublicKeyBlob : access BYTE;
         cbPublicKeyBlob : ULONG;
         ppbStrongNameToken : access PBYTE;
         pcbStrongNameToken : access ULONG
      ) return HRESULT is abstract;
   type ICLRStrongName_Ptr is access all ICLRStrongName'Class;
   type ICLRStrongName2 is limited interface and IUnknown;
      function StrongNameGetPublicKeyEx(
         This : access ICLRStrongName2;
         pwzKeyContainer : LPCWSTR;
         pbKeyBlob : access BYTE;
         cbKeyBlob : ULONG;
         ppbPublicKeyBlob : access PBYTE;
         pcbPublicKeyBlob : access ULONG;
         uHashAlgId : ULONG;
         uReserved : ULONG
      ) return HRESULT is abstract;
      function StrongNameSignatureVerificationEx2(
         This : access ICLRStrongName2;
         wszFilePath : LPCWSTR;
         fForceVerification : BOOLEAN;
         pbEcmaPublicKey : access BYTE;
         cbEcmaPublicKey : DWORD;
         pfWasVerified : access BOOLEAN
      ) return HRESULT is abstract;
   type ICLRStrongName2_Ptr is access all ICLRStrongName2'Class;
   type ICLRStrongName3 is limited interface and IUnknown;
      function StrongNameDigestGenerate(
         This : access ICLRStrongName3;
         wszFilePath : LPCWSTR;
         ppbDigestBlob : access PBYTE;
         pcbDigestBlob : access ULONG;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function StrongNameDigestSign(
         This : access ICLRStrongName3;
         wszKeyContainer : LPCWSTR;
         pbKeyBlob : access BYTE;
         cbKeyBlob : ULONG;
         pbDigestBlob : access BYTE;
         cbDigestBlob : ULONG;
         hashAlgId : DWORD;
         ppbSignatureBlob : access PBYTE;
         pcbSignatureBlob : access ULONG;
         dwFlags : DWORD
      ) return HRESULT is abstract;
      function StrongNameDigestEmbed(
         This : access ICLRStrongName3;
         wszFilePath : LPCWSTR;
         pbSignatureBlob : access BYTE;
         cbSignatureBlob : ULONG
      ) return HRESULT is abstract;
   type ICLRStrongName3_Ptr is access all ICLRStrongName3'Class;
   -- #include <windows.ui.xaml.hosting.desktopwindowxamlsource.h>
   type IDesktopWindowXamlSourceNative;
   type IDesktopWindowXamlSourceNative2;
   IID_IDesktopWindowXamlSourceNative : aliased constant IID;
   pragma import (C,IID_IDesktopWindowXamlSourceNative,"IID_IDesktopWindowXamlSourceNative");
   type IDesktopWindowXamlSourceNative is limited interface and IUnknown;
      function AttachToWindow(
         This : access IDesktopWindowXamlSourceNative;
         parentWnd : HWND
      ) return HRESULT is abstract;
      function get_WindowHandle(
         This : access IDesktopWindowXamlSourceNative;
         hWnd_x : access HWND
      ) return HRESULT is abstract;
   type IDesktopWindowXamlSourceNative_Ptr is access all IDesktopWindowXamlSourceNative'Class;
   IID_IDesktopWindowXamlSourceNative2 : aliased constant IID;
   pragma import (C,IID_IDesktopWindowXamlSourceNative2,"IID_IDesktopWindowXamlSourceNative2");
   type IDesktopWindowXamlSourceNative2 is limited interface and IDesktopWindowXamlSourceNative;
      function PreTranslateMessage(
         This : access IDesktopWindowXamlSourceNative2;
         message : access constant MSG;
         result : access BOOL
      ) return HRESULT is abstract;
   type IDesktopWindowXamlSourceNative2_Ptr is access all IDesktopWindowXamlSourceNative2'Class;
   
   -----------------------------------------------------------------------------
   -- Opaque types
   -----------------------------------------------------------------------------
   
   type crt_locale_data_x is null record;
   type crt_multibyte_data_x is null record;
   type TP_CALLBACK_INSTANCE_x is null record;
   type TP_POOL_x is null record;
   type TP_CLEANUP_GROUP_x is null record;
   type ACTIVATION_CONTEXT_x is null record;
   type TP_WORK_x is null record;
   type TP_TIMER_x is null record;
   type TP_WAIT_x is null record;
   type TP_IO_x is null record;
   type TEB_x is null record;
   type PROC_THREAD_ATTRIBUTE_LIST_x is null record;
   type SC_NOTIFICATION_REGISTRATION_x is null record;
   type NET_ADDRESS_INFO_x is null record;
   type PSP_x is null record;
   type NDR_ASYNC_MESSAGE_x is null record;
   type NDR_CORRELATION_INFO_x is null record;
   type NDR_ALLOC_ALL_NODES_CONTEXT is null record;
   type NDR_POINTER_QUEUE_STATE is null record;
   type NDR_PROC_CONTEXT_x is null record;
   type INoMarshal is null record;
   type IAgileObject is null record;
   type IMarshal2 is null record;
   type IEnumContextProps is null record;
   type IContext is null record;
   type IObjContext is null record;
   type IFastRundown is null record;
   type IInternet is null record;
   type IXMLDOMDocumentFragment is null record;
   type IXMLDOMComment is null record;
   type IXMLDOMCDATASection is null record;
   type IXMLDOMEntityReference is null record;
   type XMLDOMDocumentEvents is null record;
   type IMAGELIST_x is null record;
   type IImageList is null record;
   type TREEITEM_x is null record;
   type DSA_x is null record;
   type DPA_x is null record;
   type IFontEventsDisp is null record;
   type IFontDisp is null record;
   type IPictureDisp is null record;
   type IDtcLuRecovery is null record;
   
   -----------------------------------------------------------------------------
   
end;
