T98-NEXTで共有フォルダを使う!!ネットワーク共有の代わりに★RamDrive98Plus変更履歴

RamDrive98Plusを修正しながら利用させて頂いています。
変更履歴を掲載しました。

元は http://www9.plala.or.jp/feature/Soft.htm のFeature 1 Factoryさんが2004年頃に作成されたものです。
以下は私がRamDrive98Plusを修正したものです。(ソース付)よろしければ自己責任でどうぞ。
http://yahoo.jp/box/Kl2kLf

どうしてもダメなリネームと、まれに不安定な結果となるRamDrive上のファイルをRamDriveに違う名前でコピーする、これら以外は安定して動作するようになりました。パチパチ

共有フォルダをマウントするフォルダとして設定すれば、複数のT98-NEXTでファイル共有ができます。
また業務でPC98から抜けれない方は必見かと。
プリンタ出力もPC201対応のパラレルポート搭載プリンタに、パラレルポート搭載のプリントサーバを接続することで、ネットワーク(TCP/IPの)経由で切り替えて使用したりできます。
よろしければこちら
http://blogs.yahoo.co.jp/koga2020/52620143.html
をご参照ください。



変更履歴

2013.7.23 設定画面のRamDriveのタイムラグが反映されていなかった(常に5000だった)ので修正した。
T98の電源ボタンで終了する際に、マウント・フォルダをRamDriveに読み込む処理が行われてしまう為、抑制するようにした。

2013.7.22 Windows側での変更をRamDriveに反映させるまで、5秒のタイムラグをとるようにした。
概要:フォルダ・マウント時にWindows側でリネーム・ファイルコピー・削除等を行うと、自動でRamDriveを初期化して
読込みし直します。ただ、ファイル1つが変更される毎に
  RamDriveを初期化 > フォルダのファイルをRamDriveにコピー
という動作を何度も繰り返す。
これを、最初の変更を感知してから5秒間の変更は感知してもスルーさせるようにし、多くのファイルコピー等ので動作を
安定させるようにした。
これに伴い、設定画面にタイムラグの時間を設定できる項目を追加した。初期値は5000ミリ秒(5秒)
詳細設定での「Windows側での変更をRamDriveに反映させる」を既定の設定とした。

2013.7.20 ログファイルの出力部にエラー処理を忘れていたので追加した。
ログファイル作成等でエラーが生じたときは、その後のログ出力をしないで続行するようにした。

2013.7.19 フォルダ・マウント時にWindows側の変更でRamDriveに反映させないオプションを追加
変更後のRamDriveをエミュ内で認識するにはT98-NEXTで電源ボタンのオン・オフが必要な為。

※他に判明した利用上の注意事項
RamDrive内のファイルに対してリネーム処理はダメ
RamDrive内のファイルからRamDrive内にファイルコピー(ファイル名はもちろん変えて)のコピーもダメ
中身がおかしいファイルができる。さらに、RamDriveのFATを壊してしまう。

設定画面を、オフなら安全な設定になるように表記を変更した。

2013.7.18 DEL *.* のようなコマンドで2つしかファイルが実際にはさくじょされないバグの修正
SearchWriteFile(DIRSTRUC* DirData, DIRSTRUC* DirBuffer, DWORD dwCount)関数はdwCountの回数forで回るが
1度削除したらreturn-1で抜けるようになっていた。
また、絶対パスを示すWriteFilePathがグローバル変数で使いまわしていたので、
char Tmp_WriteFilePath[_MAX_PATH];
としてfor処理の開始時に代入しなおして回るようにした。
あわせて、Windows側のファイル削除のあとRETURNしていたが、
DirData++;
DirBuffer++;
continue;//DEL *.*を正しく処理するために必要 2013.7.18 koga2020
//return -1
のように修正した。

マウントしたフォルダからRamDriveへファイルを取り込む(自動で行われるファイルコピー)際にWindows上で
ファイル名に半角英小文字がそのままでアクセスできなかったので、RamDrive上は半角英大文字にするようにした。
RamDrive上でのファイルコピーと削除(マウントしたフォルダ上のファイルも削除される設定でも)正常に動作します。

2013.7.17 起動直後の最初の操作で、RamDriveに対してディレクトリ作成を行うとエラーメッセージが出ていた。
原因はマウントしたフォルダの場合にRamDriveの変更箇所をフォルダに書き出す箇所で、ディレクトリ作成の場合に
ファイルのデータ部書き込みの箇所に推移してしまう。元々、hWriteFileがINVALID_HANDLE_VALUEだったら書き込まない
if文が書かれていたが、初期値の設定がなされていない為、ファイル作成等をする前にディレクトリ作成を行ってしまうと
hWriteFileは未定義(つまりINVALID_HANDLE_VALUEではないという判断)なのでファイルハンドルが開かれてもいないのに
データを書き出そうとしてしまうので「ファイルハンドルがない」といったエラーが出てしまっていた。
Winram_IO_OUT関数で最初に初期化する引数wDatが0のInitのときに初期値として代入するようにした。

2013.7.16 マウントしたフォルダに対して、読込専用とする機能を追加
メイン画面の設定で「マウントするフォルダを読込専用にする。」チェックボックスを追加しました。
エミュ内での変更はマウントしたフォルダへは反映されません。
具体的には、RamDriveにファイルコピー、ファイル削除といった操作をしてもホスト側のフォルダである
マウントしたフォルダは何も変わりません。
ただし、ホスト側でマウントしたフォルダに対して行われた操作によって変更があったときは、今までどおり
RamDriveはマウントしたフォルダの内容を再読み込みして上書きされます。
※RamDriveの変更をマウントしたフォルダに反映させる処理がうまくいかないケースがあるので、読込専用に
 できるようにした。具体的には、DELコマンドで*.*のようにワイルドカードを使用する削除は2つまでしかマウントした
 フォルダ内のファイルは削除されない。GFのようなソフトでは1つづつ削除処理を行うためか大丈夫。
 一方で、COPYコマンドでワイルドカードは大丈夫だが、GFのソフトでまとめてファイルコピーではマウントした
 フォルダには0サイズのファイルとなったり、中身が0x00のファイルだったりとおかしくなってしまう。

2013.7.14 ログファイル書き出し機能を追加
詳細設定画面にログファイル名の欄と出力の可否のチェックボックスを追加しました。
ログはRamDriveやマウントしたフォルダへの処理を中心に出力します。