Changeset 321 for EcnlProtoTool/trunk/ntshell/webserver/websocket_fbs.h
- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/ntshell/webserver/websocket_fbs.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r279 r321 4 4 * Copyright (C) 2017 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 42 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 28 * 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 * @(#) $Id$ … … 52 37 53 38 /* 54 * åºå®é·ãããã¡å¯å¤é·ã¹ããªã¼ã39 * 固定長バッファ可変長ストリーム 55 40 */ 56 41 … … 65 50 66 51 #ifndef WEBSOCKET_MEMPOOL_GET_TMO 67 #define WEBSOCKET_MEMPOOL_GET_TMO (0) /* ã¡ã¢ãªãã¼ã«åå¾æã®ã¿ã¤ã ã¢ã¦ãæå®*/52 #define WEBSOCKET_MEMPOOL_GET_TMO (0) /* メモリプール取得時のタイムアウト指定 */ 68 53 #endif /* WEBSOCKET_MEMPOOL_GET_TMO */ 69 54 70 55 #ifndef NUM_WEBSOCKET_MEMPOOL_BLOCK 71 #define NUM_WEBSOCKET_MEMPOOL_BLOCK (60) /* é»æç¨ã¡ã¢ãªãããã¯ã®æ°*/56 #define NUM_WEBSOCKET_MEMPOOL_BLOCK (60) /* 電文用メモリブロックの数 */ 72 57 #endif /* NUM_WEBSOCKET_MEMPOOL_BLOCK */ 73 58 74 59 #ifndef WEBSOCKET_MEMPOOL_BLOCK_SIZE 75 #define WEBSOCKET_MEMPOOL_BLOCK_SIZE (256) /* é»æç¨ã¡ã¢ãªãããã¯ã®ãµã¤ãº*/60 #define WEBSOCKET_MEMPOOL_BLOCK_SIZE (256) /* 電文用メモリブロックのサイズ */ 76 61 #endif /* WEBSOCKET_MEMPOOL_BLOCK_SIZE */ 77 62 78 typedef unsigned int WS_FBS_SIZE_T; /* size_t ç¸å½*/79 typedef int WS_FBS_SSIZE_T; /* ssize_t ç¸å½*/80 81 /* T_WS_FST_BLK 管çé åãµã¤ãº*/63 typedef unsigned int WS_FBS_SIZE_T; /* size_t相当 */ 64 typedef int WS_FBS_SSIZE_T; /* ssize_t相当 */ 65 66 /* T_WS_FST_BLK管理領域サイズ */ 82 67 #define DEF_WS_EDT_HDR_LEN (sizeof(intptr_t)) 83 68 84 /* 管çé åãµã¤ãº(64byte - sizeof(T_MSG)) */69 /* 管理領域サイズ(64byte - sizeof(T_MSG)) */ 85 70 /* #define DEF_WS_FBS_LIB_HDR_LEN ((WEBSOCKET_MEMPOOL_BLOCK_SIZE + sizeof(int) - 1)>> 2) // */ 86 71 #define DEF_WS_FBS_LIB_HDR_LEN (64 - DEF_WS_EDT_HDR_LEN) 87 72 88 /* 管çé åãå«ããããã¯ã«ä¿æãããã¼ã¿ãµã¤ãº*/73 /* 管理領域を含むブロックに保持するデータサイズ */ 89 74 #define DEF_WS_FBS_FST_DAT_LEN (64) 90 75 91 /* ãªã³ã¯ãã¤ã³ã¿é 92 åã®ãµã¤ãº(byte) */ 76 /* リンクポインタ配列のサイズ(byte) */ 93 77 #define DEF_WS_FBS_LNK_LEN (WEBSOCKET_MEMPOOL_BLOCK_SIZE - DEF_WS_EDT_HDR_LEN - DEF_WS_FBS_LIB_HDR_LEN - DEF_WS_FBS_FST_DAT_LEN) 94 78 95 /* åºå®é·ãããã¡æ大ãµã¤ãº*/79 /* 固定長バッファ最大サイズ */ 96 80 #define DEF_WS_FBS_BUF_MAXLEN ((DEF_WS_FBS_LNK_LEN / sizeof(void *)) * WEBSOCKET_MEMPOOL_BLOCK_SIZE + DEF_WS_FBS_FST_DAT_LEN) 97 81 98 /* åè¦ç´ ãããã¡ã®ãµã¤ãº*/82 /* 子要素バッファのサイズ */ 99 83 #define DEF_WS_FBS_SUB_BUF_LEN WEBSOCKET_MEMPOOL_BLOCK_SIZE 100 84 101 /* é»æã®ç¨®å¥(å 102 容ã¯ä»®) */ 85 /* 電文の種別(内容は仮) */ 103 86 typedef enum 104 87 { 105 WS_FBS_TYPE_BLANK = 0, /* æªä½¿ç¨ã¹ããªã¼ã */ 106 WS_FBS_TYPE_INTERNAL = 1, /* å 107 é¨ã¡ãã»ã¼ã¸ */ 108 WS_FBS_TYPE_WEBSOCKET = 2 /* WEBSOCKETé»æ */ 88 WS_FBS_TYPE_BLANK = 0, /* 未使用ストリーム */ 89 WS_FBS_TYPE_INTERNAL = 1, /* 内部メッセージ */ 90 WS_FBS_TYPE_WEBSOCKET = 2 /* WEBSOCKET電文 */ 109 91 } TA_WS_MSG_TYPE; 110 92 111 /* ãªã³ã¯ãã¤ã³ã¿é 112 åã«åæããããåè¦ç´ ãããã¡ */ 93 /* リンクポインタ配列に列挙される、子要素バッファ */ 113 94 typedef struct 114 95 { … … 116 97 } T_WS_SUB_BLK; 117 98 118 /* ãªã³ã¯ãã¤ã³ã¿é 119 å */ 99 /* リンクポインタ配列 */ 120 100 typedef union 121 101 { … … 124 104 } T_WS_FBS_LNK; 125 105 126 /* 管çé å(64byte - sizeof(T_MSG)) */106 /* 管理領域(64byte - sizeof(T_MSG)) */ 127 107 typedef struct 128 108 { 129 uint16_t length; /* ã¡ãã»ã¼ã¸é·*/130 uint16_t type; /* ã¡ãã»ã¼ã¸ã¿ã¤ã*/109 uint16_t length; /* メッセージ長 */ 110 uint16_t type; /* メッセージタイプ */ 131 111 union{ 132 ID mbxid; /* éä¿¡å 133 ã¡ã¼ã«ããã¯ã¹IDï¼å 134 é¨ã¡ãã»ã¼ã¸ï¼ */ 112 ID mbxid; /* 送信元メールボックスID(内部メッセージ) */ 135 113 }sender; 136 114 union{ 137 ID mbxid; /* éä¿¡å 138 ã¡ã¼ã«ããã¯ã¹IDï¼å 139 é¨ã¡ãã»ã¼ã¸ï¼ */ 115 ID mbxid; /* 送信先メールボックスID(内部メッセージ) */ 140 116 }target; 141 117 union{ 142 ID mbxid; /* è¿ä¿¡å 143 ã¡ã¼ã«ããã¯ã¹IDï¼å 144 é¨ã¡ãã»ã¼ã¸ï¼ */ 118 ID mbxid; /* 返信先メールボックスID(内部メッセージ) */ 145 119 }reply; 146 120 147 int rd; /* èªã¿åããããæ 148 å ± */ 149 int wr; /* æ¸ãè¾¼ã¿ãããæ 150 å ± */ 121 int rd; /* 読み取りヘッド情報 */ 122 int wr; /* 書き込みヘッド情報 */ 151 123 } T_WS_FBS_HDR; 152 124 153 /* 管çé åãå«ããããã¯ã®æ§é*/125 /* 管理領域を含むブロックの構造 */ 154 126 typedef struct 155 127 { 156 128 uint8_t _msg[DEF_WS_EDT_HDR_LEN]; /* T_MSG */ 157 T_WS_FBS_HDR hdr; /* 管çé å64byte - sizeof(T_MSG) */129 T_WS_FBS_HDR hdr; /* 管理領域 64byte - sizeof(T_MSG) */ 158 130 uint8_t _gap[DEF_WS_FBS_LIB_HDR_LEN - sizeof(T_WS_FBS_HDR)]; 159 T_WS_FBS_LNK lnk; /* ãªã³ã¯ãã¤ã³ã¿é 160 å 128byte */ 131 T_WS_FBS_LNK lnk; /* リンクポインタ配列 128byte */ 161 132 uint8_t payload[DEF_WS_FBS_FST_DAT_LEN]; 162 133 } T_WS_FST_BLK; … … 168 139 } WS_FBS_ID; 169 140 170 /* ã¡ãã»ã¼ã¸ãã¥ã¼*/141 /* メッセージキュー */ 171 142 typedef struct ws_fbs_queue 172 143 { 173 T_WS_FST_BLK *pk_head; /* å 174 é ã®ã¡ãã»ã¼ã¸ */ 175 T_WS_FST_BLK *pk_last; /* æ«å°¾ã®ã¡ãã»ã¼ã¸ */ 144 T_WS_FST_BLK *pk_head; /* 先頭のメッセージ */ 145 T_WS_FST_BLK *pk_last; /* 末尾のメッセージ */ 176 146 } T_WS_FBS_QUEUE; 177 147 178 148 extern ID ws_mempoolid; 179 149 180 /* ã¡ã¢ãªãããã¯åå¾ ok:ãã¤ã³ã¿NG:NULL */150 /* メモリブロック取得 ok:ポインタ NG:NULL */ 181 151 void *_ws_fbs_mbx_get(WS_FBS_SIZE_T fa_req_size); 182 152 183 /* ã¡ã¢ãªãããã¯è§£æ¾ ok:0 NG:é0 */153 /* メモリブロック解放 ok:0 NG:非0 */ 184 154 ER _ws_fbs_mbx_rel(void *p); 185 155 186 156 /* 187 * é å確ä¿188 * å¼æ°189 * WS_FBS_SIZE_T fa_req_size è¦æ±ãããã¡ãµã¤ãº(byte)157 * 領域確保 158 * 引数 159 * WS_FBS_SIZE_T fa_req_size 要求バッファサイズ(byte) 190 160 * max: DEF_WS_FBS_BUF_MAXLEN 191 * WS_FBS_ID *fp_id 確ä¿ããFBS-IDã®æ ¼ç´å 192 193 * æ»ãå¤ 194 * ER 0:ok é0:NG 161 * WS_FBS_ID *fp_id 確保したFBS-IDの格納先 162 * 戻り値 163 * ER 0:ok 非0:NG 195 164 */ 196 165 ER _ws_fbs_cre(WS_FBS_SIZE_T fa_req_size, WS_FBS_ID *fp_id); 197 166 198 167 /* 199 * é å解æ¾200 * å¼æ°201 * ws_fbs_id å 確ä¿ããFBS-ID202 * æ»ãå¤203 * ER 0:ok, é0:NG168 * 領域解放 169 * 引数 170 * ws_fbs_id型 確保したFBS-ID 171 * 戻り値 172 * ER 0:ok, 非0:NG 204 173 */ 205 174 ER _ws_fbs_del(WS_FBS_ID fa_id); 206 175 207 176 /* 208 * ä¿æãã¼ã¿ã®æç¡209 * å¼æ°210 * ws_fbs_id å 確ä¿ããFBS-ID211 * æ»ãå¤212 * bool_t 0: ç¡ã, 1:ãã177 * 保持データの有無 178 * 引数 179 * ws_fbs_id型 確保したFBS-ID 180 * 戻り値 181 * bool_t 0:無し, 1:あり 213 182 */ 214 183 bool_t _ws_fbs_exist_data(WS_FBS_ID fa_id); 215 184 216 185 /* 217 * ä¿æãã¼ã¿é·ã®åå¾218 * å¼æ°219 * ws_fbs_id å 確ä¿ããFBS-ID220 * æ»ãå¤221 * WS_FBS_SSIZE_T ä¿æãã¦ãããã¼ã¿ã®é·ã(byte) -1:NG186 * 保持データ長の取得 187 * 引数 188 * ws_fbs_id型 確保したFBS-ID 189 * 戻り値 190 * WS_FBS_SSIZE_T 保持しているデータの長さ(byte) -1:NG 222 191 */ 223 192 WS_FBS_SSIZE_T _ws_fbs_get_datalen(WS_FBS_ID fa_id); 224 193 225 194 /* 226 * èªã¿åãã«ã¼ã½ã«ã®ä½ç½®åå¾ 227 * å¼æ° 228 * ws_fbs_idå 確ä¿ããFBS-ID 229 * æ»ãå¤ 230 * WS_FBS_SIZE_T å 231 é ããã®çµ¶å¯¾ä½ç½® -1:NG 195 * 読み取りカーソルの位置取得 196 * 引数 197 * ws_fbs_id型 確保したFBS-ID 198 * 戻り値 199 * WS_FBS_SIZE_T 先頭からの絶対位置 -1:NG 232 200 */ 233 201 WS_FBS_SSIZE_T _ws_fbs_get_rpos(WS_FBS_ID fa_id); 234 202 235 203 /* 236 * èªã¿åãã«ã¼ã½ã«ã®ä½ç½®è¨å® 237 * å¼æ° 238 * ws_fbs_idå 確ä¿ããFBS-ID 239 * WS_FBS_SIZE_T fa_pos è¨å®ããä½ç½®(å 240 é ããã®çµ¶å¯¾ä½ç½®) 241 * æ»ãå¤ 242 * ER 0:ok, é0:NG 204 * 読み取りカーソルの位置設定 205 * 引数 206 * ws_fbs_id型 確保したFBS-ID 207 * WS_FBS_SIZE_T fa_pos 設定する位置(先頭からの絶対位置) 208 * 戻り値 209 * ER 0:ok, 非0:NG 243 210 */ 244 211 ER _ws_fbs_set_rpos(WS_FBS_ID fa_id, WS_FBS_SSIZE_T fa_pos); 245 212 246 213 /* 247 * èªã¿åãã«ã¼ã½ã«ã®ä½ç½®ç§»å248 * å¼æ°249 * ws_fbs_id å 確ä¿ããFBS-ID250 * WS_FBS_SIZE_T fa_seek 移åé(ç¾ç¶ãåé²ã®ã¿)251 * æ»ãå¤252 * ER 0:ok, é0:NG214 * 読み取りカーソルの位置移動 215 * 引数 216 * ws_fbs_id型 確保したFBS-ID 217 * WS_FBS_SIZE_T fa_seek 移動量(現状、前進のみ) 218 * 戻り値 219 * ER 0:ok, 非0:NG 253 220 */ 254 221 ER _ws_fbs_seek_rpos(WS_FBS_ID fa_id, WS_FBS_SSIZE_T fa_seek); 255 222 256 223 /* 257 * ä»»ææå®ä½ç½®ã®1byteèªã¿åã224 * 任意指定位置の1byte読み取り 258 225 */ 259 226 int _ws_fbs_peek(WS_FBS_ID fa_id, WS_FBS_SSIZE_T fa_seek); 260 227 261 228 /* 262 * ä»»ææå®ä½ç½®ã®1byteæ¸ãè¾¼ã¿229 * 任意指定位置の1byte書き込み 263 230 */ 264 231 ER _ws_fbs_poke(WS_FBS_ID fa_id, WS_FBS_SSIZE_T fa_seek, int fa_val); 265 232 266 233 /* 267 * ãã¼ã¿è¿½å268 * å¼æ°269 * ws_fbs_id å 確ä¿ããFBS-ID270 * const void * fa_dat 追å ãããã¼ã¿271 * WS_FBS_SSIZE_T fa_len 追å ããé·ã(byte)272 * æ»ãå¤273 * ER 0:ok, é0:NG234 * データ追加 235 * 引数 236 * ws_fbs_id型 確保したFBS-ID 237 * const void * fa_dat 追加するデータ 238 * WS_FBS_SSIZE_T fa_len 追加する長さ(byte) 239 * 戻り値 240 * ER 0:ok, 非0:NG 274 241 */ 275 242 ER _ws_fbs_add_data(WS_FBS_ID fa_id, const void *fa_dat, WS_FBS_SSIZE_T fa_len); 276 243 277 244 /* 278 * ãã¼ã¿è¿½å (é åãèªåçã«æ¡å¼µãã)279 * å¼æ°280 * ws_fbs_id å 確ä¿ããFBS-ID281 * const void * fa_dat 追å ãããã¼ã¿282 * WS_FBS_SSIZE_T fa_len 追å ããé·ã(byte)283 * æ»ãå¤284 * ER 0:ok, é0:NG245 * データ追加(領域を自動的に拡張する) 246 * 引数 247 * ws_fbs_id型 確保したFBS-ID 248 * const void * fa_dat 追加するデータ 249 * WS_FBS_SSIZE_T fa_len 追加する長さ(byte) 250 * 戻り値 251 * ER 0:ok, 非0:NG 285 252 */ 286 253 ER _ws_fbs_add_data_ex(WS_FBS_ID fa_id, const void *fa_dat, WS_FBS_SSIZE_T fa_len); 287 254 288 255 /* 289 * ãã¼ã¿åå¾290 * å¼æ°291 * ws_fbs_id å 確ä¿ããFBS-ID292 * void * fa_buf åå¾ãããããã¡293 * WS_FBS_SSIZE_T fa_maxlen åå¾ããé·ã(byte)294 * WS_FBS_SSIZE_T *p_len åå¾ããé·ã(byte)295 * æ»ãå¤296 * ER 0:ok, é0:NG256 * データ取得 257 * 引数 258 * ws_fbs_id型 確保したFBS-ID 259 * void * fa_buf 取得するバッファ 260 * WS_FBS_SSIZE_T fa_maxlen 取得する長さ(byte) 261 * WS_FBS_SSIZE_T *p_len 取得した長さ(byte) 262 * 戻り値 263 * ER 0:ok, 非0:NG 297 264 */ 298 265 ER _ws_fbs_get_data(WS_FBS_ID fa_id, void *fa_buf, WS_FBS_SSIZE_T fa_maxlen,
Note:
See TracChangeset
for help on using the changeset viewer.