1998/10/18
GD-ROM のアクセス機能を提供します。
- ディレクトリのアクセス
- ファイルのオープン/クローズ
- ファイルの読み込み(完了復帰)
名称 | 機能 |
---|---|
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_32ALIGN | 32バイト境界からはずれています |
GDD_ERR_SIZE | 32バイト単位ではありません |
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 | 転送エラー |
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
---|---|---|---|---|---|---|---|
Multi Extent | **** | **** | Protection | Record | Associated | Directory | Existence |
型 | 名称 | 機能 |
---|---|---|
Sint32 | fad | 先頭FAD |
Sint32 | fsize | ファイルサイズ |
Uint8 | flag | ファイルフラグ |
Uint8 | pad[3] | 予約 |
型 | 名称 | 機能 |
---|---|---|
void * | obj | コールバック関数に渡される第一引数 |
型 | 名称 | 機能 |
---|---|---|
void * | obj | コールバック関数に渡される第一引数 |
Sint32 | errcode | エラーコード |
型 | 名称 | 機能 |
---|---|---|
Sint32 | track | トラック番号 |
Sint32 | min | 経過時間(分) |
Sint32 | sec | 経過時間(秒) |
Sint32 | frame | 経過時間(フレーム) |
Sint32 | fad | フレームアドレス |
GDFS gf; Sint32 flen; Sint32 fslen; gf = gdFsOpen("TEST.BIN", NULL); gdFsGetFileSize(gdfs, &flen); fslen = gdFsCalcSctSize(flen);
関数 | 機能 |
---|---|
gdFsInit | GDFSの初期化 |
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 | ピックアップ (読取装置) の移動 |
gdFsReqGdRd | GDバッファへの先読みのリクエスト発行 |
gdFsTrans32 | GDバッファからの転送指定 |
gdFsGetWorkHn | 現在実行中のハンドルの取得 |
gdFsGetSysHn<新規> | システムハンドルの取得 |
gdFsGetTransStat | 転送状態を取得 |
gdFsGetToc | TOCの取得 |
gdFsGetDrvStat | ドライブの状態の取得 |
gdFsReqDrvStat<新規> | ドライブ状態の更新 |
gdFsEntryRdEndFunc | 読み込み終了時のコールバック関数を登録 |
gdFsEntryTrEndFunc | 転送終了時のコールバック関数を登録 |
gdFsEntryErrFunc | エラー発生時のコールバック関数を登録 |
gdFsEntryErrFuncAll<新規> | 全ハンドルに対するエラー発生時のコールバック関数を登録 |
gdFsDaPlay | DAのトラック再生 |
gdFsDaPlaySct | DAのセクタ指定再生 |
gdFsDaStop | DAの再生停止 |
gdFsDaPause | DAの再生の一時停止 |
gdFsDaRelease | DAの再生の一時停止解除 |
gdFsDaGetInfo<新規> | DAの再生情報を取得 |
返される値 | 意味 |
---|---|
GDD_ERR_OK | 初期化完了 |
GDD_ERR_32ALIGN | gdfs_workが32バイト境界にない |
GDD_ERR_RESET | ドライブのリセットに失敗した |
GDD_ERR_TRAYOPEND | GDトレイが空いている |
GDD_ERR_DISC | このディスクは扱えません |
GDD_ERR_MOUNT | マウントに失敗した |
GDD_ERR_DIROVER | ルートディレクトリのエントリー数が多すぎるエラーステータス |
Uint32 gdfswork[gdFsGetWorkSize(8)/4]; Uint32 gdfscurdir[gdFsGetDirrecSize(64)/4]; gdFsInit(8, gdfswork, 64, gdfscurdir);
gdFsReinit();
Uint32 gdfswork[gdFsGetWorkSize(8)/4]; Uint32 gdfscurdir[gdFsGetDirrecSize(64)/4]; gdFsInit(8, gdfswork, 64, gdfscurdir); gdFsFinish();
Uint32 dirbuf[gdFsGetDirrecSize(64)]; GDFS_DIRREC g_dir; g_dir = gdFsCreateDirhn(dirbuf, 64);
/* サンプル 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);
/* MOVIE directory を g_dir へ読み取る */ Uint32 dirbuf[gdFsGetDirrecSize(64)]; GDFS_DIRREC g_dir; g_dir = gdFsCreateDirhn(dirbuf, 64); gdFsLoadDir("MOVIE", g_dir); gdFsSetDir(g_dir);
/* カレントディレクトリを DATA directory へ移動する */ gdFsChangeDir("DATA");
GDFS_DIRINFO dinfo; gdFsGetDirInfo("ABC.DAT", &dinfo);
/* サンプル 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);
GDFS gf; gf = gdFsOpenRange(0xB555, 0x10); gdFsClose(gf);
GDFS gf; gf = gdFsOpen("TEST.BIN", NULL); gdFsClose(gf);
GDD_SEEK_SET | ファイルの先頭 |
GDD_SEEK_CUR | ファイルの現在の読み込み位置 |
GDD_SEEK_END | ファイルの最後 |
GDFS gf; gf = gdFsOpen("TEST.BIN", NULL); /* 先頭から 5 セクタ目にシークする */ gdFsSeek(gf, 5, SEEK_SET);
Sint32 pos; GDFS gf; gf = gdFsOpen("TEST.BIN", NULL); pos = gdFsTell(gf);
0 | ファイルの終了ではない |
0以外 | ファイルの終了 |
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; }
GDFS gf; Sint32 flen; gf = gdFsOpen("TEST.BIN", NULL); gdFsGetFileSize(gdfs, &flen);
GDFS gf; Sint32 fslen; gf = gdFsOpen("TEST.BIN", NULL); gdFsGetFileSctSize(gdfs, &fslen);
Sint32 fad; Sint32 gf; gf = gdFsOpen("TEST.BIN", NULL); gdFsGetFad(gf, &fad);
GDFS gf; Sint32 buf[32*2048/4]; gf = gdFsOpen("TEST.BIN", NULL); gdFsRead(gf, 32, buf); gdFsClose(gf);
GDFS gf; Uint32 buf[32*2048/4]; gf = gdFsOpen("TEST.BIN", NULL); gdFsReqRd32(gf, 32, buf); while (gdFsGetStat(gf) == GDD_STAT_READ); gdFsClose(gf);
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);
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);
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(gf);
gdFsMovePickup(gf);
gdFsReqGdRd(gf, 128);
while ((stat = gdFsGetStat(gf)) == GDD_STAT_READ) { if (gdFsGetTransStat(gf) == GDD_TRANS_READY) gdFsTrans32(gf, 2048, buf); }
gdFsGetTransStat(gf);
GDFS gf; gf = gdFsGetWorkHn();
GDFS sys; sys = gdFsGetSysHn(); stat = gdFsGetStat(sys);
gdFsGetToc(0, &buf);
名称 | 機能 |
---|---|
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();
Sint32 dstat; gdFsReqDrvStat(); /* リクエスト動作完了の後 */ dstat = gdFsGetDrvStat();
void rdend_callback(void *obj) { /* 処理 */ } gdFsEntryRdEndFunc(gf, rdend_callback, (void *) 0x1234);
void trend_callback(void *obj) { /* 処理 */ } gdFsEntryTrEndFunc(gf, trend_callback, (void *) 0x1234);
void err_callback(void *obj, Sint32 errcode) { /* 処理 */ } gdFsEntryErrFunc(gf, err_callback, (void *) 0x1234);
void err_callback(void *obj, Sint32 errcode) { /* 処理 */ } gdFsEntryErrFuncAll(err_callback, (void *) 0x1234);
gdFsDaPlay(4, 4, 0);
gdFsDaPlaySct(0xC000, 0xD000, 2);
gdFsDaStop();
gdFsDaPause();
gdFsDaRelease(0);
gdFsDaGetInfo(info);