Many methods in the .Net library are implemented in native code. Those that come from the framework itself are marked with [MethodImpl(MethodImplOptions.InternalCall)]
. Those that come from some unmanaged DLL are marked with [DllImport]
(e.g. [DllImport("kernel32.dll")]
). So far nothing unusual.
But while writing answer for another question, I discovered there are many methods marked with [DllImport("QCall")]
. They seem to be internal implementation of .Net (e.g. GC._Collect()
).
My question is: What exactly does [DllImport("QCall")]
mean? What is the difference between [DllImport("QCall")]
and [MethodImpl(MethodImplOptions.InternalCall)]
?