要求された操作はユーザー マップ セクションで開いた……

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

◆ 要求された操作はユーザー マップ セクションで開いた……

たとえば、PC上で稀に以下のメッセージがでることがあります。

『要求された操作はユーザー マップ セクションで開いたファイルでは実行できません。』

私の場合、EXCELのブックを開いている時に、DOS画面からそのブックをcopyコマンドで上書きする場合にこのメッセージが出力されました。

また、VB等でEXCELを制御している時に異常終了するとEXCELのプロセスが残る場合が稀にあり、このプロセスがブックを掴んでいると、ブック上書きのcopyコマンド実行時にこのメッセージが出力されます。

尚、このメッセージは、WIN32 エラー・コードでは ERROR_USER_MAPPED_FILE に該当するステータスです。

また、MAPPED_FILEとは、ファイルマッピングされたファイルのことであるらしい。

「ファイルマッピング」とはファイルの内容をメモリ中にコピーすることである。

メモリ中にファイルが作成できると考えてよい。

メモリ中に存在するので、ファイルのI/Oを高速に扱うことができる。

また、複数のプロセス間でファイルマッピングオブジェクトを共有できるので

簡単に情報を共有することができる。

http://www.winapi-database.com/File/FileMapping/

しかし、実際には、単純に『ファイルの内容をメモリ中にコピーすること』ではないらしい。

「メモリにマップするというのはメモリに読み込むことなの?」と思われるかもしれませんが、実はそうではありません。これはあくまでもファイルに仮想アドレスを振り、ファイルをメモリのように見せているだけなので、数100MBというサイズのデータをマップしても、主記憶(メモリ)はちっとも消費されません(Releaseモードでタスクマネージャを見ながら実行してみるとわかります)。この性質は非常にありがたいんです。例えばテクスチャを数100枚まとめたでっかいファイルを作り、そこから必要なデータだけにポインタアクセスできたりします。

http://www.h6.dion.ne.jp/~game296o/DXCLS_MemoryMappedFile.html

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。

人のよいところをどんどん見つけよう