逐步完成Visual Studio中的"托管到本机转换"?

Rom*_*kov 12 .net pinvoke native marshalling visual-studio

在尝试回答这个问题时,我决定在调试器视图中手动逐步完成编组过程.

不幸的是,Visual Studio似乎跳过了所有这些有趣的代码.这是对GetProfilesDirectory(WinAPI函数)的P/Invoke调用:

在此输入图像描述

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

在此输入图像描述

[Managed to Native Transition]堆栈上还有条目,暗示Visual Studio刚刚跳过一大堆代码.

我该如何逐步完成这一过渡?

She*_*dan 5

我很惊讶没有人建议您在调试窗口中显示外部代码。如果您右键单击 [Native to Managed Transition] 行并勾选 Show External Code 选项,您将确切地看到在转换中正在调用哪些方法。这可能会给你一个更好的主意。下面是一个例子:

显示本机到托管转换

然后,您将能够双击任何(变灰)行,Disassembly将打开一个包含代码的页面。另一个例子:

在此处输入图片说明