2009/9/9 Rico Schüller <kgbricola(a)web.de>:
-static void parse_fx10_annotation(const char **ptr) +static HRESULT parse_fx10_annotation(struct d3d10_effect_variable *a, const char **ptr, const char *data) { - skip_dword_unknown(ptr, 3); + DWORD offset; + + read_dword(ptr, &offset); + TRACE("Annotation name at offset %#x.\n", offset); + + a->name = copy_name(data + offset); + if (!a->name) + { + ERR("Failed to copy name.\n"); + return E_OUTOFMEMORY; + } + TRACE("Annotation name: %s.\n", a->name); + + read_dword(ptr, &offset); + TRACE("Annotation type info at offset %#x.\n", offset); + + a->type = get_fx10_type(a->effect, data, offset); + if (!a->type) + { + ERR("Failed to get variable type.\n"); + return E_FAIL; + } + + skip_dword_unknown(ptr, 1); + + return S_OK; } It seems to me that this is just the same code for parsing variables (that has implications for 1/10 as well).