Freigeben über


PoSetDeviceBusyEx-Funktion (ntifs.h)

Die PoSetDeviceBusyEx-Routine benachrichtigt den Energie-Manager , dass das gerät, das dem angegebenen Leerlaufzähler zugeordnet ist, ausgelastet ist.

Syntax

void PoSetDeviceBusyEx(
  [in, out] PULONG IdlePointer
);

Parameter

[in, out] IdlePointer

Ein Zeiger auf einen Leerlaufzähler. Dies ist ein Zeigerwert, der zuvor von der PoRegisterDeviceForIdleDetection-Routine zurückgegeben wurde. Da PoRegisterDeviceForIdleDetection möglicherweise einen NULL-Zeiger zurückgibt, muss der Aufrufer überprüfen, ob der Zeiger nicht NULL ist, bevor er PoSetDeviceBusyEx aufruft.

Rückgabewert

Keine

Bemerkungen

Diese Routine ist ein direkter Ersatz für das PoSetDeviceBusy-Makro . Wenn Sie neuen Treibercode für Windows Vista mit Service Pack 1 (SP1) und höheren Versionen von Windows schreiben, rufen Sie PoSetDeviceBusyEx anstelle von PoSetDeviceBusy Auf.

Ein Treiber ruft die Routinen PoSetDeviceBusyEx und PoRegisterDeviceForIdleDetection auf, um die System-Leerlauferkennung für sein Gerät zu aktivieren. Wenn ein Gerät, das für die Leerlauferkennung registriert ist, während des vom Treiber angegebenen Timeoutzeitraums im Leerlauf bleibt, sendet der Power Manager eine IRP_MN_SET_POWER Anforderung, das Gerät in einen angeforderten Ruhezustand zu versetzen.

PoSetDeviceBusyEx meldet, dass das Gerät ausgelastet ist, sodass der Power Manager seinen Countdown im Leerlauf neu starten kann. Wenn sich das Gerät im Ruhezustand befindet, ändert PoSetDeviceBusyEx den Zustand des Geräts nicht. Das heißt, es führt nicht dazu, dass das System eine IRP_MN_SET_POWER Anforderung sendet, um das Gerät zu wecken.

PoSetDeviceBusyEx ist für die Verwendung mit E/A-Vorgängen konzipiert, die im Vergleich zum Timeoutzeitraum des Leerlaufzählers relativ kurz sind. Verwenden Sie für längere Vorgänge, die diesen Zeitraum möglicherweise überschreiten, stattdessen die Routinen PoStartDeviceBusy und PoEndDeviceBusy .

Ein Treiber, der mehrere Anforderungen für kurze E/A-Vorgänge stellt, sollte PoSetDeviceBusyEx für jede E/A-Anforderung aufrufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista mit SP1
Zielplattform Universell
Header ntifs.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene

Weitere Informationen

IRP_MN_SET_POWER

PoEndDeviceBusy

PoRegisterDeviceForIdleDetection

PoSetDeviceBusy

PoStartDeviceBusy