freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

窗口服務(wù)評(píng)價(jià)器的設(shè)計(jì)_畢業(yè)設(shè)計(jì)論文-資料下載頁

2025-07-04 01:02本頁面

【導(dǎo)讀】人們對(duì)服務(wù)的要求越來越高,各行各業(yè)的競(jìng)爭(zhēng)也已經(jīng)細(xì)化到企業(yè)的服務(wù)層面,率等體現(xiàn)了企業(yè)的形象。為此這些窗口行業(yè)也逐漸重視服務(wù)質(zhì)量、加強(qiáng)服務(wù)措施;評(píng)缺乏客觀具體的依據(jù)。在這種情況下,窗口行業(yè)急于展現(xiàn)一種全新的服務(wù)形象,口行業(yè)的實(shí)際需求,窗口服務(wù)評(píng)價(jià)器應(yīng)運(yùn)而生。對(duì)下位機(jī)的軟、硬件進(jìn)行開發(fā)設(shè)計(jì),簡(jiǎn)要介紹上位機(jī)的設(shè)計(jì)要點(diǎn)。

  

【正文】 RET WU_KEY: RET DELAY: MOV R7,40H MOV R6,00H DJNZ R6,$ DJNZ R7,$4 RET 評(píng)價(jià)器按鍵指示程序 實(shí)現(xiàn)循環(huán)燈的單片機(jī)程序?yàn)椋? KEY_DISPLAY: CLR LCALL DELAY CLR LCALL DELAY CLR LCALL DELAY CLR LCALL DELAY SETB SETB SETB SETB RET 程序設(shè)計(jì) 25 評(píng)價(jià)器星級(jí)指示程序 一星級(jí): YIXING: CLR RET 二星級(jí): ERXING: CLR CLR RET 三星級(jí): SANXING: CLR CLR CLR RET 四星級(jí): SIXING: CLR CLR CLR CLR RET 五星級(jí): WUXING: CLR CLR CLR CLR CLR RET 淮安信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文 26 第五 章 上位機(jī)管理功能的設(shè)計(jì) 數(shù)據(jù)動(dòng)態(tài)連接庫(kù) dll 的設(shè)計(jì) a. dll 的簡(jiǎn)介 比較大的應(yīng)用程序都由很多模塊組成,這些模塊分別完成相對(duì)獨(dú)立的功能,它們彼此協(xié)作來完成整個(gè)軟件系統(tǒng)的工作??赡艽嬖谝恍┠K的功能較為通用,在構(gòu)造其它軟件系統(tǒng)時(shí)仍會(huì)被使用。在構(gòu)造軟件系統(tǒng)時(shí),如果將所有模塊的源代碼都靜態(tài)編譯到整個(gè)應(yīng)用程序 EXE 文件中,會(huì)產(chǎn)生一些問題:一個(gè)缺點(diǎn)是增加了應(yīng)用程序的大小,它會(huì)占用更多的磁盤空間,程序運(yùn)行時(shí)也會(huì)消耗較大的內(nèi)存空間,造成系統(tǒng)資源的浪費(fèi);另一個(gè)缺點(diǎn)是,在編寫大的 EXE 程序時(shí),在每次修改重建時(shí) 都必須調(diào)整編譯所有源代碼,增加了編譯過程的復(fù)雜性,也不利于階段性的單元測(cè)試。 Windows 系統(tǒng)平臺(tái)上提供了一種完全不同的較有效的編程和運(yùn)行環(huán)境,你可以將獨(dú)立的程序模塊創(chuàng)建為較小的 DLL(Dynamic Linkable Library)文件,并可對(duì)它們單獨(dú)編譯和測(cè)試。在運(yùn)行時(shí),只有當(dāng) EXE 程序確實(shí)要調(diào)用這些 DLL 模塊的情況下,系統(tǒng)才會(huì)將它們裝載到內(nèi)存空間中。這種方式不僅減少了 EXE 文件的大小和對(duì)內(nèi)存空間的需求,而且使這些 DLL 模塊可以同時(shí)被多個(gè)應(yīng)用程序使用。Windows 自己就將一些主要的系統(tǒng)功能以 DLL模塊的形式實(shí)現(xiàn)。 一般來說, DLL 是一種磁盤文件,以 .dll、 .DRV、 .FON、 .SYS 和許多以 .EXE為擴(kuò)展名的系統(tǒng)文件都可以是 DLL。它由全局?jǐn)?shù)據(jù)、服務(wù)函數(shù)和資源組成,在運(yùn)行時(shí)被系統(tǒng)加載到進(jìn)程的虛擬空間中,成為調(diào)用進(jìn)程的一部分。如果與其它 DLL之間沒有沖突,該文件通常映射到進(jìn)程虛擬空間的同一地址上。 DLL 模塊中包含各種導(dǎo)出函數(shù),用于向外界提供服務(wù)。 DLL 可以有自己的數(shù)據(jù)段,但沒有自己的堆棧,使用與調(diào)用它的應(yīng)用程序相同的堆棧模式;一個(gè) DLL 在內(nèi)存中只有一個(gè)實(shí)例; DLL 實(shí)現(xiàn)了代碼封裝性; DLL 的編制與 具體的編程語言及編譯器無關(guān)。 在 Win32 環(huán)境中,每個(gè)進(jìn)程都復(fù)制了自己的讀 /寫全局變量。如果想要與其它進(jìn)程共享內(nèi)存,必須使用內(nèi)存映射文件或者聲明一個(gè)共享數(shù)據(jù)段。 DLL 模塊需要的堆棧內(nèi)存都是從運(yùn)行進(jìn)程的堆棧中分配出來的。 Windows 在加載 DLL 模塊時(shí)將進(jìn)程函數(shù)調(diào)用與 DLL 文件的導(dǎo)出函數(shù)相匹配。 Windows 操作系統(tǒng)對(duì) DLL 的操作僅僅是把 DLL 映射到需要它的進(jìn)程的虛擬地址空間里去。 DLL 函數(shù)中的代碼所創(chuàng)建的任何對(duì)象(包括變量)都?xì)w調(diào)用它的線程或進(jìn)程所有 . b. dll 的調(diào)用方式 ( 1)靜態(tài)調(diào)用方式:由編譯系 統(tǒng)完成對(duì) DLL 的加載和應(yīng)用程序結(jié)束時(shí) DLL卸載的編碼(如還有其它程序使用該 DLL,則 Windows 對(duì) DLL 的應(yīng)用記錄減 1,直到所有相關(guān)程序都結(jié)束對(duì)該 DLL 的使用時(shí)才釋放它),簡(jiǎn)單實(shí)用,但不夠靈活,上位機(jī)管理功能的設(shè)定 27 只能滿足一般要求。 隱式的調(diào)用:需要把產(chǎn)生動(dòng)態(tài)連接庫(kù)時(shí)產(chǎn)生的 .LIB 文件加入到應(yīng)用程序的工程中,想使用 DLL中的函數(shù)時(shí),只須說明一下。隱式調(diào)用不需要調(diào)用 LoadLibrary()和 FreeLibrary()。程序員在建立一個(gè) DLL 文件時(shí),鏈接程序會(huì)自動(dòng)生成一個(gè)與之對(duì)應(yīng)的 LIB 導(dǎo)入文件。該文件包含了每一個(gè) DLL 導(dǎo)出函 數(shù)的符號(hào)名和可選的標(biāo)識(shí)號(hào),但是并不含有實(shí)際的代碼。 LIB 文件作為 DLL 的替代文件被編譯到應(yīng)用程序項(xiàng)目中。 當(dāng)程序員通過靜態(tài)鏈接方式編譯生成應(yīng)用程序時(shí),應(yīng)用程序中的調(diào)用函數(shù)與LIB 文件中導(dǎo)出符號(hào)相匹配,這些符號(hào)或標(biāo)識(shí)號(hào)進(jìn)入到生成的 EXE 文件中。 LIB文件中也包含了對(duì)應(yīng)的 DLL 文件名(但不是完全的路徑名),鏈接程序?qū)⑵浯鎯?chǔ)在 EXE 文件內(nèi)部。 當(dāng)應(yīng)用程序運(yùn)行過程中需要加載 DLL 文件時(shí), Windows 根據(jù)這些信息發(fā)現(xiàn)并加載 DLL,然后通過符號(hào)名或標(biāo)識(shí)號(hào)實(shí)現(xiàn)對(duì) DLL 函數(shù)的動(dòng)態(tài)鏈接。所有被應(yīng)用程序調(diào)用的 DLL 文件都會(huì)在 應(yīng)用程序 EXE 文件加載時(shí)被加載在到內(nèi)存中??蓤?zhí)行程序鏈接到一個(gè)包含 DLL 輸出函數(shù)信息的輸入庫(kù)文件 (.LIB 文件 )。操作系統(tǒng)在加載使用可執(zhí)行程序時(shí)加載 DLL??蓤?zhí)行程序直接通過函數(shù)名調(diào)用 DLL 的輸出函數(shù),調(diào)用方法和程序內(nèi)部其他的函數(shù)是一樣的。 ( 2)動(dòng)態(tài)調(diào)用方式:是由編程者用 API 函數(shù)加載和卸載 DLL 來達(dá)到調(diào)用 DLL的目的,使用上較復(fù)雜,但能更加有效地使用內(nèi)存,是編制大型應(yīng)用程序時(shí)的重要方式。 顯式的調(diào)用:是指在應(yīng)用程序中用 LoadLibrary 或 MFC 提供的AfxLoadLibrary 顯式的將自己所做的動(dòng)態(tài) 連接庫(kù)調(diào)進(jìn)來,動(dòng)態(tài)連接庫(kù)的文件名即是上面兩個(gè)函數(shù)的參數(shù),再用 GetProcAddress()獲取想要引入的函數(shù)。自此,你就可以象使用如同本應(yīng)用程序自定義的函數(shù)一樣來調(diào)用此引入函數(shù)了。在應(yīng)用程序退出之前,應(yīng)該用 FreeLibrary 或 MFC 提供的 AfxFreeLibrary 釋放動(dòng)態(tài)連接庫(kù)。直接調(diào)用 Win32 的 LoadLibary函數(shù),并指定 DLL的路徑作為參數(shù)。 LoadLibary返回 HINSTANCE 參數(shù),應(yīng)用程序在調(diào)用 GetProcAddress 函數(shù)時(shí)使用這一參數(shù)。GetProcAddress 函數(shù)將符號(hào) 名或標(biāo)識(shí)號(hào)轉(zhuǎn)換為 DLL 內(nèi)部的地址。程序員可以決定DLL 文件何時(shí)加載或不加載,顯式鏈接在運(yùn)行時(shí)決定加載哪個(gè) DLL 文件。使用 DLL的程序在使用之前必須加載( LoadLibrary)加載 DLL 從而得到一個(gè) DLL 模塊的句柄,然后調(diào)用 GetProcAddress 函數(shù)得到輸出函數(shù)的指針,在退出之前必須卸載 DLL(FreeLibrary)。 Windows 將遵循下面的搜索順序來定位 DLL: ① 、 包含 EXE 文件的目錄 ② 、 進(jìn)程的當(dāng)前工作目錄 ③ 、 Windows 系統(tǒng)目錄 淮安信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文 28 ④ 、 Windows 目錄 ⑤ 、 列在 Path 環(huán)境變 量中的一系列目錄 c. dll 的入口函數(shù) (1)每一個(gè) DLL 必須有一個(gè)入口點(diǎn), DLLMain 是一個(gè)缺省的入口函數(shù)。 DLLMain負(fù)責(zé)初始化 (Initialization)和結(jié)束 (Termination)工作,每當(dāng)一個(gè)新的進(jìn)程或者該進(jìn)程的新的線程訪問 DLL 時(shí),或者訪問 DLL 的每一個(gè)進(jìn)程或者線程不再使用 DLL 或者結(jié)束時(shí),都會(huì)調(diào)用 DLLMain。但是,使用 TerminateProcess 或 TerminateThread結(jié)束進(jìn)程或者線程,不會(huì)調(diào)用 DLLMain。 DLLMain 的函數(shù)原型: BOOL APIENTRY DLLMain(HANDLE hModule,DWORD ul_reason_for_call, LPVOID lpReserved) { switch(ul_reason_for_call) { case DLL_PROCESS_ATTACH: ....... case DLL_THREAD_ATTACH: ....... case DLL_THREAD_DETACH: ....... case DLL_PROCESS_DETACH: ....... return TRUE。 } } 參數(shù): hMoudle:是動(dòng)態(tài)庫(kù)被調(diào)用時(shí)所傳遞來的一個(gè)指向自己的句柄 (實(shí)際上,它是指向 _DGROUP 段的一個(gè)選擇符 ); ul_reason_for_call:是一個(gè)說明動(dòng)態(tài)庫(kù)被調(diào)原因的標(biāo)志。當(dāng)進(jìn)程或線程裝入或卸載動(dòng)態(tài)連接庫(kù)的時(shí)候,操作系統(tǒng)調(diào)用入口函數(shù),并說明動(dòng)態(tài)連接庫(kù)被調(diào)用的原因。它所有的可能值為: DLL_PROCESS_ATTACH: 進(jìn)程被調(diào)用; DLL_THREAD_ATTACH: 線程被調(diào)用; DLL_PROCESS_DETACH: 進(jìn)程被停止; DLL_THREAD_DETACH: 線程被停止; lpReserved:是一個(gè)被系統(tǒng)所保留的參數(shù)。 上位機(jī)管理功能的設(shè)定 29 (2)_DLLMainCRTStartup 為了使用 C運(yùn)行庫(kù) (CRT, C Run time Library)的 DLL 版本(多線程),一個(gè)DLL 應(yīng)用程序必須指定 _DLLMainCRTStartup 為入口函數(shù), DLL 的初始化函數(shù)必須是 DLLMain。 _DLLMainCRTStartup 完成以下任務(wù):當(dāng)進(jìn)程或線程捆綁 (Attach)到 DLL 時(shí)為 C運(yùn)行時(shí)的數(shù)據(jù) (C Runtime Data)分配空間和初始化并且構(gòu)造全局 C++對(duì)象,當(dāng)進(jìn)程或 者線程終止使用 DLL(Detach)時(shí),清理 C Runtime Data 并且銷毀全局 C++對(duì)象。它還調(diào) 用 DLLMain 和 RawDLLMain 函數(shù)。 RawDLLMain 在 DLL 應(yīng)用程序動(dòng)態(tài)鏈接到 MFC DLL 時(shí)被需要,但它是靜態(tài)的鏈接到 DLL 應(yīng)用程序的。在講述狀態(tài)管理時(shí)解釋其原因。 d. 關(guān)于 DLL 的函數(shù) 動(dòng)態(tài)鏈接庫(kù)中定義有兩種函數(shù):導(dǎo)出函數(shù) (export function)和內(nèi)部函數(shù) (internal function)。導(dǎo)出函數(shù)可以被其它模塊調(diào)用,內(nèi)部函數(shù)在定義它們的 DLL 程序內(nèi)部使用。 輸出函 數(shù)的方法有以下幾種: (1)、 傳統(tǒng)的方法 在模塊定義文件的 EXPORT 部分指定要輸入的函數(shù)或者變量。語法格式如下: entryname[=internalname] [@ordinal[NONAME]] [DATA] [PRIVATE] 其中: entryname 是輸出的函數(shù)或者數(shù)據(jù)被引用的名稱; internalname 同 entryname。 @ordinal 表示在輸出表中的順序號(hào) (index); NONAME 僅僅在按順序號(hào)輸出時(shí)被使用(不使用 entryname) ; DATA 表示輸出的是數(shù)據(jù)項(xiàng),使用 DLL 輸出數(shù)據(jù)的程序必須聲明該數(shù)據(jù)項(xiàng)為_declspec(DLLimport)。 上述各項(xiàng)中,只有 entryname 項(xiàng)是必須的,其他可以省略。 對(duì)于 C函數(shù)來說, entryname 可以等同于函數(shù)名;但是對(duì) C++函數(shù)(成員函數(shù)、非成員函數(shù))來說, entryname 是修飾名??梢詮?.map 映像文件中得到要輸出函數(shù)的修飾名,或者使用 DUMPBIN /SYMBOLS 得到,然后把它們寫在 .def文件的輸出模塊。 DUMPBIN 是 VC 提供的一個(gè)工具。 如果要輸出一個(gè) C++類,則把要輸出的數(shù)據(jù)和成員的修飾名都寫入 .def模塊定義文件。 (2)、 在命令行輸出 對(duì)鏈接程序 LINK 指定 /EXPORT 命令行參數(shù),輸出有關(guān)函數(shù)。 淮安信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文 30 (3)、 使用 MFC 提供的修飾符號(hào) _declspec(DLLexport) 在要輸出的函數(shù)、類、數(shù)據(jù)的聲明前加上 _declspec(DLLexport)的修飾符,表示輸出。 __declspec(DLLexport)在 C 調(diào)用約定、 C編譯情況下可以去掉輸出函數(shù)名的下劃線前綴。 extern C使得在 C++中使用 C 編譯方式成為可能。在 C++下定義 C函數(shù), 需要加 extern C關(guān)鍵詞。用 extern C來指明該函數(shù)使用 C編譯方式。輸出的 C函數(shù)可以從 C代碼里調(diào)用。 e. DLL 程序和調(diào)用其輸出函數(shù)的程序的關(guān)系 (1)、 DLL 與進(jìn)程、線程之間的關(guān)系 DLL 模塊被映射到調(diào)用它的進(jìn)程的虛擬地址空間。 DLL 使用的內(nèi)存從調(diào)用
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1