wince 6.0 休眠唤醒问题
第一次发帖,希望大家给点思路,谢谢了
问题:
正常情况下唤醒和休眠都是没有问题的,但是运行个别软件(摄像头, 截图, uc浏览器)后休眠唤不醒,如果唤不醒,进入休眠时
DNW显示无法唤醒时打印这样一条语句:
[31m[BAT:ERR] : [0m[31mAnother driver may be using the ADC resource.
定位后
BatteryPDDPowerHandler(BOOL bOff)
{
#ifdef BAT_CH0
DWORD dwIPIndex;
DWORD dwBytes;
#endif
BATMSG(BATT_FUNC, (TEXT("+%s\r\n"), _T(__FUNCTION__)));
#ifdef BAT_CH0
if(bOff == FALSE)
{
if(g_hPwrControl == INVALID_HANDLE_VALUE)
{
// Open a POWERCONTROL device
g_hPwrControl = CreateFile( L"PWC0:", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);
if (INVALID_HANDLE_VALUE == g_hPwrControl)
{
BATERR(TRUE, (TEXT("Failed to open PWC0!\r\n")));
RETAILMSG(1,(TEXT("+++++++++++++++++[Failed to open PWC0!] +++++++++++++++++\n")));
goto CLEAN_UP;
}
}
// turn on
dwIPIndex = PWR_IP_BATT_ADC;
if(!DeviceIoControl(g_hPwrControl, IOCTL_PWRCON_SET_POWER_ON, &dwIPIndex, sizeof(DWORD), NULL, 0, &dwBytes, NULL))
{
BATERR(TRUE, (TEXT("Failed to turn on TSADC!\r\n")));
}
dwIPIndex = CLK_IP3_TSADC;
if(!DeviceIoControl(g_hPwrControl, IOCTL_PWRCON_SET_CLOCK_ON, &dwIPIndex, sizeof(DWORD), NULL, 0, &dwBytes, NULL))
{
BATERR(TRUE, (TEXT("Failed to enable TSADC clock!\r\n")));
}
// A/D conversion delay (D)
// T1(Delay) : D * (1 / FILCLK)
// T2(X-conversion) : (D + 5) * (1 / PCLK)
// T3(Y-conversion) : (D + 5) * (1 / PCLK)
// A/D conversion time = T1 + T2 + T3
}
else
{
// power is automatically turned off on sleep mode
dwIPIndex = PWR_IP_BATT_ADC;
if(!DeviceIoControl(g_hPwrControl, IOCTL_PWRCON_SET_POWER_OFF, &dwIPIndex, sizeof(DWORD), NULL, 0, &dwBytes, NULL))
{
BATMSG(BATT_INFO, (TEXT("Failed to turn off PWR_IP_BATT_ADC!\r\n")));
BATERR(BATT_INFO, (TEXT("Another driver may be using the ADC resource.\r\n")));
}
#if 0 // clock is automatically disabled on sleep mode
dwIPIndex = CLK_IP3_TSADC;
if(!DeviceIoControl(g_hPwrControl, IOCTL_PWRCON_SET_CLOCK_OFF, &dwIPIndex, sizeof(DWORD), NULL, 0, &dwBytes, NULL))
{
BATERR(TRUE, (TEXT("Failed to disable TSADC clock!\r\n")));
}
#endif
}
#endif // BAT_CH0
CLEAN_UP:
RETAILMSG(1,(TEXT("+++++++++++++++++[BatteryPDDPowerHandler] +++++++++++++++++\n")));
BATMSG(BATT_FUNC, (TEXT("-%s\r\n"), _T(__FUNCTION__)));
}
红色部分就是:正常时可以运行, 运行部分程序休眠后出错