/// <summary> /// Look up module containing given nativesignature and return the appropriate native parser. /// </summary> /// <param name="signature">Signature to look up</param> /// <returns>Native parser for the signature</param> internal static NativeParser GetNativeParserForSignature(IntPtr signature) { IntPtr moduleHandle = RuntimeAugments.GetModuleFromPointer(signature); NativeReader reader = TypeLoaderEnvironment.GetNativeReaderForBlob(moduleHandle, ReflectionMapBlob.NativeLayoutInfo); return(new NativeParser(reader, reader.AddressToOffset(signature))); }
/// <summary> /// Look up module containing given nativesignature and return the appropriate native parser. /// </summary> /// <param name="signature">Signature to look up</param> /// <returns>Native parser for the signature</param> internal static NativeParser GetNativeParserForSignature(RuntimeSignature signature) { Debug.Assert(signature.IsNativeLayoutSignature); NativeReader reader = TypeLoaderEnvironment.GetNativeReaderForBlob(signature.ModuleHandle, ReflectionMapBlob.NativeLayoutInfo); return(new NativeParser(reader, signature.NativeLayoutOffset)); }
/// <summary> /// Look up module containing given nativesignature and return the appropriate native parser. /// </summary> /// <param name="signature">Signature to look up</param> /// <returns>Native parser for the signature</returns> internal static NativeParser GetNativeParserForSignature(RuntimeSignature signature) { Debug.Assert(signature.IsNativeLayoutSignature); NativeFormatModuleInfo module = ModuleList.Instance.GetModuleInfoByHandle(new TypeManagerHandle(signature.ModuleHandle)); NativeReader reader = TypeLoaderEnvironment.GetNativeReaderForBlob(module, ReflectionMapBlob.NativeLayoutInfo); return(new NativeParser(reader, signature.NativeLayoutOffset)); }