windows session機制深入解析(上)
英文原文移步這里查看http://m.shnenglu.com/dawnbreak/articles/90278.html
轉(zhuǎn)載請注明出處http://m.shnenglu.com/dawnbreak/
Sessions, Desktops and Windows Stations
只有被稱為 winsta0 的windows station才被允許與用戶交互。在winsta0下共被載入三個桌面:winlogon(登陸界面),缺省桌面(用戶桌面),和Disconnect( ? )。它們?nèi)齻€都有各自的顯存,這就是為什么當你鎖定工作站時你的主桌面會消失。當你鎖定工作站時,屏幕由用戶桌面切換到登錄界面,并且兩者之間并沒有交互。在windows vista這一點更是體現(xiàn)的淋漓盡致。例如當你看到UAC彈出時,系統(tǒng)會將用戶桌面的快照降低灰度,而在前端顯示UAC窗口,UAC窗口是安全桌面(vista系統(tǒng)的新特性類似登錄桌面)并且在你給予權(quán)限之前禁止你與用戶桌面的交互。
其他windows station存在但并不與用戶交互。例如:加載到‘service-0x0-3e7$’無用戶交互windows station中的服務。另外也有些需要與用戶交互的服務被加載到winsta0。
內(nèi)存頁是被所有用戶所共享的,但是每個用戶會將其各自的session空間映射到虛擬內(nèi)存。session空間被劃分到四個不同的區(qū)域:
- session 結(jié)構(gòu)存儲區(qū)-內(nèi)存控制器結(jié)構(gòu),其中包含session工作集
- session映像存儲區(qū)-保留一塊私有的win32k.sys修改過的數(shù)據(jù),一個sin32k,sys代碼副本和原始數(shù)據(jù)副本,還有各種驅(qū)動
- session視圖存儲區(qū)-包括桌面堆在內(nèi)的session映射視圖
- session分頁存儲區(qū)-用于這個session被分頁了的內(nèi)存池
正如前文所提到的,一個桌面正是被加載了顯示信息的內(nèi)核對象。其中包括窗口,菜單,還有鉤子。session0是一個基礎(chǔ)session,服務在其中運行,并且一般情況下也是控制臺session。在windows Vista中session0僅僅用來運行服務,而控制臺session一般在session1。下圖顯示了各自的關(guān)系,并且對比了vista和早期操作的區(qū)別。(來自 our earlier post on Session 0 Application Compatibility Issues)
![]() Session 0 in Windows XP / Windows Server 2003 |
![]() Session 0 / Session 1 in Windows Vista |
未完,待續(xù)。。。。。
posted on 2009-07-16 23:26 pear_li 閱讀(6535) 評論(1) 編輯 收藏 引用 所屬分類: windows kernel 、Translate


