title: VARIANT type punkVal gives undefined values?
body: <p>I am using few CComVariant type variables to store interface pointers.However, sometime I need to pass interface pointer as NULL.In this case when I do this:  </p>
  
  <pre><code>CComVariant vAData,vBData;
  ......
  ....
  CComQIPtr&lt;IBData&gt; pAData = vAData.punkVal; //vAData is {0, VT_I4} when I pass NULL 
  
  CComQIPtr&lt;IBData&gt;pBData = vBData.punkVal;  //vBData is {0, VT_I4} when I pass NULL
  </code></pre>
  
  <p>The first line fails and throws exception since the <code>vAData.punkVal = 0xffffffff00000000</code>
  But the second line passes fine with no error and it has valid <code>vBData.punkVal</code> value(0x0000000000000000).</p>
  
  <p>I am wondering why the two punkVal are different when both are NULL??
  Does anybody has any idea why this is happening??
  This throws exception only on 64bit machines.</p>