sync with trunk (r49238)
[reactos.git] / drivers / wdm / audio / backpln / portcls / miniport_dmus.cpp
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Kernel Streaming
4 * FILE: drivers/wdm/audio/backpln/portcls/miniport_dmus.cpp
5 * PURPOSE: DirectMusic miniport
6 * PROGRAMMER: Johannes Anderwald
7 */
8
9 #include "private.hpp"
10
11 class CMiniportDMus : public IMiniportDMus
12 {
13 public:
14 STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
15
16 STDMETHODIMP_(ULONG) AddRef()
17 {
18 InterlockedIncrement(&m_Ref);
19 return m_Ref;
20 }
21 STDMETHODIMP_(ULONG) Release()
22 {
23 InterlockedDecrement(&m_Ref);
24
25 if (!m_Ref)
26 {
27 delete this;
28 return 0;
29 }
30 return m_Ref;
31 }
32 IMP_IMiniportDMus;
33 CMiniportDMus(IUnknown *OuterUnknown){}
34 virtual ~CMiniportDMus(){}
35
36 protected:
37 LONG m_Ref;
38
39 };
40
41 // IUnknown methods
42
43 NTSTATUS
44 NTAPI
45 CMiniportDMus::QueryInterface(
46 IN REFIID refiid,
47 OUT PVOID* Output)
48 {
49 if (IsEqualGUIDAligned(refiid, IID_IMiniportDMus))
50 {
51 *Output = PVOID(PUNKNOWN(this));
52 PUNKNOWN(*Output)->AddRef();
53 return STATUS_SUCCESS;
54 }
55 return STATUS_UNSUCCESSFUL;
56 }
57
58 // IMiniport methods
59
60 NTSTATUS
61 NTAPI
62 CMiniportDMus::DataRangeIntersection(
63 IN ULONG PinId,
64 IN PKSDATARANGE DataRange,
65 IN PKSDATARANGE MatchingDataRange,
66 IN ULONG OutputBufferLength,
67 OUT PVOID ResultantFormat OPTIONAL,
68 OUT PULONG ResultantFormatLength)
69 {
70 return STATUS_UNSUCCESSFUL;
71 }
72
73 NTSTATUS
74 NTAPI
75 CMiniportDMus::GetDescription(
76 OUT PPCFILTER_DESCRIPTOR *Description)
77 {
78 return STATUS_UNSUCCESSFUL;
79 }
80
81 HRESULT
82 NTAPI
83 CMiniportDMus::Init(
84 IN PUNKNOWN pUnknownAdapter,
85 IN PRESOURCELIST pResourceList,
86 IN PPORTDMUS pPort,
87 OUT PSERVICEGROUP *ppServiceGroup
88 )
89 {
90 return STATUS_UNSUCCESSFUL;
91 }
92
93 HRESULT
94 NTAPI
95 CMiniportDMus::NewStream(
96 OUT PMXF *ppMXF,
97 IN PUNKNOWN pOuterUnknown OPTIONAL,
98 IN POOL_TYPE PoolType,
99 IN ULONG uPinId,
100 IN DMUS_STREAM_TYPE StreamType,
101 IN PKSDATAFORMAT pDataFormat,
102 OUT PSERVICEGROUP *ppServiceGroup,
103 IN PAllocatorMXF pAllocatorMXF,
104 IN PMASTERCLOCK pMasterClock,
105 OUT PULONGLONG puuSchedulePreFetch
106 )
107 {
108 return STATUS_UNSUCCESSFUL;
109 }
110
111 VOID
112 NTAPI
113 CMiniportDMus::Service()
114 {
115
116 }
117
118 NTSTATUS
119 NewMiniportDMusUART(
120 OUT PMINIPORT* OutMiniport,
121 IN REFCLSID ClassId)
122 {
123 CMiniportDMus * This;
124
125 This = new(NonPagedPool, TAG_PORTCLASS)CMiniportDMus(NULL);
126 if (!This)
127 return STATUS_INSUFFICIENT_RESOURCES;
128
129 *OutMiniport = (PMINIPORT)This;
130 This->AddRef();
131
132 return STATUS_SUCCESS;
133 }
134
135