Aracılığıyla paylaş


C28111

uyarı C28111: Kayan nokta durumunun kaydedildiği IRQL, geçerli IRQL ile eşleşmiyor (bu geri yükleme işlemi için).

Ek bilgi

Kayan Kaydetme/Geri Yükleme işlevleri, IRQL'in kaydetme sırasında ve ilgili geri yükleme sırasında aynı olmasını gerektirir.

Kayan nokta durumunu geri yüklerken sürücünün yürütülmekte olduğu IRQL, kayan nokta durumunu kaydettiğinde yürütülmekte olduğu IRQL'den farklıdır.

Sürücünün çalıştığı IRQL kayan nokta durumunun nasıl kaydedileceğini belirlediğinden, kayan nokta durumunu kaydetmek ve geri yüklemek için işlevleri çağırdığında sürücünün aynı IRQL'de yürütülmesi gerekir.

Örneği

Aşağıdaki kod örneği bu uyarıyı alır.

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

Aşağıdaki kod örneği bu uyarıyı önler.

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