> AFAIK it's the callee's responsibility to restore these registers. If
> this is true, then acmDriverEnum is broken. Should I report this
> somewhere?=20
If this is the behavior, then, yes, ACM is broken. I don't think =
Microsoft=20
would do anything with the report, though, as ACM is (AFAICT) deprecated =
in favour of the ActiveMovie/DirectShow/DirectXMedia interface.
It could be that some particular ACM codec you have installed has a bug, =
and clears this register on its enum callback, rather than the ACM =
itself,=20
too.
What most programmers do on most mature OS-es when there are =
inexplicable=20
bugs like this, is to put the work-around in, and live with it. For =
example,=20
getting display device information is also broken such that it may =
overwrite=20
data after the enum output struct; the work-around is to allocate a =
struct=20
with a kilobyte of padding on the stack, and pass that in. Your best bet =
is=20
probably to do something similar in this case (say, save esi into a =
stack=20
variable, call the function, then restore esi).
Cheers,
/ h+
|