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