「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
デスクトップ・ヒープは、ウィンドウステーション内の
デスクトップ・オブジェクト(GDIオブジェクトを除く)を格納する。
デスクトップ・ヒープの構成は以下の通り。
カーネル・アドレス空間 - セッション・スペース┬->セッション・イメージ・スペース(Session Image Space) ├->セッション構造(Session Structure) ├->セッション・ビュー・スペース(Session View Space) ─-> デスクトップ・ヒープ └->セッション・ページ・プール(Session Page Pool)
┬ Session 0 │ ├--- WinSta0(インターラクティブ・ウィンドウ・ステーション) │ │ ├--- Default(インターラクティブ・デスクトップ) │ │ ├--- Disconnect(インターラクティブ・デスクトップ) │ │ └--- Winlogon(インターラクティブ・デスクトップ) │ ├--- Service-0x0-3e7$(ノン・インターラクティブ・ウィンドウ・ステーション) │ │ └--- Default(ノンインターラクティブ・デスクトップ) │ ├--- Service-0x0-3e4$(ノン・インターラクティブ・ウィンドウ・ステーション) │ │ └--- Default(ノンインターラクティブ・デスクトップ) │ └--- SAWinSta(ノン・インターラクティブ・ウィンドウ・ステーション) │ └--- SADesktop(ノンインターラクティブ・デスクトップ) │ └ Session 1 └--- WinSta0(インターラクティブ・ウィンドウ・ステーション) ├--- Default(インターラクティブ・デスクトップ) ├--- Disconnect(インターラクティブ・デスクトップ) └--- Winlogon(インターラクティブ・デスクトップ)
デスクトップ毎のデスクトップ・ヒープ領域は、
システムのデフォルト値および設定されているレジストリの値を元に、
の3つの領域により構成される。
デスクトップ・ヒープ領域のイメージ
標準ヒープ | インターラクティブ・ヒープ (対話型ヒープ) - WinSta0 | ノン・インターラクティブ・ヒープ (非対話型ヒープ) | ・・・ | ノン・インターラクティブ・ヒープ (非対話型ヒープ) |
各デスクトップ・ヒープ領域の値 | 各デスクトップ・ヒープ領域の値 | 各デスクトップ・ヒープ領域の値 | ・・・ | 各デスクトップ・ヒープ領域の値 |
全デスクトップ・ヒープの容量 |
デスクトップ毎にダイナミックに確保される「ノン・インターラクティブ・ヒープ」の数が、
「全デスクトップ・ヒープの容量」と「各デスクトップ・ヒープ領域の値」で自動的に決定される。
この制約はVista以降で改良されており、「ノン・インターラクティブ・ヒープ」(全容量)は
デスクトップ・ヒープが、Dynamic Kernel Spaceに実装され、ダイナミックに拡張される。
これにより、「全デスクトップ・ヒープの容量」は、チューニング不要となった。
ただし、「各種デスクトップ・ヒープ」のサイズの問題は発生する。
サーバでは、「標準デスクトップ・ヒープ」と「インターラクティブ・ヒープ」の容量は変更しないため、
「全デスクトップデスクトップ・ヒープの容量」と「ノン・インターラクティブ・ヒープの容量」により決定される。
OSによって異なる。
Sessionに唯一の対話型のウィンドウ・ステーションのデスクトップが使用する。
(WinSta0には、Winlogon、Default、Screen-saverの3つのデスクトップがある)
こちらには、USERオブジェクトが格納される。
通常、クライアントOSにてウィンドウの立ち上げすぎなどに起因して
インターラクティブ・ヒープが枯渇することがある(通常、サーバOSでは問題にならない)。
非対話型のウィンドウ・ステーションのデスクトップが使用する。
複数の仮想ディスプレイをサポートするために定義されたオブジェクト。
特定のセッションに関連付けられ、
1つのセッションは複数のウィンドウ・ステーションを持つことができる。
ただし、
対話型のウィンドステーション (インターラクティブ・ウィンドウ・ステーション)は、
1つのセッションに対して1つだけになる(これはWinsta0と呼ばれる)。
Windows ウィンドウ マネージャーによって管理される、
表す 2 つのリソース (USER オブジェクトと GDI オブジェクト)
などのユーザー インターフェイス要素を表す。
USERオブジェクトの使用するメモリはデスクトップ・ヒープから割り当てられる。
などのグラフィックス デバイス インターフェイス要素を表す。
GDIオブジェクトの使用するメモリは
から割り当てられる。