Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cancel Sleep



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, &notifier);
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: http://lists.apple.com/mailman/options/darwin-dev/email@hidden

This email sent to email@hidden
References: 
 >Cancel Sleep (From: Andrew James <email@hidden>)
 >Re: Cancel Sleep (From: Brian Bergstrand <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.