Re: Cancel Sleep
Re: Cancel Sleep
- Subject: Re: Cancel Sleep
- From: Andrew James <email@hidden>
- Date: Sun, 30 Dec 2007 01:29:05 +1030
Sorry i forgot to mention i am working from within a kext here, will i
still be able to use that code or is there another way that will let
me fulfill my original request since i am coding in a kext
On 30/12/2007, at 12:44 AM, Brian Bergstrand wrote:
On Dec 29, 2007, at 1:35 PM, Andrew James wrote:
Hi,
How do i cancel a sleep event from happening, along with things
like the lid closing and causing a sleep.
_______________________________________________
You can only cancel idle sleep, not user initiated sleep (via the
power button, the Sleep menu, or closing the lid.
#import <IOKit/IOMessage.h>
#import <IOKit/pwr_mgt/IOPMLib.h>
static io_connect_t powerPort = (io_connect_t)0;
static void iokpm_callback (void *, io_service_t, natural_t, void*);
int main(int argc, char* argv[]) {
IONotificationPortRef portRef;
io_object_t notifier;
CFRunLoopSourceRef source;
powerPort = IORegisterForSystemPower (NULL, &portRef,
iokpm_callback, ¬ifier);
if (powerPort) {
source = IONotificationPortGetRunLoopSource(portRef);
CFRunLoopAddSource([[NSRunLoop currentRunLoop]
getCFRunLoop], source, kCFRunLoopCommonModes);
}
[[NSRunLoop currentRunLoop] run];
}
static void iokpm_callback (void *myData, io_service_t service,
natural_t message, void *arg)
{
switch(message) {
// must always respond to the power state change messages
case kIOMessageSystemWillSleep:
case kIOMessageCanSystemSleep:
// we can't prevent user initiated power off, only idle power
off
case kIOMessageSystemWillPowerOff:
case kIOMessageSystemWillRestart:
IOAllowPowerChange(powerPort, (long)arg);
break;
case kIOMessageCanSystemPowerOff:
if (dontIdleSleep) {
IOCancelPowerChange(powerPort, (long)arg);
} else
IOAllowPowerChange(powerPort, (long)arg);
break;
default:
break;
}
}
Brian Bergstrand
<http://www.bergstrand.org/brian/> PGP Key ID: 0xB6C7B6A2
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden