cmdtre.idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:10k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //-----------------------------------------------------------------------------
  2. // File: cmdtre.idl
  3. //
  4. // Copyright: Copyright (c) Microsoft Corporation          
  5. //
  6. // Contents:  OLE DB interface definition
  7. //
  8. // Comments: 
  9. //
  10. //-----------------------------------------------------------------------------
  11. #include "idlmulti.h"
  12. //  
  13.     LOCAL_INTERFACE(0c733a87-2a1c-11ce-ade5-00aa0044773d)
  14.     
  15. interface ICommandTree : IUnknown {
  16. typedef DWORD DBCOMMANDREUSE;
  17. enum DBCOMMANDREUSEENUM {
  18.     DBCOMMANDREUSE_NONE         = 0x00,
  19.     DBCOMMANDREUSE_PROPERTIES   = 0x01,
  20.     DBCOMMANDREUSE_PARAMETERS   = 0x02,
  21. };
  22. typedef DWORD DBVALUEKIND;
  23. enum DBVALUEKINDENUM {
  24.     DBVALUEKIND_BYGUID          = 256,
  25.     DBVALUEKIND_COLDESC         = DBVALUEKIND_BYGUID + 1,
  26.     DBVALUEKIND_ID              = DBVALUEKIND_COLDESC + 1,
  27.     DBVALUEKIND_CONTENT         = DBVALUEKIND_ID + 1,
  28.     DBVALUEKIND_CONTENTVECTOR   = DBVALUEKIND_CONTENT + 1,
  29.     DBVALUEKIND_GROUPINFO       = DBVALUEKIND_CONTENTVECTOR + 1,
  30.     DBVALUEKIND_PARAMETER       = DBVALUEKIND_GROUPINFO + 1,
  31.     DBVALUEKIND_PROPERTY        = DBVALUEKIND_PARAMETER + 1,
  32.     DBVALUEKIND_SETFUNC         = DBVALUEKIND_PROPERTY + 1,
  33.     DBVALUEKIND_SORTINFO        = DBVALUEKIND_SETFUNC + 1,
  34.     DBVALUEKIND_TEXT            = DBVALUEKIND_SORTINFO + 1,
  35.     DBVALUEKIND_COMMAND         = DBVALUEKIND_TEXT + 1,
  36.     DBVALUEKIND_MONIKER         = DBVALUEKIND_COMMAND + 1,
  37.     DBVALUEKIND_ROWSET          = DBVALUEKIND_MONIKER + 1,
  38.     DBVALUEKIND_LIKE            = DBVALUEKIND_ROWSET + 1,
  39.     DBVALUEKIND_CONTENTPROXIMITY= DBVALUEKIND_LIKE + 1,
  40.     DBVALUEKIND_CONTENTSCOPE    = DBVALUEKIND_CONTENTPROXIMITY + 1,
  41.     DBVALUEKIND_CONTENTTABLE    = DBVALUEKIND_CONTENTSCOPE + 1,
  42.     DBVALUEKIND_IDISPATCH       = 9,
  43.     DBVALUEKIND_IUNKNOWN        = 13,
  44.     DBVALUEKIND_EMPTY           = 0,
  45.     DBVALUEKIND_NULL            = 1,
  46.     DBVALUEKIND_I2              = 2,
  47.     DBVALUEKIND_I4              = 3,
  48.     DBVALUEKIND_R4              = 4,
  49.     DBVALUEKIND_R8              = 5,
  50.     DBVALUEKIND_CY              = 6,
  51.     DBVALUEKIND_DATE            = 7,
  52.     DBVALUEKIND_BSTR            = 8,
  53.     DBVALUEKIND_ERROR           = 10,
  54.     DBVALUEKIND_BOOL            = 11,
  55.     DBVALUEKIND_VARIANT         = 12,
  56.     DBVALUEKIND_VECTOR          = 0x1000,
  57.     DBVALUEKIND_ARRAY           = 0x2000,
  58.     DBVALUEKIND_BYREF           = 0x4000,
  59.     DBVALUEKIND_I1              = 16,
  60.     DBVALUEKIND_UI1             = 17,
  61.     DBVALUEKIND_UI2             = 18,
  62.     DBVALUEKIND_UI4             = DBVALUEKIND_UI2 + 1,
  63.     DBVALUEKIND_I8              = DBVALUEKIND_UI4 + 1,
  64.     DBVALUEKIND_UI8             = DBVALUEKIND_I8 + 1,
  65.     DBVALUEKIND_GUID            = 72,
  66.     DBVALUEKIND_BYTES           = 128,
  67.     DBVALUEKIND_STR             = 129,
  68.     DBVALUEKIND_WSTR            = 130,
  69.     DBVALUEKIND_NUMERIC         = 131,
  70.     DBVALUEKIND_DBDATE          = 133,
  71.     DBVALUEKIND_DBTIME          = 134,
  72.     DBVALUEKIND_DBTIMESTAMP     = 135,
  73.     DBVALUEKIND_PROBABILISTIC   = 136,
  74.     DBVALUEKIND_RELEVANTDOCUMENT = 137, 
  75. };
  76. typedef struct tagDBBYGUID {
  77.     [size_is((ULONG)cbInfo)] BYTE * pbInfo;
  78.     DBLENGTH cbInfo;
  79.     GUID guid;
  80. } DBBYGUID;
  81. cpp_quote("#define GENERATE_METHOD_EXACT    ( 0 )")
  82. cpp_quote("#define GENERATE_METHOD_PREFIX   ( 1 )")
  83. cpp_quote("#define GENERATE_METHOD_INFLECT  ( 2 )")
  84. typedef struct tagDBCONTENT {
  85.     LPOLESTR pwszPhrase;
  86.     DWORD dwGenerateMethod;
  87.     LONG lWeight;
  88.     LCID lcid;
  89. } DBCONTENT;
  90. cpp_quote("#define SCOPE_FLAG_MASK      ( 0x000000ff )")
  91. cpp_quote("#define SCOPE_FLAG_INCLUDE   ( 0x00000001 )")
  92. cpp_quote("#define SCOPE_FLAG_DEEP      ( 0x00000002 )")
  93. cpp_quote("#define SCOPE_TYPE_MASK      ( 0xffffff00 )")
  94. cpp_quote("#define SCOPE_TYPE_WINPATH   ( 0x00000100 )")
  95. cpp_quote("#define SCOPE_TYPE_VPATH     ( 0x00000200 )")
  96. typedef struct tagDBCONTENTSCOPE {
  97.     DWORD dwFlags;
  98.     LPOLESTR * rgpwszTagName;
  99.     LPOLESTR pwszElementValue;
  100. } DBCONTENTSCOPE;
  101. typedef struct tagDBCONTENTTABLE {
  102.     LPOLESTR pwszMachine;
  103.     LPOLESTR pwszCatalog;
  104. } DBCONTENTTABLE;
  105. cpp_quote("#define PROPID_QUERY_RANKVECTOR  ( 0x2 )")
  106. cpp_quote("#define PROPID_QUERY_RANK        ( 0x3 )")
  107. cpp_quote("#define PROPID_QUERY_HITCOUNT    ( 0x4 )")
  108. cpp_quote("#define PROPID_QUERY_ALL         ( 0x6 )")
  109. cpp_quote("#define PROPID_STG_CONTENTS      ( 0x13 )")
  110. cpp_quote("#define VECTOR_RANK_MIN          ( 0 )")
  111. cpp_quote("#define VECTOR_RANK_MAX          ( 1 )")
  112. cpp_quote("#define VECTOR_RANK_INNER        ( 2 )")
  113. cpp_quote("#define VECTOR_RANK_DICE         ( 3 )")
  114. cpp_quote("#define VECTOR_RANK_JACCARD      ( 4 )")
  115. typedef struct tagDBCONTENTVECTOR {
  116.     LONG lWeight;
  117.     DWORD dwRankingMethod;
  118. } DBCONTENTVECTOR;
  119. typedef struct tagDBGROUPINFO {
  120.     LCID lcid;
  121. } DBGROUPINFO;
  122. typedef struct tagDBPARAMETER {
  123.     LPOLESTR pwszName;
  124.     ITypeInfo * pTypeInfo;
  125.     DB_NUMERIC * pNum;
  126.     DBLENGTH cbMaxLength;
  127.     DBPARAMFLAGS dwFlags;
  128.     DBTYPE wType;
  129. } DBPARAMETER;
  130. cpp_quote("#define DBSETFUNC_NONE       0x0")
  131. cpp_quote("#define DBSETFUNC_ALL        0x1")
  132. cpp_quote("#define DBSETFUNC_DISTINCT   0x2")
  133. typedef struct tagDBSETFUNC {
  134.     DWORD dwSetQuantifier;
  135. } DBSETFUNC;
  136. typedef struct tagDBSORTINFO {
  137.     BOOL fDesc;
  138.     LCID lcid;
  139. } DBSORTINFO;
  140. typedef struct tagDBTEXT {
  141.     LPOLESTR pwszText;
  142.     ULONG ulErrorLocator;
  143.     ULONG ulTokenLength;
  144.     GUID guidDialect;
  145. } DBTEXT;
  146. typedef struct tagDBLIKE {
  147.     LONG lWeight;
  148.     GUID guidDialect;
  149. } DBLIKE;
  150. cpp_quote("#define PROXIMITY_UNIT_WORD           ( 0 )")
  151. cpp_quote("#define PROXIMITY_UNIT_SENTENCE       ( 1 )")
  152. cpp_quote("#define PROXIMITY_UNIT_PARAGRAPH      ( 2 )")
  153. cpp_quote("#define PROXIMITY_UNIT_CHAPTER        ( 3 )")
  154. typedef struct tagDBCONTENTPROXIMITY {
  155.     DWORD  dwProximityUnit;
  156.     ULONG  ulProximityDistance;
  157.     LONG   lWeight;
  158. } DBCONTENTPROXIMITY;
  159. typedef struct tagDBPROBABILISTIC {
  160.     LONG  lWeight;    // Weight of this node in tree
  161.     float flK1;             // K1 parameter in BM25
  162.     float flK2;             // K2 parameter in BM25 (must be 0)
  163.     float flK3;             // K3 parameter in BM25
  164.     float flB;               // b parameter in BM25
  165. } DBPROBABILISTIC;
  166. typedef struct tagDBRELEVANTDOCUMENT {
  167.     LONG    lWeight;         // Weight of this node in the tree
  168.     VARIANT vDocument;  // Relevant document
  169. } DBRELEVANTDOCUMENT;
  170. typedef struct tagDBCOMMANDTREE {
  171.     DBCOMMANDOP op;
  172.     WORD wKind;
  173.     struct tagDBCOMMANDTREE * pctFirstChild;
  174.     struct tagDBCOMMANDTREE * pctNextSibling;
  175.     [switch_type(WORD),switch_is(wKind)] union {
  176.         [case(DBVALUEKIND_I8)] __int64 llValue;
  177.         [case(DBVALUEKIND_UI8)] unsigned __int64 ullValue;
  178.         [case(DBVALUEKIND_BOOL)] BOOL fValue;
  179.         [case(DBVALUEKIND_UI1)] unsigned char uchValue;
  180.         [case(DBVALUEKIND_I1)] signed char schValue;
  181.         [case(DBVALUEKIND_UI2)] unsigned short usValue;
  182.         [case(DBVALUEKIND_I2)] short sValue;
  183.         [case(DBVALUEKIND_WSTR)] LPOLESTR pwszValue;
  184.         [case(DBVALUEKIND_I4)] LONG lValue;
  185.         [case(DBVALUEKIND_UI4)] ULONG ulValue;
  186.         [case(DBVALUEKIND_R4)] float flValue;
  187.         [case(DBVALUEKIND_R8)] double dblValue;
  188.         [case(DBVALUEKIND_CY)] CY cyValue;
  189.         [case(DBVALUEKIND_DATE)] DATE dateValue;
  190.         [case(DBVALUEKIND_DBDATE)] DBDATE dbdateValue;
  191.         [case(DBVALUEKIND_DBTIME)] DBTIME dbtimeValue;
  192.         [case(DBVALUEKIND_ERROR)] SCODE scodeValue;
  193.         [case(DBVALUEKIND_BSTR)] BSTR * pbstrValue;
  194.         [case(DBVALUEKIND_COMMAND)] ICommand * pCommand;
  195.         [case(DBVALUEKIND_IDISPATCH)] IDispatch * pDispatch;
  196.         [case(DBVALUEKIND_MONIKER)] IMoniker * pMoniker;
  197.         [case(DBVALUEKIND_ROWSET)] IRowset * pRowset;
  198.         [case(DBVALUEKIND_IUNKNOWN)] IUnknown * pUnknown;
  199.         [case(DBVALUEKIND_BYGUID)] DBBYGUID * pdbbygdValue;
  200.         [case(DBVALUEKIND_COLDESC)] DBCOLUMNDESC * pcoldescValue;
  201.         [case(DBVALUEKIND_ID)] DBID * pdbidValue;
  202.         [case(DBVALUEKIND_LIKE)] DBLIKE * pdblikeValue;
  203.         [case(DBVALUEKIND_CONTENT)] DBCONTENT * pdbcntntValue;
  204.         [case(DBVALUEKIND_CONTENTSCOPE)] DBCONTENTSCOPE * pdbcntntscpValue;
  205.         [case(DBVALUEKIND_CONTENTTABLE)] DBCONTENTTABLE * pdbcntnttblValue;
  206.         [case(DBVALUEKIND_CONTENTVECTOR)] DBCONTENTVECTOR * pdbcntntvcValue;
  207.         [case(DBVALUEKIND_CONTENTPROXIMITY)] DBCONTENTPROXIMITY * pdbcntntproxValue;
  208.         [case(DBVALUEKIND_GROUPINFO)] DBGROUPINFO * pdbgrpinfValue;
  209.         [case(DBVALUEKIND_PARAMETER)] DBPARAMETER * pdbparamValue;
  210.         [case(DBVALUEKIND_PROPERTY)] DBPROPSET * pdbpropValue;
  211.         [case(DBVALUEKIND_SETFUNC)] DBSETFUNC * pdbstfncValue;
  212.         [case(DBVALUEKIND_SORTINFO)] DBSORTINFO * pdbsrtinfValue;
  213.         [case(DBVALUEKIND_TEXT)] DBTEXT * pdbtxtValue;
  214.         [case(DBVALUEKIND_VECTOR)] DBVECTOR * pdbvectorValue;
  215.         [case(DBVALUEKIND_ARRAY)] SAFEARRAY * parrayValue;
  216.         [case(DBVALUEKIND_VARIANT)] VARIANT * pvarValue;
  217.         [case(DBVALUEKIND_GUID)] GUID * pGuid;
  218.         [case(DBVALUEKIND_BYTES)] BYTE * pbValue;
  219.         [case(DBVALUEKIND_STR)] char * pzValue;
  220.         [case(DBVALUEKIND_NUMERIC)] DB_NUMERIC * pdbnValue;
  221.         [case(DBVALUEKIND_DBTIMESTAMP)] DBTIMESTAMP * pdbtsValue;
  222.         [case(DBVALUEKIND_BYREF)] void * pvValue;
  223. [case(DBVALUEKIND_PROBABILISTIC)] DBPROBABILISTIC * pdbprobValue;
  224. [case(DBVALUEKIND_RELEVANTDOCUMENT)] DBRELEVANTDOCUMENT * pdbreldocValue;
  225.     } value;
  226.     HRESULT hrError;
  227. } DBCOMMANDTREE;
  228.     HRESULT FindErrorNodes(
  229.         [in] const DBCOMMANDTREE * pRoot,
  230.         [out] ULONG * pcErrorNodes,
  231.         [out] DBCOMMANDTREE *** prgErrorNodes
  232.     );
  233.     HRESULT FreeCommandTree(
  234.         [in] DBCOMMANDTREE ** ppRoot
  235.     );
  236.     HRESULT GetCommandTree(
  237.         [out] DBCOMMANDTREE ** ppRoot
  238.     );
  239.     HRESULT SetCommandTree(
  240.         [in] DBCOMMANDTREE ** ppRoot,
  241.         [in] DBCOMMANDREUSE dwCommandReuse,
  242.         [in] BOOL fCopy
  243.     );
  244. }