Thunk и ATL Thunk? - PullRequest
       15

Thunk и ATL Thunk?

4 голосов
/ 25 июля 2010

Может кто-нибудь объяснить мне, что такое Thunk?

и ATL Thunk?

Я знаю, что thunk как-то связан с vtbl и выполнением кода, чтобы найти правильный указатель на функцию. Я прав?

1 Ответ

5 голосов
/ 25 июля 2010

Это общий термин для фрагмента кода адаптера, который в корне меняет среду выполнения.Я впервые увидел, что он использовался при переходе с 16-битной на 32-битную версию Windows, и был использован переход, позволяющий коду, работающему в 16-битном режиме, вызывать 32-битный код.

Что-то похожее для ATLсанки.Он знает, как превратить обратный вызов Windows, чистую среду выполнения C, не имеющую ничего, кроме дескриптора окна, чтобы различить контекст, в вызов виртуального метода для объекта класса.Thunk заботится о сопоставлении дескриптора окна с экземпляром класса ATL, который его оборачивает, и переводит номер сообщения в соответствующий виртуальный метод.

...