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.
Kayan nokta ek açıklamaları, kod çözümleme aracının çekirdek modu kodunda kayan nokta kullanımını algılamalarına yardımcı olabilir ve kayan nokta durumu düzgün korunmadıysa hataları bildirebilir. Kayan nokta kuralları yalnızca çekirdek modu kodu için denetlenür.
Bazı işlemci aileleri için, özellikle x86 işlemciler için, çekirdek modu kodu içinden kayan nokta işlemlerinin kullanılması yalnızca kayan nokta durumunu kaydeden ve geri yükleyen işlevler kapsamında yapılmalıdır. Bu kuralın ihlallerini bulmak özellikle zor olabilir çünkü çalışma zamanında yalnızca düzensiz olarak sorunlara neden olurlar (ancak bu sorunlar çok ciddi olabilir). Ek açıklamaların düzgün kullanımıyla, kod çözümleme araçları çekirdek modu kodunda kayan nokta kullanımını algılama ve kayan nokta durumu düzgün korunmazsa bir hata bildirme konusunda etkilidir. Kayan nokta kuralları yalnızca çekirdek modu kodu için denetlenür.
Kayan nokta durumuyla ne yaptıklarını belirtmek için işlev parametrelerine aşağıdaki ek açıklamaları ekleyin.
| Kayan nokta açıklaması | Açıklama |
|---|---|
| _Çekirdek_kayan_kaydedildi_ | Ek açıklamalı işlev, işlev başarıyla döndürdüğünde kayan nokta donanım durumunu kaydeder. |
| _Çekirdek_float_eski_haline_getirildi_ | Ek açıklamalı işlev, işlev başarıyla geri döndüğünde kayan nokta donanım durumunu eski haline getirir. |
| _Kernel_float_used_ | İşlev, çağıran bir işlev tarafından güvenli bir şekilde çağrılırsa, hata raporlamasını engellemek için _Kernel_float_used_ ek açıklamasını kullanabilirsiniz. Ancak, çağıran işleve _Kernel_float_used_ ile de açıklama eklenmemişse veya işlev çağrısı sırasıyla _Kernel_float_saved_ ve _Kernel_float_restored_ ek açıklamalı işlevler arasında gerçekleşmiyorsa kod çözümleme araçları bir hata bildirir. |
Bu ek açıklamalar, sızıntıları önlemek amacıyla kaynakları edinip serbest bırakma için yapılan ek açıklamaların yanı sıra, zaten KeSaveFloatingPointState ve KeRestoreFloatingPointState sistem işlevlerine de uygulanmıştır. Benzer EngXxx işlevlerine de bu şekilde açıklama eklenir. Ancak, bu işlevleri sarmalayan işlevler de bu ek açıklamaları kullanmalıdır.
Bir bütün olarak fonksiyon, bazı çağıran fonksiyonlar tarafından güvenli bir şekilde çağrılıyorsa, fonksiyon _Kernel_float_used_ ek açıklaması ile anotlanabilir. Bu, uyarıyı bastırır ve kod çözümleme araçlarının çağıranın işlevi güvenli bir şekilde kullandığını onaylamasına neden olur. Gerektiğinde ek _Kernel_float_used_ düzeyleri eklenebilir. _Kernel_float_used_ ek açıklaması, işlev sonucu veya işlevin parametrelerinden biri kayan nokta türü olduğunda kod çözümleme araçları tarafından otomatik olarak sağlanır, ancak ek açıklamanın açıkça sağlanması zarar vermez.
Örneğin, _Kernel_float_saved_ ek açıklaması kayan nokta durumunun KeSaveFloatingPointState sistem işlevinin FloatingState parametresinde depolandığını gösterir.
_Must_inspect_result_
_IRQL_requires_max_(DISPATCH_LEVEL)
__drv_valueIs(<0;==0)
_When_(return==0, _Kernel_float_saved_)
_At_(*FloatingState, _Kernel_requires_resource_not_held_(FloatState) _When_(return==0, _Kernel_acquires_resource_(FloatState)))
__forceinline
NTSTATUS
KeSaveFloatingPointState (
_Out_ PVOID FloatingState
)
Aşağıdaki örnekte, _Kernel_float_used_ ek açıklaması kayan nokta durumunun kullanımıyla ilgili uyarıları gizler. Ek açıklama ayrıca kod çözümleme araçlarının MyDoesFloatingPoint'e yapılan tüm çağrıların güvenli bir kayan nokta bağlamında gerçekleştiğini onaylamasına da neden olur.
_Kernel_float_used_
void
MyDoesFloatingPoint(arguments);