1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: boss_Task.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: 31623 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_BOSS_BOSS_TASK_H_ 17 #define NN_BOSS_BOSS_TASK_H_ 18 19 #include <nn/fnd/fnd_TimeSpan.h> 20 #include <nn/boss/boss_Const.h> 21 #include <nn/boss/boss_Result.h> 22 #include <nn/boss/boss_Types.h> 23 #include <nn/boss/boss_TaskAction.h> 24 #include <nn/boss/boss_TaskPolicy.h> 25 #include <nn/boss/boss_TaskStatus.h> 26 #include <nn/boss/boss_TaskError.h> 27 #include <nn/boss/boss_TaskOption.h> 28 29 30 #ifdef __cplusplus 31 32 namespace nn { 33 namespace boss { 34 35 /*! 36 @brief タスクを表すクラスです。タスクの登録や登録解除、タスクの操作の際などに利用します。 37 */ 38 class Task 39 { 40 public: 41 /*! 42 @brief コンストラクタです。 43 */ 44 explicit Task(void); 45 46 /*! 47 @brief デストラクタです。 48 */ 49 virtual ~Task(void); 50 51 /*! 52 @brief タスク登録済のタスクIDを指定して初期化します。この初期化にとってオブジェクトの再利用が可能になります。 53 @param[in] pTaskId タスクIDを指定します。 TaskId[TASK_ID_LENGTH] 54 @return 関数の実行結果を返します。以下に挙げる Result を返します。 55 @retval ResultSuccess 初期化に成功しました。 56 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 57 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 58 */ 59 nn::Result Initialize(const char* pTaskId); 60 61 /*! 62 @brief タスク登録後、実行間隔を更新します。タスクの実行開始指示後でも変更が可能です。 63 有効な実行間隔は、1~3時間です。 64 @param[in] interval 実行間隔を指定します。単位は時間です。 65 @return 関数の実行結果を返します。以下に挙げる Result を返します。 66 @retval ResultSuccess 実行間隔の更新に成功しました。 67 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 68 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 69 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged の呼び出してください。 70 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 71 */ UpdateInterval(u32 interval)72 inline nn::Result UpdateInterval(u32 interval){return UpdateIntervalWithSec(interval*60*60);} 73 74 /*! 75 @brief タスク登録後、実行間隔を更新します。単位は秒です。タスクの実行開始指示後でも変更が可能です。 76 @param[in] intervalSec 実行間隔を指定します。単位は秒です。 77 @return 関数の実行結果を返します。以下に挙げる Result を返します。 78 @retval ResultSuccess 実行間隔の更新に成功しました。 79 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 80 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 81 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged の呼び出してください。 82 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 83 */ 84 nn::Result UpdateIntervalWithSec(u32 intervalSec); 85 86 /*! 87 @brief タスク登録後、消尽回数を更新します。タスクの実行開始指示後でも変更が可能です。 88 無限の消尽回数を指定指定したい場合は、@ref UNLIMITED_COUNTを指定してください。 89 @param[in] count 実行回数を指定します。 90 @return 関数の実行結果を返します。以下に挙げる Result を返します。 91 @retval ResultSuccess 消尽回数の更新に成功しました。 92 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 93 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 94 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged の呼び出してください。 95 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 96 */ 97 nn::Result UpdateCount(u32 count); 98 99 /*! 100 @brief 実行間隔を取得します。単位は時間です。タスクの実行開始指示後でも変更が可能です。 101 @retval 実行間隔が返ります。<BR> 102 */ GetInterval(void)103 inline u32 GetInterval(void) 104 { 105 const u32 intervalSec = GetIntervalSec(); 106 if(intervalSec > 0) 107 { 108 return (intervalSec / (60*60)); 109 } 110 else 111 { 112 return 0; 113 } 114 } 115 116 /*! 117 @brief 実行間隔を取得します。単位は秒です。 118 @retval 実行間隔が返ります。<BR> 119 */ 120 u32 GetIntervalSec(void); 121 122 /*! 123 @brief 消尽回数を取得します。消尽回数確認し、が少なくなった場合、変更する時に便利です。 124 @return 消尽回数が返ります。<BR> 125 @retval U32_CANNOT_GET_DATA データが取得できません。 126 */ 127 u32 GetCount(void); 128 129 /*! 130 @brief タスクのサービスステータス取得します。サービスステータスは、サーバからサービス終了の通知を検出した場合、そのステータスを確認できます。 131 但し、タスク登録後、一度もサーバへアクセスしていない状態では、@ref SERVICE_UNKNOWN となりますので、ご注意ください。 132 @return タスクのサービスステータスが返ります。<BR> 133 */ 134 TaskServiceStatus GetServiceStatus(void); 135 136 /*! 137 @brief タスクの開始指示します。インフラ接続可能な状態になると、スケジューリングされたタスクがバックグラウンドで自動実行されます。 138 タスクの実行が終了すると、実行結果がエラーかどうかに関わらず、タスクの属性で指定した消尽回数が1差し引かれます。 139 その結果、消尽回数がゼロでない限り、タスクの属性で指定しました実行間隔時間後に、再度タスクが実行されます。 140 なお、消尽回数がゼロになったタスクは、内部データベースの容量の上限に達した場合、自動的に削除されることがありますので、ご注意ください。 141 以下の場合は、タスク開始指示を行ってもタスク実行のスケジューリングされませんので、ご注意ください。 142 ・消尽回数がゼロのタスク<BR> 143 ・タスクの実行優先順位が@ref PRIORITY_STOPPED のタスク<BR> 144 ・ペアレンタルコントロールが有効で、タスク属性でペアレンタルコントロールの解除がされていない場合<BR> 145 ・EULA同意がされていない状態で、タスク属性でEULA同意の解除がされていない場合<BR> 146 ・ゾーンAPからダウンロードされたポリシーリストで、タスク実行が停止された場合<BR> 147 ・ダウンロードサービスを行うサーバからサービス停止の提示されていた場合<BR> 148 ・管理者が全タスクを一時的に停止中の場合<BR> 149 良くあるケースの確認方法として、消尽回数の確認は、@ref GetCount 関数によって可能です。 150 ペアレンタルコントロールおよび、EULA同意については、Configツールなどで設定が可能です。 151 管理者が全タスクを一時的に停止中の場合は、@ref GetState 関数によって @ref TASK_PAUSED が返されますので識別が可能です。 152 <BR> 153 タスク完了待機の方法は、下記のような方法があります。 154 ・@ref WaitFinish 関数による実行完了を待つ方法 155 ・最大の時間待ち時間を指定して @ref WaitFinish 関数による実行完了を待つ方法 156 ・@ref GetState 関数による実行完了タスク状態のポーリングも使用可能 157 ・@ref RegisterNewArrivalEvent 関数で登録した Event による新着イベント待ちを方法 158 なお、完了を検知後、@ref GetState でタスクの状態、@ref GetResult でタスクの実行結果コード、 159 @ref GetHttpStatusCode でhttp通信の結果コードが確認できます。 160 なお、その他詳細情報は、@ref GetStateDetail で取得可能です。 161 <BR> 162 @return 関数の実行結果を返します。以下に挙げる Result を返します。 163 @retval ResultSuccess タスクの開始指示に成功しました。 164 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 165 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 166 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged の呼び出してください。 167 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 168 */ 169 nn::Result Start(void); 170 171 /*! 172 @brief タスクの即時開始指示します。あらかじめ、インフラ接続可能な状態にした後に呼び出す必要があります。 173 スケジュールされた時間に先駆けタスク実行が可能になりますので、バックグラウンドで動作するタスクを必要応じて即実行する用途に向いています。 174 但し、実行優先度は、タスク登録時の属性値が引き継がれていますので、優先度が高いタスクが別にある場合は、そのタスクが優先されますのでご注意ください。 175 @ref Start との違いは、すでに実行時刻がきている状態である点、通信が中断した場合は、リジューム状態には至らず、タスク実行結果がエラーとなります。 176 また、注意点として、対象のタスクのみ1回だけ実行したい場合は、消尽回数を「1」に設定をしてください。 177 「1」以上設定しますと通常のタスクと同じように消尽回数がゼロになるまでバックグラウンドでタスクが自動実行されます。 178 インフラ接続可能にするためには、nn::ac::Connect()を参照ください。 179 @return 関数の実行結果を返します。以下に挙げる Result を返します。 180 @retval ResultSuccess タスクの即時開始指示に成功しました。 181 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 182 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 183 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged の呼び出してください。 184 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 185 */ 186 nn::Result StartImmediate(void); 187 188 /*! 189 @brief タスクの実行中止指示します。一度中止指示を行ったタスクは、@ref Start で再度開始指示ができます。 190 中止状態のタスクは、@ref GetState 関数を呼び出すとタスクの状態として @ref TASK_STOPPED が返ります。 191 @return 関数の実行結果を返します。以下に挙げる Result を返します。 192 @retval ResultSuccess タスクの実行中止指示に成功しました。 193 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 194 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 195 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged の呼び出してください。 196 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 197 */ 198 nn::Result Cancel(void); 199 200 /*! 201 @brief 指定時間内にタスクの完了待ちを行います。タイムアウト機能がついた、@ref WaitFinish です。 202 URLの更新日時が以前と同じ日時の場合、ダウンロードはされずタスクの完了にはなりませんので、ご注意ください。 203 @param[in] timeout タイムアウト時間を指定します。 204 @return 関数の実行結果を返します。以下に挙げる Result を返します。 205 @retval ResultSuccess @ref TASK_DONE または、@ref TASK_ERROR でタスクが完了しました。 206 @retval ResultWaitFinishTaskNotDone タスクの開始指示されていないか(@ref TASK_REGISTERED 状態)、タスク実行が停止中(@ref TASK_STOPPED 状態)です。再度タスクの開始指示を行ってからタスクの完了待ちをしてください。 207 @retval ResultWaitFinishTimeout WaitFinish関数でタイムアウトになりました。再度完了待ちを行うなどの対応を行ってください。 208 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 209 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 210 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged の呼び出してください。 211 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 212 */ 213 nn::Result WaitFinish(const nn::fnd::TimeSpan& timeout); 214 215 /*! 216 @brief タスクの完了待ち指示します。 217 URLの更新日時が以前と同じ日時の場合、ダウンロードはされずタスクの完了にはなりませんので、ご注意ください。 218 @return 関数の実行結果を返します。以下に挙げる Result を返します。 219 @retval ResultSuccess @ref TASK_DONE または、@ref TASK_ERROR でタスクが完了しました。 220 @retval ResultWaitFinishTaskNotDone タスクの開始指示されていないか(@ref TASK_REGISTERED 状態)、タスク実行が停止中(@ref TASK_STOPPED 状態)です。再度タスクの開始指示を行ってからタスクの完了待ちをしてください。 221 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 222 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 223 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged の呼び出してください。 224 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 225 */ 226 nn::Result WaitFinish(void); 227 228 /*! 229 @brief タスク状態の取得します。 230 通常、タスクの状態は、下記の①から⑤までを遷移します。 231 ①TASK_REGISTERED(登録済み)<BR> 232 ②TASK_WAITING_TIMER(Start()後、時間待ち)<BR> 233 ③TASK_WAITING(実行待ち)<BR> 234 ④TASK_RUNNINGまたは、TASK_RETRY(実行中)<BR> 235 ⑤TASK_DONEまたは、TASK_ERROR(実行終了状態)<BR> 236 特殊な状態として、TASK_PAUSED(一時停止中)、TASK_STOPPED(Cancel()による停止中)があります。 237 また、短時間で状態が変わる場合もあり、すべての状態を捕捉できない場合があることにご注意ください。 238 @param[in] acknowledge タスク実行が終わると、実行結果を確認できるように実行終了状態を保持します。 239 このフラグをtrueにして呼び出しますと、実行終了状態を保持を解除します。 240 仮に消尽回数がゼロでないタスクの場合は、前回のタスク実行完了直後に再スケジューリングされますので、 241 次回の返り値は、@ref TASK_WAITING_TIMER に切り替わることになります。 (省略可能) 242 @param[out] pCount 残り回数が返ります。 (省略可能) 243 @param[out] pStepID タスクステップIDが返ります。(省略可能) 244 @return タスクの状態を示すコードが返ります。<BR> 245 */ 246 TaskStateCode GetState(bool acknowledge=false, u32* pCount=NULL, u8* pStepID=NULL); 247 248 /*! 249 @brief 通信エラーコードを取得します。 250 下記は、よくあるhttp通信におけるレスポンスコードの例です。<BR> 251 200 正常なhttp通信結果です。<BR> 252 206 正常なhttp通信結果ですが、まだ継続データがある状態です。<BR> 253 401 Basic認証結果が正しくありません。Basic認証には対応していませんので、使用しないでください。<BR> 254 404 URLコンテンツが見つかりません。URLが正しいか、コンテンツが削除されていないか確認ください。<BR> 255 403 アクセスが認められていないURLが指定されました。URLが正しいか確認ください。<BR> 256 500 サーバ側の問題でエラーが発生しました。サーバの運用者に連絡ください。<BR> 257 @param[out] pCount 残り回数が返ります。 (省略可能) 258 @param[out] pStepID タスクステップIDが返ります。(省略可能) 259 @return 通信エラーコードが返ります。<BR> 260 @retval U32_CANNOT_GET_DATA データが取得できません。 261 */ 262 u32 GetHttpStatusCode(u32* pCount=NULL, u8* pStepID=NULL); 263 264 /*! 265 @brief @ref nn::boss::GetHttpStatusCode の旧名です。 266 互換性のために残しているものですので、新規利用は避けてください。 267 */ 268 u32 GetCommErrorCode(u32* pCount=NULL, u8* pStepID=NULL) NN_ATTRIBUTE_DEPRECATED; 269 270 /*! 271 @brief タスク結果コードを取得します。 272 タスク結果コードについては、@ref TaskResultCode を参照してください。 273 <BR> 274 よくあるタスク実行中のエラーについて <BR> 275 ①インフラ通信が切断された場合 <BR> 276 @ref HTTP_ERROR_RECV <BR> 277 @ref HTTP_ERROR_CONNECT <BR> 278 ②サーバへの接続が失敗した場合(URLが示すサーバが見つからない場合) <BR> 279 @ref HTTP_ERROR_DNS <BR> 280 @ref HTTP_ERROR_CONNECT <BR> 281 ③サーバへの接続が失敗した場合(HTTPSのネゴシエーションに失敗した場合) <BR> 282 @ref SSL_ERROR_FAILED <BR> 283 @ref SSL_ERROR_VERIFY_COMMON_NAME <BR> 284 @ref SSL_ERROR_VERIFY_ROOT_CA <BR> 285 @ref SSL_ERROR_VERIFY_CHAIN <BR> 286 @ref SSL_ERROR_VERIFY_DATE <BR> 287 ④NSAダウンロードが失敗した場合( NSAストレージ領域が不足した場合)<BR> 288 @ref NSA_ERROR_STORAGE_INSUFFICIENCY <BR> 289 ⑤NSAダウンロードが失敗した場合( NSAフォーマット以外か、通信エラーで内容が壊れたファイルをダウンロードした場合)<BR> 290 @ref NSA_ERROR_INVALID_FORMAT <BR> 291 @ref NSA_ERROR_VERIFY_HASH <BR> 292 @ref NSA_ERROR_VERIFY_SIGNATURE <BR> 293 @ref NSA_NSD_ERROR_VERIFY_HASH <BR> 294 @ref NSA_NSD_ERROR_VERIFY_SIGNATURE <BR> 295 @ref NSA_NSD_ERROR_INVALID_FORMAT <BR> 296 <BR> 297 @param[out] pCount 残り回数が返ります。 (省略可能) 298 @param[out] pStepID タスクステップIDが返ります。(省略可能) 299 @return タスク結果コードが返ります。<BR> 300 */ 301 TaskResultCode GetResult(u32* pCount=NULL, u8* pStepID=NULL); 302 303 /*! 304 @brief タスク状態を取得します。 305 あらかじめ、@ref TaskStatus のインスタンスを用意ください。また、このインスタンスは、128B程度のメモリを必要としますのでご注意ください。 306 それぞれの属性値の取得については、@ref TaskStatus のGetProperty()を参照ください。 307 @param[out] pStatus タスクステータスが返ります。 308 @param[in] acknowledge タスク実行が終わると、実行結果を確認できるように、@ref TaskStatus 内のタスクの実行終了状態を 309 示すコード @ref TaskStateCode を保持します。このフラグをtrueにして呼び出しますと、 310 この実行終了状態の保持を解除します。 311 仮に消尽回数がゼロでないタスクの場合は、前回のタスク実行完了直後に再スケジューリングされますので、 312 次回からタスクの状態は、@ref TASK_WAITING_TIMER に切り替わることになります。 (省略可能) 313 @param[out] pStepID タスクステップIDが返ります。 314 @param[in] taskStep タスクステップIDを指定します。 (省略時はカレントステップ) 315 @return 関数の実行結果を返します。以下に挙げる Result を返します。 316 @retval ResultSuccess タスク状態を取得に成功しました。 317 @retval ResultInvalidTaskStatus タスクステータスのポインタがNULLです。 318 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 319 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 320 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged の呼び出してください。 321 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 322 */ 323 nn::Result GetStateDetail(TaskStatus* pStatus, bool acknowledge=false, u8* pStepID=NULL, u8 taskStep=CURRENT_STEP_ID); 324 325 /*! 326 @brief @ref nn::boss::GetStateDetail の旧名です。 327 互換性のために残しているものですので、新規利用は避けてください。 328 */ 329 nn::Result GetStatus(TaskStatus* pStatus, u8* pStepID=NULL, u8 taskStep=CURRENT_STEP_ID) NN_ATTRIBUTE_DEPRECATED; 330 331 /*! 332 @brief タスクエラー状態を取得します。 333 あらかじめ、@ref TaskError のインスタンスを用意ください。また、このインスタンスは、136B程度のメモリを必要としますのでご注意ください。 334 @param[out] pTaskError タスクエラー状態が返ります。 335 @param[out] pStepID タスクステップIDが返ります。 336 @param[in] taskStep タスクステップIDを指定します。 (省略時はカレントステップ) 337 @return 関数の実行結果を返します。以下に挙げる Result を返します。 338 @retval ResultSuccess 取得に成功しました。 339 @retval ResultInvalidTaskError タスクエラー情報のポインタがNULLです。 340 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 341 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 342 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged の呼び出してください。 343 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 344 */ 345 nn::Result GetError(TaskError* pTaskError, u8* pStepID=NULL, u8 taskStep=CURRENT_STEP_ID); 346 347 /*! 348 @brief 登録済のタスク情報を取得します。 349 あらかじめ、@ref TaskPolicy のインスタンス、@ref TaskAction のインスタンス、 350 @ref TaskOptionのインスタンスを用意ください。 351 それぞれの属性値の取得については、各クラスのGetProperty()を参照ください。 352 @param[out] pPolicy タスクポリシーを指定します。 353 @param[out] pAction タスクアクションを指定します。 354 @param[out] pOption タスクオプションを指定します。 355 @param[in] taskStep タスクステップID指定 (省略時はカレントステップ) 356 @return 関数の実行結果を返します。以下に挙げる Result を返します。 357 @retval ResultSuccess 取得に成功しました。 358 @retval ResultInvalidTaskId タスクIDのポインタがNULLまたは0文字列です。 359 @retval ResultInvalidPolicy ポリシィ情報のポインタがNULLです。 360 @retval ResultInvalidAction タスクアクションのポインタがNULLです。 361 @retval ResultInvalidOption タスクオプションのポインタがNULL,またはoptionコードが範囲外です。 362 @retval ResultTaskNotExist 指定されたタスクIDが見つかりません。登録済であるか確認ください。 363 @retval ResultIpcNotSessionInitialized セッションが初期化されていないか、権限不適合です。@ref Initialize もしくは @ref InitailizePriviledged の呼び出し前に本関数が呼び出されると、このResultが返ります。BOSSライブラリを利用する際には、必ず初めに@ref Initialize もしくは @ref InitailizePriviledged の呼び出してください。 364 @retval 上記以外 想定外のエラー(エラー内容については、@ref boss_Result.h を参照)。 365 */ 366 nn::Result GetInfo(TaskPolicy* pPolicy, TaskAction* pAction, TaskOption* pOption, u8 taskStep=CURRENT_STEP_ID); 367 368 /*! 369 @brief タスクIDを取得します。 370 @return タスクIDの文字列が返ります。<BR> 371 */ 372 char* GetTaskId(void); 373 374 protected: 375 friend class AccessConfig; 376 TaskConfig m_Task; 377 private: 378 bool CheckTaskId(void); 379 380 }; 381 382 } // end of namespace boss 383 } // end of namespace nn 384 385 #endif // __cplusplus 386 387 #endif /* NN_BOSS_BOSS_TASK_H_ */ 388