问题标签 [file-mapping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
54 浏览

windows - 文件上的内存映射过期了吗?

我有一个文件,我在该文件上使用内存映射来创建巨大的数组(可能不适合物理内存)。内存上映射了两个区域 - 数组计数(4 个字节)和一些正在文件上移动以访问数组的不同元素的窗口。

一切正常,除非一个问题。在对数组计数进行多次操作(有时是数百万次操作)之后 - 当我尝试通过其内存地址读取或写入此计数时,我收到系统消息“访问被拒绝”,该地址自创建以来从未改变。

看起来这个映射页面以某种方式过期......

get 或 set count 有时会随机产生错误,而且很少发生

0 投票
0 回答
33 浏览

ios - 打开对应文件类型的应用

ios - 使用swift在ios中单击时如何打开具有关联应用程序的文件?文件类型可以是 .pdf、.html、.png、.mp4 之类的东西吗?如何使用 swift 在 iphone 中打开默认文件管理器应用程序并导入所选文件?

0 投票
1 回答
145 浏览

c++ - 共享数据文件映射

您好,我想使用 microsoft 的文件映射将 P1 进程中的类中的对象共享到 P2.exe 进程:https ://msdn.microsoft.com/fr-fr/library/windows/desktop/aa366537(v= vs.85).aspx

P1 写入数据,P2 读取它们。我想共享所有数据,但它不起作用。

P1:

P2:

所以我只尝试使用 2 个字符串进行测试:add.nameLogFile= "Logfil" 和 add.nameWindow = "Windowstest"; 两者的大小。P2 可以很好地读取两个字符串。

但是当我有一个字符(add.nameWindow = "Windowstest+" 大小均为 28)时,它不再起作用了。这可能是大小或内存错误:

TCHAR szName[] = TEXT("Global\MyFileMappingObject");

所以我的问题是:

如何增加文件或缓冲区的数据大小?如何在文件映射中传递我的对象类的所有成员(两个字符串和 HWND hwndWindow;HANDLE histFile;WIN32_FIND_DATA dataFile)是否还有其他方法可以在两个进程之间共享来自对象的数据。

PS:我阅读了很多论坛,我没有找到我的答案或不明白。

谢谢大家。

0 投票
2 回答
1355 浏览

c++ - 如何通过文件映射对象重新映射共享内存的视图?

假设我有一个共享文件映射对象:

我得到了一小部分供查看,如下所示:

那么,如果我需要分配更多数据,是否可以在MapViewOfFile不先取消映射的情况下再次调用pData

PS。我的目标不是在映射整个 32K 共享内存段时浪费 CPU 周期,因为我可能需要读取的内容可能远少于此。

0 投票
1 回答
6786 浏览

c++ - 异常在“0x00007FFF168E1657 (vcruntime140d.dll).exe": 0xC0000005: 访问冲突写入位置 0x0000000000000000

我尝试为进程间通信(IPC)创建两个不同的可视 C++ 控制台应用程序。两个代码的构建都是成功的。但是,当我尝试调试它时,我得到这样的异常“在 FileMapServer_Parent.exe 中的 0x00007FFF168E1657 (vcruntime140d.dll) 抛出异常:0xC0000005:访问冲突写入位置 0x0000000000000000

运行父进程时出现异常:[1]:https ://i.stack.imgur.com/bomQB.png

0 投票
0 回答
99 浏览

winapi - 确定一个文件是否有一个打开的文件映射 - 有没有不那么骇人听闻的方法?

我们需要确定我们打开的文件是否具有打开的文件映射句柄或映射视图。

我发现唯一可行的方法是使用SetEndOfFile尝试在文件末尾添加几个字节,然后再次删除这些字节,然后测试失败 + ERROR_USER_MAPPED_FILE。

虽然 SetEndOfFile 的文档明确要求不映射文件,但这似乎仍然是一个相当复杂的解决方法。有没有更简单的方法?

0 投票
0 回答
942 浏览

sql-server - 导出向导 SQL Server Management Studio 找不到映射文件 无法转换数据类型以适应 Postgresql

我想将我们的数据库导出SQL Server 2008到我们的PostgreSQL server.

问题是在Import/Export WizardWizard说他找不到正确的文件来正确转换。(如果我继续他在不检查导致错误转换的情况下导出 -> 数据不会导出,只有表定义)

我相信解决方案是制作请求的文件 - 但我不知道如何。XML-files您可以在其中找到两个:

我在这些网站上找到了一些信息,但我无法将这些信息放在一起来理解它:

我正在使用 SQL Server Studio Management 2017,通过 .Net Framework Data Provide for Odbc 导出。我的计划是文件 alá MSSql10ToODBC.XML 和 SSIS10ToODBC.XML

有没有人做过这个或任何想法我能做什么?

0 投票
1 回答
252 浏览

c++ - C++ 在 Windows、SSD 与 HDD 上命名为共享内存

我正在使用 NSM 在单独的进程之间交换数据,并且一切正常且花花公子,但是在页面文件中声明了内存空间,我认为这是一种默认方式。

我的问题是,文件是在磁盘上声明的,然后将实际内容放入 RAM 中,然后从那里访问吗?我一直在我的家用计算机上进行实验,这是 i5 4 核、16 GB 1800 MHz RAM 和 SSD,以及实验室的 i9 12 核、32 GB 2800 MHz RAM 和HDD上的相同实验。

“更好”的计算机要慢很多倍(相同的实验参数),但有人告诉我它与 SSD 或 HDD 没有任何关系。实验算法大量使用 NSM 进行数据交换,所以如果它必须访问磁盘上的文件,我可以看到为什么它会更慢,但如果都是 RAM ......那么呢?

0 投票
0 回答
121 浏览

c - 防止 CreateFileMapping 更改源文件 (Windows)

我正在研究 Windows 上的内存映射并编写了以下代码(为了便于阅读,我从副本中省略了错误处理):

其中lengthOfFile是我之前以这种方式计算的文件的长度(由于某些与这种情况无关的原因):

并且填充是我需要添加的一些额外长度(您可以通过阅读上面的代码找出原因)。

之后,我对内存映射文件执行一些操作,这些操作涉及到它的修改以及将它的新值分配给另一个函数。

我怎样才能做到这一点,以便当我关闭file_hmap_h处理源文件(文件名)时保持不变(现在,一旦我关闭它的句柄,它就会被修改,因为那个额外的填充显然被“刷新”到句柄关闭后的源文件)?

我尝试将PAGE_WRITECOPY标志与PAGE_READWRITE(需要修改内存映射文件的内容)一起使用,但CreateFileMapping函数无法返回ERROR_INVALID_PARAMETER (87) 错误。

换句话说,我需要实现在 Unix 中使用的相同行为: mmap(0,lengthOfFile + padding,PROT_READ | PROT_WRITE, **MAP_PRIVATE**,fileno(file),0); 我猜关键点是MAP_PRIVATE属性。

0 投票
2 回答
2154 浏览

windows - Windows 中的系统文件缓存使用 RAM 的哪一部分?

根据关于页面缓存的一般概念和这个答案 ,系统文件缓存基本上使用了任何其他进程未使用的所有 RAM。据我所知,这就是 Linux 中页面缓存的情况。

由于“免费 RAM”的概念在 Windows 中有点模糊,我的问题是,系统文件缓存使用 RAM 的哪一部分?比如任务管理器中的“Available RAM”是不是一样?