亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 步驟.txt

?? 在大多2440開發板BSP中的SMDK2440DRIVERSacklite目錄下一般都有背光驅動。在注冊表中添加如下函數的時候
?? TXT
字號:
 歡迎訪問我的博客http://blog.csdn.net/cy757/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 在大多2440開發板BSP中的SMDK2440\DRIVERS\backlite目錄下一般都有背光驅動。在注冊表中添加如下函數的時候,開機時確實可以打印"!!!!!!!!!!!! BACKLIGHT ON !!!!!!!!!!!!,如果沒有操作大概1分鐘后也可以打印!!!!!!!!!!!! BACKLIGHT OFF !!!!!!!!!!!!。但打印("!!!!!!!!!!!! BACKLIGHT OFF !!!!!!!!!!!!后,就算有觸發事件(在觸摸屏上點擊,或者移動鼠標)也不會打印"!!!!!!!!!!!! BACKLIGHT ON !!!!!!!!!!!!。


[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\BAK] 
    "Index"=dword:1 
    "Prefix"="BAK" 
    "Dll"="backlight.dll" 
    "Order"=dword:1 
    "IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}"  

 

當你好好分析驅動中的以下這3個Event時: 

g_evtSignal[0] = CreateEvent(NULL, FALSE, FALSE, szevtBacklightChange); 
g_evtSignal[1] = CreateEvent(NULL, FALSE, FALSE, szevtUserInput); 
g_evtSignal[BL_POWEREVT] = CreateEvent(NULL, FALSE, FALSE, szevtPowerChanged); 

尤其是第二個,好像又沒有問題。

其實這個驅動大體是正確的,只是當鍵盤鼠標或觸摸屏輸入時候gwes 發送“PowerManager/ActivityTimer/UserActivity” event,而不是原驅動中的“("UserInputEvent");”修改后的源程序如下(SMDK2440\DRIVERS\backlite目錄下bak_hw.cpp文件)。

 

 

// 
// Copyright (c) Microsoft Corporation.  All rights reserved. 
// 
// 
// Use of this source code is subject to the terms of the Microsoft end-user 
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT. 
// If you did not accept the terms of the EULA, you are not authorized to use 
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your 
// install media. 
// 
/* 

THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
PARTICULAR PURPOSE. 

*/ 

#include <windows.h> 
#include <nkintr.h> 

#include <pm.h> 
#include "s2440.h" 
#include <nkintr.h> 
#include "oalintr.h" 
#include "drv_glob.h" 
#include "pmplatform.h" 
#include "bak_hw.h" 


//  Globals 
const TCHAR szevtBacklightChange[] = TEXT("BackLightChangeEvent"); 
const TCHAR szevtPowerChanged[] = TEXT("PowerChangedEvent"); 
const TCHAR szevtUserInput[] = TEXT("PowerManager/ActivityTimer/UserActivity"); 


const TCHAR szregRootKey[] = TEXT("ControlPanel\\Backlight"); 
const TCHAR szregBatteryTimeout[] = TEXT("BatteryTimeout"); 
const TCHAR szregACTimeout[] = TEXT("ACTimeout"); 
const TCHAR szregBatteryAuto[] = TEXT("BacklightOnTap"); 
const TCHAR szregACAuto[] = TEXT("ACBacklightOnTap"); 

HANDLE   g_evtSignal[NUM_EVENTS]; 
/* GPIO 寄存器對應的虛擬地址 */ 
volatile IOPreg * v_pIOPregs = (IOPreg * )IOP_BASE; 
//  Global structure 
BLStruct g_BLInfo; 

// Perform all one-time initialization of the backlight 
// 
BOOL  
BacklightInitialize() 
{ 
    BOOL    bRet = TRUE; 

    RETAILMSG(1, (TEXT("BacklightInitialize\r\n"))); 

    BL_PowerOn(TRUE); 

    v_pIOPregs->rGPBCON &=0x3C03FF; 
    v_pIOPregs->rGPBCON |=0x15400; 
    v_pIOPregs->rGPBUP &=0x61F; 
    return bRet; 
} 


//  Utility function to read from registry for the parameters 
void BL_ReadRegistry(BLStruct *pBLInfo) 
{ 
    HKEY    hKey; 
    LONG    lResult; 
    DWORD   dwType; 
    DWORD   dwVal; 
    DWORD   dwLen; 

    lResult = RegOpenKeyEx(HKEY_CURRENT_USER, szregRootKey, 0, KEY_ALL_ACCESS, &hKey); 
    if(ERROR_SUCCESS == lResult) { 
        dwType = REG_DWORD; 
        dwLen = sizeof(DWORD); 

        lResult = RegQueryValueEx(hKey, szregBatteryTimeout, NULL, &dwType,  
                                  (LPBYTE)&dwVal, &dwLen); 
        if(ERROR_SUCCESS == lResult) { 
            pBLInfo->m_dwBatteryTimeout = dwVal; 
        } 

        lResult = RegQueryValueEx(hKey, szregACTimeout, NULL, &dwType, (LPBYTE)&dwVal, 
                                  &dwLen); 
        if(ERROR_SUCCESS == lResult) { 
            pBLInfo->m_dwACTimeout = dwVal; 
        } 

        lResult = RegQueryValueEx(hKey, szregBatteryAuto, NULL, &dwType, (LPBYTE)&dwVal, 
                                  &dwLen); 
        if(ERROR_SUCCESS == lResult) { 
            pBLInfo->m_bBatteryAuto = (BOOL) dwVal; 
        } 

        lResult = RegQueryValueEx(hKey, szregACAuto, NULL, &dwType, (LPBYTE)&dwVal, 
                                  &dwLen); 
        if(ERROR_SUCCESS == lResult) { 
            pBLInfo->m_bACAuto = (BOOL) dwVal; 
        } 

        RegCloseKey(hKey); 
    } 
    else { 
        RETAILMSG(1, (TEXT("BAK : HKEY_CURRENT_USER\\%s key doesn't exist!\r\n"), szregRootKey)); 
    } 
} 


// uninitialize the backlight 
void BL_Deinit() 
{ 
    int i; 

    RETAILMSG(1, (TEXT("BAK : BL_Deinit!\r\n"))); 
    //  Clean up 
    for(i=0; i<NUM_EVENTS; i++) { 
        if(g_evtSignal[i]) { 
            CloseHandle(g_evtSignal[i]); 
        } 
    } 
} 


// 
// initialize the backlight 
// 
BOOL BL_Init() 
{ 
    //  Set up all the events we need.  
    g_evtSignal[0] = CreateEvent(NULL, FALSE, FALSE, szevtBacklightChange); 
    g_evtSignal[1] = CreateEvent(NULL, FALSE, FALSE, szevtUserInput); 
    g_evtSignal[BL_POWEREVT] = CreateEvent(NULL, FALSE, FALSE, szevtPowerChanged); 
    if(!g_evtSignal[0] || !g_evtSignal[1] || !g_evtSignal[2]) { 
        BL_Deinit(); 
        return FALSE; 
    } 
    DEBUGMSG (1,(TEXT("BL_Init()  and  SetGPIO\n\r")));  
    return TRUE; 
} 


// 
//  find out if AC power is plugged in 
// 
BOOL IsACOn() 
{ 
//    if (g_pDriverGlobals->power.ACLineStatus == AC_LINE_ONLINE) 
//      return TRUE; 
//    else 
        return FALSE; 
} 


// 
// turn on/off the backlight 
// 
void BL_On(BOOL bOn) 
{ 
    if(bOn) { 
        if (g_BLInfo.m_dwStatus != BL_ON) 
        { 
            g_BLInfo.m_dwStatus = BL_ON; 
            v_pIOPregs->rGPBDAT&=0x6FF;//打開LED 
            RETAILMSG(1,(TEXT("!!!!!!!!!!!! BACKLIGHT ON !!!!!!!!!!!!\r\n"))); 
        } 
    } 
    else { 
        if (g_BLInfo.m_dwStatus != BL_OFF) 
        { 
            g_BLInfo.m_dwStatus = BL_OFF; 
            v_pIOPregs->rGPBDAT|=0x100;//關閉LED 
            RETAILMSG(1,(TEXT("!!!!!!!!!!!! BACKLIGHT OFF !!!!!!!!!!!!\r\n"))); 
        } 
    } 
} 


// 
// restore power to the backlight 
// 
void BL_PowerOn(BOOL bInit) 
{ 
    // 
    //  Add power-on GPIO register setting 
    // 

    BL_On(TRUE); 
} 


// The backlight handling is done by a thread, which monitors those  
// three event and performs some actions based on the parameters specified 
// in HKLM/ControlPanel/Backlight 
// 
// backlight service thread 
// 
DWORD BL_MonitorThread(PVOID pParms) 
{ 
    DWORD   dwResult; 
    DWORD   dwTimeout; 
     
    //  Initialization stuff is here 
    // 
    //  Initialize the events 
    //  Initialize the BLInfo data structure 
    //  Those are default values. Modify them if necessary 
    g_BLInfo.m_bACAuto = TRUE; 
    g_BLInfo.m_bBatteryAuto = TRUE; 
    g_BLInfo.m_dwBatteryTimeout = 20;   // 20 Seconds 
    g_BLInfo.m_dwACTimeout = 60;       // 1 minutes 

    //  Now read from the registry to see what they say 
    BL_ReadRegistry(&g_BLInfo); 

    //  Initialize BL 
    if(!BL_Init()) { 
        RETAILMSG(1, (TEXT("BL_Init() Failed! Exit from BL_MonitorThread!\r\n"))); 
        return 0; 
    } 
    while(1) { 
        __try {  
            //  If we are using AC now, use m_dwACTimeout as the timeout 
            //  otherwise, use m_dwBatteryTimeout 
            if(IsACOn()) { 
                dwTimeout = g_BLInfo.m_dwACTimeout * 1000; 
            } 
            else { 
                dwTimeout = g_BLInfo.m_dwBatteryTimeout * 1000; 
            } 

            //  However, if user wants BL on all the time, we have to let him 
            //  do that. Or if we come back here, and BL is off, we want to  
            //  put this thread to sleep until other event happens. 
            if(dwTimeout == 0 || g_BLInfo.m_dwStatus == BL_OFF) { 
                dwTimeout = INFINITE; 
            } 

            //  Now let's wait for either there is an update on registry, or 
            //  there is user action on the device, or there is activity on 
            //  AC power supply. 
            dwResult = WaitForMultipleObjects(NUM_EVENTS, &g_evtSignal[0], FALSE, dwTimeout); 

            //  If we are signaled by registry event 
            if(WAIT_OBJECT_0 == dwResult) { 
                //  All we need to do is to read from registry and update the tick count 
                BL_ReadRegistry(&g_BLInfo); 
                RETAILMSG(1, (TEXT("BackLightChangeEvent! m_dwACTimeout=%d, m_dwBatteryTimeout=%d\r\n"),g_BLInfo.m_dwACTimeout,g_BLInfo.m_dwBatteryTimeout)); 
                //  Always turn on the Backlight after a change to registry 
                BL_On(TRUE); 
            } 
            else if(dwResult == WAIT_OBJECT_0+1) { 
                //  User activity, depending on the situation, we may / may not update  
                //  the tick count 
                //RETAILMSG(1, (TEXT("2...WAIT_OBJECT_0+1!\r\n"))); 
                if(IsACOn()) { 
                    if(g_BLInfo.m_bACAuto) { 
                        //  Turn on backlight 
                        BL_On(TRUE); 
                    } 
                } 
                else { 
                    if(g_BLInfo.m_bBatteryAuto) { 
                        BL_On(TRUE); 
                    } 
                }   
            } 
            else if(dwResult == WAIT_OBJECT_0+2) { 
                //  When AC is plugged or un-plugged, we don't really need to do anything 
                //  We continue the loop. The correct timeout value will be assigned at 
                //  the top of the while loop. 
                RETAILMSG(1, (TEXT("BackLight Thread: power changed!\r\n"))); 
            } 
            else if(dwResult == WAIT_TIMEOUT) { 
                //  Time out, let's turn the device off 
                RETAILMSG(1, (TEXT("Timeout, turn off the backlight!\r\n"))); 
                BL_On(FALSE); 
            } 
        } 
        __except(EXCEPTION_EXECUTE_HANDLER){ 
            // do nothing 
            RETAILMSG(1, (TEXT("an exception is raised in BL_MonitorThread... \r\n"))); 
        } 
    } 
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区日韩| 色一区在线观看| 色综合视频在线观看| 欧美电影免费观看高清完整版在线 | 日本精品一级二级| 2023国产精华国产精品| 亚洲国产精品一区二区www| 懂色av一区二区三区免费看| 欧美精品一卡两卡| 一区二区在线观看av| 成人性生交大片免费看中文 | 日本欧美一区二区三区| 91网上在线视频| 国产精品美女一区二区三区| 国产精品一区一区三区| 日韩视频免费观看高清完整版在线观看 | 久久一日本道色综合| 天天色天天操综合| 欧美亚一区二区| 亚洲图片激情小说| 成人a级免费电影| 久久免费精品国产久精品久久久久| 婷婷国产v国产偷v亚洲高清| 99vv1com这只有精品| 国产精品素人一区二区| 国产99久久久国产精品| 久久久亚洲高清| 国产一区二区三区四| 精品福利av导航| 狠狠色丁香久久婷婷综合丁香| 欧美一区中文字幕| 麻豆精品国产传媒mv男同| 日韩一区二区免费在线电影| 日本v片在线高清不卡在线观看| 欧美肥大bbwbbw高潮| 亚洲国产你懂的| 7777女厕盗摄久久久| 青青草原综合久久大伊人精品 | 色偷偷久久人人79超碰人人澡| 中文字幕亚洲精品在线观看| 91香蕉视频在线| 一区二区在线观看免费视频播放| 欧美性大战久久| 视频一区二区不卡| 欧美成人性战久久| 国产精品夜夜嗨| 亚洲国产精品高清| 色综合久久久久久久久久久| 亚洲一区欧美一区| 欧美一区二区二区| 国模套图日韩精品一区二区| 国产精品丝袜久久久久久app| 99久久99久久精品国产片果冻| 亚洲免费三区一区二区| 91麻豆精品国产综合久久久久久| 美国毛片一区二区三区| 国产精品青草久久| 欧美日韩国产在线播放网站| 欧美色中文字幕| 久久狠狠亚洲综合| 国产精品久久久久精k8| 欧美日韩一级片在线观看| 久久99精品一区二区三区 | 国产亚洲综合色| 色综合视频在线观看| 免费成人你懂的| 国产精品久久久久久久久晋中| 欧美日韩国产bt| 成人黄色电影在线| 日本伊人精品一区二区三区观看方式| 国产亚洲一本大道中文在线| 在线观看www91| 国产成人免费视频网站高清观看视频| 亚洲猫色日本管| 久久―日本道色综合久久| 欧美天堂亚洲电影院在线播放| 久久狠狠亚洲综合| 亚洲超丰满肉感bbw| 国产精品免费视频网站| 欧美一级一区二区| 91免费视频观看| 国产福利一区二区三区视频在线| 亚洲电影一区二区三区| 国产精品久久久久aaaa樱花| 日韩精品一区在线观看| 欧美影院精品一区| 成人白浆超碰人人人人| 国产一区不卡视频| 日本麻豆一区二区三区视频| 一区二区三区欧美日韩| 国产精品色哟哟网站| 精品久久国产97色综合| 欧美人与z0zoxxxx视频| 91福利精品第一导航| www.日韩av| 成人性生交大片免费看中文| 国产精品一级片在线观看| 久久99精品久久久久久动态图| 亚洲一区av在线| 亚洲欧美偷拍另类a∨色屁股| 国产农村妇女毛片精品久久麻豆 | 欧美国产禁国产网站cc| 2020国产精品自拍| 日韩精品一区二区三区视频播放| 欧美日韩精品免费观看视频| 在线观看国产日韩| 欧洲精品视频在线观看| 一道本成人在线| 91麻豆6部合集magnet| 99re在线视频这里只有精品| 波多野结衣91| 99综合电影在线视频| 成人精品小蝌蚪| 波多野结衣91| 色婷婷综合久久久久中文 | 亚洲综合在线免费观看| 亚洲色图欧美激情| 一卡二卡欧美日韩| 亚洲成人激情av| 日本视频一区二区三区| 蜜臀久久久久久久| 九九**精品视频免费播放| 精品综合免费视频观看| 国产91丝袜在线观看| 成人av免费观看| 色偷偷88欧美精品久久久| 欧美主播一区二区三区| 欧美视频三区在线播放| 日韩三级电影网址| 久久久精品免费观看| 亚洲同性同志一二三专区| 亚洲综合男人的天堂| 日韩av电影免费观看高清完整版 | 精品一区二区三区影院在线午夜 | 欧美剧情片在线观看| 欧美大片国产精品| 国产欧美精品区一区二区三区 | 久久精品人人做| 亚洲欧洲日韩av| 天天影视涩香欲综合网| 国产一区二区三区免费观看| 99精品久久免费看蜜臀剧情介绍| 欧美性大战久久久久久久蜜臀| 日韩欧美国产高清| 国产精品日产欧美久久久久| 亚洲一区二区精品久久av| 久久99热这里只有精品| www.欧美.com| 91精品国产丝袜白色高跟鞋| 久久久精品国产99久久精品芒果 | 精品亚洲aⅴ乱码一区二区三区| 国产成人免费视频网站| 欧美在线一区二区三区| 精品国产在天天线2019| 亚洲色图都市小说| 狠狠色狠狠色综合系列| 91免费观看国产| 2024国产精品| 亚洲午夜精品17c| 国产xxx精品视频大全| 欧美日韩性生活| 国产精品美日韩| 久久国产精品99久久久久久老狼| 91视视频在线观看入口直接观看www | 欧美亚洲日本一区| 国产欧美日韩在线| 青娱乐精品在线视频| 在线观看不卡一区| 国产精品网站在线| 免费成人在线观看| 欧美日本在线播放| 亚洲欧洲99久久| 国产精品一区二区无线| 欧美一级在线免费| 亚洲成a人片综合在线| 91在线国产福利| 国产欧美一区二区三区在线看蜜臀 | 粉嫩av一区二区三区粉嫩| 制服丝袜亚洲网站| 国产九色sp调教91| 日韩午夜电影在线观看| 香蕉影视欧美成人| 在线观看91精品国产入口| 国产精品家庭影院| 国产成人免费网站| 日本一区二区三区国色天香| 久久精品999| 日韩欧美一区二区视频| 婷婷国产v国产偷v亚洲高清| 欧美在线视频你懂得| 亚洲天堂2014| 91在线精品一区二区| 亚洲视频一区在线| 99久久99久久精品免费观看| 国产精品成人在线观看| 国产成a人亚洲精品| 国产欧美日本一区二区三区| 国产精品综合一区二区三区| 日韩一级高清毛片| 韩国精品主播一区二区在线观看|