1. ホーム
  2. windows

[解決済み] Windowsハンドルとは何ですか?

2022-04-23 01:29:59

質問

Windowsでリソースを扱う際のquot;Handle"とは何ですか? どのように機能するのですか?

どのように解決するのですか?

リソースへの抽象的な参照値で、多くはメモリやオープンファイル、パイプなどです。

ちゃんと Windowsでは、(一般にコンピュータでは)ハンドルは、APIユーザーから実際のメモリアドレスを隠す抽象化であり、システムがプログラムに対して透過的に物理メモリを再編成することを可能にします。 ハンドルをポインタに解決するとメモリがロックされ、ハンドルを解放するとポインタが無効になる。 この場合、ハンドルはポインタのテーブルへのインデックスと考えることができます...あなたはシステムAPIコールのためにインデックスを使用し、システムはテーブル内のポインタを自由に変更することができます。

この場合、ハンドルが指すものはいつでも(APIのバージョンからバージョンへ、あるいはハンドルを返すAPIの呼び出しから呼び出しへと)変わる可能性があることを考慮しなければならない - したがって、ハンドルは単に不透明な値として扱われるべきである のみ をAPIに提供します。

現代のオペレーティングシステムでは、いわゆるリアルポインターでさえ、プロセスの仮想メモリ空間への不透明なハンドルであり、これによりO/Sはプロセス内のポインターを無効化せずにメモリを管理・再配置できることを付け加えておきます。