'Event'에 해당되는 글 1건

  1. 2008.09.05 Windows Power management API - PBT_APMPOWERSTATUSCHANGE Event 1
2008. 9. 5. 16:10

Windows Power management API - PBT_APMPOWERSTATUSCHANGE Event


Windows System에서 전력관리(Power management)를 위해 사용되는 API들이 있다. 지금 보게 될 'PBT_APMPOWERSTATUSCHANGE '라는 녀석도 그에 속한다.

'PBT_APMPOWERSTATUSCHANGE'는 사용하는 기계의 전원상태(power status)의 변화가 생길때 Windows system에서 어플리케이션에 전달(broadcast)되는 event 이다.
예를들어 노트북에서 AC전원을 사용하다가 전원코드를 뽑아서 배터리의 전원을 사용한다던지, 아님 그 반대든지.. 뭐 그런경우 시스템에서는 현재 사용하는 기계의 전원상태의 변화가 생김을 인지하고 이 이벤트를 날려준다(broadcasting).

이 이벤트는 'WM_POWERBROADCAST'라는 메시지를 통해서 어플리케이션에 전달되고, 해당하는 이벤트는 메시지의 'wParam'을 통해 전달된다.


사용방법은.. 대충 이렇다.
음.. Windows API를 예로들어 설명한다.(다른건 할줄몰라서.. 이것도.. 잘은.. -_-)

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
    HDC hdc;

    switch (iMessage) {
        ...
        case WM_POWERBROADCAST:
            switch(wParam){
            case PBT_APMPOWERSTATUSCHANGE:
                MessageBox(hWnd, TEXT("test"), TEXT("test"), MB_OK);
                return 0;
            }
        return 0;
        ...
    }
    return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}


추가로 WM_POWERBROADCAST 메시지의 wParam은 다음과 같은 것들이 있다.

Event

Meaning

PBT_APMBATTERYLOW

Battery power is low

PBT_APMOEMEVENT

OEM-defined event occurred

PBT_APMPOWERSTATUSCHANGE

Power status has changed

PBT_APMQUERYSUSPEND

Request for permission to suspend

PBT_APMQUERYSUSPENDFAILED

Suspension request denied

PBT_APMRESUMEAUTOMATIC

Operation resuming automatically after event

PBT_APMRESUMECRITICAL

Operation resuming after critical suspension

PBT_APMRESUMESUSPEND

Operation resuming after suspension

PBT_APMSUSPEND

System is suspending operation


여기를 참고하면 될 듯 하다.
WM_POWERBROADCAST : http://msdn.microsoft.com/en-us/library/aa373247.aspx
PBT_APMPOWERSTATUSCHANGE : http://msdn.microsoft.com/en-us/library/aa372715(VS.85).aspx