Mono里运行C#脚本7—MonoImageStorage结构解析

server/2024/12/31 22:20:52/

Mono里运行C#脚本7—MonoImageStorage结构解析

定义一个结构来保存EXE文件加载到内存的表示。
typedef struct {
    MonoRefCount ref;  //引用计数,如果这个文件引用计数为0就可以删除。

    /* key used for lookups.  owned by this image storage. */
    char *key;  //HASH的键,通过键可以快速访问。

    /* If the raw data was allocated from a source such as mmap, the allocator may store resource tracking information here. */
    void *raw_data_handle;  //使用CreateFileMappingW打开后的句柄保存在这里。
    char *raw_data;  //保存MapViewOfFile操作的指针,指向文件数据。
    guint32 raw_data_len;  //保存文件数据的长度。
    /* data was allocated with mono_file_map and must be unmapped */
    guint8 raw_buffer_used    : 1;  //是否使用mono_file_map函数打开
    /* data was allocated with malloc and must be freed


http://www.ppmy.cn/server/154290.html

相关文章

money-oriented programming

preface:休假一周去了苏州散心,发现苏州人真的很重视英语,看了不少于前0个家庭都在教孩子英语了。深感内地教育落后于他们,如果再不学习,会落后的更厉害,加上现在国际国内形势如此严峻,所谓的铁…

Wend看源码-Java-Map学习

摘要 在当今的编程世界中,深入了解各类数据类型对于开发者而言至关重要。本篇聚焦于 JDK 21 版本下,Java.util 包所提供的 Map 类型。Map 作为一种关键的数据结构,能够以键值对的形式高效存储和检索数据,广泛应用于众多领域。 本文…

keepass实现google自输入_SSH_TELNET_RDP联动

涉及到的是使用开源密码管理工具KeePass结合特定插件实现自动化密码填充的功能,特别是在谷歌浏览器中的应用。KeePass是一款强大的密码管理软件,它允许用户安全地存储各种账号的用户名和密码,并通过加密保护这些敏感信息。 1. keepass安装及配…

SVN和Git

SVN(Subversion)和 Git 都是流行的版本控制系统(VCS),但它们在架构、使用场景、功能等方面有所不同。以下是它们的主要区别、各自的好处以及如何使用它们的详细说明。 一、SVN 和 Git 的区别 1. 版本控制模型 SVN&…

spring-面试整理

简述 spring中如何基于注解添加bean 和装配bean 1、首先要在Spring中配置开启注解扫描 2、在具体的类上增加具体的注解 3、spring中通常使用autowired 或者是Resource等注解进行bean的装配 总结: 装配流程: 1、实例化:spring容器根据配置或者…

前端经典面试合集(二)——Vue/React/Node/工程化工具/计算机网络

1. 说说 Vue 中的 Diff 算法 Vue 的 Diff 算法 主要用于优化虚拟 DOM 和实际 DOM 之间的比较过程。它通过以下几种策略来提高性能: 最小化对 DOM 的操作:Vue 通过在内存中构建一个虚拟 DOM 树,在虚拟 DOM 树与真实 DOM 树之间进行比较和更新…

JVMTI 笔记

JVMTI(JVM tool interface)是一套c/c开发接口,用于对JVM进行性能分析、debug、内存管理、线程分析等各种黑科技操作 JVMTI开发1个CPU Profiler: agent.c JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved) {jvmtiEnv *…

探索 .idea 文件夹:Java Maven 工程的隐形守护者

一、.idea文件夹深度解析:IntelliJ IDEA项目配置的核心 在Java Maven工程的开发环境中,.idea文件夹扮演着举足轻重的角色。这是IntelliJ IDEA项目特有的一个配置文件夹,它包含了项目所需的各种配置信息,以确保项目能够在不同的开…