Frage

einige Code während des Surfens ich einen Anruf gefunden Openprinter () . Der Code kompiliert und funktioniert einwandfrei. Aber wir sind vorbei ein HANDLE statt LPHANDLE (wie in MSDN angegeben). Ich fand heraus, dass in windef.h die nachfolgende Erklärung gibt:

typedef HANDLE FAR          *LPHANDLE;

Was bedeutet LP stehen? Sollte ich eine LPHANDLE oder HANDLE halten?

War es hilfreich?

Lösung

LP steht für Long Pointer. Es ist ein Zeiger auf einen Griff in diesem Fall.

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

Sie können es auf die gleiche Weise verwenden Sie durch Dereferenzierung der Zeiger ein Griff würde:

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

Andere Tipps

"LP" steht für Long Pointer.

GRIFF! = LPHANDLE, wie DWORD! = DWORD * (oder LPDWORD)

Die FAR Daten konstruieren zurück zu den Tagen der 8086/8088 CPU und den segmentierten Speicher Modalverben, die es verwendet. In diesem Tag könnten Sie haben NEAR und FAR Zeiger auf Speicher.

Die LP (langer Zeiger) ist nur ein Überbleibsel aus der Microsoft ungarische Notation aus den früheren Tagen.

In diesen Tagen das Win32-Speichermodell ist flach, so dass NEAR und FAR Zeiger sind im Grunde die gleiche. Aber während ein in der Nähe von Zeigern ist jetzt das gleiche wie ein weit poitner , die keinen Zeiger bedeuten, ist das gleiche wie ein Griff.

Und nur, um Ihnen ein wenig Hintergrund lange Zeiger auch weit Zeiger waren anders als normale 16-Bit-Zeiger in 16-Bit-Fenster genannt. Das Betriebssystem verwendete, um ein segmentierten Speichermodell, bei dem man von einem Segment-Offset würde oder ein Segment hat + Offset, der ein langer Zeiger war. Die ungarische Bezeichnung LP wurde für diese langen Zeiger verwendet und ist nach wie vor in dem gesamt Windows-API für diese Legacy-Gründe übersät.

Natürlich in den 32-Bit und 64-Bit-Windows-Betriebssystemen ein flaches Speichermodell verwendet wird, und es gibt keinen Unterschied zwischen Zeigern in dieser OSs gemacht werden (obwohl PAE fügt etwas vom Konzept her ähnlich).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top