1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: boss_NsData.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: 26304 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_BOSS_BOSS_NSDATA_H_ 17 #define NN_BOSS_BOSS_NSDATA_H_ 18 19 #include <nn/fnd/fnd_DateTime.h> 20 #include <nn/boss/boss_Const.h> 21 #include <nn/boss/boss_Result.h> 22 #include <nn/boss/boss_Types.h> 23 24 #ifdef __cplusplus 25 26 namespace nn { 27 namespace boss { 28 29 /*! 30 @brief NSデータを表すクラスです。NSデータの操作(Readなど)に利用します。 31 */ 32 class NsData 33 { 34 public: 35 static const s32 NN_BOSS_NSDATA_READ_ERROR_GET_HEADER = -1; //!< NSデータのReadNsDataエラー定義。NSデータヘッダの取得に失敗した。 36 static const s32 NN_BOSS_NSDATA_READ_ERROR_READ_DATA = -2; //!< NSデータのReadNsDataエラー定義。NSデータの読み込みに失敗した。 37 static const s32 NN_BOSS_NSDATA_READ_ERROR_IPC = -3; //!< NSデータのReadNsDataエラー定義。IPCでエラーが発生した。 38 NN_PADDING4; 39 40 /*! 41 @brief コンストラクタです。 42 */ 43 explicit NsData(void); 44 45 /*! 46 @brief デストラクタです。 47 */ 48 virtual ~NsData(void); 49 50 /*! 51 @brief シリアルIDを指定してNSデータを取得します。 52 @param[in] serial シリアルIDを指定します。 53 @return 処理の結果が返ります。<BR> 54 */ 55 nn::Result Initialize(u32 serial); 56 57 /*! 58 @brief NSDを削除します。 59 @return 処理の結果が返ります。<BR> 60 @retval Description== @ref ER_NSDATA_NOTFOUND 「NSD Data なし」を表すエラー 61 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 62 */ 63 nn::Result Delete(void); 64 65 /*! 66 @brief NSAヘッダ情報を読込みます。 67 @param[in] type ヘッダの要素種別を指定します。 68 @param[out] pValue ヘッダ情報の格納バッファを指定します。 69 @param[in] size バッファサイズを指定します。 70 @return 処理の結果が返ります。<BR> 71 @retval Description== @ref ER_INVALID_NSDATA_VALUE 「NSDATA格納領域のポインタがNULLです。」を表すエラー 72 @retval Description== @ref ER_NSDATA_NOTFOUND 「NSD Data なし」を表すエラー 73 @retval Description== @ref ER_NSDATA_INVALID_FORMAT 「NSD Data フォーマット異常」を表すエラー 74 @retval Description== @ref ER_INVALID_NSDATA_GETHEAD_SIZE 「不正なNSDATAのSIZEパラメータ指定」を表すエラー 75 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 76 */ 77 nn::Result GetHeaderInfo(HeaderInfoType type, void* pValue, size_t size); 78 79 /*! 80 @brief NSDを読込みます。 81 @param[out] pDataBuf NSDのバッファを指定します。 82 @param[in] bufLen NSDのバッファ長を指定します。 83 @return 読み込んだバイト数を返します。終端に達したときは 0 を返します。<BR> 84 @retval Description== @ref ER_INVALID_NSDATA_VALUE 「NSDATA格納領域のポインタがNULLです。」を表すエラー 85 @retval Description== @ref ER_NSDATA_NOTFOUND 「NSD Data なし」を表すエラー 86 @retval Description== @ref ER_NSDATA_INVALID_FORMAT 「NSD Data フォーマット異常」を表すエラー 87 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 88 */ 89 s32 ReadData(u8* pDataBuf, size_t bufLen); 90 91 /*! 92 @brief NSDの読み込み位置を変更します。 93 @param[in] position 読み込み位置の変更する位置を指定します。 94 @param[in] base 読み込み位置の変更する基準を指定します。 95 @return 処理の結果が返ります。<BR> 96 @retval Description== @ref ER_INVALID_NSDATA_SEEK_POSITION 「NSDATAのシーク位置がデータサイズを超えています。」を表すエラー 97 @retval Description== @ref ER_NSDATA_NOTFOUND 「NSD Data なし」を表すエラー 98 @retval Description== @ref ER_NSDATA_INVALID_FORMAT 「NSD Data フォーマット異常」を表すエラー 99 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 100 */ 101 nn::Result SetReadDataPosition(s64 position, PositionBase base); 102 103 /*! 104 @brief NSデータの付加情報を設定します。 105 @param[in] info 設定する付加情報を指定します。 106 @return 処理の結果が返ります。<BR> 107 @retval Description== @ref ER_NSDATA_NOTFOUND 「NSD Data なし」を表すエラー 108 @retval Description== @ref ER_NSDATA_INVALID_FORMAT 「NSD Data フォーマット異常」を表すエラー 109 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 110 */ 111 nn::Result SetAdditionalInfo(u32 info); 112 113 /*! 114 @brief NSデータの付加情報を取得します。 115 @param[in] info 現在の付加情報が返ります。 116 @return 処理の結果が返ります。<BR> 117 @retval Description== @ref ER_INVALID_NSDATA_INFO 「NSDATA追加情報を格納するポインタがNULLです。」を表すエラー 118 @retval Description== @ref ER_NSDATA_NOTFOUND 「NSD Data なし」を表すエラー 119 @retval Description== @ref ER_NSDATA_INVALID_FORMAT 「NSD Data フォーマット異常」を表すエラー 120 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 121 */ 122 nn::Result GetAdditionalInfo(u32* pInfo); 123 124 /*! 125 @brief NSデータの既読未読フラグを設定します。 126 @param[in] flag 取得するフラグを指定します。 true:既読 127 @return 処理の結果が返ります。<BR> 128 @retval Description== @ref ER_NSDATA_NOTFOUND 「NSD Data なし」を表すエラー 129 @retval Description== @ref ER_NSDATA_INVALID_FORMAT 「NSD Data フォーマット異常」を表すエラー 130 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 131 */ 132 nn::Result SetReadFlag(bool flag); 133 134 /*! 135 @brief NSデータの既読未読フラグを取得します。 136 @param[out] flag 取得したフラグが返ります。true:既読 137 @return 処理の結果が返ります。<BR> 138 @retval Description== @ref ER_INVALID_NSDATA_READFLAG 「NSDATAリードフラグの格納領域のポインタがNULLです。」を表すエラー 139 @retval Description== @ref ER_NSDATA_NOTFOUND 「NSD Data なし」を表すエラー 140 @retval Description== @ref ER_NSDATA_INVALID_FORMAT 「NSD Data フォーマット異常」を表すエラー 141 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 142 */ 143 nn::Result GetReadFlag(bool* pFlag); 144 145 /*! 146 @brief NSDの更新日時を取得します。 147 @param[out] pTime 更新したタイムスタンプが返ります。 148 @return 処理の結果が返ります。<BR> 149 @retval Description== @ref ER_INVALID_NSDATA_TIME 「NSDATAのUPDATEタイムの格納領域のポインタがNULLです。」を表すエラー 150 @retval Description== @ref ER_NSDATA_NOTFOUND 「NSD Data なし」を表すエラー 151 @retval Description== @ref ER_NSDATA_INVALID_FORMAT 「NSD Data フォーマット異常」を表すエラー 152 @retval Description== @ref ER_FILE_ACCESS 「ファイルアクセスに失敗」を表すエラー 153 */ 154 nn::Result GetLastUpdated(nn::fnd::DateTime* pTime); 155 156 protected: 157 bool m_Privileged; 158 NN_PADDING3; 159 u32 m_SerialId; 160 s32 m_dataSize; 161 NN_PADDING4; 162 AppIdType m_AppId; 163 s64 m_ReadDataPos; 164 165 }; 166 167 168 } // end of namespace boss 169 } // end of namespace nn 170 171 #endif // __cplusplus 172 173 #endif /* NN_BOSS_BOSS_NSDATA_H_ */ 174