掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MemoryMappedFileを利用したデータの転送に関して (ID:150276)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
部分的にマッピングしてゆくオフセットの設定がよくわかりません。 HFUKUSHIさんに照会頂いたサイトの例によりますと、先頭アドレスからのオフセットを指定する(前者に上位32ビット,後者に下位32ビットを指定する)という事ですが、上位・下位ビットというのがわかりません。オフセット先のアドレスの事と思いますが、オフセットの量は分かりますが、そのアドレスはわかりません。 以下の様にマップが済んだデータ量毎にオフセットさせています。(大幅なオフセット移動ではない様に思うので下位の方に設定(根拠はありません))1行目はコピー出来ている様子ですが、2行目のマッピングで戻り値P1=nilとなってしまいます。 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv siz := SizeOf( Word ) * dimX * dimY ; HFILE_1 := CreateFileMapping( INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, siz, '_FileMappingData1' ); // ① if ( HFILE_1 <> 0 ) then begin for j := 0 to dimY - 1 do begin P1 := MapViewOfFile( HFILE_1, FILE_MAP_WRITE, 0, ( SizeOf( Word ) * dimX * j ), SizeOf( Word ) * dimX ); // ② ptr1 := @mmf_mtx.MTX[ 1 ][ 0, j ]; // ③ if ( P1 <> nil ) then begin CopyMemory( P1, ptr1, SizeOf( Word )* dimX ); // ④ end; end; UnmapViewOfFile( P1 ); end; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ①:MemoryMappedFileの作成時は、全体のマトリックスサイズで作成 ②:マッピング時に1行分のみマップし、次のマッピング時にそのマッピング分をオフセットしまた1行分マップします ③:動的配列の実体のアドレスを行毎に取得 ④:MemoryMappedFileのマップ先へ1行コピー マップ時のオフセット指定がうまく行けば、動的アドレスの場合でもMemoryMappedFileへ正しくコピーできるでしょうか?
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.