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