6378e4944c23b1ccb2a32b88a10f8050b68b2735
[reactos.git] / reactos / drivers / wdm / audio / backpln / portcls / version.cpp
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Kernel Streaming
4 * FILE: drivers/wdm/audio/backpln/portcls/version.cpp
5 * PURPOSE: Implements IPortClsVersion interface
6 * PROGRAMMER: Johannes Anderwald
7 */
8
9
10 #include "private.hpp"
11
12
13 class CPortClsVersion : public IPortClsVersion
14 {
15 public:
16 STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
17
18 STDMETHODIMP_(ULONG) AddRef()
19 {
20 InterlockedIncrement(&m_Ref);
21 return m_Ref;
22 }
23 STDMETHODIMP_(ULONG) Release()
24 {
25 InterlockedDecrement(&m_Ref);
26
27 if (!m_Ref)
28 {
29 delete this;
30 return 0;
31 }
32 return m_Ref;
33 }
34
35 IMP_IPortClsVersion;
36
37 CPortClsVersion(IUnknown *OuterUnknown)
38 {
39 m_Ref = 0;
40 }
41 virtual ~CPortClsVersion()
42 {
43
44 }
45
46 protected:
47 LONG m_Ref;
48
49 };
50
51
52
53 //---------------------------------------------------------------
54 // IPortClsVersion interface functions
55 //
56
57 NTSTATUS
58 NTAPI
59 CPortClsVersion::QueryInterface(
60 IN REFIID refiid,
61 OUT PVOID* Output)
62 {
63 if (IsEqualGUIDAligned(refiid, IID_IPortClsVersion) ||
64 IsEqualGUIDAligned(refiid, IID_IUnknown))
65 {
66 *Output = PVOID(PPORTCLSVERSION(this));
67 PUNKNOWN(*Output)->AddRef();
68 return STATUS_SUCCESS;
69 }
70 return STATUS_UNSUCCESSFUL;
71 }
72
73 DWORD
74 NTAPI
75 CPortClsVersion::GetVersion()
76 {
77 return kVersionWinXP_UAAQFE;
78 }
79
80 NTSTATUS NewPortClsVersion(
81 OUT PPORTCLSVERSION * OutVersion)
82 {
83 CPortClsVersion * This = new(NonPagedPool, TAG_PORTCLASS) CPortClsVersion(NULL);
84
85 if (!This)
86 return STATUS_INSUFFICIENT_RESOURCES;
87
88 This->AddRef();
89
90 *OutVersion = (PPORTCLSVERSION)This;
91
92 return STATUS_SUCCESS;
93 }