File: Windows.Win32.IFileSaveDialog.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("84BCCD23-5FDE-4CDB-AEA4-AF64B83D78AB")]
		[SupportedOSPlatform("windows6.0.6000")]
		[global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
		internal unsafe partial struct IFileSaveDialog
			:IVTable<IFileSaveDialog,IFileSaveDialog.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]<IFileSaveDialog*,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT>)lpVtbl[0])((IFileSaveDialog*)Unsafe.AsPointer(ref this), riid, ppvObject);
			}

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

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

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT Show(IFileSaveDialog* 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 void Show(winmdroot.Foundation.HWND hwndOwner)
			{
				((delegate *unmanaged [Stdcall]<IFileSaveDialog*,winmdroot.Foundation.HWND ,winmdroot.Foundation.HRESULT>)lpVtbl[3])((IFileSaveDialog*)Unsafe.AsPointer(ref this), hwndOwner).ThrowOnFailure();
			}

			/// <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(IFileSaveDialog* 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]<IFileSaveDialog*,uint ,winmdroot.UI.Shell.Common.COMDLG_FILTERSPEC* ,winmdroot.Foundation.HRESULT>)lpVtbl[4])((IFileSaveDialog*)Unsafe.AsPointer(ref this), cFileTypes, rgFilterSpec).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetFileTypeIndex(IFileSaveDialog* 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]<IFileSaveDialog*,uint ,winmdroot.Foundation.HRESULT>)lpVtbl[5])((IFileSaveDialog*)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(IFileSaveDialog* 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]<IFileSaveDialog*,uint* ,winmdroot.Foundation.HRESULT>)lpVtbl[6])((IFileSaveDialog*)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(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.UI.Shell.IFileDialogEvents* ,uint* ,winmdroot.Foundation.HRESULT>)lpVtbl[7])((IFileSaveDialog*)Unsafe.AsPointer(ref this), pfde, pdwCookie).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT Unadvise(IFileSaveDialog* 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]<IFileSaveDialog*,uint ,winmdroot.Foundation.HRESULT>)lpVtbl[8])((IFileSaveDialog*)Unsafe.AsPointer(ref this), dwCookie).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetOptions(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS ,winmdroot.Foundation.HRESULT>)lpVtbl[9])((IFileSaveDialog*)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(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.UI.Shell.FILEOPENDIALOGOPTIONS* ,winmdroot.Foundation.HRESULT>)lpVtbl[10])((IFileSaveDialog*)Unsafe.AsPointer(ref this), pfos).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetDefaultFolder(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT>)lpVtbl[11])((IFileSaveDialog*)Unsafe.AsPointer(ref this), psi).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetFolder(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT>)lpVtbl[12])((IFileSaveDialog*)Unsafe.AsPointer(ref this), psi).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetFolder(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.UI.Shell.IShellItem** ,winmdroot.Foundation.HRESULT>)lpVtbl[13])((IFileSaveDialog*)Unsafe.AsPointer(ref this), ppsi).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetCurrentSelection(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.UI.Shell.IShellItem** ,winmdroot.Foundation.HRESULT>)lpVtbl[14])((IFileSaveDialog*)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(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[15])((IFileSaveDialog*)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(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.Foundation.PWSTR* ,winmdroot.Foundation.HRESULT>)lpVtbl[16])((IFileSaveDialog*)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(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[17])((IFileSaveDialog*)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(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[18])((IFileSaveDialog*)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(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[19])((IFileSaveDialog*)Unsafe.AsPointer(ref this), pszLabel).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT GetResult(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.UI.Shell.IShellItem** ,winmdroot.Foundation.HRESULT>)lpVtbl[20])((IFileSaveDialog*)Unsafe.AsPointer(ref this), ppsi).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT AddPlace(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.FDAP ,winmdroot.Foundation.HRESULT>)lpVtbl[21])((IFileSaveDialog*)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(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[22])((IFileSaveDialog*)Unsafe.AsPointer(ref this), pszDefaultExtension).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT Close(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.Foundation.HRESULT ,winmdroot.Foundation.HRESULT>)lpVtbl[23])((IFileSaveDialog*)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(IFileSaveDialog* 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]<IFileSaveDialog*,global::System.Guid* ,winmdroot.Foundation.HRESULT>)lpVtbl[24])((IFileSaveDialog*)Unsafe.AsPointer(ref this), guid).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT ClearClientData(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.Foundation.HRESULT>)lpVtbl[25])((IFileSaveDialog*)Unsafe.AsPointer(ref this)).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetFilter(IFileSaveDialog* 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]<IFileSaveDialog*,winmdroot.UI.Shell.IShellItemFilter* ,winmdroot.Foundation.HRESULT>)lpVtbl[26])((IFileSaveDialog*)Unsafe.AsPointer(ref this), pFilter).ThrowOnFailure();
			}

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

			/// <summary>Sets an item to be used as the initial entry in a Save As dialog.</summary>
			/// <param name="psi">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ishellitem">IShellItem</a>*</b> Pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ishellitem">IShellItem</a> that represents the item.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-setsaveasitem#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>The name of the item is displayed in the file name edit box, and the containing folder is opened in the view. This would generally be used when the application is saving an item that already exists. For new items, use <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifiledialog-setfilename">IFileDialog::SetFileName</a>.</remarks>
			public unsafe void SetSaveAsItem(winmdroot.UI.Shell.IShellItem* psi)
			{
				((delegate *unmanaged [Stdcall]<IFileSaveDialog*,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT>)lpVtbl[27])((IFileSaveDialog*)Unsafe.AsPointer(ref this), psi).ThrowOnFailure();
			}

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

			/// <summary>Provides a property store that defines the default values to be used for the item being saved.</summary>
			/// <param name="pStore">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/propsys/nn-propsys-ipropertystore">IPropertyStore</a>*</b> Pointer to the interface that represents the property store that contains the associated metadata.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-setproperties#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 called at any time before the dialog is opened or while the dialog is showing. If an item has inherent properties, this method should be called with those properties before showing the dialog. When using <b>Save As</b>, the application should provide the properties of the item being saved to the <b>Save</b> dialog. Those properties should be retreived from the original item by calling <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ishellitem2-getpropertystore">GetPropertyStore</a> with the <a href="https://docs.microsoft.com/windows/desktop/api/propsys/ne-propsys-getpropertystoreflags">GPS_HANDLERPROPERTIESONLY</a> flag. To retrieve the properties of the saved item (which may have been modified by the user) after the dialog closes, call <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-getproperties">IFileSaveDialog::GetProperties</a>. To turn on property collection and indicate which properties should be displayed in the <b>Save</b> dialog, use <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-setcollectedproperties">IFileSaveDialog::SetCollectedProperties</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-setproperties#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void SetProperties(winmdroot.UI.Shell.PropertiesSystem.IPropertyStore* pStore)
			{
				((delegate *unmanaged [Stdcall]<IFileSaveDialog*,winmdroot.UI.Shell.PropertiesSystem.IPropertyStore* ,winmdroot.Foundation.HRESULT>)lpVtbl[28])((IFileSaveDialog*)Unsafe.AsPointer(ref this), pStore).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT SetCollectedProperties(IFileSaveDialog* pThis, winmdroot.UI.Shell.PropertiesSystem.IPropertyDescriptionList* pList, winmdroot.Foundation.BOOL fAppendDefault)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.SetCollectedProperties(pList, fAppendDefault);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Specifies which properties will be collected in the save dialog.</summary>
			/// <param name="pList">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/propsys/nn-propsys-ipropertydescriptionlist">IPropertyDescriptionList</a>*</b> Pointer to the interface that represents the list of properties to collect. This parameter can be <b>NULL</b>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-setcollectedproperties#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="fAppendDefault">
			/// <para>Type: <b>BOOL</b> <b>TRUE</b> to show default properties for the currently selected filetype in addition to the properties specified by <i>pList</i>. <b>FALSE</b> to show only properties specified by <i>pList</i>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-setcollectedproperties#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>The calling application can use the <a href="https://docs.microsoft.com/windows/desktop/api/propsys/nf-propsys-psgetpropertydescriptionlistfromstring">PSGetPropertyDescriptionListFromString</a> function to construct an <a href="https://docs.microsoft.com/windows/desktop/api/propsys/nn-propsys-ipropertydescriptionlist">IPropertyDescriptionList</a> from a string such as "prop:Comments;Subject;". For more information about property schemas, see <a href="https://docs.microsoft.com/windows/desktop/properties/building-property-handlers-property-schemas">Property Schemas</a>. <b>IFileSaveDialog::SetCollectedProperties</b> can be called at any time before the dialog is displayed or while it is visible. If different properties are to be collected depending on the chosen filetype, then <b>IFileSaveDialog::SetCollectedProperties</b> can be called in response to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifiledialogevents-ontypechange">OnTypeChange</a>. <div class="alert"><b>Note</b>  By default, no properties are collected in the save dialog.</div> <div> </div></para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-setcollectedproperties#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void SetCollectedProperties(winmdroot.UI.Shell.PropertiesSystem.IPropertyDescriptionList* pList, winmdroot.Foundation.BOOL fAppendDefault)
			{
				((delegate *unmanaged [Stdcall]<IFileSaveDialog*,winmdroot.UI.Shell.PropertiesSystem.IPropertyDescriptionList* ,winmdroot.Foundation.BOOL ,winmdroot.Foundation.HRESULT>)lpVtbl[29])((IFileSaveDialog*)Unsafe.AsPointer(ref this), pList, fAppendDefault).ThrowOnFailure();
			}

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

			/// <summary>Retrieves the set of property values for a saved item or an item in the process of being saved.</summary>
			/// <param name="ppStore">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/propsys/nn-propsys-ipropertystore">IPropertyStore</a>**</b> Address of a pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/propsys/nn-propsys-ipropertystore">IPropertyStore</a> that receives the property values.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-getproperties#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 called while the dialog is showing to retrieve the current set of values in the metadata collection pane. It can also be called after the dialog has closed, to retrieve the final set of values. The call to this method will fail unless property collection has been turned on with a call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-setcollectedproperties">IFileSaveDialog::SetCollectedProperties</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-getproperties#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void GetProperties(winmdroot.UI.Shell.PropertiesSystem.IPropertyStore** ppStore)
			{
				((delegate *unmanaged [Stdcall]<IFileSaveDialog*,winmdroot.UI.Shell.PropertiesSystem.IPropertyStore** ,winmdroot.Foundation.HRESULT>)lpVtbl[30])((IFileSaveDialog*)Unsafe.AsPointer(ref this), ppStore).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT ApplyProperties(IFileSaveDialog* pThis, winmdroot.UI.Shell.IShellItem* psi, winmdroot.UI.Shell.PropertiesSystem.IPropertyStore* pStore, winmdroot.Foundation.HWND hwnd, winmdroot.UI.Shell.IFileOperationProgressSink* pSink)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.ApplyProperties(psi, pStore, hwnd, pSink);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Applies a set of properties to an item using the Shell's copy engine.</summary>
			/// <param name="psi">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ishellitem">IShellItem</a>*</b> Pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ishellitem">IShellItem</a> that represents the file being saved. This is usually the item retrieved by <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifiledialog-getresult">GetResult</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-applyproperties#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="pStore">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/propsys/nn-propsys-ipropertystore">IPropertyStore</a>*</b> Pointer to the <a href="https://docs.microsoft.com/windows/desktop/api/propsys/nn-propsys-ipropertystore">IPropertyStore</a> that represents the property values to be applied to the file. This can be the property store returned by <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-getproperties">IFileSaveDialog::GetProperties</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-applyproperties#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="hwnd">
			/// <para>Type: <b>HWND</b> The handle of the application window.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-applyproperties#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="pSink">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperationprogresssink">IFileOperationProgressSink</a>*</b> Pointer to an optional <b>IFileOperationProgressSink</b> that the calling application can use if they want to be notified of the progress of the property stamping. This value may be <b>NULL</b>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-applyproperties#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 should be used when the application has turned on property collection (<a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-setcollectedproperties">IFileSaveDialog::SetCollectedProperties</a>), but does not persist the properties themselves into the saved file. <div class="alert"><b>Note</b>  The file represented by the item specified in <i>psi</i> must exist in physical storage before making the call to <b>IFileSaveDialog::ApplyProperties</b>, so it must have been previously saved at some point.</div> <div> </div></para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifilesavedialog-applyproperties#">Read more on docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void ApplyProperties(winmdroot.UI.Shell.IShellItem* psi, winmdroot.UI.Shell.PropertiesSystem.IPropertyStore* pStore, winmdroot.Foundation.HWND hwnd, winmdroot.UI.Shell.IFileOperationProgressSink* pSink)
			{
				((delegate *unmanaged [Stdcall]<IFileSaveDialog*,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.PropertiesSystem.IPropertyStore* ,winmdroot.Foundation.HWND ,winmdroot.UI.Shell.IFileOperationProgressSink* ,winmdroot.Foundation.HRESULT>)lpVtbl[31])((IFileSaveDialog*)Unsafe.AsPointer(ref this), psi, pStore, hwnd, pSink).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]<IFileSaveDialog*,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT> QueryInterface_1;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

				internal delegate *unmanaged [Stdcall]<IFileSaveDialog*,winmdroot.UI.Shell.PropertiesSystem.IPropertyStore* ,winmdroot.Foundation.HRESULT> SetProperties_29;

				internal delegate *unmanaged [Stdcall]<IFileSaveDialog*,winmdroot.UI.Shell.PropertiesSystem.IPropertyDescriptionList* ,winmdroot.Foundation.BOOL ,winmdroot.Foundation.HRESULT> SetCollectedProperties_30;

				internal delegate *unmanaged [Stdcall]<IFileSaveDialog*,winmdroot.UI.Shell.PropertiesSystem.IPropertyStore** ,winmdroot.Foundation.HRESULT> GetProperties_31;

				internal delegate *unmanaged [Stdcall]<IFileSaveDialog*,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.PropertiesSystem.IPropertyStore* ,winmdroot.Foundation.HWND ,winmdroot.UI.Shell.IFileOperationProgressSink* ,winmdroot.Foundation.HRESULT> ApplyProperties_32;
			} 
			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->SetSaveAsItem_28 = &SetSaveAsItem;
				vtable->SetProperties_29 = &SetProperties;
				vtable->SetCollectedProperties_30 = &SetCollectedProperties;
				vtable->GetProperties_31 = &GetProperties;
				vtable->ApplyProperties_32 = &ApplyProperties;
			}

			private void** lpVtbl;

			/// <summary>The IID guid for this interface.</summary>
			/// <value>{84bccd23-5fde-4cdb-aea4-af64b83d78ab}</value>
			internal static readonly Guid IID_Guid = new Guid(0x84BCCD23, 0x5FDE, 0x4CDB, 0xAE, 0xA4, 0xAF, 0x64, 0xB8, 0x3D, 0x78, 0xAB);

			static ref readonly Guid IComIID.Guid			{
								[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
				{
					ReadOnlySpan<byte> data = new byte[]					{
0x23,0xCD,0xBC,0x84,0xDE,0x5F,0xDB,0x4C,0xAE,0xA4,0xAF,0x64,0xB8,0x3D,0x78,0xAB					};
					return ref Unsafe.As<byte,Guid>(ref MemoryMarshal.GetReference(data));
				}
			}
			[Guid("84BCCD23-5FDE-4CDB-AEA4-AF64B83D78AB"),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 SetSaveAsItem(winmdroot.UI.Shell.IShellItem* psi);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT SetProperties(winmdroot.UI.Shell.PropertiesSystem.IPropertyStore* pStore);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT SetCollectedProperties(winmdroot.UI.Shell.PropertiesSystem.IPropertyDescriptionList* pList, winmdroot.Foundation.BOOL fAppendDefault);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT GetProperties(winmdroot.UI.Shell.PropertiesSystem.IPropertyStore** ppStore);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT ApplyProperties(winmdroot.UI.Shell.IShellItem* psi, winmdroot.UI.Shell.PropertiesSystem.IPropertyStore* pStore, winmdroot.Foundation.HWND hwnd, winmdroot.UI.Shell.IFileOperationProgressSink* pSink);
			}
		}
	}
}