File: Windows.Win32.IFileOpenDialog.g.cs
Project: src\src\System.Windows.Forms.Primitives\src\System.Windows.Forms.Primitives.csproj (System.Windows.Forms.Primitives)
// ------------------------------------------------------------------------------
// <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
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
{
	namespace UI.Shell
	{
		[Guid("D57C7288-D4AD-4768-BE02-9D969532D960")]
		[SupportedOSPlatform("windows6.0.6000")]
		[global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
		internal unsafe partial struct IFileOpenDialog
			:IVTable<IFileOpenDialog,IFileOpenDialog.Vtbl>,IComIID		{
			/// <inheritdoc cref="QueryInterface(global::System.Guid*, void**)"/>
			internal unsafe winmdroot.Foundation.HRESULT QueryInterface(in global::System.Guid riid, out void* ppvObject)
			{
				fixed (void** ppvObjectLocal = &ppvObject)
				{
					fixed (global::System.Guid* riidLocal = &riid)
					{
						winmdroot.Foundation.HRESULT __result = this.QueryInterface(riidLocal, ppvObjectLocal);
						return __result;
					}
				}
			}

			public unsafe winmdroot.Foundation.HRESULT QueryInterface(global::System.Guid* riid, void** ppvObject)
			{
				return ((delegate *unmanaged [Stdcall]<IFileOpenDialog*,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT>)lpVtbl[0])((IFileOpenDialog*)Unsafe.AsPointer(ref this), riid, ppvObject);
			}

			public uint AddRef()
			{
				return ((delegate *unmanaged [Stdcall]<IFileOpenDialog*,uint>)lpVtbl[1])((IFileOpenDialog*)Unsafe.AsPointer(ref this));
			}

			public uint Release()
			{
				return ((delegate *unmanaged [Stdcall]<IFileOpenDialog*,uint>)lpVtbl[2])((IFileOpenDialog*)Unsafe.AsPointer(ref this));
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT Show(IFileOpenDialog* pThis, winmdroot.Foundation.HWND hwndOwner)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.Show(hwndOwner);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public winmdroot.Foundation.HRESULT Show(winmdroot.Foundation.HWND hwndOwner)
			{
				return ((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.HWND ,winmdroot.Foundation.HRESULT>)lpVtbl[3])((IFileOpenDialog*)Unsafe.AsPointer(ref this), hwndOwner);
			}

			/// <inheritdoc cref="SetFileTypes(uint, winmdroot.UI.Shell.Common.COMDLG_FILTERSPEC*)"/>
			internal unsafe void SetFileTypes(ReadOnlySpan<winmdroot.UI.Shell.Common.COMDLG_FILTERSPEC> rgFilterSpec)
			{
				fixed (winmdroot.UI.Shell.Common.COMDLG_FILTERSPEC* rgFilterSpecLocal = rgFilterSpec)
				{
					this.SetFileTypes((uint )rgFilterSpec.Length, rgFilterSpecLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetFileTypes(IFileOpenDialog* pThis, uint cFileTypes, winmdroot.UI.Shell.Common.COMDLG_FILTERSPEC* rgFilterSpec)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetFileTypes(cFileTypes, rgFilterSpec);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void SetFileTypes(uint cFileTypes, winmdroot.UI.Shell.Common.COMDLG_FILTERSPEC* rgFilterSpec)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,uint ,winmdroot.UI.Shell.Common.COMDLG_FILTERSPEC* ,winmdroot.Foundation.HRESULT>)lpVtbl[4])((IFileOpenDialog*)Unsafe.AsPointer(ref this), cFileTypes, rgFilterSpec).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetFileTypeIndex(IFileOpenDialog* pThis, uint iFileType)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetFileTypeIndex(iFileType);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public void SetFileTypeIndex(uint iFileType)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,uint ,winmdroot.Foundation.HRESULT>)lpVtbl[5])((IFileOpenDialog*)Unsafe.AsPointer(ref this), iFileType).ThrowOnFailure();
			}

			/// <inheritdoc cref="GetFileTypeIndex(uint*)"/>
			internal unsafe void GetFileTypeIndex(out uint piFileType)
			{
				fixed (uint* piFileTypeLocal = &piFileType)
				{
					this.GetFileTypeIndex(piFileTypeLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetFileTypeIndex(IFileOpenDialog* pThis, uint* piFileType)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetFileTypeIndex(piFileType);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void GetFileTypeIndex(uint* piFileType)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,uint* ,winmdroot.Foundation.HRESULT>)lpVtbl[6])((IFileOpenDialog*)Unsafe.AsPointer(ref this), piFileType).ThrowOnFailure();
			}

			/// <inheritdoc cref="Advise(winmdroot.UI.Shell.IFileDialogEvents*, uint*)"/>
			internal unsafe void Advise(winmdroot.UI.Shell.IFileDialogEvents* pfde, out uint pdwCookie)
			{
				fixed (uint* pdwCookieLocal = &pdwCookie)
				{
					this.Advise(pfde, pdwCookieLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT Advise(IFileOpenDialog* pThis, winmdroot.UI.Shell.IFileDialogEvents* pfde, uint* pdwCookie)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.Advise(pfde, pdwCookie);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void Advise(winmdroot.UI.Shell.IFileDialogEvents* pfde, uint* pdwCookie)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IFileDialogEvents* ,uint* ,winmdroot.Foundation.HRESULT>)lpVtbl[7])((IFileOpenDialog*)Unsafe.AsPointer(ref this), pfde, pdwCookie).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT Unadvise(IFileOpenDialog* pThis, uint dwCookie)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.Unadvise(dwCookie);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public void Unadvise(uint dwCookie)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,uint ,winmdroot.Foundation.HRESULT>)lpVtbl[8])((IFileOpenDialog*)Unsafe.AsPointer(ref this), dwCookie).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetOptions(IFileOpenDialog* pThis, winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS fos)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetOptions(fos);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public void SetOptions(winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS fos)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS ,winmdroot.Foundation.HRESULT>)lpVtbl[9])((IFileOpenDialog*)Unsafe.AsPointer(ref this), fos).ThrowOnFailure();
			}

			/// <inheritdoc cref="GetOptions(winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS*)"/>
			internal unsafe void GetOptions(out winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS pfos)
			{
				fixed (winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS* pfosLocal = &pfos)
				{
					this.GetOptions(pfosLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetOptions(IFileOpenDialog* pThis, winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS* pfos)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetOptions(pfos);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void GetOptions(winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS* pfos)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS* ,winmdroot.Foundation.HRESULT>)lpVtbl[10])((IFileOpenDialog*)Unsafe.AsPointer(ref this), pfos).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetDefaultFolder(IFileOpenDialog* pThis, winmdroot.UI.Shell.IShellItem* psi)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetDefaultFolder(psi);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void SetDefaultFolder(winmdroot.UI.Shell.IShellItem* psi)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT>)lpVtbl[11])((IFileOpenDialog*)Unsafe.AsPointer(ref this), psi).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetFolder(IFileOpenDialog* pThis, winmdroot.UI.Shell.IShellItem* psi)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetFolder(psi);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void SetFolder(winmdroot.UI.Shell.IShellItem* psi)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT>)lpVtbl[12])((IFileOpenDialog*)Unsafe.AsPointer(ref this), psi).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetFolder(IFileOpenDialog* pThis, winmdroot.UI.Shell.IShellItem** ppsi)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetFolder(ppsi);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void GetFolder(winmdroot.UI.Shell.IShellItem** ppsi)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItem** ,winmdroot.Foundation.HRESULT>)lpVtbl[13])((IFileOpenDialog*)Unsafe.AsPointer(ref this), ppsi).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetCurrentSelection(IFileOpenDialog* pThis, winmdroot.UI.Shell.IShellItem** ppsi)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetCurrentSelection(ppsi);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void GetCurrentSelection(winmdroot.UI.Shell.IShellItem** ppsi)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItem** ,winmdroot.Foundation.HRESULT>)lpVtbl[14])((IFileOpenDialog*)Unsafe.AsPointer(ref this), ppsi).ThrowOnFailure();
			}

			/// <inheritdoc cref="SetFileName(winmdroot.Foundation.PCWSTR)"/>
			internal unsafe void SetFileName(string pszName)
			{
				fixed (char* pszNameLocal = pszName)
				{
					this.SetFileName(pszNameLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetFileName(IFileOpenDialog* pThis, winmdroot.Foundation.PCWSTR pszName)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetFileName(pszName);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public void SetFileName(winmdroot.Foundation.PCWSTR pszName)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[15])((IFileOpenDialog*)Unsafe.AsPointer(ref this), pszName).ThrowOnFailure();
			}

			/// <inheritdoc cref="GetFileName(winmdroot.Foundation.PWSTR*)"/>
			internal unsafe void GetFileName(out winmdroot.Foundation.PWSTR pszName)
			{
				fixed (winmdroot.Foundation.PWSTR* pszNameLocal = &pszName)
				{
					this.GetFileName(pszNameLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetFileName(IFileOpenDialog* pThis, winmdroot.Foundation.PWSTR* pszName)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetFileName(pszName);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void GetFileName(winmdroot.Foundation.PWSTR* pszName)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.PWSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[16])((IFileOpenDialog*)Unsafe.AsPointer(ref this), pszName).ThrowOnFailure();
			}

			/// <inheritdoc cref="SetTitle(winmdroot.Foundation.PCWSTR)"/>
			internal unsafe void SetTitle(string pszTitle)
			{
				fixed (char* pszTitleLocal = pszTitle)
				{
					this.SetTitle(pszTitleLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetTitle(IFileOpenDialog* pThis, winmdroot.Foundation.PCWSTR pszTitle)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetTitle(pszTitle);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public void SetTitle(winmdroot.Foundation.PCWSTR pszTitle)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[17])((IFileOpenDialog*)Unsafe.AsPointer(ref this), pszTitle).ThrowOnFailure();
			}

			/// <inheritdoc cref="SetOkButtonLabel(winmdroot.Foundation.PCWSTR)"/>
			internal unsafe void SetOkButtonLabel(string pszText)
			{
				fixed (char* pszTextLocal = pszText)
				{
					this.SetOkButtonLabel(pszTextLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetOkButtonLabel(IFileOpenDialog* pThis, winmdroot.Foundation.PCWSTR pszText)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetOkButtonLabel(pszText);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public void SetOkButtonLabel(winmdroot.Foundation.PCWSTR pszText)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[18])((IFileOpenDialog*)Unsafe.AsPointer(ref this), pszText).ThrowOnFailure();
			}

			/// <inheritdoc cref="SetFileNameLabel(winmdroot.Foundation.PCWSTR)"/>
			internal unsafe void SetFileNameLabel(string pszLabel)
			{
				fixed (char* pszLabelLocal = pszLabel)
				{
					this.SetFileNameLabel(pszLabelLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetFileNameLabel(IFileOpenDialog* pThis, winmdroot.Foundation.PCWSTR pszLabel)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetFileNameLabel(pszLabel);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public void SetFileNameLabel(winmdroot.Foundation.PCWSTR pszLabel)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[19])((IFileOpenDialog*)Unsafe.AsPointer(ref this), pszLabel).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetResult(IFileOpenDialog* pThis, winmdroot.UI.Shell.IShellItem** ppsi)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetResult(ppsi);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void GetResult(winmdroot.UI.Shell.IShellItem** ppsi)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItem** ,winmdroot.Foundation.HRESULT>)lpVtbl[20])((IFileOpenDialog*)Unsafe.AsPointer(ref this), ppsi).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT AddPlace(IFileOpenDialog* pThis, winmdroot.UI.Shell.IShellItem* psi, winmdroot.UI.Shell.FDAP fdap)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.AddPlace(psi, fdap);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void AddPlace(winmdroot.UI.Shell.IShellItem* psi, winmdroot.UI.Shell.FDAP fdap)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.FDAP ,winmdroot.Foundation.HRESULT>)lpVtbl[21])((IFileOpenDialog*)Unsafe.AsPointer(ref this), psi, fdap).ThrowOnFailure();
			}

			/// <inheritdoc cref="SetDefaultExtension(winmdroot.Foundation.PCWSTR)"/>
			internal unsafe void SetDefaultExtension(string pszDefaultExtension)
			{
				fixed (char* pszDefaultExtensionLocal = pszDefaultExtension)
				{
					this.SetDefaultExtension(pszDefaultExtensionLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetDefaultExtension(IFileOpenDialog* pThis, winmdroot.Foundation.PCWSTR pszDefaultExtension)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetDefaultExtension(pszDefaultExtension);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public void SetDefaultExtension(winmdroot.Foundation.PCWSTR pszDefaultExtension)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[22])((IFileOpenDialog*)Unsafe.AsPointer(ref this), pszDefaultExtension).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT Close(IFileOpenDialog* pThis, winmdroot.Foundation.HRESULT hr)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.Close(hr);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public void Close(winmdroot.Foundation.HRESULT hr)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.HRESULT ,winmdroot.Foundation.HRESULT>)lpVtbl[23])((IFileOpenDialog*)Unsafe.AsPointer(ref this), hr).ThrowOnFailure();
			}

			/// <inheritdoc cref="SetClientGuid(global::System.Guid*)"/>
			internal unsafe void SetClientGuid(in global::System.Guid guid)
			{
				fixed (global::System.Guid* guidLocal = &guid)
				{
					this.SetClientGuid(guidLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetClientGuid(IFileOpenDialog* pThis, global::System.Guid* guid)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetClientGuid(guid);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void SetClientGuid(global::System.Guid* guid)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,global::System.Guid* ,winmdroot.Foundation.HRESULT>)lpVtbl[24])((IFileOpenDialog*)Unsafe.AsPointer(ref this), guid).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT ClearClientData(IFileOpenDialog* pThis)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.ClearClientData();
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public void ClearClientData()
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.HRESULT>)lpVtbl[25])((IFileOpenDialog*)Unsafe.AsPointer(ref this)).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetFilter(IFileOpenDialog* pThis, winmdroot.UI.Shell.IShellItemFilter* pFilter)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetFilter(pFilter);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			public unsafe void SetFilter(winmdroot.UI.Shell.IShellItemFilter* pFilter)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItemFilter* ,winmdroot.Foundation.HRESULT>)lpVtbl[26])((IFileOpenDialog*)Unsafe.AsPointer(ref this), pFilter).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetResults(IFileOpenDialog* pThis, winmdroot.UI.Shell.IShellItemArray** ppenum)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetResults(ppenum);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Gets the user's choices in a dialog that allows multiple selection.</summary>
			/// <param name="ppenum">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ishellitemarray">IShellItemArray</a>**</b> The address of a pointer to an <b>IShellItemArray</b> through which the items selected in the dialog can be accessed.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileopendialog-getresults#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>
			/// <para>This method can be used whether the selection consists of a single item or multiple items. <b>IFileOpenDialog::GetResults</b> can be called after the dialog has closed or during the handling of an IFileDialogEvents::OnFileOk event. Calling this method at any other time will fail.</para>
			/// <para><a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-imodalwindow-show">Show</a> must return a success code for a result to be available to <b>IFileOpenDialog::GetResults</b>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileopendialog-getresults#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe winmdroot.Foundation.HRESULT GetResults(winmdroot.UI.Shell.IShellItemArray** ppenum)
			{
				return ((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItemArray** ,winmdroot.Foundation.HRESULT>)lpVtbl[27])((IFileOpenDialog*)Unsafe.AsPointer(ref this), ppenum);
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetSelectedItems(IFileOpenDialog* pThis, winmdroot.UI.Shell.IShellItemArray** ppsai)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.GetSelectedItems(ppsai);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Gets the currently selected items in the dialog. These items may be items selected in the view, or text selected in the file name edit box.</summary>
			/// <param name="ppsai">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ishellitemarray">IShellItemArray</a>**</b> The address of a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ishellitemarray">IShellItemArray</a> through which the selected items can be accessed.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileopendialog-getselecteditems#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> If this method succeeds, it returns <b>S_OK</b>. Otherwise, it returns an <b>HRESULT</b> error code.</para>
			/// </returns>
			/// <remarks>This method can be used for single item or multiple item selections. If the user has entered new text in the file name field, this can be a time-consuming operation. When the application calls this method, the application parses the text in the <c>filename</c> field. For example, if this is a network share, the operation could take some time. However, this operation will not block the UI, since the user should able to stop the operation, which will result in <b>IFileOpenDialog::GetSelectedItems</b> returning a failure code).</remarks>
			public unsafe void GetSelectedItems(winmdroot.UI.Shell.IShellItemArray** ppsai)
			{
				((delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItemArray** ,winmdroot.Foundation.HRESULT>)lpVtbl[28])((IFileOpenDialog*)Unsafe.AsPointer(ref this), ppsai).ThrowOnFailure();
			}

			internal unsafe global::Windows.Win32.Foundation.HRESULT QueryInterface<T>(out T* ppv)
where T : unmanaged

			{
				var hr = this.QueryInterface(typeof(T).GUID, out void* pv);
				if (hr.Succeeded)

				{
					ppv = (T*)pv;
				}
				else

				{
					ppv = null;
				}

				return hr;
			}

			internal struct Vtbl
			{
				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT> QueryInterface_1;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,uint> AddRef_2;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,uint> Release_3;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.HWND ,winmdroot.Foundation.HRESULT> Show_4;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,uint ,winmdroot.UI.Shell.Common.COMDLG_FILTERSPEC* ,winmdroot.Foundation.HRESULT> SetFileTypes_5;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,uint ,winmdroot.Foundation.HRESULT> SetFileTypeIndex_6;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,uint* ,winmdroot.Foundation.HRESULT> GetFileTypeIndex_7;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IFileDialogEvents* ,uint* ,winmdroot.Foundation.HRESULT> Advise_8;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,uint ,winmdroot.Foundation.HRESULT> Unadvise_9;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS ,winmdroot.Foundation.HRESULT> SetOptions_10;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS* ,winmdroot.Foundation.HRESULT> GetOptions_11;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT> SetDefaultFolder_12;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT> SetFolder_13;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItem** ,winmdroot.Foundation.HRESULT> GetFolder_14;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItem** ,winmdroot.Foundation.HRESULT> GetCurrentSelection_15;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT> SetFileName_16;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.PWSTR* ,winmdroot.Foundation.HRESULT> GetFileName_17;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT> SetTitle_18;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT> SetOkButtonLabel_19;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT> SetFileNameLabel_20;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItem** ,winmdroot.Foundation.HRESULT> GetResult_21;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.FDAP ,winmdroot.Foundation.HRESULT> AddPlace_22;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT> SetDefaultExtension_23;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.HRESULT ,winmdroot.Foundation.HRESULT> Close_24;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,global::System.Guid* ,winmdroot.Foundation.HRESULT> SetClientGuid_25;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.Foundation.HRESULT> ClearClientData_26;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItemFilter* ,winmdroot.Foundation.HRESULT> SetFilter_27;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItemArray** ,winmdroot.Foundation.HRESULT> GetResults_28;

				internal delegate *unmanaged [Stdcall]<IFileOpenDialog*,winmdroot.UI.Shell.IShellItemArray** ,winmdroot.Foundation.HRESULT> GetSelectedItems_29;
			} 
			public static void PopulateVTable(Vtbl* vtable)
			{
				vtable->Show_4 = &Show;
				vtable->SetFileTypes_5 = &SetFileTypes;
				vtable->SetFileTypeIndex_6 = &SetFileTypeIndex;
				vtable->GetFileTypeIndex_7 = &GetFileTypeIndex;
				vtable->Advise_8 = &Advise;
				vtable->Unadvise_9 = &Unadvise;
				vtable->SetOptions_10 = &SetOptions;
				vtable->GetOptions_11 = &GetOptions;
				vtable->SetDefaultFolder_12 = &SetDefaultFolder;
				vtable->SetFolder_13 = &SetFolder;
				vtable->GetFolder_14 = &GetFolder;
				vtable->GetCurrentSelection_15 = &GetCurrentSelection;
				vtable->SetFileName_16 = &SetFileName;
				vtable->GetFileName_17 = &GetFileName;
				vtable->SetTitle_18 = &SetTitle;
				vtable->SetOkButtonLabel_19 = &SetOkButtonLabel;
				vtable->SetFileNameLabel_20 = &SetFileNameLabel;
				vtable->GetResult_21 = &GetResult;
				vtable->AddPlace_22 = &AddPlace;
				vtable->SetDefaultExtension_23 = &SetDefaultExtension;
				vtable->Close_24 = &Close;
				vtable->SetClientGuid_25 = &SetClientGuid;
				vtable->ClearClientData_26 = &ClearClientData;
				vtable->SetFilter_27 = &SetFilter;
				vtable->GetResults_28 = &GetResults;
				vtable->GetSelectedItems_29 = &GetSelectedItems;
			}

			private void** lpVtbl;

			/// <summary>The IID guid for this interface.</summary>
			/// <value>{d57c7288-d4ad-4768-be02-9d969532d960}</value>
			internal static readonly Guid IID_Guid = new Guid(0xD57C7288, 0xD4AD, 0x4768, 0xBE, 0x02, 0x9D, 0x96, 0x95, 0x32, 0xD9, 0x60);

			static ref readonly Guid IComIID.Guid			{
								[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
				{
					ReadOnlySpan<byte> data = new byte[]					{
0x88,0x72,0x7C,0xD5,0xAD,0xD4,0x68,0x47,0xBE,0x02,0x9D,0x96,0x95,0x32,0xD9,0x60					};
					return ref Unsafe.As<byte,Guid>(ref MemoryMarshal.GetReference(data));
				}
			}
			[Guid("D57C7288-D4AD-4768-BE02-9D969532D960"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown),ComImport()]
			[SupportedOSPlatform("windows6.0.6000")]
			internal interface Interface
				:winmdroot.UI.Shell.IModalWindow.Interface,winmdroot.UI.Shell.IFileDialog.Interface			{
				[PreserveSig()]
				new winmdroot.Foundation.HRESULT Show(winmdroot.Foundation.HWND hwndOwner);

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT SetFileTypes(uint cFileTypes, winmdroot.UI.Shell.Common.COMDLG_FILTERSPEC* rgFilterSpec);

				[PreserveSig()]
				new winmdroot.Foundation.HRESULT SetFileTypeIndex(uint iFileType);

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT GetFileTypeIndex(uint* piFileType);

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT Advise(winmdroot.UI.Shell.IFileDialogEvents* pfde, uint* pdwCookie);

				[PreserveSig()]
				new winmdroot.Foundation.HRESULT Unadvise(uint dwCookie);

				[PreserveSig()]
				new winmdroot.Foundation.HRESULT SetOptions(winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS fos);

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT GetOptions(winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS* pfos);

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT SetDefaultFolder(winmdroot.UI.Shell.IShellItem* psi);

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT SetFolder(winmdroot.UI.Shell.IShellItem* psi);

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT GetFolder(winmdroot.UI.Shell.IShellItem** ppsi);

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT GetCurrentSelection(winmdroot.UI.Shell.IShellItem** ppsi);

				[PreserveSig()]
				new winmdroot.Foundation.HRESULT SetFileName(winmdroot.Foundation.PCWSTR pszName);

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT GetFileName(winmdroot.Foundation.PWSTR* pszName);

				[PreserveSig()]
				new winmdroot.Foundation.HRESULT SetTitle(winmdroot.Foundation.PCWSTR pszTitle);

				[PreserveSig()]
				new winmdroot.Foundation.HRESULT SetOkButtonLabel(winmdroot.Foundation.PCWSTR pszText);

				[PreserveSig()]
				new winmdroot.Foundation.HRESULT SetFileNameLabel(winmdroot.Foundation.PCWSTR pszLabel);

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT GetResult(winmdroot.UI.Shell.IShellItem** ppsi);

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT AddPlace(winmdroot.UI.Shell.IShellItem* psi, winmdroot.UI.Shell.FDAP fdap);

				[PreserveSig()]
				new winmdroot.Foundation.HRESULT SetDefaultExtension(winmdroot.Foundation.PCWSTR pszDefaultExtension);

				[PreserveSig()]
				new winmdroot.Foundation.HRESULT Close(winmdroot.Foundation.HRESULT hr);

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT SetClientGuid(global::System.Guid* guid);

				[PreserveSig()]
				new winmdroot.Foundation.HRESULT ClearClientData();

				[PreserveSig()]
				unsafe new winmdroot.Foundation.HRESULT SetFilter(winmdroot.UI.Shell.IShellItemFilter* pFilter);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetResults(winmdroot.UI.Shell.IShellItemArray** ppenum);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetSelectedItems(winmdroot.UI.Shell.IShellItemArray** ppsai);
			}
		}
	}
}