版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、文章編號(hào):1009-671X (200109-0035-04Win 98下虛擬設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn)王磊1,朱齊丹1,溫強(qiáng)2(1.哈爾濱工程大學(xué)自動(dòng)化學(xué)院,黑龍江哈爾濱150001;2.哈爾濱工程大學(xué)機(jī)電工程學(xué)院,黑龍江哈爾濱150001摘要:介紹了電話網(wǎng)絡(luò)測(cè)試系統(tǒng)的組成和結(jié)構(gòu),Windows 98的內(nèi)核管理機(jī)制和應(yīng)用程序權(quán)限級(jí)別,簡(jiǎn)述了在Windows98下開(kāi)發(fā)虛擬驅(qū)動(dòng)程序的幾種方法,并給出了在電話網(wǎng)絡(luò)測(cè)試系統(tǒng)中應(yīng)用虛擬設(shè)備驅(qū)動(dòng)程序VxD 實(shí)例。關(guān)鍵詞:虛擬設(shè)備驅(qū)動(dòng)程序;VxD ;硬件中斷;電話網(wǎng)絡(luò)測(cè)試系統(tǒng)中圖分類號(hào):TP39.6文獻(xiàn)標(biāo)識(shí)碼:ADesign and Actu alizati
2、on of Visu al Device Driver Program in Win 98WAN G Lei 1,ZHU Qi-dan 1,WEN Qiang 2(1.Automation College ,Harbin Engineering University ,Harbin 150001,China ;2.Mechanical and Electrical En gineering Col 2lege ,Harbin Engineering University ,Harbin 150001,China Abstract :The structure and buildup of th
3、e telephone net test system ,the kernel management of Windows 98and the right limit of the applied program were introduced.Several ways of developing visual device driver program in Win 98were depicted.A developing example of using VxD in the telephone net test sys 2tem was given.K ey w ords :visual
4、 device driver program ;VxD ;hardware interruption ;telephone net test system0引言從Windows 3.1開(kāi)始,對(duì)于硬件設(shè)備的訪問(wèn)便采取了一種設(shè)備驅(qū)動(dòng)程序的方法,客戶通過(guò)設(shè)備驅(qū)動(dòng)程序來(lái)獲得硬件的參數(shù)或者設(shè)置,但是由于16位的操作系統(tǒng)基于原來(lái)的DOS ,所以客戶程序仍然可以通過(guò)一些B IOS 或者DOS 的DPM I 中斷調(diào)用來(lái)實(shí)現(xiàn)對(duì)硬件的操作。32位的操作系統(tǒng)如windows 95&N T 不再基于16位DOS ,所以用戶如果需要實(shí)現(xiàn)對(duì)硬件中斷、DMA ,I/O 或者是絕對(duì)存儲(chǔ)訪問(wèn),都不可避免地必須通過(guò)設(shè)備驅(qū)
5、動(dòng)程序。Winodows 95操作系統(tǒng)能夠?qū)崿F(xiàn)多線程、多進(jìn)程的應(yīng)用,系統(tǒng)通過(guò)一個(gè)虛擬機(jī)管理器VMM32,VxD ,通過(guò)它和其他的設(shè)備驅(qū)動(dòng)程序合作,來(lái)實(shí)現(xiàn)多個(gè)進(jìn)程間的協(xié)調(diào)工作,防止一個(gè)進(jìn)程的運(yùn)行導(dǎo)致另一個(gè)進(jìn)程的崩潰。本文結(jié)合開(kāi)發(fā)工具V ToolsD 給出一個(gè)為電話網(wǎng)絡(luò)測(cè)試系統(tǒng)的ISA 插卡擬設(shè)備驅(qū)動(dòng)程序VxD 的設(shè)計(jì)實(shí)例。該套系統(tǒng)主要由三部分組成:微機(jī)數(shù)據(jù)處理人機(jī)交互界面,數(shù)據(jù)交換通訊ISA 插卡,數(shù)據(jù)測(cè)試部分。用戶通過(guò)微機(jī)人機(jī)交互界面向系統(tǒng)下達(dá)測(cè)試命令,然后由數(shù)據(jù)交換通訊ISA 插卡中的單片機(jī)8032識(shí)別命令,通過(guò)電話傳輸線路把命令下發(fā)到每一個(gè)交換機(jī)節(jié)點(diǎn),該系統(tǒng)在城市電話網(wǎng)絡(luò)的每一個(gè)交換機(jī)節(jié)點(diǎn)
6、上都安裝一個(gè)電話測(cè)試機(jī)盒,通過(guò)單片機(jī)8032控制電話測(cè)試部分的工作,完成系統(tǒng)測(cè)試要求。然后再通過(guò)電話傳輸線路,把測(cè)試結(jié)果上傳到ISA 插卡,最后由計(jì)算機(jī)完成數(shù)據(jù)識(shí)別,數(shù)據(jù)處理,顯示測(cè)試結(jié)果,打印測(cè)試結(jié)果等工作。1設(shè)備驅(qū)動(dòng)程序VxD設(shè)備驅(qū)動(dòng)程序是被用來(lái)管理系統(tǒng)資源(硬件或者軟件的可執(zhí)行2進(jìn)制代碼,通過(guò)設(shè)備驅(qū)動(dòng)程序,多個(gè)進(jìn)程可以同時(shí)使用這些資源,從而可以實(shí)現(xiàn)多進(jìn)程并行運(yùn)行。設(shè)備驅(qū)動(dòng)程序一般是以收稿日期:2001-04-26作者簡(jiǎn)介:王磊(1977-,男,山東蓬萊人,哈爾濱工程大學(xué)自動(dòng)化學(xué)院碩士研究生,主要研究方向:計(jì)算機(jī)控制。第28卷第9期應(yīng)用科技Vol.28,.92001年9月Applied S
7、cience and Technology Sep.,2001“VxD ”為后綴名,其意思是虛擬化某些設(shè)備(Vir 2tual ”something ”Device .在一般概念上,設(shè)備驅(qū)動(dòng)程序和虛擬設(shè)備是同義的,下面就將兩者混用。386以上的微處理器有4個(gè)優(yōu)先級(jí)別:0級(jí)、1級(jí)、2級(jí)、3級(jí),一般操作系統(tǒng)運(yùn)行于優(yōu)先級(jí)0級(jí)上,而用戶程序運(yùn)行在3級(jí)上。VxD 運(yùn)行于0級(jí)上,其在內(nèi)存中的位置也是處在操作系統(tǒng)保護(hù)的空間之內(nèi)的。Windows 95是繼承Windows 3.X 而來(lái),所以兩者的設(shè)備驅(qū)動(dòng)程序采取的是同一種模式,也就是說(shuō),一般為Windows 3.X 寫(xiě)的設(shè)備驅(qū)動(dòng)程序,可以不加改動(dòng)地運(yùn)行于Wi
8、ndows 95下;但是也有一些區(qū)別:一般Windows 95下面的驅(qū)動(dòng)程序是以“VxD ”為后綴名,Windows 3.X 是以“386”為后綴名;Windows 3.X 的設(shè)備驅(qū)動(dòng)程序必須在Windows 啟動(dòng)時(shí)靜態(tài)載入,而Windows 95的設(shè)備驅(qū)動(dòng)程序可以在程序運(yùn)行過(guò)程中動(dòng)態(tài)載入。Windows N T 采用的一種完全不同的模式,所以Windows 95&3.X 下的設(shè)備驅(qū)動(dòng)程序是不能和Windows N T 的設(shè)備驅(qū)動(dòng)程序兼容的。1.1VxD 的文件和數(shù)據(jù)結(jié)構(gòu)設(shè)備驅(qū)動(dòng)程序的編寫(xiě)有一定規(guī)范,需要對(duì)于32位的匯編和C 語(yǔ)言比較熟悉。一般完全由匯編語(yǔ)言編寫(xiě),但是也可以用C 與匯編
9、混合編寫(xiě)實(shí)現(xiàn)。首先需要有MicrosoftDD K (Driver K it ,一般工具是MASM6.11和VC2.0以上版本。通常虛擬設(shè)備驅(qū)動(dòng)程序由5個(gè)段組成,它們分別是:VxD-CODE ,VxD-DA TA ,VxD-ICODE ,VxD-I 2DA TA 和VxD-REAL-IN IT.VxD-CODE 是保護(hù)模式下的代碼段,一般這個(gè)包括設(shè)備驅(qū)動(dòng)程序的控制程序、回收函數(shù)、服務(wù)程序和接口函數(shù),這個(gè)段也命名為-L TEXT ;VxD-DA TA 是保護(hù)模式下的代碼段,一般包括設(shè)備驅(qū)動(dòng)程序的描述表,以及一些全局變量,這個(gè)段也命名為-LDA TA ;VxD-I 2CODE 是保護(hù)模式下的初始化
10、代碼段,包括一些初始化時(shí)使用的服務(wù)程序,虛擬機(jī)管理器在初始化結(jié)束之后就將這個(gè)段取消,這個(gè)段也命名為-I 2TEXT ;VxD-IDA TA 是保護(hù)模式下的初始化數(shù)據(jù)段,包括一些初始化時(shí)使用的數(shù)據(jù),虛擬機(jī)管理器(VMM 在初始化結(jié)束之后就將這個(gè)段取消,這個(gè)段也命名為DA TA ;VxD-REAL-IN IT 包括實(shí)模式下的初始化數(shù)據(jù)和代碼段,虛擬機(jī)管理器最先就是裝入這個(gè)代碼段,在進(jìn)程返回之后這個(gè)段取消,再裝入其他代碼段,這個(gè)段又命名為-R TEXT.需要注意的是,除了實(shí)模式下的初始化數(shù)據(jù)和代碼段外,其他4個(gè)段都是32位保護(hù)模式下平板模式(flat model 的段。每個(gè)設(shè)備驅(qū)動(dòng)程序必須首先聲明一
11、個(gè)虛擬機(jī)的名字、版本號(hào)、初始化過(guò)程、虛擬機(jī)控制程序(相當(dāng)于程序入口;有些設(shè)備驅(qū)動(dòng)程序還可以聲明設(shè)備標(biāo)志號(hào)和接口函數(shù)(API .虛擬機(jī)一般用Declare-Virtual-Device 宏來(lái)聲明。每個(gè)虛擬機(jī)需要一個(gè)虛擬機(jī)控制程序。虛擬機(jī)管理器通過(guò)這個(gè)程序來(lái)向該虛擬機(jī)傳遞控制信息,系統(tǒng)通過(guò)控制消息來(lái)控制虛擬機(jī)的執(zhí)行,例如初始化虛擬機(jī)、虛擬機(jī)不像WindowsDLLs 一樣提供出口函數(shù)(export functions ,虛擬機(jī)管理器通過(guò)0x20號(hào)中斷來(lái)實(shí)現(xiàn)與虛擬機(jī)的連接,中斷的句柄通過(guò)一個(gè)服務(wù)號(hào)來(lái)決定到底哪個(gè)虛擬機(jī)支持這個(gè)服務(wù)功能。一個(gè)虛擬機(jī)通過(guò)BeginProc 和Endproc 兩個(gè)宏來(lái)定義它
12、的服務(wù)功能,很象匯編語(yǔ)言。VxD 可通隨VMM 之間的緊密協(xié)作,才使得VxD 具有了應(yīng)用程序所不具備的能力,諸如可以不受限制地訪問(wèn)硬件設(shè)備、任意查看操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)(如描述符表、頁(yè)表等、訪問(wèn)任何內(nèi)存區(qū)域、捕獲軟件中斷、捕獲I/O 端口操作和內(nèi)存訪問(wèn)等,甚至還可以截取硬件中斷。1.2VxD 的運(yùn)行機(jī)制盡管VxD 使用32位平面存儲(chǔ)模式(flat memory model ,但它的代碼和數(shù)據(jù)仍使用分段管理,段有6種類型,即實(shí)模式初始化、保護(hù)模式初始化、可分頁(yè)、不可分頁(yè)、靜態(tài)和只調(diào)試(debug only ,每種類型又有代碼段和數(shù)據(jù)段之分,所以VxD 共有12個(gè)段。實(shí)模式代碼段和數(shù)據(jù)段為16位(分段
13、模式,其他段則是32位(平面模式?!皩?shí)模式初始化”段包含了在Windows 初始化過(guò)程的最初階段VMM 變?yōu)楸Wo(hù)模式之前要執(zhí)行的代碼靜態(tài)加載的VxD ,此時(shí)可以查看Windows 啟動(dòng)前的實(shí)模式環(huán)境,決定是否繼續(xù)加載,并通知VMM ,加載完畢后,VMM 進(jìn)入保護(hù)模式并執(zhí)行保護(hù)模式初始化代碼,同樣將執(zhí)行結(jié)果再通知VMM.初始化完成后,“保護(hù)模式初始化”段和“實(shí)模式初始化”段即被遺棄。VxD 的大部分代碼都在其他的某一段中,“可分頁(yè)”段允許虛擬存儲(chǔ)管理器(Virtual Memory Manager 進(jìn)行分頁(yè)管理,大多數(shù)的VxD 代碼都應(yīng)當(dāng)在“可分頁(yè)”段?!安豢煞猪?yè)”段的內(nèi)容主要包括:VxD 的主
14、入口點(diǎn)、硬件中斷處理函數(shù)、所訪問(wèn)的數(shù)據(jù)以及能被另一個(gè)VxD 中斷處理函數(shù)調(diào)用的異步服務(wù)?!办o態(tài)”段僅用于可以動(dòng)態(tài)加載的VxD ,當(dāng)VxD 卸載后,靜態(tài)代碼段和數(shù)據(jù)段都保留在內(nèi)存中?!爸徽{(diào)試”段只是VMM 在Soft-ICE for Win 95等調(diào)試環(huán)境下才將其載入。VMM 是通過(guò)VxD 的設(shè)備描述符塊DDB63應(yīng)用科技第28卷(Device Descriptor Block來(lái)識(shí)別的。DDB向VMM提供了VxD的主入口點(diǎn),還向應(yīng)用程序和其他的VxD提供了入口點(diǎn)。VMM利用這個(gè)主入口點(diǎn)將VM及Windows自身的狀態(tài)通知給VxD,然后VxD通過(guò)相應(yīng)的工作來(lái)響應(yīng)這些事件。由于VxD不僅僅服務(wù)于一個(gè)
15、物理設(shè)備(比如多個(gè)串口或僅與一個(gè)VM發(fā)生聯(lián)系,所以VxD 需狀態(tài)信息。VxD用一個(gè)或多個(gè)設(shè)備上下文結(jié)構(gòu)來(lái)保存設(shè)備信息,如I/O端口基地址、中斷向量等,VxD將自己的每個(gè)VM的狀態(tài)信息保存在VMM的VM控制塊中。VMM提供的服務(wù)包括:事件服務(wù)、內(nèi)存管理服務(wù)、兼容執(zhí)行和保護(hù)模式執(zhí)行的服務(wù)、登錄表服務(wù)、調(diào)度程序服務(wù)、同步服務(wù)、調(diào)試服務(wù)、I/O捕獲服務(wù)、處理錯(cuò)誤和中斷服務(wù)、VM中斷和回調(diào)服務(wù)、配置管理程序服務(wù)以及其他雜項(xiàng)服務(wù)。2開(kāi)發(fā)工具V ToolsD簡(jiǎn)介V ToolsD是專門用于開(kāi)發(fā)VxD程序的一種工具軟件,它包括VxD框架代碼生成器Quicd2 VxD,C運(yùn)行庫(kù)、VMM/VxD服務(wù)庫(kù)、VxD的C+
16、 +類庫(kù)、VxDLoad和VxDView等實(shí)用工具以及大量的C,C+例程。由VC+,BC+的32位編譯器編譯生成的VxD程序可以脫離V ToolsD環(huán)境運(yùn)行。利用QuickVxD可以方便、快捷地生成VxD 的框架,即生成后綴名為h,cpp和mak的3個(gè)文件。源文件包含了運(yùn)行VxD的基本組件,其中包含控制消息處理、API入口點(diǎn)、以及VxD服務(wù)等函數(shù)框架,并且還定義了標(biāo)志,設(shè)置了編譯參數(shù),聲明了類別,然后在C+環(huán)境下,向生成的各個(gè)處理函數(shù)體內(nèi)添加自己的代碼,最后使用編譯器NMA KE生成標(biāo)準(zhǔn)的VxD程序。由于VxD運(yùn)行在ring0級(jí),所以調(diào)試程序相當(dāng)困難。使用的調(diào)試工具是Soft-ICE for
17、Win 95.目前V ToolsD的最新版本為3.0,它支持設(shè)備訪問(wèn)體系結(jié)構(gòu)DAA(Device Access Architecture,所編寫(xiě)的程序代碼將可以在所有Windows平臺(tái)(包括Win95,Win98以及Windows N T上共享。當(dāng)然也可以使用Microsoft公司的DD K(De2 vice Developer K it來(lái)開(kāi)發(fā)VxD,但DD K不能象V ToolsD那樣通過(guò)屏蔽系統(tǒng)及VxD的底層技術(shù)細(xì)節(jié)提供豐富的C運(yùn)行庫(kù)和C+類庫(kù),而是讓開(kāi)發(fā)人員充分享用面向?qū)ο缶幊谭椒ǖ姆奖闩c快捷,因此僅就該點(diǎn)而言,使用DD K是不方便的。3VxD程序設(shè)計(jì)實(shí)例在開(kāi)發(fā)電話網(wǎng)絡(luò)測(cè)試系統(tǒng)的設(shè)計(jì)過(guò)程
18、中用V ToolsD,VC+6.0為自制的ISA卡開(kāi)發(fā)了虛擬設(shè)備驅(qū)動(dòng)程序Interrupt.vd.中斷由應(yīng)用程序動(dòng)態(tài)載入系統(tǒng)的Interrupt.vxd響應(yīng)并加以處理。中斷服務(wù)程序ISR結(jié)束后,調(diào)用函數(shù)Shell-PostMessage(向應(yīng)用程序窗口發(fā)送自定義消息。應(yīng)用程序接受消息后,再通過(guò)函數(shù)DeviceI oC ontrol(與VxD接口函數(shù)OnW32Device IoControl(互傳緩沖區(qū)數(shù)據(jù)。程序結(jié)束即可動(dòng)態(tài)卸載VxD.Win95下硬件中斷的處理過(guò)程。當(dāng)中斷發(fā)生時(shí),處理器轉(zhuǎn)換為ring0級(jí)保護(hù)模式。win2 odows系統(tǒng)并不象DOS那樣通過(guò)中斷描述符表ID T(Interrup
19、t Descriptor Table直接指向中斷處理過(guò)程,而是由ID T入口指向VMM中的程序。該程序?qū)⑴袛嗍欠駷橹袛嗾{(diào)用,如果是,則把中斷控制權(quán)交給虛擬可編程中斷控制器V PICD(Vir2 tual Programmable Interrupt Controller Device, V PICD實(shí)際上是一個(gè)重要的VxD,V PICD再將其交給另一個(gè)注冊(cè)了該中斷的VxD(如Inter2 rupt.vxd來(lái)處理。VxD程序是通過(guò)調(diào)用V PICD 服務(wù)V PICD-Virtualize-IRQ來(lái)注冊(cè)中斷的。此應(yīng)用程序使用了下列函數(shù):CreateFile(動(dòng)態(tài)加載VxD,CloseHandle(并
20、動(dòng)態(tài)卸載VxD,PreT rans2 lateMessage(截獲消息、DeviceI oC ontrol(與VxD互傳緩沖區(qū)數(shù)據(jù)。虛擬設(shè)備驅(qū)動(dòng)程序Interrupt.vxd經(jīng)調(diào)試后工作正常,未發(fā)生過(guò)任何丟失數(shù)據(jù)或死機(jī)的現(xiàn)象。下面是虛擬設(shè)備驅(qū)動(dòng)程序interrupt.vxd的部分源代碼Interrupt.h和Interrupt.cppInterrupt.h/IN TERRU PT.h-include file for VxD IN2 TERRU PT#define DEV ICE-CLASS InterruptDevice#define IN TERRU PT-Device ID UNDE2
21、FIN ED-DEV ICE-ID#define IN TERRU PT-Init-Order UNDE2 FIN ED-IN IT-ORDER#define IN TERRU PT-Major#define IN TERRU PT-Minor0#define M Y-IRQ9/定義9號(hào)中斷class M YHw Int:public V Hardware Intpublic:MyHw Int(:V Hardware Int(M Y-IRQ,0,0, virtual VO ID OnHardware Int(VMHAN273第9期王磊,等:Win98下虛擬設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn)DL E ;c
22、lass InterruptDevice :public VDevice pulice :virtual BOOL OnSysDynamicDevice Init (;virtual BOOL OnSysDynamicDeviceExit (;virtual DWORD OnW32Device IoControl (PI 2CO TL PARAMS pDIOCParams ;MyHw Int 3pMyIRQ ;class InterruptVM ;public VVirtualMachine public :InterruptVM (VMHANDL EHVM ;public :Interrup
23、t Thread (THREADHADANDL E h Thread Interrupt.cpp/IN TERRU PT.cpp -main module for VxD IN TERRU PT#define DEV ICE -MA IN #include “Interrupt.h ”Declare-Virtual-Device (IN TERRU PT #define WM-USER-POSTVXD 0x1000/自定義消息#undef DEV ICE -MA INInterruptVM :InterruptVM (VMHANDL E 2hVM :VVirtualMachine (hVM Interrupt Thread :Interrupt Thread (THREADHANDL Eh Thread :V Thread (h Thread BOOL InterruptDevice :OnSysDynam 2icDevice Init (/動(dòng)態(tài)加載時(shí)初始化/硬件初始化pMyIRQ =new MyHw Int (;if (pMyIRQ &&pMyIRQ ->hook (/掛接中斷pMyIRQ ->physicalUnmask (;/允許中斷return TRU E ;else ret
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工作總結(jié)之大四設(shè)計(jì)實(shí)習(xí)總結(jié)
- 2024年外匯、黃金等交易服務(wù)項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 銀行外匯業(yè)務(wù)管理規(guī)定制度
- 銀行合規(guī)管理制度實(shí)施跟進(jìn)
- 風(fēng)力發(fā)電基礎(chǔ)工程施工合同
- 農(nóng)學(xué)課件-植物微量元素營(yíng)養(yǎng)
- 期貨品種介紹詳細(xì)課件版
- 空調(diào)實(shí)習(xí)報(bào)告
- 小學(xué)生簡(jiǎn)單元旦節(jié)目的主持詞范文(33篇)
- 《計(jì)算機(jī)初級(jí)知識(shí)》課件
- 人教版高一地理必修一期末試卷
- 山東省臨沂市2023-2024學(xué)年高二上學(xué)期1月期末地理試題 附答案
- 2025北京語(yǔ)言大學(xué)新編長(zhǎng)聘人員招聘21人筆試備考試題及答案解析
- 珠寶鑒賞智慧樹(shù)知到期末考試答案章節(jié)答案2024年同濟(jì)大學(xué)
- 國(guó)家開(kāi)放大學(xué)《中文學(xué)科論文寫(xiě)作》形考任務(wù)1-4參考答案
- 《中國(guó)近現(xiàn)代史綱要(2023版)》課后習(xí)題答案合集匯編
- 影響機(jī)械加工表面質(zhì)量的因素及采取的措施
- 人工關(guān)節(jié)置換技術(shù)管理制度、質(zhì)量保障措施、風(fēng)險(xiǎn)評(píng)估及應(yīng)急預(yù)案資料
- 淺談窩工、停工、趕工索賠方式方法探討
- 舞臺(tái)燈光施工方案
- 中國(guó)石拱橋課件正稿
評(píng)論
0/150
提交評(píng)論