リソース (resource) とは、計算リソースのことであるが、Microsoft Windowsの用語としては、ある種のリソースのことを意味する。

Windowsでリソースと呼ばれるものには、「リソース」と「システムリソース」がある。

リソース編集

リソースは、実行ファイル(EXE)やダイナミックリンクライブラリ(DLL)に埋め込まれた読み込み専用のデータである。

Windows APIには全てのアプリケーションのリソースに簡単にアクセスする方法を提供している。

種類編集

各リソースは型と名前を持ち、どちらも数値識別子か文字列である。

Windows には予め定義されたリソースの型として以下のものがある。

プログラマはリソースの型を新たに定義することもできる。

使用法編集

Windows がプログラムファイルに対応して表示するアイコンは EXE ファイル内の最初のアイコンリソースである。EXEファイル内にアイコンリソースがない場合、標準のアイコンが表示される。

EXEファイルやDLLファイルに埋め込まれたリソースを編集できるエディタがいくつかある。一般にアプリケーション内の文字列を別の言語に変換するのに使ったり、アイコンやビットマップを変更するのに使ったりする。

リソース・エディタ編集

システムリソース編集

システムリソースとはWindowsおよびアプリケーションが使用するKERNELリソース、USERリソース、GDIリソースと呼ばれるメモリ領域のことである。アプリケーションを管理するのがKERNELリソース、ダイアログボックスやウインドウなどの情報を格納するのがUSERリソース、フォントやビットマップ、アイコンなどの情報を格納するのがGDIリソースである。一般に起動しているアプリケーションが多いと使用するシステムリソースも多くなる。システムリソースの残量として表示されるのはいずれかの少ない方の容量でリソース不足になるとウインドウを開くことが出来なくなったりフリーズなどの不具合が発生する。

システムリソースという用語は16ビットOSであるWindows 3.x系で初めて登場した。Windows 3.0ではUSERとGDIの2つのリソースがありそれぞれ64KBのサイズであった。このサイズは16ビットCPUの1つのセグメントの大きさでありパフォーマンス上の理由でこのサイズとなった。しばしば勘違いされるがシステムリソースはWindowsで導入されたものであり64KBの制限はパフォーマンスを考慮した設計上の理由であるためMS-DOSやその互換性による制限ではない。Windows 3.1では容量不足の問題を解決するためUSERが128KBに拡張され利用方法の工夫でより少ないシステムリソースを使用するように改善された。

32ビットOSであるWindows 9x系ではシステムリソースの32ビット化され、2つのUSERリソースと1つのGDIリソースがそれぞれ2MB、合計で6MBの容量となった。しかし32ビットのシステムリソースは32ビットWindowsアプリケーションでしか使えず、16ビットWindowsアプリケーションと一部のOSの機能は互換性の理由で容量の少ない16ビットのシステムリソースを使用するため、多くのメモリを搭載していたとしても依然としてリソース不足になることがことがあった。つまりWindows 9x系で問題となるリソース不足は16ビットのシステムリソース不足のことである。[1]

Windows NT系のOSではシステムリソースは存在せず、同等の役目をするのはデスクトップヒープもしくはデスクトップアプリケーションヒープである。

ツール編集

脚注編集

[脚注の使い方]