Aracılığıyla paylaş


Parametre doğrulama

Güvenliği iyileştirilmiş CRT işlevlerinin çoğu ve olmayanların çoğu, için işaretçileri denetleme gibi işlemler için NULLparametrelerini, tamsayıların geçerli bir aralığa denk geldiğini veya numaralandırma değerlerinin geçerli olduğunu doğrulayın. Geçersiz bir parametre bulunursa, geçersiz parametre işleyicisi çağrılır.

Geçersiz parametre işleyici yordamı

C Çalışma Zamanı Kitaplığı işlevi geçersiz bir parametre algıladığında, hatayla ilgili bazı bilgileri yakalar ve ardından geçersiz parametre işleyicisi gönderme işlevini sarmalayan bir makroyu çağırır. Bu, , _invalid_parameter_noinfoveya _invalid_parameter_noinfo_noreturnolacaktır_invalid_parameter. Hangi dağıtım işlevinin çağrıldığı, kodunuzun sırasıyla bir hata ayıklama derlemesi mi, perakende derleme mi yoksa hatanın kurtarılabilir olarak kabul edilmediğine bağlıdır.

Hata ayıklama derlemelerinde, geçersiz parametre makrosunda genellikle gönderme işlevi çağrılmadan önce başarısız bir onay ve hata ayıklayıcı kesme noktası oluşturulur. Kod çalıştırıldığında onay, kullanıcıya işletim sistemine ve CRT sürümüne bağlı "Abort", "Retry" ve "Continue" veya benzer seçenekler içeren bir iletişim kutusunda bildirilebilir. Bu seçenekler kullanıcının programı hemen sonlandırmasına, hata ayıklayıcı eklemesine veya mevcut kodun dispatch işlevini çağıran çalıştırmaya devam etmesine olanak tanır.

Geçersiz parametre işleyicisi gönderme işlevi, şu anda atanmış geçersiz parametre işleyicisini çağırır. Varsayılan olarak, geçersiz parametre uygulamasını çağırır _invoke_watsonve bu da uygulamanın kapanmasına ve bir mini döküm oluşturmasına neden olur. İşletim sistemi tarafından etkinleştirilirse, bir iletişim kutusu kullanıcıya kilitlenme dökümünü analiz için Microsoft'a göndermek isteyip istemediğini sorar.

İşlevleri _set_invalid_parameter_handler kullanarak veya _set_thread_local_invalid_parameter_handler geçersiz parametre işleyicisini kendi işlevinize ayarlayarak bu davranışı değiştirebilirsiniz. Belirttiğiniz işlev uygulamayı sonlandırmazsa, geçersiz parametreleri alan işleve denetim döndürülür. CRT'de bu işlevler normalde işlev yürütmesini durdurur, hata koduna ayarlanır errno ve bir hata kodu döndürür. Çoğu durumda, errno geçersiz bir parametreyi belirtmek için hem değer hem de EINVALdönüş değeri şeklindedir. Bazı durumlarda, parametre olarak geçirilen hatalı bir dosya işaretçisi gibi EBADF daha belirli bir hata kodu döndürülür.

hakkında errnodaha fazla bilgi için bkz.errno , _doserrno, _sys_errlistve _sys_nerr.

Ayrıca bkz.

CRT'deki güvenlik özellikleri
C çalışma zamanı (CRT) ve C++ Standart Kitaplığı (STL) .lib dosyaları