##### Shinobi Library - ファイルシステム関数

# gdFsGetDrvStat

ドライブ状態の取得

### 書式

> `Sint32 gdFsGetDrvStat( void )
> `

### 引数

> なし

### 戻り値

> ドライブステータス

### 解説

> ドライブの状態を取得します。

> ドライブステータスは以下の値が戻ります。

> 定義 | 意味
> GDD_DRVSTAT_BUSY | 稼働中
> GDD_DRVSTAT_PAUSE | ポーズ状態
> GDD_DRVSTAT_STANDBY | スタンバイ状態
> GDD_DRVSTAT_SEEK | シーク中
> GDD_DRVSTAT_PLAY | 再生中
> GDD_DRVSTAT_SCAN | スキャン再生中
> GDD_DRVSTAT_OPEN | ディスクドアが開いている
> GDD_DRVSTAT_NODISC | ディスクがない
> GDD_DRVSTAT_RETRY | リトライ
> GDD_DRVSTAT_ERROR | エラー

> ドライブステータスが取得できなかった場合は -1が戻ります。

### 用例

>     Sint32 dstat;
>     dstat = gdFsGetDrvStat();

### 備考

> GDエミュレータ(GD-Workshop)と実ドライブでは以下のような仕様の違いがあります。

> 環境 | 仕様
> Dreamcast実機、Dev.Box(実ドライブ) | ドライブの状態は常に更新される。→　gdFsGetDrvStat()関数は現在のドライブ状態を返す。
> Dev.Box(エミュレータ) | ドライブの状態はドライブに処理を要求し、それが完了したときのみ更新される。→　gdFsGetDrvStat()は、最新のコマンド発行時の状態を返す。→　GDエミュレータのドライブの状態を更新させるためには、ステータス更新用のコマンドを発行しなくてはならない。

> このためエミュレータ使用時は、ドアオープンを行ってもこの関数では、現在の状態を取得できません。 簡単な対処として、定期的にコマンドを発行することでこの問題は回避できます。 しかし、実ドライブでは意味がなく、パフォーマンスの低下となりますので、開発のテスト目的での使用にとどめておくべきでしょう。

> (実ドライブでは、この処理は不要です)
> BEGIN -------- Patch (メインループに追加)
> {
> static Sint32 LoopCount = 0;
> if ( ((LoopCount++) % 60) == 0 ){
> gdFsReqDrvStat();
> }
> END ---------- Patch

> この関数はドライブに実際にアクセスする関数ではありません。

gdFsGetDrvStat

COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000