質問

しかし、一部のコードから呼び出し OpenPrinter().このコード集約しながら、作品。また、通 HANDLE の代わりに LPHANDLE に規定されているようにそのMSDN).私は見つかりしつつあることを明らかにした windef.h 以下の宣言が存在する:

typedef HANDLE FAR          *LPHANDLE;

なLPるのですか。どちらを使うべきで LPHANDLE, はい HANDLE?

役に立ちましたか?

解決

LPはロングポインタを表します。これは、この場合、ハンドルへのポインタです。

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

あなたはそれをあなたがポインタを逆参照することにより、ハンドルと同じように使用することができます

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

他のヒント

"LP" はロングポインタを表します。

HANDLE!= LPHANDLE、同じようにDWORD!= DWORDの*(またはLPDWORD)

の構築にさかのぼの 8086/8088CPU の分割法助動詞のメモリで使用します。いものだ 近く ポインタ。

LP 長くポインタは二日酔いから Microsoftハンガリー語表記 からその先ます。

これらの日のWin32メモリーモデルラットで 近く ポインタは基本的に同じです。だが、 近くのポインタ 現在のと同じ 遠単語カテゴリの属す あずかっているわけではないのポインタと同じであります。

そして、ちょうどあなたの少しの背景長いポインタを与えるためにも、はるかにポインタが16ビットのウィンドウで、通常の16ビット・ポインタよりも異なっていたと呼ばれます。 OSは、あなたが、セグメントからのオフセットまたはセグメントを持っている+長いポインターあった相殺するセグメント化されたメモリ・モデルを使用していました。ハンガリアン記法のLPは、これらの長いポインタを使用した、まだこれらのレガシー上の理由から、Windows APIの全体で散らばっています。

は、32ビットと64ビットのウィンドウのOSにおけるもちろんフラットなメモリ・モデルが使用され、これらのOS内のポインタの間で行われるべき区別は存在しない(PAEが概念的に同様のものを追加しても)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top