ライブラリ: DLLなしでのファイルマッピング - ページ 6

 
TheXpert:
スタンダードはスタンダードだから、何も突っ込むことはない、とんでもない。エラーが発生しました--開発者に報告してください。それ以外の方法はない。

標準のバイブルでは、呼び出しはGetLastError.

となっているが、本来は ::GetLastError.

そうでなければ、kernel32::GetLastErrorは バグです。

修正しない方法は?

 
Urain:

どうして修正されないのか?

ヒントも示したし、書いた。

#インポート

intGetLastError(int )

---

これでコンテキストは自由だ。

そのようにしたくない場合は、RtlGetLastErrorが似ている。

 
sergeev:

私はほのめかし、示し、そして書いた。

#インポート

int GetLastError(int )

---

コンテキストは自由だ。

そうしたくない場合は、RtlGetLastErrorも似たようなものだ。

MQの開発者だけが私たちに注意を払い、そうでなければ彼らは誰のためにもコードを書かず、人々が苦しむことになるのです。
 
sergeev:

RtlGetLastError - 似たようなものです。

RtlGetLastWin32Error - 似たようなもの。
 
共有メモリのサイズが4096バイトより大きい場合、CMemMapApi::Write / Read(memmaplib.mqhの219行目と231行目)のmemcpyXが"Access Violation "を表示します。memcpyに4kbより大きなメモリブロックを読み込ませるために「どこを掘ればいいのか」教えていただけませんか?
削除済み  

作者はその仕事に大きな敬意を払っている。もし作者が気にしないのであれば、この2つのクラスを私のSCLクラスライブラリに含めるつもりです。

しかし、マイクロソフトの標準的な型を定義するという点で、このクラスには誤りがあり、それがアルゴリズムに他の誤りを引き起こす原因となっています。例えば、DWORD型はintではなくuintです。このため、クラス内のいくつかのアルゴリズムを修正しなければなりませんでしたが、それほど難しいものではありませんでした。

 

_Konstantin_:

例えば、DWORD型はintではなくuintである。

ビット数は同じである。
削除済み  
sergeev:
ビット数は同じです。
マイクロソフトによれば、DWORD < 0が条件となるメソッドでは、DWORDは0より小さくできないので、警告が出る。総じて、私はこの2つのクラスが気に入りました。)
 
スレッドセーフがどのように実装されているのかよく理解できないのだが?複数のプロセスが同時に書き込みと読み込みを行うとします。論理的には、Lockfileのようなものがあるはずですが、libには見当たりませんでした。それとも、winapiレベルですでに実装されているのでしょうか?
 
Al_key:
スレッドセーフがどのように実装されているのかよく理解できないのだが?複数のプロセスが同時に書き込みと読み込みを行うとします。論理的には、Lockfileのようなものがあるはずですが、libには見当たりませんでした。それとも、すでにwinapiレベルで実装されているのでしょうか?

libにはセクションバインディングがありません。理論的には、コードは異なるプロセスで実行することができるからです。

それをコントロールするには、あなたのバリアントかhttps://www.mql5.com/ja/code/1835。

Mutex - на чистом WinAPI
Mutex - на чистом WinAPI
  • 投票: 29
  • 2013.08.20
  • o_O
  • www.mql5.com
Синхронизируем процессы ОС/EA/MT и т.д. Никаких самописных DLL. Настало время держать все под своим контролем!