Referring "long pointers" (LP
-types):
There where times (pre-Pentium) where you had long and short pointers. And as the WINAPI already existed during those times, and today still tries to stay compatible to code of those days, the LPsomething
-types survived.
Referring UINT_PTR
:
That's an integer wide enough for holding the value of a pointer. The C11-Standard defines such a type as as follows:
7.20.1.4 Integer types capable of holding object pointers
1 The following type designates a signed integer type with the property that any valid pointer to void can be converted to this type, then converted back to pointer to void, and the result will compare equal to the original pointer:
intptr_t
The following type designates an unsigned integer type with the property that any valid pointer to void can be converted to this type, then converted back to pointer to void, and the result will compare equal to the original pointer:
uintptr_t
These types are optional.