亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

read-modify-<b>Write</b>

  • 基于ARM的全數字B型超聲診斷儀的設計與研究

    超聲理論與技術的快速發展,使超聲設備不斷更新,超聲檢查已成為預測和評價疾病及其治療結果不可缺少的重要方法。超聲診斷技術不僅具有安全、方便、無損、廉價等優點,其優越性還在于它選用診斷參數的多樣性及其在工程上實現的靈活性。 全數字B超診斷儀基于嵌入式ARM9+FPGA硬件平臺、LINUX嵌入式操作系統,是一種新型的、操作方便的、技術含量高的機型。它具有現有黑白B超的基本功能,能夠對超聲回波數據進行靈活的處理,從而使操作更加方便,圖象質量進一步提高,并為遠程醫療、圖像存儲、拷貝等打下基礎,是一種很有發展前景、未來市場的主打產品。全數字B型超聲診斷儀的基本技術特點是用數字硬件電路來實現數據量極其龐大的超聲信息的實時處理,它的實現主要倚重于FPGA技術。現在FPGA已經成為多種數字信號處理(DSP)應用的強有力解決方案。硬件和軟件設計者可以利用可編程邏輯開發各種DSP應用解決方案。可編程解決方案可以更好地適應快速變化的標準、協議和性能需求。 本論文首先闡述了醫療儀器發展現狀和嵌入式計算機體系結構及發展狀況,提出了課題研究內容和目標。然后從B超診斷原理及全數字B超診斷儀設計入手深入分析了B型超聲診斷儀的系統的硬件體系機構。對系統的總體框架和ARM模塊設計做了描述后,接著分析了超聲信號進行數字化處理的各個子模塊、可編程邏輯器件的結構特點、編程原理、設計流程以及ARM處理模塊和FPGA模塊的主要通訊接口。接著,本論文介紹了基于ARM9硬件平臺的LINUX嵌入式操作系統的移植和設備驅動的開發,詳細描述了B型超聲診斷儀的軟件環境的架構及其設備驅動的詳細設計。最后對整個系統的功能和特點進行了總結和展望。

    標簽: ARM 全數字 儀的設計 超聲診斷

    上傳時間: 2013-05-28

    上傳用戶:sssnaxie

  • ITU-T G.729的一個實現例子(包括附錄b的vod檢測等功能)

    ·ITU-T G.729的一個實現例子(包括附錄b的vod檢測等功能)-ITU-T g.729 example, include VOD detect of reference B, etc.文件列表(點擊判斷是否您需要的文件):   g729b_v14   .........\acelp_co.c   .........\basic_op.c   .....

    標簽: ITU-T nbsp 729 vod

    上傳時間: 2013-05-20

    上傳用戶:Garfield

  • 基于MATLAB的B樣條小波程序的實現

    · 摘要:  MATLAB是一種建立在向量、數組、矩陣基礎上,面向科學和工程計算的高級語言,為科學研究和工程計算提供了一個方便有效的工具.該文簡要介紹了B樣條和B樣條小波的構成,并利用MATLAB語言編寫了繪制任意階B樣條和B樣條小波圖形的程序.  

    標簽: MATLAB 程序

    上傳時間: 2013-04-24

    上傳用戶:sqq

  • 蘇泊爾C21S02-B電磁爐電路圖

    蘇泊爾C21S02-B電磁爐電路圖,紅線標注,重點模塊說明!

    標簽: 21 02 蘇泊爾 電磁爐電路圖

    上傳時間: 2013-06-22

    上傳用戶:huangzr5

  • ADS-B接收機DIY全套資料

    制作基于PIC Mcu 的ADS-B接收機的全套資料,包括SCH、PCB、源碼和PC端軟件。

    標簽: ADS-B DIY 接收機

    上傳時間: 2013-04-24

    上傳用戶:cx111111

  • 2012TI杯陜西賽題B題--頻率補償電路

    2012TI杯陜西賽題H題,2012TI杯陜西賽題B題--頻率補償電路.

    標簽: 2012 TI 頻率補償電路

    上傳時間: 2013-10-07

    上傳用戶:ysystc670

  • PSHLY-B回路電阻測試儀

    PSHLY-B回路電阻測試儀介紹

    標簽: PSHLY-B 回路 電阻測試儀

    上傳時間: 2013-11-05

    上傳用戶:木子葉1

  • 基于單片機的數字化B超鍵盤設計

    針對目前使用的RS232接口數字化B超鍵盤存在PC主機啟動時不能設置BIOS,提出一種PS2鍵盤的設計方法?;赪78E052D單片機,采用8通道串行A/D轉換器設計了8個TGC電位器信息采集電路,電位器位置信息以鍵盤掃描碼序列形式發送,正交編碼器信號通過XC9536XL轉換為單片機可接收的中斷信號,軟件接收到中斷信息后等效處理成按鍵。結果表明,在滿足開機可設置BIOS同時,又可實現超聲特有功能,不需要專門設計驅動程序,接口簡單,成本低。 Abstract:  Aiming at the problem of the digital ultrasonic diagnostic imaging system keyboard with RS232 interface currently used couldn?蒺t set the BIOS when the PC boot, this paper proposed a design method of PS2 keyboards. Based on W78E052D microcontroller,designed eight TGC potentiometers information acquisition circuit with 8-channel serial A/D converter, potentiometer position information sent out with keyboard scan code sequentially.The control circuit based on XC9536 CPLD is used for converting the mechanical actions of the encoders into the signals that can be identified by the MCU, software received interrupt information and equivalently treatmented as key. The results show that the BIOS can be set to meet the boot, ultrasound specific functionality can be achieved at the same time, it does not require specially designed driver,the interface is simple and low cost.    

    標簽: 單片機 B超 數字化 鍵盤設計

    上傳時間: 2013-10-10

    上傳用戶:asdfasdfd

  • EZ-USB FX系列單片機USB外圍設備設計與應用

    EZ-USB FX系列單片機USB外圍設備設計與應用:PART 1 USB的基本概念第1章 USB的基本特性1.1 USB簡介21.2 USB的發展歷程31.2.1 USB 1.131.2.2 USB 2.041.2.3 USB與IEEE 1394的比較41.3 USB基本架構與總線架構61.4 USB的總線結構81.5 USB數據流的模式與管線的概念91.6 USB硬件規范101.6.1 USB的硬件特性111.6.2 USB接口的電氣特性121.6.3USB的電源管理141.7 USB的編碼方式141.8 結論161.9 問題與討論16第2章 USB通信協議2.1 USB通信協議172.2 USB封包中的數據域類型182.2.1 數據域位的格式182.3 封包格式192.4 USB傳輸的類型232.4.1 控制傳輸242.4.2 中斷傳輸292.4.3 批量傳輸292.4.4 等時傳輸292.5 USB數據交換格式302.6 USB描述符342.7 USB設備請求422.8 USB設備群組442.9 結論462.10 問題與討論46第3章 設備列舉3.1注冊表編輯器473.2設備列舉的步驟493.3設備列舉步驟的實現--使用CATC分析工具513.4結論613.5問題與討論61第4章 USB芯片與EZUSB4.1USB芯片的簡介624.2USB接口芯片644.2.1Philips接口芯片644.2.2National Semiconductor接口芯片664.3內含USB單元的微處理器684.3.1Motorola694.3.2Microchip694.3.3SIEMENS704.3.4Cypress714.4USB芯片總攬介紹734.5USB芯片的選擇與評估744.6問題與討論80第5章 設備與驅動程序5.1階層式的驅動程序815.2主機的驅動程序835.3驅動程序的選擇865.4結論865.5問題與討論87第6章 HID群組6.1HID簡介886.2HID群組的傳輸速率886.3HID描述符906.3.1報告描述符936.3.2主要 main 項目類型966.3.3整體 global 項目卷標976.3.4區域 local 項目卷標986.3.5簡易的報告描述符996.3.6Descriptor Tool 描述符工具 1006.3.7兼容測試程序1016.4HID設備的基本請求1026.5Windows通信程序1036.6問題與討論106PART 2 硬件技術篇第7章 EZUSB FX簡介7.1簡介1097.2EZUSB FX硬件框圖1097.3封包與PID碼1117.4主機是個主控者1137.4.1從主機接收數據1137.4.2傳送數據至主機1137.5USB方向1137.6幀1147.7EZUSB FX傳輸類型1147.7.1批量傳輸1147.7.2中斷傳輸1147.7.3等時傳輸1157.7.4控制傳輸1157.8設備列舉1167.9USB核心1167.10EZUSB FX單片機1177.11重新設備列舉1177.12EZUSB FX端點1187.12.1EZUSB FX批量端點1187.12.2EZUSB FX控制端點01187.12.3EZUSB FX中斷端點1197.12.4EZUSB FX等時端點1197.13快速傳送模式1197.14中斷1207.15重置與電源管理1207.16EZUSB 2100系列1207.17FX系列--從FIFO1227.18FX系列--GPIF 通用型可程序化的接口 1227.19AN2122/26各種特性的摘要1227.20修訂ID1237.21引腳描述123第8章 EZUSB FX CPU8.1簡介1308.28051增強模式1308.3EZUSB FX所增強的部分1318.4EZUSB FX寄存器接口1318.5EZUSB FX內部RAM1318.6I/O端口1328.7中斷1328.8電源控制1338.9特殊功能寄存器 SFR 1348.10內部總線1358.11重置136第9章 EZUSB FX內存9.1簡介1379.28051內存1389.3擴充的EZUSB FX內存1399.4CS#與OE#信號1409.5EZUSB FX ROM版本141第10章 EZUSB FX輸入/輸出端口10.1簡介14310.2I/O端口14310.3EZUSB輸入/輸出端口寄存器14610.3.1端口配置寄存器14710.3.2I/O端口寄存器14710.4EZUSB FX輸入/輸出端口寄存器14910.5EZUSB FX端口配置表15110.6I2C控制器15610.78051 I2C控制器15610.8控制位15810.8.1START位15810.8.2STOP位15810.8.3LASTRD位15810.9狀態位15910.9.1DONE位15910.9.2ACK位15910.9.3BERR位15910.9.4ID1, ID015910.10送出 WRITE I2C數據16010.11接收 READ I2C數據16010.12I2C激活加載器16010.13SFR尋址 FX 16210.14端口A~E的SFR控制165第11章 EZUSB FX設備列舉與重新設備列舉11.1簡介16711.2預設的USB設備16911.3USB核心對于EP0設備請求的響應17011.4固件下載17111.5設備列舉模式17211.6沒有存在EEPROM17311.7存在著EEPROM, 第一個字節是0xB0 0xB4, FX系列11.8存在著EEPROM, 第一個字節是0xB2 0xB6, FX系列11.9配置字節0,FX系列17711.10重新設備列舉 ReNumerationTM 17811.11多重重新設備列舉 ReNumerationTM 17911.12預設描述符179第12章 EZUSB FX批量傳輸12.1簡介18812.2批量輸入傳輸18912.3中斷傳輸19112.4EZUSB FX批量IN的例子19112.5批量OUT傳輸19212.6端點對19412.7IN端點對的狀態19412.8OUT端點對的狀態19512.9使用批量緩沖區內存19512.10Data Toggle控制19612.11輪詢的批量傳輸的范例19712.12設備列舉說明19912.13批量端點中斷19912.14中斷批量傳輸的范例20112.15設備列舉說明20512.16自動指針器205第13章 EZUSB控制端點013.1簡介20913.2控制端點EP021013.3USB請求21213.3.1取得狀態 Get_Status 21413.3.2設置特性(Set_Feature)21713.3.3清除特性(Clear_Feature)21813.3.4取得描述符(Get_Descriptor)21913.3.5設置描述符(Set Descriptor)22313.3.6設置配置(Set_Configuration)22513.3.7取得配置(Get_Configuration)22513.3.8設置接口(Set_Interface)22513.3.9取得接口(Get_Interface)22613.3.10設置地址(Set_Address)22713.3.11同步幀22713.3.12固件加載228第14章 EZUSB FX等時傳輸14.1簡介22914.2等時IN傳輸23014.2.1初始化設置23014.2.2IN數據傳輸23014.3等時OUT傳輸23114.3.1初始化設置23114.3.2數據傳輸23214.4設置等時FIFO的大小23214.5等時傳輸速度23414.5.1EZUSB 2100系列23414.5.2EZUSB FX系列23514.6快速傳輸 僅存于2100系列 23614.6.1快速寫入23614.6.2快速讀取23714.7快速傳輸的時序 僅存于2100系列 23714.7.1快速寫入波形23814.7.2快速讀取波形23914.8快速傳輸速度(僅存于2100系列)23914.9其余的等時寄存器24014.9.1除能等時寄存器24014.9.20字節計數位24114.10以無數據來響應等時IN令牌24214.11使用等時FIFO242第15章 EZUSB FX中斷15.1簡介24315.2USB核心中斷24415.3喚醒中斷24415.4USB中斷信號源24515.5SUTOK與SUDAV中斷24815.6SOF中斷24915.7中止 suspend 中斷24915.8USB重置中斷24915.9批量端點中斷25015.10USB自動向量25015.11USB自動向量譯碼25115.12I2C中斷25215.13IN批量NAK中斷 僅存于AN2122/26與FX系列 25315.14I2C STOP反相中斷 僅存于AN2122/26與FX系列 25415.15從FIFO中斷 INT4 255第16章 EZUSB FX重置16.1簡介25716.2EZUSB FX打開電源重置 POR 25716.38051重置的釋放25916.3.1RAM的下載26016.3.2下載EEPROM26016.3.3外部ROM26016.48051重置所產生的影響26016.5USB總線重置26116.6EZUSB脫離26216.7各種重置狀態的總結263第17章 EZUSB FX電源管理17.1簡介26517.2中止 suspend 26617.3回復 resume 26717.4遠程喚醒 remote wakeup 269第18章 EZUSB FX系統18.1簡介27118.2DMA寄存器描述27218.2.1來源. 目的. 傳輸長度地址寄存器27218.2.2DMA起始與狀態寄存器27518.2.3DMA同步突發使能寄存器27518.2.4虛擬寄存器27818.3RD/FRD與WR/FWR DMA閃控的選擇27818.4DMA閃控波形與延伸位的交互影響27918.4.1DMA外部寫入27918.4.2DMA外部讀取280第19章 EZUSB FX寄存器19.1簡介28219.2批量數據緩沖區寄存器28319.3等時數據FIFO寄存器28419.4等時字節計數寄存器28519.5CPU寄存器28719.6I/O端口配置寄存器28819.7I/O端口A~C輸入/輸出寄存器28919.8230 Kbaud UART操作--AN2122/26寄存器29119.9等時控制/狀態寄存器29119.10I2C寄存器29219.11中斷29419.12端點0控制與狀態寄存器29919.13端點1~7的控制與狀態寄存器30019.14整體USB寄存器30519.15快速傳輸30919.16SETUP數據31119.17等時FIFO的容量大小31119.18通用I/F中斷使能31219.19通用中斷請求31219.20輸入/輸出端口寄存器D與E31319.20.1端口D輸出31319.20.2輸入端口D腳位31319.20.3端口D輸出使能31319.20.4端口E輸出31319.20.5輸入端口E腳位31419.20.6端口E輸出使能31419.21端口設置31419.22接口配置31419.23端口A與端口C切換配置31619.23.1端口A切換配置#231619.23.2端口C切換配置#231719.24DMA寄存器31919.24.1來源. 目的. 傳輸長度地址寄存器31919.24.2DMA起始與狀態寄存器32019.24.3DMA同步突發使能寄存器32019.24.4選擇8051 A/D總線作為外部FIFO321PART 3 固件技術篇第20章 EZUSB FX固件架構與函數庫20.1固件架構總覽32320.2固件架構的建立32520.3固件架構的副函數鉤子32520.3.1工作分配器32620.3.2設備請求 device request 32620.3.3USB中斷服務例程32920.4固件架構整體變量33220.5描述符表33320.5.1設備描述符33320.5.2配置描述符33420.5.3接口描述符33420.5.4端點描述符33520.5.5字符串描述符33520.5.6群組描述符33520.6EZUSB FX固件的函數庫33620.6.1包含文件 *.H 33620.6.2子程序33620.6.3整體變量33820.7固件架構的原始程序代碼338第21章 EZUSB FX固件范例程序21.1范例程序的簡介34621.2外圍I/O測試程序34721.3端點對, EP_PAIR范例35221.4批量測試, BulkTest范例36221.5等時傳輸, ISOstrm范例36821.6問題與討論373PART 4 實驗篇第22章 EZUSB FX仿真器22?1簡介37522?2所需的工具37622?3EZUSB FX框圖37722.4EZUSB最終版本的系統框圖37822?5第一次下載程序37822.6EZUSB FX開發系統框圖37922.7設置開發環境38022.8EZUSB FX開發工具組的內容38122.9EZUSB FX開發工具組軟件38222.9.1初步安裝程序38222.9.2確認主機 個人計算機 是否支持USB38222.10安裝EZUSB控制平臺. 驅動程序以及文件38322.11EZUSB FX開發電路板38522.11.1簡介38522.11.2開發電路板的瀏覽38522.11.3所使用的8051資源38622.11.4詳細電路38622.11.5LED的顯示38722.11.6Jumper38722.11.7連接器39122.11.8內存映象圖39222.11.9PLD信號39422.11.10PLD源文件文件39522.11.11雛形板的擴充連接器P1~P639722.11.12Philips PCF8574 I/O擴充IC40022.12DMA USB FX I/O LAB開發工具介紹40122.12.1USBFX簡介40122.12.2USBFX及外圍整體環境介紹40322?12?3USBFX與PC連接軟件介紹40422.12.4USBFX硬件功能介紹404第23章 LED顯示器輸出實驗23.1硬件設計與基本概念40923.2固件設計41023.3.1固件架構文件FW.C41123.3.2描述符文件DESCR.A5141223.3.3外圍接口文件PERIPH.C41723.4固件程序代碼的編譯與鏈接42123.5Windows程序, VB設計42323.6INF文件的編寫設計42423.7結論42623.8問題與討論427第24章 七段顯示器與鍵盤的輸入/輸出實驗24.1硬件設計與基本概念42824.2固件設計43124.2.1七段顯示器43124.2.24×4鍵盤掃描43324.3固件程序代碼的編譯與鏈接43424.4Windows程序, VB設計43624.5問題與討論437第25章 LCD文字型液晶顯示器輸出實驗25.1硬件設計與基本概念43825.1.1液晶顯示器LCD43825.2固件設計45225.3固件程序代碼的編譯與鏈接45625.4Windows程序, VB設計45725.5問題與討論458第26章 LED點陣輸出實驗26.1硬件設計與基本概念45926.2固件設計46326.3固件程序代碼的編譯與鏈接46326.4Windows程序, VB設計46526.5問題與討論465第27章 步進電機輸出實驗27.1硬件設計與基本概念46627.1.11相激磁46727.1.22相激磁46727.1.31-2相激磁46827?1?4PMM8713介紹46927.2固件設計47327.3固件程序代碼的編譯與鏈接47427.4Windows程序, VB設計47627.5問題與討論477第28章 I2C接口輸入/輸出實驗28.1硬件設計與基本概念47828.2固件設計48128.3固件程序代碼的編譯與鏈接48328.4Windows程序, VB設計48428.5問題與討論485第29章 A/D轉換器與D/A轉換器的輸入/輸出實驗29.1硬件設計與基本概念48629.1.1A/D轉換器48629.1.2D/A轉換器49029.2固件設計49329.2.1A/D轉換器的固件設計49329.2.2D/A轉換器的固件設計49629.3固件程序代碼的編譯與鏈接49729.4Windows程序, VB設計49829.5問題與討論499第30章 LCG繪圖型液晶顯示器輸出實驗30.1硬件設計與基本概念50030.1.1繪圖型LCD50030.1.2繪圖型LCD控制指令集50330.1.3繪圖型LCD讀取與寫入時序圖50530.2固件設計50630.2.1LCG驅動程序50630.2.2USB固件碼51330.3固件程序代碼的編譯與鏈接51630.4Windows程序, VB設計51730.5問題與討論518附錄A Cypress控制平臺的操作A.1EZUSB控制平臺總覽519A.2主畫面520A.3熱插拔新的USB設備521A.4各種工具欄的使用524A.5故障排除526A.6控制平臺的進階操作527A.7測試Unary Op工具欄上的按鈕功能528A.8測試制造商請求的工具欄 2100 系列的開發電路板 529A.9測試等時傳輸工具欄532A.10測試批量傳輸工具欄533A.11測試重置管線工具欄535A.12測試設置接口工具欄537A.13測試制造商請求工具欄 FX系列開發電路板A.14執行Get Device Descriptor 操作來驗證開發板的功能是否正確539A.15從EZUSB控制平臺中, 加載dev_io的范例并且加以執行540A.16從Keil偵錯應用程序中, 加載dev_io范例程序代碼, 然后再加以執行542A.17將dev_io 目標文件移開, 且使用Keil IDE 集成開發環境 來重建545A.18在偵錯器下執行dev_io目標文件, 并且使用具有偵錯能力的IDE547A.19在EZUSB控制平臺下, 執行ep_pair目標文件A.20如何修改fw范例, 并在開發電路板上產生等時傳輸550附錄BEZUSB 2100系列及EZUSB FX系列引腳表B.1EZUSB 2100系列引腳表555B?2EZUSB FX系列引腳圖表561附錄C EZUSB FX寄存器總覽附錄D EEPROM燒錄方式

    標簽: EZ-USB USB 單片機 外圍設備

    上傳時間: 2013-11-21

    上傳用戶:努力努力再努力

  • 驅動程序與應用程序的接口

    有兩種方式可以讓設備和應用程序之間聯系:1. 通過為設備創建的一個符號鏈;2. 通過輸出到一個接口WDM驅動程序建議使用輸出到一個接口而不推薦使用創建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創建一個惟一的、獨立于語言的訪問設備的方法。一個應用程序使用Win32APIs來調用設備。在某個Win32 APIs和設備對象的分發函數之間存在一個映射關系。獲得對設備對象訪問的第一步就是打開一個設備對象的句柄。 用符號鏈打開一個設備的句柄為了打開一個設備,應用程序需要使用CreateFile。如果該設備有一個符號鏈出口,應用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統本調用希望打開一個設備。這個設備必須有一個符號鏈,以便應用程序能夠打開它。有關細節查看有關Kdevice和CreateLink的內容。在上述調用中第一個參數中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數不是Windows 98/2000中驅動程序(.sys文件)的路徑。是到設備對象的符號鏈。如果使用DriverWizard產生驅動程序,它通常使用類KunitizedName來構成設備的符號鏈。這意味著符號鏈名有一個附加的數字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應用程序需要被覆蓋的I/O,第六個參數(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設備信息集,該信息集包含了特殊類中的所有設備接口信息。應用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設備接口的抽象。它的成員函數DevicePath()返回一個路徑名的指針,該指針可以在CreateFile中使用來打開設備。下面用一個小例子來顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface(  GUID* pClassGuid,  DWORD instance,  PDWORD pError){  CDeviceInterfaceClass DevClass(pClassGuid, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  CDeviceInterface DevInterface(&DevClass, instance, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  cout << "The device path is "    << DevInterface.DevicePath()    << endl;   HANDLE hDev;  hDev = CreateFile(   DevInterface.DevicePath(),    GENERIC_READ | GENERIC_WRITE,    FILE_SHARE_READ | FILE_SHARE_WRITE,    NULL,    OPEN_EXISTING,    FILE_ATTRIBUTE_NORMAL,    NULL  );  if (hDev == INVALID_HANDLE_VALUE)    *pError = GetLastError();  return hDev;} 在設備中執行I/O操作一旦應用程序獲得一個有效的設備句柄,它就能使用Win32 APIs來產生到設備對象的IRPs。下面的表顯示了這種對應關系。Win32 API  DRIVER_FUNCTION_xxxIRP_MJ_xxx  KDevice subclass member function CreateFile  CREATE  Create ReadFile  READ  Read WriteFile  WRITE  Write DeviceIoControl  DEVICE_CONTROL  DeviceControl CloseHandle  CLOSECLEANUP  CloseCleanUp 需要解釋一下設備類成員的Close和CleanUp:CreateFile使內核為設備創建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調用Close。如果被打開的設備不支持指定的功能,則調用相應的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應用程序代碼中可能會在打開設備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導致沒有特權的用戶企圖打開這個設備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數轉換成IRP域的方法依賴于設備對象的屬性。當設備設置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創建了一個存儲在IRP中的MDL域。一個設備可以通過調用Kirp::Mdl來存取MDL。當設備設置DO_BUFFERED_IO標志,設備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或寫操作獲得buff地址。當設備不設置DO_BUFFERED_IO標志也不設置DO_DIRECT_IO,內核設置IRP 的UserBuffer域來對應ReadFile或WriteFile中的buff參數。然而,存儲區并沒有被鎖住而且地址只對調用進程有效。驅動程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調用,buffer參數的轉換依賴于特殊的I/O控制代碼,它不在設備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構造控制代碼。這個宏的其中一個參數指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數:Method  Input Buffer Parameter  Output Buffer Parameter METHOD_BUFFERED  KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER  KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統分配一個單一的緩沖來作為輸入與輸出。驅動程序必須在向輸出緩沖放數據之前拷貝輸入數據。驅動程序通過調用KIrp::IoctlBuffer獲得緩沖地址。在完成時,I/O管理器從系統緩沖拷貝數據到提供給Ring 3級調用者使用的緩沖中。驅動程序必須在結束前存儲拷貝到IRP的Information成員中的數據個數。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數呈現不同的含義。參數InputBuffer被拷貝到一個系統緩沖,這個緩沖驅動程序可以通過調用KIrp::IoctlBuffer。參數OutputBuffer被映射到KMemory對象,驅動程序對這個對象的訪問通過調用KIrp::Mdl來實現。對于METHOD_OUT_DIRECT,調用者必須有對緩沖的寫訪問權限。注意,對METHOD_NEITHER,內核只提供虛擬地址;它不會做映射來配置緩沖。虛擬地址只對調用進程有效。這里是一個用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現在使用一個DeviceIoControl調用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,這里放的是包含有執行操作命令的字符串指針  0, FirmwareRev,      //這里是output串指針,存放從驅動程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果輸出緩沖足夠大,設備拷貝串到里面并將拷貝的資結束設置到FirmwareRevSize中。在驅動程序中,代碼看起來如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){  ULONG fwLength=0;  switch ( I.IoctlCode() )  {    case IOCTL_MYDEV_GET_FIRMWARE_REV:      fwLength = strlen(FIRMWARE_REV)+1;      if (I.IoctlOutputBufferSize() >= fwLength)      {        strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV);        I.Information() = fwLength;         return I.Complete(STATUS_SUCCESS);      }      else      {              }    case . . .   } }

    標簽: 驅動程序 應用程序 接口

    上傳時間: 2013-10-17

    上傳用戶:gai928943

亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品电影在线观看| 麻豆成人在线播放| 欧美日韩伦理在线| 欧美福利专区| 欧美插天视频在线播放| 美女999久久久精品视频| 欧美a级一区二区| 欧美日韩国产综合视频在线观看中文| 国产精品国产精品国产专区不蜜| 亚洲高清久久| 欧美一级黄色网| 国产精品福利久久久| 亚洲国内精品| 玖玖玖国产精品| 国内精品美女在线观看| 亚洲免费一区二区| 欧美日韩国内| 亚洲人午夜精品| 麻豆国产精品一区二区三区| 国产精品亚洲视频| 亚洲色诱最新| 欧美美女福利视频| 亚洲欧洲三级电影| 欧美大尺度在线观看| 亚洲电影免费观看高清| 久久久一本精品99久久精品66| 国产精品国产亚洲精品看不卡15| 亚洲美女视频网| 欧美日韩成人在线观看| 日韩视频中文| 欧美午夜久久久| 亚洲免费在线| 国产视频一区二区三区在线观看| 午夜精品偷拍| 精品成人国产在线观看男人呻吟| 久久久亚洲人| 亚洲精品久久久久中文字幕欢迎你| 欧美成人免费观看| 亚洲美女色禁图| 欧美三区美女| 午夜欧美视频| 在线观看日产精品| 欧美精品一区二区三区视频| 99精品国产热久久91蜜凸| 国产精品久久久一区二区三区| 午夜精品在线观看| 一区二区三区在线免费观看| 欧美国产成人精品| 在线一区视频| 国内精品视频在线播放| 欧美成人三级在线| 亚洲欧美区自拍先锋| 经典三级久久| 欧美揉bbbbb揉bbbbb| 欧美永久精品| 亚洲国产三级网| 国产乱码精品一区二区三区五月婷 | 国产在线拍偷自揄拍精品| 亚洲欧美色婷婷| 亚洲高清视频一区| 欧美日韩久久久久久| 久久精品国产第一区二区三区最新章节 | 欧美视频中文字幕| 性欧美精品高清| 亚洲国产精品欧美一二99| 欧美视频网址| 久久久夜精品| 亚洲伊人伊色伊影伊综合网 | 久久精品国产一区二区三区| 在线观看欧美黄色| 国产精品久久久久77777| 噜噜噜91成人网| 中国成人在线视频| 亚洲丁香婷深爱综合| 欧美三级电影大全| 农夫在线精品视频免费观看| 亚洲综合视频一区| 日韩视频在线你懂得| 国内偷自视频区视频综合| 欧美紧缚bdsm在线视频| 久久国产66| 亚洲欧美在线一区二区| 亚洲免费观看| 亚洲国产成人av| 国产一区二区三区久久久久久久久| 欧美日本一区| 欧美成人免费大片| 麻豆精品一区二区av白丝在线| 亚洲视频免费在线| 亚洲精品国产精品久久清纯直播| 黄色一区二区在线| 国内外成人在线视频| 国产免费成人在线视频| 欧美日韩天堂| 欧美日韩亚洲另类| 欧美日韩高清在线| 欧美日韩国产丝袜另类| 欧美人与性禽动交情品| 欧美激情精品久久久久| 你懂的国产精品| 欧美成人性生活| 欧美r片在线| 欧美大色视频| 欧美区高清在线| 欧美日韩亚洲一区二区三区在线观看| 欧美成人精品高清在线播放| 另类av一区二区| 裸体素人女欧美日韩| 另类av导航| 欧美国产乱视频| 欧美性久久久| 国产一区三区三区| 在线观看日韩专区| 亚洲伦理在线观看| 亚洲欧美资源在线| 久久嫩草精品久久久久| 欧美v国产在线一区二区三区| 欧美成人午夜免费视在线看片| 欧美激情一二区| 欧美亚男人的天堂| 国产亚洲va综合人人澡精品| 国模套图日韩精品一区二区| 亚洲国产精品传媒在线观看| 亚洲乱码一区二区| 亚洲精品久久久久久久久久久久| 一本高清dvd不卡在线观看| 一本色道久久综合亚洲精品婷婷| 亚洲性图久久| 久久久水蜜桃| 欧美日产国产成人免费图片| 欧美日韩在线影院| 国产亚洲一区二区精品| 亚洲成人原创| 亚洲精选视频在线| 午夜国产不卡在线观看视频| 久久免费黄色| 欧美区日韩区| 狠狠色综合色综合网络| 一区二区电影免费观看| 欧美一区亚洲二区| 欧美黄色影院| 国产亚洲人成网站在线观看| 亚洲第一精品福利| 亚洲欧美日韩在线综合| 男男成人高潮片免费网站| 国产精品美女久久久久aⅴ国产馆| 国模一区二区三区| 亚洲视频综合| 欧美激情中文不卡| 国内精品伊人久久久久av一坑| 亚洲精品人人| 久久精品人人做人人爽| 国产精品久久久久久av福利软件 | 欧美一区二区三区在线看 | 欧美日韩亚洲91| 亚洲国产激情| 欧美国产精品| 久久久精品日韩欧美| 国产农村妇女精品| 亚洲一级特黄| 最新中文字幕亚洲| 正在播放亚洲一区| 亚洲国产精品一区二区www| 欧美国产精品| 国产有码在线一区二区视频| 亚洲视频中文| 久久午夜精品一区二区| 蜜桃av噜噜一区| 国产精品资源| 亚洲一区二区免费看| 欧美日韩在线免费观看| 亚洲人成网站在线播| 嫩草成人www欧美| 伊人久久噜噜噜躁狠狠躁| 亚洲欧美清纯在线制服| 国产精品国产三级国产a| 一区二区三区蜜桃网| 欧美日韩中文另类| 亚洲无线视频| 国产精品一香蕉国产线看观看 | 亚洲桃色在线一区| 欧美日韩国产成人精品| 亚洲国产91| 欧美精品videossex性护士| 亚洲美女精品成人在线视频| 欧美国产日韩在线| 99riav国产精品| 国产精品日本精品| 久久国产福利国产秒拍| 玉米视频成人免费看| 欧美成人精品激情在线观看| 日韩一级大片在线| 国产精品一二三| 美国成人毛片| 一本色道久久综合亚洲精品不 | 欧美成人免费播放| 夜夜嗨av一区二区三区网站四季av| 欧美视频在线免费看| 欧美亚洲一区二区在线观看| 激情欧美一区二区三区在线观看|