核心中的_OBJECT_INFORMATION_CLASS 結構,object.getclass
實際上這個枚舉類型有5種
typedef enum _OBJECT_INFORMATION_CLASS { ObjectBasicInformation, ObjectNameInformation, ObjectTypeInformation, ObjectAllInformation, ObjectDataInformation} OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
但在microsoft的文檔中只有兩項
OBJECT_INFORMATION_CLASSThe OBJECT_INFORMATION_CLASS enumeration type represents the type of information to supply about an object.typedef enum _OBJECT_INFORMATION_CLASS { ObjectBasicInformation=0, ObjectTypeInformation=2,} OBJECT_INFORMATION_CLASS;ValuesObjectBasicInformation A PUBLIC_OBJECT_BASIC_INFORMATION structure is supplied. ObjectTypeInformation A PUBLIC_OBJECT_TYPE_INFORMATION structure is supplied. RequirementsVersions: Available starting with Microsoft Windows 2000.Headers: Defined in Ntifs.h. Include Ntifs.h or Fltkernel.h.
同樣的 對於第一種資訊類型ObjectBasicInformation,它的真實的結構是這樣的:
typedef struct _OBJECT_BASIC_INFORMATION { ULONG Attributes; ACCESS_MASK DesiredAccess; ULONG HandleCount; ULONG ReferenceCount; ULONG PagedPoolUsage; ULONG NonPagedPoolUsage; ULONG Reserved[3]; ULONG NameInformationLength; ULONG TypeInformationLength; ULONG SecurityDescriptorLength; LARGE_INTEGER CreationTime;} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
而同樣的,這個結構在官方文檔有部分沒有聲明,以下為官方的文檔:
typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION {ULONG Attributes;ACCESS_MASK GrantedAccess;ULONG HandleCount;ULONG PointerCount;ULONG Reserved[10];} PUBLIC_OBJECT_BASIC_INFORMATION; PPUBLIC_OBJECT_BASIC_INFORMATION
可見一個LARGE_INTEGER佔2個ULONG
作業系統的微核心結構設計的基本思想是什?
微核心結構是一種新型結構,它體現了作業系統結構設計的新思想,微核心的設計目標是使作業系統的核心儘可能小,使其他的所有作業系統服務一般都放在核外使用者級完成。換句話講,原來的作業系統會做很多事,系統啟動後會提供多種服務(這些服務有些是你日常不用的),使用微核心結構的作業系統,核心短小精幹,僅提供最基本最必要的服務;除核心以外的功能都可用伺服器的形式建立在核心之上,可以方便地設計、開發、整合自己的新系統;加入和修改一個服務不需要停止系統和重新引導核心,安裝、調試一個新系統很容易。
Windows NT採用了怎核心結構
Windows NT 核心基本結構和特徵
儘管大部分人每天在Windows系統上工作學習娛樂,但是對於其核心結構很多人仍然是不瞭解的。一方面是由於其核心原始碼不開源,另一方面則是由於相關資料的奇缺。我大二基本上花了一學期來學習和探究NT核心。雖然不敢說自己對其有很深入的瞭解,但至少其基本結構還算是清楚的。但是我畢竟才學有限,肯定會有不完善的地方,還請各位不吝賜教。
目前微軟所有的主流作業系統均是基於NT核心,比如:
Windows 2000/XP/Server 2003(基於NT5)
Windows Vista (基於NT6)
Windows 7(基於NT6.1, 我沒裝過Win7,不過據說是這樣的)
儘管很多人責備Windows在一些方面存在很多問題,但是這並不是核心的錯,總的來說,NT的是一個成熟穩定且先進的核心,我認為在今後相當長的一段時期內,NT核心仍將是主流,且不會有很大變化(當然,局部的升級是完全毫無疑問的)
微軟早期希望把NT做成一個純微核心結構,關於微核心和單一核心的區別,各位如有不清楚的,可以去網上搜尋一下。後來為了提高圖形子系統的效能,避免大量的核心態和使用者態切換,微軟便將其移入核心之中,使其成為核心一部分(類似的還有後來的DirectX技術)。由此可見,NT並不是一個完全的微核心,它也具有單一核心的某些特徵。
NT核心具有以下幾個特徵(摘自Undocumented Windows NT)
Portability (可移植性)
如你所知,Windows NT 可以運行在多種平台上,即 Intel、MIPS、Power PC 和 DEC Alpha。眾多廠商都為 Windows NT 的可移植性做出了貢獻。 其中最為重要的因素可能是其實現所使用的語言。Windows NT 大部分是用 C 語言編寫的,也有一部分用的是 C++。 平台相關的組合語言只在必需的地方才用到。Windows NT 團隊還將作業系統中硬體相關的部分與其它部分隔離開,單獨放進了 HAL.DLL。 如此一來,Windows NT 中與硬體無關的部分的代碼就可以用 C 之類的進階語言來編寫,也因此可以很容易地移植到各種平台。
Extensibility(可擴充性)
Windows NT 具有很高的可擴充性,但因為缺少文檔,其可擴充的特性卻極少得到發掘。未公開的特性的名單中,子系統首當其衝。子系統在作業系統中提供了多種作業系統介面。只需添加新的子系統程式就可以為 Windows NT 擴充新的作業系統介面,但是對於公開添加新子系統過程的要求微軟卻一直打馬虎眼。
Windows NT 的核心是高可擴充的,因為可以將核心模組作為驅動程式動態載入。對於 Windows NT,微軟提供了足夠的文檔來編寫硬體裝置驅動——即硬碟驅動、網卡驅動、磁帶機驅動等等。在 Windows NT 下還可以編寫不控制裝置的驅動程式。甚至連檔案系統也是作為驅動程式載入的。
Windows NT 的可擴充性的另一個例子就是系統調用介面的實現。 開發人員要修改作業系統行為,一般都需要鉤掛或添加系統調用。 Windows NT 的Team Dev實際了良好的系統調用介面以方便鉤掛和添加系統調用。但是微軟還是沒有公開這些機制。
Compatibility(相容性)
長久以來,向下相容性都是 Intel 處理器和微軟作業系統的一大特徵,也是這兩位巨人成功的關鍵。Windows NT 必須能運行 DOS、Win16 和 OS/2 的程式。相容性是 Windows NT 開......餘下全文>>