GDFS におけるアプリケーションの障害発生時等の対処法     1998/09/16


1. ドアオープン状態の検出

対処:
  gdFsDrvStat 関数にて GDD_DRVSTAT_OPEN を監視することによって行います。
  ただし、ドライブ状態はドライブに対して何かしらのコマンドが処理された
  時に更新されるため、検出する前にステータス更新用のコマンドを
  発行しなくてはなりません。

ファイルアクセスで無い場合の、ドアオープンチェック例:
  static Sint32 req_flag = 0;

  if (req_flag == 0) {
    if (gdFsReqDrvStat() == GDD_ERR_OK) req_flag = 1;
  } else {
    GDFS sys;

    sys = gdFsGetSysHn();
    if (gdFsGetStat(sys) != GDD_STAT_BUSY) req_flag = 0;

    if (gdFsGetDrvStat() == GDD_DRVSTAT_OPEN) {
      /* ドアオープンされたときの処理 */
    }
  }



2. GDD_ERR_UNITATTENT エラーの発生

対処:

GDD_ERR_UNITATTENT は、ドライブがメディアの交換を検出したときに発生します。
ディスク交換に未対応の場面では、本エラーに対して、ドアオープンと同様の
対処を行ってください。
ディスク交換の場面では、下記の手順にしたがって下さい。
この状態では、ドライブに対してのあらゆるアクセスが無効となります。
これを解除するには、メディアの認識処理が必要です。

メディアの認識処理には、syBtCheckDisc 関数を使用します。
メディア認識の正常終了後、ディスクの SystemID を確認してください。
目的のディスクであることが確認できたら、gdFsReinit 関数を使用して
ファイルシステムを初期化してください。
(もしくは、gdFsFinish 関数を実行後に、gdFsInit 関数を実行してください。)

[EOF]
