Windows的MODULE, INSTANCE, IMAGE的区分

本文解释了Windows系统中module、instance和image的概念及其相互关系。module是指exe和dll文件,在进程地址空间中作为模块被加载。HMODULE和HINSTANCE表示模块基地址,用于资源加载。此外,还介绍了资源如何嵌入exe和dll文件以及如何从外部文件加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在看windows via C/C++的时候,经常看到module, instance, image这样的字眼。其实这是windows中的一些术语,module就相当于exe, dll文件。在进程的地址空间中,exe, dll都当作module被load。

所 以windows中的数据结构HMODULE和HINSTANCE是一样一样的,他们的值都是一个地址,就是该module的base address。这也就是为什么像LoadIcon/LoadImage这些函数都需要一个HMODULE的参数一样,他们需要这个参数去这个 module的地址开始去将资源读取出来。exe和dll一般都是通过memory map装载的,如果做过了rebase和binding的话,他们是不占用system storage的,所以在地址空间中读取,就会到磁盘上去读取相应的内容。windows中的exe和dll中是可以包含资源的(位图,图标,对话 框...),这些资源经过资源编译器编译后就会embedded在exe/dll文件中。当然,exe或dll也可以选择不将资源embedded在自己 里面,可以利用LoadImage这样的函数直接读取外部的文件。

至于image,其实指的就是exe文件。不是图片的意思。

转载于:https://www.cnblogs.com/super119/archive/2011/04/10/2011403.html

altstratixii_oct # altparallel_flash_loader # altserial_flash_loader # alt_fault_injection # sld_virtual_jtag_basic # altsource_probe # End time: 10:23:27 on Jun 26,2025, Elapsed time: 0:00:04 # Errors: 0, Warnings: 0 # End time: 10:23:27 on Jun 26,2025, Elapsed time: 0:08:48 # Errors: 0, Warnings: 4 # vsim work.tb # Start time: 10:23:28 on Jun 26,2025 # Loading work.tb # Loading work.image # Loading work.ram_im # Loading work.altsyncram # Loading work.altsyncram_body # Loading work.ALTERA_DEVICE_FAMILIES # Loading work.ALTERA_MF_MEMORY_INITIALIZATION # ** Error: (vsim-3063) Port 'wraddr' not found in the connected module (3rd connection). # Time: 0 ps Iteration: 0 Instance: /tb/U0/ram_0 File: ../verilog/image.v Line: 71 # ** Error: (vsim-3063) Port 'rdaddr' not found in the connected module (4th connection). # Time: 0 ps Iteration: 0 Instance: /tb/U0/ram_0 File: ../verilog/image.v Line: 71 # ** Warning: (vsim-3015) [PCDPC] - Port size (8) does not match connection size (1) for port 'q'. The port definition is at: ../verilog/ram_im.v(46). # Time: 0 ps Iteration: 0 Instance: /tb/U0/ram_0 File: ../verilog/image.v Line: 71 # ** Error: (vsim-3063) Port 'wraddr' not found in the connected module (3rd connection). # Time: 0 ps Iteration: 0 Instance: /tb/U0/ram_1 File: ../verilog/image.v Line: 80 # ** Error: (vsim-3063) Port 'rdaddr' not found in the connected module (4th connection). # Time: 0 ps Iteration: 0 Instance: /tb/U0/ram_1 File: ../verilog/image.v Line: 80 # ** Warning: (vsim-3015) [PCDPC] - Port size (8) does not match connection size (1) for port 'q'. The port definition is at: ../verilog/ram_im.v(46). # Time: 0 ps Iteration: 0 Instance: /tb/U0/ram_1 File: ../verilog/image.v Line: 80 # Error loading design # Error: Error loading design # Pausing macro execution # MACRO ./run.tcl PAUSED at line 27
最新发布
06-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值