プロが教えるわが家の防犯対策術!

ファイルマッピングについての質問です。
現在CreatFileMapping、OpenFileMapping、MapViewOfFileをつかって
EXE間のデータのやり取りをしているのですが、
このファイルマッピングを利用して構造体を
やりとりする事は出来ないものでしょうか?
開発環境はWinNT4とVB6です。よろしくお願いします。

A 回答 (4件)

試してみました。



gOpenFileMappingMapViewOfFileFileMapReadFileMapWrite.vbpの変更点
---
Private Declare Sub MoveMemory Lib "kernel32.dll" _
Alias "RtlMoveMemory" _
(Destination As Any, _
Source As Any, _
ByVal Length As Long)

Private Type tyData
x As Long
y As Long
b(9999) As Byte
s As String * 1024
End Type
Private Data As tyData

Command1_Click()
Data.s = Text1.Text
' 文字列をコピー
Call MoveMemory(ByVal lngFileMapViewAddress, Data, Len(Data))

Command2_Click()
Data.s = ""
Call MoveMemory(Data, ByVal lngFileMapViewAddress, Len(Data))
Label3.Caption = RTrim(Data.s)

Command3_Click()
lngFileMapSizeLow = Len(Data)
---
普段はEXE間のデータはファイルで渡していますが、ファイルマッピングも
結構いいですね。今後、挑戦したいです。

この回答への補足

サンプルありがとうございます!
構造体受け渡し出来ました。こんどは二次元配列を送ってみようとしているんですが
構造体と同じやり方で出来るのでしょうか?今試しているのですが
どうにも上手くいきません(^^;

補足日時:2002/04/11 16:55
    • good
    • 0

>二次元配列



二次元配列を一つの構造体にするのが、手っ取り早いです。

Private Type tyData
x(100, 100) As Long
End Type

参考URL:http://support.microsoft.com/default.aspx?scid=% …
    • good
    • 0

試していませんが、lstrcopyをMoveMemoryに変更すればいいと思います。



構造体→ファイルマッピング
MoveMemory(lngFileMapViewAddress, 構造体,len(構造体))

ファイルマッピング→構造体
MoveMemory(構造体, lngFileMapViewAddress,len(構造体))

参考URL:http://www.vbvbvb.com/jp/gtips/0851/ggethostbyna …
    • good
    • 0

ファイルマッピングは経験ないけど


メモリブロックを渡すので、文字列であろうと構造体であろうと
同じだと思いますが、何か問題があるのでしょうか?

参考URL:http://www.vbvbvb.com/jp/gtips/1001/gOpenFileMap …

この回答への補足

まさにこのソースを使って作っているのですが、
書き込みに行くときのこのソースで言うText1.Textにあたる
部分を構造体にすると型が違うと言われます。
なのでバッファに当る変数の型を構造体型にしたところ
こんどは読み取り側で型が合わなくなります。読み取り側でバッファの型を
変えてもダメでした。現在そこで行き詰まっておりますm(_ _)m

補足日時:2002/04/10 20:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!