我有一个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;