2010-07-25 47 views
3

有人可以向我解釋什麼是Thunk?Thunk和ATL Thunk?

和ATL Thunk?

我知道一個thunk與vtbl和執行代碼來找到正確的函數指針有關。我對嗎?

+0

這是關於thunk的堆棧溢出問題:http://stackoverflow.com/questions/2641489/what-is-a-thunk。因此,除非僅限於詢問ATL thunk(例如「ATL中如何使用thunk?」),否則我認爲您的問題應該作爲一個愚蠢的行爲來結束。 – 2010-07-25 14:41:09

回答

4

它是從根本上改變執行環境的一段適配器代碼的通用術語。我發現它在16位到32位Windows轉換過程中首先被使用,一個thunk用於允許以16位模式運行的代碼調用32位代碼。

ATL thunks類似的東西。它知道如何將一個Windows回調,一個純粹的C執行環境,只有一個窗口句柄來區分上下文,並將其轉換爲類對象上的虛擬方法調用。 thunk負責將窗口句柄映射到包裝它的ATL類實例,並將消息編號轉換爲相應的虛擬方法。