drive | 拡張ソケットの番号 |
*fname | ファイル名を取得するアドレス |
BUD_ERR_OK | 正常終了 |
BUD_ERR_FILE_NOT_FOUND | ファイルがない |
BUD_ERR_UNFORMAT | フォーマットされていない |
BUD_ERR_NO_DISK | メモリーカードがない |
BUD_ERR_BUSY | 何らかのTYPE_B関数が処理中である |
拡張ソケットを指定する引数 drive には次の値が指定可能です。
BUD_DRIVE_A1 | ポートAの拡張ソケット1 |
BUD_DRIVE_A2 | ポートAの拡張ソケット2 |
BUD_DRIVE_B1 | ポートBの拡張ソケット1 |
BUD_DRIVE_B2 | ポートBの拡張ソケット2 |
BUD_DRIVE_C1 | ポートCの拡張ソケット1 |
BUD_DRIVE_C2 | ポートCの拡張ソケット2 |
BUD_DRIVE_D1 | ポートDの拡張ソケット1 |
BUD_DRIVE_D2 | ポートDの拡張ソケット2 |
通常、buFindFistFile()関数と組み合わせて、ドライブにある全ファイル名を取得するのに使用します。
Sint32 ret, files, blocks, totel; char fname[16]; BUS_FILEINFO info; files = blocks = total = 0; /* 第1ファイルのファイル名取得 */ ret = buFindFirstFile(drive, fname); if (ret < 0) { if (ret == BUD_ERR_FILE_NOT_FOUND) goto end; else goto err; } if (buGetFileInfo(drive, fname, &info) < 0) goto err; blocks = info.blocks; total += blocks; files++; do { printf("%12s %10d bytes(%3d blocks)\n", files, blocks * 512, blocks); /* 第2ファイル以降のファイル名取得 */ ret = buFindNextFile(drive, fname); if (ret < 0) { if (ret == BUD_ERR_FILE_NOT_FOUND) goto end; else goto err; } if (buGetFileInfo(drive, fname, &info) < 0) goto err; blocks = info.blocks; total += blocks; files++; } while (files < FILE_MAX); end: return OK; err: return NG;