shcreatestreamonfile (shlwapi)
Last changed: bogdan_mabo-198.207.218.1

.
Summary
Takes a file name, opens the file, and returns a COM-style IStream interface that can be used to read from and write to the file.

C# Signature:

[DllImport( "shlwapi.dll", CharSet=CharSet.Unicode, ExactSpelling=true, PreserveSig=false, EntryPoint="SHCreateStreamOnFileW" )]
static extern void SHCreateStreamOnFile( string fileName, uint mode, ref System.Runtime.InteropServices.ComTypes.IStream stream );

VB Signature:

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

I have only tested this using .NET 2.0. Also note that the above import will cause the API to throw a managed exception in case of failure as opposed to returning a HRESULT error code.

Tips & Tricks:

Please add some!

Sample Code:

private System.Runtime.InteropServices.ComTypes.IStream GetComStreamForFile( string fileName )

{

  System.Runtime.InteropServices.ComTypes.IStream stream = null;

  // 0x20 corresponds to STGM_SHARE_DENY_WRITE
  SHCreateStreamOnFile( fileName, 0x20, ref stream );
  return stream;

}

Documentation