|  | /* | 
|  | * Copyright (C) 2006 Mike McCormack | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|  | */ | 
|  |  | 
|  | typedef DWORD DBKIND; | 
|  |  | 
|  | enum DBKINDENUM { | 
|  | DBKIND_GUID_NAME, | 
|  | DBKIND_GUID_PROPID, | 
|  | DBKIND_NAME, | 
|  | DBKIND_PGUID_NAME, | 
|  | DBKIND_PGUID_PROPID, | 
|  | DBKIND_PROPID, | 
|  | DBKIND_GUID, | 
|  | }; | 
|  |  | 
|  | typedef struct tagDBID { | 
|  | [switch_type(DBKIND), switch_is(eKind)] union | 
|  | { | 
|  | [case(DBKIND_GUID_NAME, DBKIND_GUID_PROPID, DBKIND_GUID, DBKIND_NAME, DBKIND_PROPID)] | 
|  | GUID guid; | 
|  | [case(DBKIND_PGUID_NAME, DBKIND_PGUID_PROPID)] | 
|  | GUID *pguid; | 
|  | [default] | 
|  | ; | 
|  | } uGuid; | 
|  | DBKIND eKind; | 
|  | [switch_type(DBKIND), switch_is(eKind)] union | 
|  | { | 
|  | [case(DBKIND_GUID_NAME, DBKIND_NAME, DBKIND_PGUID_NAME)] | 
|  | LPOLESTR pwszName; | 
|  | [case(DBKIND_GUID_PROPID, DBKIND_GUID, DBKIND_PGUID_PROPID, DBKIND_PROPID)] | 
|  | ULONG ulPropid; | 
|  | [default] | 
|  | ; | 
|  | } uName; | 
|  | } DBID; | 
|  |  | 
|  | typedef DWORD DBPROPID; | 
|  |  | 
|  | typedef struct tagDBPROPIDSET { | 
|  | [size_is(cPropertyIDs)] DBPROPID *rgPropertyIDs; | 
|  | ULONG cPropertyIDs; | 
|  | GUID guidPropertySet; | 
|  | } DBPROPIDSET; | 
|  |  | 
|  | typedef DWORD DBPROPOPTIONS; | 
|  |  | 
|  | enum DBPROPOPTIONENUM { | 
|  | DBPROPOPTIONS_REQUIRED = 0, | 
|  | DBPROPOPTIONS_SETIFCHEAP = 1, | 
|  | DBPROPOPTIONS_OPTIONAL = 1, | 
|  | }; | 
|  |  | 
|  | typedef DWORD DBPROPSTATUS; | 
|  |  | 
|  | typedef struct tagDBPROP { | 
|  | DBPROPID dwPropertyID; | 
|  | DBPROPOPTIONS dwOptions; | 
|  | DBPROPSTATUS dwStatus; | 
|  | DBID colid; | 
|  | VARIANT vValue; | 
|  | } DBPROP; | 
|  |  | 
|  | typedef struct tagDBPROPSET { | 
|  | [size_is(cProperties)] DBPROP *rgProperties; | 
|  | ULONG cProperties; | 
|  | GUID guidPropertySet; | 
|  | } DBPROPSET; | 
|  |  | 
|  | typedef DWORD DBPROPFLAGS; | 
|  |  | 
|  | typedef struct tagDBPROPINFO { | 
|  | LPOLESTR pwszDescription; | 
|  | DBPROPID dwPropertyID; | 
|  | DBPROPFLAGS dwFlags; | 
|  | VARTYPE vtType; | 
|  | VARIANT vValues; | 
|  | } DBPROPINFO; | 
|  |  | 
|  | typedef DBPROPINFO *PDBPROPINFO; | 
|  |  | 
|  | typedef struct tagDBPROPINFOSET { | 
|  | [size_is(cPropertyInfos)] PDBPROPINFO rgPropertyInfos; | 
|  | ULONG cPropertyInfos; | 
|  | GUID guidPropertySet; | 
|  | } DBPROPINFOSET; |