gpt4 book ai didi

.net - 什么是 [DllImport ("QCall")]?

转载 作者:行者123 更新时间:2023-12-03 05:29:36 25 4
gpt4 key购买 nike

.Net 库中的许多方法都是在 native 代码中实现的。来自框架本身的那些标记有[MethodImpl(MethodImplOptions.InternalCall)]。来自某些非托管 DLL 的那些标有 [DllImport](例如 [DllImport("kernel32.dll")])。到目前为止没有什么异常。

但是在写answer for another question时,我发现有很多用[DllImport("QCall")]标记的方法。它们似乎是 .Net 的内部实现(例如 GC._Collect())。

我的问题是:[DllImport("QCall")] 到底是什么意思? [DllImport("QCall")][MethodImpl(MethodImplOptions.InternalCall)] 有什么区别?

最佳答案

我向 .Net 团队中的一些人询问了此事。

QCall 是对 CLR 运行时内的 native 方法的调用。它们的行为与其他[DllImport]类似,但速度更快,因为它们对 native 方法的作用做出了特定的(未记录的)假设,因此它们可以跳过各种编码、GC 和异常检查。

InternalCall 不同;它用于调用在运行时生成的特殊反射样式的东西(这不是很清楚)。

关于.net - 什么是 [DllImport ("QCall")]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9491337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com