【翻譯】深入解析Windows作業系統(第五版)-第一章

來源:互聯網
上載者:User
文章目錄
  • Windows API
  • 關於.NET
  • Win32 API的曆史
  • 服務,函數與常式
第一章概念與工具

         在這個章節,我們將介紹有關微軟windows作業系統的概念和詞彙,比如Windows API、進程、線程、虛擬記憶體、核心模式和使用者模式、對象、控制代碼、安全以及註冊表,它們將貫穿於整本書。我們同樣將介紹一些能夠協助我們“遨遊”Windows核心世界的工具,如核心調試器、可靠性與效能監控器以及從Windows Sysinternals(www.microsoft.com/technet/sysinternals)上得到的關鍵工具。另外,我們將告訴你如何使用Windows Driver Kit(WDK)和Windows Software Development Kit(SDK),讓它們成為協助我們尋找更多核心資訊的資源。

         請保證你能夠明白這一章所講的內容——在寫下這本書剩餘部分的時候我們假定你已經做到了。

Windows作業系統版本

         這本書覆蓋了基於Windows NT核心的最新的兩個Windows作業系統版本:Windows Vista(32位和64位版本)和Windows Server 2008(32位和64位版本)。如果沒有特殊說明,本書所闡述的內容適用於所有Windows版本。作為一些背景知識,表1-1列出了基於Windows NT核心的作業系統發行版、它們的組建號以及實際產品名稱。

基本概念和詞彙

         在這本書中,我們將引用許多對於某些讀者來講不太熟悉的資料結構和概念。在這一節中,我們將闡述一些貫穿全書的詞彙。在閱讀隨後的章節之前你應該熟悉它們。

Windows API

         Windows應用編程介面(API)是Windows作業系統家族的系統編程介面。在介紹64位版本的Windows XP和Windows Server 2003,我們將介紹32位版本的Windows作業系統的編程介面。為了區別於傳統的16位版本的Windows作業系統的編程介面,它被稱為Win32 API。在這本書中,Windows API這個詞既包含了32位和64位的Windows Vista和Windows Server 2008作業系統編程介面。

 

注意:Windows API在Windows軟體開發包(SDK)文檔中有詳細的描述。(看本章稍後的“Windows Software Development Kit”一節。)這個文檔可以免費地在www.msdn.microsoft.com 上線上觀看。它也可以通過訂閱MSDN得到。MSDN是微軟面向開發人員的支援平台,可以從www.msdn.microsoft.com上得到更多的資訊。一個非常棒的關於如何利用Windows基本APi編程的書籍是Jeffrey Richter和Christophe Nasarre的《Windows Via C/C++》第五版(微軟出版社,2007)。

 

         Windows API包含了數千個可供調用的函數,它們可以被分為如下幾類:

    • 基本服務
    • 元件服務
    • 使用者介面服務
    • 圖形和多媒體服務
    • 訊息和通訊
    • 網路
    • 網站服務

         這本書將重點介紹關鍵的基本服務,如進程和線程,記憶體管理,I/O和安全。

關於.NET

   .NET架構套件含了一個架構類庫(FCL)和一個通用語言運行時(CLR)。CLR是一個代碼運行環境,具有Just-In-Time 編譯、類型檢查、廢棄空間回收和代碼存取權限等特性。通過提供這些特性,CLR提供了一個能夠提高編程人員開發效率、減少普遍的編程錯誤的開發環境。可以通過閱讀Jeffrey Richter的《CLR via C#》第二版(微軟出版社,2006)來獲得關於.NET Framework的詳細描述和核心架構。

   CLR的實現如同傳統的COM服務,它的代碼存放在標準的使用者層的DLL(動態連結程式庫)中。實際上,.NET Framework的所有組件都在標準使用者層DLL中實現,在使用者層的Windows API之上。(沒有任何的.NET Framework運行在核心態)。表1-1闡明了這些組件之間的關係:

Win32 API的曆史

         有趣的是,Win32 並不是微軟Windows NT最早的編程介面。Windows NT項目是為了替代OS/2 v2作業系統而開始的,因此主要的編程介面是32位的OS/2表示管理API(Presentation Manager API)。然而,項目進展一年之後,微軟的Windows 3.0衝擊了市場並且大熱,因此微軟改變了方向,將Windows NT作為Windows家族產品的替代品而不是OS/2的替代品。這是對於Windows API崛起值得紀念的一個關鍵時刻——在這之前,WIndows API只是作為16位編程介面而存在的。Windows API在之後引入了許多不曾在WIndows 3.1中出現的函數,並且微軟決定使新的函數在名字、文法、使用的資料類型相容16位的Windows API函數,這樣在任何時候都能夠很輕鬆地將已經存在的16位Windows應用程式移植到Windows NT上。因此,當第一次接觸Windows API的人可能會詫異於為什麼許多函數的名字和介面不匹配,其中的一個原因就是這種不一致性是為了保證Windows API與舊的16位Windows API相容。

服務,函數與常式

         服務這個詞在Windows使用者和編程文檔中有著不同的意義,在不同的上下文中也有著差異。例如,服務這個詞可以指一個在作業系統中可供調用的常式、一個裝置驅動或者一個服務進程。接下來的一個列表描述了本書中的一些詞語的含義:

 

  • Windows API函數

  Windows API中被文檔化的、可供調用的子常式,如CreateProcess、CreateFile、GetMessage等。

  • 本地系統服務(或執行體(executive)系統服務)

  可供使用者層調用的,沒有被文檔化的作業系統低層服務。例如,NtCreateProcessEx是CreateProcess函數調用的用來建立一個新進程(如何將WIndowsAPI函數對應於本地函數,請閱讀第三章“作業系統服務分發”一節)的作業系統內部服務。

  •  核心支援函數

  只能夠從核心態被調用的Windows作業系統的子常式(在這一節稍後介紹)。例如,ExAllocatePoolWithTag是可供裝置驅動程式調用的從Windows作業系統堆(被稱為記憶體池)中分配記憶體的常式。

  • Windows服務

  Windows服務控制管理員所啟動的進程(雖然註冊表定義了Windows裝置驅動程式為服務,但我們在本書中並不這麼認為)。例如,任務調用服務運行於使用者層進程,用來支援at命令(類似於UNIX的at或者cron命令)。

  • DLLs(動態連結程式庫)

  一組由可調用的子常式所串連在一起的二進位檔案,可被使用這些代碼的應用程式動態載入。例如Msvcrt.dll(C執行階段程式庫)和Kernel32.dll(Windows API子系統庫之一)。Windows使用者態的組件和應用程式大量地使用DLL,並且Windows保證即使一個DLL被多個應用程式所引用,該DLL的代碼在記憶體中也只有一個副本。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.