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

正文內容

usb技術及其驅動程序開發(fā)(doc畢業(yè)設計論文)(編輯修改稿)

2024-07-25 09:17 本頁面
 

【文章內容簡介】 USB標準設備請求這一部分描述的是所有USB設備都定義的標準設備請求。表2-1列出了所有的標準請求。請求號請求數(shù)據(jù)源接收方值指針長度(B)數(shù)據(jù)01HCLEAR_FEATURE無設備,接口終端特性設備,接口終端0無08HGET_CONFIGURATION無設備零設備1配置值06HGET_DESCRIPTOR設備設備描述符類型和指針設備或語言ID描述符長度描述符0AHGET_INTERFACE無接口0接口1可選設置00HGET_STATUS設備設備,接口,終端0設備,接口,終端2端點狀態(tài)05HSET_ADDRESS無設備設備地址00無09HSET_CONFIGURATION無設備配置值設備0無07HSET_DESCRIPTOR主機設備描述符類型和指針設備或語言ID描述符長度描述符03HSET_FEATURE無設備,接口,終端特性選擇符設備,接口,終端0無0BHSET_INTERFACE無接口可選設置接口號1無0CHSYNCH_FRAME設備終端0終端2幀號 表21 標準設備請求a、清除特性(ClearFeature())這個請求是被用來清除一個指定的特性。一個ClearFeature( )請求所指的特性如果不能被清除,不存在或指的是不存在的接口或結點號,會產(chǎn)生請求錯誤。 如果長度不為0,設備響應無定義。 缺省狀態(tài):當設備處于缺省狀態(tài)時,對此請求的反應無定義。 地址狀態(tài):在設備處于地址狀態(tài)時這個請求是合法的,但如果該請求指的是接口或是非零號端結點,會引起請求錯誤。配置狀態(tài):在此狀態(tài)下,該請求合法。b、取得配置(GetConfiguration())此請求返回當前設備配置值。 如果返回0值表明設備未配置。 如果值,指針,長度的值與上面表中不同,設備響應無定義。 缺省狀態(tài):該請求響應無定義。 地址狀態(tài):返回0值。 配置狀態(tài):非0的 配置值被返回。c、取得描述符(GetDescriptor())這個請求返回存在的描述符。這個標準請求包括三種描述符:設備、配置、及字符串。一個配置描述符的設備請求會一次返回配置描述符,所有的接口描述符和所有接口的端節(jié)點的描述符。第一個接口描述符緊跟著配置描述符,隨后是接口的端點的描述符。如果有其它的接口與端點,它們的描述符則跟在第一個接口與端點描述符之后。與類有關的描述符,或Usb外設生產(chǎn)廠商定義的描述符跟在標準描述符之后。 所有的設備必須提供一個設備描述符并且至少一個配置描述符,如果一個設備不支持一個請求的描述符,則返回請求錯誤。 缺省狀態(tài):此請求合法。 地址狀態(tài):此請求合法。配置狀態(tài):此請求合法。d、取得接口設置(GetInterface()) 這個請求返回所指接口的選中的可選設置。 有些USB設備的接口配置有互斥的設置。這個請求使得主機決定當前設置。 如果值或長度不依上表設置,設備響應無定義。 如果所指的接口不存在,返回請求錯誤。 缺省狀態(tài):此狀態(tài)下,設備對該請求響應無定義。 地址狀態(tài):設備返回請求錯誤。 配置狀態(tài):此請求合法。e、取得狀態(tài)(GetStatus ( )) 這個請求返回所指接收者的狀態(tài)。 如果值或長度不是上表中值,或指針在讀取設備狀態(tài)請求時非0,則設備響應無定義。 缺省狀態(tài):設備響應無定義。 地址狀態(tài):如果所指的是接口或是一個非0號端點,設備響應返回請求出錯。 配置狀態(tài):如果所指接口或端點不存在,返回請求錯誤。f、設置地址(SetAddress ( )) 本請求為主機指定以后與設備通信的地址。如果所指的設備地址大于127或指針或者長度非零,設備響應無定義。設備對SetAddress(0)的響應無定義。 缺省狀態(tài):如果地址值非0,那設備將進入地址狀態(tài),否則地址仍留在缺省態(tài)(此非出錯狀態(tài))。 地址狀態(tài):如果新地址值為0,進入缺省態(tài),否則仍留在地址狀態(tài)但使用新地址。配置狀態(tài):在此狀態(tài)下設備對此請求的響應無定義。g、設置配置值(SetConfiguration( )) 此請求設置設備配置值 值的低字節(jié)指出配置,這個配置值必須為0或與配置描述符中的一個配置相一致。如果配置值為0,設備置地址狀態(tài)。值的高字節(jié)保留。 如果指針,長度或者值的高字節(jié)非0,則設備對之的響應無定義。 缺省狀態(tài):設備響應無定義 地址狀態(tài):如果所指的配置為0,設備停留在地址狀態(tài)。如果所指的配置與描述符中的一個值相匹配,那個配置就被選中,設備轉到配置有。否則,返回請求錯誤 配置狀態(tài):如果配置值為0,設備進入地址狀態(tài)。如果配置值非0并與描述符中的一個配置相匹配則設備仍留在配置態(tài),但采用新的配置值,否則返回請求錯誤。h、設置描述符(SetDescriptor ( )) 此請求用于更新或添加新的描述符。 值域高字節(jié)指出了描述符的類型,低字節(jié)指出了描述符索引。指針域指出了字符串描述符的語言標識,對于其它描述符來說它為0。長度域指出從主機傳向設備的字節(jié)數(shù)。 如果設備不支持該請求則設備返回一個請求錯誤。 缺省狀態(tài):此狀態(tài)下設備對該請求反應無定義。 地址狀態(tài):如果設備支持請求,則為合法。 配置狀態(tài):如果設備支持請求,則為合法。i、設置特性(SetFeature ( )) 這個請求用來設置或使一個特性生效。 SetFeature ( )請求如果指出一個不存在的特性會使得設備在交換狀態(tài)階段返回STALL信號。 如果SetFeature ( )指的是一個不存在的接口或端點,設備返回一個請求錯誤。 缺省狀態(tài):設備響應無定義。 地址狀態(tài):合法、除非請求錯誤。 配置狀態(tài):合法。j、設置接口(SetInterface ( )) 此請求讓主機為指定的接口選擇一個設置。 如有USB設備接口配置中有互斥設置。此請求讓主機選擇所要的設置。如果設備的接口只支持缺省設置,在狀態(tài)交換階段設備返回STALL 如果所指接口或設置不存在,設備返回請求錯誤。 缺省狀態(tài):設備響應無定義。 地址狀態(tài):設備返回請求錯誤。 配置狀態(tài):合法。k、同步幀(SynchFrame ( )) 該請求用來設置或返回一個結點的同步幀。 如果所指的端點不支持此請求,設備返回一個請求錯誤。 缺省狀態(tài):設備響應無定義。 地址地址:設備返回請求錯誤。配置狀態(tài):此請求合法。除了11種標準請求外,USB允許類和供應商也定義他們自己的請求,這里就不在贅述了。第三章 USB驅動程序的開發(fā) 設備驅動是保證應用程序訪問硬件設備的軟件組件。硬件設備可能是打印機,調制解調器,鍵盤,視頻顯示器或者任何連接到計算機的電子電路。設備可能在計算機內部,或者是使用電纜連接到計算機上。設備可以是標準類型,也可以不是,也包括自定義的設備。 一個設備驅動使得應用程序不必知道物理連接,信號和與一個設備通信需要的協(xié)議等細節(jié)。應用程序是用戶運行的程序,包括支持自定義硬件的特殊用途的應用程序。設備驅動可以保證應用程序代碼只通過外設名字(如Legend Keyboard)訪問外設或者端口目的地。應用程序不需要知道外設連接端口的物理地址,不需要精確監(jiān)視和控制外設需要的交換信號。 設備驅動通過在應用層和硬件專用代碼之間的轉化來完成它的任務。167。 驅動程序與USB設備的通訊USB設備的選擇很多外設符合標準類,例如硬盤,光驅,打印機,鍵盤和鼠標。對于這些外設,Windows包括通用驅動,這個類中的設備都可以使用。如果設備具有獨特的功能,則供應商會提供一個稱為minidriver的附加驅動,對通用驅動加以補充。 一些外設提供接口選擇,選項中可能包括Usb。一個鍵盤可以使用原始的接口,也可以是Usb接口。在這種情況下,minidriver可以在通用驅動和設備使用的接口之間通信。Windows為Hid(Human Interface Device)類提供了minidriver,包括鍵盤和鼠標。對于其他設備,Windows不支持Usb接口,因此,產(chǎn)品供應商必須提供完整的驅動程序。USB驅動的Win32驅動模式 Windows的Usb設備驅動必須遵循微軟在Win98和更新的版本中為用戶定義的Win32驅動模式。這些驅動以WDM(Windows Driver Model)為主,擴展名為sys。像其他低級驅動一樣,WDM驅動不能驅動應用程序,因為它和操作系統(tǒng)以更高的優(yōu)先級通信。WDM驅動可以允許或拒絕應用程序訪問設備。USB的驅動層分層驅動 USB通信使用分層驅動模型,每層處理一部分通信過程。把通信分成層是有效的,因為這樣可以使不同的設備在一些任務上使用相同的驅動。舉個例子,所有設備都連接到USB上,因此有一套可以被所有設備訪問的,包括操作系統(tǒng)中的,用來處理USB專用通信的驅動使明智的。也可以選擇使得每個設備驅動直接與USB硬件通信,這樣就會出現(xiàn)很多重復的勞動。 Windows中管理與設備通信的部分使I/O子系統(tǒng)。子系統(tǒng)有幾個層,每個層包含一個或多個處理一套相關任務的驅動。系統(tǒng)或者設備請求按一定的順序從一個層轉到相鄰層。在I/O子系統(tǒng)中的一個重要要素使USB子系統(tǒng),包括處理所有設備的USB專門通信的驅動。 這個驅動使用的協(xié)議組被稱為一個堆棧,我們可以把它看成層是一個疊著一個堆起來的,通信是按順序從上到下通過這個堆棧。一般設備通信是通過IRP(IO請求包)來完成的。IRP是一個內核“對象”,它是一個預先定義的結構,帶有一組對它進行操作的IO管理器函數(shù)。IO管理器接受到一個IO請求,即IRP,先初始化,然后把它傳遞到合適的驅動程序棧中的驅動程序。 一個IRP有一個固定的首部和可變數(shù)目的IRP棧單元塊。如圖3-1所示。每個IO請求有一個主功能代碼(如IRP_MJ_CREATE對應于文件的打開)并可能有次功能代碼。例如IRP_MJ_PNP即插即用IRP有幾個次功能(如IRP_MN_START_DEVICE)。表3-1列出了常用的主功能代碼。 表3-1 常用的IRP主功能代碼IRP_MJ_CREATE創(chuàng)建或打開設備文件IRP_MJ_CLOSE關閉文件IRP_MJ_WRITE寫文件IRP_MJ_READ讀文件IRP_MJ_CLEANUP取消文件句柄上的任何等待的IRPIRP_MJ_DEVICE_CONTROL設備IO控制IRP_MJ_POWER電源管理請求IRP_MJ_PNP即插即用消息IRP_MJ_SHUTDOWN關閉通知 IRP的固定部分含有IRP的固定屬性,每個棧單元(一個IO_STACK_LOCATION)事實上含有大多數(shù)有關的IRP參數(shù)。當一個IRP由多個驅動程序處理時,使用多個IRP棧單元。每個驅動程序從當前IRP棧單元得到它的IRP參數(shù)。如果把一個IRP沿當前設備的驅動程序向下傳遞,必須使用正確的參數(shù)設置下一個棧單元。向下傳遞的參數(shù)必須與正在處理的參數(shù)不同。IRP首部 當一個寫IO請求轉換成一個IRP時,IO管理器填寫IO_STACK_LOCATION主要的IRP首部,并構造第一個棧單元。對于寫,IRP首部IO_STACK_LOCATION含有用戶緩沖區(qū)信息。如果使當前棧單元用緩沖IO,IRP的Associated指向用戶緩沖區(qū)的非分頁副本IO_STACK_LOCATION的指針:對于直接IO,IRP的MdlAddress域有一個指向用戶緩沖區(qū)MDL的指針。圖3-1 IRP概貌 IRP棧單元含有主要的寫參數(shù)。棧單元的MajorFunction域含有主功能代碼IRP_MJ_WRITE,指明請求一次寫。前面已經(jīng)說過,如果調用另一個驅動程序,必須建立下一個棧單元。這意味在理論上可以把IRP主功能代碼改成別的功能代碼。一般我們不這么做。在處理大的傳輸上,必須把這個IRP向下發(fā)送幾次,每個驅動程序完成不同的功能。在驅動程序棧中處理IRP 在實際的操作中,IO棧單元通常不用于更改這些基本的IRP參數(shù),IRP棧單元通常用于允許一個IRP被設備棧中的所有驅動程序處理。 圖3-2說明一個IRP如何被設備棧中的四個驅動程序處理。第一個IRP到達最高層的驅動程序1,它使用函數(shù)IoGetCurrentIrpStackLocation()獲得指向當前棧單元的指針。這個圖說明它返回最上層的IRP棧單元。 驅動程序1決定它需要把這個IRP沿著設備棧向下傳遞處理。這個IRP可能是最低層驅動程序需要看到的“電源管理”IRP。驅動程序1對這個IRP可能什么都不做,但它仍需要向下傳遞這個IRP。 所以驅動程序1為下一個驅動程序設置棧單元。在許多情況下,它只是使用IoCopyCurrentIrpStackLoationToNext()或者IoSkipCurrentStackLoation()函數(shù)把當前棧單元復制到下一個棧單元。如果需要更改下一個棧單元,則使用IoGetNextIrpStackLocation()得到指向這個棧單元的指針,然后對這個指針進行操作,既可以進行更改。(這里所說的函數(shù)說明可以查Msdn2001年8月版) 然后驅動程序1使用IoCallDriver()函數(shù)調用下一個驅動程序,IO管理器更改“當前IRP棧單元“指針,所以驅動程序2看到向下的第二個IRP棧單元,這個過程繼續(xù),直到最低層的驅動程序4受到這個IRP。驅動
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1