Shinobi Library - ペリフェラル・記録デバイス関数

buInit

メモリーカードファイルシステムの初期化

書式

Sint32 buInit( capa, drive, work, func )
Sint32 capa
Sint32 drive
void *work
BU_INITCALLBACK func

引数

capa   メディアの最大容量
drive   拡張ソケットの番号
work   ワークバッファ
func   初期化終了コールバック関数

戻り値

BUD_ERR_OK   正常終了
BUD_ERR_INVALID_PARAM   引数が異常

解説

メモリーカードファイルシステムを初期化します。 メディアの最大容量capaには次の値が指定可能です。 拡張ソケットの番号driveには次の値が指定できます。

 定義   意味 
 BUD_USE_DRIVE_ALL   すべての拡張ソケット 
 BUD_USE_DRIVE_A1   ポートAの拡張ソケット1 
 BUD_USE_DRIVE_A2   ポートAの拡張ソケット2 
 BUD_USE_DRIVE_B1   ポートBの拡張ソケット1 
 BUD_USE_DRIVE_B2   ポートBの拡張ソケット2 
 BUD_USE_DRIVE_C1   ポートCの拡張ソケット1 
 BUD_USE_DRIVE_C2   ポートCの拡張ソケット2 
 BUD_USE_DRIVE_D1   ポートDの拡張ソケット1 
 BUD_USE_DRIVE_D2   ポートDの拡張ソケット2 

ワークバッファworkにNULLを指定した場合、capaの設定は無視されメモリーカード用の バッファを動的に管理することができます。

初期化に成功したら指定の関数をコールバックします。 コールバック関数はこの関数からリターンする前に呼び出されます。 その場合、BUD_OP_CONNECTコールバックを検知した後、 挿入されているメモリーカードのサイズに見合ったバッファをアプリケーション側で確保し、 buMountDisk関数でマウント処理を行います。 その後は通常の使い方と同様な使い方ができます。

このような使い方をすることで、あらかじめ大きいバッファサイズを確保すること無く、 大容量のメモリーカードにも対応することが可能になります。


用例

/* Allocating two buffers for memory cards of up to 128K */
Uint32 work[BUM_WORK_SIZE(BUD_CAPACITY_128KB, 2) / sizeof(Uint32)];
void init_callback(void)
{
	:	
}
/* Corresponds to expansion sockets 1 and 2 of control port A */
buInit(BUD_CAPACITY_128KB, BUD_USE_DRIVE_A1
	| BUD_USE_DRIVE_A2, work, init_callback);

備考

最大容量や使用しているメモリーカード数によって、必要なワーク容量が大幅に異なります。

アプリケーションで対応する必要のない拡張ソケットのメモリーカードはなるべく指定しないようにしてください。 不要なメモリーカードを指定しないことにより、ワーク容量の削減とライブラリの高速化が可能です。 以下に、ワーク容量の目安を記します。

 最大容量   1ソケットあたりのワーク容量   8スロットでのワーク容量 
 128KB   8KB   64KB 
 256KB   14KB   112KB 
 512KB   28KB   220KB 
 1MB   55KB   440KB 

使用する拡張ソケットの指定にはBUD_USE_DRIVE_XXXを必ず指定してください。 BUD_DRIVE_XXXを誤って指定することのないようにしてください。


参照

buExit()
 メモリーカードファイルシステムの終了
buMountDisk()
 メモリーカードのマウント

buInit
COPYRIGHT © SEGA ENTERPRISES, LTD., 1998-2000