Freigeben über


C28111

Warnung C28111: Die IRQL, in der der Gleitkommazustand gespeichert wurde, stimmt nicht mit dem aktuellen IRQL überein (für diesen Wiederherstellungsvorgang).

Zusätzliche Informationen

Die unverankerten Funktionen zum Speichern/Wiederherstellen erfordern, dass der IRQL zum Zeitpunkt des Speicherns und der entsprechenden Wiederherstellung identisch ist.

Die IRQL, an der der Treiber ausgeführt wird, wenn er einen Gleitkommazustand wiederherstellt, unterscheidet sich von der IRQL, in der er ausgeführt wurde, als er den Gleitkommazustand gespeichert hat.

Da der IRQL, bei dem der Treiber ausgeführt wird, bestimmt, wie der Gleitkommazustand gespeichert wird, muss der Treiber beim Aufrufen der Funktionen zum Speichern und Wiederherstellen des Gleitkommazustands auf demselben IRQL ausgeführt werden.

Beispiel

Im folgenden Codebeispiel wird diese Warnung ausgelöst.

void driver_utility()
{
    // running at APC level
    KFLOATING_SAVE FloatBuf;
    if (KeSaveFloatingPointState(&FloatBuf))
    {
        KeLowerIrql(PASSIVE_LEVEL);
        ...
        KeRestoreFloatingPointState(&FloatBuf);
    }
}

Im folgenden Codebeispiel wird diese Warnung vermieden.

void driver_utility()
{
    // running at APC level
    KFLOATING_SAVE FloatBuf;
    if (KeSaveFloatingPointState(&FloatBuf))
    {
        KeLowerIrql(PASSIVE_LEVEL);
        ...
        KeRaiseIrql(APC_LEVEL, &old);
        KeRestoreFloatingPointState(&FloatBuf);
    }
}