我有一个 ComTypes.STGMEDIUM对象,我想得到它的 IStorage。来自 STGMEDIUM struct您可以在 pstg 成员(member)的帮助下获得它。 ComTypes.STGMEDIUM类缺少这样一个成员。
最佳答案
就在那里, union 被扁平化为一个 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;
关于c++ - 在 C++ 中从 ComTypes.STGMEDIUM 获取 IStorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13135518/