mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 09:25:10 +00:00
- Small fix DeletePwrScheme
- Implement ReadGlobalPwrPolicy - Implement ReadPwrScheme - Implement ValidatePowerPolicies (not fully implemented) svn path=/trunk/; revision=33988
This commit is contained in:
parent
31619ecee5
commit
1a6bae63ba
1 changed files with 129 additions and 27 deletions
|
@ -87,7 +87,7 @@ DeletePwrScheme(UINT uiIndex)
|
||||||
UINT Current;
|
UINT Current;
|
||||||
LONG Err;
|
LONG Err;
|
||||||
|
|
||||||
swprintf(Buf, L"Control Panel\\PowerCfg\\PowerPolicies\\%u", uiIndex);
|
swprintf(Buf, L"Control Panel\\PowerCfg\\PowerPolicies\\%d", uiIndex);
|
||||||
|
|
||||||
if (GetActivePwrScheme(&Current))
|
if (GetActivePwrScheme(&Current))
|
||||||
{
|
{
|
||||||
|
@ -118,16 +118,19 @@ DeletePwrScheme(UINT uiIndex)
|
||||||
|
|
||||||
|
|
||||||
static BOOLEAN
|
static BOOLEAN
|
||||||
POWRPROF_GetUserPowerPolicy(HKEY hKey, LPWSTR szNum,
|
POWRPROF_GetUserPowerPolicy(LPWSTR szNum,
|
||||||
USER_POWER_POLICY userPwrPolicy,
|
USER_POWER_POLICY userPwrPolicy,
|
||||||
DWORD *dwName, LPWSTR szName,
|
DWORD dwName, LPWSTR szName,
|
||||||
DWORD *dwDesc, LPWSTR szDesc)
|
DWORD dwDesc, LPWSTR szDesc)
|
||||||
{
|
{
|
||||||
HKEY hSubKey;
|
HKEY hSubKey;
|
||||||
DWORD dwSize;
|
DWORD dwSize;
|
||||||
LONG Err;
|
LONG Err;
|
||||||
|
WCHAR szPath[MAX_PATH];
|
||||||
|
|
||||||
Err = RegOpenKeyW(hKey, szNum, &hSubKey);
|
swprintf(szPath, L"Control Panel\\PowerCfg\\PowerPolicies\\%s", szNum);
|
||||||
|
|
||||||
|
Err = RegOpenKeyW(HKEY_CURRENT_USER, szPath, &hSubKey);
|
||||||
if (Err != ERROR_SUCCESS)
|
if (Err != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
ERR("RegOpenKeyW failed: %d\n", Err);
|
ERR("RegOpenKeyW failed: %d\n", Err);
|
||||||
|
@ -135,8 +138,8 @@ POWRPROF_GetUserPowerPolicy(HKEY hKey, LPWSTR szNum,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
*dwName = MAX_PATH * sizeof(WCHAR);
|
dwName = MAX_PATH * sizeof(WCHAR);
|
||||||
Err = RegQueryValueExW(hSubKey, L"Name", NULL, NULL, (LPBYTE)szName, dwName);
|
Err = RegQueryValueExW(hSubKey, L"Name", NULL, NULL, (LPBYTE)szName, &dwName);
|
||||||
if (Err != ERROR_SUCCESS)
|
if (Err != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
ERR("RegQueryValueExW failed: %d\n", Err);
|
ERR("RegQueryValueExW failed: %d\n", Err);
|
||||||
|
@ -144,8 +147,8 @@ POWRPROF_GetUserPowerPolicy(HKEY hKey, LPWSTR szNum,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
*dwDesc = MAX_PATH * sizeof(WCHAR);
|
dwDesc = MAX_PATH * sizeof(WCHAR);
|
||||||
Err = RegQueryValueExW(hSubKey, L"Description", NULL, NULL, (LPBYTE)szDesc, dwDesc);
|
Err = RegQueryValueExW(hSubKey, L"Description", NULL, NULL, (LPBYTE)szDesc, &dwDesc);
|
||||||
if (Err != ERROR_SUCCESS)
|
if (Err != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
ERR("RegQueryValueExW failed: %d\n", Err);
|
ERR("RegQueryValueExW failed: %d\n", Err);
|
||||||
|
@ -153,7 +156,7 @@ POWRPROF_GetUserPowerPolicy(HKEY hKey, LPWSTR szNum,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
dwSize = sizeof(USER_POWER_POLICY);
|
dwSize = sizeof(userPwrPolicy);
|
||||||
Err = RegQueryValueExW(hSubKey, L"Policies", NULL, NULL, (LPBYTE)&userPwrPolicy, &dwSize);
|
Err = RegQueryValueExW(hSubKey, L"Policies", NULL, NULL, (LPBYTE)&userPwrPolicy, &dwSize);
|
||||||
if (Err != ERROR_SUCCESS)
|
if (Err != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
|
@ -183,7 +186,7 @@ POWRPROF_GetMachinePowerPolicy(LPWSTR szNum, MACHINE_POWER_POLICY machinePwrPoli
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
dwSize = sizeof(MACHINE_POWER_POLICY);
|
dwSize = sizeof(machinePwrPolicy);
|
||||||
Err = RegQueryValueExW(hKey, L"Policies", NULL, NULL, (LPBYTE)&machinePwrPolicy, &dwSize);
|
Err = RegQueryValueExW(hKey, L"Policies", NULL, NULL, (LPBYTE)&machinePwrPolicy, &dwSize);
|
||||||
if (Err != ERROR_SUCCESS)
|
if (Err != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
|
@ -201,9 +204,9 @@ EnumPwrSchemes(PWRSCHEMESENUMPROC lpfnPwrSchemesEnumProc,
|
||||||
{
|
{
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
LONG Err;
|
LONG Err;
|
||||||
DWORD dwSize, dwNameSize, dwDescSize, dwIndex = 0;
|
DWORD dwSize, dwNameSize = 0, dwDescSize = 0, dwIndex = 0;
|
||||||
WCHAR szNum[3 + 1], szName[MAX_PATH], szDesc[MAX_PATH];
|
WCHAR szNum[3 + 1], szName[MAX_PATH], szDesc[MAX_PATH];
|
||||||
PPOWER_POLICY pPwrPolicy;
|
PPOWER_POLICY pPwrPolicy = NULL;
|
||||||
USER_POWER_POLICY userPwrPolicy;
|
USER_POWER_POLICY userPwrPolicy;
|
||||||
MACHINE_POWER_POLICY machinePwrPolicy;
|
MACHINE_POWER_POLICY machinePwrPolicy;
|
||||||
|
|
||||||
|
@ -227,9 +230,9 @@ EnumPwrSchemes(PWRSCHEMESENUMPROC lpfnPwrSchemesEnumProc,
|
||||||
|
|
||||||
while (RegEnumKeyExW(hKey, dwIndex, szNum, &dwSize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
|
while (RegEnumKeyExW(hKey, dwIndex, szNum, &dwSize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
if (!POWRPROF_GetUserPowerPolicy(hKey, szNum, userPwrPolicy,
|
if (!POWRPROF_GetUserPowerPolicy(szNum, userPwrPolicy,
|
||||||
&dwNameSize, szName,
|
dwNameSize, szName,
|
||||||
&dwDescSize, szDesc))
|
dwDescSize, szDesc))
|
||||||
{
|
{
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
ReleaseSemaphore(PPRegSemaphore, 1, NULL);
|
ReleaseSemaphore(PPRegSemaphore, 1, NULL);
|
||||||
|
@ -243,9 +246,8 @@ EnumPwrSchemes(PWRSCHEMESENUMPROC lpfnPwrSchemesEnumProc,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ZeroMemory(&pPwrPolicy, sizeof(PPOWER_POLICY));
|
memcpy(&pPwrPolicy->user, &userPwrPolicy, sizeof(USER_POWER_POLICY));
|
||||||
pPwrPolicy->user = userPwrPolicy;
|
memcpy(&pPwrPolicy->mach, &machinePwrPolicy, sizeof(MACHINE_POWER_POLICY));
|
||||||
pPwrPolicy->mach = machinePwrPolicy;
|
|
||||||
|
|
||||||
if (!lpfnPwrSchemesEnumProc(_wtoi(szNum), dwNameSize, szName, dwDescSize, szDesc, pPwrPolicy, lParam))
|
if (!lpfnPwrSchemesEnumProc(_wtoi(szNum), dwNameSize, szName, dwDescSize, szDesc, pPwrPolicy, lParam))
|
||||||
break;
|
break;
|
||||||
|
@ -446,11 +448,67 @@ IsPwrSuspendAllowed(VOID)
|
||||||
BOOLEAN WINAPI
|
BOOLEAN WINAPI
|
||||||
ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY pGlobalPowerPolicy)
|
ReadGlobalPwrPolicy(PGLOBAL_POWER_POLICY pGlobalPowerPolicy)
|
||||||
{
|
{
|
||||||
FIXME("(%p) stub!\n", pGlobalPowerPolicy);
|
GLOBAL_MACHINE_POWER_POLICY glMachPwrPolicy;
|
||||||
SetLastError(ERROR_FILE_NOT_FOUND);
|
GLOBAL_USER_POWER_POLICY glUserPwrPolicy;
|
||||||
|
HKEY hKey;
|
||||||
|
DWORD dwSize;
|
||||||
|
LONG Err;
|
||||||
|
|
||||||
|
ReleaseSemaphore(PPRegSemaphore, 1, NULL);
|
||||||
|
|
||||||
|
// Getting user global power policy
|
||||||
|
Err = RegOpenKeyW(HKEY_CURRENT_USER, L"Control Panel\\PowerCfg\\GlobalPowerPolicy", &hKey);
|
||||||
|
if (Err != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
ERR("RegOpenKeyW failed: %d\n", Err);
|
||||||
|
ReleaseSemaphore(PPRegSemaphore, 1, NULL);
|
||||||
|
SetLastError(Err);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dwSize = sizeof(glUserPwrPolicy);
|
||||||
|
Err = RegQueryValueExW(hKey, L"Policies", NULL, NULL, (LPBYTE)&glUserPwrPolicy, &dwSize);
|
||||||
|
if (Err != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
ERR("RegQueryValueExW failed: %d\n", Err);
|
||||||
|
ReleaseSemaphore(PPRegSemaphore, 1, NULL);
|
||||||
|
SetLastError(Err);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
|
||||||
|
// Getting machine global power policy
|
||||||
|
Err = RegOpenKeyW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Controls Folder\\PowerCfg\\GlobalPowerPolicy", &hKey);
|
||||||
|
if (Err != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
ERR("RegOpenKeyW failed: %d\n", Err);
|
||||||
|
ReleaseSemaphore(PPRegSemaphore, 1, NULL);
|
||||||
|
SetLastError(Err);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
dwSize = sizeof(glMachPwrPolicy);
|
||||||
|
Err = RegQueryValueExW(hKey, L"Policies", NULL, NULL, (LPBYTE)&glMachPwrPolicy, &dwSize);
|
||||||
|
if (Err != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
ERR("RegQueryValueExW failed: %d\n", Err);
|
||||||
|
ReleaseSemaphore(PPRegSemaphore, 1, NULL);
|
||||||
|
SetLastError(Err);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
|
||||||
|
memcpy(&pGlobalPowerPolicy->user, &glUserPwrPolicy, sizeof(GLOBAL_USER_POWER_POLICY));
|
||||||
|
memcpy(&pGlobalPowerPolicy->mach, &glMachPwrPolicy, sizeof(GLOBAL_MACHINE_POWER_POLICY));
|
||||||
|
|
||||||
|
ReleaseSemaphore(PPRegSemaphore, 1, NULL);
|
||||||
|
SetLastError(ERROR_SUCCESS);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN WINAPI
|
BOOLEAN WINAPI
|
||||||
ReadProcessorPwrScheme(UINT uiID,
|
ReadProcessorPwrScheme(UINT uiID,
|
||||||
|
@ -466,11 +524,35 @@ BOOLEAN WINAPI
|
||||||
ReadPwrScheme(UINT uiID,
|
ReadPwrScheme(UINT uiID,
|
||||||
PPOWER_POLICY pPowerPolicy)
|
PPOWER_POLICY pPowerPolicy)
|
||||||
{
|
{
|
||||||
FIXME("(%d, %p) stub!\n", uiID, pPowerPolicy);
|
USER_POWER_POLICY userPwrPolicy;
|
||||||
SetLastError(ERROR_FILE_NOT_FOUND);
|
MACHINE_POWER_POLICY machinePwrPolicy;
|
||||||
|
WCHAR szNum[3 + 1]; // max number - 999
|
||||||
|
|
||||||
|
ReleaseSemaphore(PPRegSemaphore, 1, NULL);
|
||||||
|
|
||||||
|
swprintf(szNum, L"%d", uiID);
|
||||||
|
|
||||||
|
if (!POWRPROF_GetUserPowerPolicy(szNum, userPwrPolicy, 0, NULL, 0, NULL))
|
||||||
|
{
|
||||||
|
ReleaseSemaphore(PPRegSemaphore, 1, NULL);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!POWRPROF_GetMachinePowerPolicy(szNum, machinePwrPolicy))
|
||||||
|
{
|
||||||
|
ReleaseSemaphore(PPRegSemaphore, 1, NULL);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(&pPowerPolicy->user, &userPwrPolicy, sizeof(USER_POWER_POLICY));
|
||||||
|
memcpy(&pPowerPolicy->mach, &machinePwrPolicy, sizeof(MACHINE_POWER_POLICY));
|
||||||
|
|
||||||
|
ReleaseSemaphore(PPRegSemaphore, 1, NULL);
|
||||||
|
SetLastError(ERROR_SUCCESS);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN WINAPI
|
BOOLEAN WINAPI
|
||||||
SetActivePwrScheme(UINT uiID,
|
SetActivePwrScheme(UINT uiID,
|
||||||
|
@ -527,8 +609,28 @@ WritePwrScheme(PUINT puiID,
|
||||||
BOOLEAN WINAPI
|
BOOLEAN WINAPI
|
||||||
ValidatePowerPolicies(PGLOBAL_POWER_POLICY pGPP, PPOWER_POLICY pPP)
|
ValidatePowerPolicies(PGLOBAL_POWER_POLICY pGPP, PPOWER_POLICY pPP)
|
||||||
{
|
{
|
||||||
FIXME("(%p, %p) stub!\n", pGPP, pPP);
|
GLOBAL_POWER_POLICY pGlobalPowerPolicy;
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
POWER_POLICY pPowerPolicy;
|
||||||
|
|
||||||
|
FIXME("(%p, %p) not fully implemented\n", pGPP, pPP);
|
||||||
|
|
||||||
|
if (!GetCurrentPowerPolicies(&pGlobalPowerPolicy, &pPowerPolicy))
|
||||||
|
{
|
||||||
|
ERR("GetCurrentPowerPolicies(%p, %p) failed\n", pGPP, pPP);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pGPP)
|
||||||
|
{
|
||||||
|
memcpy(&pGPP, &pGlobalPowerPolicy, sizeof(GLOBAL_POWER_POLICY));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pPP)
|
||||||
|
{
|
||||||
|
memcpy(&pPP, &pPowerPolicy, sizeof(POWER_POLICY));
|
||||||
|
}
|
||||||
|
|
||||||
|
SetLastError(ERROR_SUCCESS);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue