質問
しかし、一部のコードから呼び出し 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が概念的に同様のものを追加しても)。