| 1193 | } |
| 1194 | |
| 1195 | void *alloc_callback_wtou( int id, void *callback, int *callback_len, bool wow64 ) |
| 1196 | { |
| 1197 | const struct callback_def *c, *end, *best; |
| 1198 | |
| 1199 | if (!(c = find_first_callback_def_by_id( id, wow64 ))) return callback; |
| 1200 | |
| 1201 | if (wow64) end = wow64_callback_data + wow64_callback_data_size; |
| 1202 | else end = callback_data + callback_data_size; |
| 1203 | |
| 1204 | best = NULL; |
| 1205 | while (c != end && c->id == id) |
| 1206 | { |
| 1207 | if (c->w_callback_len == *callback_len) |
| 1208 | { |
| 1209 | best = c; |
| 1210 | break; |
| 1211 | } |
| 1212 | if (!best && *callback_len >= c->w_callback_len) best = c; |
| 1213 | ++c; |
| 1214 | } |
| 1215 | |
| 1216 | if (!best) |
| 1217 | { |
| 1218 | ERR( "len %d is too small for callback %d, using default.\n", *callback_len, id ); |
| 1219 | best = find_first_callback_def_by_id( id, wow64 ); |
| 1220 | } |
| 1221 | if (best->w_callback_len != *callback_len) |
| 1222 | WARN( "Found len %d for id %d, len %d.\n", best->w_callback_len, id, *callback_len ); |
| 1223 | *callback_len = best->u_callback_len; |
| 1224 | return malloc( *callback_len ); |
| 1225 | } |
| 1226 | |
| 1227 | void convert_callback_utow( int id, void *u_callback, int u_callback_len, void *w_callback, int w_callback_len, bool wow64 ) |
| 1228 | { |
no test coverage detected