<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <!--from windef.h -->
  <Type Name="tagPOINT">
    <AlternativeType Name="CPoint"></AlternativeType>
    <DisplayString>{{x={x} y={y}}}</DisplayString> <!-- Use trace call convention, everything inside {} get evaluated-->
  </Type>
  <Type Name="tagRECT">
    <AlternativeType Name="CRect"></AlternativeType>
    <DisplayString>{{LT({left}, {top}) RB({right}, {bottom})  [{right-left} x {bottom-top}]}}</DisplayString>
  </Type>

  <!--from winuser.h -->
  <Type Name="tagMSG">
    <DisplayString>{{msg={message,x} wp={wParam,x} lp={lParam,x}}}</DisplayString>
  </Type>

    <!-- from minwinbase.h -->
    <Type Name="_WIN32_FIND_DATAW">
        <DisplayString>{cFileName,su} {dwFileAttributes,h}</DisplayString>
        <StringView>cFileName</StringView>
    </Type>

  <!--PROPVARIANT-->
  <!--Visualizers for VT_VECTOR C arrays-->
  <Type Name="tagCAC">
    <AlternativeType Name="tagCAUB"></AlternativeType>
    <AlternativeType Name="tagCAI"></AlternativeType>
    <AlternativeType Name="tagCAUI"></AlternativeType>
    <AlternativeType Name="tagCAL"></AlternativeType>
    <AlternativeType Name="tagCAUL"></AlternativeType>
    <AlternativeType Name="tagCAFLT"></AlternativeType>
    <AlternativeType Name="tagCADBL"></AlternativeType>
    <AlternativeType Name="tagCACY"></AlternativeType>
    <AlternativeType Name="tagCADATE"></AlternativeType>
    <AlternativeType Name="tagCABSTR"></AlternativeType>
    <AlternativeType Name="tagCABSTRBLOB"></AlternativeType>
    <AlternativeType Name="tagCABOOL"></AlternativeType>
    <AlternativeType Name="tagCASCODE"></AlternativeType>
    <AlternativeType Name="tagCAPROPVARIANT"></AlternativeType>
    <AlternativeType Name="tagCAH"></AlternativeType>
    <AlternativeType Name="tagCAUH"></AlternativeType>
    <AlternativeType Name="tagCALPSTR"></AlternativeType>
    <AlternativeType Name="tagCALPWSTR"></AlternativeType>
    <AlternativeType Name="tagCAFILETIME"></AlternativeType>
    <AlternativeType Name="tagCACLIPDATA"></AlternativeType>
    <AlternativeType Name="tagCACLSID"></AlternativeType>
    <DisplayString>{{size = {cElems}}}</DisplayString>
    <Expand>
      <Item Name="[size]">cElems</Item>
      <ArrayItems>
        <Size>cElems</Size>
        <ValuePointer>pElems</ValuePointer>
      </ArrayItems>
    </Expand>
  </Type>

  <!--Visualizers for SAFE ARRAY-->
  <Type Name="tagSAFEARRAY">
    <AlternativeType Name="SAFEARRAY"></AlternativeType>
    <!--FADF_HAVEVARTYPE-->
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x2)">safearray of I2, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x3)">safearray of I4, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x4)">safearray of R4, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x5)">safearray of R8, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x6)">safearray of CY, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x7)">safearray of DATE, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x8)">safearray of BSTR, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0xa)">safearray of ERROR, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0xb)">safearray of BOOL, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0xc)">safearray of VARIANT, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x10)">safearray of I1, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x11)">safearray of UI1, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x12)">safearray of UI2, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x13)">safearray of UI4, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x14)">safearray of I8, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x15)">safearray of UI8, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x16)">safearray of INT, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x17)">safearray of UINT, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x1e)">safearray of LPSTR, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x1f)">safearray of LPWSTR, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x40)">safearray of FILETIME, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x47)">safearray of CLIPDATA, [rank]={cDims}</DisplayString>
    <DisplayString Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x48)">safearray of CLSID, [rank]={cDims}</DisplayString>
    <!--FADF_BSTR-->
    <DisplayString Condition="fFeatures &amp; 0x0100">safearray of BSTR, [rank]={cDims}</DisplayString>
    <!--FADF_UNKNOWN-->
    <DisplayString Condition="fFeatures &amp; 0x0200">safearray of IUnknown*, [rank]={cDims}</DisplayString>
    <!--FADF_DISPATCH-->
    <DisplayString Condition="fFeatures &amp; 0x0400">safearray of IDispatch*, [rank]={cDims}</DisplayString>
    <!--FADF_VARIANT-->
    <DisplayString Condition="fFeatures &amp; 0x0800">safearray of VARIANT [rank]={cDims}</DisplayString>
    <DisplayString>&lt;Invalid safearray&gt;</DisplayString>
    <Expand>
      <ArrayItems>
        <Direction>Backward</Direction>
        <Rank>cDims</Rank>
        <Size>rgsabound[cDims - $i - 1].cElements</Size>
        <LowerBound>rgsabound[cDims - $i - 1].lLbound</LowerBound>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x02)">((signed short *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x03)">((signed int *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x04)">((float *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x05)">((double *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x05)">((double *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x10)">((signed char *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x11)">((unsigned char *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x12)">((unsigned short *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x13)">((unsigned int *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x14)">((signed __int64 *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x15)">((unsigned __int64 *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x1E)">((char* *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x1F)">((wchar_t* *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x0C)">((tagVARIANT *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x0B)">((short *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x0A)">((long *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x06)">((CY *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x07)">((DATE *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x40)">((FILETIME *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x48)">((CLSID *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x47)">((CLIPDATA *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x08)">((wchar_t* *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x16)">((int *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0080) &amp;&amp; (((unsigned *)&amp;(*this))[-1] == 0x17)">((unsigned int *)(*this).pvData)</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0100)">((wchar_t* *)(*this).pvData),bstr</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0200)">((IUnknown* *)(*this).pvData),bstr</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0400)">((IDispatch* *)(*this).pvData),bstr</ValuePointer>
        <ValuePointer Condition="(fFeatures &amp; 0x0800)">((tagVARIANT*)(*this).pvData),bstr</ValuePointer>
      </ArrayItems>
    </Expand>
  </Type>

  <Type Name="tagVARIANT">
    <AlternativeType Name="VARIANT" />
    <!--Base Types-->
    <DisplayString Condition="vt == 0x0">Empty</DisplayString> <!--VT_EMPTY-->
    <DisplayString Condition="vt == 0x1">NULL</DisplayString> <!--VT_NULL-->
    <DisplayString Condition="vt == 0x2">I2 = {iVal}</DisplayString> <!--VT_I2-->
    <DisplayString Condition="vt == 0x3">I4 = {lVal}</DisplayString> <!--VT_I4-->
    <DisplayString Condition="vt == 0x4">R4 = {fltVal}</DisplayString> <!--VT_R4-->
    <DisplayString Condition="vt == 0x5">R8 = {dblVal}</DisplayString> <!--VT_R8-->
    <DisplayString Condition="vt == 0x6">CY = {cyVal}</DisplayString> <!--VT_CY-->
    <DisplayString Condition="vt == 0x7">DATE = {date}</DisplayString> <!--VT_DATE-->
    <DisplayString Condition="vt == 0x8">BSTR = {bstrVal}</DisplayString> <!--VT_BSTR-->
    <DisplayString Condition="vt == 0x9">DISPATCH = {pdispVal}</DisplayString>
    <DisplayString Condition="vt == 0xA">ERROR = {scode}</DisplayString>
    <DisplayString Condition="vt == 0xB">BOOL = {boolVal}</DisplayString>
    <DisplayString Condition="vt == 0xC">VARIANT</DisplayString>
    <DisplayString Condition="vt == 0xD">UNKNOWN = {punkVal}</DisplayString>
    <DisplayString Condition="vt == 0xE">DECIMAL = {decVal}</DisplayString>
    <DisplayString Condition="vt == 0x10">I1 = {cVal}</DisplayString>
    <DisplayString Condition="vt == 0x11">UI1 = {bVal}</DisplayString>
    <DisplayString Condition="vt == 0x12">UI2 = {uiVal}</DisplayString>
    <DisplayString Condition="vt == 0x13">UI4 = {ulVal}</DisplayString>
    <DisplayString Condition="vt == 0x14">I8 = {*(__int64*)&amp;dblVal}</DisplayString>
    <DisplayString Condition="vt == 0x15">UI8 = {*(unsigned __int64*)&amp;dblVal}</DisplayString>
    <DisplayString Condition="vt == 0x16">INT = {intVal}</DisplayString>
    <DisplayString Condition="vt == 0x17">UINT = {uintVal}</DisplayString>
    <DisplayString Condition="vt == 0x18">VOID</DisplayString>
    <DisplayString Condition="vt == 0x19">HRESULT</DisplayString>
    <DisplayString Condition="vt == 0x1A">PTR</DisplayString>
    <DisplayString Condition="vt == 0x1B">SAFEARRAY</DisplayString>
    <DisplayString Condition="vt == 0x1C">CARRAY</DisplayString>
    <DisplayString Condition="vt == 0x1D">USERDEFINED</DisplayString>
    <DisplayString Condition="vt == 0x24">RECORD</DisplayString>
    <DisplayString Condition="vt == 0x26">UINT_PTR</DisplayString>
    <!--Byref Types-->
    <DisplayString Condition="vt == 0x4016">byref of INT = {pintVal}</DisplayString>
    <DisplayString Condition="vt == 0x4017">byref of UINT = {puintVal}</DisplayString>
    <DisplayString Condition="vt == 0x4002">byref of I2 = {piVal}</DisplayString>
    <DisplayString Condition="vt == 0x4003">byref of I4 = {plVal}</DisplayString>
    <DisplayString Condition="vt == 0x4004">byref of R4 = {pfltVal}</DisplayString>
    <DisplayString Condition="vt == 0x4005">byref of R8 = {pdblVal}</DisplayString>
    <DisplayString Condition="vt == 0x4010">byref of I1 = {pcVal,1}</DisplayString>
    <DisplayString Condition="vt == 0x4011">byref of UI1 = {pbVal,1}</DisplayString>
    <DisplayString Condition="vt == 0x4012">byref of UI2 = {puiVal}</DisplayString>
    <DisplayString Condition="vt == 0x4013">byref of UI4 = {pulVal}</DisplayString>
    <DisplayString Condition="vt == 0x4014">byref of I8 = {(__int64*)pdblVal}</DisplayString>
    <DisplayString Condition="vt == 0x4015">byref of UI8 = {(unsigned __int64*)pdblVal}</DisplayString>
    <DisplayString Condition="vt == 0x400C">byref of VARIANT {pvarVal}</DisplayString>
    <DisplayString Condition="vt == 0x400B">byref of BOOL = {pboolVal}</DisplayString>
    <DisplayString Condition="vt == 0x400A">byref of ERROR = {pscode}</DisplayString>
    <DisplayString Condition="vt == 0x4006">byref of CY = {pcyVal}</DisplayString>
    <DisplayString Condition="vt == 0x4007">byref of DATE = {pdate}</DisplayString>
    <DisplayString Condition="vt == 0x4008">byref of BSTR = {pbstrVal}</DisplayString>
    <DisplayString Condition="vt == 0x400E">byref of DECIMAL = {pdecVal}</DisplayString>
    <DisplayString Condition="vt == 0x400D">byref of UNKNOWN = {ppunkVal}</DisplayString>
    <DisplayString Condition="vt == 0x4009">byref of DISPATCH = {ppdispVal}</DisplayString>
    <DisplayString Condition="vt == 0x6000">byref of ARRAY = {pparray}</DisplayString>
    <DisplayString Condition="vt &amp; 0x2000">{parray}</DisplayString>
    <DisplayString>Unknown vt type = {vt}</DisplayString>
    <Expand>
      <!--Base Types-->
      <Item Name="I2" Condition="vt == 0x2">iVal</Item>
      <Item Name="I4" Condition="vt == 0x3">lVal</Item>
      <Item Name="R4" Condition="vt == 0x4">fltVal</Item>
      <Item Name="R8" Condition="vt == 0x5">dblVal</Item>
      <Item Name="CY" Condition="vt == 0x6">cyVal</Item>
      <Item Name="DATE" Condition="vt == 0x7">date</Item>
      <Item Name="BSTR" Condition="vt == 0x8">bstrVal</Item>
      <Item Name="DISPATCH" Condition="vt == 0x9">pdispVal</Item>
      <Item Name="ERROR" Condition="vt == 0xA">scode</Item>
      <Item Name="BOOL" Condition="vt == 0xB">boolVal</Item>
      <Item Name="UNKNOWN" Condition="vt == 0xD">punkVal</Item>
      <Item Name="DECIMAL" Condition="vt == 0xE">decVal</Item>
      <Item Name="I1" Condition="vt == 0x10">cVal</Item>
      <Item Name="UI1" Condition="vt == 0x11">bVal</Item>
      <Item Name="UI2" Condition="vt == 0x12">uiVal</Item>
      <Item Name="UI4" Condition="vt == 0x13">ulVal</Item>
      <Item Name="I8" Condition="vt == 0x14">*(__int64*)&amp;dblVal</Item>
      <Item Name="UI8" Condition="vt == 0x15">*(unsigned __int64*)&amp;dblVal</Item>
      <Item Name="INT" Condition="vt == 0x16">intVal</Item>
      <Item Name="UINT" Condition="vt == 0x17">uintVal</Item>
      <!--Byref types-->
      <Item Name="INT" Condition="vt == 0x4016">pintVal</Item>
      <Item Name="UINT" Condition="vt == 0x4017">puintVal</Item>
      <Item Name="I2" Condition="vt == 0x4002">piVal</Item>
      <Item Name="I4" Condition="vt == 0x4003">plVal</Item>
      <Item Name="R4" Condition="vt == 0x4004">pfltVal</Item>
      <Item Name="R8" Condition="vt == 0x4005">pdblVal</Item>
      <Item Name="I1" Condition="vt == 0x4010">pcVal,1</Item>
      <Item Name="UI1" Condition="vt == 0x4011">pbVal,1</Item>
      <Item Name="UI2" Condition="vt == 0x4012">puiVal</Item>
      <Item Name="UI4" Condition="vt == 0x4013">pulVal</Item>
      <Item Name="I8" Condition="vt == 0x4014">(__int64*)pdblVal</Item>
      <Item Name="UI8" Condition="vt == 0x4015">(unsigned __int64*)pdblVal</Item>
      <Item Name="VARIANT" Condition="vt == 0x400C">pvarVal</Item>
      <Item Name="BOOL" Condition="vt == 0x400B">pboolVal</Item>
      <Item Name="ERROR" Condition="vt == 0x400A">pscode</Item>
      <Item Name="CY" Condition="vt == 0x4006">pcyVal</Item>
      <Item Name="DATE" Condition="vt == 0x4007">pdate</Item>
      <Item Name="BSTR" Condition="vt == 0x4008">pbstrVal</Item>
      <Item Name="DECIMAL" Condition="vt == 0x400E">pdecVal</Item>
      <Item Name="UNKNOWN" Condition="vt == 0x400D">ppunkVal</Item>
      <Item Name="DISPATCH" Condition="vt == 0x4009">ppdispVal</Item>
      <Item Name="ARRAY" Condition="vt == 0x6000">pparray</Item>
      <!--the following are either empty or invalid vt values for a variant >
      <Item Name="Empty" Condition="vt == 0x0"></Item>
      <Item Name="NULL" Condition="vt == 0x1"></Item>
      <Item Name="VARIANT" Condition="vt == 0xC"></Item>
      <Item Name="VOID" Condition="vt == 0x18"></Item>
      <Item Name="HRESULT" Condition="vt == 0x19"></Item>
      <Item Name="PTR" Condition="vt == 0x1A"></Item>
      <Item Name="SAFEARRAY" Condition="vt == 0x1B"></Item>
      <Item Name="CARRAY" Condition="vt == 0x1C"></Item>
      <Item Name="USERDEFINED" Condition="vt == 0x1D"></Item>
      <Item Name="RECORD" Condition="vt == 0x24"></Item>
      <Item Name="UINT_PTR" Condition="vt == 0x26"></Item> -->
      <Item Name="safearray" Condition="(vt &amp; 0x2000) &amp;&amp; !(vt &amp; 0x4000)">parray</Item>
      <Item Name="vt">vt</Item>
    </Expand>
  </Type>

  <!--Note: Do not fold this into tagVARIANT, as tagPROPVARIANT has some extra fields that tagVARIANT doesn't have.-->
  <Type Name="tagPROPVARIANT">
    <AlternativeType Name="PROPVARIANT"></AlternativeType>
    <!--Base Types-->
    <DisplayString Condition="vt == 0x0">Empty</DisplayString> <!--VT_EMPTY-->
    <DisplayString Condition="vt == 0x1">NULL</DisplayString> <!--VT_NULL-->
    <DisplayString Condition="vt == 0x2">I2 = {iVal}</DisplayString> <!--VT_I2-->
    <DisplayString Condition="vt == 0x3">I4 = {lVal}</DisplayString> <!--VT_I4-->
    <DisplayString Condition="vt == 0x4">R4 = {fltVal}</DisplayString> <!--VT_R4-->
    <DisplayString Condition="vt == 0x5">R8 = {dblVal}</DisplayString> <!--VT_R8-->
    <DisplayString Condition="vt == 0x6">CY = {cyVal}</DisplayString> <!--VT_CY-->
    <DisplayString Condition="vt == 0x7">DATE = {date}</DisplayString> <!--VT_DATE-->
    <DisplayString Condition="vt == 0x8">BSTR = {bstrVal}</DisplayString> <!--VT_BSTR-->
    <DisplayString Condition="vt == 0x9">DISPATCH = {pdispVal}</DisplayString>
    <DisplayString Condition="vt == 0xA">ERROR = {scode}</DisplayString>
    <DisplayString Condition="vt == 0xB">BOOL = {boolVal}</DisplayString>
    <DisplayString Condition="vt == 0xC">VARIANT</DisplayString>
    <DisplayString Condition="vt == 0xD">UNKNOWN = {punkVal}</DisplayString>
    <DisplayString Condition="vt == 0xE">DECIMAL = {decVal}</DisplayString>
    <DisplayString Condition="vt == 0x10">I1 = {cVal}</DisplayString>
    <DisplayString Condition="vt == 0x11">UI1 = {bVal}</DisplayString>
    <DisplayString Condition="vt == 0x12">UI2 = {uiVal}</DisplayString>
    <DisplayString Condition="vt == 0x13">UI4 = {ulVal}</DisplayString>
    <DisplayString Condition="vt == 0x14">I8 = {*(__int64*)&amp;dblVal}</DisplayString>
    <DisplayString Condition="vt == 0x15">UI8 = {*(unsigned __int64*)&amp;dblVal}</DisplayString>
    <DisplayString Condition="vt == 0x16">INT = {intVal}</DisplayString>
    <DisplayString Condition="vt == 0x17">UINT = {uintVal}</DisplayString>
    <DisplayString Condition="vt == 0x18">VOID</DisplayString>
    <DisplayString Condition="vt == 0x19">HRESULT</DisplayString>
    <DisplayString Condition="vt == 0x1A">PTR</DisplayString>
    <DisplayString Condition="vt == 0x1B">SAFEARRAY</DisplayString>
    <DisplayString Condition="vt == 0x1C">CARRAY</DisplayString>
    <DisplayString Condition="vt == 0x1D">USERDEFINED</DisplayString>
    <DisplayString Condition="vt == 0x1E">LPSTR = {pszVal}</DisplayString>
    <DisplayString Condition="vt == 0x1F">LPWSTR = {pwszVal}</DisplayString>
    <DisplayString Condition="vt == 0x24">RECORD</DisplayString>
    <DisplayString Condition="vt == 0x26">UINT_PTR</DisplayString>
    <DisplayString Condition="vt == 0x40">FILETIME = {filetime}</DisplayString>
    <DisplayString Condition="vt == 0x42">STREAM = {pStream}</DisplayString>
    <DisplayString Condition="vt == 0x43">STORAGE = {pStorage}</DisplayString>
    <DisplayString Condition="vt == 0x44">STREAMED_OBJECT = {pStream}</DisplayString>
    <DisplayString Condition="vt == 0x45">STORED_OBJECT = {pStorage}</DisplayString>
    <DisplayString Condition="vt == 0x46">BLOB_OBJECT = {blob}</DisplayString>
    <DisplayString Condition="vt == 0x47">CF = {pclipdata}</DisplayString>
    <DisplayString Condition="vt == 0x48">CLSID = {puuid}</DisplayString>
    <DisplayString Condition="vt == 0x49">VERSIONED_STREAM = {pVersionedStream}</DisplayString>
    <!--Vector types-->
    <DisplayString Condition="vt == 0x1002">vector of I2 = {cai}</DisplayString>
    <DisplayString Condition="vt == 0x1003">vector of I4 = {cal}</DisplayString>
    <DisplayString Condition="vt == 0x1004">vector of R4 = {caflt}</DisplayString>
    <DisplayString Condition="vt == 0x1005">vector of R8 = {cadbl}</DisplayString>
    <DisplayString Condition="vt == 0x1010">vector of I1 = {cac}</DisplayString>
    <DisplayString Condition="vt == 0x1011">vector of UI1 = {caub}</DisplayString>
    <DisplayString Condition="vt == 0x1012">vector of UI2 = {caui}</DisplayString>
    <DisplayString Condition="vt == 0x1013">vector of UI4 = {caul}</DisplayString>
    <DisplayString Condition="vt == 0x1014">vector of I8 = {cah}</DisplayString>
    <DisplayString Condition="vt == 0x1015">vector of UI8 = {cauh}</DisplayString>
    <DisplayString Condition="vt == 0x101E">vector of LPSTR = {calpstr}</DisplayString>
    <DisplayString Condition="vt == 0x101F">vector of LPWSTR = {calpwstr}</DisplayString>
    <DisplayString Condition="vt == 0x100C">vector of VARIANT {capropvar}</DisplayString>
    <DisplayString Condition="vt == 0x100B">vector of BOOL = {cabool}</DisplayString>
    <DisplayString Condition="vt == 0x100A">vector of ERROR = {cascode}</DisplayString>
    <DisplayString Condition="vt == 0x1006">vector of CY = {cacy}</DisplayString>
    <DisplayString Condition="vt == 0x1007">vector of DATE = {cadate}</DisplayString>
    <DisplayString Condition="vt == 0x1040">vector of FILETIME = {cafiletime}</DisplayString>
    <DisplayString Condition="vt == 0x1048">vector of CLSID = {cauuid}</DisplayString>
    <DisplayString Condition="vt == 0x1047">vector of CF = {caclipdata}</DisplayString>
    <DisplayString Condition="vt == 0x1008">vector of BSTR = {cabstr}</DisplayString>
    <!--Byref Types-->
    <DisplayString Condition="vt == 0x4016">byref of INT = {pintVal}</DisplayString>
    <DisplayString Condition="vt == 0x4017">byref of UINT = {puintVal}</DisplayString>
    <DisplayString Condition="vt == 0x4002">byref of I2 = {piVal}</DisplayString>
    <DisplayString Condition="vt == 0x4003">byref of I4 = {plVal}</DisplayString>
    <DisplayString Condition="vt == 0x4004">byref of R4 = {pfltVal}</DisplayString>
    <DisplayString Condition="vt == 0x4005">byref of R8 = {pdblVal}</DisplayString>
    <DisplayString Condition="vt == 0x4010">byref of I1 = {pcVal}</DisplayString>
    <DisplayString Condition="vt == 0x4011">byref of UI1 = {pbVal}</DisplayString>
    <DisplayString Condition="vt == 0x4012">byref of UI2 = {puiVal}</DisplayString>
    <DisplayString Condition="vt == 0x4013">byref of UI4 = {pulVal}</DisplayString>
    <DisplayString Condition="vt == 0x4014">byref of I8 = {(__int64*)pdblVal}</DisplayString>
    <DisplayString Condition="vt == 0x4015">byref of UI8 = {(unsigned __int64*)pdblVal}</DisplayString>
    <DisplayString Condition="vt == 0x400C">byref of VARIANT {pvarVal}</DisplayString>
    <DisplayString Condition="vt == 0x400B">byref of BOOL = {pboolVal}</DisplayString>
    <DisplayString Condition="vt == 0x400A">byref of ERROR = {pscode}</DisplayString>
    <DisplayString Condition="vt == 0x4006">byref of CY = {pcyVal}</DisplayString>
    <DisplayString Condition="vt == 0x4007">byref of DATE = {pdate}</DisplayString>
    <DisplayString Condition="vt == 0x4008">byref of BSTR = {pbstrVal}</DisplayString>
    <DisplayString Condition="vt == 0x400E">byref of DECIMAL = {pdecVal}</DisplayString>
    <DisplayString Condition="vt == 0x400D">byref of UNKNOWN = {ppunkVal}</DisplayString>
    <DisplayString Condition="vt == 0x4009">byref of DISPATCH = {ppdispVal}</DisplayString>
    <DisplayString Condition="vt == 0x6000">byref of ARRAY = {pparray}</DisplayString>
    <DisplayString Condition="vt &amp; 0x2000">{parray}</DisplayString>
    <DisplayString>Unknown vt type = {vt}</DisplayString>
    <Expand>
      <!--Base Types-->
      <Item Name="I2" Condition="vt == 0x2">iVal</Item>
      <Item Name="I4" Condition="vt == 0x3">lVal</Item>
      <Item Name="R4" Condition="vt == 0x4">fltVal</Item>
      <Item Name="R8" Condition="vt == 0x5">dblVal</Item>
      <Item Name="CY" Condition="vt == 0x6">cyVal</Item>
      <Item Name="DATE" Condition="vt == 0x7">date</Item>
      <Item Name="BSTR" Condition="vt == 0x8">bstrVal</Item>
      <Item Name="DISPATCH" Condition="vt == 0x9">pdispVal</Item>
      <Item Name="ERROR" Condition="vt == 0xA">scode</Item>
      <Item Name="BOOL" Condition="vt == 0xB">boolVal</Item>
      <Item Name="UNKNOWN" Condition="vt == 0xD">punkVal</Item>
      <Item Name="DECIMAL" Condition="vt == 0xE">decVal</Item>
      <Item Name="I1" Condition="vt == 0x10">cVal</Item>
      <Item Name="UI1" Condition="vt == 0x11">bVal</Item>
      <Item Name="UI2" Condition="vt == 0x12">uiVal</Item>
      <Item Name="UI4" Condition="vt == 0x13">ulVal</Item>
      <Item Name="I8" Condition="vt == 0x14">*(__int64*)&amp;dblVal</Item>
      <Item Name="UI8" Condition="vt == 0x15">*(unsigned __int64*)&amp;dblVal</Item>
      <Item Name="INT" Condition="vt == 0x16">intVal</Item>
      <Item Name="UINT" Condition="vt == 0x17">uintVal</Item>
      <Item Name="LPSTR" Condition="vt == 0x1E">pszVal</Item>
      <Item Name="LPWSTR" Condition="vt == 0x1F">pwszVal</Item>
      <Item Name="FILETIME" Condition="vt == 0x40">filetime</Item>
      <Item Name="STREAM" Condition="vt == 0x42">pStream</Item>
      <Item Name="STORAGE" Condition="vt == 0x43">pStorage</Item>
      <Item Name="STREAMED_OBJECT" Condition="vt == 0x44">pStream</Item>
      <Item Name="STORED_OBJECT" Condition="vt == 0x45">pStorage</Item>
      <Item Name="BLOB_OBJECT" Condition="vt == 0x46">blob</Item>
      <Item Name="CF" Condition="vt == 0x47">pclipdata</Item>
      <Item Name="CLSID" Condition="vt == 0x48">puuid</Item>
      <Item Name="VERSIONED_STREAM" Condition="vt == 0x49">pVersionedStream</Item>
      <!--Vector types-->
      <Item Name="I2" Condition="vt == 0x1002">cai</Item>
      <Item Name="I4" Condition="vt == 0x1003">cal</Item>
      <Item Name="R4" Condition="vt == 0x1004">caflt</Item>
      <Item Name="R8" Condition="vt == 0x1005">cadbl</Item>
      <Item Name="I1" Condition="vt == 0x1010">cac</Item>
      <Item Name="UI1" Condition="vt == 0x1011">caub</Item>
      <Item Name="UI2" Condition="vt == 0x1012">caui</Item>
      <Item Name="UI4" Condition="vt == 0x1013">caul</Item>
      <Item Name="I8" Condition="vt == 0x1014">cah</Item>
      <Item Name="UI8" Condition="vt == 0x1015">cauh</Item>
      <Item Name="LPSTR" Condition="vt == 0x101E">calpstr</Item>
      <Item Name="LPWSTR" Condition="vt == 0x101F">calpwstr</Item>
      <Item Name="VARIANT" Condition="vt == 0x100C">capropvar</Item>
      <Item Name="BOOL" Condition="vt == 0x100B">cabool</Item>
      <Item Name="ERROR" Condition="vt == 0x100A">cascode</Item>
      <Item Name="CY" Condition="vt == 0x1006">cacy</Item>
      <Item Name="DATE" Condition="vt == 0x1007">cadate</Item>
      <Item Name="FILETIME" Condition="vt == 0x1040">cafiletime</Item>
      <Item Name="CLSID" Condition="vt == 0x1048">cauuid</Item>
      <Item Name="CF" Condition="vt == 0x1047">caclipdata</Item>
      <Item Name="BSTR" Condition="vt == 0x1008">cabstr</Item>
      <!--Byref types-->
      <Item Name="INT" Condition="vt == 0x4016">pintVal</Item>
      <Item Name="UINT" Condition="vt == 0x4017">puintVal</Item>
      <Item Name="I2" Condition="vt == 0x4002">piVal</Item>
      <Item Name="I4" Condition="vt == 0x4003">plVal</Item>
      <Item Name="R4" Condition="vt == 0x4004">pfltVal</Item>
      <Item Name="R8" Condition="vt == 0x4005">pdblVal</Item>
      <Item Name="I1" Condition="vt == 0x4010">pcVal</Item>
      <Item Name="UI1" Condition="vt == 0x4011">pbVal</Item>
      <Item Name="UI2" Condition="vt == 0x4012">puiVal</Item>
      <Item Name="UI4" Condition="vt == 0x4013">pulVal</Item>
      <Item Name="I8" Condition="vt == 0x4014">(__int64*)pdblVal</Item>
      <Item Name="UI8" Condition="vt == 0x4015">(unsigned __int64*)pdblVal</Item>
      <Item Name="VARIANT" Condition="vt == 0x400C">pvarVal</Item>
      <Item Name="BOOL" Condition="vt == 0x400B">pboolVal</Item>
      <Item Name="ERROR" Condition="vt == 0x400A">pscode</Item>
      <Item Name="CY" Condition="vt == 0x4006">pcyVal</Item>
      <Item Name="DATE" Condition="vt == 0x4007">pdate</Item>
      <Item Name="BSTR" Condition="vt == 0x4008">pbstrVal</Item>
      <Item Name="DECIMAL" Condition="vt == 0x400E">pdecVal</Item>
      <Item Name="UNKNOWN" Condition="vt == 0x400D">ppunkVal</Item>
      <Item Name="DISPATCH" Condition="vt == 0x4009">ppdispVal</Item>
      <Item Name="ARRAY" Condition="vt == 0x6000">pparray</Item>
      <!--the following are either empty or invalid vt values for a variant >
      <Item Name="Empty" Condition="vt == 0x0"></Item>
      <Item Name="NULL" Condition="vt == 0x1"></Item>
      <Item Name="VARIANT" Condition="vt == 0xC"></Item>
      <Item Name="VOID" Condition="vt == 0x18"></Item>
      <Item Name="HRESULT" Condition="vt == 0x19"></Item>
      <Item Name="PTR" Condition="vt == 0x1A"></Item>
      <Item Name="SAFEARRAY" Condition="vt == 0x1B"></Item>
      <Item Name="CARRAY" Condition="vt == 0x1C"></Item>
      <Item Name="USERDEFINED" Condition="vt == 0x1D"></Item>
      <Item Name="RECORD" Condition="vt == 0x24"></Item>
      <Item Name="UINT_PTR" Condition="vt == 0x26"></Item> -->
      <Item Name="safearray" Condition="vt &amp; 0x2000">parray</Item>
      <Item Name="vt">vt</Item>
    </Expand>
  </Type>

  <Type Name="APP_LOCAL_DEVICE_ID">
    <Expand HideRawView="true">
      <IndexListItems>
        <Size>32</Size>
        <ValueNode>value[$i],nvoxb</ValueNode>
      </IndexListItems>
    </Expand>
  </Type>

  <!--Subset of HRESULTs from winerror.h-->
  <HResult Name="S_OK">
    <HRValue>0x00000000</HRValue>
  </HResult>
  <HResult Name="S_FALSE">
    <HRValue>0x00000001</HRValue>
  </HResult>
  <HResult Name="E_UNEXPECTED">
    <!--AlternativeHResult Name="SAM_UNEXPECTED"></AlternativeHResult-->
    <HRValue>0x8000FFFF</HRValue>
    <HRDescription>Catastrophic failure.</HRDescription>
  </HResult>
  <HResult Name="E_NOTIMPL">
    <HRValue>0x80004001</HRValue>
    <HRDescription>Not implemented.</HRDescription>
  </HResult>
  <HResult Name="E_OUTOFMEMORY">
    <HRValue>0x8007000E</HRValue>
    <HRDescription>Ran out of memory.</HRDescription>
  </HResult>
  <HResult Name="E_INVALIDARG">
    <HRValue>0x80070057</HRValue>
    <HRDescription>One or more arguments are invalid.</HRDescription>
  </HResult>
  <HResult Name="E_NOINTERFACE">
    <HRValue>0x80004002</HRValue>
    <HRDescription>No such interface supported.</HRDescription>
  </HResult>
  <HResult Name="E_POINTER">
    <HRValue>0x80004003</HRValue>
    <HRDescription>Invalid pointer.</HRDescription>
  </HResult>
  <HResult Name="E_HANDLE">
    <HRValue>0x80070006</HRValue>
    <HRDescription>Invalid handle.</HRDescription>
  </HResult>
  <HResult Name="E_ABORT">
    <HRValue>0x80004004</HRValue>
    <HRDescription>Operation aborted.</HRDescription>
  </HResult>
  <HResult Name="E_FAIL">
    <HRValue>0x80004005</HRValue>
  </HResult>
  <HResult Name="E_ACCESSDENIED">
    <HRValue>0x80070005</HRValue>
    <HRDescription>General access denied error.</HRDescription>
  </HResult>
  <HResult Name="E_PENDING">
    <HRValue>0x8000000A</HRValue>
    <HRDescription>The data necessary to complete this operation is not yet available.</HRDescription>
  </HResult>
  <HResult Name="CLASS_E_CLASSNOTAVAILABLE">
    <HRValue>0x80040111</HRValue>
    <HRDescription>ClassFactory cannot supply requested class</HRDescription>
  </HResult>
  <HResult Name="REGDB_E_CLASSNOTREG">
    <HRValue>0x80040154</HRValue>
    <HRDescription>Class not registered</HRDescription>
  </HResult>
  <HResult Name="REGDB_E_IIDNOTREG">
    <HRValue>0x80040155</HRValue>
    <HRDescription>Interface not registered</HRDescription>
  </HResult>
  <HResult Name="RPC_E_CALL_REJECTED">
    <HRValue>0x80010001</HRValue>
    <HRDescription>Call was rejected by callee.</HRDescription>
  </HResult>
  <HResult Name="RPC_E_CALL_CANCELED">
    <HRValue>0x80010002</HRValue>
    <HRDescription>Call was canceled by the message filter.</HRDescription>
  </HResult>
  <HResult Name="RPC_E_SERVERFAULT">
    <HRValue>0x80010105</HRValue>
    <HRDescription>The server threw an exception.</HRDescription>
  </HResult>
  <HResult Name="RPC_E_DISCONNECTED">
    <HRValue>0x80010108</HRValue>
    <HRDescription>The object invoked has disconnected from its clients.</HRDescription>
  </HResult>
  <HResult Name="RPC_E_SERVERCALL_RETRYLATER">
    <HRValue>0x8001010A</HRValue>
    <HRDescription>The message filter indicated that the application is busy.</HRDescription>
  </HResult>
  <HResult Name="RPC_E_SERVERCALL_REJECTED">
    <HRValue>0x8001010B</HRValue>
    <HRDescription>The message filter rejected the call.</HRDescription>
  </HResult>
  <HResult Name="RPC_E_WRONG_THREAD">
    <HRValue>0x8001010E</HRValue>
    <HRDescription>The application called an interface that was marshalled for a different thread.</HRDescription>
  </HResult>
  <HResult Name="RPC_S_CALLPENDING">
    <HRValue>0x80010115</HRValue>
    <HRDescription>OLE has sent a request and is waiting for a reply (0x80010115).</HRDescription>
  </HResult>

  <!--HRESULTs are taken from oledberr.h-->
  <HResult Name="DB_E_BADACCESSORHANDLE">
    <HRValue>0x80040E00</HRValue>
    <HRDescription>Accessor is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_ROWLIMITEXCEEDED">
    <HRValue>0x80040E01</HRValue>
    <HRDescription>Row could not be inserted into the rowset without exceeding provider's maximum number of active rows.</HRDescription>
  </HResult>
  <HResult Name="DB_E_READONLYACCESSOR">
    <HRValue>0x80040E02</HRValue>
    <HRDescription>Accessor is read-only. Operation failed.</HRDescription>
  </HResult>
  <HResult Name="DB_E_SCHEMAVIOLATION">
    <HRValue>0x80040E03</HRValue>
    <HRDescription>Values violate the database schema.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADROWHANDLE">
    <HRValue>0x80040E04</HRValue>
    <HRDescription>Row handle is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_OBJECTOPEN">
    <HRValue>0x80040E05</HRValue>
    <HRDescription>Object was open.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADCHAPTER">
    <HRValue>0x80040E06</HRValue>
    <HRDescription>Chapter is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CANTCONVERTVALUE">
    <HRValue>0x80040E07</HRValue>
    <HRDescription>Data or literal value could not be converted to the type of the column in the data source, and the provider was unable to determine which columns could not be converted.  Data overflow or sign mismatch was not the cause.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADBINDINFO">
    <HRValue>0x80040E08</HRValue>
    <HRDescription>Binding information is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_SEC_E_PERMISSIONDENIED">
    <HRValue>0x80040E09</HRValue>
    <HRDescription>Permission denied.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOTAREFERENCECOLUMN">
    <HRValue>0x80040E0A</HRValue>
    <HRDescription>Column does not contain bookmarks or chapters.</HRDescription>
  </HResult>
  <HResult Name="DB_E_LIMITREJECTED">
    <HRValue>0x80040E0B</HRValue>
    <HRDescription>Cost limits were rejected.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOCOMMAND">
    <HRValue>0x80040E0C</HRValue>
    <HRDescription>Command text was not set for the command object.</HRDescription>
  </HResult>
  <HResult Name="DB_E_COSTLIMIT">
    <HRValue>0x80040E0D</HRValue>
    <HRDescription>Query plan within the cost limit cannot be found.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADBOOKMARK">
    <HRValue>0x80040E0E</HRValue>
    <HRDescription>Bookmark is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADLOCKMODE">
    <HRValue>0x80040E0F</HRValue>
    <HRDescription>Lock mode is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_PARAMNOTOPTIONAL">
    <HRValue>0x80040E10</HRValue>
    <HRDescription>No value given for one or more required parameters.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADCOLUMNID">
    <HRValue>0x80040E11</HRValue>
    <HRDescription>Column ID is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADRATIO">
    <HRValue>0x80040E12</HRValue>
    <HRDescription>Numerator was greater than denominator. Values must express ratio between zero and 1.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADVALUES">
    <HRValue>0x80040E13</HRValue>
    <HRDescription>Value is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_ERRORSINCOMMAND">
    <HRValue>0x80040E14</HRValue>
    <HRDescription>One or more errors occurred during processing of command.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CANTCANCEL">
    <HRValue>0x80040E15</HRValue>
    <HRDescription>Command cannot be canceled.</HRDescription>
  </HResult>
  <HResult Name="DB_E_DIALECTNOTSUPPORTED">
    <HRValue>0x80040E16</HRValue>
    <HRDescription>Command dialect is not supported by this provider.</HRDescription>
  </HResult>
  <HResult Name="DB_E_DUPLICATEDATASOURCE">
    <HRValue>0x80040E17</HRValue>
    <HRDescription>Data source object could not be created because the named data source already exists.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CANNOTRESTART">
    <HRValue>0x80040E18</HRValue>
    <HRDescription>Rowset position cannot be restarted.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOTFOUND">
    <HRValue>0x80040E19</HRValue>
    <HRDescription>Object or data matching the name, range, or selection criteria was not found within the scope of this operation.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CANNOTFREE">
    <HRValue>0x80040E1A</HRValue>
    <HRDescription>Provider has ownership of this tree</HRDescription>
  </HResult>
  <HResult Name="DB_E_NEWLYINSERTED">
    <HRValue>0x80040E1B</HRValue>
    <HRDescription>Identity cannot be determined for newly inserted rows.</HRDescription>
  </HResult>
  <HResult Name="DB_E_GOALREJECTED">
    <HRValue>0x80040E1C</HRValue>
    <HRDescription>Goal was rejected because no nonzero weights were specified for any goals supported. Current goal was not changed.</HRDescription>
  </HResult>
  <HResult Name="DB_E_UNSUPPORTEDCONVERSION">
    <HRValue>0x80040E1D</HRValue>
    <HRDescription>Requested conversion is not supported.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADSTARTPOSITION">
    <HRValue>0x80040E1E</HRValue>
    <HRDescription>No rows were returned because the offset value moves the position before the beginning or after the end of the rowset.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOQUERY">
    <HRValue>0x80040E1F</HRValue>
    <HRDescription>Information was requested for a query and the query was not set.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOTREENTRANT">
    <HRValue>0x80040E20</HRValue>
    <HRDescription>Consumer's event handler called a non-reentrant method in the provider.</HRDescription>
  </HResult>
  <HResult Name="DB_E_ERRORSOCCURRED">
    <HRValue>0x80040E21</HRValue>
    <HRDescription>Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOAGGREGATION">
    <HRValue>0x80040E22</HRValue>
    <HRDescription>Non-NULL controlling IUnknown was specified, and either the requested interface was not IUnknown, or the provider does not support COM aggregation.</HRDescription>
  </HResult>
  <HResult Name="DB_E_DELETEDROW">
    <HRValue>0x80040E23</HRValue>
    <HRDescription>Row handle referred to a deleted row or a row marked for deletion.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CANTFETCHBACKWARDS">
    <HRValue>0x80040E24</HRValue>
    <HRDescription>Rowset does not support fetching backward.</HRDescription>
  </HResult>
  <HResult Name="DB_E_ROWSNOTRELEASED">
    <HRValue>0x80040E25</HRValue>
    <HRDescription>Row handles must all be released before new ones can be obtained.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADSTORAGEFLAG">
    <HRValue>0x80040E26</HRValue>
    <HRDescription>One or more storage flags are not supported.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADCOMPAREOP">
    <HRValue>0x80040E27</HRValue>
    <HRDescription>Comparison operator is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADSTATUSVALUE">
    <HRValue>0x80040E28</HRValue>
    <HRDescription>Status flag was neither DBCOLUMNSTATUS_OK nor DBCOLUMNSTATUS_ISNULL.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CANTSCROLLBACKWARDS">
    <HRValue>0x80040E29</HRValue>
    <HRDescription>Rowset does not support scrolling backward.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADREGIONHANDLE">
    <HRValue>0x80040E2A</HRValue>
    <HRDescription>Region handle is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NONCONTIGUOUSRANGE">
    <HRValue>0x80040E2B</HRValue>
    <HRDescription>Set of rows is not contiguous to, or does not overlap, the rows in the watch region.</HRDescription>
  </HResult>
  <HResult Name="DB_E_INVALIDTRANSITION">
    <HRValue>0x80040E2C</HRValue>
    <HRDescription>Transition from ALL* to MOVE* or EXTEND* was specified.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOTASUBREGION">
    <HRValue>0x80040E2D</HRValue>
    <HRDescription>Region is not a proper subregion of the region identified by the watch region handle.</HRDescription>
  </HResult>
  <HResult Name="DB_E_MULTIPLESTATEMENTS">
    <HRValue>0x80040E2E</HRValue>
    <HRDescription>Multiple-statement commands are not supported by this provider.</HRDescription>
  </HResult>
  <HResult Name="DB_E_INTEGRITYVIOLATION">
    <HRValue>0x80040E2F</HRValue>
    <HRDescription>Value violated the integrity constraints for a column or table.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADTYPENAME">
    <HRValue>0x80040E30</HRValue>
    <HRDescription>Type name is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_ABORTLIMITREACHED">
    <HRValue>0x80040E31</HRValue>
    <HRDescription>Execution stopped because a resource limit was reached. No results were returned.</HRDescription>
  </HResult>
  <HResult Name="DB_E_ROWSETINCOMMAND">
    <HRValue>0x80040E32</HRValue>
    <HRDescription>Command object whose command tree contains a rowset or rowsets cannot be cloned.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CANTTRANSLATE">
    <HRValue>0x80040E33</HRValue>
    <HRDescription>Current tree cannot be represented as text.</HRDescription>
  </HResult>
  <HResult Name="DB_E_DUPLICATEINDEXID">
    <HRValue>0x80040E34</HRValue>
    <HRDescription>Index already exists.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOINDEX">
    <HRValue>0x80040E35</HRValue>
    <HRDescription>Index does not exist.</HRDescription>
  </HResult>
  <HResult Name="DB_E_INDEXINUSE">
    <HRValue>0x80040E36</HRValue>
    <HRDescription>Index is in use.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOTABLE">
    <HRValue>0x80040E37</HRValue>
    <HRDescription>Table does not exist.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CONCURRENCYVIOLATION">
    <HRValue>0x80040E38</HRValue>
    <HRDescription>Rowset used optimistic concurrency and the value of a column has changed since it was last read.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADCOPY">
    <HRValue>0x80040E39</HRValue>
    <HRDescription>Errors detected during the copy.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADPRECISION">
    <HRValue>0x80040E3A</HRValue>
    <HRDescription>Precision is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADSCALE">
    <HRValue>0x80040E3B</HRValue>
    <HRDescription>Scale is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADTABLEID">
    <HRValue>0x80040E3C</HRValue>
    <HRDescription>Table ID is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADTYPE">
    <HRValue>0x80040E3D</HRValue>
    <HRDescription>Type is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_DUPLICATECOLUMNID">
    <HRValue>0x80040E3E</HRValue>
    <HRDescription>Column ID already exists or occurred more than once in the array of columns.</HRDescription>
  </HResult>
  <HResult Name="DB_E_DUPLICATETABLEID">
    <HRValue>0x80040E3F</HRValue>
    <HRDescription>Table already exists.</HRDescription>
  </HResult>
  <HResult Name="DB_E_TABLEINUSE">
    <HRValue>0x80040E40</HRValue>
    <HRDescription>Table is in use.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOLOCALE">
    <HRValue>0x80040E41</HRValue>
    <HRDescription>Locale ID is not supported.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADRECORDNUM">
    <HRValue>0x80040E42</HRValue>
    <HRDescription>Record number is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BOOKMARKSKIPPED">
    <HRValue>0x80040E43</HRValue>
    <HRDescription>Form of bookmark is valid, but no row was found to match it.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADPROPERTYVALUE">
    <HRValue>0x80040E44</HRValue>
    <HRDescription>Property value is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_INVALID">
    <HRValue>0x80040E45</HRValue>
    <HRDescription>Rowset is not chaptered.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADACCESSORFLAGS">
    <HRValue>0x80040E46</HRValue>
    <HRDescription>One or more accessor flags were invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADSTORAGEFLAGS">
    <HRValue>0x80040E47</HRValue>
    <HRDescription>One or more storage flags are invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BYREFACCESSORNOTSUPPORTED">
    <HRValue>0x80040E48</HRValue>
    <HRDescription>Reference accessors are not supported by this provider.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NULLACCESSORNOTSUPPORTED">
    <HRValue>0x80040E49</HRValue>
    <HRDescription>Null accessors are not supported by this provider.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOTPREPARED">
    <HRValue>0x80040E4A</HRValue>
    <HRDescription>Command was not prepared.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADACCESSORTYPE">
    <HRValue>0x80040E4B</HRValue>
    <HRDescription>Accessor is not a parameter accessor.</HRDescription>
  </HResult>
  <HResult Name="DB_E_WRITEONLYACCESSOR">
    <HRValue>0x80040E4C</HRValue>
    <HRDescription>Accessor is write-only.</HRDescription>
  </HResult>
  <HResult Name="DB_SEC_E_AUTH_FAILED">
    <HRValue>0x80040E4D</HRValue>
    <HRDescription>Authentication failed.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CANCELED">
    <HRValue>0x80040E4E</HRValue>
    <HRDescription>Operation was canceled.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CHAPTERNOTRELEASED">
    <HRValue>0x80040E4F</HRValue>
    <HRDescription>Rowset is single-chaptered. The chapter was not released.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADSOURCEHANDLE">
    <HRValue>0x80040E50</HRValue>
    <HRDescription>Source handle is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_PARAMUNAVAILABLE">
    <HRValue>0x80040E51</HRValue>
    <HRDescription>Provider cannot derive parameter information and SetParameterInfo has not been called.</HRDescription>
  </HResult>
  <HResult Name="DB_E_ALREADYINITIALIZED">
    <HRValue>0x80040E52</HRValue>
    <HRDescription>Data source object is already initialized.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOTSUPPORTED">
    <HRValue>0x80040E53</HRValue>
    <HRDescription>Method is not supported by this provider.</HRDescription>
  </HResult>
  <HResult Name="DB_E_MAXPENDCHANGESEXCEEDED">
    <HRValue>0x80040E54</HRValue>
    <HRDescription>Number of rows with pending changes exceeded the limit.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADORDINAL">
    <HRValue>0x80040E55</HRValue>
    <HRDescription>Column does not exist.</HRDescription>
  </HResult>
  <HResult Name="DB_E_PENDINGCHANGES">
    <HRValue>0x80040E56</HRValue>
    <HRDescription>Pending changes exist on a row with a reference count of zero.</HRDescription>
  </HResult>
  <HResult Name="DB_E_DATAOVERFLOW">
    <HRValue>0x80040E57</HRValue>
    <HRDescription>Literal value in the command exceeded the range of the type of the associated column.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADHRESULT">
    <HRValue>0x80040E58</HRValue>
    <HRDescription>HRESULT is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADLOOKUPID">
    <HRValue>0x80040E59</HRValue>
    <HRDescription>Lookup ID is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADDYNAMICERRORID">
    <HRValue>0x80040E5A</HRValue>
    <HRDescription>DynamicError ID is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_PENDINGINSERT">
    <HRValue>0x80040E5B</HRValue>
    <HRDescription>Most recent data for a newly inserted row could not be retrieved because the insert is pending.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADCONVERTFLAG">
    <HRValue>0x80040E5C</HRValue>
    <HRDescription>Conversion flag is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADPARAMETERNAME">
    <HRValue>0x80040E5D</HRValue>
    <HRDescription>Parameter name is unrecognized.</HRDescription>
  </HResult>
  <HResult Name="DB_E_MULTIPLESTORAGE">
    <HRValue>0x80040E5E</HRValue>
    <HRDescription>Multiple storage objects cannot be open simultaneously.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CANTFILTER">
    <HRValue>0x80040E5F</HRValue>
    <HRDescription>Filter cannot be opened.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CANTORDER">
    <HRValue>0x80040E60</HRValue>
    <HRDescription>Order cannot be opened.</HRDescription>
  </HResult>
  <HResult Name="MD_E_BADTUPLE">
    <HRValue>0x80040E61</HRValue>
    <HRDescription>Tuple is invalid</HRDescription>
  </HResult>
  <HResult Name="MD_E_BADCOORDINATE">
    <HRValue>0x80040E62</HRValue>
    <HRDescription>Coordinate is invalid.</HRDescription>
  </HResult>
  <HResult Name="MD_E_INVALIDAXIS">
    <HRValue>0x80040E63</HRValue>
    <HRDescription>Axis is invalid.</HRDescription>
  </HResult>
  <HResult Name="MD_E_INVALIDCELLRANGE">
    <HRValue>0x80040E64</HRValue>
    <HRDescription>One or more cell ordinals is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOCOLUMN">
    <HRValue>0x80040E65</HRValue>
    <HRDescription>Column ID is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_COMMANDNOTPERSISTED">
    <HRValue>0x80040E67</HRValue>
    <HRDescription>Command does not have a DBID.</HRDescription>
  </HResult>
  <HResult Name="DB_E_DUPLICATEID">
    <HRValue>0x80040E68</HRValue>
    <HRDescription>DBID already exists.</HRDescription>
  </HResult>
  <HResult Name="DB_E_OBJECTCREATIONLIMITREACHED">
    <HRValue>0x80040E69</HRValue>
    <HRDescription>Session cannot be created because maximum number of active sessions was already reached. Consumer must release one or more sessions before creating a new session object.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADINDEXID">
    <HRValue>0x80040E72</HRValue>
    <HRDescription>Index ID is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADINITSTRING">
    <HRValue>0x80040E73</HRValue>
    <HRDescription>Format of the initialization string does not conform to the OLE DB specification.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOPROVIDERSREGISTERED">
    <HRValue>0x80040E74</HRValue>
    <HRDescription>No OLE DB providers of this source type are registered.</HRDescription>
  </HResult>
  <HResult Name="DB_E_MISMATCHEDPROVIDER">
    <HRValue>0x80040E75</HRValue>
    <HRDescription>Initialization string specifies a provider that does not match the active provider.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADCOMMANDID">
    <HRValue>0x80040E76</HRValue>
    <HRDescription>DBID is invalid.</HRDescription>
  </HResult>
  <HResult Name="SEC_E_BADTRUSTEEID">
    <HRValue>0x80040E6B</HRValue>
    <HRDescription>Trustee is invalid.</HRDescription>
  </HResult>
  <HResult Name="SEC_E_NOMEMBERSHIPSUPPORT">
    <HRValue>0x80040E6C</HRValue>
    <HRDescription>Trustee does not support memberships or collections.</HRDescription>
  </HResult>
  <HResult Name="SEC_E_INVALIDOBJECT">
    <HRValue>0x80040E6D</HRValue>
    <HRDescription>Object is invalid or unknown to the provider.</HRDescription>
  </HResult>
  <HResult Name="SEC_E_NOOWNER">
    <HRValue>0x80040E6E</HRValue>
    <HRDescription>Object does not have an owner.</HRDescription>
  </HResult>
  <HResult Name="SEC_E_INVALIDACCESSENTRYLIST">
    <HRValue>0x80040E6F</HRValue>
    <HRDescription>Access entry list is invalid.</HRDescription>
  </HResult>
  <HResult Name="SEC_E_INVALIDOWNER">
    <HRValue>0x80040E70</HRValue>
    <HRDescription>Trustee supplied as owner is invalid or unknown to the provider.</HRDescription>
  </HResult>
  <HResult Name="SEC_E_INVALIDACCESSENTRY">
    <HRValue>0x80040E71</HRValue>
    <HRDescription>Permission in the access entry list is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADCONSTRAINTTYPE">
    <HRValue>0x80040E77</HRValue>
    <HRDescription>ConstraintType is invalid or not supported by the provider.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADCONSTRAINTFORM">
    <HRValue>0x80040E78</HRValue>
    <HRDescription>ConstraintType is not DBCONSTRAINTTYPE_FOREIGNKEY and cForeignKeyColumns is not zero.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADDEFERRABILITY">
    <HRValue>0x80040E79</HRValue>
    <HRDescription>Specified deferrability flag is invalid or not supported by the provider.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADMATCHTYPE">
    <HRValue>0x80040E80</HRValue>
    <HRDescription>MatchType is invalid or the value is not supported by the provider.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADUPDATEDELETERULE">
    <HRValue>0x80040E8A</HRValue>
    <HRDescription>Constraint update rule or delete rule is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADCONSTRAINTID">
    <HRValue>0x80040E8B</HRValue>
    <HRDescription>Constraint ID is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_BADCOMMANDFLAGS">
    <HRValue>0x80040E8C</HRValue>
    <HRDescription>Command persistence flag is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_E_OBJECTMISMATCH">
    <HRValue>0x80040E8D</HRValue>
    <HRDescription>rguidColumnType points to a GUID that does not match the object type of this column, or this column was not set.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOSOURCEOBJECT">
    <HRValue>0x80040E91</HRValue>
    <HRDescription>Source row does not exist.</HRDescription>
  </HResult>
  <HResult Name="DB_E_RESOURCELOCKED">
    <HRValue>0x80040E92</HRValue>
    <HRDescription>OLE DB object represented by this URL is locked by one or more other processes.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOTCOLLECTION">
    <HRValue>0x80040E93</HRValue>
    <HRDescription>Client requested an object type that is valid only for a collection.</HRDescription>
  </HResult>
  <HResult Name="DB_E_READONLY">
    <HRValue>0x80040E94</HRValue>
    <HRDescription>Caller requested write access to a read-only object.</HRDescription>
  </HResult>
  <HResult Name="DB_E_ASYNCNOTSUPPORTED">
    <HRValue>0x80040E95</HRValue>
    <HRDescription>Asynchronous binding is not supported by this provider.</HRDescription>
  </HResult>
  <HResult Name="DB_E_CANNOTCONNECT">
    <HRValue>0x80040E96</HRValue>
    <HRDescription>Connection to the server for this URL cannot be established.</HRDescription>
  </HResult>
  <HResult Name="DB_E_TIMEOUT">
    <HRValue>0x80040E97</HRValue>
    <HRDescription>Timeout occurred when attempting to bind to the object.</HRDescription>
  </HResult>
  <HResult Name="DB_E_RESOURCEEXISTS">
    <HRValue>0x80040E98</HRValue>
    <HRDescription>Object cannot be created at this URL because an object named by this URL already exists.</HRDescription>
  </HResult>
  <HResult Name="DB_E_RESOURCEOUTOFSCOPE">
    <HRValue>0x80040E8E</HRValue>
    <HRDescription>URL is outside of scope.</HRDescription>
  </HResult>
  <HResult Name="DB_E_DROPRESTRICTED">
    <HRValue>0x80040E90</HRValue>
    <HRDescription>Column or constraint could not be dropped because it is referenced by a dependent view or constraint.</HRDescription>
  </HResult>
  <HResult Name="DB_E_DUPLICATECONSTRAINTID">
    <HRValue>0x80040E99</HRValue>
    <HRDescription>Constraint already exists.</HRDescription>
  </HResult>
  <HResult Name="DB_E_OUTOFSPACE">
    <HRValue>0x80040E9A</HRValue>
    <HRDescription>Object cannot be created at this URL because the server is out of physical storage.</HRDescription>
  </HResult>
  <HResult Name="DB_SEC_E_SAFEMODE_DENIED">
    <HRValue>0x80040E9B</HRValue>
    <HRDescription>Safety settings on this computer prohibit accessing a data source on another domain.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOSTATISTIC">
    <HRValue>0x80040E9C</HRValue>
    <HRDescription>The specified statistic does not exist in the current data source or did not apply to the specified table or it does not support a histogram.</HRDescription>
  </HResult>
  <HResult Name="DB_E_ALTERRESTRICTED">
    <HRValue>0x80040E9D</HRValue>
    <HRDescription>Column or table could not be altered because it is referenced by a constraint.</HRDescription>
  </HResult>
  <HResult Name="DB_E_RESOURCENOTSUPPORTED">
    <HRValue>0x80040E9E</HRValue>
    <HRDescription>Requested object type is not supported by the provider.</HRDescription>
  </HResult>
  <HResult Name="DB_E_NOCONSTRAINT">
    <HRValue>0x80040E9F</HRValue>
    <HRDescription>Constraint does not exist.</HRDescription>
  </HResult>
  <HResult Name="DB_E_COLUMNUNAVAILABLE">
    <HRValue>0x80040EA0</HRValue>
    <HRDescription>Requested column is valid, but could not be retrieved. This could be due to a forward only cursor attempting to go backwards in a row.</HRDescription>
  </HResult>
  <HResult Name="DB_S_ROWLIMITEXCEEDED">
    <HRValue>0x00040EC0</HRValue>
    <HRDescription>Fetching requested number of rows will exceed total number of active rows supported by the rowset.</HRDescription>
  </HResult>
  <HResult Name="DB_S_COLUMNTYPEMISMATCH">
    <HRValue>0x00040EC1</HRValue>
    <HRDescription>One or more column types are incompatible. Conversion errors will occur during copying.</HRDescription>
  </HResult>
  <HResult Name="DB_S_TYPEINFOOVERRIDDEN">
    <HRValue>0x00040EC2</HRValue>
    <HRDescription>Parameter type information was overridden by caller.</HRDescription>
  </HResult>
  <HResult Name="DB_S_BOOKMARKSKIPPED">
    <HRValue>0x00040EC3</HRValue>
    <HRDescription>Bookmark was skipped for deleted or nonmember row.</HRDescription>
  </HResult>
  <HResult Name="DB_S_NONEXTROWSET">
    <HRValue>0x00040EC5</HRValue>
    <HRDescription>No more rowsets.</HRDescription>
  </HResult>
  <HResult Name="DB_S_ENDOFROWSET">
    <HRValue>0x00040EC6</HRValue>
    <HRDescription>Start or end of rowset or chapter was reached.</HRDescription>
  </HResult>
  <HResult Name="DB_S_COMMANDREEXECUTED">
    <HRValue>0x00040EC7</HRValue>
    <HRDescription>Command was reexecuted.</HRDescription>
  </HResult>
  <HResult Name="DB_S_BUFFERFULL">
    <HRValue>0x00040EC8</HRValue>
    <HRDescription>Operation succeeded, but status array or string buffer could not be allocated.</HRDescription>
  </HResult>
  <HResult Name="DB_S_NORESULT">
    <HRValue>0x00040EC9</HRValue>
    <HRDescription>No more results.</HRDescription>
  </HResult>
  <HResult Name="DB_S_CANTRELEASE">
    <HRValue>0x00040ECA</HRValue>
    <HRDescription>Server cannot release or downgrade a lock until the end of the transaction.</HRDescription>
  </HResult>
  <HResult Name="DB_S_GOALCHANGED">
    <HRValue>0x00040ECB</HRValue>
    <HRDescription>Weight is not supported or exceeded the supported limit, and was set to 0 or the supported limit.</HRDescription>
  </HResult>
  <HResult Name="DB_S_UNWANTEDOPERATION">
    <HRValue>0x00040ECC</HRValue>
    <HRDescription>Consumer does not want to receive further notification calls for this operation.</HRDescription>
  </HResult>
  <HResult Name="DB_S_DIALECTIGNORED">
    <HRValue>0x00040ECD</HRValue>
    <HRDescription>Input dialect was ignored and command was processed using default dialect.</HRDescription>
  </HResult>
  <HResult Name="DB_S_UNWANTEDPHASE">
    <HRValue>0x00040ECE</HRValue>
    <HRDescription>Consumer does not want to receive further notification calls for this phase.</HRDescription>
  </HResult>
  <HResult Name="DB_S_UNWANTEDREASON">
    <HRValue>0x00040ECF</HRValue>
    <HRDescription>Consumer does not want to receive further notification calls for this reason.</HRDescription>
  </HResult>
  <HResult Name="DB_S_ASYNCHRONOUS">
    <HRValue>0x00040ED0</HRValue>
    <HRDescription>Operation is being processed asynchronously.</HRDescription>
  </HResult>
  <HResult Name="DB_S_COLUMNSCHANGED">
    <HRValue>0x00040ED1</HRValue>
    <HRDescription>Command was executed to reposition to the start of the rowset. Either the order of the columns changed, or columns were added to or removed from the rowset.</HRDescription>
  </HResult>
  <HResult Name="DB_S_ERRORSRETURNED">
    <HRValue>0x00040ED2</HRValue>
    <HRDescription>Method had some errors, which were returned in the error array.</HRDescription>
  </HResult>
  <HResult Name="DB_S_BADROWHANDLE">
    <HRValue>0x00040ED3</HRValue>
    <HRDescription>Row handle is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_S_DELETEDROW">
    <HRValue>0x00040ED4</HRValue>
    <HRDescription>Row handle referred to a deleted row.</HRDescription>
  </HResult>
  <HResult Name="DB_S_TOOMANYCHANGES">
    <HRValue>0x00040ED5</HRValue>
    <HRDescription>Provider cannot keep track of all the changes. Client must refetch the data associated with the watch region by using another method.</HRDescription>
  </HResult>
  <HResult Name="DB_S_STOPLIMITREACHED">
    <HRValue>0x00040ED6</HRValue>
    <HRDescription>Execution stopped because a resource limit was reached. Results obtained so far were returned, but execution cannot resume.</HRDescription>
  </HResult>
  <HResult Name="DB_S_LOCKUPGRADED">
    <HRValue>0x00040ED8</HRValue>
    <HRDescription>Lock was upgraded from the value specified.</HRDescription>
  </HResult>
  <HResult Name="DB_S_PROPERTIESCHANGED">
    <HRValue>0x00040ED9</HRValue>
    <HRDescription>One or more properties were changed as allowed by provider.</HRDescription>
  </HResult>
  <HResult Name="DB_S_ERRORSOCCURRED">
    <HRValue>0x00040EDA</HRValue>
    <HRDescription>Multiple-step operation completed with one or more errors. Check each status value.</HRDescription>
  </HResult>
  <HResult Name="DB_S_PARAMUNAVAILABLE">
    <HRValue>0x00040EDB</HRValue>
    <HRDescription>Parameter is invalid.</HRDescription>
  </HResult>
  <HResult Name="DB_S_MULTIPLECHANGES">
    <HRValue>0x00040EDC</HRValue>
    <HRDescription>Updating a row caused more than one row to be updated in the data source.</HRDescription>
  </HResult>
  <HResult Name="DB_S_NOTSINGLETON">
    <HRValue>0x00040ED7</HRValue>
    <HRDescription>Row object was requested on a non-singleton result. First row was returned.</HRDescription>
  </HResult>
  <HResult Name="DB_S_NOROWSPECIFICCOLUMNS">
    <HRValue>0x00040EDD</HRValue>
    <HRDescription>Row has no row-specific columns</HRDescription>
  </HResult>
  <HResult Name="STG_E_FILENOTFOUND">
    <HRValue>0x80030002</HRValue>
    <HRDescription>The file could not be found.</HRDescription>
  </HResult>
  <HResult Name="STG_E_PATHNOTFOUND">
    <HRValue>0x80030003</HRValue>
    <HRDescription>The path could not be found.</HRDescription>
  </HResult>
  <HResult Name="STG_E_FILEALREADYEXISTS">
    <HRValue>0x80030050</HRValue>
    <HRDescription>The file already exists.</HRDescription>
  </HResult>
  <HResult Name="STG_E_INVALIDHEADER">
    <HRValue>0x800300FB</HRValue>
    <HRDescription>The file is not a valid compound file.</HRDescription>
  </HResult>
  <HResult Name="STG_E_INVALIDNAME">
    <HRValue>0x800300FC</HRValue>
    <HRDescription>The name is not valid.</HRDescription>
  </HResult>
  <HResult Name="STG_E_OLDFORMAT">
    <HRValue>0x80030104</HRValue>
    <HRDescription>compound file was produced with an incompatible version of storage.</HRDescription>
  </HResult>
  <HResult Name="STG_E_OLDDLL">
    <HRValue>0x80030105</HRValue>
    <HRDescription>The compound file was produced with an incompatible version of storage.</HRDescription>
  </HResult>
</AutoVisualizer>
