C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

異なるbit間での効率的なデータのやり取り

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■94560 / inTopicNo.1)  異なるbit間での効率的なデータのやり取り
  
□投稿者/ (oo) (1回)-(2020/04/21(Tue) 14:24:41)

分類:[VB.NET/VB2005 以降] 

言語=VB2013です。
各プロジェクトで使用するライブラリを作成しています。
ターゲットプラットフォームはAny CPUです。
このライブラリに、32bitのC++で作成したDLLを使った処理を組み込もうとしていますが、
元のアプリが64bitで動作する場合、32bitのDLLをそのまま呼び出せないので、
回避策として、上記ライブラリから32bitの別プロセスを呼び出し、
そのプロセス内で32bitのDLLを使用しています。

とりあえずこれでうまく動作したのですが、
上記ライブラリと32bitプロセス間のデータのやり取りで問題が出ました。
上記ライブラリが32bitプロセスを呼ぶ際に、処理結果のXMLファイルのパスを渡し、
32bitプロセス側で処理結果をこのXMLファイルに書き込む、
という方法でデータの受け渡しをやってみました。
データ量が少ない場合はこれで良いのですが、
32bitプロセスが返すデータ量がとても多かったり、何度もこのやり取りを繰り返すと
I/O処理に時間がかかってしまいます。
このデータをメモリ上でやり取りすることは出来ないでしょうか?
64bit⇔32bit間では無理なのでしょうか?
あるいはメモリの一部を仮想ドライブとして、そこで
各プロセス間のファイルのやり取りをする、なんて方法はないでしょうか?
引用返信 編集キー/
■94561 / inTopicNo.2)  Re[1]: 異なるbit間での効率的なデータのやり取り
□投稿者/ Hongliang (1006回)-(2020/04/21(Tue) 14:45:21)
いくつか方法はありますが、名前付きパイプが扱いやすいでしょうか。
System.IO.Pipes名前空間に、名前付きパイプを扱うクラスが用意されています。
引用返信 編集キー/
■94562 / inTopicNo.3)  Re[1]: 異なるbit間での効率的なデータのやり取り
□投稿者/ にゃるら (6回)-(2020/04/21(Tue) 15:19:17)
CreatePipeで名前付きパイプを作ってLPCでの通信が良いと思います。

https://docs.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-createpipe
引用返信 編集キー/
■94564 / inTopicNo.4)  Re[2]: 異なるbit間での効率的なデータのやり取り
□投稿者/ とっちゃん (670回)-(2020/04/21(Tue) 15:55:37)
64bitアプリ(親アプリ)から起動する32bitアプリ(子アプリ)が単体起動しないのなら、無名パイプという選択肢もあります。

.NET のパイプ名前空間(Anonimousで始まるのが無名パイプ、Namedで始まるのが名前付きパイプ)をリンクしておきます。

https://docs.microsoft.com/ja-jp/dotnet/api/system.io.pipes?view=netframework-4.8

引用返信 編集キー/
■94565 / inTopicNo.5)  Re[3]: 異なるbit間での効率的なデータのやり取り
□投稿者/ とっちゃん (671回)-(2020/04/21(Tue) 16:04:49)
No94564 (とっちゃん さん) に返信

あ、Anonimous じゃねー。Anonymous だ。><
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ