ECBACK.SYS

來源:互聯網
上載者:User

ECBACK.SYS

 

     最近工廠PE端需要一堆測試程式,這些程式主要是用於測試EC的各種功能如:測試風扇,測試電池,測試鍵盤等等。而且要求通吃vista,xp,winpe。我起初建議使用wmi acpi實現,可是發現wmi acpi在winpe下無法工作。迫於無奈只有實現一個IO port的driver,然後AP透過EC的back door 存取EC XRAM&REG,只有這個方法才能通吃三個平台了.

     IO port driver是非常簡單的driver了,winio就是一隻這種類型的driver。winio是通過修改IOPM開啟應用程式IO RW許可權的,我寫的這個ECBACK.sys則是使用DDK的API讀寫IO實現的。我參考了winio 載入 driver 部分的代碼,所以我將ECBACK.sys kernel mode & user mode source code開放在這裡下載。解壓後會三個檔案夾其中sys中是 ECBACK.sys的source code,lib是我匯出的user mode api 一共包含四個函數:

 

#ifndef           __ECBACKAPI_H__

#define           __ECBACKAPI_H__

 

BOOL   Install_ECBackDrv(void);

 

BOOL   Uninstall_ECBACKDrv(void);

 

void   Write_EC_UCHAR(IN UCHAR port_base,IN UCHAR add_H,IN UCHAR add_L,IN UCHAR data);

 

UCHAR  Read_EC_UCHAR(IN UCHAR port_base, IN UCHAR add_H,UCHAR add_L);

#endif

Install_ECBackDrv通過建立service的方式載入driver,這樣AP才可以和driver溝通。讀寫io port部分也被封裝到了Write_EC_UCHAR & Read_EC_UCHAR中了,user不用再去調用DeviceIoControl再往下送IRP了。使用完之後需要調用Uninstall_ECBACKDrv,該函數會將Install_ECBackDrv建立的service移除掉。檔案夾 ECBDTest是我寫的一個測試程式用於示範如何使用lib檔案夾中匯出的函數。這些部分實現了以後其他組寫測試程式只需要按照sample code寫法實現就好了,我解放了J!

 

That’s all!

 

Peter

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.