StgOpenStorage (ole32)
Last changed: -212.44.26.236

.
Summary

C# Signature:

/// <summary>Opens a compound document file and represents it as an IStorage object</summary>

/// <remarks>Use on Windows 2000 and earlier</remarks>

/// <param name="pwcsName">The path and filename of the file to open</param>

/// <param name="pstgPriority">Generally passed as null</param>

/// <param name="grfMode">Access Method</param>

/// <param name="snbExclude">Must be NULL</param>

/// <param name="reserved">Pass as zero (0)</param>

/// <param name="ppstgOpen">out IStorage</param>

/// <returns>int HRESULT</returns>

[DllImport("ole32.dll")]

PreserveSig // To preserve the HRESULT as the int return value

internal static extern int StgOpenStorage(

    [MarshalAs(UnmanagedType.LPWStr)] string pwcsName
    , IStorage pstgPriority
    , STGM grfMode                // Access Method (uint)
    , IntPtr snbExclude            // Must be NULL
    , uint reserved                // Reserved
    , out IStorage ppstgOpen);    // Returned Storage

User-Defined Types:

None.

Notes:

Win2K and later should use the StgOpenStorageEx function.

Tips & Tricks:

Please add some!

Sample Code:

string pathAndFilename = @"C:\outlookmail.msg"

IStorage storage;

int hResult = StgOpenStorage(pathAndFilename, null, STGM.READ_ONLY, IntPtr.Zero, 0, out storage);

// Then one can use the EnumElements method of the IStorage interface to enum the properties of the OLE2 storage.

Alternative Managed API:

Do you know one? Please contribute it!

Documentation