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

正文內(nèi)容

wince下的usb設(shè)備(留存版)

  

【正文】 有緩沖區(qū)及長(zhǎng)度的一個(gè)結(jié)構(gòu)體,是CE下磁盤(pán)設(shè)備通用的讀寫(xiě)數(shù)據(jù)結(jié)構(gòu)。這樣的實(shí)現(xiàn),也就是說(shuō)用戶無(wú)法通過(guò)常規(guī)的ReadFile和WriteFile函數(shù)使用這個(gè)設(shè)備,那怎么辦?是否意味著這個(gè)DISK無(wú)法讀寫(xiě)呢?當(dāng)然不是,我們應(yīng)該馬上想到DSK_IOControl()這個(gè)函數(shù),當(dāng)遇到某些設(shè)備無(wú)法用常規(guī)的文件操作函數(shù)操作時(shí),我們有DeviceIoControl()用戶函數(shù)可以使用,而這個(gè)函數(shù)就會(huì)調(diào)用到驅(qū)動(dòng)程序中的DSK_IOControl函數(shù)。我們先看USB/CLASS/STORAGE/DISK/SCSI2/。 當(dāng)發(fā)現(xiàn)設(shè)備符合此驅(qū)動(dòng)程序的要求后,就通過(guò)函數(shù)ParseUsbDescriptors()來(lái)解析這個(gè)設(shè)備,這個(gè)函數(shù)在下面的程序中將被實(shí)現(xiàn),我們可以看一下該函數(shù)的函數(shù)體,很顯然,它是在為設(shè)備進(jìn)行各種配置,這就不多說(shuō)它了。 DllEntry入口函數(shù)的下面,就是USBInstallDriver()這個(gè)函數(shù)了,它的作用是進(jìn)行與USB設(shè)備相關(guān)的注冊(cè)表操作,主要的語(yǔ)句是:bRc = RegisterClientDriverID( wsUsbDeviceID )。再向下的命令塊結(jié)構(gòu)體和數(shù)據(jù)塊結(jié)構(gòu)體是用來(lái)與USB設(shè)備通訊用的,可以通過(guò)這兩個(gè)結(jié)構(gòu)體的實(shí)例與USB設(shè)備傳輸數(shù)據(jù)。 BOOL Removed。 usbclienttypedef struct _USB_FUNCS const * LPCUSB_FUNCS。該結(jié)構(gòu)體中對(duì)供應(yīng)商描述、設(shè)備描述和Interface的描述是用來(lái)匹配注冊(cè)表中對(duì)USB設(shè)備驅(qū)動(dòng)的注冊(cè)表鍵,當(dāng)設(shè)備管理器發(fā)現(xiàn)你設(shè)備的這些值與注冊(cè)表中的這些值相符時(shí),就會(huì)加載你的驅(qū)動(dòng)。CLIENTS文件夾可能最初微軟的開(kāi)發(fā)人員是用來(lái)放置設(shè)備驅(qū)動(dòng)程序的,但是后來(lái)沒(méi)有放,而發(fā)布的時(shí)候也沒(méi)有刪除,所以遺留了下來(lái),里面是個(gè)空的文件夾,所以沒(méi)用實(shí)際用處。 重點(diǎn)就在CLASS文件夾了,展開(kāi)來(lái)看,里面又包含了COMMON、HID、PRINTER、STORAGE幾個(gè)文件夾,同樣,COMMON里面存放的源程序是為HID、PRINTER、STORAGE所共有的。是不是忒簡(jiǎn)單,沒(méi)錯(cuò),總不能剛開(kāi)始就把自己嚇得不行,那樣后面可就沒(méi)法做了。 remlock ,這個(gè)頭文件是要按照自己的需要和USB設(shè)備來(lái)進(jìn)行修改的,比如DRIVER_NAME_SZ是驅(qū)動(dòng)程序的名字,RESET_TIMEOUT 是一個(gè)超時(shí)的默認(rèn)值。注意,這里讀取到的注冊(cè)表信息是Drivers//USB//ClientDrivers//Mass_Storage_Class和bInterfaceSubClass變量組合成的注冊(cè)表鍵下的值,具體可參閱源程序,這個(gè)注冊(cè)表鍵下放置的內(nèi)容是[HKEY_LOCAL_MACHINE/Drivers/USB/ClientDrivers/Mass_Storage_Class/6]DLL=Prefix=DSKFolder=USB DiskIOCTL=dword:4IClass={A4E7EDDAE57542529D6B4195D48BB865}由此可以看出,通過(guò)此處的注冊(cè)表讀取,驅(qū)動(dòng)程序可以知道這個(gè)設(shè)備將通過(guò)哪種形式以及哪個(gè)DLL向操作系統(tǒng)提供接口。 為了清晰起見(jiàn),以下大量的程序我們并不學(xué)習(xí),而只關(guān)心設(shè)備讀寫(xiě)。 通過(guò)這一過(guò)程我們發(fā)現(xiàn),那些Scsi的函數(shù)都只是在準(zhǔn)備一些緩沖區(qū)、數(shù)據(jù)結(jié)構(gòu)等,并沒(méi)有對(duì)硬件進(jìn)行操作,真正要操作硬件設(shè)備的還是由驅(qū)動(dòng)程序來(lái)完成的,可見(jiàn),設(shè)備驅(qū)動(dòng)程序是有著很強(qiáng)層次結(jié)構(gòu)的,下層是專門(mén)針對(duì)物理設(shè)備的,上層是針對(duì)操作系統(tǒng)的抽象設(shè)備的,下層是U盤(pán)等物理實(shí)體,上層是文件夾,二者通過(guò)一定的通信或調(diào)用機(jī)制完成了設(shè)備在操作系統(tǒng)下的正常工作。UNREFERENCED_PARAMETER(pBuffer)。操作系統(tǒng)就會(huì)按該文件中的程序以一個(gè)磁盤(pán)的形式或文件夾的形式進(jìn)行處理,通過(guò)文件系統(tǒng)的操作,就可以對(duì)其進(jìn)行讀寫(xiě)控制了。 好了,對(duì)這兩個(gè)頭文件有所了解以后,我們就進(jìn)入最關(guān)鍵的部分,源程序。同時(shí)在系統(tǒng)注冊(cè)表中也會(huì)利用這兩個(gè)值修改注冊(cè)表的鍵以便設(shè)備管理器可以順利的找到我的設(shè)備驅(qū)動(dòng)。 又說(shuō)了這么多東西,雖然沒(méi)有看多少程序,但我們又離驅(qū)動(dòng)程序近了一層,至少知道了很多函數(shù)是要在驅(qū)動(dòng)程序中用到的,如果有興趣,可以具體閱讀每一個(gè)函數(shù)的實(shí)現(xiàn)方法
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1