/* * 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;