国产一区二区精品在线_午夜精品视频_亚洲国产高清高潮精品美女_久久久91_午夜精品视频_久久久久亚洲一区二区三区

WIN32/API/SDK/MFC四者之間的聯(lián)系和區(qū)別

來源:網絡

點擊:2098

A+ A-

所屬頻道:新聞中心

關鍵詞: WIN32,API,SDK,MFC

      1、WIN32是不是就是指API?

            如果不是的話,WIN32具體是什么東西。

      不是,API你可以理解成系統(tǒng)函數(應用程序接口),Win32是一個子系統(tǒng)。Win32是Windows的一個子系統(tǒng),還有另外的子系統(tǒng)如OS/2、POSIX、WOW等。不同的子系統(tǒng)系統(tǒng)提供了不同的編程接口,即API,一般說的API指的就是Win32 API。

      2、SDK和API的關系是什么?

      可以說SDK靠千萬的API進行支撐。打個比方,他的窗體的創(chuàng)建都是靠一系列的API實現的。

      MFC當然也可以調用API,SDK也行。

      3、SDK和MFC的區(qū)別是什么?

      MFC是對SDK的封裝,通過MFC的一些方法實現,實質上還是調用了API進行實現。這就是封裝的好處,加快了開發(fā)的速度,減低了開發(fā)的難度。

      上面大家都說Win32是一個子系統(tǒng),這個當然是對的,不過我們有時候我們所說Win32通俗的就是指32位的Windows系統(tǒng),從windows95/98到NT/2000/XP都是32位Windows。子系統(tǒng)卻是僅對NT架構的系統(tǒng)而言的。我想樓主所問的Win32并不是子系統(tǒng)。

      API就是應用程序接口,是由系統(tǒng)提供的一些函數,比如你想創(chuàng)建一個文件,就要調用CreateFile,這個CreateFile就是一個API。任何一個操作系統(tǒng)都會提供API的,比如DOS也提供API,不過它是通過Int 21h中斷提供的就是了。

      SDK是指一些公司針對某一項技術為軟件開發(fā)人員制作的一套輔助開發(fā)或者減少開發(fā)周期的工具。一般專指Windows系統(tǒng)提供的相關的頭文件和LIB文件。

      有時候很多人將不用MFC等相關類庫,而只用API進行開發(fā)的方式也叫做SDK開發(fā),從這一點來說,API和SDK似乎是通用的。

     

      MFC是MS對API的一個封裝,也就是一個C++類庫,當然MFC比一般類庫龐大,所以有人稱之為應用程序框架。但其本質還是一個類庫

      Windows程序有用戶態(tài)和核心態(tài)的說法。在32位地址空間中,0x80000000以下屬于用戶態(tài),0x80000000以上屬于核心態(tài)。所有硬件管理都在核心態(tài)。用戶態(tài)程序的不能直接使用核心態(tài)的任何代碼。所謂核心態(tài)其實只是CPU的一種保護模式。在x86 CPU上,用戶態(tài)處于ring 3,核心態(tài)處于ring 0。

      從用戶態(tài)進入核心態(tài)的最常用的方法是在寄存器eax填一個功能碼,然后執(zhí)行int 2e。這有點像DOS時代的DOS和BIOS系統(tǒng)調用。在NT架構中這種機制被稱作system service。

      在核心態(tài)提供system service的有兩個家伙:ntoskrnl.exe和win32k.sys。ntoskrnl.exe是Windows的大腦,它的上層被稱為Executive,下層被稱作Kernel。Win32k.sys提供與顯示有關的system service。

      在用戶態(tài)一側,有一個重要的角色叫作ntdll.dll,大多數system service都是它調用的。它封裝這些system service,然后提供一個API接口。這個接口被稱作native API。 native API的用戶是各個子系統(tǒng)(subsystem),包括Win32子系統(tǒng)、OS/2子系統(tǒng)、POSIX子系統(tǒng)。各個子系統(tǒng)為Win32、OS2、POSIX程序提供了運行平臺。

      ntdll.dll由于提供了平臺無關的API接口,所以被看作是NT系統(tǒng)的原生接口,由之得到了“native API”的匪號。其實它的主要工作是將調用傳遞到核心態(tài)。

      Win32、OS/2、POSIX,聽起來很龐大。其實真正做好的只有Win32子系統(tǒng)。OS2、POSIX都是Console UI,即只有字符界面。提供OS/2子系統(tǒng),只因為在1988年,NT的主要設計目標就是與OS/2兼容,后來由于Windows 3.0賣得很好,所以設計目標被變更為與Windows兼容。提供POSIX子系統(tǒng),是為了應付美國政府的一個編號為FIPS 151-2的標準。

      Win32子系統(tǒng)的管理員是一個叫作csrss.exe的弟兄,它的全名是:Client/Server Run-Time Subsystem。它剛上任時,本來要分管所有的子系統(tǒng),但后來POSIX和OS/2都被分別處理了,所以只管了一個Win32。即使這樣也很了不起,所有的Win32程序的進程、線程們都要向它登記。

      不過Win32程序用得最多的還是Win32子系統(tǒng)的DLL們,最核心的DLL包括:kernel32.dll、User32.dll、Gdi32.dll、Advapi32.dll。這些DLL包裝了ntdll.dll的native API。其中Gdi32.dll比較特殊,它與核心態(tài)的win32k.sys直接保持聯(lián)系,以提高NT系統(tǒng)的圖形處理能力。Win32子系統(tǒng)的DLL們提供的接口函數在MSDN文檔中被詳細介紹,它們就是Win32 API。

    (審核編輯: 智匯小新)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯(lián)系我們刪除。

    主站蜘蛛池模板: h视频免费在线 | 少妇喷潮明星 | 91尤物国产福利在线观看 | 欧美成人精品二区三区99精品 | 精品国产乱码一区二区三区 | 裸体欧美bbbb极品bbbb | www.色网| 一级片视频免费观看 | 91av视频播放 | 日韩一区二区视频 | 国产一区二区高清视频 | 一级片免费在线播放 | 亚洲国产成人va在线观看天堂 | h片在线看| 亚洲欧美小视频 | 日韩影院在线观看 | 一道本一区 | 精品成人一区二区 | 亚洲激情午夜 | 久久久久久久av | 亚洲免费一 | 91干比| 亚洲高清一区二区三区 | 亚洲性人人天天夜夜摸 | 亚洲综合欧美综合 | 91popn国产在线| 天天成人 | 精品一二区| 丰满岳乱在线观看视频国产 | 中国一级特黄毛片大片久久 | 朋友的妈妈伦理 | a级毛片无码免费真人 | 九九99热久久精品66中文字幕 | 精品国产一区在线观看 | 91精品国产日韩91久久久久久 | 午夜精品九九九九99蜜桃 | 91精品国产一区二区三区四区在线 | 亚洲欧美网 | 色综合一区二区 | 亚洲免费二区 | 国产免费一级aaa片毛太久 |