Functionality of IJWNOADThunkJumpTarget
When I invoked a manged C++ call from a C++ DCOM server I got the following callstack. The manged C++ call sets a property value.
My question is what does IJWNOADThunkJumpTarget, IJWNOADThunkJumpTargetHelper and IJWNOADThunk::FindThunkTarget do?
Please help me
mscorwks!SetupThread+00000238
mscorwks!IJWNOADThunk::FindThunkTarget+00000019
mscorwks!IJWNOADThunkJumpTargetHelper+0000000B
mscorwks!IJWNOADThunkJumpTarget+00000048
ICEScheduler!CToolDataManager::SetLotManagerActive+00000025** (e:\projects\ice\ice_dev\trunk\source\application source\icesc开发者_如何学运维hedulersystem\icescheduler\tooldatamanager.cpp, 250)
ICEScheduler!SetLotManagerActive+00000014 (e:\projects\ice\ice_dev\trunk\source\application source\iceschedulersystem\icescheduler\schddllapi.cpp, 589)
- It's part of the .NET runtime internals (i.e. it's not a public API)
- It's not included in the SSCLI source code (for instance, see the comment in dacvars.h); it's only in the Microsoft .NET Framework
- The 'IJW' part of the name suggests that it's some plumbing used only by managed C++ (IJW = 'It Just Works', and refers to MC++'s ability to mix native and managed code)
- The 'thunk' part of the name suggests that it's a piece of helper code responsible for gluing together two other pieces of code
- Other mentions of
IJWOADThunk
on the web (here, here) are in contexts where managed code calls into native code or vice versa
Given the above, I would guess that the IJWOADThunk
functions are what allows your managed C++ code to interoperate transparently with native code.
精彩评论