Changeset 2833 for trunk/kLdr/kLdrHlp.h
- Timestamp:
- Oct 26, 2006, 2:08:09 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kLdr/kLdrHlp.h
r2832 r2833 160 160 161 161 162 /** @name Parameter validation macros 163 * @{ */ 164 165 /** Crash validation of a string argument. */ 166 #define KLDRHLP_VALIDATE_STRING(str) \ 167 do { strlen(str); } while (0) 168 169 /** Crash validation of an optional string argument. */ 170 #define KLDRHLP_VALIDATE_OPTIONAL_STRING(str) \ 171 do { if (str) { KLDRHLP_VALIDATE_STRING(str); } } while (0) 172 173 /** Return/Crash validation of an output buffer. */ 174 #define KLDRHLP_VALIDATE_BUFFER(buf, cb) \ 175 do { \ 176 if ((cb)) \ 177 { \ 178 uint8_t __b; \ 179 uint8_t volatile * __pb = (uint8_t volatile *)(buf); \ 180 size_t __cbPage1 = 0x1000 - ((uintptr_t)(__pb) & 0xfff); /* ASSUMES page size! */ \ 181 __b = *__pb; *__pb = 0xff; *__pb = __b; \ 182 if ((cb) > __cbPage1) \ 183 { \ 184 size_t __cb = (cb) - __cbPage1; \ 185 __pb -= __cbPage1; \ 186 for (;;) \ 187 { \ 188 __b = *__pb; *__pb = 0xff; *__pb = __b; \ 189 if (__cb < 0x1000) \ 190 break; \ 191 __pb += 0x1000; \ 192 __cb -= 0x1000; \ 193 } \ 194 } \ 195 } \ 196 else \ 197 return KLDR_ERR_INVALID_PARAMETER; \ 198 } while (0) 199 200 /** Crash validation of an optional output buffer. */ 201 #define KLDRHLP_VALIDATE_OPTIONAL_BUFFER(buf, cb) \ 202 do { \ 203 if ((buf) != NULL && (cb) != 0) \ 204 { \ 205 KLDRHLP_VALIDATE_BUFFER(buf, cb); \ 206 } \ 207 } while (0) 208 209 /** Return validation of an enum argument. */ 210 #define KLDRHLP_VALIDATE_ENUM(arg, enumname) \ 211 do { \ 212 if ((arg) <= enumname##_INVALID || (arg) >= enumname##_END) \ 213 { \ 214 return KLDR_ERR_INVALID_PARAMETER; \ 215 } \ 216 } while (0) 217 162 218 /** @} */ 163 219 164 220 221 /** @} */ 222 165 223 #endif /* __kLdrHlp_h__ */ 166 224
Note:
See TracChangeset
for help on using the changeset viewer.