我的應用程序可以在串行和套接字連接之間切換,但兩者都不能同時打開。所以當我嘗試在Socket與Serial之間切換時,我刪除了Socket連接。基於套接字的對象使用一個名爲UsesWinsock的私人類(這裏大聲喊出Len Holgate,因爲它基本上是他的代碼(實際上是RAII,但是直到我看到他這樣做,我纔將它應用到WSA))。這只是簡單地調用WSAStart和WSACleanUp。WSACleanUp導致異常
當WSACleanUp被調用時,它會進入NTDLL和彙編程序。 @ err,hr給了我「傳遞給系統調用的數據區域太小」與HRESULT相同。
我試着移動代碼:按繼承順序移動類會導致破壞序列發生變化,並且實際上破壞了函數,因此它們是在破壞序列中調用的最後一個東西。都沒有工作。
我很確定我已經釋放了所有分配的東西(只有一個套接字和幾個事件),我被卡住了 - 這對我來說是一個相當重要的問題。
Google is unhelpful returning 4 results of which none solve my problem。
有什麼建議嗎?
我沒有像現在這樣使用你的課程,但它確實看起來很可疑。這裏有一個關於使用外部代碼的恐懼症,所以我不得不重寫它。但是,一旦這個想法被播下,你怎麼能不播下它? 實際的HRESULT錯誤在監視窗口中顯示爲@ err,hr。 CleanUp從來沒有真正返回。 – 2009-02-16 12:04:29
奇怪。我從來沒有見過這種情況發生。在這次調用發生之前還有其他的事情正在卸載winsock dll嗎?你還有其他的調用WSAStartup和WSACleanUp嗎?什麼是演示問題的最小示例程序; etc ... – 2009-02-16 12:44:39