這是有點兒非常低級的類型的問題,但也許有人在這裏有一些見解被抓......有例外的問題被Win32消息調度
我有一個問題,未處理的SEH異常(如訪問衝突)似乎被捕獲在Win32消息發送級別上,而不是終止程序。我發現下面的參考博客,這也解釋了這個問題,但只在WM_TIMER消息的情況下:http://bugswar.blogspot.com/2010/07/why-its-not-crashing.html
我遇到與Win 2008 R2的問題,並在「正常」的消息(如:WM_COMMAND等) 。我懷疑它可能是Windows試圖通過屏蔽異常來「幫助」,但我希望它出錯;一般而言,「繼續和忽略」行爲導致應用程序出現問題。我意識到我可以嘗試在try/catch中封裝每個函數,並使用編譯器選項/ EHa將SEH異常轉換爲C++異常(本身非常令人沮喪並且很危險),但這顯然不是最優的。
根據引用的博客,TIB結構中的AppCompatFlags2中有一個標誌(http://en.wikipedia.org/wiki/Win32_Thread_Information_Block),它可能導致Win32處理程序無法捕捉/丟棄SEH異常,但我不知道如何設置/啓用它。任何人都有這方面的見解?是否有一個AppCompat設置可以使Windows無法捕捉並忽略異常?
你可以,但那不是我正在尋找的,因爲我非常想使用最新版本的Windows中的一些功能,而且我非常不希望將錯誤的版本信息發送給我應用。這裏的屬性是你可以用AppCompat指定的一個子集(據我所知),有些可以通過清單來設置;不過,我不知道如何設置我所關心的行爲。 – Nick 2010-10-23 01:35:16