Sistem Uyku Ölçütleri
Sistem kullanıcı veya uygulama etkinliği olduğunu belirlediği sürece uyku moduna girmez. Sistem, kullanıcı girişi veya ağ iletişimi gibi belirli etkinlikleri algılayabilir. Ancak, sistemin algılayamayacağı başka etkinlikler de vardır. Örneğin, bir sunu uygulaması için ekranın görüntülenmesi gerekir. Ancak, uygulamanın sunu sırasında boşta olduğu ve sistemin ekranı kapatmasına neden olduğu görünebilir.
Uygulamanızın meşgul olduğunu sisteme bildirmek için SetThreadExecutionState işlevini kullanın. Bu işlev, sistemin uyku moduna geçmesini veya uygulama çalışırken ekranı kapatmasını engeller.
Sunu ve multimedya uygulamaları, sistemin görüntü cihazını uyku moduna almaması gerektiğini bilmesi için SetThreadExecutionState işlevini ES_DISPLAY_REQUIRED ile çağırmalıdır. Gelen faksları yönetme araçları gibi olay işleme uygulamaları, ES_SYSTEM_REQUIREDile SetThreadExecutionState çağrısı yapmalı, olayı işlemeli ve ardından sistemin uyku moduna dönebilmesi için bayrağı temizlemelidir. Sistem genellikle kullanıcı girişine göre etkinliği belirleyebildiğinden çoğu üretkenlik uygulamasının SetThreadExecutionState kullanması gerekmediğini unutmayın.
Sistem, son kullanıcı girişine kadar geçen süreyi korumak için bir ekran boşta süreölçeri ve sistem boşta zamanlayıcı kullanır. Sistem boştaki zamanlayıcıları güç planında yapılandırılan değerlerle karşılaştırır. Ekran boşta zamanlayıcı değeri görüntüleme zaman aşımı değerinden büyükse ve ES_DISPLAY_REQUIREDile SetThreadExecutionStateçağırarak hiçbir iş parçacığı görüntüleme isteğinde bulunmadıysa, sistem görüntüyü kapatır. Benzer şekilde, sistem boşta süreölçeri sistem zaman aşımı değerinden büyükse ve ES_SYSTEM_REQUIREDile SetThreadExecutionState çağırarak sistem istenmediyse sistem uyku moduna girer.
Sistem, SetThreadExecutionStateadlı uygulamaların sayısını tutar. Sistem, SetThreadExecutionState çağıran her iş parçacığını izler ve sayacı buna göre ayarlar. Bu sayaç sıfıra ulaşırsa ve kullanıcı girişi yoksa sistem uyku moduna girer.
Güç düşükse, bir uygulama kullanıcı müdahalesi isteyebilir veya sistemin kendisini askıya almasını isteyebilir. SetSuspendState işlevini kullanarak sistem işlemini askıya alabilirsiniz.
Sistem otomatik olarak uyanırsa (PBT_APMRESUMEAUTOMATIC), zamanlayıcıların hiçbiri uygun değil. Daha fazla bilgi için bkz. Sistem Uyandırma Olayları.
Uyku Moduna Girme
Sistem uyku moduna geçtiğinde, tüm sistemin ve tüm uygulamaların durumunu otomatik olarak korur. Bu nedenle çoğu uygulamanın özel bir işlem yapması gerekmez. Sistem geçişlerinden önce belirli eylemleri gerçekleştirmesi gereken uygulamalar güç olaylarına kaydolabilir.
Sistem bir PBT_APMSUSPEND olayı gönderdiğinde, sistem uyku moduna geçmeden önce her uygulamanın gerekli eylemleri gerçekleştirmek için iki saniyesi vardır. Uygulamalar, ayrılan süre içinde tüm işlemleri tamamladığından emin olmak için bu olaya yanıt olarak gerçekleştirdikleri eylemi sınırlamalıdır.
İlgili konular
-
Power Management Hakkında