日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]????? TI針對(duì)(windows mobile 6.5)wince5.0、wince6.0平臺(tái)的BSP電源管理部分,重新實(shí)現(xiàn)了一套管理機(jī)制,驅(qū)動(dòng)名稱叫做pmext.dll,估計(jì)是為了和系統(tǒng)自帶的p

????? TI針對(duì)(windows mobile 6.5)wince5.0、wince6.0平臺(tái)的BSP電源管理部分,重新實(shí)現(xiàn)了一套管理機(jī)制,驅(qū)動(dòng)名稱叫做pmext.dll,估計(jì)是為了和系統(tǒng)自帶的pm.dll做區(qū)別,最終的作用就是在系統(tǒng)電源狀態(tài)發(fā)生變化的時(shí)候,調(diào)用自身MPU的電源管理寄存器(CORE,MPU,PER模塊等),進(jìn)行功耗降低。網(wǎng)上介紹這部分的內(nèi)容應(yīng)該是沒有的。

?????? 部分注冊(cè)表文件內(nèi)容如下:

;-- Power Management Extension -------------------------------------------------
; @CESYSGEN IF CE_MODULES_PM
; @CESYSGEN IF GWES_MGBASE
; @XIPREGION IF PACKAGE_OEMXIPKERNEL
; HIVE BOOT SECTION
IF BSP_NOPMEXT !
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPowerExtensionOmap]
??? "Dll"="pmext.dll"
??? "ConstraintRoot"="\OMAPPMX\Constraints"
??? "PowerPolicyRoot"="\OMAPPMX\Policies"


????? 如果你跟蹤代碼,發(fā)現(xiàn)跟蹤到如下系列的函數(shù)時(shí)候,就跟蹤不下去了,因?yàn)槟悴恢浪谀睦锉徽{(diào)用。

HANDLE PWRDOM_InitConstraint(_TCHAR const *szContext)

HANDLE PWRDOM_CreateConstraint(HANDLE hConstraintAdapter)

BOOL PWRDOM_UpdateConstraint(HANDLE hConstraintContext, DWORD msg, void *pParam, UINT? size)


????? 到底在哪里被調(diào)用?原來(lái)他既不是像普通的流驅(qū)動(dòng)那樣被device.exe加載調(diào)用,也不是像普通的函數(shù)那樣回調(diào),而是采用了一種類似進(jìn)程注入的方式來(lái)調(diào)用,具體在Constraintadapter.cpp的PostInitialize()函數(shù)中,通過類似下面的方式,獲取上面那些函數(shù)的API,注冊(cè)成為回調(diào)函數(shù):

????? m_fns.UpdateConstraint = reinterpret_cast


????? 這個(gè)驅(qū)動(dòng)Pmext.dll的實(shí)現(xiàn)文件就在cspomappmconstraintroot目錄下的Pmext.cpp中,但是它被調(diào)用的位置是在Omap3xxxbus.cpp,xxx代表和平臺(tái)相關(guān)的文件,比如Omap3430bus.cpp,Omap3530bus.cpp,等等。

?????? 也是用和上面差不多的方式來(lái)調(diào)用的,部分代碼如下:

#define?PME_INIT_NAME????????????????????(L"PMExt_Init")

typedef?DWORD?(*fnInit)(HKEY?hKey,?LPCTSTR?lpRegistryPath);
static?fnInit?pme_init;

HANLDE?s_hModule?=?::LoadLibrary(s_szDll);?//s_szDll就是dll的名字

pme_init?=?reinterpret_cast(::GetProcAddress(s_hModule,?PME_INIT_NAME));

(*pme_init)(HKEY_LOCAL_MACHINE,?s_szPmExtPath);



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉