我有一个ComTypes.STGMEDIUM对象,我想获得它的IStorage。从STGMEDIUM struct开始,您可以在pstg成员的帮助下获得它。 ComTypes.STGMEDIUM类缺少这样的成员。
答案 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;