Rom*_*kov 12 .net pinvoke native marshalling visual-studio
在尝试回答这个问题时,我决定在调试器视图中手动逐步完成编组过程.
不幸的是,Visual Studio似乎跳过了所有这些有趣的代码.这是对GetProfilesDirectory(WinAPI函数)的P/Invoke调用:

但是在接到这个电话(F11)后,我发现自己并没有FFF9BFD8; 相反,我在GetProfilesDirectory代码中着陆:

[Managed to Native Transition]堆栈上还有条目,暗示Visual Studio刚刚跳过一大堆代码.
我该如何逐步完成这一过渡?
我很惊讶没有人建议您在调试窗口中显示外部代码。如果您右键单击 [Native to Managed Transition] 行并勾选 Show External Code 选项,您将确切地看到在转换中正在调用哪些方法。这可能会给你一个更好的主意。下面是一个例子:
然后,您将能够双击任何(变灰)行,Disassembly将打开一个包含代码的页面。另一个例子: