资料库: 内存映射

 

内存映射:

DLL (MS VC++ 2010) 用来与内存映射文件工作。

作者: o_O

 

也许对某些人有用:

或者,您也可以制作 RAM 磁盘并在其中放置文件。RAM 磁盘是位于计算机 RAM 中的虚拟磁盘。

我使用这样的软件来创建 RAM 磁盘http://ramdisk.nm.ru/ramdiskent-rus.htm

 

我希望这一切都能写入 MQL,这样就可以在没有 dll 的情况下使用了。

谢谢 Alex,很酷的东西。

 
Urain:

如果所有这些都能在 MQL 中实现就好了,这样就可以在没有 dll 的情况下使用。

不幸的是,整个问题在于一个函数--MapViewOfFile。 它返回一个指针,所以你不能在 MQL 中直接使用它......你不能把一个指针带到一个数组。

所有其他函数(只有 4 个--CreateFileMapping、OpenFileMapping、UnmapViewOfFile、CloseHandle)都可以调用。
,但只有MapViewOfFile 无法直接从 MQL 中使用映射创建一个功能齐全的工作。很遗憾,我也很想在没有自写 DLL 的情况下完成它。

 
sergeev:

不幸的是,整个问题在于一个函数 -MapViewOfFile。 它返回一个指针,因此不能直接在 MQL 中使用......不能将指针指向数组。

所有其他函数(只有 4 个--CreateFileMapping、OpenFileMapping、UnmapViewOfFile、CloseHandle)都可以调用。
,但只有MapViewOfFile 无法直接从 MQL 中创建一个功能齐全的映射工作。很遗憾,我自己也很想不使用自写的 DLL。

其实不是你的问题,我是想告诉 MQ 开发人员,这个问题是老问题了,显然需要解决。

ZY 我写过通过事件将指针传递到数组的函数,目的类似(但在一个 MT 中),但没有 DLL 也不行,尽管 DLL 中的函数是单行的。

 
Urain:

其实不是你,这是给 MQ 开发人员的信息,问题是老问题了,显然需要解决。

是的,需要就是需要。

你有没有做过创建转换器函数的工作?

例如,某些 dll 函数返回一个指针,所以我们有 int(4)。在大多数情况下,这将是一个指向某个结构的指针。

接下来的任务就是从这个结构中提取数据。我们知道结构的大小,因此可以先将指针转换为指向字符数组的指针。

这里有一个问题--如何进行重新分配? 如何作弊? 也许可以通过一个中间的 dll 函数,在其中传递指针,然后它将返回这个字符数组?
,然后通过简单的 = 将这个字符数组转移到我们的结构体中。

下面是 dll 中这种函数的一个变体

void Convert(char *_in, char *_out) { _out=_in; }

从 mql 调用时是这样的

// 例如,api 函数返回一个指向数据结构的指针
int ptr=ФункцияИзАпи(); // 指针指向 ДанныеИзАпи

struct ДанныеИзАпи
{
  // api 的数据结构 16 个字节
};

struct refData
{
 char byte[16]; // 相同结构的图像,也 = 16 字节 
};

refData ref;

Convert(ptr, ref.byte); // 翻译数组指针

ДанныеИзАпи data=ref; // 通过简单复制来填充结构的字段

PS
虽然我想到了 memcpy,但它也是通过指针复制的。 我现在应该试试。
 
是的。memcpy 可以工作 !与strcpy 结合使用,甚至可以正确处理字符串

,因此它可以直接工作!!!!!
 

又一块对 MK 有利的石头。

为什么要做这样的手脚?

难道他们自己的节目真的能毁了他们的脸吗?

 
Urain:

其实,这并不是针对你的,这是给 MQ 开发人员的信息,这个问题是老问题了,显然需要解决。

总之,一切都很好,问题已经解决,不使用自写动态链接库的 MQL5 圣经已经成功制作并经过测试。

我已将其交付出版:)

 
her.human:

又一块对 MK 有利的石头。

为什么要做这样的手脚?

他们自己的程序真的能毁容吗?

MQ5/EX5 程序非常容易传播,如果没有严格的安全控制,就会给用户造成无法弥补的损失。

这就是MQL5 应用程序语言 受保护的原因,它不能调用危险函数,只能在自己的沙盒中工作。MQL5 与 DLL 库集成,可扩展功能。

 
Renat:

MQ5/EX5 程序非常容易传播,如果没有严格的安全控制,可能会给用户造成无法弥补的损失。

因此,MQL5 应用程序语言 被设计成受保护的,不能调用危险函数,并在自己的沙盒中工作。与 DLL 库的集成可扩展功能。

市场如何?

市场是否允许使用 win dll?

一般来说,我知道答案,这也是我建议在 MQL5 标准中实现此功能的原因。