インラインアセンブラで↓のようなコードを書くと、×の行でシンタックスエラーが出ます。

struct TValue
{
  int Value1;
  int Value2;
};

asm
{
  MOV  [ESI+.Value1],EAX         //○
  MOV  [(TValue PTR ESI).Value1],EAX //×
}

STRUC〜ENDSで構造体を定義すると×の行もエラーは出ないのですが、
そうするとC++のほうで、その構造体が使えなくなります。

○の方法だとオペランドサイズのチェックをしてくれないので
どうしても×のようにチェックしてくれる方法を使いたいんですが、
何か方法(×の行のエラーの出ない書き方とか)はないでしょうか。