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

正文內(nèi)容

現(xiàn)代微機(jī)原理與接口技術(shù)接口第10章-預(yù)覽頁(yè)

 

【正文】 特權(quán)級(jí) 0 Windows 9x驅(qū)動(dòng)程序編寫 現(xiàn)代微機(jī)原理與接口技術(shù) 27 Windows 9x SYSVM Win16地址空間 Win16程序 Win16程序 Win16程序 Win16程序 Win32程序 Win32地址空間 Win32程序 Win32地址空間 …… DOSVM DOS程序 DOSVM DOS程序 …… 現(xiàn)代微機(jī)原理與接口技術(shù) 28 I/O端口訪問(wèn) 執(zhí)行 in, out指令 CPL ≤ IOPL? IOPM相關(guān)位 =0? 進(jìn)行 I/O操作 否 否 產(chǎn)生一個(gè)一般保護(hù)異常 是 是 IOPM是對(duì)所有 VM都起作用的權(quán)限機(jī)制,它以位( bit)來(lái)代表每個(gè)端口。 CPL當(dāng)前段的 I/O優(yōu)先級(jí),它實(shí)際上是 CS段選擇符的第 0~第 1位。 對(duì)于硬件中斷, VMM則將控制權(quán)交給 VPICD(虛擬可編程中斷控制器)處理, VPICD就調(diào)用其他 VxD通過(guò)系統(tǒng)服務(wù) VPICD_Virtualize_IRQ安裝的回調(diào)例程處理硬件中斷。 程序如下: 特殊應(yīng)用:如何利用保護(hù)模式下中斷的處理流程設(shè)法使自己從用戶級(jí)轉(zhuǎn)到核心級(jí)? 現(xiàn)代微機(jī)原理與接口技術(shù) 35 include include include // DWORDLONG, //DWORD,WORD等數(shù)據(jù)類型 DWORD _cr0; // 用來(lái)保存 CR0寄存器的值 void _declspec( naked) newint3( void) // 運(yùn)行在核心級(jí)的 // 中斷 3處理程序 { _asm { mov eax,cr0 // 這是必須在核心級(jí)才能執(zhí)行的 // 特權(quán)指令 mov _cr0,eax } _asm iretd // 中斷返回( 為什么不是 ret?) } 現(xiàn)代微機(jī)原理與接口技術(shù) 36 int main( int argc, char* argv[]) {DWORDLONG idtr,saveidt; WORD newgate[4]={0x0000,0x0028,0xee00,0x0000}; // 中斷門描述符, DPL=3 _asm { sidt idtr // 將 IDTR的值存在 idtr變量開 // 始的 6個(gè)字節(jié)中 mov ebx,DWORD ptr[idtr+2] // 把 IDT的 // 基地址讀入 EBX寄存器 add ebx,24 // 選擇中斷 3作為進(jìn)入核心級(jí)的 // 入口,中斷 3的門描述符 // 的地址是 IDT基地址加上 3*8 // (每個(gè)門描述符 8個(gè)字節(jié)) mov esi,ebx lea edi,saveidt 現(xiàn)代微機(jī)原理與接口技術(shù) 37 movsd // 保存原來(lái)中斷 3的門描述符 movsd // 到 saveidt中 lea eax,newint3 mov newgate,ax shr eax,16 mov [newgate+6],ax // 向新的中斷描述符中填入 // 中斷處理程序的入口偏移量 lea esi,newgate mov edi,ebx movsd // 用新中斷描述符在 IDT中 movsd // 替換原來(lái)的中斷 3描述符 int 3h // 觸發(fā)中斷 3,使程序跳轉(zhuǎn)到 // 0級(jí)執(zhí)行中斷處理程序 現(xiàn)代微機(jī)原理與接口技術(shù) 38 lea esi,saveidt mov edi,ebx movsd movsd // 恢復(fù)原來(lái)中斷 3的門描述符 } printf( cr0=0x%x,_cr0); // 輸出結(jié)果 return 0; } 現(xiàn)代微機(jī)原理與接口技術(shù) 39 虛擬設(shè)備驅(qū)動(dòng)程序( VxD)基礎(chǔ) 1. VxD的文件結(jié)構(gòu) VxD的五個(gè)段 ? VxD_CODE 保護(hù)模式下的代碼段 含設(shè)備驅(qū)動(dòng)程序回調(diào)例程、服務(wù)程序、 API接口函數(shù)和控制程序。初始化后被丟棄。一個(gè)物理設(shè)備可以有多個(gè)這樣的數(shù)據(jù)結(jié)構(gòu)。用于修改現(xiàn)有功能驅(qū)動(dòng)程序的行為。硬件或軟件人員可利用過(guò)濾器驅(qū)動(dòng)程序修改現(xiàn)有功能驅(qū)動(dòng)程序的行為。 2. 硬件設(shè)備的驅(qū)動(dòng)程序種類 現(xiàn)代微機(jī)原理與接口技術(shù) 48 總線驅(qū)動(dòng)程序檢測(cè)到新的硬件 用戶使用控制面板中的 “ 添加新硬件 ” 向?qū)О惭b一個(gè)設(shè)備 PnP管理器為該設(shè)備和它的驅(qū)動(dòng)程序在注冊(cè)表的配置表中添加一些條目 PnP管理器可能需要調(diào)整已經(jīng)分配給已存在設(shè)備的資源,使需要的資源對(duì)新設(shè)備可用 3. 設(shè)備驅(qū)動(dòng)程序安裝的順序 硬件接入 PnP管理器創(chuàng)建 PDO 現(xiàn)代微機(jī)原理與接口技術(shù) 49 驅(qū)動(dòng)程序被裝入后,執(zhí)行 DriverEntry程序。每一層驅(qū)動(dòng)程序都可以決定如何處理 IRP,既可以直接處理完該 IRP就不再向下傳,也可以處理完后繼續(xù)傳遞,還可以只做向下傳遞的工作。一個(gè) IRP有一個(gè)固定的首部和一個(gè)可變數(shù)目的 I/O棧 。 現(xiàn)代微機(jī)原理與接口技術(shù) 56 在棧 Parameters成員中,有幾個(gè)常用的的參數(shù) : ? Create( IRP_MJ_CREATE請(qǐng)求,創(chuàng)建 IRP) ? Close( IRP_MJ_CLOSE請(qǐng)求,關(guān)閉 IRP) ? Read( IRP_MJ_READ請(qǐng)求,讀 IRP) ? Write( IRP_MJ_WRITE請(qǐng)求,寫 IRP) ? StartDevice( IRP_MJ_PNP的IRP_MN_START_DEVICE請(qǐng)求,啟動(dòng)設(shè)備) ? DeviceIOControl( IRP_MJ_IOCTL請(qǐng)求, IOCTL IRP)。 基本驅(qū)動(dòng)程序函數(shù) I/O控制函數(shù) 派遣函數(shù) DriverEntry AddDevice StartIO AdapterControl OnInterrupt DpcForIsr DispatchPnp DispatchPower DispatchWmi DispatchRead DispatchWrite StartIO處理請(qǐng)求隊(duì)列、 AdapterControl處理 DMA操作 OnInterrupt處理中斷。 ? DispatchPnp函數(shù):用于處理 IRP_MJ_PNP消息,以便能實(shí)現(xiàn)即插即用的功能。servkey, RegistryPath); return STATUS_SUCCESS; } 現(xiàn)代微機(jī)原理與接口技術(shù) 64 添加一個(gè)設(shè)備 NTSTATUS AddDevice ( PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT pdo) { NTSTATUS status; PDEVICE_OBJECT fdo; Status=IoCreateDevice( DriveObject, sizeof( WDM_DEVICE_EXTENSION) , NULL, FILE_DEVICE_UNKNOWN, 0, FALSE, amp。 如果需要對(duì) IRP排隊(duì),則調(diào)用 StartIo處理IRP隊(duì)列 4. 將 IRP發(fā)送到派遣程序 (按照 DriverEntry中指定的入口地址來(lái)調(diào)用相關(guān)的派遣程序)。 IRP_MN_CANCEL_REMOVE_DEVICE 取消查詢刪除請(qǐng)求 IRP_MN_SURPRISE_REMOVAL 用戶在意外下拔出設(shè)備 現(xiàn)代微機(jī)原理與接口技術(shù) 68 NTSTATUS DispatchPnp( PDEVICE_OBJECT fdo, PIRP Irp) { PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(Irp) ; ULONG f = stackMinorFunction; // 取副功能碼 static NTSTATUS status=STATUS_SUCCESS switch( f) // 按照副功能碼調(diào)用相關(guān)的處理函數(shù) { case IRP_MN_START_DEVICE: HandleStartDevice( fdo,Irp) ;break; case IRP_MN_QUERY_REMOVE_DEVICE: HandleQueryRemove( fdo, Irp) ; …… }; if( f = arraysize( ftab)) return DefaultPnpHandler( fdo, Irp) ; return status; } 現(xiàn)代微機(jī)原理與接口技術(shù) 69 數(shù)據(jù)的讀 /寫 WDM有 4個(gè)標(biāo)準(zhǔn)的資源類型,分別是: ? CmResourceTypePort(端口資源) ? CmResourceTypeMemory(內(nèi)存資源) ? CmResourceTypeInterrupt(中斷資源) ? CmResourceTypeDma( DMA資源) 現(xiàn)代微機(jī)原理與接口技術(shù) 70 1. 內(nèi)存與端口訪問(wèn) 盡管 PC機(jī)的 I/O端口是單獨(dú)編址的,但為了做到和統(tǒng)一編址的機(jī)器兼容性, Windows 2022的設(shè)計(jì)者使用了硬件抽象層( HAL)的概念。和實(shí)模式下一樣,在調(diào)用IoConnectInterrupt進(jìn)行中斷配置前應(yīng)該禁止 PC機(jī)的中斷,調(diào)用之后再允許設(shè)備中斷。 INF文件是一個(gè)文本文件,它由節(jié)組成,每一節(jié)從括在方括號(hào)中的節(jié)名稱開始,后面是節(jié)的內(nèi)容,大部分段都含有一系列“ keyword = value”形
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1