1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: boss_Lib.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 32862 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_BOSS_BOSS_LIB_H_ 17 #define NN_BOSS_BOSS_LIB_H_ 18 19 #include <nn/os/os_Event.h> 20 #include <nn/fs/fs_Parameters.h> 21 22 #include <nn/boss/boss_Const.h> 23 #include <nn/boss/boss_Result.h> 24 #include <nn/boss/boss_Types.h> 25 26 #include <nn/boss/boss_TaskPolicy.h> 27 #include <nn/boss/boss_TaskStatus.h> 28 #include <nn/boss/boss_TaskOption.h> 29 #include <nn/boss/boss_TaskError.h> 30 #include <nn/boss/boss_TaskAction.h> 31 #include <nn/boss/boss_Task.h> 32 #include <nn/boss/boss_TaskIdList.h> 33 #include <nn/boss/boss_StepIdList.h> 34 #include <nn/boss/boss_NsDataIdList.h> 35 36 37 #ifdef __cplusplus 38 39 namespace nn { 40 namespace boss { 41 42 /*! 43 @brief BOSSライブラリの初期化を実施します。BOSSライブラリをリンクしているプロセスは、ライブラリ利用前に一度呼び出す必要があります。 44 @attention @ref Initialize 以外のI/Fは、@ref Initialize 成功前に実行した場合は、 「初期化されていない」を表すエラー(ResultIpcNotSessionInitialized)を返します。 45 @return 関数の実行結果を返します。以下に挙げる Result を返します。 46 @retval ResultSuccess 初期化に成功しました。 47 @retval ResultAlreadyInitialized すでに初期化済みです。 48 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 49 */ 50 nn::Result Initialize(void); 51 52 /*! 53 @brief BOSSライブラリの終了処理を実施します。BOSSライブラリをリンクしているプロセスは、ライブラリ利用終了後に一度呼び出す必要があります。 54 @return 関数の実行結果を返します。以下に挙げる Result を返します。 55 @retval ResultSuccess 終了処理に成功しました。 56 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。 57 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 58 */ 59 nn::Result Finalize(void); 60 61 /*! 62 @brief https通信で使用することができる独自ルート証明書をライブラリに登録します。 63 登録された証明書をタスクで使用するためには、DownloadActionクラスまたは、NsaDownloadActionクラスのSetPrivateRootCa()を使用してください。 64 1ルート証明書のみを登録できます。重複登録した場合は、後で登録した内容が有効になります。 65 @param[in] pCertData ルート証明書データ。データフォーマットは、ASN.1フォーマットです。 66 @param[in] certDataSize クライアント証明書データのサイズを指定します。 67 @return 関数の実行結果を返します。以下に挙げる Result を返します。 68 @retval ResultSuccess 登録に成功しました。 69 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 70 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 71 */ 72 nn::Result RegisterPrivateRootCa(const u8* pCertData, size_t certDataSize); 73 74 /*! 75 @brief https通信で使用することができる独自クライアント証明書および、プライベートキーをライブラリに登録します。 76 登録された証明書をタスクで使用するためには、DownloadActionクラスまたは、NsaDownloadActionクラスのSetPrivateClientCert()を使用してください。 77 1クライアント証明書のみを登録できます。重複登録した場合は、後で登録した内容が有効になります。 78 @param[in] pCertData クライアント証明書のデータ。データフォーマットは、ASN.1フォーマットです。 79 @param[in] certDataSize クライアント証明書データデータのサイズを指定します。 80 @param[in] pPrivateKeyData プライベート秘密鍵のデータ。データフォーマットは、ASN.1フォーマットです。 81 @param[in] privateKeyDataSize プライベート秘密鍵のデータデータのサイズを指定します。 82 @return 関数の実行結果を返します。以下に挙げる Result を返します。 83 @retval ResultSuccess 登録に成功しました。 84 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 85 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 86 */ 87 nn::Result RegisterPrivateClientCert(const u8* pCertData, size_t certDataSize 88 , const u8* pPrivateKeyData, size_t privateKeyDataSize); 89 90 /*! 91 @brief タスクをライブラリに登録します。 92 登録できるタスクの種類は、RawダウンロードタスクとNSAダウンロードタスクの2種類があります。 93 タスク登録には、@ref TaskPolicy クラス、TaskActionクラスのサブクラスの @ref DownloadAction クラスまたは、@ref NsaDownloadActionクラス、 94 省略可能な @ref TaskOptionタスクを用意する必要があります。設定が必要な属性は、各クラスを参照してください。 95 タスクを登録が終わった後は、それぞれのインスタンスは、必要に応じ Initilize() を行うことにより再利用ができます。 96 なお、登録したタスクは、@ref Task クラスのStart()を呼び出すことによって、スケジューリング・実行がされます。 97 <BR> 98 よくあるタスク登録時のエラーについて <BR> 99 ①NSAダウンロードタスクの登録でストレージが未登録の場合 <BR> 100 @ref ResultStorageNotFound <BR> 101 @ref RegisterStorage でNSAダウンロードタスク用のストレージを登録してください。 102 ②すでに同名のタスクが登録済である場合 <BR> 103 @ref ResultTaskIdAlreadyExist <BR> 104 @ref UnregisterTask で該当のタスクを削除するか、すでに登録されているタスクを再利用してください。 105 ③削除可能なタスクを削除してもデータベースに空きがないためタスク登録ができない場合 <BR> 106 @ref ResultDatabaseFull <BR> 107 消尽回数がゼロのタスクは、空きがない場合、自動削除されますが、消尽回数がゼロでないタスクは、削除されません。 108 削除可能なタスクを @ref UnregisterTask で削除してから再度登録をしてください。 109 <BR> 110 @param[in] pTask タスク名を指定したタスクを指定します。最大7文字の名前を使用できます。 111 @param[in] pPolicy タスクポリシーを指定します。 112 @param[in] pAction タスクアクションを指定します。 (現在、@ref NsaDownloadAction または、 @ref DownloadActionを指定可) 113 @param[in] pOption タスクオプションを指定します。(省略可能) 114 @param[in] taskStep タスクステップのIDを指定します。 (1つのタスク実行ステップしかない場合は、省略可) 115 @return 関数の実行結果を返します。以下に挙げる Result を返します。 116 @retval ResultSuccess 登録に成功しました。 117 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 118 @retval ResultInvalidPolicy ポリシィ情報のポインタがNULLです。 119 @retval ResultInvalidAction タスクアクションのポインタがNULLです。 120 @retval ResultInvalidTaskPriolity タスクプライオリティの指定が範囲外です。@ref TaskPriority の範囲か確認してください。 121 @retval ResultTaskPermissionOutOfRange タスク許可情報が範囲外です。@ref TaskPermission の範囲か確認してください。 122 @retval ResultSchedulingPolicyOutOfRange スケジュールポリシィが範囲外です。@ref SchedulingPolicy の範囲か確認してください。 123 @retval ResultInvalidTaskTargetDuration タスク継続時間が範囲外です。(将来的な拡張用です) 124 @retval ResultActionCodeOutOfRange タスクアクションコードが範囲外です。@ref Action の範囲か確認してください。 125 @retval ResultInvalidUrl URL文字列のポインタがNULLまたは0文字列です。 126 @retval ResultApInfoTypeOutOfRange AP情報タイプが範囲外です。@ref ApInfoType の範囲か確認してください。 127 @retval ResultInvalidFilePath ファイルパス文字列のポインタがNULLまたは0文字列です。 128 @retval ResultInvalidOption タスクオプションのポインタがNULL,またはoptionコードが範囲外です。@ref ExecOption の範囲か確認してください。 129 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。 130 @retval ResultTaskIdAlreadyExist 既に同名タスクが登録されています。 131 @retval ResultDatabaseFull アプリID・タスク登録数が上限に達し、ストレージ登録やタスク登録ができません。 132 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 133 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 134 */ 135 nn::Result RegisterTask(Task* pTask, TaskPolicy* pPolicy , TaskAction* pAction 136 , TaskOption* pOption=NULL 137 , u8 taskStep=DEFAULT_STEP_ID); 138 139 /*! 140 @brief ライブラリに登録済のタスクを削除します。 141 実行待ち、または実行中のタスクでも削除可能ですが、この場合タスクの実行結果が確認できません。実行結果まで確認したい場合は、タスクの実行完了後、実行結果を確認した上で、@ref Task クラスのCancel()で次のタスク実行が行われないようにしてから、削除を行って下さい。 142 @param[in] pTask 登録済のタスクを指定します。 143 @param[in] taskStep タスクステップのIDを指定します。(1つのタスク実行ステップしかない場合は、省略可) 144 @return 関数の実行結果を返します。以下に挙げる Result を返します。 145 @retval ResultSuccess 削除に成功しました。 146 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 147 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 148 @retval ResultCantUnregisterTask タスク状態(たとえば、実行中・スケジュール済み)により、タスクの削除ができません。@ref Task クラスのCancel()を呼び出した後、再度削除をしてください。 149 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 150 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 151 */ 152 nn::Result UnregisterTask(Task* pTask, u8 taskStep=DEFAULT_STEP_ID); 153 154 /*! 155 @brief ライブラリに登録済のタスクのポリシーを更新します。 156 @param[in] pTask 登録済のタスクを指定します。 157 @param[in] pPolicy 変更内容が入ったタスクポリシーを指定します。 158 @param[in] taskStep タスクステップのIDを指定します。(1つのタスク実行ステップしかない場合は、省略可) 159 @return 関数の実行結果を返します。以下に挙げる Result を返します。 160 @retval ResultSuccess 更新に成功しました。 161 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 162 @retval ResultInvalidPolicy ポリシィ情報のポインタがNULLです。 163 @retval ResultInvalidTaskPriolity タスクプライオリティの指定が範囲外です。@ref TaskPriority の範囲か確認してください。 164 @retval ResultTaskPermissionOutOfRange タスク許可情報が範囲外です。@ref TaskPermission の範囲か確認してください。 165 @retval ResultSchedulingPolicyOutOfRange スケジュールポリシィが範囲外です。@ref SchedulingPolicy の範囲か確認してください。 166 @retval ResultInvalidTaskTargetDuration タスク継続時間が範囲外です。(将来的な拡張用です) 167 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 168 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 169 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 170 */ 171 nn::Result ReconfigureTask(Task* pTask, TaskPolicy* pPolicy, u8 taskStep=DEFAULT_STEP_ID); 172 173 /*! 174 @brief 登録済のタスクのID覧取得を取得します。 175 あらかじめ、@ref TaskIdList クラスのインスタンスを作成しておく必要があります。 176 また、このインスタンスは、一覧を取得するために1KB程度のメモリを必要としますのでご注意ください。 177 @param[out] pTaskIdList タスクID一覧を格納するオブジェクトを指定します。 178 @return 関数の実行結果を返します。以下に挙げる Result を返します。 179 @retval ResultSuccess 取得に成功しました。 180 @retval ResultInvalidTaskIdList タスクID一覧取得用のポインタがNULLです。 181 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 182 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 183 */ 184 nn::Result GetTaskIdList(TaskIdList* pTaskIdList); 185 186 /*! 187 @brief 登録済の指定したタスクの各ステップ一覧を取得します。 188 あらかじめ、@ref StepIdList クラスのインスタンスを作成しておく必要があります。 189 また、このインスタンスは、一覧を取得するために256B程度のメモリを必要としますのでご注意ください。 190 @param[in] pTaskId 登録済のタスクを指定します。 191 @param[out] pStepIdList タスクステップID一覧を格納するオブジェクトを指定します。 192 @return 関数の実行結果を返します。以下に挙げる Result を返します。 193 @retval ResultSuccess 取得に成功しました。 194 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 195 @retval ResultInvalidStepIdList ステップID一覧取得用のポインタがNULLです。 196 @retval ResultAppNotExist タスク、ストレージおよび、独自証明書のいずれも登録がされていない場合に発生します。 197 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。 198 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 199 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 200 */ 201 nn::Result GetStepIdList(const char* pTaskId, StepIdList* pStepIdList); 202 203 /*! 204 @brief NSAタスクなどでBOSSDが利用するBOSSストレージを登録します。<BR/> 205 登録に先立ち、あらかじめ、拡張セーブデータ領域を作成する必要があります。 206 このとき、size で指定する使用可能な合計サイズが確保できる容量を確保ください。 207 また、格納したいシリアルの総数以上のファイル数を指定して作成が必要になります。 208 アプリケーションがアクセス権を持たない拡張セーブデータIDを指定した場合は、エラーが返ります。 209 この登録をしないと、NSデータは、ダウンロードされません。<BR/> 210 <BR/> 211 1)アプリがタスク登録しないが、NSデータを取得したい場合<BR/> 212 この登録をしておくと、管理者がダウンロードしたNSAフォーマットの中に 213 アプリ宛のNSデータがあれば、自動的に登録済ストレージにコピーしてもらえます。<BR/> 214 <BR/> 215 2)アプリがタスク登録して、アプリ宛のNSデータをダウンロードしたい場合<BR/> 216 この登録をして、タスク登録・実行すると、タスク登録時のストレージにアプリ宛のNSデータをダウンロードできます。 217 また、1)と同様に、管理者がダウンロードしたNSAフォーマットの中に<BR/> 218 アプリ宛のNSデータがあれば、自動的に登録済ストレージにコピーしてもらえます。<BR/> 219 <BR/> 220 3)他のアプリのNSデータを共有したい場合<BR/> 221 他のアプリと同じストレージ領域を登録を行っておくと、<BR/> 222 他のアプリ宛にダウンロードされたNSデータを取得できます。<BR/> 223 また、自分宛のNSデータをダウンロードした場合も、他のアプリからも取得が可能になります。<BR/> 224 この操作については、@ref GetNsDataIdList @ref GetNewDataNsDataIdList を参照ください。<BR/> 225 <BR/> 226 NSデータのダウンロード時に、領域サイズが不足して最大の合計サイズに収まらない場合、 227 シリアルIDが古い(小さな値のID)が自動削除されます。 228 この機能により合計サイズを最大データサイズ以下保ちますが、削除しても入りきらない場合はエラーとなりますので、適切な容量を設定ください。 229 @param[in] storageId ストレージ(追加データ)の識別子を指定します。 230 @param[in] size ストレージ領域内で使用可能な最大の合計サイズを指定します。 231 @param[in] storageType ストレージ領域の種類を指定します。(通常はデフォルトの「ユーザ拡張セーブデータ領域のBOSSストレージ」を使用するので、省略してください。) 232 @return 関数の実行結果を返します。以下に挙げる Result を返します。 233 @retval ResultSuccess 登録に成功しました。 234 @retval ResultStorageAccessPermission ストレージのアクセス権がありません。アクセス権の再確認をしてください。 235 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 236 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 237 */ 238 nn::Result RegisterStorage(bit32 storageId, size_t size, nn::boss::StorageType storageType=nn::boss::USER_EXT_SAVEDATA_STORAGE); 239 240 /*! 241 @brief 登録済のBOSSストレージを削除します。 242 @return 関数の実行結果を返します。以下に挙げる Result を返します。 243 @retval ResultSuccess 削除に成功しました。 244 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 245 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 246 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 247 */ 248 nn::Result UnregisterStorage(void); 249 250 251 /*! 252 @brief 登録済のBOSSストレージの領域サイズを取得します。ストレージ登録が済んでいるか確認できます。 253 @param[out] pStorageSize BOSSストレージの領域サイズが返ります。(省略可) 254 @return 関数の実行結果を返します。以下に挙げる Result を返します。 255 @retval ResultSuccess 取得に成功しました。 256 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 257 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 258 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 259 */ 260 nn::Result GetStorageInfo(size_t* pStorageSize=NULL); 261 262 263 /*! 264 @brief ダウンロードされた新着NSコンテンツがあるか確認します。但し、新着フラグを立てないNSデータをダウンロードした場合は、新着フラグは変化しません。 265 ストレージを共有していない場合、GetNewDataNsDataIdList でNSデータ一覧取得ができます。 266 ストレージ共有している場合、GetOwnNewDataNsDataIdList で自分のアプリ宛のみのNSデータ一覧取得ができます。 267 上記の一覧取得を行うとこの新着フラグは落ちます。 268 @param[out] pFlag 新着NSコンテンツがあればtrueが返ります。 269 @return 関数の実行結果を返します。以下に挙げる Result を返します。 270 @retval ResultSuccess 取得に成功しました。 271 @retval ResultInvalidNewArrivalFlag 新着フラグのポインタがNULLです。 272 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 273 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 274 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 275 */ 276 nn::Result GetNewArrivalFlag(bool* pFlag); 277 278 /*! 279 @brief 新着NSコンテンツがあった場合にシグナルされるイベントを登録します。 280 初期化したnn::os::Eventのインスタンスを登録してください。 281 なお、NSデータをダウンロードしてもバージョンが新しくなっていないと、NSデータが更新されないため、 282 本イベントは、シグナルされませんので、ご注意ください。 283 @param[in] event イベントクラスを指定します。 284 @return 関数の実行結果を返します。以下に挙げる Result を返します。 285 @retval ResultSuccess 登録に成功しました。 286 @retval ResultInvalidNewArrivalEvent 新着イベントのポインタがNULLです。 287 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 288 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 289 */ 290 nn::Result RegisterNewArrivalEvent(nn::os::Event* event); 291 292 /*! 293 @brief @ref nn::boss::RegisterNewArrivalEvent の旧名です。 294 互換性のために残しているものですので、新規利用は避けてください。 295 */ 296 nn::Result GetNewArrivalEvent(nn::os::Event* event) NN_ATTRIBUTE_DEPRECATED; 297 298 /*! 299 @brief OptoutFlagを設定します。 300 このフラグを有効に設定すると、NSAダウンロードタスクの実行時に、管理者用NSデータが受信されても、管理者用ストレージ領域に書き込みません。 301 @param[in] flag OptoutFlagを指定します。 302 @return 関数の実行結果を返します。以下に挙げる Result を返します。 303 @retval ResultSuccess 設定に成功しました。 304 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 305 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 306 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 307 */ 308 nn::Result SetOptoutFlag(bool flag); 309 310 /*! 311 @brief OptoutFlagを取得します。 312 @param[out] pFlag OptoutFlagが返ります。 313 @return 関数の実行結果を返します。以下に挙げる Result を返します。 314 @retval ResultSuccess 取得に成功しました。 315 @retval ResultInvalidOptoutFlag OPTOUTフラグのポインタがNULLです。 316 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 317 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 318 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 319 */ 320 nn::Result GetOptoutFlag(bool* pFlag); 321 322 /*! 323 @brief データタイプを指定して、ストレージを登録された拡張セーブ領域からNSコンテンツの一覧を取得します。 324 すべての一覧が取得できなかった場合は、@ref ER_NSDATA_LIST_SIZE_SHORTAGE が返ります。 325 また、継続して取得したとき、新たなダウンロードなどで、一覧内容の変更が検出された場合、 326 @ref ER_NSDATA_LIST_UPDATED が返りますので、先頭から取り直しが必要になります。 327 この場合は、@ref NsDataIdList のインスタンスを初期化後、本関数を呼び直してください。 328 @param[in] dataType データタイプを指定します。 (DATA_TYPE_ALLで全データタイプを指定可) 329 @param[out] pNsDataId コンテンツデータ一覧を格納するオブジェクトを指定します。 330 @return 関数の実行結果を返します。以下に挙げる Result を返します。 331 @retval ResultSuccess 取得に成功しました。 332 @retval ResultNsDataListSizeShortage NsDataIdListのサイズ不足(すべてのNSDシリアルIDを格納できなかった) 継続して全てのNSDシリアルIDを取り終えるまで繰り返し呼び出しててください。 333 @retval ResultNsDataListUpdated 前回のリスト取得時以降に、BOSSストレージの対象NSD群が更新されました。 334 @retval ResultInvalidNsDataIdList NSデータリスト情報のポインタがNULLです。 335 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 336 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 337 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 338 */ 339 nn::Result GetNsDataIdList(u32 dataType, NsDataIdList* pNsDataId); 340 341 /*! 342 @brief 共有NSデータを除外して、ストレージを登録された拡張セーブ領域から自分宛のNSコンテンツの一覧を取得します。つまり共有NSデータが存在しても、呼び出したアプリ自身のNSデータのみ一覧に含まれます。 343 すべての一覧が取得できなかった場合は、@ref ER_NSDATA_LIST_SIZE_SHORTAGE が返ります。 344 また、継続して取得した場合、新たなダウンロードなどで、一覧内容の変更が検出された場合、 345 @ref ER_NSDATA_LIST_UPDATED が返りますので、取り直しが必要になります。 346 この場合は、@ref NsDataIdList のインスタンスを初期化後、本関数を呼び直してください。 347 @param[in] dataType データタイプを指定します。 (DATA_TYPE_ALLで全データタイプを指定可) 348 @param[out] pNsDataId コンテンツデータ一覧を格納するオブジェクトを指定します。 349 @return 関数の実行結果を返します。以下に挙げる Result を返します。 350 @retval ResultSuccess 取得に成功しました。 351 @retval ResultNsDataListSizeShortage NsDataIdListのサイズ不足(すべてのNSDシリアルIDを格納できなかった) 継続して全てのNSDシリアルIDを取り終えるまで繰り返し呼び出しててください。 352 @retval ResultNsDataListUpdated 前回のリスト取得時以降に、BOSSストレージの対象NSD群が更新されました。 353 @retval ResultInvalidNsDataIdList NSデータリスト情報のポインタがNULLです。 354 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 355 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 356 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 357 */ 358 nn::Result GetOwnNsDataIdList(u32 dataType, NsDataIdList* pNsDataId); 359 360 /*! 361 @brief データタイプを指定して、ストレージを登録された拡張セーブ領域からNS新着コンテンツの一覧を取得します。 362 この操作で、すべての一覧を取得すると、新着フラグは落ちます。 363 すべての一覧が取得できなかった場合は、@ref ER_NSDATA_LIST_SIZE_SHORTAGE が返ります。 364 また、継続して取得した場合、新たなダウンロードなどで、一覧内容の変更が検出された場合、 365 @ref ER_NSDATA_LIST_UPDATED が返りますので、取り直しが必要になります。 366 この場合は、@ref NsDataIdList のインスタンスを初期化後、本関数を呼び直してください。 367 @param[in] dataType データタイプを指定します。 (DATA_TYPE_ALLで全データタイプを指定可) 368 @param[out] pNsDataId コンテンツデータ一覧を格納するオブジェクトを指定します。 369 @return 関数の実行結果を返します。以下に挙げる Result を返します。 370 @retval ResultSuccess 取得に成功しました。 371 @retval ResultNsDataListSizeShortage NsDataIdListのサイズ不足(すべてのNSDシリアルIDを格納できなかった) 継続して全てのNSDシリアルIDを取り終えるまで繰り返し呼び出しててください。 372 @retval ResultNsDataListUpdated 前回のリスト取得時以降に、BOSSストレージの対象NSD群が更新されました。 373 @retval ResultInvalidNsDataIdList NSデータリスト情報のポインタがNULLです。 374 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 375 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 376 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 377 */ 378 nn::Result GetNewDataNsDataIdList(u32 dataType, NsDataIdList* pNsDataId); 379 380 /*! 381 @brief 共有NSデータを除外して、ストレージを登録された拡張セーブ領域から自分宛のNS新着コンテンツの一覧を取得します。つまり共有NSデータが存在しても、呼び出したアプリ自身のNSデータのみ一覧に含まれます。 382 この操作で、すべての一覧を取得すると、新着フラグは落ちます。 383 すべての一覧が取得できなかった場合は、@ref ER_NSDATA_LIST_SIZE_SHORTAGE が返ります。 384 また、継続して取得した場合、新たなダウンロードなどで、一覧内容の変更が検出された場合、 385 @ref ER_NSDATA_LIST_UPDATED が返りますので、取り直しが必要になります。 386 この場合は、@ref NsDataIdList のインスタンスを初期化後、本関数を呼び直してください。 387 @param[in] dataType データタイプを指定します。 (DATA_TYPE_ALLで全データタイプを指定可) 388 @param[out] pNsDataId コンテンツデータ一覧を格納するオブジェクトを指定します。 389 @return 関数の実行結果を返します。以下に挙げる Result を返します。 390 @retval ResultSuccess 取得に成功しました。 391 @retval ResultNsDataListSizeShortage NsDataIdListのサイズ不足(すべてのNSDシリアルIDを格納できなかった) 継続して全てのNSDシリアルIDを取り終えるまで繰り返し呼び出しててください。 392 @retval ResultNsDataListUpdated 前回のリスト取得時以降に、BOSSストレージの対象NSD群が更新されました。 393 @retval ResultInvalidNsDataIdList NSデータリスト情報のポインタがNULLです。 394 @retval ResultStorageNotFound 該当のアプリIDに対応したストレージ登録がされていません。ストレージ登録が済んでいるか確認ください。 395 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 396 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 397 */ 398 nn::Result GetOwnNewDataNsDataIdList(u32 dataType, NsDataIdList* pNsDataId); 399 400 401 /*! 402 @brief タスクの結果コード(@ref nn::boss::TaskResultCode)から、エラーコードを取得します。 403 404 タスクの結果コードは、@ref nn::boss::Task::GetResult で取得できます。 405 406 @param[out] pOut エラーコードを格納するためのバッファ。 407 @param[out] targetResult 対象の結果コード。 408 @return 関数の実行結果を返します。以下に挙げる Result を返します。 409 @retval ResultSuccess 取得に成功しました。 410 @retval ResultUnexpect 想定外の結果コード(エラーコードが割り当てられていない結果コード)が渡されました。(pOut引数がNULLの場合も、本Resultが返ります。) 411 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged を呼び出してください。 412 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 413 */ 414 nn::Result GetErrorCode( u32* pOut, TaskResultCode targetResult ); 415 416 } // end of namespace boss 417 } // end of namespace nn 418 419 #endif // __cplusplus 420 421 #endif /* NN_BOSS_BOSS_LIB_H_ */ 422