ReactOS  0.4.13-dev-551-gf37fb1f
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 
22 interface IPart;
23 interface IControlInterface;
24 interface IDeviceTopology;
25 interface IControlChangeNotify;
26 
27 import "oaidl.idl";
28 import "ocidl.idl";
29 import "propidl.idl";
30 
31 cpp_quote("#ifndef E_NOTFOUND")
32 cpp_quote("#define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)")
33 cpp_quote("#endif")
34 
35 cpp_quote("#define DEVTOPO_HARDWARE_INITIATED_EVENTCONTEXT 0x64726148 /* 'draH' */")
36 cpp_quote("DEFINE_GUID(EVENTCONTEXT_VOLUMESLIDER, 0xe2c2e9de, 0x09b1, 0x4b04,0x84,0xe5, 0x07, 0x93, 0x12, 0x25, 0xee, 0x04);")
37 
38 cpp_quote("#define _IKsControl_")
39 cpp_quote("#include <ks.h>")
40 cpp_quote("#include <ksmedia.h>")
41 cpp_quote("#ifndef _KS_")
42 
43 typedef struct {
51 } KSDATAFORMAT;
52 
54 
55 typedef struct
56 {
57  union
58  {
59  struct {
60  GUID Set;
61  ULONG Id;
62  ULONG Flags;
63  };
65  };
66 } KSIDENTIFIER;
67 
71 
72 typedef enum
73 {
87 
88 typedef enum
89 {
106 
107 typedef enum
108 {
114 
115 typedef enum
116 {
122 
123 typedef struct
124 {
133 
135 
136 typedef struct _LUID
137 {
140 } LUID;
141 
142 typedef struct _LUID *PLUID;
143 
144 typedef enum
145 {
149 
151 {
162 
164 {
168 
170 
171 cpp_quote("#endif")
172 
173 typedef enum
174 {
175  In = 0,
177 } DataFlow;
178 
179 typedef enum
180 {
183 } PartType;
184 
185 typedef enum
186 {
193 } ConnectorType;
194 
195 [
197  nonextensible,
198  uuid(28f54685-06fd-11d2-b27a-00a0c9223196),
199  local,
200  object
201 ]
202 interface IKsControl : IUnknown
203 {
206  [in] ULONG PropertyLength,
207  [in,out] void *PropertyData,
208  [in] ULONG DataLength,
210  );
212  [in] PKSMETHOD Method,
213  [in] ULONG MethodLength,
214  [in,out] void *MethodData,
215  [in] ULONG DataLength,
217  );
219  [in] PKSEVENT Event,
220  [in] ULONG EventLength,
221  [in,out] void *EventData,
222  [in] ULONG DataLength,
224  );
225 }
226 
227 [
229  nonextensible,
230  uuid(c2f8e001-f205-4bc9-99bc-c13b1e048ccb),
231  local,
232  object
233 ]
235 {
237  [out] UINT *pcChannels
238  );
240  [in] UINT nChannel,
241  [out] float *pfMinLevelDB,
242  [out] float *pfMaxLevelDB,
243  [out] float *pfStepping
244  );
246  [in] UINT nChannel,
247  [out] float *pfLevelDB
248  );
250  [in] UINT nChannel,
251  [in] float fLevelDB,
252  [in,unique] LPCGUID pguidEventContext
253  );
255  [in] float fLevelDB,
256  [in,unique] LPCGUID pguidEventContext
257  );
259  [size_is(cChannels),in] float *aLevelsDB,
260  [in] ULONG cChannels,
261  [in] LPCGUID pguidEventContext
262  );
263 }
264 
265 [
267  nonextensible,
268  uuid(7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc),
269  local,
270  object
271 ]
273 {
274  /* Empty */
275 }
276 
277 [
279  nonextensible,
280  uuid(bb11c46f-ec28-493c-b88a-5db88062ce98),
281  local,
282  object
283 ]
285 {
287  [in] DWORD dwConfig,
288  [in] LPCGUID pguidEventContext
289  );
291  [in] DWORD dwConfig,
292  [retval,out] DWORD *pdwConfig
293  );
294 }
295 
296 [
298  nonextensible,
299  uuid(7d8b1437-dd53-4350-9c1b-1ee2890bf938),
300  local,
301  object
302 ]
304 {
306  [out] BOOL *pbEnabled
307  );
309  [in] BOOL bEnabled,
310  [in] LPCGUID pguidEventContext
311  );
312 }
313 
314 [
316  nonextensible,
317  uuid(4f03dc02-5e6e-4653-8f72-a030c123d598),
318  local,
319  object
320 ]
322 {
324  [out] UINT *pnIdSelected
325  );
327  [in] UINT nIdSelect,
328  [unique,in] LPCGUID pguidEventContext
329  );
330 }
331 
332 [
334  nonextensible,
335  uuid(bb515f69-94a7-429e-8b9c-271b3f11a3ab),
336  local,
337  object
338 ]
340 {
342  [out] UINT *pnIdSelected
343  );
345  [in] UINT nIdSelect,
346  [unique,in] LPCGUID pguidEventContext
347  );
348 }
349 
350 [
352  nonextensible,
353  uuid(df45aeea-b74a-4b6b-afad-2366b6aa012e),
354  local,
355  object
356 ]
357 interface IAudioMute : IUnknown
358 {
360  [in] BOOL bMute,
361  [unique,in] LPCGUID pguidEventContext
362  );
364  [out] BOOL *pbMute
365  );
366 }
367 
368 [
370  nonextensible,
371  uuid(a2b1a1d9-4db3-425d-a2b2-bd335cb3e2e5),
372  local,
373  object
374 ]
376 {
377  /* Empty */
378 }
379 
380 [
382  nonextensible,
383  uuid(5e54b6d7-b44b-40d9-9a9e-e691d9ce6edf),
384  local,
385  object
386 ]
388 {
389  /* Empty */
390 }
391 
392 [
394  nonextensible,
395  uuid(0a717812-694e-4907-b74b-bafa5cfdca7b),
396  local,
397  object
398 ]
400 {
401  /* Empty */
402 }
403 
404 [
406  nonextensible,
407  uuid(85401fd4-6de4-4b9d-9869-2d6753a82f3c),
408  local,
409  object
410 ]
412 {
414  [in] BOOL bEnabled,
415  [unique,in] LPCGUID pguidEventContext
416  );
418  [out] BOOL *pbEnabled
419  );
420 }
421 
422 [
424  nonextensible,
425  uuid(dd79923c-0599-45e0-b8b6-c8df7db6e796),
426  local,
427  object
428 ]
430 {
432  [out] UINT *pcChannels
433  );
435  [in] UINT nChannel,
436  [out] float *pfLevel
437  );
438 }
439 
440 [
442  nonextensible,
443  uuid(3b22bcbf-2586-4af0-8583-205d391b807c),
444  local,
445  object
446 ]
448 {
450  [out] VARTYPE *pVType
451  );
453  [out] VARTYPE *pvType,
454  [out,in] DWORD *pcbValue
455  );
457  [in] void *pvValue,
458  [in] DWORD cbValue,
459  [in] LPCGUID pguidEventContext
460  );
462  [out] LONG *plMin,
463  [out] LONG *plMax,
464  [out] LONG *plStepping
465  );
466 }
467 
468 [
470  nonextensible,
471  uuid(3cb4a69d-bb6f-4d2b-95b7-452d2c155db5),
472  local,
473  object
474 ]
476 {
478  [size_is(cbFormat),in] PKSDATAFORMAT pKsFormat,
479  [in] DWORD cbFormat,
480  [out] BOOL *pbSupported
481  );
483  [out] PKSDATAFORMAT *ppKsFormat
484  );
485 }
486 
487 [
489  nonextensible,
490  uuid(4509f757-2d46-4637-8e62-ce7db944f57b),
491  local,
492  object
493 ]
495 {
497  [out] UINT *pcJacks
498  );
500  [in] UINT nJack,
501  [out] KSJACK_DESCRIPTION *pDescription
502  );
503 }
504 
505 [
507  nonextensible,
508  uuid(478f3a9b-e0c9-4827-9228-6f5505ffe76a),
509  local,
510  object
511 ]
513 {
515  [out] UINT *pcJacks
516  );
518  [in] UINT nJack,
519  [out] KSJACK_DESCRIPTION2 *pDescription2
520  );
521 }
522 
523 [
525  nonextensible,
526  uuid(d9bd72ed-290f-4581-9ff3-61027a8fe532),
527  local,
528  object
529 ]
531 {
533  [out] KSJACK_SINK_INFORMATION *pJackSinkInformation
534  );
535 }
536 
537 [
539  nonextensible,
540  uuid(6daa848c-5eb0-45cc-aea5-998a2cda1ffb),
541  local,
542  object
543 ]
544 interface IPartsList : IUnknown
545 {
547  [out] UINT *pCount
548  );
550  [in] UINT nIndex,
551  [out] IPart **ppPart
552  );
553 }
554 
555 [
557  nonextensible,
558  uuid(ae2de0e4-5bca-4f2d-aa46-5d13f8fdb3a9),
559  local,
560  object
561 ]
562 interface IPart : IUnknown
563 {
565  [out] LPWSTR *ppwstrName
566  );
568  [out] UINT *pnId
569  );
571  [out] LPWSTR *ppwstrGlobalId
572  );
574  [out] PartType *pPartType
575  );
577  [out] GUID *pSubType
578  );
580  [out] UINT *pCount
581  );
583  [in] UINT nIndex,
584  [out] IControlInterface **ppInterfaceDesc
585  );
587  [out] IPartsList **ppParts
588  );
590  [out] IPartsList **ppParts
591  );
593  [out] IDeviceTopology **ppTopology
594  );
596  [in] DWORD dwClsContext,
597  [in] REFIID refiid,
598  [iid_is(refiid),out] void **ppvObject
599  );
601  [in] REFGUID riid,
602  [in] IControlChangeNotify *pNotify
603  );
605  [in] IControlChangeNotify *pNotify
606  );
607 };
608 
609 [
611  nonextensible,
612  uuid(9c2c4058-23f5-41de-877a-df3af236a09e),
613  local,
614  object
615 ]
616 interface IConnector : IUnknown
617 {
619  [out] ConnectorType *pType
620  );
622  [out] DataFlow *pFlow
623  );
625  [in] IConnector *pConnectTo
626  );
627  HRESULT Disconnect(void);
629  [out] BOOL *pbConnected
630  );
632  [out] IConnector **ppConTo
633  );
635  [out] LPWSTR *ppwstrConnectorId
636  );
638  [out] LPWSTR *ppwstrDeviceId
639  );
640 }
641 
642 [
644  nonextensible,
645  uuid(82149a85-dba6-4487-86bb-ea8f7fefcc71),
646  local,
647  object
648 ]
649 interface ISubUnit: IUnknown
650 {
651  /* Empty IUnknown interface.. */
652 }
653 
654 [
656  nonextensible,
657  uuid(45d37c3f-5140-444a-ae24-400789f3cbf3),
658  local,
659  object
660 ]
662 {
664  [out] LPWSTR *ppwstrName
665  );
666  HRESULT GetIID(
667  [out] GUID *pIID
668  );
669 }
670 
671 [
673  nonextensible,
674  uuid(a09513ed-c709-4d21-bd7b-5f34c47f3947),
675  local,
676  object
677 ]
679 {
681  [in] DWORD dwSenderProcessId,
682  [in] LPCGUID ppguidEventContext
683  );
684 }
685 
686 [
688  nonextensible,
689  uuid(2a07407e-6497-4a18-9787-32f79bd0d98f),
690  local,
691  object
692 ]
694 {
696  [out] UINT *pCount
697  );
699  [in] UINT nIndex,
700  [out] IConnector **ppConnector
701  );
703  [out] UINT *pCount
704  );
706  [in] UINT nIndex,
707  [out] ISubUnit **ppConnector
708  );
710  [in] UINT nId,
711  [out] IPart **ppPart
712  );
714  [out] LPWSTR *ppwstrDeviceId
715  );
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 ]
729 {
730  [
731  uuid(1df639d0-5ec1-47aa-9379-828dc1aa8c59),
732  ]
734  {
735  interface IDeviceTopology;
736  }
737 }
HRESULT GetDataFlow([out] DataFlow *pFlow)
HRESULT GetDeviceIdConnectedTo([out] LPWSTR *ppwstrDeviceId)
HRESULT GetName([out] LPWSTR *ppwstrName)
HRESULT GetValue([out] VARTYPE *pvType, [out, in] DWORD *pcbValue)
#define REFIID
Definition: guiddef.h:113
HRESULT GetEnabled([in] BOOL bEnabled, [unique, in] LPCGUID pguidEventContext)
HRESULT GetLevel([in] UINT nChannel, [out] float *pfLevelDB)
KSIDENTIFIER KSPROPERTY
EPcxGeoLocation GeoLocation
Definition: scsiwmi.h:51
HRESULT EnumPartsIncoming([out] IPartsList **ppParts)
HRESULT GetJackDescription([in] UINT nJack, [out] KSJACK_DESCRIPTION *pDescription)
HRESULT GetTopologyObjects([out] IDeviceTopology **ppTopology)
HRESULT GetJackSinkInformation([out] KSJACK_SINK_INFORMATION *pJackSinkInformation)
LPBATCH_CONTEXT bc
Definition: batch.c:66
HRESULT Disconnect(void)
REFIID riid
Definition: precomp.h:44
HRESULT GetChannelCount([out] UINT *pcChannels)
HRESULT IsConnected([out] BOOL *pbConnected)
EPcxConnectionType
struct _LUID * PLUID
HRESULT GetSignalPath([in] IPart *pIPartFrom, [in] IPart *pIPartTo, [in] BOOL bRejectMixedPaths, [out] IPartsList **ppParts)
KSJACK_DESCRIPTION * PKSJACK_DESCRIPTION
HRESULT GetCount([out] UINT *pCount)
HRESULT GetPartType([out] PartType *pPartType)
static int fd
Definition: io.c:51
EPcxGenLocation GenLocation
KSIDENTIFIER * PKSMETHOD
HRESULT SetSelection([in] UINT nIdSelect, [unique, in] LPCGUID pguidEventContext)
KSIDENTIFIER KSEVENT
KSIDENTIFIER KSMETHOD
HRESULT Get4BRange([out] LONG *plMin, [out] LONG *plMax, [out] LONG *plStepping)
FT_Library library
Definition: cffdrivr.c:654
HRESULT GetEnabled([out] BOOL *pbEnabled)
HRESULT GetPart([in] UINT nIndex, [out] IPart **ppPart)
coclass AMMultiMediaStream cpp_quote("DEFINE_GUID(CLSID_AMDirectDrawStream, 0x49c47ce4, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);") cpp_quote("DEFINE_GUID(CLSID_AMAudioStream
HRESULT GetMute([out] BOOL *pbEnabled)
static BOOL Set
Definition: pageheap.c:10
EPxcPortConnection PortConnection
HRESULT GetSubunit([in] UINT nIndex, [out] ISubUnit **ppConnector)
ConnectorType
DWORD Id
HRESULT SetLevelUniform([in] float fLevelDB, [in, unique] LPCGUID pguidEventContext)
EPcxConnectionType ConnectionType
HRESULT GetConnector([in] UINT nIndex, [out] IConnector **ppConnector)
HRESULT OnNotify([in] DWORD dwSenderProcessId, [in] LPCGUID ppguidEventContext)
HRESULT Activate([in] DWORD dwClsContext, [in] REFIID refiid, [iid_is(refiid), out] void **ppvObject)
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
HRESULT GetIID([out] GUID *pIID)
HRESULT SetLevel([in] UINT nChannel, [in] float fLevelDB, [in, unique] LPCGUID pguidEventContext)
struct _LUID LUID
HRESULT GetControlInterface([in] UINT nIndex, [out] IControlInterface **ppInterfaceDesc)
HRESULT GetPartById([in] UINT nId, [out] IPart **ppPart)
KSIDENTIFIER * PKSPROPERTY
unsigned int BOOL
Definition: ntddk_ex.h:94
long LONG
Definition: pedump.c:60
#define e
Definition: ke_i.h:82
HRESULT SetValue([in] void *pvValue, [in] DWORD cbValue, [in] LPCGUID pguidEventContext)
HRESULT GetConnectorIdConnectedTo([out] LPWSTR *ppwstrConnectorId)
union Alignment_ Alignment
HRESULT GetDevicePreferredFormat([out] PKSDATAFORMAT *ppKsFormat)
HRESULT IsFormatSupported([size_is(cbFormat), in] PKSDATAFORMAT pKsFormat, [in] DWORD cbFormat, [out] BOOL *pbSupported)
struct _tagKSJACK_DESCRIPTION2 * PKSJACK_DESCRIPTION2
static const WCHAR version[]
Definition: asmname.c:64
HRESULT GetName([out] LPWSTR *ppwstrName)
HRESULT SetEnabled([in] BOOL bEnabled, [in] LPCGUID pguidEventContext)
HRESULT UnregisterControlChangeCallback([in] IControlChangeNotify *pNotify)
HRESULT KsProperty([in] PKSPROPERTY Property, [in] ULONG PropertyLength, [in, out] void *PropertyData, [in] ULONG DataLength, [out] ULONG *BytesReturned)
HRESULT GetJackCount([out] UINT *pcJacks)
HRESULT GetControlInterfaceCount([out] UINT *pCount)
HRESULT GetSelection([out] UINT *pnIdSelected)
HRESULT SetChannelConfig([in] DWORD dwConfig, [in] LPCGUID pguidEventContext)
HRESULT GetChannelCount([out] UINT *pcChannels)
int64_t LONGLONG
Definition: typedefs.h:66
HRESULT GetJackCount([out] UINT *pcJacks)
GLfloat f
Definition: glext.h:7540
#define d
Definition: ke_i.h:81
HRESULT GetMute([out] BOOL *pbMute)
__wchar_t WCHAR
Definition: xmlstorage.h:180
DWORD LowPart
LONG HRESULT
Definition: typedefs.h:77
static const struct update_accum a2
Definition: msg.c:586
DWORD COLORREF
Definition: windef.h:285
const GLubyte * c
Definition: glext.h:8905
unsigned short WORD
Definition: ntddk_ex.h:93
static FILE * out
Definition: regtests2xml.c:44
unsigned long DWORD
Definition: ntddk_ex.h:95
HRESULT GetDeviceId([out] LPWSTR *ppwstrDeviceId)
HRESULT GetLocalId([out] UINT *pnId)
HRESULT GetLevel([in] UINT nChannel, [out] float *pfLevel)
HRESULT GetChannelConfig([in] DWORD dwConfig, [retval, out] DWORD *pdwConfig)
unsigned char UCHAR
Definition: xmlstorage.h:181
HRESULT GetSubType([out] GUID *pSubType)
LONG HighPart
HRESULT ConnectTo([in] IConnector *pConnectTo)
PartType
REFIID LPVOID * ppvObject
Definition: precomp.h:44
KSJACK_SINK_CONNECTIONTYPE
HRESULT GetLevelRange([in] UINT nChannel, [out] float *pfMinLevelDB, [out] float *pfMaxLevelDB, [out] float *pfStepping)
HRESULT GetJackDescription2([in] UINT nJack, [out] KSJACK_DESCRIPTION2 *pDescription2)
EPxcPortConnection
#define local
Definition: zutil.h:30
uint32_t cc
Definition: isohybrid.c:75
EPcxGenLocation
HRESULT GetType([out] ConnectorType *pType)
struct _tagKSJACK_SINK_INFORMATION KSJACK_SINK_INFORMATION
HRESULT KsMethod([in] PKSMETHOD Method, [in] ULONG MethodLength, [in, out] void *MethodData, [in] ULONG DataLength, [out] ULONG *BytesReturned)
GLuint in
Definition: glext.h:9616
static unsigned char pointer_default
Definition: parser.tab.c:114
EPcxGeoLocation
unsigned short VARTYPE
Definition: compat.h:1895
_In_ FILTER_INFORMATION_CLASS _In_ ULONG _Out_ PULONG BytesReturned
Definition: fltkernel.h:1716
HRESULT RegisterControlChangeCallback([in] REFGUID riid, [in] IControlChangeNotify *pNotify)
unsigned int UINT
Definition: ndis.h:50
HRESULT KsEvent([in] PKSEVENT Event, [in] ULONG EventLength, [in, out] void *EventData, [in] ULONG DataLength, [out] ULONG *BytesReturned)
unsigned int ULONG
Definition: retypes.h:1
HRESULT GetType([out] VARTYPE *pVType)
HRESULT GetSubunitCount([out] UINT *pCount)
HRESULT SetMute([in] BOOL bMute, [unique, in] LPCGUID pguidEventContext)
HRESULT GetConnectorCount([out] UINT *pCount)
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
WCHAR * LPWSTR
Definition: xmlstorage.h:184
HRESULT GetSelection([out] UINT *pnIdSelected)
HRESULT SetLevelAllChannels([size_is(cChannels), in] float *aLevelsDB, [in] ULONG cChannels, [in] LPCGUID pguidEventContext)
_Must_inspect_result_ _Out_writes_to_ DataLength PHIDP_DATA _Inout_ PULONG DataLength
Definition: hidpi.h:333
struct _tagKSJACK_DESCRIPTION2 KSJACK_DESCRIPTION2
HRESULT EnumPartsOutgoing([out] IPartsList **ppParts)
KSIDENTIFIER * PKSEVENT
DataFlow
HRESULT SetSelection([in] UINT nIdSelect, [unique, in] LPCGUID pguidEventContext)
HRESULT GetConnectedTo([out] IConnector **ppConTo)
KSJACK_SINK_CONNECTIONTYPE ConnType
void * object
Definition: jmemsys.h:48
KSDATAFORMAT * PKSDATAFORMAT
HRESULT GetGlobalId([out] LPWSTR *ppwstrGlobalId)