//
// Code generated by COM Proxy Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.
//
#nullable enable
using System.Runtime.InteropServices.ComTypes;
using ComInterfaceDispatch = System.Runtime.InteropServices.ComWrappers.ComInterfaceDispatch;
using Marshal = System.Runtime.InteropServices.Marshal;
using System.Runtime.InteropServices.ComTypes;
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.IO;
namespace CPF.Windows.ComWrapper
{
internal unsafe static class IStreamVtbl
{
private const int S_OK = (int)HRESULT.S_OK;
public static IntPtr Create(IntPtr fpQueryInterface, IntPtr fpAddRef, IntPtr fpRelease)
{
IntPtr* vtblRaw = (IntPtr*)RuntimeHelpers.AllocateTypeAssociatedMemory(typeof(IStreamVtbl), IntPtr.Size * 14);
vtblRaw[0] = fpQueryInterface;
vtblRaw[1] = fpAddRef;
vtblRaw[2] = fpRelease;
vtblRaw[3] = (IntPtr)(delegate* unmanaged)&Read;
vtblRaw[4] = (IntPtr)(delegate* unmanaged)&Write;
vtblRaw[5] = (IntPtr)(delegate* unmanaged)&Seek;
vtblRaw[6] = (IntPtr)(delegate* unmanaged)&SetSize;
vtblRaw[7] = (IntPtr)(delegate* unmanaged)&CopyTo;
vtblRaw[8] = (IntPtr)(delegate* unmanaged)&Commit;
vtblRaw[9] = (IntPtr)(delegate* unmanaged)&Revert;
vtblRaw[10] = (IntPtr)(delegate* unmanaged)&LockRegion;
vtblRaw[11] = (IntPtr)(delegate* unmanaged)&UnlockRegion;
vtblRaw[12] = (IntPtr)(delegate* unmanaged)&Stat;
vtblRaw[13] = (IntPtr)(delegate* unmanaged)&Clone;
return (IntPtr)vtblRaw;
}
[UnmanagedCallersOnly]
private static int Read(IntPtr thisPtr, byte* pv, uint cb, uint* pcbRead)
{
try
{
IStream inst = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr);
inst.Read(pv, cb, pcbRead);
}
catch (Exception e)
{
return e.HResult;
}
return S_OK;
}
[UnmanagedCallersOnly]
private static int Write(IntPtr thisPtr, byte* pv, uint cb, uint* pcbWritten)
{
try
{
IStream inst = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr);
inst.Write(pv, cb, pcbWritten);
}
catch (Exception e)
{
return e.HResult;
}
return S_OK;
}
[UnmanagedCallersOnly]
private static int Seek(IntPtr thisPtr, long dlibMove, SeekOrigin dwOrigin, ulong* plibNewPosition)
{
try
{
IStream inst = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr);
inst.Seek(dlibMove, dwOrigin, plibNewPosition);
}
catch (Exception e)
{
return e.HResult;
}
return S_OK;
}
[UnmanagedCallersOnly]
private static int SetSize(IntPtr thisPtr, ulong libNewSize)
{
try
{
IStream inst = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr);
inst.SetSize(libNewSize);
}
catch (Exception e)
{
return e.HResult;
}
return S_OK;
}
[UnmanagedCallersOnly]
private static int CopyTo(IntPtr thisPtr, IntPtr pstm, ulong cb, ulong* pcbRead, ulong* pcbWritten)
{
try
{
IStream inst = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr);
return (int)inst.CopyTo(pstm, cb, pcbRead, pcbWritten);
}
catch (Exception e)
{
return e.HResult;
}
}
[UnmanagedCallersOnly]
private static int Commit(IntPtr thisPtr, uint grfCommitFlags)
{
try
{
IStream inst = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr);
inst.Commit(grfCommitFlags);
}
catch (Exception e)
{
return e.HResult;
}
return S_OK;
}
[UnmanagedCallersOnly]
private static int Revert(IntPtr thisPtr)
{
try
{
IStream inst = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr);
inst.Revert();
}
catch (Exception e)
{
return e.HResult;
}
return S_OK;
}
[UnmanagedCallersOnly]
private static int LockRegion(IntPtr thisPtr, ulong libOffset, ulong cb, uint dwLockType)
{
try
{
IStream inst = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr);
return (int)inst.LockRegion(libOffset, cb, dwLockType);
}
catch (Exception e)
{
return e.HResult;
}
}
[UnmanagedCallersOnly]
private static int UnlockRegion(IntPtr thisPtr, ulong libOffset, ulong cb, uint dwLockType)
{
try
{
IStream inst = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr);
return (int)inst.UnlockRegion(libOffset, cb, dwLockType);
}
catch (Exception e)
{
return e.HResult;
}
}
[UnmanagedCallersOnly]
private static int Stat(IntPtr thisPtr, STATSTG* pstatstg, STATFLAG grfStatFlag)
{
try
{
IStream inst = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr);
inst.Stat(pstatstg, grfStatFlag);
}
catch (Exception e)
{
return e.HResult;
}
return S_OK;
}
[UnmanagedCallersOnly]
private static int Clone(IntPtr thisPtr, IntPtr* ppstm)
{
try
{
IStream inst = ComInterfaceDispatch.GetInstance((ComInterfaceDispatch*)thisPtr);
return (int)inst.Clone(ppstm);
}
catch (Exception e)
{
return e.HResult;
}
}
}
}