diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 9807d8fd1..8ad57eb8f 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -39,11 +39,11 @@ jobs:
displayName: GenerateMetadataSource.ps1 - x64
inputs:
filePath: 'scripts\GenerateMetadataSource.ps1'
- arguments: '-arch x64 -scrapeConstants'
+ arguments: '-arch x64'
errorActionPreference: 'continue'
pwsh: true
- - publish: 'generation\WinSDK\obj\generated'
+ - publish: 'generation\WinSDK\obj\generated\x64'
displayName: Publish x64 generated assets
artifact: 'generated_x64'
@@ -67,11 +67,11 @@ jobs:
displayName: GenerateMetadataSource.ps1 - x86
inputs:
filePath: 'scripts\GenerateMetadataSource.ps1'
- arguments: '-arch x86'
+ arguments: '-arch x86 -scrapeConstants'
errorActionPreference: 'continue'
pwsh: true
- - publish: 'generation\WinSDK\obj\generated\x86'
+ - publish: 'generation\WinSDK\obj\generated'
displayName: Publish x86 generated assets
artifact: 'generated_x86'
@@ -142,13 +142,13 @@ jobs:
displayName: Download x64 generated assets
inputs:
artifact: 'generated_x64'
- path: 'generation\WinSDK\obj\generated'
+ path: 'generation\WinSDK\obj\generated\x64'
- task: DownloadPipelineArtifact@2
displayName: Download x86 generated assets
inputs:
artifact: 'generated_x86'
- path: 'generation\WinSDK\obj\generated\x86'
+ path: 'generation\WinSDK\obj\generated'
- task: DownloadPipelineArtifact@2
displayName: Download arm64 generated assets
diff --git a/generation/WinSDK/Windows.Win32.proj b/generation/WinSDK/Windows.Win32.proj
index 0c8c7f8e4..d7c9b6be4 100644
--- a/generation/WinSDK/Windows.Win32.proj
+++ b/generation/WinSDK/Windows.Win32.proj
@@ -47,7 +47,7 @@
true
- ActiveDirectory;AllJoyn;Antimalware;ApplicationVerifier;AppxPackaging;Audio.Apo;Audio.DirectMusic;Audio.DirectSound;Audio.Endpoints;Authorization;Authorization.UI;Base;Bits;Bluetooth;Buses;CEIP;Certificates;Cloudapi;CmpApi;Com;Com.CallObj;Com.ChannelCreds;Com.Events;Com.StructuredStorage;Com.Urlmon;Communication;ComOle;CompositionSwapchain;Console;Controls.RichEdit;Cos;Credentials;DataXchg;DebuggerExtensions;Debug.WebApp;Dedup;DeviceAccess;DeviceQuery;Devices.Properties;DevLic;Direct2D;Direct2D.Common;Direct3D;Direct3D10;Direct3D11;Direct3D9on12;Direct3D11on12;Direct3D12;Direct3DDxc;Direct3DFxc;DirectComp;DirectDraw;DirectManipulation;DirectML;DirectWrite;DTC;Dwm;DXCore;Dxgi;Dxgi.Common;Eap;EapHost;Edp;Enstor;Environment;Etw;Fax;FileHistory;Foundation;Fs;Fsrm;FunctionDiscovery;GameMode;GamingDvcInfo;Gdi;Gpmc;Hid;HostComputeNetwork;HostComputeSystem;HtmlHelp;HttpServer;Hypervisor;Identity;IdentityProvider;Ifsk;Iis;ImagingDevice;IMapi;IndexSrv;Input_Ink;Input_IntContext;Input.Ime;InputRadial;InternetConnectionWizard;InternetExplorer;Intl;IO;Isolation;JobObjects;Kernel;KeyboardAndMouseInput;Ldap;LibraryLoader;Lwef;MachineLearning;MadCap;MagApi;Mapi;Mbn;MdmReg;Media;Media.DShow;Media.DShow.Xml;Media.DxMediaObjects;Memory;MessageQueuing;Mi;MixedReality;MixedRealityInterop;Mmc;Monitor;MsChap;MsCs;MsTv;MsXml;Multimedia;Ndf;Ndis;NetMgmt;NetShell;NetworkAccessProtection;Nla;Nps;NWifi;Of;Opc;OpenGL;P2p;Parcon;PicAcq;Pipes;Pla;Policy;Power;PrintTicket;Proc_Snap;ProjFs;Properties;PsApi;PWM;Qos;Rdc;Rdp;RealTimeCommunications;Registry;RemoteAssist;Rm;Rpc;RRas;RstMgr;SecBitomet;Security;Security.AppLocker;Security.ConfigurationSnapin;Security.Cryptography;Security.Cryptography.Catalog;Security.Cryptography.Sip;Security.Cryptography.UI;Security.DiagnosticDataQuery;Security.DirectoryServices;Security.LicenseProtection;Security.Tpm;Security.WinTrust;Security.WinWlx;SecurityCenter;Sens;SerPorts;Services;Setup;Shell.Common;Shutdown;SideShow;Smi;Snmp;Speech;Sr;SwDevice;SystemInformation;Tablet;Tapi3;TaskSchd;Tbs;Tcui;TermServ;Threading;Time;ToolHelp;TransactionServer;Tsf;Ual;UiAnimation;UpdateAssessment;Upnp;Vhd;VirtualDiskService;VSS;Wab;Wcm;Wcn;Wcs;Wds;WebDav;WebServicesOnDevices;WebSock;Wec;Wer;Wes;Wia;Wibe;Wic;Win32_Tile_Badge_Notif;WinAuto;WinContacts;WindowsConnectionManager;WindowsFilteringPlatform;WindowsFirewall;WindowsRibbon;WindowsSetupAndMigration;WinInet;WinLocation;WinRm;WinRT;WinRT.AllJoyn;WinRT.Composition;WinRT.CoreInputView;WinRT.Direct2D;WinRT.Direct3D11;WinRT.Display;WinRT.Graphics.Capture;WinRT.Graphics.Imaging;WinRT.Holographic;WinRT.Isolation;WinRT.Media;WinRT.ML;WinRT.Pdf;WinRT.Printing;WinRT.Storage;WinRT.Xaml;WinSat;WinSensors;WinSync;WinTouch;Wmdm;WmFormat;Wmi;Wmlss;Wmp;Wnet;wnv;WpdSdk;Wsb;Wsl;Wsw;Wua;Xaml_Diagnostics;Xaudio2;Xblidp;Xinput;XmlLite;Xps;XpsPrinting
+ ActiveDirectory;AllJoyn;Antimalware;ApplicationVerifier;Audio.Apo;Audio.DirectMusic;Audio.DirectSound;Audio.Endpoints;Authorization;Authorization.UI;Base;Bits;Bluetooth;Buses;CEIP;Certificates;Cloudapi;CmpApi;Com;Com.CallObj;Com.ChannelCreds;Com.Events;Com.StructuredStorage;Com.Urlmon;Communication;ComOle;CompositionSwapchain;Console;Cos;Credentials;DataXchg;Debug.WebApp;DebuggerExtensions;Dedup;DeviceAccess;DeviceQuery;Devices.Properties;DevLic;Dhcp;Direct2D;Direct2D.Common;Direct3D;Direct3D10;Direct3D11;Direct3D11on12;Direct3D12;Direct3D9on12;Direct3DDxc;Direct3DFxc;DirectComp;DirectDraw;DirectManipulation;DirectML;DirectWrite;DTC;Dwm;DXCore;Dxgi;Dxgi.Common;Eap;EapHost;Edp;Enstor;Environment;Etw;Fax;FileHistory;Foundation;Fs;Fsrm;FunctionDiscovery;GameMode;GamingDvcInfo;Gdi;Gpmc;HostComputeNetwork;HostComputeSystem;HtmlHelp;HttpServer;Hypervisor;Identity;IdentityProvider;Ifsk;Iis;ImagingDevice;IMapi;IndexSrv;Input_Ink;Input_IntContext;Input.Ime;InputRadial;InternetConnectionWizard;InternetExplorer;Intl;IO;Isolation;JobObjects;Kernel;KeyboardAndMouseInput;Ldap;LibraryLoader;Lwef;MachineLearning;MadCap;MagApi;Mapi;Mbn;MdmReg;Media;Media.DShow;Media.DShow.Xml;Media.DxMediaObjects;Memory;MessageQueuing;Mi;MixedReality;MixedRealityInterop;Mmc;Monitor;MsChap;MsCs;MsTv;MsXml;Multimedia;Ndf;Ndis;NetMgmt;NetShell;NetworkAccessProtection;Nla;Nps;NWifi;Of;Opc;OpenGL;P2p;Parcon;PicAcq;Pipes;Pla;Policy;Power;PrintTicket;Proc_Snap;ProjFs;Properties;PsApi;PWM;Qos;Rdc;Rdp;RealTimeCommunications;Registry;RemoteAssist;Rm;Rpc;RstMgr;SecBitomet;Security;Security.AppLocker;Security.ConfigurationSnapin;Security.Cryptography;Security.Cryptography.Catalog;Security.Cryptography.Sip;Security.Cryptography.UI;Security.DiagnosticDataQuery;Security.DirectoryServices;Security.LicenseProtection;Security.Tpm;Security.WinTrust;Security.WinWlx;SecurityCenter;Sens;SerPorts;Services;Setup;Shell.Common;Shutdown;SideShow;Smi;Speech;Sr;SwDevice;SystemInformation;Tablet;Tapi3;TaskSchd;Tbs;Tcui;TermServ;Threading;Time;ToolHelp;TransactionServer;Tsf;Ual;UiAnimation;UpdateAssessment;Upnp;Vhd;VirtualDiskService;VSS;Wab;Wcm;Wcn;Wcs;Wds;WebDav;WebServicesOnDevices;WebSock;Wec;Wer;Wes;Wia;Wibe;Wic;Win32_Tile_Badge_Notif;WinAuto;WinContacts;WindowsConnectionManager;WindowsFilteringPlatform;WindowsFirewall;WindowsRibbon;WindowsSetupAndMigration;WinInet;WinLocation;WinRm;WinRT;WinRT.AllJoyn;WinRT.Composition;WinRT.CoreInputView;WinRT.Direct2D;WinRT.Direct3D11;WinRT.Display;WinRT.Graphics.Capture;WinRT.Graphics.Imaging;WinRT.Holographic;WinRT.Isolation;WinRT.Media;WinRT.ML;WinRT.Pdf;WinRT.Printing;WinRT.Storage;WinRT.Xaml;WinSat;WinSensors;WinSync;WinTouch;Wmdm;WmFormat;Wmi;Wmlss;Wmp;Wnet;wnv;WpdSdk;Wsb;Wsl;Wsw;Wua;Xaml_Diagnostics;Xaudio2;Xblidp;Xinput;XmlLite;Xps;XpsPrinting
false
diff --git a/generation/WinSDK/autoTypes.json b/generation/WinSDK/autoTypes.json
index f4b13a0d8..1786e0986 100644
--- a/generation/WinSDK/autoTypes.json
+++ b/generation/WinSDK/autoTypes.json
@@ -1452,5 +1452,11 @@
"Name": "RELOGSTREAM_HANDLE",
"ValueType": "ulong",
"InvalidHandleValues": [ 0 ]
+ },
+ {
+ "Namespace": "Windows.Win32.System.Search",
+ "Name": "HACCESSOR",
+ "ValueType": "UIntPtr",
+ "InvalidHandleValues": [ 0 ]
}
]
diff --git a/generation/WinSDK/emitter.settings.rsp b/generation/WinSDK/emitter.settings.rsp
index b1b34005e..8c8a64851 100644
--- a/generation/WinSDK/emitter.settings.rsp
+++ b/generation/WinSDK/emitter.settings.rsp
@@ -1059,4 +1059,6 @@ PropVariantChangeType::vt=VARENUM
WIA_PROPERTY_INFO::vt=VARENUM
FormatMessageA::lpBuffer=[-NativeArrayInfo]
FormatMessageW::lpBuffer=[-NativeArrayInfo]
-SafeArrayGetVartype::pvt=VARENUM
\ No newline at end of file
+SafeArrayGetVartype::pvt=VARENUM
+IDataSourceLocator::get_hWnd::phwndParent=HWND*
+IDataSourceLocator::put_hWnd::hwndParent=HWND
\ No newline at end of file
diff --git a/scripts/ChangesSinceLastRelease.txt b/scripts/ChangesSinceLastRelease.txt
index 4b2655731..4f33efae1 100644
--- a/scripts/ChangesSinceLastRelease.txt
+++ b/scripts/ChangesSinceLastRelease.txt
@@ -997,3 +997,423 @@ Windows.Win32.UI.Shell.Apis.SHGetItemFromObject : ppv : [Out] => [ComOutPtr,Out]
Windows.Win32.UI.Shell.Apis.SHGetKnownFolderItem : ppv : [Out] => [ComOutPtr,Out]
Windows.Win32.UI.Shell.Apis.SHGetViewStatePropertyBag : ppv : [Out] => [ComOutPtr,Out]
Windows.Win32.UI.Shell.Apis.StgMakeUniqueName : ppv : [Out] => [ComOutPtr,Out]
+# Fixing cdecl issues
+Windows.Win32.Devices.Display.PVIDEO_WIN32K_CALLOUT : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Devices.HumanInterfaceDevice.PFN_HidP_GetVersionInternal : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Devices.HumanInterfaceDevice.PHIDP_INSERT_SCANCODES : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Devices.Sensors.Apis.CollectionsListAllocateBufferAndSerialize : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.CollectionsListCopyAndMarshall : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.CollectionsListDeserializeFromBuffer : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.CollectionsListGetFillableCount : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.CollectionsListGetMarshalledSize : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.CollectionsListGetMarshalledSizeWithoutSerialization : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.CollectionsListGetSerializedSize : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.CollectionsListMarshall : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.CollectionsListSerializeToBuffer : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.CollectionsListSortSubscribedActivitiesByConfidence : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.CollectionsListUpdateMarshalledPointer : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.EvaluateActivityThresholds : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.GetPerformanceTime : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.InitPropVariantFromCLSIDArray : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.InitPropVariantFromFloat : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.IsCollectionListSame : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.IsGUIDPresentInList : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.IsKeyPresentInCollectionList : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.IsKeyPresentInPropertyList : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.IsSensorSubscribed : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropertiesListCopy : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropertiesListGetFillableCount : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetBool : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetDouble : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetFileTime : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetFloat : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetGuid : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetInt32 : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetInt64 : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetNthInt64 : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetNthUlong : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetNthUshort : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetPropVariant : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetUlong : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeyGetUshort : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropKeyFindKeySetPropVariant : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.PropVariantGetInformation : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.SensorCollectionGetAt : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.SerializationBufferAllocate : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Sensors.Apis.SerializationBufferFree : [DllImport(SensorsUtilsV2.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SensorsUtilsV2.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Devices.Usb.USB_IDLE_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Devices.WebServicesOnDevices.PWSD_SOAP_MESSAGE_HANDLER : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Devices.WebServicesOnDevices.WSD_STUB_FUNCTION : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_BOBNEXTFIELD : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_ENABLEIRQ : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_FLIPOVERLAY : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_FLIPVIDEOPORT : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_GETCURRENTAUTOFLIP : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_GETIRQINFO : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_GETPOLARITY : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_GETPREVIOUSAUTOFLIP : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_GETTRANSFERSTATUS : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_IRQCALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_LOCK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_SETSTATE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_SKIPNEXTFIELD : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.DirectDraw.PDX_TRANSFER : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Graphics.Printing.Apis.AppendPrinterNotifyInfoData : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.CallRouterFindFirstPrinterChangeNotification : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.CreatePrinterIC : [DllImport(winspool.drv,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(winspool.drv,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.DeletePrinterIC : [DllImport(winspool.drv,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(winspool.drv,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.DevQueryPrint : [DllImport(winspool.drv,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(winspool.drv,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.ExtDeviceMode : [DllImport(winspool.drv,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(winspool.drv,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.GetJobAttributes : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.GetJobAttributesEx : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.ImpersonatePrinterClient : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.PartialReplyPrinterChangeNotification : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.PlayGdiScriptOnPrinterIC : [DllImport(winspool.drv,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(winspool.drv,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.ProvidorFindClosePrinterChangeNotification : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.ProvidorFindFirstPrinterChangeNotification : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.ReplyPrinterChangeNotification : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.ReplyPrinterChangeNotificationEx : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.RevertToPrinterSelf : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.RouterAllocBidiMem : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.RouterAllocBidiResponseContainer : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.RouterAllocPrinterNotifyInfo : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.RouterFreeBidiMem : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.RouterFreeBidiResponseContainer : [DllImport(winspool.drv,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(winspool.drv,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.RouterFreePrinterNotifyInfo : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.SplIsSessionZero : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.SplPromptUIInUsersSession : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.SpoolerFindClosePrinterChangeNotification : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.SpoolerFindFirstPrinterChangeNotification : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.SpoolerFindNextPrinterChangeNotification : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.SpoolerFreePrinterNotifyInfo : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Graphics.Printing.Apis.SpoolerRefreshPrinterChangeNotification : [DllImport(SPOOLSS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SPOOLSS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Media.MediaFoundation.Apis.MFCreateD3D12SynchronizationObject : [DllImport(MFPlat.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(MFPlat.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Media.MediaFoundation.Apis.OPMXboxEnableHDCP : [DllImport(OPMXbox.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(OPMXbox.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Media.MediaFoundation.Apis.OPMXboxGetHDCPStatus : [DllImport(OPMXbox.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(OPMXbox.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Media.MediaFoundation.Apis.OPMXboxGetHDCPStatusAndType : [DllImport(OPMXbox.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(OPMXbox.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Media.MediaFoundation.MFPERIODICCALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Media.Multimedia.LPTASKCALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Networking.Clustering.Apis.ClusWorkersTerminate : [DllImport(RESUTILS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)] => [DllImport(RESUTILS.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)]
+Windows.Win32.Networking.Clustering.Apis.FreeClusterHealthFault : [DllImport(RESUTILS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)] => [DllImport(RESUTILS.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)]
+Windows.Win32.Networking.Clustering.Apis.FreeClusterHealthFaultArray : [DllImport(RESUTILS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)] => [DllImport(RESUTILS.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)]
+Windows.Win32.Networking.Clustering.Apis.InitializeClusterHealthFault : [DllImport(RESUTILS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)] => [DllImport(RESUTILS.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)]
+Windows.Win32.Networking.Clustering.Apis.InitializeClusterHealthFaultArray : [DllImport(RESUTILS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)] => [DllImport(RESUTILS.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)]
+Windows.Win32.Networking.Clustering.Apis.ResUtilLeftPaxosIsLessThanRight : [DllImport(RESUTILS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)] => [DllImport(RESUTILS.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)]
+Windows.Win32.Networking.Clustering.Apis.ResUtilPaxosComparer : [DllImport(RESUTILS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)] => [DllImport(RESUTILS.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2016)]
+Windows.Win32.Networking.Clustering.Apis.ResUtilsDeleteKeyTree : [DllImport(RESUTILS.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(RESUTILS.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Networking.Clustering.LPGROUP_CALLBACK_EX : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Networking.Clustering.LPNODE_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Networking.Clustering.LPRESOURCE_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Networking.Clustering.LPRESOURCE_CALLBACK_EX : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Networking.Clustering.PLOG_EVENT_ROUTINE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)]
+Windows.Win32.Networking.WinInet.Apis.DoConnectoidsExist : [DllImport(WININET.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(WININET.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Networking.WinInet.Apis.IsProfilesEnabled : [DllImport(WININET.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(WININET.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Networking.WinInet.Apis.PerformOperationOverUrlCacheA : [DllImport(WININET.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(WININET.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Networking.WinInet.Apis.UrlCacheFreeGlobalSpace : [DllImport(WININET.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(WININET.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Networking.WinInet.Apis.UrlCacheGetGlobalCacheSize : [DllImport(WININET.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(WININET.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Networking.WinInet.CACHE_OPERATOR : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Networking.WinSock.LPFN_NSPAPI : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Networking.WinSock.LPSERVICE_CALLBACK_PROC : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpAddServer : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpAuditLogGetParams : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpAuditLogSetParams : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpCreateClass : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpCreateOptionV5 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpDeleteClass : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpDeleteServer : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpDeleteSuperScopeV4 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpDsCleanup : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpDsInit : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpEnumClasses : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpEnumOptionsV5 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpEnumOptionValuesV5 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpEnumServers : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpGetAllOptions : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpGetAllOptionValues : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpGetClassInfo : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpGetMibInfoV6 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpGetOptionInfoV5 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpGetOptionValueV5 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpGetOptionValueV6 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpGetSuperScopeInfoV4 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpGetThreadOptions : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpHlprFindV4DhcpProperty : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpModifyClass : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpRemoveOptionV5 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpRemoveOptionValueV5 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpServerBackupDatabase : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpServerQueryAttribute : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpServerQueryAttributes : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpServerQueryDnsRegCredentials : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpServerRedoAuthorization : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpServerRestoreDatabase : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpServerSetDnsRegCredentials : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpServerSetDnsRegCredentialsV5 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpSetOptionInfoV5 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpSetOptionValuesV5 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpSetOptionValueV5 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpSetSubnetInfoV6 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpSetSuperScopeV4 : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.Apis.DhcpSetThreadOptions : [DllImport(DHCPSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(DHCPSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.NetworkManagement.Dhcp.DHCP_SERVER_OPTIONS added
+Windows.Win32.NetworkManagement.Dhcp.DHCP_SERVER_OPTIONS(X64, Arm64) removed
+Windows.Win32.NetworkManagement.Dhcp.DHCP_SERVER_OPTIONS(X86) removed
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionDeletePolicyEntries : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionDeleteProxyInfo : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionFreeNameList : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionFreeProxyInfo : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionFreeProxyInfoEx : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionFreeProxyList : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionGetNameList : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionGetProxyInfo : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionGetProxyInfoForHostUrl : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionGetProxyList : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionSetPolicyEntries : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionSetProxyInfo : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsConnectionUpdateIfIndexTable : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsFreeCustomServers : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsGetApplicationSettings : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsRecordSetDetach : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows5.0)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows5.0)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsSetApplicationSettings : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsValidateName_A : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows5.0)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows5.0)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsValidateName_UTF8 : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows5.0)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows5.0)]
+Windows.Win32.NetworkManagement.Dns.Apis.DnsValidateName_W : [DllImport(DNSAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows5.0)] => [DllImport(DNSAPI.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows5.0)]
+Windows.Win32.NetworkManagement.IpHelper.Apis.GetOwnerModuleFromPidAndInfo : [DllImport(IPHLPAPI.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(IPHLPAPI.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.LogErrorW : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.LogEventW : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.NetAddServiceAccount : [DllImport(NETAPI32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows6.1)] => [DllImport(NETAPI32.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows6.1)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.NetEnumerateServiceAccounts : [DllImport(NETAPI32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows6.1)] => [DllImport(NETAPI32.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows6.1)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.NetIsServiceAccount : [DllImport(NETAPI32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows6.1)] => [DllImport(NETAPI32.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows6.1)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.NetQueryServiceAccount : [DllImport(NETAPI32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows6.1)] => [DllImport(NETAPI32.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows6.1)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.NetRemoveServiceAccount : [DllImport(NETAPI32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows6.1)] => [DllImport(NETAPI32.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows6.1)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterAssert : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterGetErrorStringA : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterGetErrorStringW : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterLogDeregisterA : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterLogDeregisterW : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterLogEventA : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterLogEventDataA : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterLogEventDataW : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterLogEventStringA : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterLogEventStringW : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterLogEventValistExA : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterLogEventValistExW : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterLogEventW : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterLogRegisterA : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetManagement.Apis.RouterLogRegisterW : [DllImport(rtutils.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtutils.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.NetShell.PFN_HANDLE_CMD : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.NetworkManagement.NetShell.PNS_DLL_INIT_FN : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmAddGroupMembershipEntry : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmDeleteGroupMembershipEntry : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmDeRegisterMProtocol : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmGetFirstMfe : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmGetFirstMfeStats : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmGetMfe : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmGetMfeStats : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmGetNextMfe : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmGetNextMfeStats : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmGetProtocolOnInterface : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmGroupEnumerationEnd : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmGroupEnumerationGetNext : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmGroupEnumerationStart : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmRegisterMProtocol : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmReleaseInterfaceOwnership : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.MgmTakeInterfaceOwnership : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2000)]
+Windows.Win32.NetworkManagement.Rras.Apis.RtmConvertIpv6AddressAndLengthToNetAddress : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Rras.Apis.RtmConvertNetAddressToIpv6AddressAndLength : [DllImport(rtm.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(rtm.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.NetworkManagement.Rras.PMGM_CREATION_ALERT_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.NetworkManagement.Rras.PMGM_DISABLE_IGMP_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.NetworkManagement.Rras.PMGM_ENABLE_IGMP_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.NetworkManagement.Rras.PMGM_JOIN_ALERT_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.NetworkManagement.Rras.PMGM_LOCAL_JOIN_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.NetworkManagement.Rras.PMGM_LOCAL_LEAVE_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.NetworkManagement.Rras.PMGM_PRUNE_ALERT_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.NetworkManagement.Rras.PMGM_RPF_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.NetworkManagement.Rras.PMGM_WRONG_IF_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.NetworkManagement.WindowsFirewall.Apis.NetworkIsolationDiagnoseConnectFailureAndGetInfo : [DllImport(api-ms-win-net-isolation-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)] => [DllImport(api-ms-win-net-isolation-l1-1-0.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)]
+Windows.Win32.NetworkManagement.WindowsFirewall.Apis.NetworkIsolationEnumAppContainers : [DllImport(api-ms-win-net-isolation-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)] => [DllImport(api-ms-win-net-isolation-l1-1-0.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)]
+Windows.Win32.NetworkManagement.WindowsFirewall.Apis.NetworkIsolationFreeAppContainers : [DllImport(api-ms-win-net-isolation-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)] => [DllImport(api-ms-win-net-isolation-l1-1-0.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)]
+Windows.Win32.NetworkManagement.WindowsFirewall.Apis.NetworkIsolationGetAppContainerConfig : [DllImport(api-ms-win-net-isolation-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)] => [DllImport(api-ms-win-net-isolation-l1-1-0.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)]
+Windows.Win32.NetworkManagement.WindowsFirewall.Apis.NetworkIsolationRegisterForAppContainerChanges : [DllImport(api-ms-win-net-isolation-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)] => [DllImport(api-ms-win-net-isolation-l1-1-0.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)]
+Windows.Win32.NetworkManagement.WindowsFirewall.Apis.NetworkIsolationSetAppContainerConfig : [DllImport(api-ms-win-net-isolation-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)] => [DllImport(api-ms-win-net-isolation-l1-1-0.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)]
+Windows.Win32.NetworkManagement.WindowsFirewall.Apis.NetworkIsolationSetupAppContainerBinaries : [DllImport(api-ms-win-net-isolation-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)] => [DllImport(api-ms-win-net-isolation-l1-1-0.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)]
+Windows.Win32.NetworkManagement.WindowsFirewall.Apis.NetworkIsolationUnregisterForAppContainerChanges : [DllImport(api-ms-win-net-isolation-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)] => [DllImport(api-ms-win-net-isolation-l1-1-0.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)]
+Windows.Win32.NetworkManagement.WNet.Apis.WNetSetLastErrorA : [DllImport(MPR.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows5.1.2600)] => [DllImport(MPR.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows5.1.2600)]
+Windows.Win32.NetworkManagement.WNet.Apis.WNetSetLastErrorW : [DllImport(MPR.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(MPR.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Security.Authentication.Identity.Apis.CredMarshalTargetInfo : [DllImport(SECUR32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows6.0.6000)] => [DllImport(SECUR32.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows6.0.6000)]
+Windows.Win32.Security.Authentication.Identity.Apis.CredUnmarshalTargetInfo : [DllImport(SECUR32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(SECUR32.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Security.Authentication.Identity.PLSA_AP_LOGON_USER_EX2 : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.Authentication.Identity.PLSA_AP_LOGON_USER_EX3 : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.Authentication.Identity.PLSA_AP_POST_LOGON_USER_SURROGATE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.Authentication.Identity.PLSA_AP_PRE_LOGON_USER_SURROGATE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.Authentication.Identity.PSAM_CREDENTIAL_UPDATE_FREE_ROUTINE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.Authentication.Identity.PSAM_CREDENTIAL_UPDATE_NOTIFY_ROUTINE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.Authentication.Identity.PSAM_CREDENTIAL_UPDATE_REGISTER_MAPPED_ENTRYPOINTS_ROUTINE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.Authentication.Identity.PSAM_CREDENTIAL_UPDATE_REGISTER_ROUTINE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.Authentication.Identity.PSAM_INIT_NOTIFICATION_ROUTINE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.Authentication.Identity.PSAM_PASSWORD_FILTER_ROUTINE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.Authentication.Identity.PSAM_PASSWORD_NOTIFICATION_ROUTINE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.ConfigurationSnapin.PF_ConfigAnalyzeService : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.ConfigurationSnapin.PF_UpdateService : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.ConfigurationSnapin.PFSCE_LOG_INFO : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)]
+Windows.Win32.Security.Credentials.Apis.KeyCredentialManagerFreeInformation : [DllImport(KeyCredMgr.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(KeyCredMgr.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Security.Cryptography.Certificates.FNIMPORTPFXTOPROVIDER : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.Cryptography.Certificates.FNIMPORTPFXTOPROVIDERFREEDATA : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.EnterpriseData.Apis.SrpHostingTerminate : [DllImport(srpapi.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(srpapi.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.Security.EnterpriseData.Apis.SrpIsTokenService : [DllImport(srpapi.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.10240)] => [DllImport(srpapi.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.10240)]
+Windows.Win32.Security.WinTrust.PFN_ALLOCANDFILLDEFUSAGE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_CPD_ADD_CERT : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_CPD_ADD_PRIVDATA : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_CPD_ADD_SGNR : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_CPD_ADD_STORE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_CPD_MEM_ALLOC : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_CPD_MEM_FREE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_FREEDEFUSAGE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_PROVIDER_CERTCHKPOLICY_CALL : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_PROVIDER_CERTTRUST_CALL : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_PROVIDER_CLEANUP_CALL : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_PROVIDER_FINALPOLICY_CALL : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_PROVIDER_INIT_CALL : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_PROVIDER_OBJTRUST_CALL : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_PROVIDER_SIGTRUST_CALL : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_PROVIDER_TESTFINALPOLICY_CALL : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinTrust.PFN_PROVUI_CALL : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Security.WinWlx.PFNMSGECALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Storage.FileSystem.Apis.GetCurrentClockTransactionManager : [DllImport(ktmw32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False,SetLastError=True),SupportedOSPlatform(windows6.0.6000)] => [DllImport(ktmw32.dll,ExactSpelling=True,PreserveSig=False,SetLastError=True),SupportedOSPlatform(windows6.0.6000)]
+Windows.Win32.Storage.FileSystem.Apis.GetTransactionManagerId : [DllImport(ktmw32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False,SetLastError=True),SupportedOSPlatform(windows6.0.6000)] => [DllImport(ktmw32.dll,ExactSpelling=True,PreserveSig=False,SetLastError=True),SupportedOSPlatform(windows6.0.6000)]
+Windows.Win32.Storage.FileSystem.CLFS_BLOCK_ALLOCATION : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Storage.FileSystem.CLFS_BLOCK_DEALLOCATION : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Storage.FileSystem.PFN_IO_COMPLETION : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Storage.FileSystem.PLOG_FULL_HANDLER_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Storage.FileSystem.PLOG_TAIL_ADVANCE_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Storage.FileSystem.PLOG_UNPINNED_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.Storage.IscsiDisc.PDUMP_DEVICE_POWERON_ROUTINE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.DeploymentServices.Apis.PxeProviderFreeInfo : [DllImport(WDSPXE.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)] => [DllImport(WDSPXE.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windowsServer2008)]
+Windows.Win32.System.Diagnostics.Debug.Apis.RtlAddFunctionTable(Arm64) : [DllImport(KERNEL32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(4)] => [DllImport(KERNEL32.dll,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(4)]
+Windows.Win32.System.Diagnostics.Debug.Apis.RtlAddFunctionTable(X64) : [DllImport(KERNEL32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(2)] => [DllImport(KERNEL32.dll,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(2)]
+Windows.Win32.System.Diagnostics.Debug.Apis.RtlDeleteFunctionTable(Arm64) : [DllImport(KERNEL32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(4)] => [DllImport(KERNEL32.dll,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(4)]
+Windows.Win32.System.Diagnostics.Debug.Apis.RtlDeleteFunctionTable(X64) : [DllImport(KERNEL32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(2)] => [DllImport(KERNEL32.dll,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(2)]
+Windows.Win32.System.Diagnostics.Debug.MINIDUMP_CALLBACK_OUTPUT._Anonymous_e__Union : [StructLayout(2,Pack=4)] => [StructLayout(2)]
+Windows.Win32.System.Diagnostics.Debug.PCOGETACTIVATIONSTATE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Diagnostics.Debug.PCOGETCALLSTATE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Diagnostics.Debug.PGET_RUNTIME_FUNCTION_CALLBACK : [StructLayout(3,CharSet=4),SupportedArchitecture(2),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(2),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Diagnostics.Debug.PGET_RUNTIME_FUNCTION_CALLBACK : [StructLayout(3,CharSet=4),SupportedArchitecture(4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Diagnostics.Debug.WebApp.RegisterAuthoringClientFunctionType : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Diagnostics.Debug.WebApp.UnregisterAuthoringClientFunctionType : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Diagnostics.Debug.WHEA_ERROR_SOURCE_CORRECT_DEVICE_DRIVER : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Diagnostics.Debug.WHEA_ERROR_SOURCE_INITIALIZE_DEVICE_DRIVER : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Diagnostics.Debug.WHEA_ERROR_SOURCE_UNINITIALIZE_DEVICE_DRIVER : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Diagnostics.Etw.Apis.TraceMessageVa : [DllImport(ADVAPI32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows5.1.2600)] => [DllImport(ADVAPI32.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows5.1.2600)]
+Windows.Win32.System.DistributedTransactionCoordinator.DTC_INSTALL_CLIENT : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_COMMIT_PAGES : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_CREATE_THREAD : [StructLayout(3,CharSet=4),SupportedArchitecture(1),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(1),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_CREATE_THREAD : [StructLayout(3,CharSet=4),SupportedArchitecture(6),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(6),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_DECOMMIT_PAGES : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_GENERATE_KEY : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_GENERATE_RANDOM_DATA : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_GENERATE_REPORT : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_GET_ENCLAVE_INFORMATION : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_INTERRUPT_THREAD : [StructLayout(3,CharSet=4),SupportedArchitecture(1),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(1),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_INTERRUPT_THREAD : [StructLayout(3,CharSet=4),SupportedArchitecture(6),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(6),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_PROTECT_PAGES : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_RETURN_FROM_ENCLAVE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_RETURN_FROM_EXCEPTION : [StructLayout(3,CharSet=4),SupportedArchitecture(2),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(2),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_RETURN_FROM_EXCEPTION : [StructLayout(3,CharSet=4),SupportedArchitecture(5),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(5),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_TERMINATE_THREAD : [StructLayout(3,CharSet=4),SupportedArchitecture(1),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(1),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_TERMINATE_THREAD : [StructLayout(3,CharSet=4),SupportedArchitecture(6),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(6),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Environment.VBS_BASIC_ENCLAVE_BASIC_CALL_VERIFY_REPORT : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.ErrorReporting.Apis.WerFreeString : [DllImport(wer.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)] => [DllImport(wer.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)]
+Windows.Win32.System.ErrorReporting.Apis.WerStoreClose : [DllImport(wer.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)] => [DllImport(wer.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)]
+Windows.Win32.System.ErrorReporting.Apis.WerStoreGetFirstReportKey : [DllImport(wer.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)] => [DllImport(wer.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)]
+Windows.Win32.System.ErrorReporting.Apis.WerStoreGetNextReportKey : [DllImport(wer.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)] => [DllImport(wer.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)]
+Windows.Win32.System.ErrorReporting.Apis.WerStoreGetReportCount : [DllImport(wer.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(wer.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.ErrorReporting.Apis.WerStoreGetSizeOnDisk : [DllImport(wer.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(wer.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.ErrorReporting.Apis.WerStoreOpen : [DllImport(wer.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)] => [DllImport(wer.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)]
+Windows.Win32.System.ErrorReporting.Apis.WerStorePurge : [DllImport(wer.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(wer.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.ErrorReporting.Apis.WerStoreQueryReportMetadataV1 : [DllImport(wer.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(wer.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.ErrorReporting.Apis.WerStoreQueryReportMetadataV2 : [DllImport(wer.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)] => [DllImport(wer.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)]
+Windows.Win32.System.ErrorReporting.Apis.WerStoreQueryReportMetadataV3 : [DllImport(wer.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(wer.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.ErrorReporting.Apis.WerStoreUploadReport : [DllImport(wer.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(wer.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.ErrorReporting.PFN_WER_RUNTIME_EXCEPTION_DEBUGGER_LAUNCH : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.ErrorReporting.PFN_WER_RUNTIME_EXCEPTION_EVENT : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.ErrorReporting.PFN_WER_RUNTIME_EXCEPTION_EVENT_SIGNATURE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.GroupPolicy.PFNGENERATEGROUPPOLICY : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.GroupPolicy.PFNPROCESSGROUPPOLICY : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.GroupPolicy.PFNPROCESSGROUPPOLICYEX : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.GroupPolicy.PFNSTATUSMESSAGECALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Hypervisor.Apis.GetMemoryBlockCacheLimit : [DllImport(VmSavedStateDumpProvider.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(VmSavedStateDumpProvider.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.Hypervisor.Apis.SetSavedStateSymbolProviderDebugInfoCallback : [DllImport(VmSavedStateDumpProvider.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(VmSavedStateDumpProvider.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.Hypervisor.Apis.WHvCancelPartitionMigration : [DllImport(WinHvPlatform.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(WinHvPlatform.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.Hypervisor.Apis.WHvCompletePartitionMigration : [DllImport(WinHvPlatform.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(WinHvPlatform.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.Hypervisor.WHV_CACHE_TYPE.WHvCacheTypeWriteProtected removed
+Windows.Win32.System.Iis.PFN_WEB_CORE_ACTIVATE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Iis.PFN_WEB_CORE_SET_METADATA_DLL_ENTRY : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Iis.PFN_WEB_CORE_SHUTDOWN : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Ioctl.PIO_IRP_EXT_PROCESS_TRACKED_OFFSET_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Performance.Apis.BackupPerfRegistryToFileW : [DllImport(loadperf.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(loadperf.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.Performance.Apis.RestorePerfRegistryFromFileW : [DllImport(loadperf.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(loadperf.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.Performance.PLA_CABEXTRACT_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.RemoteDesktop.Apis.WTSEnableChildSessions : [DllImport(WTSAPI32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)] => [DllImport(WTSAPI32.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)]
+Windows.Win32.System.RemoteDesktop.Apis.WTSGetChildSessionId : [DllImport(WTSAPI32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)] => [DllImport(WTSAPI32.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)]
+Windows.Win32.System.RemoteDesktop.Apis.WTSIsChildSessionsEnabled : [DllImport(WTSAPI32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)] => [DllImport(WTSAPI32.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows8.0)]
+Windows.Win32.System.RestartManager.RM_WRITE_STATUS_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Rpc.Apis.I_RpcServerInqAddressChangeFn : [DllImport(RPCRT4.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(RPCRT4.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.Rpc.RPC_BLOCKING_FN : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Rpc.RPCLT_PDU_FILTER_FUNC : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.Search.DBPARAMS.hAccessor(X64, Arm64)...System.UIntPtr => Windows.Win32.System.Search.HACCESSOR
+Windows.Win32.System.Search.DBPARAMS.hAccessor(X86)...System.UIntPtr => Windows.Win32.System.Search.HACCESSOR
+Windows.Win32.System.Search.HACCESSOR added
+Windows.Win32.System.Search.IAccessor.AddRefAccessor : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IAccessor.CreateAccessor : phAccessor...UIntPtr* => HACCESSOR*
+Windows.Win32.System.Search.IAccessor.GetBindings : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IAccessor.ReleaseAccessor : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IDataSourceLocator.get_hWnd : phwndParent...Int64* => HWND*
+Windows.Win32.System.Search.IDataSourceLocator.put_hWnd : hwndParent...Int64 => HWND
+Windows.Win32.System.Search.IMDDataset.GetCellData : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IReadData.ReadData : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IRowset.GetData : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IRowsetChange.InsertRow : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IRowsetChange.SetData : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IRowsetFastLoad.InsertRow : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IRowsetFind.FindNextRow : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IRowsetIndex.Seek : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IRowsetIndex.SetRange : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IRowsetNewRowAfter.SetNewDataAfter : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IRowsetRefresh.GetLastVisibleData : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IRowsetResynch.GetVisibleData : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IRowsetUpdate.GetOriginalData : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IViewFilter.GetFilter : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.Search.IViewFilter.SetFilter : hAccessor...UIntPtr => HACCESSOR
+Windows.Win32.System.SubsystemForLinux.Apis.WslConfigureDistribution : [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.SubsystemForLinux.Apis.WslGetDistributionConfiguration : [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.SubsystemForLinux.Apis.WslIsDistributionRegistered : [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.SubsystemForLinux.Apis.WslLaunch : [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.SubsystemForLinux.Apis.WslLaunchInteractive : [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.SubsystemForLinux.Apis.WslRegisterDistribution : [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.SubsystemForLinux.Apis.WslUnregisterDistribution : [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(Api-ms-win-wsl-api-l1-1-0.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.SystemServices.PEXCEPTION_FILTER : [StructLayout(3,CharSet=4),SupportedArchitecture(6),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(6),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.SystemServices.POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK : [StructLayout(3,CharSet=4),SupportedArchitecture(2),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(2),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.SystemServices.POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK : [StructLayout(3,CharSet=4),SupportedArchitecture(4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.SystemServices.PTERMINATION_HANDLER : [StructLayout(3,CharSet=4),SupportedArchitecture(2),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(2),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.SystemServices.PTERMINATION_HANDLER : [StructLayout(3,CharSet=4),SupportedArchitecture(4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),SupportedArchitecture(4),UnmanagedFunctionPointer(1)]
+Windows.Win32.System.TpmBaseServices.Apis.GetDeviceID : [DllImport(tbs.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(tbs.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.TpmBaseServices.Apis.GetDeviceIDString : [DllImport(tbs.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(tbs.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.WindowsProgramming.Apis.GetFeatureEnabledState : [DllImport(api-ms-win-core-featurestaging-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(api-ms-win-core-featurestaging-l1-1-0.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.WindowsProgramming.Apis.GetFeatureVariant : [DllImport(api-ms-win-core-featurestaging-l1-1-1.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(api-ms-win-core-featurestaging-l1-1-1.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.WindowsProgramming.Apis.RecordFeatureError : [DllImport(api-ms-win-core-featurestaging-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(api-ms-win-core-featurestaging-l1-1-0.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.WindowsProgramming.Apis.RecordFeatureUsage : [DllImport(api-ms-win-core-featurestaging-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(api-ms-win-core-featurestaging-l1-1-0.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.WindowsProgramming.Apis.SubscribeFeatureStateChangeNotification : [DllImport(api-ms-win-core-featurestaging-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(api-ms-win-core-featurestaging-l1-1-0.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.WindowsProgramming.Apis.uaw_wcschr(X64, Arm64) : [DllImport(KERNEL32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(6)] => [DllImport(KERNEL32.dll,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(6)]
+Windows.Win32.System.WindowsProgramming.Apis.uaw_wcscpy(X64, Arm64) : [DllImport(KERNEL32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(6)] => [DllImport(KERNEL32.dll,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(6)]
+Windows.Win32.System.WindowsProgramming.Apis.uaw_wcsicmp(X64, Arm64) : [DllImport(KERNEL32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(6)] => [DllImport(KERNEL32.dll,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(6)]
+Windows.Win32.System.WindowsProgramming.Apis.uaw_wcslen(X64, Arm64) : [DllImport(KERNEL32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(6)] => [DllImport(KERNEL32.dll,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(6)]
+Windows.Win32.System.WindowsProgramming.Apis.uaw_wcsrchr(X64, Arm64) : [DllImport(KERNEL32.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(6)] => [DllImport(KERNEL32.dll,ExactSpelling=True,PreserveSig=False),SupportedArchitecture(6)]
+Windows.Win32.System.WindowsProgramming.Apis.UnsubscribeFeatureStateChangeNotification : [DllImport(api-ms-win-core-featurestaging-l1-1-0.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(api-ms-win-core-featurestaging-l1-1-0.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.System.WindowsProgramming.ENUM_CALLBACK : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.UI.Controls.RichEdit.EDITWORDBREAKPROCEX : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.UI.Shell.PAPPCONSTRAIN_CHANGE_ROUTINE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.UI.Shell.PAPPSTATE_CHANGE_ROUTINE : [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(2)] => [StructLayout(3,CharSet=4),UnmanagedFunctionPointer(1)]
+Windows.Win32.UI.WindowsAndMessaging.Apis.DestroyIndexedResults : [DllImport(MrmSupport.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.10240)] => [DllImport(MrmSupport.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.10240)]
+Windows.Win32.UI.WindowsAndMessaging.Apis.DestroyResourceIndexer : [DllImport(MrmSupport.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.10240)] => [DllImport(MrmSupport.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.10240)]
+Windows.Win32.UI.Xaml.Diagnostics.Apis.InitializeXamlDiagnostic : [DllImport(Windows.UI.Xaml.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False)] => [DllImport(Windows.UI.Xaml.dll,ExactSpelling=True,PreserveSig=False)]
+Windows.Win32.UI.Xaml.Diagnostics.Apis.InitializeXamlDiagnosticsEx : [DllImport(Windows.UI.Xaml.dll,CallingConvention=2,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)] => [DllImport(Windows.UI.Xaml.dll,ExactSpelling=True,PreserveSig=False),SupportedOSPlatform(windows10.0.15063)]
diff --git a/scripts/ScrapeHeaders.ps1 b/scripts/ScrapeHeaders.ps1
index 18f669f54..3cedb81e2 100644
--- a/scripts/ScrapeHeaders.ps1
+++ b/scripts/ScrapeHeaders.ps1
@@ -2,7 +2,9 @@ param
(
[switch]$Clean,
- [string]$Partition
+ [string]$Partition,
+
+ [switch]$Debug
)
. "$PSScriptRoot\CommonUtils.ps1"
@@ -14,7 +16,16 @@ if ($Clean.IsPresent)
.\scripts\CleanOutputs.ps1
}
-$params = @('build', $windowsWin32ProjectRoot, '-c:Release', '-t:ScrapeHeaders')
+if ($Debug)
+{
+ $configuration = "Debug"
+}
+else
+{
+ $configuration = "Release"
+}
+
+$params = @('build', $windowsWin32ProjectRoot, "-c:$configuration", '-t:ScrapeHeaders')
if ($Partition)
{
$params += "-p:PartitionFilter=$Partition"
diff --git a/sources/ClangSharpSourceToWinmd/ClangSharpSourceCompilation.cs b/sources/ClangSharpSourceToWinmd/ClangSharpSourceCompilation.cs
index 69c0eb66a..9f89ebabd 100644
--- a/sources/ClangSharpSourceToWinmd/ClangSharpSourceCompilation.cs
+++ b/sources/ClangSharpSourceToWinmd/ClangSharpSourceCompilation.cs
@@ -238,22 +238,22 @@ public static ClangSharpSourceCompilation Create(
watch.Restart();
List filesToMerge = new List();
- foreach (string x64FileName in modifiedFiles.Where(f => GetArchitectureForFileName(f) == Windows.Win32.Interop.Architecture.X64))
+ foreach (string x86FileName in modifiedFiles.Where(f => GetArchitectureForFileName(f) == Windows.Win32.Interop.Architecture.X86))
{
- string x86FileName = x64FileName.Replace(@"\x64\", @"\x86\", StringComparison.OrdinalIgnoreCase);
- string arm64FileName = x64FileName.Replace(@"\x64\", @"\arm64\", StringComparison.OrdinalIgnoreCase);
+ string x64FileName = x86FileName.Replace(@"\x86\", @"\x64\", StringComparison.OrdinalIgnoreCase);
+ string arm64FileName = x86FileName.Replace(@"\x86\", @"\arm64\", StringComparison.OrdinalIgnoreCase);
- if (File.Exists(x86FileName) && File.Exists(arm64FileName))
+ if (File.Exists(x64FileName) && File.Exists(arm64FileName))
{
- string x64Content = File.ReadAllText(x64FileName);
- if (x64Content == File.ReadAllText(x86FileName) && x64Content == File.ReadAllText(arm64FileName))
+ string x86Content = File.ReadAllText(x86FileName);
+ if (x86Content == File.ReadAllText(x64FileName) && x86Content == File.ReadAllText(arm64FileName))
{
- var parititionName = GetPartitionNameFromFileName(x64FileName);
+ var parititionName = GetPartitionNameFromFileName(x86FileName);
- File.Delete(x86FileName);
+ File.Delete(x64FileName);
File.Delete(arm64FileName);
- partitionsNotNeedingCrossarch.Add(GetPartitionNameFromFileName(x64FileName));
+ partitionsNotNeedingCrossarch.Add(GetPartitionNameFromFileName(x86FileName));
}
else
{
@@ -265,39 +265,43 @@ public static ClangSharpSourceCompilation Create(
}
CrossArchSyntaxMap crossArchSyntaxMap = LoadCrossArchMapFromFiles(filesToMerge, opt);
+ HashSet nonX86TreesUsedForX86 = crossArchSyntaxMap.Get64BitTreesUsedForX86();
CrossArchTreeMerger crossArchTreeMerger = new CrossArchTreeMerger(crossArchSyntaxMap);
- System.Threading.Tasks.Parallel.ForEach(FilesToTrees(filesToMerge.Where(f => GetArchitectureForFileName(f) == Windows.Win32.Interop.Architecture.X64)), opt, (x64Tree) =>
+ System.Threading.Tasks.Parallel.ForEach(FilesToTrees(filesToMerge.Where(f => GetArchitectureForFileName(f) == Windows.Win32.Interop.Architecture.X86)), opt, (x86Tree) =>
{
- string x86FileName = x64Tree.FilePath.Replace(@"\x64\", @"\x86\", StringComparison.OrdinalIgnoreCase);
- string arm64FileName = x64Tree.FilePath.Replace(@"\x64\", @"\arm64\", StringComparison.OrdinalIgnoreCase);
+ string x64FileName = x86Tree.FilePath.Replace(@"\x86\", @"\x64\", StringComparison.OrdinalIgnoreCase);
+ string arm64FileName = x86Tree.FilePath.Replace(@"\x86\", @"\arm64\", StringComparison.OrdinalIgnoreCase);
- var parititionName = GetPartitionNameFromFileName(x64Tree.FilePath);
+ var parititionName = GetPartitionNameFromFileName(x86Tree.FilePath);
- var fixed64Tree = crossArchTreeMerger.ProcessTree(x64Tree, out _);
- var fixed86Tree = crossArchTreeMerger.ProcessTree(ReadTree(x86FileName), out bool x86Contributed);
+ var fixed86Tree = crossArchTreeMerger.ProcessTree(x86Tree, out _);
+ var fixed64Tree = crossArchTreeMerger.ProcessTree(ReadTree(x64FileName), out bool x64Contributed);
var fixedArm64Tree = crossArchTreeMerger.ProcessTree(ReadTree(arm64FileName), out bool arm64Contributed);
- if (!x86Contributed && SyntaxUtils.IsTreeEmpty(fixed86Tree) &&
- !arm64Contributed & SyntaxUtils.IsTreeEmpty(fixedArm64Tree))
+ x64Contributed |= nonX86TreesUsedForX86.Contains(x64FileName);
+ arm64Contributed |= nonX86TreesUsedForX86.Contains(arm64FileName);
+
+ if (!x64Contributed && SyntaxUtils.IsTreeEmpty(fixed64Tree) &&
+ !arm64Contributed && SyntaxUtils.IsTreeEmpty(fixedArm64Tree))
{
- File.Delete(x86FileName);
+ File.Delete(x64FileName);
File.Delete(arm64FileName);
partitionsNotNeedingCrossarch.Add(GetPartitionNameFromFileName(parititionName));
}
else
{
- WriteTree(fixed86Tree, fixed86Tree.FilePath);
+ WriteTree(fixed64Tree, fixed64Tree.FilePath);
WriteTree(fixedArm64Tree, fixedArm64Tree.FilePath);
}
- WriteTree(fixed64Tree, fixed64Tree.FilePath);
+ WriteTree(fixed86Tree, fixed86Tree.FilePath);
});
if (partitionsNotNeedingCrossarch.Count != 0)
{
- string partInfo = string.Join(',', partitionsNotNeedingCrossarch.ToArray());
+ string partInfo = string.Join(';', partitionsNotNeedingCrossarch.ToArray().OrderBy(s => s));
Console.WriteLine($"ClangSharpSourceToWinmd : warning CSSW001: Partitions detected with no cross-arch differences: {partInfo}");
}
diff --git a/sources/ClangSharpSourceToWinmd/CrossArchSyntaxMap.cs b/sources/ClangSharpSourceToWinmd/CrossArchSyntaxMap.cs
index c73cd34ca..33158de01 100644
--- a/sources/ClangSharpSourceToWinmd/CrossArchSyntaxMap.cs
+++ b/sources/ClangSharpSourceToWinmd/CrossArchSyntaxMap.cs
@@ -1,347 +1,410 @@
-using System.Collections.Generic;
-using System.IO;
-using System.Text;
-using Microsoft.CodeAnalysis;
-using Microsoft.CodeAnalysis.CSharp;
-using Microsoft.CodeAnalysis.CSharp.Syntax;
-using Windows.Win32.Interop;
-using MetadataUtils;
-
-namespace ClangSharpSourceToWinmd
-{
- public class CrossArchSyntaxMap
- {
- private Dictionary> namesToInfos = new Dictionary>();
-
- public CrossArchSyntaxMap()
- {
- }
-
- public static Architecture GetArchForTree(SyntaxTree tree)
- {
- string potentialArch = Path.GetFileName(Path.GetDirectoryName(tree.FilePath));
-
- switch (potentialArch)
- {
- case "x64":
- return Architecture.X64;
-
- case "x86":
- return Architecture.X86;
-
- case "arm64":
- return Architecture.Arm64;
-
- default:
- return Architecture.None;
- }
- }
-
- public static bool IsCrossArchTree(SyntaxTree tree)
- {
- string treeFileName = Path.GetFileName(tree.FilePath).ToLowerInvariant();
- if (treeFileName.StartsWith("autotypes.") ||
- treeFileName.EndsWith(".enums.cs") ||
- treeFileName.EndsWith(".constants.cs") ||
- treeFileName.EndsWith(".manual.cs"))
- {
- return false;
- }
-
- return true;
- }
-
- public static bool IsPotentialCrossArch(StructDeclarationSyntax node)
- {
- return node.Parent is NamespaceDeclarationSyntax && !SyntaxUtils.IsEmptyStruct(node);
- }
-
- public static bool IsPotentialCrossArch(DelegateDeclarationSyntax node)
- {
- return node.Parent is NamespaceDeclarationSyntax;
- }
-
- public static bool IsPotentialCrossArch(MethodDeclarationSyntax node)
- {
- var dllImportAttr = SyntaxUtils.GetAttribute(node.AttributeLists, "DllImport");
- if (dllImportAttr != null)
- {
- return true;
- }
-
- return false;
- }
-
- public void AddTree(SyntaxTree tree)
- {
- CrossArchSyntaxWalker walker = new CrossArchSyntaxWalker(this);
- walker.WalkTree(tree);
- }
-
- public IEnumerable GetSignatureArchGroupings(string name)
- {
- if (this.namesToInfos.TryGetValue(name, out var crossArchInfos))
- {
- foreach (var info in crossArchInfos)
- {
- yield return info.Arch;
- }
- }
- }
-
- public IEnumerable GetSignatureArchGroupings(SyntaxNode node)
- {
- string name = SyntaxUtils.GetFullName(node, true);
- return this.GetSignatureArchGroupings(name);
- }
-
- private static string GetNativeTypeForSignature(SyntaxList attributeLists)
- {
- var nativeType = SyntaxUtils.GetNativeTypeNameFromAttributesLists(attributeLists);
-
- // If the native type has a '/' it means it contains a path, which won't compare well
- // in a cloud build when different architectures are built on different agents. Just
- // return null in that case
- if (nativeType != null && nativeType.Contains('/'))
- {
- nativeType = null;
- }
-
- return nativeType;
- }
-
- private static string GetMethodSignature(
- string name, SyntaxList attributeLists, TypeSyntax returnType, ParameterListSyntax parameterList)
- {
- StringBuilder ret = new StringBuilder();
- foreach (var list in attributeLists)
- {
- if (list.Target != null && list.Target.Identifier.Text == "return")
- {
- continue;
- }
-
- foreach (var attr in list.Attributes)
- {
- if (attr.ToString().StartsWith("return:"))
- {
- continue;
- }
-
- ret.Append($"[{attr}]");
- }
- }
-
- var retType = GetTypeName(returnType.ToString(), attributeLists);
- if (retType == null)
- {
- retType = returnType.ToString();
- }
-
- ret.Append(retType);
- ret.Append(' ');
- ret.Append(name);
- ret.Append('(');
-
- bool firstParam = true;
- foreach (var param in parameterList.Parameters)
- {
- if (firstParam)
- {
- firstParam = false;
- }
- else
- {
- ret.Append(',');
- }
-
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.CSharp;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+using Windows.Win32.Interop;
+using MetadataUtils;
+
+namespace ClangSharpSourceToWinmd
+{
+ public class CrossArchSyntaxMap
+ {
+ private Dictionary> namesToInfos = new Dictionary>();
+ private Dictionary namesTo64BitStructs = new Dictionary();
+ private HashSet x86StructsNeed64BitAttrs = new HashSet();
+
+ public CrossArchSyntaxMap()
+ {
+ }
+
+ public static Architecture GetArchForTree(SyntaxTree tree)
+ {
+ string potentialArch = Path.GetFileName(Path.GetDirectoryName(tree.FilePath));
+
+ switch (potentialArch)
+ {
+ case "x64":
+ return Architecture.X64;
+
+ case "x86":
+ return Architecture.X86;
+
+ case "arm64":
+ return Architecture.Arm64;
+
+ default:
+ return Architecture.None;
+ }
+ }
+
+ public static bool IsCrossArchTree(SyntaxTree tree)
+ {
+ string treeFileName = Path.GetFileName(tree.FilePath).ToLowerInvariant();
+ if (treeFileName.StartsWith("autotypes.") ||
+ treeFileName.EndsWith(".enums.cs") ||
+ treeFileName.EndsWith(".constants.cs") ||
+ treeFileName.EndsWith(".manual.cs"))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ public static bool IsPotentialCrossArch(StructDeclarationSyntax node)
+ {
+ return node.Parent is NamespaceDeclarationSyntax && !SyntaxUtils.IsEmptyStruct(node);
+ }
+
+ public static bool IsPotentialCrossArch(DelegateDeclarationSyntax node)
+ {
+ return node.Parent is NamespaceDeclarationSyntax;
+ }
+
+ public static bool IsPotentialCrossArch(MethodDeclarationSyntax node)
+ {
+ var dllImportAttr = SyntaxUtils.GetAttribute(node.AttributeLists, "DllImport");
+ if (dllImportAttr != null)
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ public StructDeclarationSyntax FixX86Struct(StructDeclarationSyntax x86Node)
+ {
+ string name = SyntaxUtils.GetFullName(x86Node, true);
+ if (this.x86StructsNeed64BitAttrs.Contains(name))
+ {
+ return x86Node.AddAttributeLists(this.namesTo64BitStructs[name].AttributeLists.ToArray());
+ }
+
+ return x86Node;
+ }
+
+ public HashSet Get64BitTreesUsedForX86()
+ {
+ HashSet ret = new HashSet();
+
+ foreach (var name in this.x86StructsNeed64BitAttrs)
+ {
+ var nonX86Struct = this.namesTo64BitStructs[name];
+ if (!ret.Contains(nonX86Struct.SyntaxTree.FilePath))
+ {
+ ret.Add(nonX86Struct.SyntaxTree.FilePath);
+ }
+ }
+
+ return ret;
+ }
+
+ public void AddTree(SyntaxTree tree)
+ {
+ CrossArchSyntaxWalker walker = new CrossArchSyntaxWalker(this);
+ walker.WalkTree(tree);
+ }
+
+ public IEnumerable GetSignatureArchGroupings(string name)
+ {
+ if (this.namesToInfos.TryGetValue(name, out var crossArchInfos))
+ {
+ foreach (var info in crossArchInfos)
+ {
+ yield return info.Arch;
+ }
+ }
+ }
+
+ public IEnumerable GetSignatureArchGroupings(SyntaxNode node)
+ {
+ string name = SyntaxUtils.GetFullName(node, true);
+ return this.GetSignatureArchGroupings(name);
+ }
+
+ private static string GetNativeTypeForSignature(SyntaxList attributeLists)
+ {
+ var nativeType = SyntaxUtils.GetNativeTypeNameFromAttributesLists(attributeLists);
+
+ // Get rid of ones that won't compare well:
+ // If the native type has a '/' it contains a path
+ // If it contains (*), it's a function pointer prototype
+ if (nativeType != null && (nativeType.Contains('/') || nativeType.Contains("(*)")))
+ {
+ nativeType = null;
+ }
+
+ return nativeType;
+ }
+
+ private static string GetMethodSignature(
+ string name, SyntaxList attributeLists, TypeSyntax returnType, ParameterListSyntax parameterList)
+ {
+ StringBuilder ret = new StringBuilder();
+ foreach (var list in attributeLists)
+ {
+ if (list.Target != null && list.Target.Identifier.Text == "return")
+ {
+ continue;
+ }
+
+ foreach (var attr in list.Attributes)
+ {
+ var attrText = attr.ToString();
+
+ // Skip return attributes
+ if (attrText.StartsWith("return:"))
+ {
+ continue;
+ }
+
+ // Skip UnmanagedFunctionPointer attributes because they can have calling
+ // conventions that will only be accurate on x86
+ if (attrText.StartsWith("UnmanagedFunctionPointer"))
+ {
+ continue;
+ }
+
+ // Skip DllImport attributes because they can have calling
+ // conventions that will only be accurate on x86
+ if (attrText.StartsWith("DllImport"))
+ {
+ continue;
+ }
+
+ ret.Append($"[{attrText}]");
+ }
+ }
+
+ var retType = GetTypeName(returnType.ToString(), attributeLists);
+ if (retType == null)
+ {
+ retType = returnType.ToString();
+ }
+
+ ret.Append(retType);
+ ret.Append(' ');
+ ret.Append(name);
+ ret.Append('(');
+
+ bool firstParam = true;
+ foreach (var param in parameterList.Parameters)
+ {
+ if (firstParam)
+ {
+ firstParam = false;
+ }
+ else
+ {
+ ret.Append(',');
+ }
+
if (param.Type != null)
{
var typeName = GetTypeName(param.Type.ToString(), param.AttributeLists);
ret.Append(typeName);
- ret.Append(' ');
- }
-
- ret.Append(param.Identifier.ValueText);
- }
-
- ret.Append(')');
-
- return ret.ToString();
- }
-
- private static string GetTypeName(string type, SyntaxList attributeList)
- {
- var ret = type;
- if (type.StartsWith("IntPtr") ||
- type.StartsWith("UIntPtr") ||
- type.StartsWith("int") ||
- type.StartsWith("uint") ||
- type.StartsWith("long") ||
- type.StartsWith("ulong"))
- {
- var nativeType = GetNativeTypeForSignature(attributeList);
- if (nativeType != null)
- {
- ret = nativeType;
- }
- }
-
- return ret;
- }
-
- private static string GetFullSignature(SyntaxNode node)
- {
- if (node is StructDeclarationSyntax s)
- {
- StringBuilder ret = new StringBuilder();
- ret.Append(s.AttributeLists.ToString());
- ret.Append(s.Identifier.ValueText);
- ret.Append(':');
-
- bool firstField = true;
- foreach (var member in s.Members)
- {
- if (member is FieldDeclarationSyntax field)
- {
- if (field.Modifiers.ToString().Contains("const"))
- {
- continue;
- }
-
- if (firstField)
- {
- firstField = false;
- }
- else
- {
- ret.Append(',');
- }
-
- var firstVar = field.Declaration.Variables.First();
- var typeName = GetTypeName(field.Declaration.Type.ToString(), field.AttributeLists);
- ret.Append(typeName);
- ret.Append(' ');
- ret.Append(firstVar.ToString());
- }
- }
-
- return ret.ToString();
- }
- else if (node is MethodDeclarationSyntax m)
- {
- return GetMethodSignature(m.Identifier.ValueText, m.AttributeLists, m.ReturnType, m.ParameterList);
- }
- else if (node is DelegateDeclarationSyntax d)
- {
- return GetMethodSignature(d.Identifier.ValueText, d.AttributeLists, d.ReturnType, d.ParameterList);
- }
-
- return node.ToString();
- }
-
- private void AddNode(Architecture arch, SyntaxNode node)
- {
- string name = SyntaxUtils.GetFullName(node, true);
- string fullSignature = GetFullSignature(node);
- string altSignature = string.Empty;
-
- if (arch == Architecture.X86 && node is StructDeclarationSyntax structNode)
- {
- var packing4AttrList =
- SyntaxFactory.AttributeList(
- SyntaxFactory.SingletonSeparatedList(
- SyntaxFactory.Attribute(
- SyntaxFactory.ParseName("StructLayout"),
- SyntaxFactory.ParseAttributeArgumentList("(LayoutKind.Sequential, Pack = 4)"))));
-
- var tempNode = structNode.AddAttributeLists(packing4AttrList);
- altSignature = GetFullSignature(tempNode);
- }
-
- lock (this.namesToInfos)
- {
- if (!this.namesToInfos.TryGetValue(name, out var crossArchInfos))
- {
- crossArchInfos = new List();
- this.namesToInfos[name] = crossArchInfos;
- }
-
- foreach (var info in crossArchInfos)
- {
- if (info.FullSignature == fullSignature || info.FullSignature == altSignature)
- {
- info.Arch |= arch;
- return;
- }
- }
-
- var newInfo = new CrossArchInfo() { Arch = arch, FullSignature = fullSignature };
- crossArchInfos.Add(newInfo);
- }
- }
-
- private class CrossArchSyntaxWalker : CSharpSyntaxWalker
- {
- private CrossArchSyntaxMap map;
- private Architecture currentArch;
-
- public CrossArchSyntaxWalker(CrossArchSyntaxMap map)
- {
- this.map = map;
- }
-
- public void WalkTree(SyntaxTree tree)
- {
- if (!IsCrossArchTree(tree))
- {
- return;
- }
-
- this.currentArch = GetArchForTree(tree);
-
- if (this.currentArch != Architecture.None)
- {
- this.Visit(tree.GetRoot());
- }
- }
-
- public override void VisitStructDeclaration(StructDeclarationSyntax node)
- {
- if (IsPotentialCrossArch(node))
- {
- this.map.AddNode(this.currentArch, node);
- }
-
- base.VisitStructDeclaration(node);
- }
-
- public override void VisitMethodDeclaration(MethodDeclarationSyntax node)
- {
- if (IsPotentialCrossArch(node))
- {
- this.map.AddNode(this.currentArch, node);
- }
-
- base.VisitMethodDeclaration(node);
- }
-
- public override void VisitDelegateDeclaration(DelegateDeclarationSyntax node)
- {
- if (IsPotentialCrossArch(node))
- {
- this.map.AddNode(this.currentArch, node);
- }
-
- base.VisitDelegateDeclaration(node);
- }
- }
- }
-
- public class CrossArchInfo
- {
- public Architecture Arch { get; set; }
-
- public string FullSignature { get; set; }
- }
-}
+ ret.Append(' ');
+ }
+
+ ret.Append(param.Identifier.ValueText);
+ }
+
+ ret.Append(')');
+
+ return ret.ToString();
+ }
+
+ private static string GetTypeName(string type, SyntaxList attributeList)
+ {
+ var ret = type;
+ if (type.StartsWith("IntPtr") ||
+ type.StartsWith("UIntPtr") ||
+ type.StartsWith("int") ||
+ type.StartsWith("uint") ||
+ type.StartsWith("long") ||
+ type.StartsWith("ulong"))
+ {
+ var nativeType = GetNativeTypeForSignature(attributeList);
+ if (nativeType != null)
+ {
+ ret = nativeType;
+ }
+ }
+
+ return ret;
+ }
+
+ private static string GetFullSignature(SyntaxNode node)
+ {
+ if (node is StructDeclarationSyntax s)
+ {
+ StringBuilder ret = new StringBuilder();
+ ret.Append(s.AttributeLists.ToString());
+ ret.Append(s.Identifier.ValueText);
+ ret.Append(':');
+
+ bool firstField = true;
+ foreach (var member in s.Members)
+ {
+ if (member is FieldDeclarationSyntax field)
+ {
+ if (field.Modifiers.ToString().Contains("const"))
+ {
+ continue;
+ }
+
+ if (firstField)
+ {
+ firstField = false;
+ }
+ else
+ {
+ ret.Append(',');
+ }
+
+ var firstVar = field.Declaration.Variables.First();
+ var typeName = GetTypeName(field.Declaration.Type.ToString(), field.AttributeLists);
+ ret.Append(typeName);
+ ret.Append(' ');
+ ret.Append(firstVar.ToString());
+ }
+ }
+
+ return ret.ToString();
+ }
+ else if (node is MethodDeclarationSyntax m)
+ {
+ return GetMethodSignature(m.Identifier.ValueText, m.AttributeLists, m.ReturnType, m.ParameterList);
+ }
+ else if (node is DelegateDeclarationSyntax d)
+ {
+ return GetMethodSignature(d.Identifier.ValueText, d.AttributeLists, d.ReturnType, d.ParameterList);
+ }
+
+ return node.ToString();
+ }
+
+ private void AddNode(Architecture arch, SyntaxNode node)
+ {
+ string name = SyntaxUtils.GetFullName(node, true);
+ string fullSignature = GetFullSignature(node);
+ string altSignatureForX86 = string.Empty;
+
+ if (node is StructDeclarationSyntax structNode)
+ {
+ // Cache the non-x86 struct attributes in case the x86 doesn't have any.
+ // Clang doesn't seem to always know the packing for -m32 but does better with -m64
+ if (arch != Architecture.X86 && structNode.AttributeLists.Count != 0 && !this.namesTo64BitStructs.ContainsKey(name))
+ {
+ this.namesTo64BitStructs[name] = structNode;
+ }
+
+ if (arch == Architecture.X86)
+ {
+ // If the x86 node doesn't have any attributes, try using the ones cached from the non-x86 version
+ if (structNode.AttributeLists.Count == 0 && this.namesTo64BitStructs.TryGetValue(name, out var nonX86Node))
+ {
+ var tempNode = structNode.WithAttributeLists(nonX86Node.AttributeLists);
+
+ // Save these off to see if we match with previous items
+ altSignatureForX86 = GetFullSignature(tempNode);
+ }
+ }
+ }
+
+ lock (this.namesToInfos)
+ {
+ if (!this.namesToInfos.TryGetValue(name, out var crossArchInfos))
+ {
+ crossArchInfos = new List();
+ this.namesToInfos[name] = crossArchInfos;
+ }
+
+ foreach (var info in crossArchInfos)
+ {
+ if (info.FullSignature == altSignatureForX86)
+ {
+ this.x86StructsNeed64BitAttrs.Add(name);
+ info.Arch |= arch;
+ return;
+ }
+
+ if (info.FullSignature == fullSignature)
+ {
+ info.Arch |= arch;
+ return;
+ }
+ }
+
+ var newInfo = new CrossArchInfo() { Arch = arch, FullSignature = fullSignature };
+ crossArchInfos.Add(newInfo);
+ }
+ }
+
+ private class CrossArchSyntaxWalker : CSharpSyntaxWalker
+ {
+ private CrossArchSyntaxMap map;
+ private Architecture currentArch;
+
+ public CrossArchSyntaxWalker(CrossArchSyntaxMap map)
+ {
+ this.map = map;
+ }
+
+ public void WalkTree(SyntaxTree tree)
+ {
+ if (!IsCrossArchTree(tree))
+ {
+ return;
+ }
+
+ this.currentArch = GetArchForTree(tree);
+
+ if (this.currentArch != Architecture.None)
+ {
+ this.Visit(tree.GetRoot());
+ }
+ }
+
+ public override void VisitStructDeclaration(StructDeclarationSyntax node)
+ {
+ if (IsPotentialCrossArch(node))
+ {
+ this.map.AddNode(this.currentArch, node);
+ }
+
+ base.VisitStructDeclaration(node);
+ }
+
+ public override void VisitMethodDeclaration(MethodDeclarationSyntax node)
+ {
+ if (IsPotentialCrossArch(node))
+ {
+ this.map.AddNode(this.currentArch, node);
+ }
+
+ base.VisitMethodDeclaration(node);
+ }
+
+ public override void VisitDelegateDeclaration(DelegateDeclarationSyntax node)
+ {
+ if (IsPotentialCrossArch(node))
+ {
+ this.map.AddNode(this.currentArch, node);
+ }
+
+ base.VisitDelegateDeclaration(node);
+ }
+ }
+ }
+
+ public class CrossArchInfo
+ {
+ public Architecture Arch { get; set; }
+
+ public string FullSignature { get; set; }
+ }
+}
diff --git a/sources/ClangSharpSourceToWinmd/CrossArchTreeMerger.cs b/sources/ClangSharpSourceToWinmd/CrossArchTreeMerger.cs
index 0ceb5c5af..f4718bc1a 100644
--- a/sources/ClangSharpSourceToWinmd/CrossArchTreeMerger.cs
+++ b/sources/ClangSharpSourceToWinmd/CrossArchTreeMerger.cs
@@ -66,7 +66,7 @@ private SyntaxTree ProcessTree(SyntaxTree tree)
public override SyntaxNode VisitEnumDeclaration(EnumDeclarationSyntax node)
{
- if (this.currentArch != Architecture.X64)
+ if (this.currentArch != Architecture.X86)
{
return null;
}
@@ -93,8 +93,8 @@ public override SyntaxNode VisitFieldDeclaration(FieldDeclarationSyntax node)
{
var modifiers = node.Modifiers.ToString();
- // Get rid of constants on Apis classes when arch isn't x64
- if (this.currentArch != Architecture.X64 &&
+ // Get rid of constants on Apis classes when arch isn't x86
+ if (this.currentArch != Architecture.X86 &&
(node.Parent is ClassDeclarationSyntax cDef && cDef.Identifier.ValueText == "Apis") &&
(modifiers.Contains("const") || modifiers.Contains("static")))
{
@@ -108,6 +108,11 @@ public override SyntaxNode VisitStructDeclaration(StructDeclarationSyntax node)
{
node = (StructDeclarationSyntax)base.VisitStructDeclaration(node);
+ if (this.currentArch == Architecture.X86)
+ {
+ node = this.owner.map.FixX86Struct(node);
+ }
+
if (CrossArchSyntaxMap.IsPotentialCrossArch(node))
{
var originalName = node.Identifier.ValueText;
@@ -248,8 +253,8 @@ private void HandleArchSpecific(SyntaxNode node, out bool removeNode, out Attrib
if (appliesToAll)
{
- // Get rid of items that are common to all architectures if we're not on x64
- removeNode = this.currentArch != Architecture.X64;
+ // Get rid of items that are common to all architectures if we're not on x86
+ removeNode = this.currentArch != Architecture.X86;
return;
}
diff --git a/sources/GeneratorSdk/MetadataTasks/ScrapeHeaders.cs b/sources/GeneratorSdk/MetadataTasks/ScrapeHeaders.cs
index 269f32a13..d5e11cc52 100644
--- a/sources/GeneratorSdk/MetadataTasks/ScrapeHeaders.cs
+++ b/sources/GeneratorSdk/MetadataTasks/ScrapeHeaders.cs
@@ -14,7 +14,7 @@ public class ScrapeHeaders : Task, ICancelableTask
{
public const string ClangSharpVersion = "14.0.0-rc1";
- private static readonly string[] allArches = new string[] { "x64", "x86", "arm64" };
+ private static readonly string[] allArches = new string[] { "x86", "x64", "arm64" };
private bool canceled;
private string[] defaultIncDirs;
@@ -241,7 +241,7 @@ private bool ProcessPartition(Partition partition, string arch)
bool excludeFromCrossarch = this.partitionsToExcludeFromCrossarch.Contains(partitionName) || partition.ExcludeFromCrossarch;
if (excludeFromCrossarch)
{
- if (arch == "x86" || arch == "arm64")
+ if (arch == "x64" || arch == "arm64")
{
return true;
}
diff --git a/sources/GeneratorSdk/tools/assets/scraper/baseSettings.64.rsp b/sources/GeneratorSdk/tools/assets/scraper/baseSettings.64.rsp
index 3671e9b86..4c70a0231 100644
--- a/sources/GeneratorSdk/tools/assets/scraper/baseSettings.64.rsp
+++ b/sources/GeneratorSdk/tools/assets/scraper/baseSettings.64.rsp
@@ -1,2 +1,4 @@
--additional
-m64
+--with-callconv
+*=stdcall
\ No newline at end of file
diff --git a/sources/GeneratorSdk/tools/assets/scraper/baseSettings.x86.rsp b/sources/GeneratorSdk/tools/assets/scraper/baseSettings.x86.rsp
index 83585ccb9..42d12dd9b 100644
--- a/sources/GeneratorSdk/tools/assets/scraper/baseSettings.x86.rsp
+++ b/sources/GeneratorSdk/tools/assets/scraper/baseSettings.x86.rsp
@@ -1,4 +1,5 @@
--additional
+-mrtd
-D_X86_=1
--exclude
_KNONVOLATILE_CONTEXT_POINTERS_ARM64