[PL] if (is_computer_on()!=1) { lets_play_sideshow(); }


Uśmiałem się trochę gdy zajrzałem na blog jednego z moich kolegów z Finlandii:
http://slinky.imukuppi.org/2008/03/28/if-a-kernel-call-is-made-but-nobody-is-listening/

Jego blog naogół jest średnio Microsoftowy, wręcz przeciwnie. Jani to dla mnie jedna z tych pomocnych osób, dzięki której o konkurencji mam nadzieję nie gadam głupot bez wiedzy 😉

W każdym razie jak zajrzycie na powyższego bloga to zauważycie, że Jani w bibliotekach do wydaje mi się już martwego systemu BeOS (no chyba, że komuś się jeszcze chce bawić w Haiku) odkrył ciekawą funkcję w API. Funkcja is_computer_on(), która sprawdza czy komputer jest włączony.

Uśmiałem się, bo w sumie jak ma nie zwrócić 1 (true) gdy aplikacja, która wykona tą funkcję raczej nie ma prawa zostać wykonana przy wyłączonym komputerze. No chyba, że znajdę ochotnika, który byłby mi w stanie sprawdzić i udowodnić, że przetestował to na wyłączonej maszynie 🙂

Wydaje się do bólu zabawne, ale w sumie to przełożyłem sobie szybko taką funkcję na potencjalne (i może już mniej absurdalne) potrzeby Windows Vista.

W końcu pod tym systemem mamy wsparcie do Sideshow - małego okienka, które producent komputera może umieścić np. na zewnętrznej stronie klapy laptopa i pozwolić nam na uruchomienie ograniczonej funkcjonalności systemu, gdy on jest wyłączony czy uśpiony.

image {przykład wykorzystania Sideshow}

W takiej sytuacji doszedłem do wniosku, że sprawdzenie, czy mój komputer jest włączony czy też może nie (np. jest zahibernowany), nawet mogło by mieć merytoryczny sens 🙂

Z ciekawości aż sprawdziłem czy takiego cuda jak is_computer_on() nie ma pod Windows.
Najbliżej jak mi się udało to w funkcjach WinAPI związanych z Power Management znalazłem funkcję: GetDevicePowerState, aczkolwiek nie mam urządzenia z sideshow, na którym mógłbym w praktyce przetestować taki scenariusz.

Tak czy siak uśmiałem się po pachy i raczej wciąż traktuję to odkrycie w kategoriach dobrego żartu :]


Comments (2)

  1. apl says:

    To nie jedyna perełka w kernel kit:

    double is_computer_on_fire();

    Returns the temperature of the motherboard if the computer is currently on fire. Smoldering doesn’t count. If the computer isn’t on fire, the function returns some other value.

    Źródło: http://www.haiku-os.org/legacy-docs/bebook/TheKernelKit_SystemInfo.html

  2. Takiej funkcji w Windows Vista bym nie chciał mieć.

    Bałbym się jeszcze, że ktoś by odkrył ukrytą funkcję kernela set_computer_on_fire();

    Po takim odkryciu przygody z wirusem Chernobil, który palił płyty główne wróciły by jak bumerang 🙂

Skip to main content