# MB_RegisterFile

## 構文

  `#include <nitro/mb.h>`
  `BOOL MB_RegisterFile(const MBGameRegistry *game_reg, const void *buf);`

## 引数

game_reg | 登録するプログラムの情報が格納された`MBGameRegistry`構造体へのポインタ
buf | 抽出したセグメント情報が格納されたメモリへのポインタ このセグメント情報は`MB_ReadSegment()`で取得します。 ここで指定したメモリは、関数が成功した場合`MB_UnregisterFile()`を呼ぶまで内部で使用されます。

## 返り値

プログラムを正しく登録できた場合はTRUE、そうでない場合はFALSEを返します。

## 説明

指定したプログラムファイルを、ダウンロードプログラムのリストに登録します。
親機は、同時に MB_MAX_FILE 個までのゲームプログラムを並行してダウンロードさせることができます。
マルチブートで動作する子機用バイナリは、NITRO ROM、HYBRID ROM です。詳しくは概要をご覧下さい。
指定するセグメントデータは、この関数の前に`MB_ReadSegment()`で取得しておく必要があります。
アーカイブから動的に読み込むよう設定されたセグメントデータを使用してこの関数を呼び出した場合、
MBライブラリの内部でスレッドがひとつだけ自動的に起動する点に注意してください。
詳細は`MB_ReadSegment()`の [内部動作] の項を参照ください。

(注意)
IPL上において、DSダウンロードプレイの子機がゲームを選択している時に、親機側で特定の手順を踏むと、選択していない親機のゲームがダウンロードされることがあります。
この問題は、`MB_RegisterFile()` で登録する個々のゲームごとに異なるGGIDをMBGameRegistry構造体へ設定しておくことによって発生を回避することができます。

## 参照

`MBGameRegistry
MB_GetSegmentLength MB_ReadSegment MB_UnregisterFile
`

## 履歴

2008/09/16 ダウンロードプログラムの制限事項を追記
2005/02/22 DSダウンロードプレイの不具合に関する記述を追加
2005/04/11 タスクスレッドの関する注意とリンクを追加
2004/09/09 MB_UnregisterFile()についての記述を追加
2004/08/09 初版