首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LPHANDLE vs. HANDLE

LPHANDLE vs. HANDLE
EN

Stack Overflow用户
提问于 2008-12-24 15:20:42
回答 4查看 2.7K关注 0票数 3

在浏览一些代码时,我发现了一个对OpenPrinter()的调用。代码可以编译并正常工作。但是,我们传递的是HANDLE而不是LPHANDLE (在MSDN中指定)。我发现在windef.h中存在以下声明:

代码语言:javascript
复制
typedef HANDLE FAR          *LPHANDLE;

LP代表什么?我应该使用LPHANDLE,还是保留HANDLE

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-12-24 15:30:25

LP代表长指针。在本例中,它是指向句柄的指针。

代码语言:javascript
复制
HANDLE h = <winapi function>();
LPHANDLE ph = &h;

您可以通过取消引用指针来使用它,就像使用句柄一样:

代码语言:javascript
复制
HANDLE anotherh = *ph;
or
<winapi function>(*ph, ...);
票数 6
EN

Stack Overflow用户

发布于 2008-12-24 15:23:18

"LP“代表长指针。

句柄!= LPHANDLE,就像DWORD != DWORD* (或LPDWORD)

票数 7
EN

Stack Overflow用户

发布于 2009-01-08 00:31:20

FAR构造可以追溯到8086/8088CPU和它所使用的分段内存模式的时代。在那些日子里,你可以在附近使用,在中使用远指针指向内存。

LP (长指针)只是从早期的微软匈牙利符号中遗留下来的。

如今,Win32内存模型是扁平化的,因此附近和FAR指针基本上是相同的。但是,虽然近指针现在与远指针相同,但这并不意味着指针与句柄相同。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/391649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档