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

最佳答案

在那里,该联合被展平为一个简单的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;

08-19 18:12