設備驅動程序開發(fā)_第1頁
設備驅動程序開發(fā)_第2頁
設備驅動程序開發(fā)_第3頁
設備驅動程序開發(fā)_第4頁
設備驅動程序開發(fā)_第5頁
已閱讀5頁,還剩77頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

嵌入式軟件開發(fā)導論同濟大學軟件學院20057.設備驅動程序開發(fā)主要內容概述流驅動接口設備驅動程序架構USBmouse驅動開發(fā)示例WindowsCE系統(tǒng)服務什么是設備驅動程序設備驅動程序是與硬件設備進行通信的系統(tǒng)程序。一個設備可以是物理設備,也可以是一個邏輯實體。通常,這些實體需要操作系統(tǒng)對其進行控制,資源管理。設備驅動程序就是管理這些物理設備或者虛擬設備,協(xié)議或者系統(tǒng)服務的軟件模塊。

對于每一個基于WindowsCE的設備,設備驅動程序都是必不可少。--譯自MSDN“一般”驅動程序開發(fā)的理解必須使用匯編語言對端口進行讀寫設備驅動程序是操作系統(tǒng)的一部分,難于開發(fā)與調試。設備驅動程序控制硬件中斷比較難于處理必須使用匯編語言讀寫端口CEDDK.dll提供APIs與硬件進行通信HalGetBusDataREAD_PORT_UCHARWRITE_REGISTER_ULONG對于邏輯設備驅動程序,采用Win32APIs從硬件獲取數據設備驅動程序是操作系統(tǒng)的一部分,難于開發(fā)與調試對于UNIX或者是Windows9x,設備驅動程序是與操作系統(tǒng)映像連接的,并運行于系統(tǒng)內核態(tài)。對于windowsCE,大多數的設備驅動程序運行于用戶態(tài),簡單的來說就是一個DLL文件。設備驅動程序控制硬件大多數的設備驅動程序用來控制硬件。對于某些硬件,是沒有驅動的。CPU內存對于虛擬設備驅動程序,沒有物理設備。文件系統(tǒng)驅動程序RAMdisk中斷有時難于處理WindowsCE提供邏輯中斷(SYSINTRs)中斷由一個用戶態(tài)的線程進行處理(IST)為什么應當寫驅動程序?當我們設計硬件時,就需要提供這一硬件的驅動軟件。硬件OEM廠商不提供基于WindowsCE的硬件驅動,但是提供硬件的規(guī)格說明。對于一個現有硬件驅動的功能進行擴展。驅動分類—整體

WindowsCE整體上將設備驅動分為三種:內置驅動總線流接口內置驅動硬件所必須的的驅動程序,,這些驅動程程序通常由設設計OEM廠商進行設計計。如:鍵盤,觸摸屏屏,音頻設備備。可能不支持一一般的驅動接接口,也有可可能帶有擴展展的接口或者者完全提供一一個用戶自定定義的接口。。內置驅動通常常需要針對具具體的操作系系統(tǒng)進行小幅幅改動??偩€驅動管理系統(tǒng)總總線如PCI總線等。PCMCIA與CompactFlash也在其列。。負責處理總總線上硬件件的詢問,,以及資源源的分配。。同時也請求求設備管理理器為總線線上的硬件件安裝適當當驅動程序序。驅動分類–詳細AudioDriversBatteryDriversBlockDriversBluetoothHCITransportDriverDirect3DDeviceDriverInterfaceDirectDrawDisplayDriversDisplayDriversDVD-VideoRendererIEEE1394DriversKeyboardDriversNotificationLEDDriversParallelPortDriversPCCardDriversPrinterDriversSerialPortDriversSmartCardDriversStreamInterfaceDriversTouchScreenDriversUSBDrivers參見文檔:DriverDevelopment->DriverCategories驅動的加載載過程大多數的設設備驅動由由設備管理理器(Device.exe)進程在系統(tǒng)統(tǒng)啟動時進進行加載。。另一方面,,其中一部部分內置驅驅動程序由由GWES.exe進行加載。。這些驅動動包括顯示示器驅動(DDI.dll)、鍵盤驅動、、鼠標驅動動、觸摸屏屏驅動等。。驅動的加載載過程當Device.exe對設備驅動動程序進行行安裝時將將在注冊表表的[HKEY_LOCAL_MACHINE]\Drivers項下檢查一一個字符串串,其值為為RootKey,傳統(tǒng)地,,其名字為為BuiltIn。然后設備管管理器在進進行初始化化時使用注注冊信息檢檢查器為它它需要安裝裝的各個驅驅動讀取值值為RootKey的鍵。驅動的加載載過程驅動的加載載過程安裝DLL,給每一個驅驅動創(chuàng)建一一個Active鍵,然后調調用ActivateDevice或者ActivateDeviceEx將DLL注冊為系統(tǒng)統(tǒng)中的一個個設備驅動動程序。ActivateDevice在[HKEY_LOCAL_MACHINE\Drivers\Active下創(chuàng)建一個個新的鍵值值。驅動的加載載過程驅動加載API設備驅動程程序也能通通過應用程程序進行手手動的安裝裝,這是ActivateDeviceEx的一個首選選的功能。。安裝驅動一一個更老的的方法是使使用RegisterDevice與DeregisterDevice主要內容概述流驅動接口口設備驅動程程序架構USBmouse驅動開發(fā)示示例WindowsCE系統(tǒng)服務什么是流接接口流接口驅動動包括所有有提供流接接口函數的的驅動程序序,不管由由這個驅動動控制的設設備是什么么類型。典型的流接接口驅動程程序有:文件系統(tǒng)驅驅動(iostream,fstream)COM,LPT使用流接接口hSer=CreateFile(TEXT(“COM1:”),GENERIC_READ,0,NULL,OPEN_EXSITING,0,NULL);rc=ReadFile(hSer,&ch,1,&cBytes,NULL);TransmitCommChar(hSer,‘a’);CloseHandle(hSer);直接使用用Win32文件系統(tǒng)統(tǒng)API。。創(chuàng)建一個個流驅動動程序寫一個導導出具體體流接口口的DLL編譯設備備驅動程程序對注冊表表進行配配置流接口函函數函數名說明XXX_Close關閉以hOpenContext標識的設備上下文。XXX_Deinit由設備管理器調用來刪除對某一設備的初始化信息。XXX_Init由設備管理器調用來對某一設備進行初始化。XXX_IOControl向設備發(fā)送命令XXX_Open打開一個設備以進行讀、寫或者既讀又寫。當應用調用CreateFile來打開某一個設備文件名時將間接地調用這一個函數。XXX_PowerDown停止向設備供電。只有在軟件控制下關機的設備上才可用。XXX_PowerUp恢復向設備供電XXX_Read從設備讀取數據XXX_Seek在設備中移動數據指針XXX_Write向設備寫數據構建設備備驅動程程序構建設備備驅動程程序與構構建一個個DLL一樣簡單單??梢允褂糜肞latformBuilder與EVC++。只需創(chuàng)建建一個WindowsCEDLL項目,輸出適當當的入入口點,,然后編編寫代碼碼。常犯的一一個錯誤誤是沒有有將入口口點聲明明為externC,因此C++編譯器就就不能處處理輸出出的函數數名。注冊表設設置在Project.reg中:[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Sample]"Dll"="mydriver.Dll""Prefix"="DEM""Index"=dword:1"Order"=dword:0"FriendlyName"="DemoDriver""Ioctl"=dword:0注冊表設設置Order給所有的的驅動設設置相對對安裝順順序。Order為0的驅驅動先安安裝,依依次安裝裝Order為1,2,…的的驅動。。Oder可以讓開開發(fā)者保保證有相相到依賴賴關系的的多個驅驅動以適適當的順順序進行行安裝。。Index指定在文文件系統(tǒng)統(tǒng)中的驅驅動名的的數字部部分。在在默認情情況下,,帶有前前綴COM的驅動在在文件系系統(tǒng)中分分配名字字為COM1,下一個即即為COM2。為了保證證驅動總總是安裝裝成COM2,必須提供供Index=2。。演示:使用emulator編寫一個個流接口口驅動程程序并使使用它驅動是如如何工作作的WhenCE啟動時,Device.exe根據注冊冊表中的的設置安安裝所有有的驅動動程序。。當安裝mydriver.dll時,device.exe調用DEM1_Init。。Application程序調用用CreateFile(“DEM1”…)驅動是如如何工作作的(2)Coredll.dll處理API調用并切切換到device.exeDevice.exe調用mydriver.dll的DEM1_Open。。CreateFile返回DEM1_Open的retval設備功能能棧硬件WindowsCEDDKAPI設備驅動動程序設備管理理器(device.exe)應用程序序主要內容容概述流驅動接接口設備驅動動程序架架構USBmouse驅動開發(fā)發(fā)示例WindowsCE系統(tǒng)服務務驅動架構構驅動的類類型內置與流流安裝機機制通常內置置驅動程程序根據據注冊鍵鍵值安裝裝在GWES進程空間間總線驅動動由Device.exe根據鍵值值進行安安裝可安裝的的流驅動動或其它它驅動由由Device.exe根據總線線驅動或或注冊檢檢查器進進行安裝裝。設備管理理器用戶級進進程繼續(xù)續(xù)運行與內核、、注冊表表交互的的單獨應應用程序序,以及及流接口口驅動DLL。。提供ActivateDevice與DeactivateDeviceAPI。設備管理理器包括IO資源管理理器安裝注冊冊表檢查查器(RegEnum.dll),并由這一一個注冊冊表檢查查器根據據注冊表表進行驅驅動的安安裝提供電源源通知回回調函數數跟蹤所有有已安裝裝的驅動動程序,,給設備備接口發(fā)發(fā)出拉入入或刪除除的通知知設備管理理器設備驅動動程序的的安裝過過程DEVICE.EXEKernelI/OResourceManager(partofDevice.exe)REGENUM.DLLPCIBUS.DLLloadsloadsloadsDEVICE.EXEI/OResourceManager(partofDevice.exe)REGENUM.DLLPCIBUS.DLL注冊表枚枚舉器注冊枚舉舉器是RegEnum.dllDevice.exe根據HKEY_LOCAL_MACHINE\Drivers\RootKey安裝注冊冊枚舉器器注冊枚舉舉器給每每一個要要安裝的的驅動程程序掃描描表項注冊枚舉舉器是可可重入的的,并支支持分級級使用當注冊枚枚舉器卸卸載時,,同時也也御載它它安裝的的所有信信息注冊枚舉舉器根據據Order,檢查緊挨挨著傳給給它的鍵鍵的下一一級鍵值值。注冊枚舉舉器對每每一個找找到的子子鍵調用用ActivateDeviceExActivateDeviceEx由Device.exe提供總線驅動動程序當當安裝設設備驅動動時調用用ActivateDeviceExActivateDeviceEx也在RAM工作區(qū)鎖鎖定流接接口驅動動程序這可以防防止代碼碼頁被丟丟棄注冊檢查查器對找找到的每每一個內內置子鍵鍵調用ActivateDeviceExActivateDeviceEx安裝驅動動并更新新注冊表表接口類驅動程序序的接口口有以下下特征每一個Iclass有一個GUID,一個名字字GUID描述類設設備接口口Name描述接口口的實例例COM1:,DSK1:等等提供一個個驅動接接口在注冊表表中的Iclass子鍵驅動程序序發(fā)布接接口–AdvertiseInterface應用程序序訪問接接口–RequestDeviceNotifications每個已有有的接口口的預定定義GUIDA32942B7-920C-486b-B0E6-92A702A99B35I/O資源管理理(IORM)IORM是設備管管理器必必備的部部分跟蹤可用用I/O資源(IRQ與I/O基地址)OEM為內置設設備預分分配的資資源當在總線上上安裝一個個客戶驅動動時,總線線驅動請求求資源ResourceReleaseResourceRequestResourceCreateList當存在沖突突時IORM調用ResourceRequest失敗注冊表幫助助例程從注冊表中中讀取資源源初始化信信息OpenDeviceKeyDDKReg_GetIsrInfoDDKReg_GetWindowInfoDDKReg_GetPciInfo在COREDLL的API在<devload.h>and<ddkreg.h>的函數原型型在public\common\oak\drivers中的例子wavedev\pdd\es1371\wavepdd.cpp->GetRegistryConfig電源管理電源管理器器靈活的系統(tǒng)統(tǒng)級與外設設級電源管管理使設備智能能化地管理理它們的電電源在設備與系系統(tǒng)或應用用之間充當當協(xié)調者使OEM修改調用PowerOffSystem()的相關代碼碼電源管理系統(tǒng)級電源源狀態(tài)設備(外設設)級電源源狀態(tài)打開系統(tǒng)空閑用戶空閑掛起D0全供電D3睡眠D1降級模式D4關閉D2備用模式電源管理器器架構驅動電源管理器器(pm.dll)PMAPIs應用程序通知消息隊隊列驅動APIs應用API物理內存64MB

RAM32MB

FlashDbgSerialPort2GBUser512MB

Uncached512MB

Cached64MBRAM32MBFlash64MBRAM32MBFlash物理內存內核虛擬地地址Reserved04000000820000008000000080000000A0000000C00000000NotUsedSlot0Slot3264KB32MB64MB2GB3GB4GBMemorymappedfilesAbove2G-3GMappedtophysicalmemoryVirtualaddressspaceSlot1Slot32NULLpointers虛擬地址空空間512MCached

512MNon-Cached

0x800000000xA0000000AccessableviaMmMapiIoSpace內存管理函函數設備驅動程程序是用戶戶態(tài)模塊必須將物理理內存映射射成虛擬內內存VirtualAlloc,VirtualFree:預留,釋放放虛擬內存存MEM_RESERVEVirtualCopy:將一個物理理內存區(qū)域域映射到一一個虛擬內內存區(qū)域PAGE_NOCACHEPAGE_PHYSICAL驅動的內存存訪問與映映射MapPtrToProcess將一個地址址空間的指指針映射成成另外一個個指針GetCurrentProcess/SetProcPermissions重新找回進進程ID用于MapPtrToProcess函數MmMapIoSpace將一個物理理地址空間間映射成一一個不分頁頁的,由進進程決定的的地址空間間CEDDKCEv2.1x以及后來的的版本支持持獨立于平平臺的I/O配置讓OEM以及驅動開開發(fā)人員使使用它們CEDDK.DLL總線管理內存管理I/O管理從NTDDK拿來的CEDDKAPI直到V2.12以后的版本本才有文檔檔但在大多數數V2.00版中都有CEDDK簡介設備驅動使使用CEDDK正常開發(fā)的的驅動是跨跨平臺二進進制兼容的的跨CPU的源代碼兼兼容設備管理器器設備驅動CEDDK.DLL硬件CEDDK內容部分函示例總線管理HalGetBusDataByOffset()HalGetBusData()HalSetBusDataByOffset()HalSetBusData()HalTranslateBusAddress()HalTranslateSystemAddress()內存管理MmMapIOSpace–MmUnmapIOSpaceHalAllocateCommonBufferI/O存取

XXXX=>UCHAR/USHORT/ULONGREAD_REGISTER_XXXXWRITE_REGISTER_XXXXREAD_PORT_XXXXWRITE_PORT_XXXX中斷架構中斷只是異異常處理的的一部分在內核代碼碼中被獲取取在恢復到用用戶態(tài)之間間進行處理理但是硬件是是獨立于操操作系統(tǒng)的的CE使用二階段段中斷服務務模式少量的代碼碼進行中斷斷的記錄調度中斷服服務程序代代碼進行處處理操作系統(tǒng)提提供API來使能IRQ信號,設置置中斷的優(yōu)優(yōu)先級,等等等。與硬件有關關的操作在在OAL,以及設備驅驅動代碼中中進行。關于ISR與IST的一些解解釋IST是老的用戶戶模式代碼碼有完整的CE.NETAPI與CRT庫CE.NET調度程序根根據線程的的優(yōu)先級控控制IST的執(zhí)行運行態(tài)綁定定到SYSINTR從異常處理理函數調用用ISR沒有操作系系統(tǒng)服務堆??臻g大大小有限可設置為可可重入的(在OAL進行設置)MIPS,SHx匯編語言ISRIRQ優(yōu)先級的設設定依賴于于不同CPU的系統(tǒng)架構構在x86上由PIC硬件進行設設置在MIPS上用OAL的IntrPriority,IntrMask進行設置通過讓IST進程推斷ISR服務,OAL能夠增加實實時性。在CE3.0中,所有的的ISR代碼都是OAL的一部分沒有特殊的的擴展IRQ綁定到OEMInit的事件ID沒有支持PNP,共享IRQ(PCI總線)CE.NET通過IRS(IISR)鏈解決了這這些限制。。CE.NET可安裝ISRCE3.0ISR架構的首選選擴展DLL代碼,在運行時進進行綁定源代碼可以以是獨立于于CPU的一般用C編寫有一些限制制不能調用CRT,WindowsAPI,或其它的DLL不可推斷的的ISR,或IST發(fā)布支持硬件共共IRQ共享從同一個IRQ關聯的不同同SYSINTRIDIISRCE.NET中斷處理內核OAL驅動硬件設置事件無中斷異常處函數ISR更高優(yōu)先級的中斷PSRSYSINTR_ID被屏蔽的IRQSYSINTR_xxSYSINTR_NOPISTIISR1NKCallIntChain(IRQ)IISRnSYSINTR_CHAINIISR2中斷服務線線程是內置設備備的驅動程程序的作戶戶態(tài)線程進行實際的的中斷處理理調用CreateEvent創(chuàng)建一個與與邏輯中斷斷相關聯的的事件對象象IST在大多數時時間里都是是處于空閑閑狀態(tài),以以內核用信信號通知事事件對象時時被喚醒IST通常運行的的優(yōu)先級高高于普通優(yōu)優(yōu)先級,其其優(yōu)先級由由CeSetThreadPriority函數設定中斷服務線線程InterruptInitialize調用InterruptInitialize將事件與ISR的中斷標識識符關聯起起來WaitForSingleObject用來等待一一個用信號號通知的事事件這一調用通通常放在一一個循環(huán)中中,以使和和中斷處理理時,IST可以回到這這一個調用用等待下一一個要處理理的中斷InterruptDone中斷數據處處理完以后后,IST必須調用InterruptDone函數使內核使能能與這一個個線程相關關的中斷典型的IST啟動structISTData//DeclaretheStrucuretopasstotheIST{HANDLEhThread;//ISTHandleDWORDsysIntr;//LogicalIDHANDLEhEvent;//handletotheeventtowaitforinterruptvolatileBOOLabort;//flagtotesttoexittheIST};ISTDatag_KeypadISTData;//CreateeventtolinktoISTg_KeypadISTData.hEvent=CreateEvent(NULL,FALSE,FALSE,NULL);//TranslateIRQtoanlogicalID(x86CEPC)g_KeypadISTData.sysIntr=Mapirq2Sysintr(5);//startthethreadg_KeypadISTData.hThread=CreateThread(NULL,0,&KeypadIST,&g_KeypadISTData,0,NULL);典型的IST啟動//ChangethethreadspriorityCeSetThreadPriority(g_KeypadISTData.hThread,0);//disconnectanypreviouseventfromlogicalIDInterruptDisable(g_KeypadISTData.sysIntr);//ConnectLogicalIDwithEventInterruptInitialize(g_KeypadISTData.sysIntr,g_KeypadISTData.hEvent,NULL,0);設置IST的優(yōu)先級與以前的事事件斷開與ISR關聯典型的IST啟動DWORDKeypadIST(void*dat){ISTData*pData=(ISTData*)dat;//loopuntiltoldtostopWhile(!pData->abort){//waitfortheinterruptevent...WaitForSingleObject(pData->hEvent,INFINITE)if(pData->abort)break;//Handletheinterrupt...//LetOSknowtheinterruptprocessingisdoneInterruptDone(pData->sysIntr);}Return0;}典型的IST結束//setabortflagtotruetoletthreadknow//thatitshouldexitg_KeypadISTData.abort=TRUE;//disconnecteventfromlogicalID//thisinternallysetsg_KeypadISTData.sysIntrwhichinturn//setsg_KeypadISTData.hEventthroughthekernelInterruptDisable(g_KeypadISTData.sysIntr);//waitforthreadtoexitWaitForSingleObject(g_KeypadISTData.hEvent,INFINITE);CloseHandle(g_KeypadISTData.hEvent);CloseHandle(g_KeypadISTData.hThread);設置一個會會導致IST退出的標志志總線驅動概概覽PCMCIAI82365(ISA)TI-1250(PCI)USBHost多主控制器器OHCI與UHCI(PCI)PCMCIAHostPCMCIA總線驅動有有三個主要要的線程狀態(tài)改變線線程(卡的插入與與移除)中斷線程(處理卡的功功能性中斷斷請求)回調線程(通知事件相相關的設備備卡)總線驅動支支持CardServ消息的一個個子集,從從回調線程程中用回調調函數發(fā)送送中斷以回調調的形式發(fā)發(fā)送到客戶戶端驅動對新插入的的卡進行掃掃描以確定定是否PnP元組,并與與注冊表中中的相關項項進行比較較如果沒有發(fā)發(fā)現相匹配配的信息,,則候選的的驅動程序序就運行與與卡相關的的“detect”例程對卡進進行識別可能顯示出出一個對話話框詢問DLL的名字USBHost兼容USB1.1版完全支持OHCI與UHCI支持所有的的傳輸類型型Isoch,bulk,interrupt,controlUSBD支持多個HC的復用總線設備驅驅動典型地地采用LoadDriver進行安裝,,使用USBD操作與HC進行行通通信信總線線設設備備驅驅動動能能可可選選地地調調用用ActivateDeviceEx()以提提供供一一個個流流接接口口給給應應用用程程序序檢測測并并識識別別新新裝裝設設備備按照照注注冊冊表表中中的的描描述述安安裝裝驅驅動動可能能顯顯示示一一個個對對話話框框詢詢問問DLL的名名字字OEM硬件件單塊塊驅驅動動(顯示示)GWE子系系統(tǒng)統(tǒng)設備備管管理理器器MDDPDDMDDPDDDDIDDSIDDSI編程程模模型型USB總線線設設備備驅驅動動HCDUSBDMDDPDD主要要內內容容概述述流驅驅動動接接口口設備備驅驅動動程程序序架架構構USBmouse驅動動開開發(fā)發(fā)示示例例WindowsCE系統(tǒng)統(tǒng)服服務務USB驅動動傳傳輸輸類類型型控制制傳傳輸輸USB打印印機機,USB數碼碼相相機機同步步傳傳輸輸USB網絡絡電電話話中斷斷傳傳輸輸鼠標標,鍵盤盤,游戲戲控控制制器器批量量傳傳輸輸USB相機機必須須的的入入口口點點USBDeviceAttach當設設備備掛掛接接時時,,USB驅動動模模塊塊調調用用這這個個函函數數USBInstallDriver當一一個個不不明明設設備備掛掛接接到到USB上時時,,USB驅動動模模塊塊調調用用這這個個函函數數USBUnInstallDriver總線線設設備備驅驅動動能能調調用用這這個個函函數數從從USB驅動動注注消消USB鼠標標模模型型usbd.dllUSB鼠標驅動硬件應用演示示:USB鼠標標驅驅動動代代碼碼主要要內內容容概述述流驅驅動動接接口口設備備驅驅動動程程序序架架構構USBmouse驅動動開開發(fā)發(fā)示示例例WindowsCE系統(tǒng)統(tǒng)服服務務系統(tǒng)統(tǒng)服服務務的的概概念念與與歷歷史史在WindowsCE4.0以前前,沒沒有有系系統(tǒng)統(tǒng)服服務務所謂謂的的“設備備驅驅動動”被寫寫成成一一個個工工作作區(qū)區(qū)在WindowsCE4.0以后后,引引入入了了系系統(tǒng)統(tǒng)服服務務管管理理器器系統(tǒng)統(tǒng)服服務務注注冊冊系統(tǒng)統(tǒng)服服務務體體系系架架構構CE的系系統(tǒng)統(tǒng)服服務務是是一一個個DLL,,這個個DLL的構構建建幾幾乎乎與與流流設設備備驅驅動動一一模模一一樣樣與流流設設備備驅驅動動一一樣樣,,WindowsCE系統(tǒng)統(tǒng)服服務務提提供供同同樣樣的的10個個入入點點口口,,從從xxx_Init到xxx_PowerDown系統(tǒng)統(tǒng)服服務務有有三三個個前前綴綴字字符符系統(tǒng)統(tǒng)服服務務IOCTL命令令IOCTL_SERVICE_STARTIOCTL_SERVICE_STOPIOCTL_SERVICE_REFRESHIOCTL_SERVICE_INSTALLIOCTL_SERVICE_STATUSIOCTL_SERVICE_SUPPORTED_OPTIONS系統(tǒng)統(tǒng)服服務務的的應應用用控控制制ActivateServiceRegisterServiceGetServiceHandleServiceIoControlDeregisterService作業(yè)業(yè)讀Service.exe的在在線線幫幫助助,,自自已已實實現現關關于于WindowsCE的系系統(tǒng)統(tǒng)服服務務。。應用用程程序序發(fā)發(fā)送送I/O控制制命命令令,,然然后后服服務務例例程程將將當當前前時時間間寫寫到到日日志志文文件件9、靜夜夜四無無鄰,,荒居居舊業(yè)業(yè)貧。。。12月月-2212月月-22Tuesday,December20,202210、雨雨中中黃黃葉葉樹樹,,燈燈下下白白頭頭人人。。。。03:45:0903:45:0903:4512/20/20223:45:09AM11、以以我我獨獨沈沈久久,,愧愧君君相相見見頻頻。。。。12月月-2203:45:0903:45Dec-2220-Dec-2212、故故人人江江海海別別,,幾幾度度隔隔山山川川。。。。03:45:0903:45:0903:45Tuesday,December20,202213、乍見翻翻疑夢,,相悲各各問年。。。12月-2212月-2203:45:0903:45:09December20,202214、他鄉(xiāng)生生白發(fā),,舊國見見青山。。。20十十二月20223:45:09上午午03:45:0912月-2215、比不了了得就不不比,得得不到的的就不要要。。。十二月223:45上午午12月-2203:45December20,202216、行動出成果果,工作出財財富。。2022/12/203:45:0903:45:0920December202217、做前,能夠夠環(huán)視四周;;做時,你只只能或者最好好沿著以腳為為起點的射線線向前。。3:45:09上午3:45上上午03:45:0912月-229、沒沒有有失失敗敗,,只只有有暫暫時時停停止止成成功功??!。。12月月-2212月月-22Tuesday,December20,202210、很很多多事事情情努努力力了了未未必必有有結結果果,,但但是是不不努努力力卻卻什什么么改改變變也也沒沒有有。。。。03:45:0903:45:0903:4512/20/20223:45:09AM11、成成功功就就是是日日復復一一日日

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論