diff --git a/PInvoke/Ole/Ole32/ObjIdl.cs b/PInvoke/Ole/Ole32/ObjIdl.cs
index 685f126f..162731f0 100644
--- a/PInvoke/Ole/Ole32/ObjIdl.cs
+++ b/PInvoke/Ole/Ole32/ObjIdl.cs
@@ -1284,7 +1284,7 @@ namespace Vanara.PInvoke
// https://docs.microsoft.com/en-us/windows/desktop/api/objidl/nf-objidl-ifilllockbytes-fillappend HRESULT FillAppend( const void
// *pv, ULONG cb, ULONG *pcbWritten );
[PInvokeData("objidl.h", MSDNShortId = "3f25c48f-85a4-4778-b262-ad0c52cb1ac9")]
- void FillAppend(IntPtr pv, uint cb, out uint pcbWritten);
+ void FillAppend([In] IntPtr pv, uint cb, out uint pcbWritten);
/// The FillAt method writes a new block of data to a specified location in the byte array.
/// The offset, expressed in number of bytes, from the first element of the byte array.
@@ -1303,7 +1303,7 @@ namespace Vanara.PInvoke
// https://docs.microsoft.com/en-us/windows/desktop/api/objidl/nf-objidl-ifilllockbytes-fillat HRESULT FillAt( ULARGE_INTEGER
// ulOffset, const void *pv, ULONG cb, ULONG *pcbWritten );
[PInvokeData("objidl.h", MSDNShortId = "d378d87b-e081-4950-b87b-9b1ad6dfb29d")]
- void FillAt(ulong ulOffset, IntPtr pv, uint cb, out uint pcbWritten);
+ void FillAt(ulong ulOffset, [In] IntPtr pv, uint cb, out uint pcbWritten);
/// The SetFillSize method sets the expected size of the byte array.
/// Size in bytes of the byte array object that is to be filled in subsequent calls to IFillLockBytes::FillAppend.
@@ -1424,7 +1424,7 @@ namespace Vanara.PInvoke
// https://docs.microsoft.com/en-us/windows/desktop/api/objidl/nf-objidl-ilayoutstorage-layoutscript HRESULT LayoutScript(
// StorageLayout *pStorageLayout, DWORD nEntries, DWORD glfInterleavedFlag );
[PInvokeData("objidl.h", MSDNShortId = "22ae3485-15d9-47e4-988e-fb760e67595b")]
- void LayoutScript([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] StorageLayout[] pStorageLayout, uint nEntries, uint glfInterleavedFlag = 0);
+ void LayoutScript([In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] StorageLayout[] pStorageLayout, uint nEntries, uint glfInterleavedFlag = 0);
///
/// The BeginMonitor method is used to begin monitoring when a loading operation is started. When the operation is
@@ -1486,7 +1486,7 @@ namespace Vanara.PInvoke
// ReLayoutDocfileOnILockBytes( ILockBytes *pILockBytes );
[PInvokeData("objidl.h", MSDNShortId = "4d62ea35-d9cb-4ec6-ad71-7b32096953f1")]
[Obsolete("Not implemented.")]
- void ReLayoutDocfileOnILockBytes(ILockBytes pILockBytes);
+ void ReLayoutDocfileOnILockBytes([In] ILockBytes pILockBytes);
}
///
@@ -1525,7 +1525,7 @@ namespace Vanara.PInvoke
// https://docs.microsoft.com/en-us/windows/desktop/api/objidl/nf-objidl-ilockbytes-readat HRESULT ReadAt( ULARGE_INTEGER
// ulOffset, void *pv, ULONG cb, ULONG *pcbRead );
[PInvokeData("objidl.h", MSDNShortId = "0478d6f0-65c4-445b-946a-692f2373e8f1")]
- void ReadAt(ulong ulOffset, IntPtr pv, uint cb, out uint pcbRead);
+ void ReadAt(ulong ulOffset, [Out] IntPtr pv, uint cb, out uint pcbRead);
///
/// The WriteAt method writes the specified number of bytes starting at a specified offset from the beginning of the byte array.
@@ -1552,7 +1552,7 @@ namespace Vanara.PInvoke
// https://docs.microsoft.com/en-us/windows/desktop/api/objidl/nf-objidl-ilockbytes-writeat HRESULT WriteAt( ULARGE_INTEGER
// ulOffset, const void *pv, ULONG cb, ULONG *pcbWritten );
[PInvokeData("objidl.h", MSDNShortId = "a27af4e1-293d-438a-8068-87275a51fd48")]
- void WriteAt(ulong ulOffset, IntPtr pv, uint cb, out uint pcbWritten);
+ void WriteAt(ulong ulOffset, [In] IntPtr pv, uint cb, out uint pcbWritten);
///
/// The Flush method ensures that any internal buffers maintained by the ILockBytes implementation are written out to the
@@ -3703,8 +3703,8 @@ namespace Vanara.PInvoke
/// calling its IStorage::Revert method.
///
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
- void CopyTo([In] uint ciidExclude,
- [In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] Guid[] rgiidExclude,
+ void CopyTo([In, Optional] uint ciidExclude,
+ [In, Optional, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] Guid[] rgiidExclude,
[In] SNB snbExclude,
[In, MarshalAs(UnmanagedType.Interface)] IStorage pstgDest);