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 |