成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

剖析VB.NET平臺(tái)調(diào)用是如何執(zhí)行操作

開發(fā) 后端
這里介紹VB.NET平臺(tái)調(diào)用,平臺(tái)調(diào)用是.NET框架為VB.NET、Visual C#等.NET開發(fā)語言提供的一種服務(wù),用以在托管代碼中引入各種非托管DLL中封裝的函數(shù)。

Windows API就是Windows系統(tǒng)的API函數(shù)簡(jiǎn)稱(Application Program Interface,即:應(yīng)用程序接口函數(shù)),它是Windows操作系統(tǒng)提供給各種開發(fā)基于Windows平臺(tái)應(yīng)用軟件的開發(fā)語言的一些公用的函數(shù),這些函數(shù)一般都比較底層,所以當(dāng)各種開發(fā)語言使用自帶的函數(shù)或類庫已無法解決問題時(shí),調(diào)用Windows API函數(shù)往往是一種非常直接、有效的解決方法。但由于在程序中調(diào)用Windows API函數(shù)一般都很復(fù)雜,所以對(duì)于程序員來說,是否能夠靈活的使用Windows API函數(shù),往往也是其水平高低的一個(gè)重要標(biāo)志。但自從微軟推出.NET框架以后,各種開發(fā)基于.NET平臺(tái)下的程序語言,如VB.NET、Visual C#等卻很少使用Windows API函數(shù),并且微軟公司也不像以前那樣,提倡在這些.NET開發(fā)語言中使用Windows API函數(shù),其主要的原因如下:

1. .NET框架所附帶的類庫.NETFrameWork SDK是一個(gè)內(nèi)容豐富、功能強(qiáng)大的軟件開發(fā)包,各種Windows API函數(shù)所實(shí)現(xiàn)的各種功能幾乎都可以在這個(gè)軟件開發(fā)包中找到與之對(duì)應(yīng)的部分。

2. 微軟VB.NET、Visual C#等目的是編寫跨平臺(tái)的應(yīng)用程序,如果在VB.NET、Visual C#等中使用Windows API函數(shù),這也就注定了編寫出的程序只能運(yùn)行于Windows平臺(tái)之下,而弱化了.NET的跨平臺(tái)能力。這也就是為什么微軟不提倡在VB.NET平臺(tái)調(diào)用 Windows API函數(shù)的原因。

雖然微軟并不提倡在VB.NET、Visual C#中調(diào)用Windows API函數(shù),但由于目前.NET框架推出時(shí)間較短,.NETFrameWork SDK中提供的類庫還并不足以完全替換Windows API函數(shù)的所有功能,所以在某些時(shí)候,.NET開發(fā)語言還是必須要調(diào)用Windows API函數(shù)。

VB.NET平臺(tái)調(diào)用、托管DLL、非托管DLL簡(jiǎn)介:

托管DLL就是能夠在公共語言運(yùn)行庫(Common Language Runtime,簡(jiǎn)稱CLR)中能夠直接引用的,并且擴(kuò)展名為“DLL”的文件。具體所指就是封裝各種命名空間所在的DLL文件,如System.dll 等。非托管DLL就是平常所的動(dòng)態(tài)鏈接庫等,其中就包括了封裝所有Windows API函數(shù)的DLL文件。各種非托管DLL中的函數(shù)在公共語言運(yùn)行庫中不能直接被調(diào)用,而需要經(jīng)過.NET框架提供的平臺(tái)調(diào)用服務(wù)后才可以。

平臺(tái)調(diào)用是.NET框架為VB.NET、Visual C#等.NET開發(fā)語言提供的一種服務(wù),用以在托管代碼中引入各種非托管DLL中封裝的函數(shù)(其中包括Windows API函數(shù))。平臺(tái)調(diào)用依賴于元數(shù)據(jù)在運(yùn)行時(shí)查找導(dǎo)出函數(shù)并封裝其參數(shù)。

平臺(tái)服務(wù)調(diào)用非托管DLL中的函數(shù)的流程圖

公共語言運(yùn)行庫利用平臺(tái)服務(wù)調(diào)用非托管DLL中的函數(shù)的流程圖


在托管代碼中使用平臺(tái)調(diào)用服務(wù)調(diào)用非托管DLL中封裝的函數(shù)時(shí),平臺(tái)服務(wù)將依次執(zhí)行以下操作:
1.查找包含該函數(shù)所在的DLL文件。
2.如果找到,則將該DLL文件 加載到內(nèi)存中。
3.查找函數(shù)在內(nèi)存中的地址并將其參數(shù)推到堆棧上,并封送所需的數(shù)據(jù)。
4.將控制權(quán)轉(zhuǎn)移給非托管函數(shù)。 這樣整個(gè)函數(shù)調(diào)用完成。

在VB.NET平臺(tái)調(diào)用服務(wù),申明Windows API函數(shù)主要有二種具體的實(shí)現(xiàn)方法:
1.使用DllImport特征類來申明Windows API函數(shù)。
2.使用“Declare”語句來申明Windows API函數(shù)。

這二種方法雖有異曲同工之效,但在繁簡(jiǎn)上卻有很大差異,***種方法申明過程比較復(fù)雜,很容易在申明Windows API函數(shù)時(shí)出錯(cuò),所以并不提倡。而第二種方法相對(duì)簡(jiǎn)單,并且又保存了以前Visual Basic中的很多語法,所以在平常時(shí)大都使用這種方法來申明Windows API函數(shù)。

【編輯推薦】

  1. 全方位分析VB.NET編碼規(guī)范
  2. 詳細(xì)說明VB.NET變量中四點(diǎn)
  3. 三類十二種VB.NET數(shù)據(jù)類型全面介紹
  4. VB.NET初步知識(shí),初學(xué)者必看
  5. 具體介紹四大類VB.NET循環(huán)
責(zé)任編輯:佚名 來源: 天極
相關(guān)推薦

2009-10-15 17:50:48

VB.NET調(diào)用API

2009-10-23 13:14:38

2009-10-21 16:00:26

VB.NET CASE

2009-11-02 16:22:16

VB.NET面向?qū)ο?/a>

2009-10-13 15:09:19

VB.NET使用Tre

2010-01-12 09:51:07

VB.NET操作dbf

2010-01-14 14:21:07

2009-10-28 10:15:48

VB.NET框架類庫

2010-01-22 15:37:02

VB.NET監(jiān)控類

2009-10-12 16:51:28

VB.NET使用Ora

2010-01-12 11:47:09

VB.NET可選參數(shù)

2010-01-21 12:55:08

VB.NET對(duì)象序列

2009-10-29 11:41:27

VB.NET寫Obje

2010-01-22 14:19:38

VB.NET調(diào)用jar

2009-10-13 11:22:46

VB.NET調(diào)用Web

2010-01-11 15:54:48

VB.NET操作縮放圖

2010-01-19 17:32:03

VB.NET流

2010-01-19 18:24:29

VB.NET調(diào)用Win

2009-11-02 16:41:55

VB.NET串行化對(duì)象

2010-01-19 15:42:30

VB.NET賦值語句
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 在线观看国产视频 | av大全在线 | 天天操人人干 | 国产精品不卡一区 | 国产精品久久一区二区三区 | 农夫在线精品视频免费观看 | 国产在线1区 | 小h片免费观看久久久久 | 在线视频中文字幕 | 日韩在线一区二区三区 | 午夜久久久久久久久久一区二区 | 伊人最新网址 | 亚洲成人一区 | 亚洲一区二区免费电影 | 色综合久 | www.av在线| 久久久久久久久久毛片 | 国产91久久久久久久免费 | 午夜一区二区三区在线观看 | 免费日韩网站 | 欧美日韩成人一区二区 | 久久亚洲一区二区三区四区 | 成人视屏在线观看 | 久久精彩| 日韩免费av| 成人夜晚看av| 欧美高清性xxxxhdvideosex | 久久久91精品国产一区二区三区 | 特黄视频| 精品成人一区二区 | 中文字幕av在线一二三区 | 日韩二三区 | 97精品国产| 欧美精品一二三 | 精品一二三 | 一级高清免费毛片 | 99亚洲| 欧美日韩亚洲在线 | 国产免费一区二区 | 日韩视频在线一区 | 欧美爱爱视频 |