首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Windows平台下,如何在不知道文件大小的情况下找到内存映射文件的结尾?

在Windows平台下,可以使用以下方法来找到内存映射文件的结尾,即文件的大小:

  1. 使用GetFileSize函数:可以通过调用GetFileSize函数获取文件的大小。该函数需要传入文件的句柄(通过CreateFile函数获取)和指向一个DWORD变量的指针,用于接收文件的大小。示例代码如下:
代码语言:txt
复制
#include <windows.h>

DWORD GetFileSizeFromHandle(HANDLE hFile) {
    DWORD fileSize = GetFileSize(hFile, NULL);
    return fileSize;
}
  1. 使用GetFileInformationByHandle函数:可以通过调用GetFileInformationByHandle函数获取文件的大小。该函数需要传入文件的句柄(通过CreateFile函数获取)和指向一个BY_HANDLE_FILE_INFORMATION结构体的指针,用于接收文件信息。文件的大小可以从结构体的nFileSizeLow和nFileSizeHigh成员中获取。示例代码如下:
代码语言:txt
复制
#include <windows.h>

DWORDLONG GetFileSizeFromHandle(HANDLE hFile) {
    BY_HANDLE_FILE_INFORMATION fileInfo;
    GetFileInformationByHandle(hFile, &fileInfo);
    DWORDLONG fileSize = fileInfo.nFileSizeLow | ((DWORDLONG)fileInfo.nFileSizeHigh << 32);
    return fileSize;
}
  1. 使用GetFileSizeEx函数:可以通过调用GetFileSizeEx函数获取文件的大小。该函数需要传入文件的句柄(通过CreateFile函数获取)和指向一个LARGE_INTEGER结构体的指针,用于接收文件的大小。示例代码如下:
代码语言:txt
复制
#include <windows.h>

DWORDLONG GetFileSizeFromHandle(HANDLE hFile) {
    LARGE_INTEGER fileSize;
    GetFileSizeEx(hFile, &fileSize);
    return fileSize.QuadPart;
}

以上方法可以在不知道文件大小的情况下找到内存映射文件的结尾。在实际应用中,可以根据具体需求选择合适的方法来获取文件大小,并进行相应的处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP学习笔记 Win平台下PHP开发环境搭建

Win平台下PHP开发环境搭建 本文参考了PHP官方文档 http://php.net/manual/zh/install.windows.iis7.php 写成,如果需要了解详细信息,请直接参考PHP...配置文件偏后面一点可以找到被注释掉各种扩展。如果不知道要启用什么扩展的话,可以全部启用,不过仅限于自己开发机器上。如果在服务器上打开过多扩展的话可能会影响性能。...open_basedir:指定PHP可以访问文件系统。设置可以只允许PHP访问 有限目录增加安全性。 upload_max_filesize:指定PHP可以上传最大文件大小。...添加处理程序映射 然后打开IIS,左边选择根条目,然后右边选择处理程序映射。...打了处理程序映射之后,右面选择添加模块映射,然后进行如下配置: * 请求路径:*.php * 模块:FastCgiModule * 可执行文件:你PHP路径中php-cgi.exe

55220

常用DOS命令和Linux命令

: 1)对于.tar结尾文件 tar -xf all.tar 2)对于.gz结尾文件 gzip -d all.gz gunzip all.gz 3)对于.tgz或.tar.gz结尾文件 tar -...xjf all.tar.bz2 6)对于.Z结尾文件 uncompress all.Z 7)对于.tar.Z结尾文件 tar -xZf all.tar.z 8,压缩文件夹: tar -zcvf /root...chattr -i webapps //去除i属性 rm -rf webapps //删除文件夹 13:设置文件大小为0,不删除文件情况下清空内容 echo > xxx.log 14...:linux下使用vim编辑文件,出现^M是什么意思 出现这个符号原因很简单,因为这个文件windows台下编辑过,我们知道windows台下,换行符是\r\n, 而在linux下是\n,这多出来...:“1,20” :表示从第1行到20行; “%” :表示整个文件,同“1,$”; “. ,$” :从当前行到文件尾; s :表示替换操作 [option] :表示操作类型 :g 表示全局替换

1.8K20

浅析日本队崛起原因_createNewFile

这种情况下,函数CreateFileMapping创建一个由系统页面支持指定大小文件映射对象,而不是磁盘中一个已命名文件文件映射对象可共享副本、被继承。...创建内存映射数据文件时,不能设定这些标志中任何一个。CreateFileMapping函数会忽略这些标志。...段保护属性 含义 SEC_COMMIT 此为默认值;从内存或页面文件或磁盘上文件为节上所有页面分配物理存储器;使用映射数据文件时,不能使用该属性 SEC_IMAGE 这个属性告知系统,所映射文件是个可移植可执行...[in]文件映射对象size(64位)高32位;由于Windows支持最大文件大小可以用64位整数表示,因此必须使用两个32位值,对于小于4GB文件来说,dwMaximumSizeHigh为...lpName [in]一个指向映射对象以0结尾字符串。 如果lpName匹配一个已存在并已命名文件映射对象,函数将请求flProtect指定访问权限。

35610

CreateFileMapping用法

, 甚至超过实际文件大小, 如果你物理文件有效, 而大小参数为0, 则返回给你是一个和物理文件大小一样内存空间地址范围....win2k下如果需要进行限制, 这是针对那些将内存文件映射共享给整个网络上面的应用进程使用是, 可以考虑进行限制. 3) 高位文件大小 弟兄们, 我想目前我们机器都是32位东东, 不可能得到超过...文件映射问题 内存映射文件并不是简单文件I/O操作,实际用到了Windows核心编程技术–内存管理。...9x操作系统,如果MapViewOfFile()无法找到足够大区域来存放整个文件映射对象,将返回空值(NULL);但是Windows 2000下,MapViewOfFile()只需要为必要视图找到足够大一个区域即可...例如,使用内存映射文件时,为了提高速度,系统将文件数据页面进行高速缓存,而且处理文件映射视图时不立即更新文件磁盘映像。

62520

(61) 内存映射文件及其应用 - 实现一个简单消息队列 计算机程序思维逻辑

我们先来介绍内存映射文件基本概念,它是什么,能解决什么问题,然后我们介绍如何在Java中使用,我们会设计和实现一个简单、持久化、跨程序消息队列来演示内存映射文件应用。...而在内存映射文件中,一般情况下,只有一次拷贝,且内存分配在操作系统内核,应用程序访问就是操作系统内核内存空间,这显然要比普通读写效率更高。...理解了内存映射文件基本概念,接下来,我们看怎么Java中使用它。....meta文件中保存队列头和尾,指向.data文件位置,初始都是0,入队增加尾,出队增加头,到结尾时,再从0开始,模拟循环队列。...最后返回实际数据 小结 本节介绍了内存映射文件基本概念及Java中用法,日常普通文件读写中,我们用到比较少,但在一些系统程序中,它却是经常被用到一把利器,可以高效读写大文件,且能实现不同程序间共享和通信

1.1K50

PE文件详解(三)

本文转自小甲鱼PE文件详解系列传送门 PE文件内存映射 执行一个PE文件时候,windows 并不在一开始就将整个文件读入内存,二十采用与内存映射文件类似的机制。...也就是说,windows 装载器在装载时候仅仅建立好虚拟地址和PE文件之间映射关系。...当且仅当真正执行到某个内存页中指令或者访问某一页中数据时,这个页面才会被从磁盘提交到物理内存,这种机制使文件装入速度和文件大小没有太大关系。...一般情况下,它会处理以下几个方面的内容: 内存属性; 节偏移地址; 节尺寸; 不进行映射节。...不进行映射节: 有些节并不需要被映射内存中,例如.reloc节,重定位数据对于文件执行代码来说是透明,无作用,它只是提供Windows 装载器使用, 执行代码根本不会去访问到它们,所以没有必要将他们映射到物理内存

67030

2.1 PE结构:文件映射内存

PE结构是Windows系统下最常用可执行文件格式,理解PE文件格式不仅可以理解操作系统加载流程,还可以更好理解操作系统对进程和内存相关管理知识,在任何一款操作系统中,可执行程序在被装入内存之前都是以文件形式存放在磁盘中...为了应对这种局面,微软工程师们就发明了新文件格式(EXE文件),该文件格式代码段前面增加了文件头结构,文件头中包括各种说明数据,程序入口地址,堆栈位置,重定位表等,显然可执行文件格式是操作系统工作方式真实写照...PE文件中将同样属性数据分类放在一起是为了统一描述这些数据装入内存页面属性,由于数据是按照属性节中放置,不同用途但是属性相同数据可能被放在同一个节中,PE文件头被放置节和节表前面,上面介绍是真正...解析PE文件之前,我们首先要做则是将PE文件从磁盘中读入到内存,有两种方式可以实现,一种是通过ReadFile函数将完整数据读入内存,该方法会消耗更多内存资源这里并不推荐使用,第二种方式则是采用映射模式...HANDLE hTemplateFile // 模板文件句柄 ); 其中,各个参数含义如下: lpFileName:指向null结尾字符串指针,该字符串是文件名或文件路径

23820

2.1 PE结构:文件映射内存

PE结构是Windows系统下最常用可执行文件格式,理解PE文件格式不仅可以理解操作系统加载流程,还可以更好理解操作系统对进程和内存相关管理知识,在任何一款操作系统中,可执行程序在被装入内存之前都是以文件形式存放在磁盘中...为了应对这种局面,微软工程师们就发明了新文件格式(EXE文件),该文件格式代码段前面增加了文件头结构,文件头中包括各种说明数据,程序入口地址,堆栈位置,重定位表等,显然可执行文件格式是操作系统工作方式真实写照...PE文件中将同样属性数据分类放在一起是为了统一描述这些数据装入内存页面属性,由于数据是按照属性节中放置,不同用途但是属性相同数据可能被放在同一个节中,PE文件头被放置节和节表前面,上面介绍是真正...解析PE文件之前,我们首先要做则是将PE文件从磁盘中读入到内存,有两种方式可以实现,一种是通过ReadFile函数将完整数据读入内存,该方法会消耗更多内存资源这里并不推荐使用,第二种方式则是采用映射模式...HANDLE hTemplateFile // 模板文件句柄 ); 其中,各个参数含义如下: lpFileName:指向null结尾字符串指针,该字符串是文件名或文件路径

37840

2.1 PE结构:文件映射内存

PE结构是Windows系统下最常用可执行文件格式,理解PE文件格式不仅可以理解操作系统加载流程,还可以更好理解操作系统对进程和内存相关管理知识,在任何一款操作系统中,可执行程序在被装入内存之前都是以文件形式存放在磁盘中...为了应对这种局面,微软工程师们就发明了新文件格式(EXE文件),该文件格式代码段前面增加了文件头结构,文件头中包括各种说明数据,程序入口地址,堆栈位置,重定位表等,显然可执行文件格式是操作系统工作方式真实写照...PE文件中将同样属性数据分类放在一起是为了统一描述这些数据装入内存页面属性,由于数据是按照属性节中放置,不同用途但是属性相同数据可能被放在同一个节中,PE文件头被放置节和节表前面,上面介绍是真正...解析PE文件之前,我们首先要做则是将PE文件从磁盘中读入到内存,有两种方式可以实现,一种是通过ReadFile函数将完整数据读入内存,该方法会消耗更多内存资源这里并不推荐使用,第二种方式则是采用映射模式...HANDLE hTemplateFile // 模板文件句柄);其中,各个参数含义如下:lpFileName:指向null结尾字符串指针,该字符串是文件名或文件路径。

22910

C++高并发下如何写日志文件(附源码)?

我们往往需要在不同情况下将这些发生事情按时间轴记录下来,从而在系统出现问题或瓶颈时进行回溯分析。...通常情况下这种方式没有问题,通过一次文件IO操作将信息记录下来。但如果是一个后台服务,当高并发发生时候,问题就会出现了。...此时我们需要将日志先写入内存块中,当内存写满后一次性Flush到磁盘中,这样就避免了大量磁盘IO操作。下面是CFileMem封装类,很简单,里面注释很详细就不解释了。...头文件.h #include // for CRITICAL_SECTION // 缺省内存块大小,大于该值时进行将缓存数据写入磁盘文件 #define SIZE_DEFAULT_MEM...我写“HttpServer:一款Windows台下基于IOCP模型高并发轻量级web服务器”,就使用该类进行日志打印,效果不错。

93200

揭开LinuxSwap之谜

因为Linux能让你掌握你所做一切!   为什么痛恨Windows?因为Windows让你不知道自己在做什么!   这就是我喜欢Linux原因。...例如,使用Windows系统时,可以同时运行多个程序,当你切换到一个很长时间没有理会程序时,会听到硬盘“哗哗”直响。这是因为这个程序内存被那些频繁运行程序给“偷走”了,放到了Swap区中。...因此Swap空间分配是很重要。   通常情况下,Swap空间应大于或等于物理内存大小,最小不应小于64M,通常Swap空间大小应是物理内存2-2.5倍。...本文只介绍一下Solaris下和Swap相关一些命令和用途。   最常用是Vmstat命令(大多数Unix平台下都有这样一些命令),此命令可以查看大多数性能指标。  ...因此要在/etc/fstab文件中记录文件名字,和Swap类型,:   /path/swapfile none Swap sw,pri=3 0 0   5)检验Swap文件是否加上   /usr/

4.3K30

文件拆分方案Java实践【面试+工作】

3、鉴于2有序写入,子文件大小分布均匀。 劣势 1、单线程读,效率不高,且使用高效率写方式时,可能成为瓶颈; 2、内存增长不可控,易出现OMM。对于运行中文件任务不可控,内存使用不可控。...从queue里获取FileLine是随机,无法保证文件内容写入有序性,这里有序性是指相对于源文件行位置; 3、文件拆分后子文件大小均匀性无法保证;多线程之间互相不知道状态,因此最后会出现不确定文件...多线程读写模式下,我还未找到一个有效方法来保证文件内容写入有序性,如果要保证文件内容写入有序性,只能使用单线程写 或者 单线程读,舍弃高性能。...总结 1、使用‘生产者-消费者’模式可以很好地控制内存中存在任务数,从而有效控制jvm内存大小,防止omm出现; 2、使用内存文件映射完成读/写文件,能够获得最高效率; 3、ForkJoinPool...TODO 1、拆分后文件写入有序性保证问题 2、拆分后子文件大小均匀性保证问题 3、内存映射文件占据内存回收问题 8.

2.9K51

CleanMyMac X2023升级版Mac清理软件

CleanMyMac X2023是一款专业Mac清理软件,可智能清理mac磁盘垃圾和多余语言安装包,快速释放电脑内存,轻松管理和升级Mac上应用。...同时CleanMyMac X可以强力卸载恶意软件,修复系统漏洞,一键扫描和优化Mac系统,让您电脑焕然一新!Mac电脑文件系统跟Windows 有很大差异。...尤其是使用使用过程中,比如安装一个大软件时候,提示空间不足,除了清倒垃圾桶,根本不知道再去哪里删除文件,释放空间。还有其他更好方式吗?...第一次使用,会提示你去偏好设置里面去给完全访问磁盘权限,这个权限安全与隐私里面,接下来照着步骤做就行了。...第三步选择按文件大小降序排列,比如我最大就是Xcode ,占了4.83G最后一步右键你想删除项,选择访达(Finder)中查看。然后进去就可以删除出文件了,跟事一样。

24230

9.27【前端开发】图片文件格式:常见图片格式对比有何优劣以及如何使用Googlewebp格式?

1、JPEG: 支持摄影图像或写实图像高级压缩,并且可利用压缩比例控制图像文件大小; 有损压缩会使图像数据质量下降, JPG不适合具有大块颜色相近区域或亮度,适合差异十分明显较简单图片, JPG...存储摄影或写实图像一般能达到最佳压缩效果,比如网站背景图,轮播图,用户头像等 2、PNG优缺点 能在保证最不失真的情况下尽可能压缩图像文件大小。...WebP最初2010年发布,目标是减少文件大小,但达到和JPEG格式相同图片质量,希望能够减少图片档在网络上发送时间。...根据Google较早测试,WebP无损压缩比网络上找到PNG档少了45%文件大小,即使这些PNG档使用pngcrush和PNGOUT处理过,WebP还是可以减少28%文件大小。.../releases/webp/index.html 下载no-wic结尾软件包,仍然是三个平台都有的。

2.3K30

.NET 云原生架构师训练营(模块二 基础巩固 引入)--学习笔记

PATCH 修改(资源段落性修改) DELETE 删除 OPTIONS 状态码 200 300 已转移地址/永久移动(response redirect) 401 未认证 403 未授权 404 未找到文件...500 内部服务错误,服务器不知道如何处理错误 HTTP协议详解: https://www.cnblogs.com/tankxiao/archive/2012/02/13/2342672.html....jpg] .net 是一个开发者平台统称,用它可以构建多种类型应用程序 .net 平台下开发语言:c#/F#/Visual Basic 平台标准 .NET Standard: https://dotnet.microsoft.com...示例:ASP .NET、Windows 窗体和 Windows Presentation Foundation (WPF) 包含在 .NET Framework 和 .NET Core 中 可包含开发工具...garbage collector, JIT compiler, primitive data types and low-level classes asp .net core .net core 平台下一个

79211

虚拟化与云计算技术硬核内幕 (21) —— 土豪计算机长什么样?

在前两期,“时间管理大师”教会了大家,如何在创建虚拟机时候进行CPU超分配,把1个CPU物理HT超分配出多个虚拟机vCPU。...我们《花名与破冰》一篇中提到,保护模式下,应用程序看到是操作系统为其分配内存“虚拟地址”,访问虚拟地址时,会映射到实际物理内存。...让我们回忆一下前面学过内容—— 操作系统将虚拟内存划分为页(page),并将每个页到物理地址映射关系写到CR3指向映射表中,CPU指令访问虚拟地址时,CPU内部MMU会查询映射表,映射表中找到物理地址...事实上,如果我们对物理内存进行了超分配,计算机中只有64MB内存,而操作系统中运行各个应用却申请了128MB内存场景,另外64MB分配给操作系统虚拟内存地址,映射表中是找不到。...那么,操作系统物理内存消耗殆尽情况下,去哪里找出这页物理内存来呢?原来,操作系统会通过一定算法,把其他物理内存内容暂时写到swap分区中,腾挪出内存页来,给page fault时调度使用。

82110

10.2【前端开发】图片文件格式:常见图片格式对比有何优劣以及如何使用Googlewebp格式?

1、JPEG: ①支持摄影图像或写实图像高级压缩,并且可利用压缩比例控制图像文件大小; ②有损压缩会使图像数据质量下降, ③JPG不适合具有大块颜色相近区域或亮度,适合差异十分明显较简单图片,...④JPG存储摄影或写实图像一般能达到最佳压缩效果,比如网站背景图,轮播图,用户头像等 2、PNG优缺点 ①能在保证最不失真的情况下尽可能压缩图像文件大小。...WebP最初2010年发布,目标是减少文件大小,但达到和JPEG格式相同图片质量,希望能够减少图片档在网络上发送时间。...根据Google较早测试,WebP无损压缩比网络上找到PNG档少了45%文件大小,即使这些PNG档使用pngcrush和PNGOUT处理过,WebP还是可以减少28%文件大小。.../releases/webp/index.html 下载no-wic结尾软件包,仍然是三个平台都有的。

2.8K31

.NET 云原生架构师训练营(模块二 基础巩固 引入)--学习笔记

PATCH 修改(资源段落性修改) DELETE 删除 OPTIONS 状态码 200 300 已转移地址/永久移动(response redirect) 401 未认证 403 未授权 404 未找到文件...500 内部服务错误,服务器不知道如何处理错误 HTTP协议详解: https://www.cnblogs.com/tankxiao/archive/2012/02/13/2342672.html...基本功能 url映射 安全性(认证、授权等) 网页模板系统 razer pages 数据库关系与映射(ORM) 扩展功能 依赖注入 配置 日志 2.1.3 .net 与 .net core asp .net....net 是一个开发者平台统称,用它可以构建多种类型应用程序 .net 平台下开发语言:c#/F#/Visual Basic 平台标准 .NET Standard: https://dotnet.microsoft.com...garbage collector, JIT compiler, primitive data types and low-level classes asp .net core .net core 平台下一个

63810

Linux文件管理命令

ls -h 输出文件大小(MB...)...ls -F 不同文件结尾,输出不同符号 以 / 结尾就是文件夹 以*结尾就是可执行文件 普通文件类型,结尾没有符号 以上参数可以连接使用,例如  ls -Slh 详细输出当前目录下文件信息并按大小排序... >一般情况下,Linux命令参数都是可选,不同参数作用也不同 >Linux命令之间,必须得有一个或者多个参数 mkdir  -p递归创建文件夹 mkdir -p /opt/apollo/qq...Linux目录分隔符特点:第一个斜杠代表路径起点,根目录 >第二个斜杠开始就是目录之间一个分割符号 Windows和Linux目录结构区别: 还有各个目录含义,比如/dev表示U盘等插入计算机产生信息...Linux帮助命令 当你不知道Linux命令如何使用时候,可以使用man命令帮助你 : man   ls       进入man帮助文档后,按q退出文档 2.使用 --help参数: 帮助命令精简版

8910
领券