核心中的_OBJECT_INFORMATION_CLASS 結構,object.getclass

來源:互聯網
上載者:User

核心中的_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 開......餘下全文>>
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.