File: Windows.Win32.IFileOperationProgressSink.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("04B0F1A7-9490-44BC-96E1-4296A31252E2")]
		[SupportedOSPlatform("windows6.0.6000")]
		[global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
		internal unsafe partial struct IFileOperationProgressSink
			:IVTable<IFileOperationProgressSink,IFileOperationProgressSink.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]<IFileOperationProgressSink*,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT>)lpVtbl[0])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), riid, ppvObject);
			}

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

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

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

			/// <summary>Performs caller-implemented actions before any specific file operations are performed.</summary>
			/// <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><b>StartOperations</b> is the first of the <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperationprogresssink">IFileOperationProgressSink</a> methods to be called after <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifileoperation-performoperations">PerformOperations</a>. It can be used to perform any setup or initialization that you require before the file operations begin.</remarks>
			public void StartOperations()
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,winmdroot.Foundation.HRESULT>)lpVtbl[3])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this)).ThrowOnFailure();
			}

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

			/// <summary>Performs caller-implemented actions after the last operation performed by the call to IFileOperation is complete.</summary>
			/// <param name="hrResult">
			/// <para>Type: <b>HRESULT</b> The return value of the final operation. Note that this is not the HRESULT returned by one of the <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperation">IFileOperation</a> methods, which simply queue the operations. Instead, this is the result of the actual operation, such as copy, delete, or move.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-finishoperations#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> Not used.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-finishoperations">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public void FinishOperations(winmdroot.Foundation.HRESULT hrResult)
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,winmdroot.Foundation.HRESULT ,winmdroot.Foundation.HRESULT>)lpVtbl[4])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), hrResult).ThrowOnFailure();
			}

			/// <inheritdoc cref="PreRenameItem(uint, winmdroot.UI.Shell.IShellItem*, winmdroot.Foundation.PCWSTR)"/>
			internal unsafe void PreRenameItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, string pszNewName)
			{
				fixed (char* pszNewNameLocal = pszNewName)
				{
					this.PreRenameItem(dwFlags, psiItem, pszNewNameLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT PreRenameItem(IFileOperationProgressSink* pThis, uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.Foundation.PCWSTR pszNewName)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.PreRenameItem(dwFlags, psiItem, pszNewName);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Performs caller-implemented actions before the rename process for each item begins.</summary>
			/// <param name="dwFlags">
			/// <para>Type: <b>DWORD</b> bitwise value that contains flags that control the operation. See <a href="https://docs.microsoft.com/windows/win32/api/shobjidl_core/ne-shobjidl_core-_transfer_source_flags">TRANSFER_SOURCE_FLAGS</a> for flag descriptions.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-prerenameitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiItem">
			/// <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 specifies the item to be renamed.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-prerenameitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="pszNewName">
			/// <para>Type: <b>LPCWSTR</b> Pointer to the new <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ishellitem-getdisplayname">display name</a> of the item. This is a null-terminated, Unicode string.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-prerenameitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> Returns S_OK if successful, or an error value otherwise. In the case of an error value, the rename operation and all subsequent operations pending from the call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperation">IFileOperation</a> are canceled.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-prerenameitem">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void PreRenameItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.Foundation.PCWSTR pszNewName)
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[5])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), dwFlags, psiItem, pszNewName).ThrowOnFailure();
			}

			/// <inheritdoc cref="PostRenameItem(uint, winmdroot.UI.Shell.IShellItem*, winmdroot.Foundation.PCWSTR, winmdroot.Foundation.HRESULT, winmdroot.UI.Shell.IShellItem*)"/>
			internal unsafe void PostRenameItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, string pszNewName, winmdroot.Foundation.HRESULT hrRename, winmdroot.UI.Shell.IShellItem* psiNewlyCreated)
			{
				fixed (char* pszNewNameLocal = pszNewName)
				{
					this.PostRenameItem(dwFlags, psiItem, pszNewNameLocal, hrRename, psiNewlyCreated);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT PostRenameItem(IFileOperationProgressSink* pThis, uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.Foundation.PCWSTR pszNewName, winmdroot.Foundation.HRESULT hrRename, winmdroot.UI.Shell.IShellItem* psiNewlyCreated)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.PostRenameItem(dwFlags, psiItem, pszNewName, hrRename, psiNewlyCreated);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Performs caller-implemented actions after the rename process for each item is complete.</summary>
			/// <param name="dwFlags">
			/// <para>Type: <b>DWORD</b> bitwise value that contains flags that were used during the rename operation. Some values can be set or changed during the rename operation. See <a href="https://docs.microsoft.com/windows/win32/api/shobjidl_core/ne-shobjidl_core-_transfer_source_flags">TRANSFER_SOURCE_FLAGS</a> for flag descriptions.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postrenameitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiItem">
			/// <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 specifies the item before it was renamed.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postrenameitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="pszNewName">
			/// <para>Type: <b>LPCWSTR</b> Pointer to the new <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ishellitem-getdisplayname">display name</a> of the item. This is a null-terminated, Unicode string. Note that this might not be the name that you asked for, given collisions and other naming rules.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postrenameitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="hrRename">
			/// <para>Type: <b>HRESULT</b> The return value of the rename operation. Note that this is not the HRESULT returned by <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifileoperation-renameitem">RenameItem</a>, which simply queues the rename operation. Instead, this is the result of the actual rename operation.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postrenameitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiNewlyCreated">
			/// <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 with its new name.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postrenameitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> Returns S_OK if successful, or an error value otherwise. In the case of an error value, all subsequent operations pending from the call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperation">IFileOperation</a> are canceled.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postrenameitem">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void PostRenameItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.Foundation.PCWSTR pszNewName, winmdroot.Foundation.HRESULT hrRename, winmdroot.UI.Shell.IShellItem* psiNewlyCreated)
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT>)lpVtbl[6])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), dwFlags, psiItem, pszNewName, hrRename, psiNewlyCreated).ThrowOnFailure();
			}

			/// <inheritdoc cref="PreMoveItem(uint, winmdroot.UI.Shell.IShellItem*, winmdroot.UI.Shell.IShellItem*, winmdroot.Foundation.PCWSTR)"/>
			internal unsafe void PreMoveItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, string pszNewName)
			{
				fixed (char* pszNewNameLocal = pszNewName)
				{
					this.PreMoveItem(dwFlags, psiItem, psiDestinationFolder, pszNewNameLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT PreMoveItem(IFileOperationProgressSink* pThis, uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.PreMoveItem(dwFlags, psiItem, psiDestinationFolder, pszNewName);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Performs caller-implemented actions before the move process for each item begins.</summary>
			/// <param name="dwFlags">
			/// <para>Type: <b>DWORD</b> bitwise value that contains flags that control the operation. See <a href="https://docs.microsoft.com/windows/win32/api/shobjidl_core/ne-shobjidl_core-_transfer_source_flags">TRANSFER_SOURCE_FLAGS</a> for flag descriptions.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-premoveitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiItem">
			/// <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 specifies the item to be moved.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-premoveitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiDestinationFolder">
			/// <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 specifies the destination folder to contain the moved item.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-premoveitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="pszNewName">
			/// <para>Type: <b>LPCWSTR</b> Pointer to a new name for the item in its new location. This is a null-terminated Unicode string and can be <b>NULL</b>. If <b>NULL</b>, the name of the destination item is the same as the source.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-premoveitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> Returns S_OK if successful, or an error value otherwise. In the case of an error value, the move operation and all subsequent operations pending from the call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperation">IFileOperation</a> are canceled.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-premoveitem">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void PreMoveItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName)
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[7])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), dwFlags, psiItem, psiDestinationFolder, pszNewName).ThrowOnFailure();
			}

			/// <inheritdoc cref="PostMoveItem(uint, winmdroot.UI.Shell.IShellItem*, winmdroot.UI.Shell.IShellItem*, winmdroot.Foundation.PCWSTR, winmdroot.Foundation.HRESULT, winmdroot.UI.Shell.IShellItem*)"/>
			internal unsafe void PostMoveItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, string pszNewName, winmdroot.Foundation.HRESULT hrMove, winmdroot.UI.Shell.IShellItem* psiNewlyCreated)
			{
				fixed (char* pszNewNameLocal = pszNewName)
				{
					this.PostMoveItem(dwFlags, psiItem, psiDestinationFolder, pszNewNameLocal, hrMove, psiNewlyCreated);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT PostMoveItem(IFileOperationProgressSink* pThis, uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName, winmdroot.Foundation.HRESULT hrMove, winmdroot.UI.Shell.IShellItem* psiNewlyCreated)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.PostMoveItem(dwFlags, psiItem, psiDestinationFolder, pszNewName, hrMove, psiNewlyCreated);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Performs caller-implemented actions after the move process for each item is complete.</summary>
			/// <param name="dwFlags">
			/// <para>Type: <b>DWORD</b> bitwise value that contains flags that were used during the move operation. Some values can be set or changed during the move operation. See <a href="https://docs.microsoft.com/windows/win32/api/shobjidl_core/ne-shobjidl_core-_transfer_source_flags">TRANSFER_SOURCE_FLAGS</a> for flag descriptions.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postmoveitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiItem">
			/// <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 specifies the source item.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postmoveitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiDestinationFolder">
			/// <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 specifies the destination folder that contains the moved item.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postmoveitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="pszNewName">
			/// <para>Type: <b>LPCWSTR</b> Pointer to the name that was given to the item after it was moved. This is a null-terminated Unicode string. Note that this might not be the name that you asked for, given collisions and other naming rules.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postmoveitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="hrMove">
			/// <para>Type: <b>HRESULT</b> The return value of the move operation. Note that this is not the HRESULT returned by <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifileoperation-moveitem">MoveItem</a>, which simply queues the move operation. Instead, this is the result of the actual move.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postmoveitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiNewlyCreated">
			/// <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 moved item in its new location.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postmoveitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> Returns S_OK if successful, or an error value otherwise. In the case of an error value, all subsequent operations pending from the call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperation">IFileOperation</a> are canceled.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postmoveitem">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void PostMoveItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName, winmdroot.Foundation.HRESULT hrMove, winmdroot.UI.Shell.IShellItem* psiNewlyCreated)
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT>)lpVtbl[8])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), dwFlags, psiItem, psiDestinationFolder, pszNewName, hrMove, psiNewlyCreated).ThrowOnFailure();
			}

			/// <inheritdoc cref="PreCopyItem(uint, winmdroot.UI.Shell.IShellItem*, winmdroot.UI.Shell.IShellItem*, winmdroot.Foundation.PCWSTR)"/>
			internal unsafe void PreCopyItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, string pszNewName)
			{
				fixed (char* pszNewNameLocal = pszNewName)
				{
					this.PreCopyItem(dwFlags, psiItem, psiDestinationFolder, pszNewNameLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT PreCopyItem(IFileOperationProgressSink* pThis, uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.PreCopyItem(dwFlags, psiItem, psiDestinationFolder, pszNewName);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Performs caller-implemented actions before the copy process for each item begins.</summary>
			/// <param name="dwFlags">
			/// <para>Type: <b>DWORD</b> bitwise value that contains flags that control the operation. See <a href="https://docs.microsoft.com/windows/win32/api/shobjidl_core/ne-shobjidl_core-_transfer_source_flags">TRANSFER_SOURCE_FLAGS</a> for flag descriptions.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-precopyitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiItem">
			/// <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 specifies the source item.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-precopyitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiDestinationFolder">
			/// <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 specifies the destination folder to contain the copy of the item.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-precopyitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="pszNewName">
			/// <para>Type: <b>LPCWSTR</b> Pointer to a new name for the item after it has been copied. This is a null-terminated Unicode string and can be <b>NULL</b>. If <b>NULL</b>, the name of the destination item is the same as the source.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-precopyitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> Returns S_OK if successful, or an error value otherwise. In the case of an error value, the copy operation and all subsequent operations pending from the call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperation">IFileOperation</a> are canceled.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-precopyitem">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void PreCopyItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName)
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[9])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), dwFlags, psiItem, psiDestinationFolder, pszNewName).ThrowOnFailure();
			}

			/// <inheritdoc cref="PostCopyItem(uint, winmdroot.UI.Shell.IShellItem*, winmdroot.UI.Shell.IShellItem*, winmdroot.Foundation.PCWSTR, winmdroot.Foundation.HRESULT, winmdroot.UI.Shell.IShellItem*)"/>
			internal unsafe void PostCopyItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, string pszNewName, winmdroot.Foundation.HRESULT hrCopy, winmdroot.UI.Shell.IShellItem* psiNewlyCreated)
			{
				fixed (char* pszNewNameLocal = pszNewName)
				{
					this.PostCopyItem(dwFlags, psiItem, psiDestinationFolder, pszNewNameLocal, hrCopy, psiNewlyCreated);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT PostCopyItem(IFileOperationProgressSink* pThis, uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName, winmdroot.Foundation.HRESULT hrCopy, winmdroot.UI.Shell.IShellItem* psiNewlyCreated)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.PostCopyItem(dwFlags, psiItem, psiDestinationFolder, pszNewName, hrCopy, psiNewlyCreated);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Performs caller-implemented actions after the copy process for each item is complete.</summary>
			/// <param name="dwFlags">
			/// <para>Type: <b>DWORD</b> bitwise value that contains flags that were used during the copy operation. Some values can be set or changed during the copy operation. See <a href="https://docs.microsoft.com/windows/win32/api/shobjidl_core/ne-shobjidl_core-_transfer_source_flags">TRANSFER_SOURCE_FLAGS</a> for flag descriptions.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postcopyitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiItem">
			/// <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 specifies the source item.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postcopyitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiDestinationFolder">
			/// <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 specifies the destination folder to which the item was copied.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postcopyitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="pszNewName">
			/// <para>Type: <b>LPCWSTR</b> Pointer to the new name that was given to the item after it was copied. This is a null-terminated Unicode string. Note that this might not be the name that you asked for, given collisions and other naming rules.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postcopyitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="hrCopy">
			/// <para>Type: <b>HRESULT</b> The return value of the copy operation. Note that this is not the HRESULT returned by <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifileoperation-copyitem">CopyItem</a>, which simply queues the copy operation. Instead, this is the result of the actual copy.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postcopyitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiNewlyCreated">
			/// <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 new copy of the item.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postcopyitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> Returns S_OK if successful, or an error value otherwise. In the case of an error value, all subsequent operations pending from the call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperation">IFileOperation</a> are canceled.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postcopyitem">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void PostCopyItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName, winmdroot.Foundation.HRESULT hrCopy, winmdroot.UI.Shell.IShellItem* psiNewlyCreated)
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT>)lpVtbl[10])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), dwFlags, psiItem, psiDestinationFolder, pszNewName, hrCopy, psiNewlyCreated).ThrowOnFailure();
			}

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

			/// <summary>Performs caller-implemented actions before the delete process for each item begins.</summary>
			/// <param name="dwFlags">
			/// <para>Type: <b>DWORD</b> bitwise value that contains flags that control the operation. See <a href="https://docs.microsoft.com/windows/win32/api/shobjidl_core/ne-shobjidl_core-_transfer_source_flags">TRANSFER_SOURCE_FLAGS</a> for flag descriptions.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-predeleteitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiItem">
			/// <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 specifies the item to be deleted.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-predeleteitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> Returns S_OK if successful, or an error value otherwise. In the case of an error value, the delete operation and all subsequent operations pending from the call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperation">IFileOperation</a> are canceled.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-predeleteitem">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void PreDeleteItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem)
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT>)lpVtbl[11])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), dwFlags, psiItem).ThrowOnFailure();
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT PostDeleteItem(IFileOperationProgressSink* pThis, uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.Foundation.HRESULT hrDelete, winmdroot.UI.Shell.IShellItem* psiNewlyCreated)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.PostDeleteItem(dwFlags, psiItem, hrDelete, psiNewlyCreated);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Performs caller-implemented actions after the delete process for each item is complete.</summary>
			/// <param name="dwFlags">
			/// <para>Type: <b>DWORD</b> bitwise value that contains flags that were used during the delete operation. Some values can be set or changed during the delete operation. See <a href="https://docs.microsoft.com/windows/win32/api/shobjidl_core/ne-shobjidl_core-_transfer_source_flags">TRANSFER_SOURCE_FLAGS</a> for flag descriptions.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postdeleteitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiItem">
			/// <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 specifies the item that was deleted.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postdeleteitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="hrDelete">
			/// <para>Type: <b>HRESULT</b> The return value of the delete operation. Note that this is not the HRESULT returned by <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifileoperation-deleteitem">DeleteItem</a>, which simply queues the delete operation. Instead, this is the result of the actual deletion.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postdeleteitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiNewlyCreated">
			/// <para>Type: <b><a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ishellitem">IShellItem</a>*</b> A pointer to an <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ishellitem">IShellItem</a> that specifies the deleted item, now in the Recycle Bin. If the item was fully deleted, this value is <b>NULL</b>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postdeleteitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> Returns S_OK if successful, or an error value otherwise. In the case of an error value, all subsequent operations pending from the call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperation">IFileOperation</a> are canceled.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postdeleteitem">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void PostDeleteItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.Foundation.HRESULT hrDelete, winmdroot.UI.Shell.IShellItem* psiNewlyCreated)
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT>)lpVtbl[12])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), dwFlags, psiItem, hrDelete, psiNewlyCreated).ThrowOnFailure();
			}

			/// <inheritdoc cref="PreNewItem(uint, winmdroot.UI.Shell.IShellItem*, winmdroot.Foundation.PCWSTR)"/>
			internal unsafe void PreNewItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, string pszNewName)
			{
				fixed (char* pszNewNameLocal = pszNewName)
				{
					this.PreNewItem(dwFlags, psiDestinationFolder, pszNewNameLocal);
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT PreNewItem(IFileOperationProgressSink* pThis, uint dwFlags, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.PreNewItem(dwFlags, psiDestinationFolder, pszNewName);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Performs caller-implemented actions before the process to create a new item begins.</summary>
			/// <param name="dwFlags">
			/// <para>Type: <b>DWORD</b> bitwise value that contains flags that control the operation. See <a href="https://docs.microsoft.com/windows/win32/api/shobjidl_core/ne-shobjidl_core-_transfer_source_flags">TRANSFER_SOURCE_FLAGS</a> for flag descriptions.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-prenewitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiDestinationFolder">
			/// <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 specifies the destination folder that will contain the new item.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-prenewitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="pszNewName">
			/// <para>Type: <b>LPCWSTR</b> Pointer to the file name of the new item, for instance <b>Newfile.txt</b>. This is a null-terminated, Unicode string.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-prenewitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> Returns S_OK if successful, or an error value otherwise. In the case of an error value, this operation and all subsequent operations pending from the call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperation">IFileOperation</a> are canceled.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-prenewitem">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void PreNewItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName)
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT>)lpVtbl[13])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), dwFlags, psiDestinationFolder, pszNewName).ThrowOnFailure();
			}

			/// <inheritdoc cref="PostNewItem(uint, winmdroot.UI.Shell.IShellItem*, winmdroot.Foundation.PCWSTR, winmdroot.Foundation.PCWSTR, uint, winmdroot.Foundation.HRESULT, winmdroot.UI.Shell.IShellItem*)"/>
			internal unsafe void PostNewItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, string pszNewName, string pszTemplateName, uint dwFileAttributes, winmdroot.Foundation.HRESULT hrNew, winmdroot.UI.Shell.IShellItem* psiNewItem)
			{
				fixed (char* pszTemplateNameLocal = pszTemplateName)
				{
					fixed (char* pszNewNameLocal = pszNewName)
					{
						this.PostNewItem(dwFlags, psiDestinationFolder, pszNewNameLocal, pszTemplateNameLocal, dwFileAttributes, hrNew, psiNewItem);
					}
				}
			}

			[UnmanagedCallersOnly(CallConvs = new []{
typeof(CallConvStdcall)}
)]
			private static winmdroot.Foundation.HRESULT PostNewItem(IFileOperationProgressSink* pThis, uint dwFlags, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName, winmdroot.Foundation.PCWSTR pszTemplateName, uint dwFileAttributes, winmdroot.Foundation.HRESULT hrNew, winmdroot.UI.Shell.IShellItem* psiNewItem)
			{
				try
				{
					winmdroot.Foundation.HRESULT __hr = ComHelpers.UnwrapCCW(pThis, out Interface __object);
					if (__hr.Failed)
					{
						return __hr;
					}
					return __object.PostNewItem(dwFlags, psiDestinationFolder, pszNewName, pszTemplateName, dwFileAttributes, hrNew, psiNewItem);
				}
				catch (Exception ex)
				{
					return (winmdroot.Foundation.HRESULT)ex.HResult;
				}
			}

			/// <summary>Performs caller-implemented actions after the new item is created.</summary>
			/// <param name="dwFlags">
			/// <para>Type: <b>DWORD</b> bitwise value that contains flags that were used during the creation operation. Some values can be set or changed during the creation operation. See <a href="https://docs.microsoft.com/windows/win32/api/shobjidl_core/ne-shobjidl_core-_transfer_source_flags">TRANSFER_SOURCE_FLAGS</a> for flag descriptions.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postnewitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiDestinationFolder">
			/// <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 specifies the destination folder to which the new item was added.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postnewitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="pszNewName">
			/// <para>Type: <b>LPCWSTR</b> Pointer to the file name of the new item, for instance <b>Newfile.txt</b>. This is a null-terminated, Unicode string.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postnewitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="pszTemplateName">
			/// <para>Type: <b>LPCWSTR</b> Pointer to the name of the template file (for example <b>Excel9.xls</b>) that the new item is based on, stored in one of the following locations:</para>
			/// <para></para>
			/// <para>This doc was truncated.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postnewitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="dwFileAttributes">
			/// <para>Type: <b>DWORD</b> The file attributes applied to the new item. One or more of the values found at <a href="https://docs.microsoft.com/windows/desktop/api/fileapi/nf-fileapi-getfileattributesa">GetFileAttributes</a>.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postnewitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="hrNew">
			/// <para>Type: <b>HRESULT</b> The return value of the creation operation. Note that this is not the HRESULT returned by <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ifileoperation-newitem">NewItem</a>, which simply queues the creation operation. Instead, this is the result of the actual creation.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postnewitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="psiNewItem">
			/// <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 new item.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postnewitem#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <returns>
			/// <para>Type: <b>HRESULT</b> Returns S_OK if successful, or an error value otherwise. In the case of an error value, all subsequent operations pending from the call to <a href="https://docs.microsoft.com/windows/desktop/api/shobjidl_core/nn-shobjidl_core-ifileoperation">IFileOperation</a> are canceled.</para>
			/// </returns>
			/// <remarks>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-postnewitem">Learn more about this API from docs.microsoft.com</see>.</para>
			/// </remarks>
			public unsafe void PostNewItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName, winmdroot.Foundation.PCWSTR pszTemplateName, uint dwFileAttributes, winmdroot.Foundation.HRESULT hrNew, winmdroot.UI.Shell.IShellItem* psiNewItem)
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.PCWSTR ,uint ,winmdroot.Foundation.HRESULT ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT>)lpVtbl[14])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), dwFlags, psiDestinationFolder, pszNewName, pszTemplateName, dwFileAttributes, hrNew, psiNewItem).ThrowOnFailure();
			}

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

			/// <summary>Provides an estimate of the total amount of work currently done in relation to the total amount of work.</summary>
			/// <param name="iWorkTotal">
			/// <para>Type: <b>UINT</b> An estimate of the amount of work to be completed.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-updateprogress#parameters">Read more on docs.microsoft.com</see>.</para>
			/// </param>
			/// <param name="iWorkSoFar">
			/// <para>Type: <b>UINT</b> The portion of <i>iWorkTotal</i> that has been completed so far.</para>
			/// <para><see href="https://learn.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-ifileoperationprogresssink-updateprogress#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 <i>iWorkTotal</i> and <i>iWorkSoFar</i> values are "points" or estimates of the amount of work to be done, and how much is completed. They are not specified in any particular units, but should be roughly proportional to how much time the total process takes. For example, to copy one small file might be considered two points, and a large file might be considered ten points. If a process is performing an operation that copies five small files and one large file, and the process has completed four of the small files, <i>iWorkSoFar</i> would be eight points (4 x 2 = 8) and <i>iWorkTotal</i> would be twenty points (5 x 2 + 10 = 20), so the estimate would be 8 of 20 points (or 40%) complete.</remarks>
			public void UpdateProgress(uint iWorkTotal, uint iWorkSoFar)
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,uint ,winmdroot.Foundation.HRESULT>)lpVtbl[15])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this), iWorkTotal, iWorkSoFar).ThrowOnFailure();
			}

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

			/// <summary>Not supported. (IFileOperationProgressSink.ResetTimer)</summary>
			/// <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 should return S_OK rather than E_NOTIMPL.</remarks>
			public void ResetTimer()
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,winmdroot.Foundation.HRESULT>)lpVtbl[16])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this)).ThrowOnFailure();
			}

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

			/// <summary>Not supported. (IFileOperationProgressSink.PauseTimer)</summary>
			/// <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 should return S_OK rather than E_NOTIMPL.</remarks>
			public void PauseTimer()
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,winmdroot.Foundation.HRESULT>)lpVtbl[17])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this)).ThrowOnFailure();
			}

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

			/// <summary>Not supported. (IFileOperationProgressSink.ResumeTimer)</summary>
			/// <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 should return S_OK rather than E_NOTIMPL.</remarks>
			public void ResumeTimer()
			{
				((delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,winmdroot.Foundation.HRESULT>)lpVtbl[18])((IFileOperationProgressSink*)Unsafe.AsPointer(ref this)).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]<IFileOperationProgressSink*,global::System.Guid* ,void** ,winmdroot.Foundation.HRESULT> QueryInterface_1;

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

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

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,winmdroot.Foundation.HRESULT> StartOperations_4;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,winmdroot.Foundation.HRESULT ,winmdroot.Foundation.HRESULT> FinishOperations_5;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT> PreRenameItem_6;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT> PostRenameItem_7;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT> PreMoveItem_8;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT> PostMoveItem_9;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT> PreCopyItem_10;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT> PostCopyItem_11;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT> PreDeleteItem_12;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT> PostDeleteItem_13;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.HRESULT> PreNewItem_14;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,uint ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.PCWSTR ,winmdroot.Foundation.PCWSTR ,uint ,winmdroot.Foundation.HRESULT ,winmdroot.UI.Shell.IShellItem* ,winmdroot.Foundation.HRESULT> PostNewItem_15;

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

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,winmdroot.Foundation.HRESULT> ResetTimer_17;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,winmdroot.Foundation.HRESULT> PauseTimer_18;

				internal delegate *unmanaged [Stdcall]<IFileOperationProgressSink*,winmdroot.Foundation.HRESULT> ResumeTimer_19;
			} 
			public static void PopulateVTable(Vtbl* vtable)
			{
				vtable->StartOperations_4 = &StartOperations;
				vtable->FinishOperations_5 = &FinishOperations;
				vtable->PreRenameItem_6 = &PreRenameItem;
				vtable->PostRenameItem_7 = &PostRenameItem;
				vtable->PreMoveItem_8 = &PreMoveItem;
				vtable->PostMoveItem_9 = &PostMoveItem;
				vtable->PreCopyItem_10 = &PreCopyItem;
				vtable->PostCopyItem_11 = &PostCopyItem;
				vtable->PreDeleteItem_12 = &PreDeleteItem;
				vtable->PostDeleteItem_13 = &PostDeleteItem;
				vtable->PreNewItem_14 = &PreNewItem;
				vtable->PostNewItem_15 = &PostNewItem;
				vtable->UpdateProgress_16 = &UpdateProgress;
				vtable->ResetTimer_17 = &ResetTimer;
				vtable->PauseTimer_18 = &PauseTimer;
				vtable->ResumeTimer_19 = &ResumeTimer;
			}

			private void** lpVtbl;

			/// <summary>The IID guid for this interface.</summary>
			/// <value>{04b0f1a7-9490-44bc-96e1-4296a31252e2}</value>
			internal static readonly Guid IID_Guid = new Guid(0x04B0F1A7, 0x9490, 0x44BC, 0x96, 0xE1, 0x42, 0x96, 0xA3, 0x12, 0x52, 0xE2);

			static ref readonly Guid IComIID.Guid			{
								[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
				{
					ReadOnlySpan<byte> data = new byte[]					{
0xA7,0xF1,0xB0,0x04,0x90,0x94,0xBC,0x44,0x96,0xE1,0x42,0x96,0xA3,0x12,0x52,0xE2					};
					return ref Unsafe.As<byte,Guid>(ref MemoryMarshal.GetReference(data));
				}
			}
			[Guid("04B0F1A7-9490-44BC-96E1-4296A31252E2"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown),ComImport()]
			[SupportedOSPlatform("windows6.0.6000")]
			internal interface Interface
			{
								[PreserveSig()]
winmdroot.Foundation.HRESULT StartOperations();

								[PreserveSig()]
winmdroot.Foundation.HRESULT FinishOperations(winmdroot.Foundation.HRESULT hrResult);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT PreRenameItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.Foundation.PCWSTR pszNewName);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT PostRenameItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.Foundation.PCWSTR pszNewName, winmdroot.Foundation.HRESULT hrRename, winmdroot.UI.Shell.IShellItem* psiNewlyCreated);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT PreMoveItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT PostMoveItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName, winmdroot.Foundation.HRESULT hrMove, winmdroot.UI.Shell.IShellItem* psiNewlyCreated);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT PreCopyItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT PostCopyItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName, winmdroot.Foundation.HRESULT hrCopy, winmdroot.UI.Shell.IShellItem* psiNewlyCreated);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT PreDeleteItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT PostDeleteItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiItem, winmdroot.Foundation.HRESULT hrDelete, winmdroot.UI.Shell.IShellItem* psiNewlyCreated);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT PreNewItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName);

				[PreserveSig()]
				unsafe winmdroot.Foundation.HRESULT PostNewItem(uint dwFlags, winmdroot.UI.Shell.IShellItem* psiDestinationFolder, winmdroot.Foundation.PCWSTR pszNewName, winmdroot.Foundation.PCWSTR pszTemplateName, uint dwFileAttributes, winmdroot.Foundation.HRESULT hrNew, winmdroot.UI.Shell.IShellItem* psiNewItem);

								[PreserveSig()]
winmdroot.Foundation.HRESULT UpdateProgress(uint iWorkTotal, uint iWorkSoFar);

								[PreserveSig()]
winmdroot.Foundation.HRESULT ResetTimer();

								[PreserveSig()]
winmdroot.Foundation.HRESULT PauseTimer();

								[PreserveSig()]
winmdroot.Foundation.HRESULT ResumeTimer();
			}
		}
	}
}