專(zhuān)利名稱:客戶端/驅(qū)動(dòng)器通信接口的自動(dòng)生成的制作方法
客戶端/驅(qū)動(dòng)器通信接ロ的自動(dòng)生成
背景技術(shù):
設(shè)備輸入和輸出控制(IOCTL)接ロ是ー種應(yīng)用可以與設(shè)備驅(qū)動(dòng)器通信的機(jī)制。應(yīng)用可以使用IOCTL接ロ向各種設(shè)備發(fā)送控制代碼。每個(gè)控制代碼表示驅(qū)動(dòng)器要執(zhí)行的操作。例如,控制代碼可以要求設(shè)備驅(qū)動(dòng)器返回關(guān)于相應(yīng)設(shè)備的信息,或者引導(dǎo)驅(qū)動(dòng)器執(zhí)行設(shè)備上的動(dòng)作,如,把盤(pán)格式化等。通常存在標(biāo)準(zhǔn)控制代碼和特定于設(shè)備的控制代碼??梢灾付ǖ目刂拼a的類(lèi)型取決于正被訪問(wèn)的設(shè)備和應(yīng)用正運(yùn)行的平臺(tái)。應(yīng)用可以使用標(biāo)準(zhǔn)控制代碼或特定于設(shè)備的控制代碼在特定設(shè)備(如,軟盤(pán)驅(qū)動(dòng)器、硬盤(pán)驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、或者⑶-ROM驅(qū)動(dòng)器)上執(zhí)行 直接輸入和輸出操作。如今,關(guān)于驗(yàn)證經(jīng)由IOCTL接ロ發(fā)送的分組存在挑戰(zhàn),因?yàn)楹芏鄷r(shí)候分組未以除了對(duì)分組的供應(yīng)商而言是已知的以外的格式來(lái)描述。此外,由于不存在使驅(qū)動(dòng)器向除了某些驅(qū)動(dòng)器客戶端以外的實(shí)體指定與它的操作集合相關(guān)聯(lián)的操作參數(shù)的標(biāo)準(zhǔn)方式,因此存在挑戰(zhàn)。
發(fā)明內(nèi)容
提供此發(fā)明內(nèi)容以介紹簡(jiǎn)化形式的概念的選擇,下面在具體實(shí)施方式
中對(duì)其進(jìn)一步描述。此發(fā)明內(nèi)容并非意在識(shí)別要求保護(hù)主題的必要特征或關(guān)鍵特征,它也并非意在用來(lái)限制要求保護(hù)主題的范圍。各種實(shí)施例提供一種驅(qū)動(dòng)器編寫(xiě)者可以使用中介表示(如,XML)描述特定驅(qū)動(dòng)器操作集合的機(jī)制。生成工具可以隨后處理中介表示和生成用以支持這些操作的客戶端代碼和設(shè)備驅(qū)動(dòng)器代碼。在一個(gè)或更多個(gè)實(shí)施例中,可以根據(jù)特定于特定設(shè)備驅(qū)動(dòng)器的操作的定制模型(schema)來(lái)描述驅(qū)動(dòng)器操作和支持驅(qū)動(dòng)器操作的相關(guān)聯(lián)元素。可以把如定制模型所表示的描述轉(zhuǎn)換成支持對(duì)于操作的特定集合從客戶端至驅(qū)動(dòng)器通信的代碼文件的不同集合。在一個(gè)或更多個(gè)實(shí)施例中,與在所有操作上具有公共安全性相反,可以指定和應(yīng)用與驅(qū)動(dòng)器操作集合的各操作相關(guān)聯(lián)的不同安全性需求,從而減輕人工執(zhí)行驅(qū)動(dòng)器中繁雜位操控的需要。
全部圖使用同樣標(biāo)記引用相似特征。圖I示例了按照ー個(gè)或更多個(gè)實(shí)施例可以采用本文中描述的各種原理的操作環(huán)境。圖2示例了按照ー個(gè)或更多個(gè)實(shí)施例包括代碼生成工具形式的計(jì)算機(jī)可讀指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。圖3示例了按照ー個(gè)或更多個(gè)實(shí)施例的實(shí)例代碼生成工具流程。圖4示例了按照ー個(gè)或更多個(gè)實(shí)施例的實(shí)例運(yùn)行期流程。
圖5示例了按照ー個(gè)或更多個(gè)實(shí)施例的方法中的步驟。圖6示例了按照ー個(gè)或更多個(gè)實(shí)施例的方法中的步驟。
具體實(shí)施方式
概沭
各種實(shí)施例提供一種驅(qū)動(dòng)器編寫(xiě)者可以使用中介表示(如,XML)來(lái)描述特定驅(qū)動(dòng)器的操作集合的機(jī)制。生成工具可以隨后處理中介表示和生成用以支持這些操作的客戶端代碼和設(shè)備驅(qū)動(dòng)器代碼。在一個(gè)或更多個(gè)實(shí)施例中,可以根據(jù)特定于特定設(shè)備驅(qū)動(dòng)器的操作的定制模型來(lái)描述驅(qū)動(dòng)器操作和支持驅(qū)動(dòng)器操作的相關(guān)聯(lián)元素??梢园讶缍ㄖ颇P退硎镜拿枋鲛D(zhuǎn)換成支持對(duì)于操作的特定集合從客戶端至驅(qū)動(dòng)器通信的代碼文件的不同集合。
·
在一個(gè)或更多個(gè)實(shí)施例中,與在所有操作上具有公共安全性相反,可以指定和應(yīng)·用與驅(qū)動(dòng)器操作集合的各操作相關(guān)聯(lián)的不同安全性需求,從而減輕人工執(zhí)行驅(qū)動(dòng)器中繁雜位操控的需要。在后續(xù)討論中,提供了題為“操作環(huán)境”的部分,其描述可以采用ー個(gè)或更多個(gè)實(shí)施例的ー個(gè)環(huán)境。繼此之后,題為“實(shí)例模型”的部分描述了按照一個(gè)或更多個(gè)實(shí)施例的實(shí)例模型。接下來(lái),題為“實(shí)例代碼生成工具”的部分描述了按照一個(gè)或更多個(gè)實(shí)施例自動(dòng)生成客戶端側(cè)和設(shè)備驅(qū)動(dòng)器側(cè)代碼的代碼生成工具。最后,題為“實(shí)例方法”的部分描述了按照一個(gè)或更多個(gè)實(shí)施例的實(shí)例方法。現(xiàn)在考慮可以實(shí)施ー個(gè)或更多個(gè)實(shí)施例的實(shí)例操作環(huán)境。操作環(huán)境
圖I是在可操作用于采用本文中描述的技術(shù)的實(shí)例實(shí)施中環(huán)境100的示例。示例的環(huán)境100包括可以通過(guò)各種方式配置的運(yùn)算設(shè)備102。在此實(shí)例中,運(yùn)算設(shè)備102表示可以運(yùn)用或利用如下所述生成的客戶端側(cè)(即,應(yīng)用代碼)和設(shè)備驅(qū)動(dòng)器代碼的客戶端運(yùn)算設(shè)備。例如,可以把運(yùn)算設(shè)備102配置成便攜式游戲設(shè)備、移動(dòng)電話、能夠在網(wǎng)絡(luò)上通信的計(jì)算機(jī)(例如,桌面計(jì)算機(jī)、筆記本電腦、一個(gè)或更多個(gè)服務(wù)器、娛樂(lè)裝備)、以通信方式耦合到顯示設(shè)備的機(jī)頂盒等。因而,運(yùn)算設(shè)備102的范圍可以從具有大量存儲(chǔ)器和處理器資源的全資源設(shè)備(例如,個(gè)人計(jì)算機(jī)、游戲控制臺(tái))至具有有限存儲(chǔ)器和/或處理資源的低資源設(shè)備(例如,傳統(tǒng)機(jī)頂盒、手持游戲控制臺(tái))。另外,雖然示出了單個(gè)運(yùn)算設(shè)備102,但運(yùn)算設(shè)備102可以代表多個(gè)不同設(shè)備,如,企業(yè)運(yùn)用以執(zhí)行操作的多個(gè)服務(wù)器、遠(yuǎn)程控制器和機(jī)頂盒組合等。運(yùn)算設(shè)備102還可以包括使運(yùn)算設(shè)備102的硬件執(zhí)行操作的實(shí)體(例如,軟件),例如,處理器、功能塊等。例如,運(yùn)算設(shè)備102可以包括計(jì)算機(jī)可讀介質(zhì),其可以被配置成維持使運(yùn)算設(shè)備、以及更具體地運(yùn)算設(shè)備102的硬件執(zhí)行操作的指令。因而,指令用來(lái)配置硬件以執(zhí)行操作以及以此方式引起硬件的變換以執(zhí)行功能。計(jì)算機(jī)可讀介質(zhì)可以通過(guò)各種不同配置把指令提供給運(yùn)算設(shè)備102。計(jì)算機(jī)可讀介質(zhì)的一個(gè)這種配置是信號(hào)承載介質(zhì),因而被配置成諸如經(jīng)由網(wǎng)絡(luò)把指令(例如,作為載波)傳輸給運(yùn)算設(shè)備的硬件。可替選地或另外,還可以如此處所示例的,把計(jì)算機(jī)可讀介質(zhì)配置成計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)104,因而并非信號(hào)承載介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的實(shí)例包括隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM),光盤(pán),閃存,硬盤(pán)存儲(chǔ)器,以及可以使用磁、光學(xué)、以及其它技術(shù)存儲(chǔ)指令和其它數(shù)據(jù)的其它存儲(chǔ)設(shè)備。還把運(yùn)算設(shè)備102示例成包括一個(gè)或更多個(gè)處理器106。處理器不受形成它們的材料或其中采用的處理機(jī)制的限制。例如,處理器可以包括半導(dǎo)體和/或晶體管(例如,電子集成電路(1C))。在這種上下文中,處理器可執(zhí)行指令可以是電子可執(zhí)行指令??商孢x地,處理器的或用于處理器的、以及因而運(yùn)算設(shè)備的或用于運(yùn)算設(shè)備的機(jī)制可以包括但不限于量子運(yùn)算、光學(xué)運(yùn)算、機(jī)械運(yùn)算(例如,使用納米技木)等。另外,雖然示出了單個(gè)處理器106,但可以采用各種各樣類(lèi)型的處理器和/或計(jì)算機(jī)可讀介質(zhì)以及處理器和/或計(jì)算機(jī)可讀介質(zhì)的各種各樣的組合。運(yùn)算設(shè)備102還包括具有內(nèi)核110的操作系統(tǒng)108。如上和下所述,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)104包括諸如被配置成支持操作系統(tǒng)108的內(nèi)核110、應(yīng)用112與一個(gè)或更多個(gè)設(shè)備116之間通信的一個(gè)或更多個(gè)驅(qū)動(dòng)器114以及諸如應(yīng)用112的一個(gè)或更多個(gè)實(shí)體。
內(nèi)核110表示操作系統(tǒng)108的組件,該組件通常被用來(lái)把諸如處理器108和其它設(shè)備116之類(lèi)的底層設(shè)備的功能性抽象為運(yùn)算設(shè)備102執(zhí)行的應(yīng)用和其它軟件。設(shè)備116可以代表運(yùn)算設(shè)備102可以采用的各種不同設(shè)備。例如,設(shè)備116可以包括外圍設(shè)備,如,打印機(jī)、掃描儀、硬盤(pán)驅(qū)動(dòng)器等。另外,設(shè)備116可以包括諸如運(yùn)算設(shè)備內(nèi)部的存儲(chǔ)器或存儲(chǔ)設(shè)備的物件。設(shè)備116還可以表示運(yùn)算設(shè)備102可以調(diào)節(jié)(leverage)的其它運(yùn)算設(shè)備的功能性,如,使用移動(dòng)電話作為存儲(chǔ)設(shè)備、訪問(wèn)移動(dòng)電話上的相片等。因而,運(yùn)算設(shè)備102可以調(diào)節(jié)各種不同設(shè)備116以添加到運(yùn)算設(shè)備102的功能性。為了使設(shè)備116與運(yùn)算設(shè)備102、以及更具體地與運(yùn)算設(shè)備的操作系統(tǒng)108和內(nèi)核110通信,可以采用一個(gè)或更多個(gè)驅(qū)動(dòng)器114。驅(qū)動(dòng)器可以包括用戶模式驅(qū)動(dòng)器和內(nèi)核模式驅(qū)動(dòng)器這二者。驅(qū)動(dòng)器114通常被用來(lái)抽象(abstract)相應(yīng)設(shè)備116的功能性。 例如,可以把驅(qū)動(dòng)器114配置成一系列層,所述一系列層用以把來(lái)自操作系統(tǒng)108的內(nèi)核110的命令轉(zhuǎn)譯成各個(gè)設(shè)備“可理解的”特定于設(shè)備的命令。在下述實(shí)施例中,提供了驅(qū)動(dòng)器編寫(xiě)者(S卩,撰寫(xiě)者)可以使用中介表示(如,XML)來(lái)描述特定驅(qū)動(dòng)器的操作集合的機(jī)制。生成工具可以隨后處理中介表示和生成用以支持這些操作的客戶端代碼和設(shè)備驅(qū)動(dòng)器代碼。代碼生成可以是生成客戶端側(cè)和設(shè)備驅(qū)動(dòng)器側(cè)代碼的自動(dòng)操作。在一個(gè)或更多個(gè)實(shí)施例中,可以根據(jù)特定于特定設(shè)備驅(qū)動(dòng)器的操作的定制模型來(lái)描述驅(qū)動(dòng)器操作和支持驅(qū)動(dòng)器操作的相關(guān)聯(lián)元素??梢园讶缍ㄖ颇P退硎镜拿枋鲛D(zhuǎn)換成支持對(duì)于操作的特定集合從客戶端至驅(qū)動(dòng)器通信的代碼文件的不同集合。在一個(gè)或更多個(gè)實(shí)施例中,與在所有操作上具有公共安全性相反,可以指定和應(yīng)用與驅(qū)動(dòng)器操作集合的各操作相關(guān)聯(lián)的不同安全性需求,從而減輕人工執(zhí)行驅(qū)動(dòng)器中繁雜位操控的需要。通常,可以使用軟件、固件、硬件(例如,固定邏輯電路)、人工處理、或者這些實(shí)施的組合來(lái)實(shí)施本文中描述的功能中的任何功能。如本文中所使用的術(shù)語(yǔ)“模塊”、以及“功能性”通常表示硬件、軟件、固件、或者其組合。在軟件實(shí)施的情形中,模塊、功能性、或者邏輯表示執(zhí)行硬件、例如一個(gè)或更多個(gè)處理器和/或功能塊指定的操作的指令和硬件。
描述了實(shí)例操作環(huán)境,現(xiàn)在考慮可以運(yùn)用以使得驅(qū)動(dòng)器編寫(xiě)者(即,撰寫(xiě)者)能夠以可以促進(jìn)客戶端側(cè)和設(shè)備驅(qū)動(dòng)器側(cè)代碼自動(dòng)生成的方式來(lái)描述操作集合的實(shí)例模型的討論。實(shí)例樽型
下面正示出的是(經(jīng)由“〈xschannotation〉”標(biāo)簽)注釋了的模型以解釋模型的各種方面。雖然把模型示例成XML,但應(yīng)該明白,可以使用任何合適格式使得驅(qū)動(dòng)器編寫(xiě)者能夠表 達(dá)它們特定驅(qū)動(dòng)器的操作集合的中介表示以使得可以如下所述生成客戶端側(cè)和設(shè)備驅(qū)動(dòng)器側(cè)代碼。緊接它的表示下面顯現(xiàn)模型的解釋。
權(quán)利要求
1.一種系統(tǒng),包括 一個(gè)或更多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(200),包括計(jì)算機(jī)可讀指令,當(dāng)執(zhí)行時(shí)該計(jì)算機(jī)可讀指令實(shí)施被如下配置的代碼生成工具(202) 接收(500)設(shè)備操作描述符文件,其表示驅(qū)動(dòng)器的驅(qū)動(dòng)器操作集合的中介表示; 使用(502 )設(shè)備操作描述符文件來(lái)自動(dòng)生成描述該設(shè)備操作描述符文件定義的接口合約的文件; 把根據(jù)設(shè)備操作描述符文件生成的文件傳遞(504)給編譯器; 接收(506)來(lái)自編譯器的導(dǎo)出文件;以及 使用(508)導(dǎo)出文件來(lái)生成用以允許進(jìn)行客戶端側(cè)與設(shè)備驅(qū)動(dòng)器側(cè)實(shí)體之間通信的客戶端側(cè)和設(shè)備驅(qū)動(dòng)器側(cè)代碼。
2.如權(quán)利要求I所述的系統(tǒng),其中,設(shè)備操作描述符文件包括按照標(biāo)準(zhǔn)化模型創(chuàng)建的XML文件。
3.如權(quán)利要求I所述的系統(tǒng),其中,根據(jù)設(shè)備操作描述符文件生成的文件包括IDL文件。
4.如權(quán)利要求I所述的系統(tǒng),其中,編譯器包括MIDL編譯器。
5.如權(quán)利要求I所述的系統(tǒng),其中,客戶端側(cè)代碼被配置成使得客戶端數(shù)據(jù)被編組和向驅(qū)動(dòng)器發(fā)送請(qǐng)求。
6.如權(quán)利要求I所述的系統(tǒng),其中,驅(qū)動(dòng)器側(cè)代碼被配置成使得返回?cái)?shù)據(jù)被編組和向相關(guān)聯(lián)客戶端返回編組的返回?cái)?shù)據(jù)。
7.如權(quán)利要求I所述的系統(tǒng),其中,所述模型允許進(jìn)行如下內(nèi)容的指定 包括驅(qū)動(dòng)器實(shí)施的操作集合的單個(gè)接口,其中,可以依據(jù)參數(shù)集合和屬性列表來(lái)指定各操作。
8.一種方法,包括 在應(yīng)用過(guò)程內(nèi)接收(600)與驅(qū)動(dòng)器操作相關(guān)聯(lián)的調(diào)用,其中,通過(guò)基于按照標(biāo)準(zhǔn)化模型撰寫(xiě)的驅(qū)動(dòng)器操作集合的中介表示而自動(dòng)生成的接口來(lái)接收調(diào)用; 使得(602)與調(diào)用相關(guān)聯(lián)的數(shù)據(jù)被編組以提供第一編組數(shù)據(jù); 使得(604)第一編組數(shù)據(jù)被傳送給與驅(qū)動(dòng)器操作相關(guān)聯(lián)的驅(qū)動(dòng)器; 從驅(qū)動(dòng)器側(cè)代碼接收(618)表示返回?cái)?shù)據(jù)的第二編組數(shù)據(jù);以及 使得(620)第二編組數(shù)據(jù)被解編并通過(guò)在應(yīng)用過(guò)程中執(zhí)行的應(yīng)用來(lái)處理。
9.如權(quán)利要求8所述的方法,其中,標(biāo)準(zhǔn)化模型包括XML模型。
10.如權(quán)利要求8所述的方法,其中,使得數(shù)據(jù)首先被編組以及使得第二編組數(shù)據(jù)被解編包括使用應(yīng)用過(guò)程內(nèi)的遠(yuǎn)程過(guò)程調(diào)用(RPC)組件。
11.一個(gè)或更多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括在執(zhí)行時(shí)實(shí)施如權(quán)利要求8 — 10中任一項(xiàng)的方法的指令。
全文摘要
各種實(shí)施例提供驅(qū)動(dòng)器編寫(xiě)者可以使用中介表示(如,XML)來(lái)描述特定驅(qū)動(dòng)器的操作集合的機(jī)制。生成工具可以隨后處理中介表示并生成用以支持這些操作的客戶端代碼和設(shè)備驅(qū)動(dòng)器代碼。在一個(gè)或更多個(gè)實(shí)施例中,可以根據(jù)特定于特定設(shè)備驅(qū)動(dòng)器的操作的定制模型來(lái)描述驅(qū)動(dòng)器操作和支持驅(qū)動(dòng)器操作的相關(guān)聯(lián)元素。
文檔編號(hào)G06F9/45GK102707983SQ201210079559
公開(kāi)日2012年10月3日 申請(qǐng)日期2012年3月23日 優(yōu)先權(quán)日2011年3月23日
發(fā)明者P.斯利沃維奇 申請(qǐng)人:微軟公司