dxgi: Add the IDXGIDeviceSubObject interface.
[wine] / include / dbs.idl
1 /*
2  * Copyright (C) 2006 Mike McCormack
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 typedef DWORD DBKIND;
20
21 enum DBKINDENUM {
22     DBKIND_GUID_NAME,
23     DBKIND_GUID_PROPID,
24     DBKIND_NAME,
25     DBKIND_PGUID_NAME,
26     DBKIND_PGUID_PROPID,
27     DBKIND_PROPID,
28     DBKIND_GUID,
29 };
30
31 typedef struct tagDBID {
32     [switch_type(DBKIND), switch_is(eKind)] union
33     {
34     [case(DBKIND_GUID_NAME, DBKIND_GUID_PROPID, DBKIND_GUID, DBKIND_NAME, DBKIND_PROPID)]
35         GUID guid;
36     [case(DBKIND_PGUID_NAME, DBKIND_PGUID_PROPID)]
37         GUID *pguid;
38     [default]
39         ;
40     } uGuid;
41     DBKIND eKind;
42     [switch_type(DBKIND), switch_is(eKind)] union
43     {
44     [case(DBKIND_GUID_NAME, DBKIND_NAME, DBKIND_PGUID_NAME)]
45         LPOLESTR pwszName;
46     [case(DBKIND_GUID_PROPID, DBKIND_GUID, DBKIND_PGUID_PROPID, DBKIND_PROPID)]
47         ULONG ulPropid;
48     [default]
49         ;
50     } uName;
51 } DBID;
52
53 typedef DWORD DBPROPID;
54
55 typedef struct tagDBPROPIDSET {
56     [size_is(cPropertyIDs)] DBPROPID *rgPropertyIDs;
57     ULONG cPropertyIDs;
58     GUID guidPropertySet;
59 } DBPROPIDSET;
60
61 typedef DWORD DBPROPOPTIONS;
62
63 enum DBPROPOPTIONENUM {
64     DBPROPOPTIONS_REQUIRED = 0,
65     DBPROPOPTIONS_SETIFCHEAP = 1,
66     DBPROPOPTIONS_OPTIONAL = 1,
67 };
68
69 typedef DWORD DBPROPSTATUS;
70
71 typedef struct tagDBPROP {
72     DBPROPID dwPropertyID;
73     DBPROPOPTIONS dwOptions;
74     DBPROPSTATUS dwStatus;
75     DBID colid;
76     VARIANT vValue;
77 } DBPROP;
78
79 typedef struct tagDBPROPSET {
80     [size_is(cProperties)] DBPROP *rgProperties;
81     ULONG cProperties;
82     GUID guidPropertySet;
83 } DBPROPSET;
84
85 typedef DWORD DBPROPFLAGS;
86
87 typedef struct tagDBPROPINFO {
88     LPOLESTR pwszDescription;
89     DBPROPID dwPropertyID;
90     DBPROPFLAGS dwFlags;
91     VARTYPE vtType;
92     VARIANT vValues;
93 } DBPROPINFO;
94
95 typedef DBPROPINFO *PDBPROPINFO;
96
97 typedef struct tagDBPROPINFOSET {
98     [size_is(cPropertyInfos)] PDBPROPINFO rgPropertyInfos;
99     ULONG cPropertyInfos;
100     GUID guidPropertySet;
101 } DBPROPINFOSET;