# CTRDG_SetPulledOutCallback

## 構文

      #include <nitro/ctrdg.h>

      void CTRDG_SetPulledOutCallback( CTRDGPulledOutCallback callback );

## 引数

callback | カートリッジ抜きを検出したときに呼び出されるコールバック関数

## 返り値

なし。

## 説明

カートリッジ抜きを検出したときに呼び出されるコールバック関数を設定します。

`CTRDGPulledOutCallback` は

> `typedef BOOL ( *CTRDGPulledOutCallback )( void );`

`で定義されるコールバック関数` callback `の型です。`

callback に NULL が指定されると、コールバックの呼び出しは行いません。

###
コールバックについて

コールバックの`返り値には、コールバックから抜けてすぐに停止する場合 TRUE を指定してください。FALSEを指定すると停止しません。必要な処理の後停止する場合は後から CTRDG_TerminateForPulledOut() を呼び出してください。`ただし`停止処理はPXIを使用してARM7に通達するので、割り込み禁止状態であるコールバックの中からは呼び出せません。`

例えば、抜けを検出したときに「DON'T PULL OUT CARTRIDGE」と表示して停止するには以下のようにします。
(init処理など、多くの行を端折ってあります)

> Example:
> `
> BOOL isPulledOut = FALSE;
> void NitroMain( void )
> {
> initializeRoutine();
> CTRDG_Init(); // maybe called in OS_Init()
> CTRDG_SetPulledOutCallback( myCallback ); // set callback
> while(1)
> {
> usualGameProcedure();
> if ( isPulledOut == TRUE ) // check if cartridge is pulled out
> {
> drawMessageRoutine( "DON'T PULL OUT CARTRIDGE" );
> CTRDG_TerminateForPulledOut(); // termination
> // program halted. never reached.
> }
> }
> }
> //---- callback for cartridge pulled out
> BOOL myCallback( void )
> {
> isPulledOut = TRUE; // remember that cartridge is pulled out
> return FALSE; // means not to terminate
> }
> `

## 参照

`CTRDG_Init, CTRDG_TerminateForPulledOut`

## 履歴

2004/09/15 初版