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.
uyarı C28170: İşlev sayfalanmış bir kesimde olduğu bildirildi, ancak ne PAGED_CODE ne de PAGED_CODE_LOCKED bulunamadı
Kod Çözümleme aracı, PAGED_CODE veya PAGED_CODE_LOCKED makro içermeyen bir işlevi sayfalanabilir kod bölümüne taşımak için #pragma alloc_text veya #pragma code_seg kullanıldığında bu hatayı bildirir. Bu hata, işlevin ilk ayracına ({) karşılık gelen satır numarasında bildirilir.
Kod Analizi aracı, bölüm adı PAGE ile başladığında bölümün sayfalanabilir olduğunu çıkarsar. Sayfalanabilir koddaki işlevler, ilk küme ayracı ({ ) ile ilk koşullu deyim arasındaki işlevin başında bir PAGED_CODE veya PAGED_CODE_LOCKED makro içermelidir.
Bu makrolar, kod çözümleme aracının ve bir çalışma zamanı denetleyicisinin yükseltilmiş bir IRQL'de disk belleğine alınabilen kodun çalıştırılıp çalıştırılamayacağını belirlemesine olanak sağlar. Sistem yükseltilmiş düzeyde çalışırken bir sayfa hatası oluşursa sistem kilitlenir.
Disk belleği segmentindeki işlevler daha sonra belleğe kilitleniyorsa, PAGED_CODE yerine PAGED_CODE_LOCKED kullanın. PAGE_CODE_LOCKED makro, sürücünün Sürücüler için PREfast uyarısıyla karşılaşmadan IRQL'i yükselten çağrılar yapmasına izin verir.
Bu koşulu test ederken bulmak genellikle çok zordur (sürücü doğrulayıcının hatayı denetlemesine neden olmak için PAGED_CODE makro kullanılmadığı sürece), çünkü kod aslında sayfa hatasının oluşması için disk belleğine alınmalıdır.
Örneği
Aşağıdaki kod örneği bu uyarıyı alır.
void func();
#pragma alloc_text("PAGED_CODE", func);
void func1()
{
// paged, no PAGED_CODE: error
}
Aşağıdaki kod örneği bu uyarıyı önler.
void func();
#pragma alloc_text("PAGED_CODE", func);
void func2()
{
PAGED_CODE(); // includes PAGED_CODE macro
}