/*---------------------------------------------------------------------------* Project: Horizon File: boss_Lib.h Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Rev: 32862 $ *---------------------------------------------------------------------------*/ #ifndef NN_BOSS_BOSS_LIB_H_ #define NN_BOSS_BOSS_LIB_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus namespace nn { namespace boss { /*! @brief BOSSライブラリの初期化を実施します。BOSSライブラリをリンクしているプロセスは、ライブラリ利用前に一度呼び出す必要があります。 @attention @ref Initialize 以外のI/Fは、@ref Initialize 成功前に実行した場合は、 「初期化されていない」を表すエラー(ResultIpcNotSessionInitialized)を返します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 初期化に成功しました。 @retval ResultAlreadyInitialized すでに初期化済みです。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result Initialize(void); /*! @brief BOSSライブラリの終了処理を実施します。BOSSライブラリをリンクしているプロセスは、ライブラリ利用終了後に一度呼び出す必要があります。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 終了処理に成功しました。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result Finalize(void); /*! @brief https通信で使用することができる独自ルート証明書をライブラリに登録します。 登録された証明書をタスクで使用するためには、DownloadActionクラスまたは、NsaDownloadActionクラスのSetPrivateRootCa()を使用してください。 1ルート証明書のみを登録できます。重複登録した場合は、後で登録した内容が有効になります。 @param[in] pCertData ルート証明書データ。データフォーマットは、ASN.1フォーマットです。 @param[in] certDataSize クライアント証明書データのサイズを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 登録に成功しました。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result RegisterPrivateRootCa(const u8* pCertData, size_t certDataSize); /*! @brief https通信で使用することができる独自クライアント証明書および、プライベートキーをライブラリに登録します。 登録された証明書をタスクで使用するためには、DownloadActionクラスまたは、NsaDownloadActionクラスのSetPrivateClientCert()を使用してください。 1クライアント証明書のみを登録できます。重複登録した場合は、後で登録した内容が有効になります。 @param[in] pCertData クライアント証明書のデータ。データフォーマットは、ASN.1フォーマットです。 @param[in] certDataSize クライアント証明書データデータのサイズを指定します。 @param[in] pPrivateKeyData プライベート秘密鍵のデータ。データフォーマットは、ASN.1フォーマットです。 @param[in] privateKeyDataSize プライベート秘密鍵のデータデータのサイズを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 登録に成功しました。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result RegisterPrivateClientCert(const u8* pCertData, size_t certDataSize , const u8* pPrivateKeyData, size_t privateKeyDataSize); /*! @brief タスクをライブラリに登録します。 登録できるタスクの種類は、RawダウンロードタスクとNSAダウンロードタスクの2種類があります。 タスク登録には、@ref TaskPolicy クラス、TaskActionクラスのサブクラスの @ref DownloadAction クラスまたは、@ref NsaDownloadActionクラス、 省略可能な @ref TaskOptionタスクを用意する必要があります。設定が必要な属性は、各クラスを参照してください。 タスクを登録が終わった後は、それぞれのインスタンスは、必要に応じ Initilize() を行うことにより再利用ができます。 なお、登録したタスクは、@ref Task クラスのStart()を呼び出すことによって、スケジューリング・実行がされます。
よくあるタスク登録時のエラーについて
①NSAダウンロードタスクの登録でストレージが未登録の場合
@ref ResultStorageNotFound
@ref RegisterStorage でNSAダウンロードタスク用のストレージを登録してください。 ②すでに同名のタスクが登録済である場合
@ref ResultTaskIdAlreadyExist
@ref UnregisterTask で該当のタスクを削除するか、すでに登録されているタスクを再利用してください。 ③削除可能なタスクを削除してもデータベースに空きがないためタスク登録ができない場合
@ref ResultDatabaseFull
消尽回数がゼロのタスクは、空きがない場合、自動削除されますが、消尽回数がゼロでないタスクは、削除されません。 削除可能なタスクを @ref UnregisterTask で削除してから再度登録をしてください。
@param[in] pTask タスク名を指定したタスクを指定します。最大7文字の名前を使用できます。 @param[in] pPolicy タスクポリシーを指定します。 @param[in] pAction タスクアクションを指定します。 (現在、@ref NsaDownloadAction または、 @ref DownloadActionを指定可) @param[in] pOption タスクオプションを指定します。(省略可能) @param[in] taskStep タスクステップのIDを指定します。 (1つのタスク実行ステップしかない場合は、省略可) @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 登録に成功しました。 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 @retval ResultInvalidPolicy ポリシィ情報のポインタがNULLです。 @retval ResultInvalidAction タスクアクションのポインタがNULLです。 @retval ResultInvalidTaskPriolity タスクプライオリティの指定が範囲外です。@ref TaskPriority の範囲か確認してください。 @retval ResultTaskPermissionOutOfRange タスク許可情報が範囲外です。@ref TaskPermission の範囲か確認してください。 @retval ResultSchedulingPolicyOutOfRange スケジュールポリシィが範囲外です。@ref SchedulingPolicy の範囲か確認してください。 @retval ResultInvalidTaskTargetDuration タスク継続時間が範囲外です。(将来的な拡張用です) @retval ResultActionCodeOutOfRange タスクアクションコードが範囲外です。@ref Action の範囲か確認してください。 @retval ResultInvalidUrl URL文字列のポインタがNULLまたは0文字列です。 @retval ResultApInfoTypeOutOfRange AP情報タイプが範囲外です。@ref ApInfoType の範囲か確認してください。 @retval ResultInvalidFilePath ファイルパス文字列のポインタがNULLまたは0文字列です。 @retval ResultInvalidOption タスクオプションのポインタがNULL,またはoptionコードが範囲外です。@ref ExecOption の範囲か確認してください。 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。 @retval ResultTaskIdAlreadyExist 既に同名タスクが登録されています。 @retval ResultDatabaseFull アプリID・タスク登録数が上限に達し、ストレージ登録やタスク登録ができません。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result RegisterTask(Task* pTask, TaskPolicy* pPolicy , TaskAction* pAction , TaskOption* pOption=NULL , u8 taskStep=DEFAULT_STEP_ID); /*! @brief ライブラリに登録済のタスクを削除します。 実行待ち、または実行中のタスクでも削除可能ですが、この場合タスクの実行結果が確認できません。実行結果まで確認したい場合は、タスクの実行完了後、実行結果を確認した上で、@ref Task クラスのCancel()で次のタスク実行が行われないようにしてから、削除を行って下さい。 @param[in] pTask 登録済のタスクを指定します。 @param[in] taskStep タスクステップのIDを指定します。(1つのタスク実行ステップしかない場合は、省略可) @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 削除に成功しました。 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 @retval ResultCantUnregisterTask タスク状態(たとえば、実行中・スケジュール済み)により、タスクの削除ができません。@ref Task クラスのCancel()を呼び出した後、再度削除をしてください。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result UnregisterTask(Task* pTask, u8 taskStep=DEFAULT_STEP_ID); /*! @brief ライブラリに登録済のタスクのポリシーを更新します。 @param[in] pTask 登録済のタスクを指定します。 @param[in] pPolicy 変更内容が入ったタスクポリシーを指定します。 @param[in] taskStep タスクステップのIDを指定します。(1つのタスク実行ステップしかない場合は、省略可) @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 更新に成功しました。 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 @retval ResultInvalidPolicy ポリシィ情報のポインタがNULLです。 @retval ResultInvalidTaskPriolity タスクプライオリティの指定が範囲外です。@ref TaskPriority の範囲か確認してください。 @retval ResultTaskPermissionOutOfRange タスク許可情報が範囲外です。@ref TaskPermission の範囲か確認してください。 @retval ResultSchedulingPolicyOutOfRange スケジュールポリシィが範囲外です。@ref SchedulingPolicy の範囲か確認してください。 @retval ResultInvalidTaskTargetDuration タスク継続時間が範囲外です。(将来的な拡張用です) @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result ReconfigureTask(Task* pTask, TaskPolicy* pPolicy, u8 taskStep=DEFAULT_STEP_ID); /*! @brief 登録済のタスクのID覧取得を取得します。 あらかじめ、@ref TaskIdList クラスのインスタンスを作成しておく必要があります。 また、このインスタンスは、一覧を取得するために1KB程度のメモリを必要としますのでご注意ください。 @param[out] pTaskIdList タスクID一覧を格納するオブジェクトを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultInvalidTaskIdList タスクID一覧取得用のポインタがNULLです。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result GetTaskIdList(TaskIdList* pTaskIdList); /*! @brief 登録済の指定したタスクの各ステップ一覧を取得します。 あらかじめ、@ref StepIdList クラスのインスタンスを作成しておく必要があります。 また、このインスタンスは、一覧を取得するために256B程度のメモリを必要としますのでご注意ください。 @param[in] pTaskId 登録済のタスクを指定します。 @param[out] pStepIdList タスクステップID一覧を格納するオブジェクトを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 @retval ResultInvalidStepIdList ステップID一覧取得用のポインタがNULLです。 @retval ResultAppNotExist タスク、ストレージおよび、独自証明書のいずれも登録がされていない場合に発生します。 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result GetStepIdList(const char* pTaskId, StepIdList* pStepIdList); /*! @brief NSAタスクなどでBOSSDが利用するBOSSストレージを登録します。
登録に先立ち、あらかじめ、拡張セーブデータ領域を作成する必要があります。 このとき、size で指定する使用可能な合計サイズが確保できる容量を確保ください。 また、格納したいシリアルの総数以上のファイル数を指定して作成が必要になります。 アプリケーションがアクセス権を持たない拡張セーブデータIDを指定した場合は、エラーが返ります。 この登録をしないと、NSデータは、ダウンロードされません。

1)アプリがタスク登録しないが、NSデータを取得したい場合
この登録をしておくと、管理者がダウンロードしたNSAフォーマットの中に アプリ宛のNSデータがあれば、自動的に登録済ストレージにコピーしてもらえます。

2)アプリがタスク登録して、アプリ宛のNSデータをダウンロードしたい場合
この登録をして、タスク登録・実行すると、タスク登録時のストレージにアプリ宛のNSデータをダウンロードできます。 また、1)と同様に、管理者がダウンロードしたNSAフォーマットの中に
アプリ宛のNSデータがあれば、自動的に登録済ストレージにコピーしてもらえます。

3)他のアプリのNSデータを共有したい場合
他のアプリと同じストレージ領域を登録を行っておくと、
他のアプリ宛にダウンロードされたNSデータを取得できます。
また、自分宛のNSデータをダウンロードした場合も、他のアプリからも取得が可能になります。
この操作については、@ref GetNsDataIdList @ref GetNewDataNsDataIdList を参照ください。

NSデータのダウンロード時に、領域サイズが不足して最大の合計サイズに収まらない場合、 シリアルIDが古い(小さな値のID)が自動削除されます。 この機能により合計サイズを最大データサイズ以下保ちますが、削除しても入りきらない場合はエラーとなりますので、適切な容量を設定ください。 @param[in] storageId ストレージ(追加データ)の識別子を指定します。 @param[in] size ストレージ領域内で使用可能な最大の合計サイズを指定します。 @param[in] storageType ストレージ領域の種類を指定します。(通常はデフォルトの「ユーザ拡張セーブデータ領域のBOSSストレージ」を使用するので、省略してください。) @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 登録に成功しました。 @retval ResultStorageAccessPermission ストレージのアクセス権がありません。アクセス権の再確認をしてください。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result RegisterStorage(bit32 storageId, size_t size, nn::boss::StorageType storageType=nn::boss::USER_EXT_SAVEDATA_STORAGE); /*! @brief 登録済のBOSSストレージを削除します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 削除に成功しました。 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result UnregisterStorage(void); /*! @brief 登録済のBOSSストレージの領域サイズを取得します。ストレージ登録が済んでいるか確認できます。 @param[out] pStorageSize BOSSストレージの領域サイズが返ります。(省略可) @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result GetStorageInfo(size_t* pStorageSize=NULL); /*! @brief ダウンロードされた新着NSコンテンツがあるか確認します。但し、新着フラグを立てないNSデータをダウンロードした場合は、新着フラグは変化しません。 ストレージを共有していない場合、GetNewDataNsDataIdList でNSデータ一覧取得ができます。 ストレージ共有している場合、GetOwnNewDataNsDataIdList で自分のアプリ宛のみのNSデータ一覧取得ができます。 上記の一覧取得を行うとこの新着フラグは落ちます。 @param[out] pFlag 新着NSコンテンツがあればtrueが返ります。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultInvalidNewArrivalFlag 新着フラグのポインタがNULLです。 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result GetNewArrivalFlag(bool* pFlag); /*! @brief 新着NSコンテンツがあった場合にシグナルされるイベントを登録します。 初期化したnn::os::Eventのインスタンスを登録してください。 なお、NSデータをダウンロードしてもバージョンが新しくなっていないと、NSデータが更新されないため、 本イベントは、シグナルされませんので、ご注意ください。 @param[in] event イベントクラスを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 登録に成功しました。 @retval ResultInvalidNewArrivalEvent 新着イベントのポインタがNULLです。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result RegisterNewArrivalEvent(nn::os::Event* event); /*! @brief @ref nn::boss::RegisterNewArrivalEvent の旧名です。 互換性のために残しているものですので、新規利用は避けてください。 */ nn::Result GetNewArrivalEvent(nn::os::Event* event) NN_ATTRIBUTE_DEPRECATED; /*! @brief OptoutFlagを設定します。 このフラグを有効に設定すると、NSAダウンロードタスクの実行時に、管理者用NSデータが受信されても、管理者用ストレージ領域に書き込みません。 @param[in] flag OptoutFlagを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 設定に成功しました。 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result SetOptoutFlag(bool flag); /*! @brief OptoutFlagを取得します。 @param[out] pFlag OptoutFlagが返ります。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultInvalidOptoutFlag OPTOUTフラグのポインタがNULLです。 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result GetOptoutFlag(bool* pFlag); /*! @brief データタイプを指定して、ストレージを登録された拡張セーブ領域からNSコンテンツの一覧を取得します。 すべての一覧が取得できなかった場合は、@ref ER_NSDATA_LIST_SIZE_SHORTAGE が返ります。 また、継続して取得したとき、新たなダウンロードなどで、一覧内容の変更が検出された場合、 @ref ER_NSDATA_LIST_UPDATED が返りますので、先頭から取り直しが必要になります。 この場合は、@ref NsDataIdList のインスタンスを初期化後、本関数を呼び直してください。 @param[in] dataType データタイプを指定します。 (DATA_TYPE_ALLで全データタイプを指定可) @param[out] pNsDataId コンテンツデータ一覧を格納するオブジェクトを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultNsDataListSizeShortage NsDataIdListのサイズ不足(すべてのNSDシリアルIDを格納できなかった) 継続して全てのNSDシリアルIDを取り終えるまで繰り返し呼び出しててください。 @retval ResultNsDataListUpdated 前回のリスト取得時以降に、BOSSストレージの対象NSD群が更新されました。 @retval ResultInvalidNsDataIdList NSデータリスト情報のポインタがNULLです。 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result GetNsDataIdList(u32 dataType, NsDataIdList* pNsDataId); /*! @brief 共有NSデータを除外して、ストレージを登録された拡張セーブ領域から自分宛のNSコンテンツの一覧を取得します。つまり共有NSデータが存在しても、呼び出したアプリ自身のNSデータのみ一覧に含まれます。 すべての一覧が取得できなかった場合は、@ref ER_NSDATA_LIST_SIZE_SHORTAGE が返ります。 また、継続して取得した場合、新たなダウンロードなどで、一覧内容の変更が検出された場合、 @ref ER_NSDATA_LIST_UPDATED が返りますので、取り直しが必要になります。 この場合は、@ref NsDataIdList のインスタンスを初期化後、本関数を呼び直してください。 @param[in] dataType データタイプを指定します。 (DATA_TYPE_ALLで全データタイプを指定可) @param[out] pNsDataId コンテンツデータ一覧を格納するオブジェクトを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultNsDataListSizeShortage NsDataIdListのサイズ不足(すべてのNSDシリアルIDを格納できなかった) 継続して全てのNSDシリアルIDを取り終えるまで繰り返し呼び出しててください。 @retval ResultNsDataListUpdated 前回のリスト取得時以降に、BOSSストレージの対象NSD群が更新されました。 @retval ResultInvalidNsDataIdList NSデータリスト情報のポインタがNULLです。 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result GetOwnNsDataIdList(u32 dataType, NsDataIdList* pNsDataId); /*! @brief データタイプを指定して、ストレージを登録された拡張セーブ領域からNS新着コンテンツの一覧を取得します。 この操作で、すべての一覧を取得すると、新着フラグは落ちます。 すべての一覧が取得できなかった場合は、@ref ER_NSDATA_LIST_SIZE_SHORTAGE が返ります。 また、継続して取得した場合、新たなダウンロードなどで、一覧内容の変更が検出された場合、 @ref ER_NSDATA_LIST_UPDATED が返りますので、取り直しが必要になります。 この場合は、@ref NsDataIdList のインスタンスを初期化後、本関数を呼び直してください。 @param[in] dataType データタイプを指定します。 (DATA_TYPE_ALLで全データタイプを指定可) @param[out] pNsDataId コンテンツデータ一覧を格納するオブジェクトを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultNsDataListSizeShortage NsDataIdListのサイズ不足(すべてのNSDシリアルIDを格納できなかった) 継続して全てのNSDシリアルIDを取り終えるまで繰り返し呼び出しててください。 @retval ResultNsDataListUpdated 前回のリスト取得時以降に、BOSSストレージの対象NSD群が更新されました。 @retval ResultInvalidNsDataIdList NSデータリスト情報のポインタがNULLです。 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result GetNewDataNsDataIdList(u32 dataType, NsDataIdList* pNsDataId); /*! @brief 共有NSデータを除外して、ストレージを登録された拡張セーブ領域から自分宛のNS新着コンテンツの一覧を取得します。つまり共有NSデータが存在しても、呼び出したアプリ自身のNSデータのみ一覧に含まれます。 この操作で、すべての一覧を取得すると、新着フラグは落ちます。 すべての一覧が取得できなかった場合は、@ref ER_NSDATA_LIST_SIZE_SHORTAGE が返ります。 また、継続して取得した場合、新たなダウンロードなどで、一覧内容の変更が検出された場合、 @ref ER_NSDATA_LIST_UPDATED が返りますので、取り直しが必要になります。 この場合は、@ref NsDataIdList のインスタンスを初期化後、本関数を呼び直してください。 @param[in] dataType データタイプを指定します。 (DATA_TYPE_ALLで全データタイプを指定可) @param[out] pNsDataId コンテンツデータ一覧を格納するオブジェクトを指定します。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultNsDataListSizeShortage NsDataIdListのサイズ不足(すべてのNSDシリアルIDを格納できなかった) 継続して全てのNSDシリアルIDを取り終えるまで繰り返し呼び出しててください。 @retval ResultNsDataListUpdated 前回のリスト取得時以降に、BOSSストレージの対象NSD群が更新されました。 @retval ResultInvalidNsDataIdList NSデータリスト情報のポインタがNULLです。 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result GetOwnNewDataNsDataIdList(u32 dataType, NsDataIdList* pNsDataId); /*! @brief タスクの結果コード(@ref nn::boss::TaskResultCode)から、エラーコードを取得します。 タスクの結果コードは、@ref nn::boss::Task::GetResult で取得できます。 @param[out] pOut エラーコードを格納するためのバッファ。 @param[out] targetResult 対象の結果コード。 @return 関数の実行結果を返します。以下に挙げる Result を返します。 @retval ResultSuccess 取得に成功しました。 @retval ResultUnexpect 想定外の結果コード(エラーコードが割り当てられていない結果コード)が渡されました。(pOut引数がNULLの場合も、本Resultが返ります。) @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 */ nn::Result GetErrorCode( u32* pOut, TaskResultCode targetResult ); } // end of namespace boss } // end of namespace nn #endif // __cplusplus #endif /* NN_BOSS_BOSS_LIB_H_ */