Question: While browsing some code I found a call to [OpenPrinter()](http://msdn.microsoft.com/en-us/library/dd162751.aspx). The code compiles and works fine. But, we are passing a `HANDLE` instead of `LPHANDLE` (as specified in MSDN). I found out that in `windef.h` the following declaration exists:

```
typedef HANDLE FAR          *LPHANDLE;

```

What does LP stand for? Should I use a `LPHANDLE`, or keep `HANDLE`?

Answer: 
LP stands for Long Pointer. It's a pointer to a handle in this case.

```
HANDLE h = <winapi function>();
LPHANDLE ph = &h;

```

You can use it the same way you would a handle by dereferencing the pointer:

```
HANDLE anotherh = *ph;
or
<winapi function>(*ph, ...);

```
"LP" stands for Long Pointer.

HANDLE != LPHANDLE, just as DWORD != DWORD\* (or LPDWORD)