Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu IRP, sistem güç durumunun veya cihazın güç durumunun değiştirilip değiştirilemeyeceğini belirlemek için bir cihazı sorgular.
Ana Kod
Gönderildiğinde
Güç yöneticisi veya cihaz güç ilkesi sahibi, sistemin veya cihazın güç durumunu değiştirip değiştiremeyeceğini (genellikle uyku moduna geçmek için) belirlemek için bu IRP'yi gönderir. Bir sürücünün bu IRP'yi ayırmak ve göndermek için PoRequestPowerIrp'i çağırması gerekir.
Güç yöneticisi bu IRP'yi IRQL = PASSIVE_LEVEL'de PDO'da DO_POWER_PAGABLE bayrağını ayarlayan cihaz yığınlarına gönderir.
DO_POWER_INRUSH bayrağı ayarlanırsa güç yöneticisi IRQL = DISPATCH_LEVEL'de IRP'yi gönderebilir. Bu tür sürücüler herhangi bir disk belleği koduna veya veriye doğrudan veya dolaylı olarak erişemez.
Giriş Parametreleri
Parameters.Power.Type , SystemPowerState veya DevicePowerState olmak üzere ayarlanan güç durumunun türünü belirtir.
Parameters.Power.State , güç durumunun kendisini aşağıdaki gibi belirtir:
Parameters.Power.TypeSystemPowerState ise, değer SYSTEM_POWER_STATE türünün numaralandırıcısı olur.
Parameters.Power.TypeDevicePowerState ise, değer DEVICE_POWER_STATE türünün numaralandırıcısı olur.
Parameters.Power.ShutdownType istenen geçiş hakkında ek bilgiler belirtir. Olası değerler , POWER_ACTION türünün numaralandırıcılarıdır.
Çıkış Parametreleri
Yok.
G/Ç Durum Bloğu
Sürücü, cihazın istenen duruma girebileceğini belirtmek için Irp-IoStatus.Status> değerini STATUS_SUCCESS olarak ayarlar. Sürücü, istenen duruma giremeyeceğini belirtmek için uygun hata durumlarını ayarlar.
Operasyon
IRP_MN_QUERY_POWER parametreleri IRP_MN_SET_POWERiçin olan parametrelerle aynıdır. Ancak, güç durumunda geri alınamaz bir değişikliği sürücülere bildirmek yerine IRP_MN_QUERY_POWER sistemin veya cihazın belirli bir güç durumuna girip giremeyeceğini sorgular.
Bir sürücü, IRP_MN_QUERY_POWER isteğine yanıt olarak cihazının güç durumunu değiştirmemelidir.
Bir sürücü Windows Server 2003, Windows XP ve Windows 2000'de bir IRP_MN_QUERY_POWER isteği aldıktan sonra, PoStartNextPowerIrp'i Çağırma bölümünde açıklandığı gibi bir sürücünün PoStartNextPowerIrp'içağırması gerekir. Windows Vista'den başlayarak PoStartNextPowerIrp çağrısı gerekli değildir ve böyle bir çağrı güç yönetimi işlemi gerçekleştirmez.
Sistem Güç Durumu için IRP_MN_QUERY_POWER
Güç yöneticisi, ağ bağlantılarını bırakma gibi işleri kesintiye uğratmadan sistem güç durumunu değiştirebilmesi için bu IRP'yi gönderir.
Mümkün olduğunda, power manager sistem uyku durumu veya normal sistem kapatma isteğinde bulunmak için IRP_MN_SET_POWER göndermeden önce sorgular. Ancak, bazı kritik koşullar altında (Örneğin, Güç Kapat düğmesine basan kullanıcı veya pil süresi doluyor), güç yöneticisi önce sorgu güç isteği göndermeden bir IRP_MN_SET_POWER isteği gönderebilir. Power Manager yalnızca uyku durumları için sorgular; çalışma durumuna dönmeden önce hiçbir zaman sorgulamaz.
Bir sürücü bir sistem güç sorgusu IRP'sini aldığında, sorgulanan sistem durumu için geçerli olan cihaz durumlarından herhangi birini destekleyemezse IRP başarısız olmalıdır. Daha fazla bilgi için bkz . DeviceState. Aksi takdirde, sürücü IRP'yi sonraki alt sürücüye geçirmelidir. Veri yolu sürücüsü IRP'yi tamamlar.
Windows Vista'da sistem uyku durumuna geçiş kritik bir işlem olarak kabul edilir. Bir sürücü sistem sorgu gücü IRP'sinde başarısız olsa da, güç yöneticisi yine de sistem güç durumunu uyku durumuna değiştirebilir. Bir sürücü sistem sorgu gücü IRP'sini aldıktan sonra, sürücü her zaman sistem güç durumundaki sonraki bir değişikliğe hazırlıklı olmalıdır.
Bir cihaz güç ilkesi sahibi bir sistem güç sorgusu IRP'sini aldığında, IRP'yi geçirmeden önce IRP'de bir IoCompletion yordamı ayarlamalıdır. IoCompletion yordamında, sorgulanan sistem durumu için geçerli olan bir cihaz durumu için bir IRP_MN_QUERY_POWER göndermelidir. Daha fazla bilgi için bkz . Cihaz Güç İlkesi Sahibinde Sistem Query-Power IRP İşleme.
IRP PowerSystemShutdown (S5) değerini belirttiğinde Parameters.Power.ShutdownType değeri kapatma için bir neden sağlar. ShutdownType, sürücüye sistemin sıfırlanıp sıfırlanmadığını (PowerActionShutdownReset) veya daha sonra yeniden başlatmak için süresiz olarak kapatılıp kapatılmadığını (PowerActionShutdownOff) bildirir. Çoğu cihazın sürücüleri için fark önemsizdir. Ancak, DMA gerçekleştiren bir video akış cihazı gibi belirli cihazlar için, sistem sıfırlandığında sürücü cihazını kapatmayı tercih edebilir ve bu nedenle devam eden G/Ç'leri durdurabilir.
Microsoft Windows 2000 ve sonraki sistemlerde ShutdownType değeri PowerActionShutdown da olabilir. Bu durumda, sürücü ne tür bir kapatma istendiği söyleyemez ve bu nedenle sıfırlama işlemine devam etmelidir.
Bir sürücü sistem güç durumu için IRP_MN_QUERY_POWER isteğinde başarısız olursa, güç yöneticisi genellikle IRP_MN_SET_POWER bir IRP vererek yanıt verir. Genellikle, bu IRP geçerli sistem durumunu yeniden onaylar. Ancak, sürücülerin sorgulanan duruma veya başka bir ara duruma IRP_MN_SET_POWER alması mümkündür. Sürücüler bu durumlarla başa çıkabilmek için hazırlıklı olmalıdır.
Cihaz Güç Durumu için IRP_MN_QUERY_POWER
Cihaz güç ilkesi sahibi, sistem IRP_MN_QUERY_POWER isteğine yanıt olarak bu IRP'yi yığınına gönderir.
Bir sürücü cihazını istenen cihaz durumuna koyabiliyorsa IoStatus.Status değerini STATUS_SUCCESS olarak ayarlar ve IRP'yi sonraki alt sürücüye geçirir ve IRP veri yolu sürücüsüne ulaşana kadar bu şekilde devam eder. Yığındaki herhangi bir sürücü IRP'de başarısız olması gerekiyorsa, bu sürücü IoCompleteRequest'i çağırarak ve bir hata durumu döndürerek IRP'yi hemen tamamlamalıdır. IRP'yi başarısız olan sürücüler yığından daha fazla geçirmez.
Sürücü, STATUS_SUCCESS döndürerek istenen güç durumunu ayarlama yeteneğini değiştirecek herhangi bir işlem başlatmayacağını garanti eder. Sürücü, cihazı kabul edilebilir bir güç durumuna döndüren bir set-power IRP'yi tamamlayana kadar bu tür işlemler gerektiren tüm IRP'leri kuyruğa almalıdır.
Windows 2000 ve sonraki sistemlerde, IRP PowerDeviceD1, PowerDeviceD2 veya PowerDeviceD3'i belirttiğinde Parameters.Power.ShutdownType değeri, bir sistem gücü IRP etkinse geçerli sistem gücü IRP hakkında bilgi sağlar. Bu durumda ShutdownType değeri şu anda istenen sistem güç durumunu veya bir sistem isteği bekleyen değilse PowerActionNone değerini gösterir. Windows 98/Me'de, IRP bir cihaz güç durumu istediğinde bu alan her zaman PowerActionNone içerir.
Gereksinimler
Üstbilgi: Wdm.h (Wdm.h, Ntddk.h veya Ntifs.h dahil)