欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在操作系統(tǒng)中替換系統(tǒng)函數(shù)功能的方法

文檔序號(hào):6651874閱讀:365來源:國(guó)知局
專利名稱:在操作系統(tǒng)中替換系統(tǒng)函數(shù)功能的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種操作系統(tǒng)的系統(tǒng)函數(shù)的替換方法,特別是指可在操作系統(tǒng)中,對(duì)不同數(shù)據(jù)格式系統(tǒng)函數(shù)進(jìn)行替換的方法。
隨著科技的發(fā)展,人類和電腦的聯(lián)系也越來越密切,也由于科技每天都以驚人的速度在進(jìn)步,電腦對(duì)人們所提供的服務(wù)也越來越多樣化。為了提供更多、更強(qiáng)大的功能予使用者,電腦操作系統(tǒng)的本身所提供的系統(tǒng)函數(shù)除了日益增多之外,系統(tǒng)函數(shù)所能處理的數(shù)據(jù)量也跟著增加。一個(gè)最明顯的例子即是當(dāng)操作系統(tǒng)由16位(比特)進(jìn)步到32位時(shí),系統(tǒng)函數(shù)所處理的數(shù)據(jù)也由16位提升至32位。
然而對(duì)于適用于舊版操作系統(tǒng)的應(yīng)用程序而言,數(shù)據(jù)格式的變更反而會(huì)造成錯(cuò)誤的執(zhí)行結(jié)果,因此大多數(shù)的操作系統(tǒng)均會(huì)為了與先前版本兼容的原因(Backward compatible),可能在調(diào)用系統(tǒng)函數(shù)時(shí),在數(shù)據(jù)格式轉(zhuǎn)換之后,再調(diào)用先前版本的系統(tǒng)函數(shù)。舉例而言,在微軟的英文版視窗95/98(MicrosoftWindows 95/98)中調(diào)用32位的TextOut以輸出文字時(shí),由于可能需要調(diào)用16位的系統(tǒng)函數(shù)TextOutA或ExtTextOutA,因此操作系統(tǒng)將在檢測(cè)到上述的需求時(shí),自動(dòng)進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換與調(diào)用16位系統(tǒng)函數(shù)的操作。
另一方面,對(duì)于系統(tǒng)開發(fā)者來說,有時(shí)需依據(jù)特別的需求而替換系統(tǒng)函數(shù),例如在英文版視窗95/98中顯示中文時(shí),因?yàn)樵摬僮飨到y(tǒng)并未包含顯示中文的系統(tǒng)函數(shù),因此系統(tǒng)開發(fā)者可以對(duì)系統(tǒng)函數(shù)進(jìn)行替換,以達(dá)到上述的需求。如果所替換的是32位系統(tǒng)函數(shù),則只要直接在截取所要替換的系統(tǒng)函數(shù)后直接進(jìn)行替換即可。然而在32位的英文版視窗95/98中調(diào)用16位系統(tǒng)函數(shù)的操作,雖然可由操作系統(tǒng)自動(dòng)完成,但是若要在32位操作系統(tǒng)中進(jìn)行16位系統(tǒng)函數(shù)的替換卻無法順利達(dá)到,因此對(duì)于系統(tǒng)開發(fā)者而言,仍或多或少形成一些困擾。
發(fā)明目的及概述本發(fā)明的主要目的在于公開一種可在32位操作系統(tǒng)中,替換16位系統(tǒng)函數(shù)的方法。
本發(fā)明的另一目的在于公開一種可在操作系統(tǒng)中,任意替換32位與16位系統(tǒng)函數(shù)的方法。
本發(fā)明的次一目的在于公開一種得以同時(shí)截取不同數(shù)據(jù)格式的系統(tǒng)函數(shù),且可同時(shí)對(duì)所截取的系統(tǒng)函數(shù)進(jìn)行替換的方法。
根據(jù)以上所述目的,本發(fā)明提供一種可在操作系統(tǒng)中替換系統(tǒng)函數(shù)功能的方法。在設(shè)定所需替換的系統(tǒng)函數(shù)的后,若其是32位系統(tǒng)函數(shù),且需替換16位的系統(tǒng)函數(shù)時(shí),首先將32位系統(tǒng)函數(shù)的代碼推往存儲(chǔ)器高端,并在獲得32位系統(tǒng)函數(shù)的地址后,將自定義的系統(tǒng)函數(shù)進(jìn)行替換的操作。當(dāng)需調(diào)用16位的系統(tǒng)函數(shù)時(shí),可在數(shù)據(jù)格式轉(zhuǎn)換之后執(zhí)行自定義的16位系統(tǒng)函數(shù),并在執(zhí)行完畢后恢復(fù)所截取32系統(tǒng)函數(shù)的地址。
在16位系統(tǒng)函數(shù)的替換方面,在取得16位系統(tǒng)函數(shù)的地址后,隨后以自定義的16位系統(tǒng)函數(shù)進(jìn)行取代,接著進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換,以符合32位系統(tǒng)函數(shù)的需求。接下來,當(dāng)需調(diào)用32位系統(tǒng)函數(shù)時(shí),將32位系統(tǒng)函數(shù)的代碼推往存儲(chǔ)器高端,接著跳過C運(yùn)程時(shí)刻庫,隨后執(zhí)行自定義的32位系統(tǒng)函數(shù),并在執(zhí)行完畢后恢復(fù)所截取16系統(tǒng)函數(shù)的地址。
附圖簡(jiǎn)要說明本發(fā)明的優(yōu)選實(shí)施例將在以下的說明文字中參照下列附圖做更詳細(xì)的闡述

圖1為一流程圖,其描繪本發(fā)明優(yōu)選實(shí)施例中,用以截取系統(tǒng)函數(shù)并進(jìn)行替換的總體流程圖;圖2描繪在圖1中截取32位系統(tǒng)函數(shù),并替換其所調(diào)用的16位系統(tǒng)函數(shù)的操作流程圖;及圖3描繪在圖1中截取16位系統(tǒng)函數(shù),并替換其所調(diào)用的32位系統(tǒng)函數(shù)的操作流程圖。
發(fā)明詳細(xì)說明本發(fā)明的關(guān)鍵在于提供了一個(gè)模板和程序代碼框架,只要做適當(dāng)?shù)奶畛浼瓤赏瓿梢话闱闆r下難以完成的32為和16位混編程序截取和替換系統(tǒng)API,請(qǐng)參閱圖1,其描繪本發(fā)明優(yōu)選實(shí)施例中,用以截取系統(tǒng)函數(shù)并進(jìn)行替換的總體流程圖,其是以視窗95/98操作系統(tǒng)為基礎(chǔ)作描述。首先需設(shè)定所要截取的系統(tǒng)函數(shù)名稱(步驟102),隨后判斷該系統(tǒng)函數(shù)是32位或16位(步驟104)。當(dāng)系統(tǒng)函數(shù)是32位函數(shù)時(shí),接著將判斷其是否需調(diào)用16位的系統(tǒng)函數(shù)(步驟106)。若不需調(diào)用16位的系統(tǒng)函數(shù),則以自定義的32位系統(tǒng)函數(shù)來替代所截取的32位系統(tǒng)函數(shù)(步驟108),否則將經(jīng)由標(biāo)號(hào)A至圖2的流程進(jìn)行更進(jìn)一步的處理。另一方面,當(dāng)所要截取的系統(tǒng)函數(shù)是16位函數(shù)時(shí),接著將判斷其是否需調(diào)用32位的系統(tǒng)函數(shù)(步驟110)。若不需調(diào)用32位的系統(tǒng)函數(shù),則以自定義的16位系統(tǒng)函數(shù)來替代所截取的16位系統(tǒng)函數(shù)(步驟112),否則將經(jīng)由標(biāo)號(hào)B至圖3的流程進(jìn)行更進(jìn)一步的處理。
接下來請(qǐng)參閱圖2,其描繪在圖1中截取32位系統(tǒng)函數(shù),并替換其所調(diào)用的16位系統(tǒng)函數(shù)的操作流程圖。首先,將所要截取的32位系統(tǒng)函數(shù)的代碼推往存儲(chǔ)器的高端(步驟202)。″系統(tǒng)函數(shù)代碼″就是系統(tǒng)API,比如前面提到的TextOut)、″推往存儲(chǔ)器的高端″就是將自己的代碼加載到系統(tǒng)存儲(chǔ)器高端,即將代碼的起始地址定在2G以上、又″存儲(chǔ)器的高端″指的就是4G存儲(chǔ)器中的2G以上。將系統(tǒng)函數(shù)代碼推往存儲(chǔ)器高端的用意何就是讓他象系統(tǒng)代碼(2G以上)一樣,能被所有進(jìn)程共享,推往存儲(chǔ)器的高端就是將自己的代碼加載到系統(tǒng)存儲(chǔ)器高端,即將代碼的起始地址定在2G以上,而非系統(tǒng)的,系統(tǒng)的本來就在高端,否則我們的程序就不能共享系統(tǒng)的代碼了。接下來,本發(fā)明的方法將取得所截取的32位系統(tǒng)函數(shù)的地址,并將該地址給儲(chǔ)存起來(步驟204),隨后再將自定義的32位系統(tǒng)函數(shù)地址,取代所截取的32位系統(tǒng)函數(shù)的地址(步驟206),接著再將32位系統(tǒng)函數(shù)進(jìn)行轉(zhuǎn)換(Thunking),例如將以32位所描述的整數(shù)格式,轉(zhuǎn)換為以16位來描述的整數(shù)格式,使其符合16位系統(tǒng)函數(shù)的格式要求,就是改變因字長(zhǎng)不一樣造成的差異(步驟208)。于是當(dāng)接下來調(diào)用16位系統(tǒng)函數(shù)時(shí),便會(huì)調(diào)用到自定義的16位系統(tǒng)函數(shù)(步驟210),并在執(zhí)行完畢后,最后利用先前所儲(chǔ)存的被截取的32位系統(tǒng)函數(shù)地址,用以恢復(fù)所截取的32位系統(tǒng)函數(shù)的地址,除了使操作系統(tǒng)能恢復(fù)正常運(yùn)作外,其他應(yīng)用程序也能調(diào)用所截取32位系統(tǒng)函數(shù),使其提供原先應(yīng)有的技術(shù)支援。
接下來請(qǐng)參閱圖3,其描繪在圖1中截取16位系統(tǒng)函數(shù),并替換其所調(diào)用的32位系統(tǒng)函數(shù)的操作流程圖。首先依據(jù)將截取的16位系統(tǒng)函數(shù)的代碼,通過取得該16位系統(tǒng)函數(shù)的地址,并將該地址給儲(chǔ)存起來(步驟302),隨后再將自定義的16位系統(tǒng)函數(shù)地址,取代所截取的16位系統(tǒng)函數(shù)的地址(步驟304),接著再將16位系統(tǒng)函數(shù)進(jìn)行轉(zhuǎn)換(Thunking),例如將以16位所描述的整數(shù)格式,轉(zhuǎn)換為以32位來描述的整數(shù)格式,使其符合32位系統(tǒng)函數(shù)的格式要求(步驟306)。接下來當(dāng)接下來調(diào)用32位系統(tǒng)函數(shù)時(shí),便需將32位系統(tǒng)函數(shù)的代碼推往存儲(chǔ)器的高端(步驟308),隨后便可執(zhí)行自定義的32位系統(tǒng)函數(shù)(步驟312),并在執(zhí)行完畢后,最后利用先前所儲(chǔ)存的被截取的16位系統(tǒng)函數(shù)地址,用以恢復(fù)所截取的16位系統(tǒng)函數(shù)的地址。
至于構(gòu)造本發(fā)明方法的方式,可以運(yùn)用任何語言,例如C++語言或MFC的框架(Framework)來進(jìn)行軟件模塊的構(gòu)筑,使用者只需調(diào)用該軟件模塊即可替換所需的系統(tǒng)函數(shù)。此外,因?yàn)閮蓚€(gè)系統(tǒng)函數(shù)的截取與替換可獨(dú)立進(jìn)行,因此在本發(fā)明的方法中,可同時(shí)對(duì)16位或32位的系統(tǒng)函數(shù)進(jìn)行截取以及取代的操作,于是使用者只需提供自定義的系統(tǒng)函數(shù),即可運(yùn)用本發(fā)明方法所制訂的軟件模塊,來任何系統(tǒng)函數(shù)的替換操作。舉例而言,當(dāng)需在英文版視窗95/98中顯示中文,因此需要調(diào)用TextOutA、或ExtTextOutA等16位的系統(tǒng)函數(shù),然而若需提供TextOutA或ExtTextOutA所無法提供的功能時(shí),比如將屏幕上所有的文字全部改為紅色。即可運(yùn)用本發(fā)明方法所構(gòu)筑的軟件模塊來進(jìn)行上述系統(tǒng)函數(shù)的替換,進(jìn)而達(dá)到所要顯示的效果。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非用以限定本發(fā)明的專利申請(qǐng)范圍;凡其它未脫離本發(fā)明所揭示的精神下所完成的等效改變或修飾,均應(yīng)包含在下述權(quán)利要求范圍內(nèi)。
權(quán)利要求
1.一種可在操作系統(tǒng)中替換系統(tǒng)函數(shù)功能的方法,所述方法至少包含下列步驟設(shè)置所要截取的系統(tǒng)函數(shù)名稱;當(dāng)所述被截取系統(tǒng)函數(shù)需調(diào)用格式不同的系統(tǒng)函數(shù)時(shí),取得所述被截取系統(tǒng)函數(shù)的地址;以一第一替換系統(tǒng)函數(shù)的地址替代所述被截取系統(tǒng)函數(shù)的地址;轉(zhuǎn)換所述被截取系統(tǒng)函數(shù)的數(shù)據(jù)格式,以符合第二替換系統(tǒng)函數(shù)的需求;執(zhí)行所述第二替換系統(tǒng)函數(shù);及以所述被截取系統(tǒng)函數(shù)的地址取代所述第一替換系統(tǒng)函數(shù)的地址。
2.如權(quán)利要求1所述的方法,其中所述被截取系統(tǒng)函數(shù)與所述第一替換系統(tǒng)函數(shù)都是32位系統(tǒng)函數(shù),且所述第二替換系統(tǒng)函數(shù)是16位系統(tǒng)函數(shù)。
3.如權(quán)利要求2所述的方法,其中還包括在取得所述被截取系統(tǒng)函數(shù)的地址前,將所述32位的被截取系統(tǒng)函數(shù)代碼推往存儲(chǔ)器高端的步驟。
4.如權(quán)利要求1所述的方法,其中所述被截取系統(tǒng)函數(shù)與所述第一替換系統(tǒng)函數(shù)都是16位系統(tǒng)函數(shù),且所述第二替換系統(tǒng)函數(shù)是32位系統(tǒng)函數(shù)。
5.如權(quán)利要求4所述的方法,其中還包括轉(zhuǎn)換所述被截取系統(tǒng)函數(shù)的數(shù)據(jù)格式后,將所述32位的第二替換系統(tǒng)函數(shù)代碼推往存儲(chǔ)器高端的步驟。
6.一種可在操作系統(tǒng)中替換系統(tǒng)函數(shù)功能的方法,用以達(dá)到與先前版本兼容(Backward compatible)目的,所述方法至少包含下列步驟設(shè)置所要截取的系統(tǒng)函數(shù)名稱,其中所述被截取系統(tǒng)函數(shù)具有第一位(比特)數(shù)量的數(shù)據(jù)格式;當(dāng)所述被截取系統(tǒng)函數(shù)需調(diào)用先前版本系統(tǒng)函數(shù)時(shí),取得所述被截取系統(tǒng)函數(shù)的地址,其中所述先前版本系統(tǒng)函數(shù)具有第二位(比特)數(shù)量的數(shù)據(jù)格式的系統(tǒng)函數(shù)時(shí),且所述第一位數(shù)量大于所述第二位數(shù)量;以一替換系統(tǒng)函數(shù)的地址替代所述被截取系統(tǒng)函數(shù)的地址;轉(zhuǎn)換所述被截取系統(tǒng)函數(shù)的第一位數(shù)量的數(shù)據(jù)格式至第二位數(shù)量的數(shù)據(jù)格式,以符合所述先前版本系統(tǒng)函數(shù)的需求;執(zhí)行所述先前版本系統(tǒng)函數(shù);及以所述被截取系統(tǒng)函數(shù)的地址取代所述替換系統(tǒng)函數(shù)的地址。
7.如權(quán)利要求6所述的方法,其中所述第一位數(shù)量是32位,所述第二位數(shù)量是16位,且所述被截取系統(tǒng)函數(shù)與所述替換系統(tǒng)函數(shù)都是32位系統(tǒng)函數(shù),所述先前版本系統(tǒng)函數(shù)是16位系統(tǒng)函數(shù)。
8.如權(quán)利要求7所述的方法,其中還包括在取得所述被截取系統(tǒng)函數(shù)的地址前,將所述32位的被截取系統(tǒng)函數(shù)代碼推往存儲(chǔ)器高端的步驟。
9.一種可在操作系統(tǒng)中替換系統(tǒng)函數(shù)功能的方法,用以達(dá)到將先前版本系統(tǒng)函數(shù)至更新版本系統(tǒng)函數(shù)兼容的目的,所述方法至少包含下列步驟設(shè)置所要截取的系統(tǒng)函數(shù)名稱,其中所述被截取系統(tǒng)函數(shù)具有第一位數(shù)量的數(shù)據(jù)格式;當(dāng)所述被截取系統(tǒng)函數(shù)需調(diào)用更新版本系統(tǒng)函數(shù)時(shí),取得所述被截取系統(tǒng)函數(shù)的地址,其中所述更新版本系統(tǒng)函數(shù)具有第二位數(shù)量的數(shù)據(jù)格式的系統(tǒng)函數(shù)時(shí),且所述第一位數(shù)量小于所述第二位數(shù)量;以一替換系統(tǒng)函數(shù)的地址替代所述被截取系統(tǒng)函數(shù)的地址;轉(zhuǎn)換所述被截取系統(tǒng)函數(shù)的第一位數(shù)量的數(shù)據(jù)格式至第二位數(shù)量的數(shù)據(jù)格式,以符合所述更新版本系統(tǒng)函數(shù)的需求;執(zhí)行所述更新版本系統(tǒng)函數(shù);及以所述被截取系統(tǒng)函數(shù)的地址取代所述替換系統(tǒng)函數(shù)的地址。
10.如權(quán)利要求9所述的方法,其中所述第一位數(shù)量是16位,所述第二位數(shù)量是32位,且所述被截取系統(tǒng)函數(shù)與所述第一替換系統(tǒng)函數(shù)都是16位系統(tǒng)函數(shù),且所述第二替換系統(tǒng)函數(shù)是32位系統(tǒng)函數(shù)。
11.如權(quán)利要求10所述的方法,其中還包括轉(zhuǎn)換所述被截取系統(tǒng)函數(shù)的數(shù)據(jù)格式后,將所述32位的第二替換系統(tǒng)函數(shù)代碼推往存儲(chǔ)器高端的步驟。
全文摘要
一種可在操作系統(tǒng)中,對(duì)不同數(shù)據(jù)格式的系統(tǒng)函數(shù)進(jìn)行功能替換的方法,在設(shè)定所需替換的系統(tǒng)函數(shù)的后,可分別對(duì)所截取的是32位系統(tǒng)函數(shù)或16位系統(tǒng)函數(shù)進(jìn)行判斷,并在截取系統(tǒng)函數(shù)的地址后,以自定義的系統(tǒng)函數(shù)加以替換。當(dāng)自定義的32位系統(tǒng)函數(shù)調(diào)用至16位系統(tǒng)函數(shù)、或自定義的16位系統(tǒng)函數(shù)調(diào)用至32位系統(tǒng)函數(shù)中進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換,以符合系統(tǒng)函數(shù)的需求。最后當(dāng)自定義的系統(tǒng)函數(shù)執(zhí)行完畢后,將恢復(fù)被截取系統(tǒng)函數(shù)的地址,以使操作系統(tǒng)能恢復(fù)正常運(yùn)作。
文檔編號(hào)G06F17/15GK1369825SQ01103499
公開日2002年9月18日 申請(qǐng)日期2001年2月15日 優(yōu)先權(quán)日2001年2月15日
發(fā)明者陳樹青, 陳玄同, 林光信 申請(qǐng)人:英業(yè)達(dá)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
兴山县| 博爱县| 剑川县| 于都县| 溆浦县| 霍城县| 商河县| 读书| 新余市| 铜鼓县| 上虞市| 高州市| 盐亭县| 修武县| 富源县| 吴江市| 南岸区| 嘉义县| 苍梧县| 青神县| 来宾市| 京山县| 吉首市| 冀州市| 饶阳县| 青龙| 山阳县| 河源市| 鄂尔多斯市| 讷河市| 隆化县| 湘潭市| 黄浦区| 丹凤县| 景宁| 新营市| 德兴市| 榕江县| 当阳市| 清水河县| 泰来县|