GetHGlobalFromStream 函数是 Win32 API 中的一个函数,用于获取基于内存的 IStream 接口中关联的全局内存句柄。该函数在 Combaseapi.h 头文件中声明。

以下是 GetHGlobalFromStream 函数的基本定义:
HRESULT GetHGlobalFromStream(
  IStream *pstm,
  HGLOBAL *phglobal
);

参数说明:

  •  pstm: 指向 IStream 接口的指针,表示基于内存的数据流。

  •  phglobal: 指向 HGLOBAL 类型的指针,用于接收关联的全局内存句柄。


函数返回 HRESULT 类型的值,表示操作的结果。如果函数成功执行,返回 S_OK,并通过 phglobal 参数返回关联的全局内存句柄;否则返回相应的错误代码。

示例用法:
#include <Windows.h>
#include <Combaseapi.h>

int main() {
    // 初始化COM库
    CoInitialize(NULL);

    // 创建一个基于内存的IStream接口
    HGLOBAL hGlobal = GlobalAlloc(GHND, 1024);
    IStream *pStream = NULL;
    CreateStreamOnHGlobal(hGlobal, TRUE, &pStream);

    // 在这里可以使用pStream进行数据操作

    // 获取关联的全局内存句柄
    HGLOBAL hStreamGlobal = NULL;
    HRESULT hr = GetHGlobalFromStream(pStream, &hStreamGlobal);

    if (SUCCEEDED(hr)) {
        // 在这里可以使用hStreamGlobal进行其他操作

        // 释放全局内存
        GlobalFree(hStreamGlobal);
    }

    // 释放IStream接口
    pStream->Release();

    // 反初始化COM库
    CoUninitialize();

    return 0;
}

在这个示例中,首先创建了一个基于内存的 IStream 接口,然后使用 GetHGlobalFromStream 函数获取了关联的全局内存句柄,并在成功获取后进行了一些操作。最后,释放了相关的资源。


转载请注明出处:http://www.zyzy.cn/article/detail/24599/Win32 API/Combaseapi.h/GetHGlobalFromStream