You are not doing anything wrong. According to the documentation:
A volatile field should not normally
be passed using a ref or out
parameter, since it will not be
treated as volatile within the scope
of the function. There are exceptions
to this, such as when calling an
interlocked API.