Shinobi Library

1998/10/18


ファイルシステム関数

0. 概要

GD-ROM のアクセス機能を提供します。

1. データ仕様

1.1 定数

gdFsSeekのモード
名称機能
GDD_SEEK_SETファイルの先頭
GDD_SEEK_CURファイルの現在の読み込み位置
GDD_SEEK_ENDファイルの最後

再生ステータス
名称機能
GDD_STAT_IDLEアイドル
GDD_STAT_COMPLETE動作完了
GDD_STAT_READ読み込み中
GDD_STAT_ERRエラー発生
GDD_STAT_FATAL致命的なエラーが発生

ドライブステータス
名称機能
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エラー

エラーステータス
名称機能
GDD_ERR_OK正常終了
GDD_ERR_INITライブラリ初期化に失敗しました
GDD_ERR_RESETドライブの初期化に失敗しました
GDD_ERR_LIBOVオーバーレイの初期化に失敗しました
GDD_ERR_MOUNTマウントできませんでした
GDD_ERR_DISC不正なディスクを使用しました
GDD_ERR_DIRREC不正なディレクトリレコードハンドルを使用しました
GDD_ERR_CANTOPENファイルがオープンできませんでした
GDD_ERR_NOTFOUNDファイルが見つかりませんでした
GDD_ERR_NOHNDL未使用のハンドルが見つかりませんでした
GDD_ERR_ILLHNDL不正なハンドルを使用しました
GDD_ERR_NOTDIRディレクトリではありません
GDD_ERR_DIROVER格納できるエントリー数を超えました
GDD_ERR_BUSY実行中です
GDD_ERR_32ALIGN32バイト境界からはずれています
GDD_ERR_SIZE32バイト単位ではありません
GDD_ERR_SEEKシークの指定が不正です
GDD_ERR_OFS指定された位置が不正です
GDD_ERR_ILLTMODE転送モードが正しくありません
GDD_ERR_READ読み込みに失敗しました
GDD_ERR_NOTREAD読み込み中ではありません
GDD_ERR_TOUTタイムアウトしました
GDD_ERR_EOFファイルの終端に達しました
GDD_ERR_TRAYOPENDトレイがオープンされています
GDD_ERR_SIZEOVER要求サイズが大きすぎます
GDD_ERR_FATAL致命的なエラーが発生しました
GDD_ERR_UNDEF未定義なエラーです
GDD_ERR_NOERRエラーはありませんでした
GDD_ERR_RECOVERエラーが発生しましたが復帰しました
GDD_ERR_NOTREADYドライブの準備ができていません
GDD_ERR_MEDIAメディアエラー
GDD_ERR_HWAREハードウエアエラー
GDD_ERR_ILLREQ不正なリクエストを発行しました
GDD_ERR_UNITATTENT媒体の交換を検出しました
GDD_ERR_PROTECTプロテクトされています
GDD_ERR_ABORT中断されました
GDD_ERR_NOREADABLE読み込みできません
GDD_ERR_CHECKBUSYメディアのチェック中です

転送ステータス
GDD_FS_TRANS_READY転送可能
GDD_FS_TRANS_BUSY転送中
GDD_FS_TRANS_COMPLETE転送完了
GDD_FS_TRANS_ERROR転送エラー
ファイルフラグ
Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0
Multi Extent********ProtectionRecordAssociatedDirectoryExistence

1.2 データ型

GDFS
ファイルハンドル

GDFS_DIRREC
ディレクトリレコードハンドル

GDFS_DIRINFO
ディレクトリ情報
名称機能
Sint32fad先頭FAD
Sint32fsizeファイルサイズ
Uint8flagファイルフラグ
Uint8pad[3]予約

GDFS_FUNC
コールバック関数
名称機能
void *objコールバック関数に渡される第一引数

GDFS_ERRFUNC
エラーコールバック関数
名称機能
void *objコールバック関数に渡される第一引数
Sint32errcodeエラーコード
GDFS_DAINFO
ディレクトリ情報
名称機能
Sint32trackトラック番号
Sint32min経過時間(分)
Sint32sec経過時間(秒)
Sint32frame経過時間(フレーム)
Sint32fadフレームアドレス

1.3 マクロ

gdFsGetWorkSize

[SYNOPSIS]
gdFsGetWorkSize(max_open)
[ARGUMENTS]
max_open
同時にオープンできるファイル数
[RETURN]
必要なライブラリワークエリアのバイト数
[DESCRIPTION]
ライブラリのワークエリアの必要とするバイト数を求めます
[EXAMPLES]
Uint32 gdfswork[gdFsGetWorkSize(8)/4];

gdFsGetDirrecSize

[SYNOPSIS]
gdFsGetDirrecSize(max_dirent)
[ARGUMENTS]
max_dirent
ディレクトリの最大エントリ数
[RETURN]
必要なディレクトリバッファのバイト数
[DESCRIPTION]
ディレクトリバッファのバイト数を求めます
[EXAMPLES]
Uint32 gdfscurdir[gdFsGetDirrecSize(64)/4];

gdFsCalcSctSize

[SYNOPSIS]
gdFsCalcSctSize(bytes)
[ARGUMENTS]
bytes
ファイルのバイトサイズ
[RETURN]
セクタサイズ
[DESCRIPTION]
バイト数からセクタ数を算出します
[EXAMPLES]
	GDFS gf;
	Sint32 flen;
	Sint32 fslen;
	
	gf = gdFsOpen("TEST.BIN", NULL);
	gdFsGetFileSize(gdfs, &flen);
	fslen = gdFsCalcSctSize(flen);

2. 関数仕様

2.1関数一覧

関数 機能
gdFsInitGDFSの初期化
gdFsReinitファイルシステムの再マウント
gdFsFinishファイルシステムの終了
gdFsCreateDirhnディレクトリハンドルの生成
gdFsLoadDirディレクトリの読み取り
gdFsSetDirカレントディレクトリを設定
gdFsChangeDirカレントディレクトリの変更
gdFsGetDirInfoファイルの情報を取得
gdFsOpenファイルのオープン
gdFsOpenRangeファイルのセクタ指定オープン
gdFsCloseファイルのクローズ
gdFsSeekファイルの読み出し位置変更
gdFsTellファイルの次の読み出し位置を取得
gdFsCheckEofファイルがEOFに到達したかを調べる
gdFsGetFileSizeファイルサイズの取得
gdFsGetFileSctSizeファイルのセクタサイズ取得
gdFsGetFadファイルのFADを取得
gdFsReadファイルの読み込み
gdFsReqRd32ファイルの読み込み
gdFsGetStatファイルの状態取得
gdFsGetErrStatファイルのエラー状態取得
gdFsGetNumRdファイルの読み込み済みサイズの取得
gdFsStopRdファイルの読み込み中断
gdFsMovePickupピックアップ (読取装置) の移動
gdFsReqGdRdGDバッファへの先読みのリクエスト発行
gdFsTrans32GDバッファからの転送指定
gdFsGetWorkHn現在実行中のハンドルの取得
gdFsGetSysHn<新規>システムハンドルの取得
gdFsGetTransStat転送状態を取得
gdFsGetTocTOCの取得
gdFsGetDrvStatドライブの状態の取得
gdFsReqDrvStat<新規>ドライブ状態の更新
gdFsEntryRdEndFunc読み込み終了時のコールバック関数を登録
gdFsEntryTrEndFunc転送終了時のコールバック関数を登録
gdFsEntryErrFuncエラー発生時のコールバック関数を登録
gdFsEntryErrFuncAll<新規>全ハンドルに対するエラー発生時のコールバック関数を登録
gdFsDaPlayDAのトラック再生
gdFsDaPlaySctDAのセクタ指定再生
gdFsDaStopDAの再生停止
gdFsDaPauseDAの再生の一時停止
gdFsDaReleaseDAの再生の一時停止解除
gdFsDaGetInfo<新規>DAの再生情報を取得

2.2関数API


gdFsInit

[関数]
Sint32 gdFsInit(Sint32 max_open, void *gdfs_work, Sint32 max_dirent, void *dirbuf)
[入力]
max_open
同時にオープンできるファイル数
gdfs_work
ワークエリアのポインタ(ユーザー領域から提供)
max_dirent
カレントディレクトリのエントリ数
dirbuf
カレントディレクトリのバッファ(ユーザー領域から提供)
[出力]
なし
[戻値]
この関数で返される主なエラーコードは以下の通りです。
返される値意味
GDD_ERR_OK初期化完了
GDD_ERR_32ALIGNgdfs_workが32バイト境界にない
GDD_ERR_RESETドライブのリセットに失敗した
GDD_ERR_TRAYOPENDGDトレイが空いている
GDD_ERR_DISCこのディスクは扱えません
GDD_ERR_MOUNTマウントに失敗した
GDD_ERR_DIROVERルートディレクトリのエントリー数が多すぎるエラーステータス
[機能]
GDファイルシステムを初期化します。
[使用例]
Uint32 gdfswork[gdFsGetWorkSize(8)/4];
Uint32 gdfscurdir[gdFsGetDirrecSize(64)/4];

gdFsInit(8, gdfswork, 64, gdfscurdir);
[注意]
gdfs_workは32 Byte alignでなければなりません。(dirbuf は 4 Byte align で結構です。)
一度初期化が完了した後、gdFsFinish関数を呼び出さずにgdFsInit関数を呼び出しても再初期化されません。
gdFsInit関数で処理される主な内容は、以下のとおりです。
  1. デバイスドライバの初期化
  2. ワークエリアの初期化
  3. デバイスの初期化
  4. マウント処理

gdFsReinit

[関数]
Sint32 gdFsReinit(void)
[入力]
なし
[出力]
なし
[戻値]
エラーコード
[機能]
GDファイルシステムの再マウントをします。
デバイスの初期化からマウント処理までを行います。
メディアの交換時などに使用してください。
[使用例]
gdFsReinit();
[注意]

gdFsFinish

[関数]
gdFsFinish(void)
[入力]
なし
[出力]
なし
[戻値]
なし
[機能]
GDファイルシステムの使用を停止します
[使用例]
Uint32 gdfswork[gdFsGetWorkSize(8)/4];
Uint32 gdfscurdir[gdFsGetDirrecSize(64)/4];

gdFsInit(8, gdfswork, 64, gdfscurdir);
gdFsFinish();
[注意]

gdFsCreateDirhn

[関数]
GDFS_DIRREC gdFsCreateDirhn(void *dirbuf, Sint32 max_dirent)
[入力]
dirbuf
ディレクトリのバッファ
max_dirent
ディレクトリのエントリ数
[出力]
なし
[戻値]
ディレクトリレコードハンドル
[機能]
ディレクトリハンドルを生成します
[使用例]
Uint32 dirbuf[gdFsGetDirrecSize(64)];
GDFS_DIRREC g_dir;

g_dir = gdFsCreateDirhn(dirbuf, 64);
[注意]

gdFsLoadDir

[関数]
Sint32 gdFsLoadDir(const char *dirname, GDFS_DIRREC gf_dirrec)
[入力]
dirname
ディレクトリ名
[出力]
gf_dirrec
ディレクトリレコードハンドル
(NULLの場合はカレントディレクトリへ)
[戻値]
エラーコード
[機能]
ディレクトリレコードを読み込みます。
[使用例]
/* サンプル 1 */
/* MOVIE directory を g_dir へ読み取る */
Uint32 dirbuf[gdFsGetDirrecSize(64)];
GDFS_DIRREC g_dir;

g_dir = gdFsCreateDirhn(dirbuf, 64);
gdFsLoadDir("MOVIE", g_dir);

/* サンプル 2 */
/* カレントディレクトリを DATA directory へ移動する */
gdFsLoadDir("DATA", NULL);
[注意]
大文字と小文字は同一視します。

gdFsSetDir

[関数]
Sint32 gdFsSetDir(GDFS_DIRREC gf_dirrec)
[入力]
gf_dirrec
ディレクトリレコードハンドル
[出力]
なし
[戻値]
エラーコード
[機能]
カレントディレクトリを設定します。
[使用例]
/* MOVIE directory を g_dir へ読み取る */
Uint32 dirbuf[gdFsGetDirrecSize(64)];
GDFS_DIRREC g_dir;

g_dir = gdFsCreateDirhn(dirbuf, 64);
gdFsLoadDir("MOVIE", g_dir);
gdFsSetDir(g_dir);
[注意]

gdFsChangeDir

[関数]
Sint32 gdFsChangeDir(const char *dirname)
[入力]
dirname
ディレクトリ名
[出力]
なし
[戻値]
エラーコード
[機能]
カレントディレクトリを変更します。
[使用例]
/* カレントディレクトリを DATA directory へ移動する */
gdFsChangeDir("DATA");
[注意]
大文字と小文字は同一視します。

gdFsGetDirInfo

[関数]
Sint32 gdFsGetDirInfo(const char *name, GDFS_DIRINFO dirinfo)
[入力]
name
ファイル名/ディレクトリ名
[出力]
dirinfo
ファイル情報
[戻値]
エラーコード
[機能]
ファイルの情報を取得します
[使用例]
GDFS_DIRINFO dinfo;
gdFsGetDirInfo("ABC.DAT", &dinfo);
[注意]

gdFsOpen

[関数]
GDFS gdFsOpen(const char *fname, GDFS_DIRREC gf_dirrec)
[入力]
fname
ファイル名
gf_dirrec
ファイル名を検索するディレクトリレコードハンドル
NULL の場合はカレントから検索します。
[出力]
なし
[戻値]
NULL
失敗
それ以外
ファイルハンドル
[機能]
ファイルをオープンします
[使用例]
/* サンプル 1 */
GDFS gf;

gf = gdFsOpen("A.BIN", NULL);

/* サンプル 2 */
GDFS gf;
Uint32 dirbuf[gdFsGetDirSize(64)];
GDFS_DIRREC g_dir;

g_dir = gdFsCreateDirhn(dirbuf, 64);
gdFsLoadDir("MOVIE", g_dir);
gf = gdFsOpen("SMP.MOV", g_dir);
[注意]

gdFsOpenRange

[関数]
GDFS gdFsOpenRange(Sint32 stsct, Sint32 nsct)
[入力]
stsct開始セクタ
endsct終了セクタ
[出力]
なし
[戻値]
NULL
失敗
それ以外
ファイルハンドル
[機能]
セクタを指定してファイルをオープンします。
[使用例]
GDFS gf;

gf = gdFsOpenRange(0xB555, 0x10);
gdFsClose(gf);
[注意]
単密領域のファイルオープンは出来ません。

gdFsClose

[関数]
void gdFsClose(GDFS gdfs);
[入力]
gdfs
ファイルハンドル
[出力]
なし
[戻値]
なし
[機能]
ファイルをクローズします
[使用例]
GDFS gf;

gf = gdFsOpen("TEST.BIN", NULL);
gdFsClose(gf);
[注意]

gdFsSeek

[関数]
Sint32 gdFsSeek(GDFS gdfs, Sint32 sctno, Sint32 type)
[入力]
gdfs
ファイルハンドル
sctno
セクタ番号
type
GDD_SEEK_SETファイルの先頭
GDD_SEEK_CURファイルの現在の読み込み位置
GDD_SEEK_ENDファイルの最後
[出力]
なし
[戻値]
エラーコード
[機能]
ファイルの読み込みポインタを移動します
[使用例]
GDFS gf;

gf = gdFsOpen("TEST.BIN", NULL);

/* 先頭から 5 セクタ目にシークする */
gdFsSeek(gf, 5, SEEK_SET);
[注意]

gdFsTell

[関数]
Sint32 gdFsTell(GDFS gdfs);
[入力]
gdfs
ファイルハンドル
[出力]
なし
[戻値]
読み込み位置
[機能]
セクタ単位でファイルの読み込みポインタの位置を取得します。
[使用例]
Sint32 pos;
GDFS gf;

gf = gdFsOpen("TEST.BIN", NULL);

pos = gdFsTell(gf);
[注意]

gdFsCheckEof

[関数]
Sint32 gdFsCheckEof(GDFS gdfs, Bool *iseof)
[入力]
gdfs
ファイルハンドル
[出力]
iseof
0ファイルの終了ではない
0以外ファイルの終了
[戻値]
エラーコード
[機能]
ファイルが EOF に到達したかを調べます。
[使用例]
GDFS gf;
Bool flag;
Sint32 ret;

gf = gdFsOpen("TEST.BIN", NULL);

/* 読み込み処理の後 */

ret = gdFsCheckEof(gf, &flag);
if (ret == GDD_ERR_OK && flag == TRUE) {
  gdFsClose(gf);
  return;
}
[注意]

gdFsGetFileSize

[関数]
Bool gdFsGetFileSize(GDFS gdfs, Sint32 *fsize)
[入力]
gdfs
ファイルハンドル
[出力]
fsize
ファイルサイズ(バイト)
[戻値]
true
取得に成功
false
ハンドルが不正等の理由で、取得に失敗
[機能]
ファイルサイズを取得します
[使用例]
GDFS gf;
Sint32 flen;

gf = gdFsOpen("TEST.BIN", NULL);
gdFsGetFileSize(gdfs, &flen);
[注意]

gdFsGetFileSctSize

[関数]
Bool gdFsGetFileSctSize(GDFS gdfs, Sint32 *fsctsize)
[入力]
gdfs
ファイルハンドル
[出力]
fsctsizeファイルサイズ (セクタ)
[戻値]
true
取得に成功
false
ハンドルが不正等の理由で、取得に失敗
[機能]
ファイルのセクタサイズを取得します
[使用例]
GDFS gf;

Sint32 fslen;

gf = gdFsOpen("TEST.BIN", NULL);
gdFsGetFileSctSize(gdfs, &fslen);
[注意]

gdFsGetFad

[関数]
Bool gdFsGetFad(GDFS gdfs, Sint32 *fad)
[入力]
gdfs
ファイルハンドル
[出力]
fad
フレームアドレス (物理セクタ)
[戻値]
true
取得に成功
false
ハンドルが不正等の理由で、取得に失敗
[機能]
ファイルの FAD を取得します
[使用例]
Sint32 fad;
Sint32 gf;
	
gf = gdFsOpen("TEST.BIN", NULL);
gdFsGetFad(gf, &fad);
[注意]

gdFsRead

[関数]
Sint32 gdFsRead(GDFS gdfs, Sint32 nsct, void *buf)
[入力]
gdfs
ファイルハンドル
nsct
読み込むセクタ数
[出力]
buf
格納バッファ
[戻値]
エラーコード
[機能]
ファイルを読み込みます。
読み込みが終了するまでは関数から戻ってきません。(完了復帰)
[使用例]
GDFS gf;
Sint32 buf[32*2048/4];

gf = gdFsOpen("TEST.BIN", NULL);
gdFsRead(gf, 32, buf);
gdFsClose(gf);
[注意]

gdFsReqRd32

[関数]
Sint32 gdFsReqRd32(GDFS gdfs, Sint32 nsct, void *buf)
[入力]
gdfs
ファイルハンドル
nsct
読み込むセクタ数
[出力]
buf
格納バッファ
[戻値]
実際にリクエストされたセクタ数 (> 0)。負のときはエラーコード
[機能]
ファイルの読み込みリクエストします。
関数は読み込みのリクエストをかけただけで戻ってきます。実際の読み込みが終了したかどうかについては、別途調べる必要があります。(即時復帰)
[使用例]
GDFS gf;
Uint32 buf[32*2048/4];

gf = gdFsOpen("TEST.BIN", NULL);
gdFsReqRd32(gf, 32, buf);

while (gdFsGetStat(gf) == GDD_STAT_READ);

gdFsClose(gf);
[注意]
bufは32 bytes alignにする必要があります。
また、リクエストの受付は同時に1つのみです。

gdFsGetStat

[関数]
Sint32 gdFsGetStat(GDFS gdfs)
[入力]
gdfs
ファイルハンドル
[出力]
なし
[戻値]
GDD_STAT_IDLEアイドル
GDD_STAT_COMPLETE動作完了
GDD_STAT_READ読み込み中
GDD_STAT_ERRエラー発生
GDD_STAT_FATAL致命的なエラーが発生

[機能]
ハンドルの状態を取得します
[使用例]
GDFS gf;
Uint32 buf[32*2048/4];

gf = gdFsOpen("TEST.BIN", NULL);
gdFsReqRd32(gf, 32, buf);

while (gdFsGetStat(gf) == GDD_STAT_READ);

gdFsClose(gf);
[注意]

gdFsGetErrStat

[関数]
Sint32 gdFsGetErrStat(GDFS gdfs)
[入力]
gdfs
ファイルハンドル
[出力]
なし
[戻値]
エラーコード
[機能]
ハンドルのエラー状態を取得します
[使用例]
GDFS gf;
Uint32 buf[32*2048/4];
Sint32 stat;
Sint32 err;

gf = gdFsOpen("TEST.BIN", NULL);
gdFsReqRd32(gf, 32, buf);

while ((stat = gdFsGetStat(gf)) == GDD_STAT_READ);

if (stat == GDD_STAT_ERR) {
  err = gdFsGetErrStat(gf);
  /* error 処理 */
}
gdFsClose(gf);
[注意]

gdFsGetNumRd

[関数]
Sint32 gdFsGetNumRd(GDFS gdfs);
[入力]
gdfs
ファイルハンドル
[出力]
なし
[戻値]
0以上 読み込んだバイト数
[機能]
読み込んだバイト数を取得します
[使用例]
GDFS gf;
Uint32 buf[32*2048/4];

gf = gdFsOpen("TEST.BIN", NULL);
gdFsReqRd32(gf, 32, buf);

while (gdFsGetStat(gf) != GDD_STAT_COMPLETE) {
  readnum = gdFsGetNumRd(gdfs);
}

gdFsClose(gf);
[注意]

gdFsStopRd

[関数]
Sint32 gdFsStopRd(GDFS gdfs)
[入力]
gdfs
ファイルハンドル
[出力]
なし
[戻値]
エラーコード
[機能]
リクエストを中断します
[使用例]
gdFsStopRd(gf);
[注意]

gdFsMovePickup

[関数]
Sint32 gdFsMovePickup(GDFS gdfs)
[入力]
gdfs
ファイルハンドル
[出力]
なし
[戻値]
エラーコード
[機能]
次の読み込み位置に、ピックアップを移動する
[使用例]
gdFsMovePickup(gf);
[注意]

gdFsReqGdRd

[関数]
Sint32 gdFsReqGdRd(GDFS gdfs, Sint32 nsct)
[入力]
gdfs
ファイルハンドル
nsct
読み込みセクタ数
[出力]
なし
[戻値]
実際にリクエストされたセクタ数 (> 0)。負のときはエラーコード
[機能]
GD バッファへの先読みリクエスト発行
[使用例]
gdFsReqGdRd(gf, 128);
[注意]

gdFsTrans32

[関数]
Sint32 gdFsTrans32(GDFS gdfs, Sint32 nbytes, void *buf)
[入力]
gdfs
ファイルハンドル
nbytes
転送するバイト数 (32 バイト単位)
[出力]
buf
転送先アドレス
[戻値]
エラーコード
[機能]
GD バッファからの転送指定
[使用例]
while ((stat = gdFsGetStat(gf)) == GDD_STAT_READ) {
  if (gdFsGetTransStat(gf) == GDD_TRANS_READY)
  gdFsTrans32(gf, 2048, buf);
}
[注意]

gdFsGetTransStat

[関数]
Sint32 gdFsGetTransStat(GDFS gdfs)
[入力]
gdfs
ファイルハンドル
[出力]
なし
[戻値]
転送状態
[機能]
転送状態を取得
[使用例]
gdFsGetTransStat(gf);
[注意]

gdFsGetWorkHn

[関数]
GDFS gdFsGetWorkHn(void)
[入力]
なし
[出力]
なし
[戻値]
現在実行中のハンドル。なければNULL。
[機能]
動作中のハンドルを取得
[使用例]
GDFS gf;
gf = gdFsGetWorkHn();
[注意]

gdFsGetSysHn

[関数]
GDFS gdFsGetSysHn(void)
[入力]
なし
[出力]
なし
[戻値]
システムハンドル。
[機能]
システムハンドルを取得します。
システムハンドルが実行中かどうかを調査するために使用します。
[使用例]
GDFS sys;
sys = gdFsGetSysHn();
stat = gdFsGetStat(sys);
[注意]

gdFsGetToc

[関数]
Sint32 gdFsGetToc(Sint32 type, void *buf)
[入力]
type
TOC のタイプ
1
高密
[出力]
buf
TOC を読み込むためのバッファ
必要バイト数は408バイトです。
[戻値]
エラーコード
[機能]
TOC の取得します
[使用例]
gdFsGetToc(0, &buf);
[注意]
単密領域のTOC情報は取得できなくなりました。

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エラー

[機能]
ドライブ状態の取得します
[使用例]
Sint32 dstat;
dstat = gdFsGetDrvStat();
[注意]

gdFsReqDrvStat

[関数]
Sint32 gdFsReqDrvStat(void)
[入力]なし
[出力]なし
[戻値]
エラーコード
[機能]
ドライブ状態を更新させます。
[使用例]
Sint32 dstat;
gdFsReqDrvStat();
/* リクエスト動作完了の後 */
dstat = gdFsGetDrvStat();

[注意]

gdFsEntryRdEndFunc

[関数]
void gdFsEntryRdEndFunc(GDFS gdfs, GDFS_FUNC func, void *obj);
[入力]
gdfs
ファイルハンドル
func
コールバック関数
obj
コールバック関数に渡す第1引数
[出力]
なし
[戻値]
なし
[機能]
読み込み完了時のコールバック関数を登録します
[使用例]
void rdend_callback(void *obj)
{
/* 処理 */
}

gdFsEntryRdEndFunc(gf, rdend_callback, (void *) 0x1234);
[注意]

gdFsEntryTrEndFunc

[関数]
void gdFsEntryTrEndFunc(GDFS gdfs, GDFS_FUNC func, void *obj)
[入力]
gdfs
ファイルハンドル
func
コールバック関数
obj
コールバック関数にわたす第一引数
[出力]
なし
[戻値]
なし
[機能]
転送完了時のコールバック関数を登録します
[使用例]
void trend_callback(void *obj)
{
/* 処理 */
}

gdFsEntryTrEndFunc(gf, trend_callback, (void *) 0x1234);
[注意]

gdFsEntryErrFunc

[関数]
void gdFsEntryErrFunc(GDFS gdfs, GDFS_ERRFUNC func, void *obj)
[入力]
gdfs
ファイルハンドル
func
コールバック関数
obj
コールバック関数にわたす第一引数
[出力]
なし
[戻値]
なし
[機能]
エラー発生時のコールバック関数を登録します
[使用例]
void err_callback(void *obj, Sint32 errcode)
{
/* 処理 */
}

gdFsEntryErrFunc(gf, err_callback, (void *) 0x1234);

[注意]

gdFsEntryErrFuncAll

[関数]
void gdFsEntryErrFuncAll(GDFS_ERRFUNC erfunc, void *obj)
[入力]
erfunc
コールバック関数
obj
コールバック関数に渡す第一引数
[出力]
なし
[戻値]
なし
[機能]
全ハンドルに対するエラー発生時のコールバック関数を登録します。
[使用例]
void err_callback(void *obj, Sint32 errcode)
{
  /* 処理 */
}

gdFsEntryErrFuncAll(err_callback, (void *) 0x1234);
[注意]

gdFsDaPlay

[関数]
Sint32 gdFsDaPlay(Sint32 st_track, Sint32 end_track, Sint32 reptime)
[入力]
st_track
開始トラック番号
end_track
終了トラック番号
reptime
繰り返し回数(0-14: くり返し回数, 15: 無限ループ)
[出力]
なし
[戻値]
エラーコード
[機能]
DA再生を開始します
[使用例]
gdFsDaPlay(4, 4, 0);
[注意]
単密領域のDA再生は出来ません。

gdFsDaPlaySct

[関数]
Sint32 gdFsDaPlaySct(Sint32 st_sct, Sint32 end_sct, Sint32 reptime)
[入力]
st_sct
開始セクタ
end_sct
終了セクタ
reptime
繰り返し回数(0-14: くり返し回数, 15: 無限ループ)
[出力]
なし
[戻値]
エラーコード
[機能]
DA 再生をセクタ指定で開始します
[使用例]
gdFsDaPlaySct(0xC000, 0xD000, 2);
[注意]
単密領域のDA再生は出来ません。

gdFsDaStop

[関数]
Sint32 gdFsDaStop(void)
[入力]
なし
[出力]
なし
[戻値]
エラーコード
[機能]
DA 再生を停止させます
[使用例]
gdFsDaStop();
[注意]

gdFsDaPause

[関数]
Sint32 gdFsDaPause(void)
[入力]
なし
[出力]
なし
[戻値]
エラーコード
[機能]
DA 再生の一時停止
[使用例]
gdFsDaPause();
[注意]

gdFsDaRelease

[関数]
Sint32 gdFsDaRelease(Sint32 reptime)
[入力]
reptime
くり返し回数
[出力]
なし
[戻値]
エラーコード
[機能]
DA 再生の一時停止解除
[使用例]
gdFsDaRelease(0);
[注意]

gdFsDaGetInfo

[関数]
Sint32 gdFsDaGetInfo(GDFS_DAINFO info)
[入力]
なし
[出力]
info
DA再生情報
[戻値]
エラーコード
[機能]
DAの再生情報を取得します。
[使用例]
gdFsDaGetInfo(info);
[注意]
システムハンドルを取得しステータスを監視してください。
GDD_STAT_COMPLETE になった時だけ情報が格納されます。

オーバービューに戻る

TOPに戻る
Copyright 1998 SEGA Enterprises, LTD.