我了解CLR在某些情况下需要进行封送处理,但假设我有:
using System.Runtime.InteropServices;
using System.Security;
[SuppressUnmanagedCodeSecurity]
static class Program
{
[DllImport("kernel32.dll", SetLastError = false)]
static extern int GetVersion();
static void Main()
{
for (; ; )
GetVersion();
}
}
当我用调试器进入这个程序时,我总是看到:
假设没有需要执行的封送(对吗?),可以有人解释一下在这个“托管到本地转换”中实际发生了什么以及为什么它是必要的吗?
OutAttribute
将返回值视为普通参数。 - Paolo Moretti