From 6dea7537bb2df299e15bc2a9da730ead8a566479 Mon Sep 17 00:00:00 2001 From: Dmitry Chapyshev Date: Thu, 15 Jan 2009 16:09:03 +0000 Subject: [PATCH] - Implement GetDevicePowerState - Implement RequestWakeupLatency - Add prototypes for GetDevicePowerState and RequestWakeupLatency to pofuncs.h svn path=/trunk/; revision=38770 --- reactos/dll/win32/kernel32/misc/power.c | 37 +++++++++++++++++++++---- reactos/include/ndk/pofuncs.h | 16 +++++++++++ 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/reactos/dll/win32/kernel32/misc/power.c b/reactos/dll/win32/kernel32/misc/power.c index 2d8bc3a3268..bb708ec6c36 100644 --- a/reactos/dll/win32/kernel32/misc/power.c +++ b/reactos/dll/win32/kernel32/misc/power.c @@ -91,14 +91,30 @@ SetSystemPowerState(BOOL fSuspend, BOOL fForce) } /* - * @unimplemented + * @implemented */ BOOL WINAPI GetDevicePowerState(HANDLE hDevice, BOOL *pfOn) { - STUB; - return 0; + DEVICE_POWER_STATE DevicePowerState; + NTSTATUS Status; + + Status = NtGetDevicePowerState(hDevice, &DevicePowerState); + + if (NT_SUCCESS(Status)) + { + if ((DevicePowerState != PowerDeviceUnspecified) && + (DevicePowerState != PowerDeviceD0)) + *pfOn = FALSE; + else + *pfOn = TRUE; + + return TRUE; + } + + SetLastErrorByStatus(Status); + return FALSE; } /* @@ -113,14 +129,23 @@ RequestDeviceWakeup(HANDLE hDevice) } /* - * @unimplemented + * @implemented */ BOOL WINAPI RequestWakeupLatency(LATENCY_TIME latency) { - STUB; - return 0; + NTSTATUS Status; + + Status = NtRequestWakeupLatency(latency); + + if (!NT_SUCCESS(Status)) + { + SetLastErrorByStatus(Status); + return FALSE; + } + + return TRUE; } /* diff --git a/reactos/include/ndk/pofuncs.h b/reactos/include/ndk/pofuncs.h index 44bf815896f..24dff1c66c5 100644 --- a/reactos/include/ndk/pofuncs.h +++ b/reactos/include/ndk/pofuncs.h @@ -86,4 +86,20 @@ ZwSetSystemPowerState( IN SYSTEM_POWER_STATE MinSystemState, IN ULONG Flags ); + +NTSYSAPI +NTSTATUS +NTAPI +NtGetDevicePowerState( + IN HANDLE Device, + IN PDEVICE_POWER_STATE PowerState +); + +NTSYSAPI +NTSTATUS +NTAPI +NtRequestWakeupLatency( + IN LATENCY_TIME latency +); + #endif