Pregunta

Mientras navega por algún código que encontré una llamada a OpenPrinter () . El código se compila y funciona bien. Sin embargo, estamos pasando un HANDLE en lugar de LPHANDLE (como se especifica en MSDN). Descubrí que en windef.h existe la siguiente declaración:

typedef HANDLE FAR          *LPHANDLE;

¿Qué significan las siglas LP para? ¿Debo usar un LPHANDLE, o mantener HANDLE?

¿Fue útil?

Solución

LP significa puntero largo. Es un puntero a un mango en este caso.

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

Se puede utilizar la misma manera que lo haría un mango desreferenciando el puntero:

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

Otros consejos

"LP" significa puntero largo.

manejar! = LPHANDLE, al igual que DWORD! = DWORD * (o LPDWORD)

La FAR construcción se remonta a los días de la 8086/8088 de la CPU y los modales de memoria segmentadas que se utiliza. En los días que podría tener junto a y FAR los punteros a memoria.

La LP (puntero largo) es sólo un vestigio de la Microsoft húngaro notación de los días pasados.

En estos días el modelo de memoria Win32 es plana y que junto a y FAR punteros son básicamente los mismos. Pero mientras que un cerca del puntero es ahora el mismo que un ahora poitner eso no significa que un puntero es lo mismo que un mango.

Y sólo para darle un poco de historia punteros largos también llamados punteros eran diferentes de los punteros normales de 16 bits en 16 bits de Windows. El sistema operativo utiliza un modelo de memoria segmentada en la que compensaría a partir de un segmento o un segmento + offset que era un puntero de longitud. El LP notación húngara se utilizó para estos largos punteros y todavía está llena durante todo el API de Windows para estas razones de herencia.

Por supuesto, en el de 32 bits y 64 bits de Windows OS un modelo de memoria plana se usa y no hay distinción que debe hacerse entre los punteros en estos sistemas operativos (aunque PAE añade algo conceptualmente similar).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top