Question

Lorsque vous naviguez sur un code que j'ai trouvé un appel à OpenPrinter () . Le code compile et fonctionne très bien. Mais, nous passons un HANDLE au lieu de LPHANDLE (comme spécifié dans MSDN). J'ai trouvé que dans windef.h la déclaration suivante existe:

typedef HANDLE FAR          *LPHANDLE;

Qu'est-ce que LP représente? Dois-je utiliser un LPHANDLE, ou garder HANDLE?

Était-ce utile?

La solution

LP signifie long pointeur. Il est un pointeur sur une poignée dans ce cas.

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

Vous pouvez l'utiliser de la même façon que vous le feriez pour une poignée de déréférencement du pointeur:

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

Autres conseils

"LP" signifie long pointeur.

POIGNEE! = LPHANDLE, tout comme DWORD! = DWORD * (ou LPDWORD)

FAR construire remonte à l'époque de la 8086/8088 CPU et les modaux de mémoire segmentés qu'il utilise. Dans ces jours, vous pourriez avoir NEAR et FAR des pointeurs vers la mémoire.

LP (pointeur long) est juste une gueule de bois de la Microsoft notation hongroise de ces premiers jours.

Ces jours-ci le modèle de mémoire Win32 est plat si NEAR et FAR pointeurs sont fondamentalement les mêmes. Mais alors que près de pointeur est maintenant le même que far poitner qui ne signifie pas un pointeur est identique à une poignée.

Et juste pour vous donner un peu de pointeurs longs fond aussi appelés pointeurs loin étaient différentes de la normale 16 pointeurs de bits dans 16 fenêtres de bits. Le système d'exploitation utilisé un modèle de mémoire segmenté où vous compenserait d'un segment ou un segment de + offset qui était un pointeur à long. La notation hongroise LP a été utilisé pour ces longues pointeurs et est toujours jonché tout au long des fenêtres api pour ces raisons historiques.

Bien sûr, dans le 32 bit et 64 bit windows OSs un modèle de mémoire plat est utilisé et il n'y a pas de distinction à faire entre les pointeurs dans ces systèmes d'exploitation (si quelque chose sur le plan conceptuel ajoute PAE similaire).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top