c++ - 在 C++ 中从 ComTypes.STGMEDIUM 获取 IStorage

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

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

相关文章:

c++ - 为什么 std::bind() 试图复制我的对象?

c++ - 检索 QProcess 的环境变量

c++ - 大数存储

.net - 发音识别 - 语音 API 或算法

.net - 可移植类库版本控制

windows - 如何从 Delphi 中的已知文件夹 GUID 获取文件夹路径

c++ - 我应该在 C++ 中使用什么 XML 解析器?

c# - 如何搜索和导航 XML 节点

windows - 如何编写一个以 SYSTEM 权限运行的 Windows 8 软件?

c++ - 为什么 CRITICAL_SECTION 性能在 Win8 上变差