在浏览一些代码时,我发现了一个对OpenPrinter()的调用。代码可以编译并正常工作。但是,我们传递的是HANDLE而不是LPHANDLE (在MSDN中指定)。我发现在windef.h中存在以下声明:
typedef HANDLE FAR *LPHANDLE;LP代表什么?我应该使用LPHANDLE,还是保留HANDLE
发布于 2008-12-24 15:30:25
LP代表长指针。在本例中,它是指向句柄的指针。
HANDLE h = <winapi function>();
LPHANDLE ph = &h;您可以通过取消引用指针来使用它,就像使用句柄一样:
HANDLE anotherh = *ph;
or
<winapi function>(*ph, ...);发布于 2008-12-24 15:23:18
"LP“代表长指针。
句柄!= LPHANDLE,就像DWORD != DWORD* (或LPDWORD)
发布于 2009-01-08 00:31:20
FAR构造可以追溯到8086/8088CPU和它所使用的分段内存模式的时代。在那些日子里,你可以在附近使用,在中使用远指针指向内存。
LP (长指针)只是从早期的微软匈牙利符号中遗留下来的。
如今,Win32内存模型是扁平化的,因此附近和FAR指针基本上是相同的。但是,虽然近指针现在与远指针相同,但这并不意味着指针与句柄相同。
https://stackoverflow.com/questions/391649
复制相似问题