| File: _generated\166\Windows.Win32.IVTable.g.cs | Web Access |
| Project: src\winforms\src\System.Private.Windows.Core\src\System.Private.Windows.Core.csproj (System.Private.Windows.Core) |
// ------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> // ------------------------------------------------------------------------------ #pragma warning disable CS1591,CS1573,CS0465,CS0649,CS8019,CS1570,CS1584,CS1658,CS0436,CS8981,SYSLIB1092,CS3021,CS3019 using global::System; using global::System.Diagnostics; using global::System.Diagnostics.CodeAnalysis; using global::System.Runtime.CompilerServices; using global::System.Runtime.InteropServices; using global::System.Runtime.Versioning; using winmdroot = global::Windows.Win32; namespace Windows.Win32 { /// <summary> /// Non generic interface that allows constraining against a COM wrapper type directly. COM structs should /// implement <see cref="IVTable{TComInterface, TVTable}"/>. /// </summary> internal unsafe interface IVTable { static abstract System.Com.IUnknown.Vtbl* VTable { get; } } internal unsafe interface IVTable<TComInterface, TVTable> : IVTable where TVTable : unmanaged where TComInterface : unmanaged, IVTable<TComInterface, TVTable> { private protected static abstract void PopulateVTable(TVTable* vtable); static System.Com.IUnknown.Vtbl* IVTable.VTable { get; } = (System.Com.IUnknown.Vtbl*)CreateVTable(); private static TVTable* CreateVTable() { TVTable* vtbl = (TVTable*)RuntimeHelpers.AllocateTypeAssociatedMemory(typeof(TVTable), sizeof(TVTable)); ComHelpers.PopulateIUnknown<TComInterface>((System.Com.IUnknown.Vtbl*)vtbl); TComInterface.PopulateVTable(vtbl); return vtbl; } } }