【发布时间】:2014-12-21 16:08:55
【问题描述】:
以下代码块导致 err1 = 0(成功)和 err2 = 6(无效句柄)。
HGLOBAL hGlobal = LoadResource(hInst, hrSrc);
INT err1 = GetLastError();
UINT gflags = GlobalFlags(hGlobal);
INT err2 = GetLastError();
gflags 的值为 0x8000,表示GMEM_INVALID_HANDLE。我知道资源存在,如果我锁定内存,我会得到资源中的数据。
我的问题是为什么我得到一个无效的句柄结果? LoadResource() 返回的内存是不是真的不是看起来的“特殊”HGLOBAL?
【问题讨论】:
-
看一下 GlobalFlags() 的 MSDN 文章,它告诉您只将它用于 GlobalRe/Alloc() 返回的句柄。小心处理错误,永远不要调用 GetLastError(),除非你从函数中得到错误返回。 LoadResource 没有失败,你的 hGlobal 变量不是 NULL。
标签: winapi