从C ++中的ComTypes.STGMEDIUM获取IStorage

时间:2012-10-30 08:54:56

标签: c++ .net winapi visual-c++

我有一个ComTypes.STGMEDIUM对象,我想获得它的IStorage。从STGMEDIUM struct开始,您可以在pstg成员的帮助下获得它。 ComTypes.STGMEDIUM类缺少这样的成员。

1 个答案:

答案 0 :(得分:1)

就在那里,联盟被扁平化为IntPtr类型的简单单个字段。你可以投它:

#include <windows.h>

using namespace System::Runtime::InteropServices;

    //...
    ComTypes::STGMEDIUM foo;
    IStorage* pStore = (IStorage*)foo.unionmember.ToPointer();

如果您愿意,也可以整理整个结构:

::STGMEDIUM native;
Marshal::StructureToPtr(foo, IntPtr(&native), false);
IStorage* pStore = native.pstg;