12. 付録

12.1. ファイルシステムのアクセスでエラーを発生させる方法

セーブデータなどへのアクセスでエラーハンドリングが正しく行われているかどうかを確認するために、特定のエラーをアクセス時に発生させる方法を紹介します。

12.1.1. カードアプリの場合

セーブデータアーカイブのマウント時(CARD1)

エラー 発生方法
nn::fs::ResultNotFormatted

以下の手順で行います。

  1. PARTNER-CTR Debuggerに該当の 3DSカードを差す。
  2. 「CTR(C) -> CTR CARDのバックアップデバイス(B) 」で「CTR CARDのバックアップデバイス」ダイアログを表示する。
  3. 「バックアップデバイス全体に特定の値を書き込む。」を選択し、ドロップダウンでは「バックアップデバイスを工場出荷状態にする。」を選択する。
  4. 「開始」ボタンをクリックする。
nn::fs::ResultBadFormat

以下の手順で行います。

  1. PARTNER-CTR Debuggerに該当の 3DSカードを差す。
  2. 「CTR(C) -> CTR CARDのバックアップデバイス(B) 」で「CTR CARDのバックアップデバイス」ダイアログを表示する。
  3. 「バックアップデバイス全体に特定の値を書き込む。」を選択し、ドロップダウンでは「バックアップデバイスのフォーマットを不正にする。」を選択する。
  4. 「開始」ボタンをクリックする。
nn::fs::ResultVerificationFailed

以下の手順で行います。

  1. PARTNER-CTR Debuggerに該当の 3DSカードを差す。
  2. 「CTR(C) -> CTR CARDのバックアップデバイス(B) 」で「CTR CARDのバックアップデバイス」ダイアログを表示する。
  3. 「ファイルの内容をバックアップデバイスへ出力。(ファイル→バックアップデバイス)」を選択し、ファイル名には、マウント時に nn::fs::ResultVerificationFailed を返す特殊なセーブデータ(1MbitVerificationFailed.bin または 4MbitVerificationFailed.bin)を選択する。
  4. 「開始」ボタンをクリックする。
想定外のエラー (調査中)

セーブデータアーカイブのマウント時(CARD2)

エラー 発生方法
nn::fs::ResultNotFormatted (調査中)
nn::fs::ResultBadFormat (調査中)
nn::fs::ResultVerificationFailed

以下の手順で行います。

  1. PARTNER-CTR Debugger で該当のアプリケーションの cci ファイルを読み込む。
  2.  「CTR(C) -> カード制御(C) -> カードエミュレーション制御 -> バックアップ領域の操作(CARD2) -> エミュレーションメモリのバックアップデータをファイルへ出力(デバッガ->ファイル) 」を実行してファイルを出力する。
  3. 出力されたファイルをバイナリエディタで開き、先頭から 4 KByte の範囲を改ざんする。
  4. PARTNER-CTR Debugger で 「ファイルの内容をエミュレーションメモリのバックアップ領域へロード(ファイル->デバッガ)」を実行し、アプリケーションを起動する。
想定外のエラー (調査中)

セーブデータアーカイブ(ほかのアプリケーション)のマウント時

エラー 発生方法
nn::fs::ResultNotFound セーブデータなし、ファイル破壊など。
nn::fs::ResultNotFormatted (調査中)
nn::fs::ResultBadFormat このエラーを発生させる方法はありません。
nn::fs::ResultVerificationFailed このエラーを発生させる方法はありません。
nn::fs::ResultOperationDenied セーブデータアーカイブのあるメディアを抜く。
想定外のエラー 書き込みを行ったあとにセーブデータアーカイブのあるメディアを抜いて、nn::fs::CommitSaveData を呼び出す。

拡張セーブデータアーカイブのマウント時

エラー 発生方法
nn::fs::ResultNotFound

以下のいずれかを行う。

  • フォーマット直後の SD カードを挿入する。
  • 拡張セーブデータアーカイブを削除する。
nn::fs::ResultMediaNotFound

以下のいずれかを行う。

  • SD カードを抜いた状態にする。
  • SD カードスロットに空の miniSD アダプターや microSD アダプターを挿入する。
nn::fs::ResultNotFormatted

該当の追加データがある SD カードを PC に差し、SD カード内の以下のディレクトリまたはファイルを削除する。

  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000 (ディレクトリ)
  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000/00000001
nn::fs::ResultBadFormat (調査中)
nn::fs::ResultVerificationFailed

該当の追加データがある SD カードを PC に差し、SD カード内の以下のファイルをバイナリエディタで開いて、先頭から 4 KByte の範囲を改ざんする。

  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000/00000001
nn::fs::ResultOperationDenied

該当の追加データがある SD カードを PC に差し、SD カード内の以下のディレクトリまたはファイルを読み取り専用属性にする。

  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000 (ディレクトリ)
  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000/00000001
nn::fs::ResultWriteProtected SD カードの書込み防止タブを "Lock" にする。
nn::fs::ResultMediaAccessError 接触不良などのハードウェアが要因で発生するエラーですが、確実に発生させる方法はありません。
nn::fs::ResultNotEnoughSpace SD カードの空き容量が極端に少なくなるように(TBD バイト以下に)する。
想定外のエラー (調査中)

書き込み専用 sdmc アーカイブのマウント時

エラー 発生方法
nn::fs::ResultMediaNotFound

以下のいずれかを行う。

  • SD カードを抜いた状態にする。
  • SD カードスロットに空の miniSD アダプターや microSD アダプターを挿入する。
nn::fs::ResultBadFormat (調査中)
nn::fs::ResultOperationDenied (調査中)
nn::fs::ResultWriteProtected このエラーは発生しません。
nn::fs::ResultMediaAccessError 接触不良などのハードウェアが要因で発生するエラーですが、確実に発生させる方法はありません。
想定外のエラー (調査中)

セーブデータアーカイブへのファイル・ディレクトリ操作時

エラー 発生方法
nn::fs::ResultNotFound

以下の手順で行います。

  1. セーブデータが工場出荷状態でアプリケーションを起動し、フォーマットと初期データの作成を終える。
  2. SaveDataFiler ツールを使用してセーブデータのすべてのファイルを削除する。
nn::fs::ResultAlreadyExists (調査中)
nn::fs::ResultVerificationFailed

SaveDataFiler ツールを使用してセーブデータを改竄し、ファイル/ディレクトリ操作時に nn::fs::ResultVerificationFailed を返す状態にする。

※セーブデータの状況によっては、SaveDataFiler ツールで破壊できないことがあります。

nn::fs::ResultOperationDenied (調査中)
nn::fs::ResultMediaAccessError 接触不良などのハードウェアが要因で発生するエラーですが、確実に発生させる方法はありません。
nn::fs::ResultNotEnoughSpace (調査中)
想定外のエラー (調査中)

拡張セーブデータアーカイブへのファイル・ディレクトリ操作時

エラー 発生方法
nn::fs::ResultNotFound SaveDataFiler を使用して、ファイルを削除する。
nn::fs::ResultMediaNotFound 確実にエラーを発生させる方法はありません。
nn::fs::ResultAlreadyExists (調査中)
nn::fs::ResultVerificationFailed

該当の追加データがある SD カードを PC に差し、SD カード内の以下のファイルをバイナリエディタで開いて、先頭から 4 KByte の範囲を改ざんする。

  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000 ディレクトリ内の 00000001、00000002 を除くすべてのファイル
nn::fs::ResultArchiveInvalidated SD カードを抜いた状態にする。
nn::fs::ResultOperationDenied

該当の追加データがある SD カードを PC に差し、SD カード内の以下のディレクトリまたはファイルを読み取り専用属性にする。

  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000 (ディレクトリ)
  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000/00000001
nn::fs::ResultWriteProtected SD カードの書込み防止タブを "Lock" にする。
nn::fs::ResultMediaAccessError 接触不良などのハードウェアが要因で発生するエラーですが、確実に発生させる方法はありません。
nn::fs::ResultNotEnoughSpace 書き込もうとしているファイルのサイズよりも、SD カードの空き容量が少なくなるようにする。
想定外のエラー (調査中)

書き込み専用 sdmc アーカイブへのファイル・ディレクトリ操作時

エラー 発生方法
nn::fs::ResultNotFound (調査中)
nn::fs::ResultMediaNotFound

以下のいずれかを行う。

  • SD カードを抜いた状態にする。
  • SD カードスロットに空の miniSD アダプターや microSD アダプターを挿入する。
nn::fs::ResultAlreadyExists (調査中)
nn::fs::ResultArchiveInvalidated SD カードを抜いた状態にする。
nn::fs::ResultOperationDenied (調査中)
nn::fs::ResultWriteProtected SD カードの書込み防止タブを "Lock" にする。
nn::fs::ResultMediaAccessError 接触不良などのハードウェアが要因で発生するエラーですが、確実に発生させる方法はありません。
nn::fs::ResultNotEnoughSpace 書き込もうとしているファイルのサイズよりも、SD カードの空き容量が少なくなるようにする。
想定外のエラー (調査中)

12.1.2. ダウンロードアプリの場合

セーブデータアーカイブのマウント時

エラー 発生方法
nn::fs::ResultNotFormatted SaveDataFiler を使用して、セーブデータアーカイブを削除する。
nn::fs::ResultBadFormat (調査中)
nn::fs::ResultVerificationFailed

該当のアプリケーションがある SDカードを PC に差し、SDカード内の以下のファイルをバイナリエディタで開き、先頭から 4 KByte の範囲を改ざんする。

  • Nintendo 3DS/…/title/<ProgramID Hi32>/<ProgramID Lo32>/data/00000001.sav
想定外のエラー (調査中)

セーブデータアーカイブ(ほかのアプリケーション)のマウント時

エラー 発生方法
nn::fs::ResultNotFound セーブデータなし、ファイル破壊など。
nn::fs::ResultNotFormatted (調査中)
nn::fs::ResultBadFormat このエラーを発生させる方法はありません。
nn::fs::ResultVerificationFailed このエラーを発生させる方法はありません。
nn::fs::ResultOperationDenied セーブデータアーカイブのあるメディアを抜く。
想定外のエラー 書き込みを行ったあとにセーブデータアーカイブのあるメディアを抜いて、nn::fs::CommitSaveData を呼び出す。

拡張セーブデータアーカイブのマウント時

エラー 発生方法
nn::fs::ResultNotFound 拡張セーブデータアーカイブを削除する。
nn::fs::ResultMediaNotFound (調査中)
nn::fs::ResultNotFormatted

該当の追加データがある SD カードを PC に差し、SD カード内の以下のディレクトリまたはファイルを削除する。

  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000 (ディレクトリ)
  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000/00000001
nn::fs::ResultBadFormat (調査中)
nn::fs::ResultVerificationFailed

該当の追加データがある SD カードを PC に差し、SD カード内の以下のファイルをバイナリエディタで開いて、先頭から 4 KByte の範囲を改ざんする。

  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000/00000001
nn::fs::ResultOperationDenied

該当の追加データがある SD カードを PC に差し、SD カード内の以下のディレクトリまたはファイルを読み取り専用属性にする。

  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000 (ディレクトリ)
  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000/00000001
nn::fs::ResultWriteProtected SD カードの書込み防止タブを "Lock" にする。
nn::fs::ResultMediaAccessError 接触不良などのハードウェアが要因で発生するエラーですが、確実に発生させる方法はありません。
nn::fs::ResultNotEnoughSpace SD カードの空き容量が極端に少なくなるように(TBD バイト以下に)する。
想定外のエラー (調査中)

書き込み専用 sdmc アーカイブのマウント時

エラー 発生方法
nn::fs::ResultMediaNotFound (調査中)
nn::fs::ResultBadFormat (調査中)
nn::fs::ResultOperationDenied (調査中)
nn::fs::ResultWriteProtected このエラーは発生しません。
nn::fs::ResultMediaAccessError 接触不良などのハードウェアが要因で発生するエラーですが、確実に発生させる方法はありません。
想定外のエラー (調査中)

セーブデータアーカイブへのファイル・ディレクトリ操作時

エラー 発生方法
nn::fs::ResultNotFound

以下の手順で行います。

  1. セーブデータが工場出荷状態でアプリケーションを起動し、フォーマットと初期データの作成を終える。
  2. SaveDataFiler ツールを使用してセーブデータのすべてのファイルを削除する。
nn::fs::ResultAlreadyExists (調査中)
nn::fs::ResultVerificationFailed

SaveDataFiler ツールを使用してセーブデータを改竄し、ファイル/ディレクトリ操作時に nn::fs::ResultVerificationFailed を返す状態にする。

※セーブデータの状況によっては、SaveDataFiler ツールで破壊できないことがあります。

nn::fs::ResultOperationDenied (調査中)
nn::fs::ResultMediaAccessError 接触不良などのハードウェアが要因で発生するエラーですが、確実に発生させる方法はありません。
nn::fs::ResultNotEnoughSpace (調査中)
想定外のエラー (調査中)

拡張セーブデータアーカイブへのファイル・ディレクトリ操作時

エラー 発生方法
nn::fs::ResultNotFound SaveDataFiler を使用して、ファイルを削除する。
nn::fs::ResultMediaNotFound 確実にエラーを発生させる方法はありません。
nn::fs::ResultAlreadyExists (調査中)
nn::fs::ResultVerificationFailed

該当の追加データがある SD カードを PC に差し、SD カード内の以下のファイルをバイナリエディタで開いて、先頭から 4 KByte の範囲を改ざんする。

  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000 ディレクトリ内の 00000001、00000002 を除くすべてのファイル
nn::fs::ResultArchiveInvalidated (調査中)
nn::fs::ResultOperationDenied

該当の追加データがある SD カードを PC に差し、SD カード内の以下のディレクトリまたはファイルを読み取り専用属性にする。

  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000 (ディレクトリ)
  • Nintendo 3DS/…/extdata/<StorageID Hi32>/<StorageID Lo32>/00000000/00000001
nn::fs::ResultWriteProtected SD カードの書込み防止タブを "Lock" にする。
nn::fs::ResultMediaAccessError 接触不良などのハードウェアが要因で発生するエラーですが、確実に発生させる方法はありません。
nn::fs::ResultNotEnoughSpace 書き込もうとしているファイルのサイズよりも、SD カードの空き容量が少なくなるようにする。
想定外のエラー (調査中)

書き込み専用 sdmc アーカイブへのファイル・ディレクトリ操作時

エラー 発生方法
nn::fs::ResultNotFound (調査中)
nn::fs::ResultMediaNotFound (調査中)
nn::fs::ResultAlreadyExists (調査中)
nn::fs::ResultArchiveInvalidated (調査中)
nn::fs::ResultOperationDenied (調査中)
nn::fs::ResultWriteProtected SD カードの書込み防止タブを "Lock" にする。
nn::fs::ResultMediaAccessError 接触不良などのハードウェアが要因で発生するエラーですが、確実に発生させる方法はありません。
nn::fs::ResultNotEnoughSpace 書き込もうとしているファイルのサイズよりも、SD カードの空き容量が少なくなるようにする。
想定外のエラー (調査中)