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