ReactOS 0.4.15-dev-8102-g108db8f
devicetopology.idl
Go to the documentation of this file.
1/*
2 * Core Audio device topology definitions
3 *
4 * Copyright 2009 Maarten Lankhorst
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 *
20 */
21
22interface IPart;
23interface IControlInterface;
24interface IDeviceTopology;
25interface IControlChangeNotify;
26
27import "oaidl.idl";
28import "ocidl.idl";
29import "propidl.idl";
30
31cpp_quote("#ifndef E_NOTFOUND")
32cpp_quote("#define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)")
33cpp_quote("#endif")
34
35cpp_quote("#define DEVTOPO_HARDWARE_INITIATED_EVENTCONTEXT 0x64726148 /* 'draH' */")
36cpp_quote("DEFINE_GUID(EVENTCONTEXT_VOLUMESLIDER, 0xe2c2e9de, 0x09b1, 0x4b04,0x84,0xe5, 0x07, 0x93, 0x12, 0x25, 0xee, 0x04);")
37
38cpp_quote("#define _IKsControl_")
39cpp_quote("#include <ks.h>")
40cpp_quote("#include <ksmedia.h>")
41cpp_quote("#ifndef _KS_")
42
43typedef struct {
44 ULONG FormatSize;
45 ULONG Flags;
46 ULONG SampleSize;
47 ULONG Reserved;
48 GUID MajorFormat;
49 GUID SubFormat;
50 GUID Specifier;
51} KSDATAFORMAT;
52
53typedef KSDATAFORMAT *PKSDATAFORMAT;
54
55typedef struct
56{
57 union
58 {
59 struct {
60 GUID Set;
61 ULONG Id;
62 ULONG Flags;
63 };
64 LONGLONG Alignment;
65 };
66} KSIDENTIFIER;
67
68typedef KSIDENTIFIER KSPROPERTY, *PKSPROPERTY;
69typedef KSIDENTIFIER KSMETHOD, *PKSMETHOD;
70typedef KSIDENTIFIER KSEVENT, *PKSEVENT;
71
72typedef enum
73{
74 eConnTypeUnknown = 0,
75 eConnType3Point5mm,
76 eConnTypeQuarter,
77 eConnTypeAtapiInternal,
78 eConnTypeRCA,
79 eConnTypeOptical,
80 eConnTypeOtherDigital,
81 eConnTypeOtherAnalog,
82 eConnTypeMultichannelAnalogDIN,
83 eConnTypeXlrProfessional,
84 eConnTypeRJ11Modem,
85 eConnTypeCombination
86} EPcxConnectionType;
87
88typedef enum
89{
90 eGeoLocRear = 1,
91 eGeoLocFront,
92 eGeoLocLeft,
93 eGeoLocRight,
94 eGeoLocTop,
95 eGeoLocBottom,
96 eGeoLocRearPanel,
97 eGeoLocRiser,
98 eGeoLocInsideMobileLid,
99 eGeoLocDrivebay,
100 eGeoLocHDMI,
101 eGeoLocOutsideMobileLid,
102 eGeoLocATAPI,
103 eGeoLocReserved5,
104 eGeoLocReserved6
105} EPcxGeoLocation;
106
107typedef enum
108{
109 eGenLocPrimaryBox = 0,
110 eGenLocInternal,
111 eGenLocSeparate,
112 eGenLocOther
113} EPcxGenLocation;
114
115typedef enum
116{
117 ePortConnJack = 0,
118 ePortConnIntegratedDevice,
119 ePortConnBothIntegratedAndJack,
120 ePortConnUnknown
121} EPxcPortConnection;
122
123typedef struct
124{
125 DWORD ChannelMapping;
126 COLORREF Color;
127 EPcxConnectionType ConnectionType;
128 EPcxGeoLocation GeoLocation;
129 EPcxGenLocation GenLocation;
130 EPxcPortConnection PortConnection;
131 BOOL IsConnected;
132} KSJACK_DESCRIPTION;
133
134typedef KSJACK_DESCRIPTION *PKSJACK_DESCRIPTION;
135
136typedef struct _LUID
137{
138 DWORD LowPart;
139 LONG HighPart;
140} LUID;
141
142typedef struct _LUID *PLUID;
143
144typedef enum
145{
146 KSJACK_SINK_CONNECTIONTYPE_HDMI = 0,
147 KSJACK_SINK_CONNECTIONTYPE_DISPLAYPORT
148} KSJACK_SINK_CONNECTIONTYPE;
149
150typedef struct _tagKSJACK_SINK_INFORMATION
151{
152 KSJACK_SINK_CONNECTIONTYPE ConnType;
153 WORD ManufacturerId;
154 WORD ProductId;
155 WORD AudioLatency;
156 BOOL HDCPCapable;
157 BOOL AICapable;
158 UCHAR SinkDescriptionLength;
159 WCHAR SinkDescription[32];
160 LUID PortId;
161} KSJACK_SINK_INFORMATION;
162
163typedef struct _tagKSJACK_DESCRIPTION2
164{
165 DWORD DeviceStateInfo;
166 DWORD JackCapabilities;
167} KSJACK_DESCRIPTION2;
168
169typedef struct _tagKSJACK_DESCRIPTION2 *PKSJACK_DESCRIPTION2;
170
171cpp_quote("#endif")
172
173typedef enum
174{
175 In = 0,
176 Out
177} DataFlow;
178
179typedef enum
180{
181 Connector = 0,
182 Subunit
183} PartType;
184
185typedef enum
186{
187 Unknown_Connector = 0,
188 Physical_Internal,
189 Physical_External,
190 Software_IO,
191 Software_Fixed,
192 Network
193} ConnectorType;
194
195[
196 pointer_default(unique),
197 nonextensible,
198 uuid(28f54685-06fd-11d2-b27a-00a0c9223196),
199 local,
200 object
201]
202interface IKsControl : IUnknown
203{
204 HRESULT KsProperty(
205 [in] PKSPROPERTY Property,
206 [in] ULONG PropertyLength,
207 [in,out] void *PropertyData,
208 [in] ULONG DataLength,
209 [out] ULONG *BytesReturned
210 );
211 HRESULT KsMethod(
212 [in] PKSMETHOD Method,
213 [in] ULONG MethodLength,
214 [in,out] void *MethodData,
215 [in] ULONG DataLength,
216 [out] ULONG *BytesReturned
217 );
218 HRESULT KsEvent(
219 [in] PKSEVENT Event,
220 [in] ULONG EventLength,
221 [in,out] void *EventData,
222 [in] ULONG DataLength,
223 [out] ULONG *BytesReturned
224 );
225}
226
227[
228 pointer_default(unique),
229 nonextensible,
230 uuid(c2f8e001-f205-4bc9-99bc-c13b1e048ccb),
231 local,
232 object
233]
234interface IPerChannelDbLevel : IUnknown
235{
236 HRESULT GetChannelCount(
237 [out] UINT *pcChannels
238 );
239 HRESULT GetLevelRange(
240 [in] UINT nChannel,
241 [out] float *pfMinLevelDB,
242 [out] float *pfMaxLevelDB,
243 [out] float *pfStepping
244 );
245 HRESULT GetLevel(
246 [in] UINT nChannel,
247 [out] float *pfLevelDB
248 );
249 HRESULT SetLevel(
250 [in] UINT nChannel,
251 [in] float fLevelDB,
252 [in,unique] LPCGUID pguidEventContext
253 );
254 HRESULT SetLevelUniform(
255 [in] float fLevelDB,
256 [in,unique] LPCGUID pguidEventContext
257 );
258 HRESULT SetLevelAllChannels(
259 [size_is(cChannels),in] float *aLevelsDB,
260 [in] ULONG cChannels,
261 [in] LPCGUID pguidEventContext
262 );
263}
264
265[
266 pointer_default(unique),
267 nonextensible,
268 uuid(7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc),
269 local,
270 object
271]
272interface IAudioVolumeLevel : IPerChannelDbLevel
273{
274 /* Empty */
275}
276
277[
278 pointer_default(unique),
279 nonextensible,
280 uuid(bb11c46f-ec28-493c-b88a-5db88062ce98),
281 local,
282 object
283]
284interface IAudioChannelConfig : IUnknown
285{
286 HRESULT SetChannelConfig(
287 [in] DWORD dwConfig,
288 [in] LPCGUID pguidEventContext
289 );
290 HRESULT GetChannelConfig(
291 [in] DWORD dwConfig,
292 [retval,out] DWORD *pdwConfig
293 );
294}
295
296[
297 pointer_default(unique),
298 nonextensible,
299 uuid(7d8b1437-dd53-4350-9c1b-1ee2890bf938),
300 local,
301 object
302]
303interface IAudioLoudness : IUnknown
304{
305 HRESULT GetEnabled(
306 [out] BOOL *pbEnabled
307 );
308 HRESULT SetEnabled(
309 [in] BOOL bEnabled,
310 [in] LPCGUID pguidEventContext
311 );
312}
313
314[
315 pointer_default(unique),
316 nonextensible,
317 uuid(4f03dc02-5e6e-4653-8f72-a030c123d598),
318 local,
319 object
320]
321interface IAudioInputSelector : IUnknown
322{
323 HRESULT GetSelection(
324 [out] UINT *pnIdSelected
325 );
326 HRESULT SetSelection(
327 [in] UINT nIdSelect,
328 [unique,in] LPCGUID pguidEventContext
329 );
330}
331
332[
333 pointer_default(unique),
334 nonextensible,
335 uuid(bb515f69-94a7-429e-8b9c-271b3f11a3ab),
336 local,
337 object
338]
339interface IAudioOutputSelector : IUnknown
340{
341 HRESULT GetSelection(
342 [out] UINT *pnIdSelected
343 );
344 HRESULT SetSelection(
345 [in] UINT nIdSelect,
346 [unique,in] LPCGUID pguidEventContext
347 );
348}
349
350[
351 pointer_default(unique),
352 nonextensible,
353 uuid(df45aeea-b74a-4b6b-afad-2366b6aa012e),
354 local,
355 object
356]
357interface IAudioMute : IUnknown
358{
359 HRESULT SetMute(
360 [in] BOOL bMute,
361 [unique,in] LPCGUID pguidEventContext
362 );
363 HRESULT GetMute(
364 [out] BOOL *pbMute
365 );
366}
367
368[
369 pointer_default(unique),
370 nonextensible,
371 uuid(a2b1a1d9-4db3-425d-a2b2-bd335cb3e2e5),
372 local,
373 object
374]
375interface IAudioBass : IPerChannelDbLevel
376{
377 /* Empty */
378}
379
380[
381 pointer_default(unique),
382 nonextensible,
383 uuid(5e54b6d7-b44b-40d9-9a9e-e691d9ce6edf),
384 local,
385 object
386]
387interface IAudioMidRange : IPerChannelDbLevel
388{
389 /* Empty */
390}
391
392[
393 pointer_default(unique),
394 nonextensible,
395 uuid(0a717812-694e-4907-b74b-bafa5cfdca7b),
396 local,
397 object
398]
399interface IAudioTreble : IPerChannelDbLevel
400{
401 /* Empty */
402}
403
404[
405 pointer_default(unique),
406 nonextensible,
407 uuid(85401fd4-6de4-4b9d-9869-2d6753a82f3c),
408 local,
409 object
410]
411interface IAudioAutoGainControl : IUnknown
412{
413 HRESULT GetEnabled(
414 [in] BOOL bEnabled,
415 [unique,in] LPCGUID pguidEventContext
416 );
417 HRESULT GetMute(
418 [out] BOOL *pbEnabled
419 );
420}
421
422[
423 pointer_default(unique),
424 nonextensible,
425 uuid(dd79923c-0599-45e0-b8b6-c8df7db6e796),
426 local,
427 object
428]
429interface IAudioPeakMeter : IUnknown
430{
431 HRESULT GetChannelCount(
432 [out] UINT *pcChannels
433 );
434 HRESULT GetLevel(
435 [in] UINT nChannel,
436 [out] float *pfLevel
437 );
438}
439
440[
441 pointer_default(unique),
442 nonextensible,
443 uuid(3b22bcbf-2586-4af0-8583-205d391b807c),
444 local,
445 object
446]
447interface IDeviceSpecificProperty : IUnknown
448{
449 HRESULT GetType(
450 [out] VARTYPE *pVType
451 );
452 HRESULT GetValue(
453 [out] VARTYPE *pvType,
454 [out,in] DWORD *pcbValue
455 );
456 HRESULT SetValue(
457 [in] void *pvValue,
458 [in] DWORD cbValue,
459 [in] LPCGUID pguidEventContext
460 );
461 HRESULT Get4BRange(
462 [out] LONG *plMin,
463 [out] LONG *plMax,
464 [out] LONG *plStepping
465 );
466}
467
468[
469 pointer_default(unique),
470 nonextensible,
471 uuid(3cb4a69d-bb6f-4d2b-95b7-452d2c155db5),
472 local,
473 object
474]
475interface IKsFormatSupport : IUnknown
476{
477 HRESULT IsFormatSupported(
478 [size_is(cbFormat),in] PKSDATAFORMAT pKsFormat,
479 [in] DWORD cbFormat,
480 [out] BOOL *pbSupported
481 );
482 HRESULT GetDevicePreferredFormat(
483 [out] PKSDATAFORMAT *ppKsFormat
484 );
485}
486
487[
488 pointer_default(unique),
489 nonextensible,
490 uuid(4509f757-2d46-4637-8e62-ce7db944f57b),
491 local,
492 object
493]
494interface IKsJackDescription : IUnknown
495{
496 HRESULT GetJackCount(
497 [out] UINT *pcJacks
498 );
499 HRESULT GetJackDescription(
500 [in] UINT nJack,
501 [out] KSJACK_DESCRIPTION *pDescription
502 );
503}
504
505[
506 pointer_default(unique),
507 nonextensible,
508 uuid(478f3a9b-e0c9-4827-9228-6f5505ffe76a),
509 local,
510 object
511]
512interface IKsJackDescription2 : IUnknown
513{
514 HRESULT GetJackCount(
515 [out] UINT *pcJacks
516 );
517 HRESULT GetJackDescription2(
518 [in] UINT nJack,
519 [out] KSJACK_DESCRIPTION2 *pDescription2
520 );
521}
522
523[
524 pointer_default(unique),
525 nonextensible,
526 uuid(d9bd72ed-290f-4581-9ff3-61027a8fe532),
527 local,
528 object
529]
530interface IKsJackSinkInformation : IUnknown
531{
532 HRESULT GetJackSinkInformation(
533 [out] KSJACK_SINK_INFORMATION *pJackSinkInformation
534 );
535}
536
537[
538 pointer_default(unique),
539 nonextensible,
540 uuid(6daa848c-5eb0-45cc-aea5-998a2cda1ffb),
541 local,
542 object
543]
544interface IPartsList : IUnknown
545{
546 HRESULT GetCount(
547 [out] UINT *pCount
548 );
549 HRESULT GetPart(
550 [in] UINT nIndex,
551 [out] IPart **ppPart
552 );
553}
554
555[
556 pointer_default(unique),
557 nonextensible,
558 uuid(ae2de0e4-5bca-4f2d-aa46-5d13f8fdb3a9),
559 local,
560 object
561]
562interface IPart : IUnknown
563{
564 HRESULT GetName(
565 [out] LPWSTR *ppwstrName
566 );
567 HRESULT GetLocalId(
568 [out] UINT *pnId
569 );
570 HRESULT GetGlobalId(
571 [out] LPWSTR *ppwstrGlobalId
572 );
573 HRESULT GetPartType(
574 [out] PartType *pPartType
575 );
576 HRESULT GetSubType(
577 [out] GUID *pSubType
578 );
579 HRESULT GetControlInterfaceCount(
580 [out] UINT *pCount
581 );
582 HRESULT GetControlInterface(
583 [in] UINT nIndex,
584 [out] IControlInterface **ppInterfaceDesc
585 );
586 HRESULT EnumPartsIncoming(
587 [out] IPartsList **ppParts
588 );
589 HRESULT EnumPartsOutgoing(
590 [out] IPartsList **ppParts
591 );
592 HRESULT GetTopologyObjects(
593 [out] IDeviceTopology **ppTopology
594 );
595 HRESULT Activate(
596 [in] DWORD dwClsContext,
597 [in] REFIID refiid,
598 [iid_is(refiid),out] void **ppvObject
599 );
600 HRESULT RegisterControlChangeCallback(
601 [in] REFGUID riid,
602 [in] IControlChangeNotify *pNotify
603 );
604 HRESULT UnregisterControlChangeCallback(
605 [in] IControlChangeNotify *pNotify
606 );
607};
608
609[
610 pointer_default(unique),
611 nonextensible,
612 uuid(9c2c4058-23f5-41de-877a-df3af236a09e),
613 local,
614 object
615]
616interface IConnector : IUnknown
617{
618 HRESULT GetType(
619 [out] ConnectorType *pType
620 );
621 HRESULT GetDataFlow(
622 [out] DataFlow *pFlow
623 );
624 HRESULT ConnectTo(
625 [in] IConnector *pConnectTo
626 );
627 HRESULT Disconnect(void);
628 HRESULT IsConnected(
629 [out] BOOL *pbConnected
630 );
631 HRESULT GetConnectedTo(
632 [out] IConnector **ppConTo
633 );
634 HRESULT GetConnectorIdConnectedTo(
635 [out] LPWSTR *ppwstrConnectorId
636 );
637 HRESULT GetDeviceIdConnectedTo(
638 [out] LPWSTR *ppwstrDeviceId
639 );
640}
641
642[
643 pointer_default(unique),
644 nonextensible,
645 uuid(82149a85-dba6-4487-86bb-ea8f7fefcc71),
646 local,
647 object
648]
649interface ISubUnit: IUnknown
650{
651 /* Empty IUnknown interface.. */
652}
653
654[
655 pointer_default(unique),
656 nonextensible,
657 uuid(45d37c3f-5140-444a-ae24-400789f3cbf3),
658 local,
659 object
660]
661interface IControlInterface : IUnknown
662{
663 HRESULT GetName(
664 [out] LPWSTR *ppwstrName
665 );
666 HRESULT GetIID(
667 [out] GUID *pIID
668 );
669}
670
671[
672 pointer_default(unique),
673 nonextensible,
674 uuid(a09513ed-c709-4d21-bd7b-5f34c47f3947),
675 local,
676 object
677]
678interface IControlChangeNotify : IUnknown
679{
680 HRESULT OnNotify(
681 [in] DWORD dwSenderProcessId,
682 [in] LPCGUID ppguidEventContext
683 );
684}
685
686[
687 pointer_default(unique),
688 nonextensible,
689 uuid(2a07407e-6497-4a18-9787-32f79bd0d98f),
690 local,
691 object
692]
693interface IDeviceTopology : IUnknown
694{
695 HRESULT GetConnectorCount(
696 [out] UINT *pCount
697 );
698 HRESULT GetConnector(
699 [in] UINT nIndex,
700 [out] IConnector **ppConnector
701 );
702 HRESULT GetSubunitCount(
703 [out] UINT *pCount
704 );
705 HRESULT GetSubunit(
706 [in] UINT nIndex,
707 [out] ISubUnit **ppConnector
708 );
709 HRESULT GetPartById(
710 [in] UINT nId,
711 [out] IPart **ppPart
712 );
713 HRESULT GetDeviceId(
714 [out] LPWSTR *ppwstrDeviceId
715 );
716 HRESULT GetSignalPath(
717 [in] IPart *pIPartFrom,
718 [in] IPart *pIPartTo,
719 [in] BOOL bRejectMixedPaths,
720 [out] IPartsList **ppParts
721 );
722}
723
724[
725 uuid(51b9a01d-8181-4363-b59c-e678f476dd0e),
726 version(1.0)
727]
728library DevTopologyLib
729{
730 [
731 uuid(1df639d0-5ec1-47aa-9379-828dc1aa8c59),
732 ]
733 coclass DeviceTopology
734 {
735 interface IDeviceTopology;
736 }
737}
CD3D10_BUFFER_DESC D3D10_BUFFER_DESC cpp_quote(" ~CD3D10_BUFFER_DESC() {}") operator const D3D10_BUFFER_DESC &() const
Definition: d3d10.idl:491