2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Kernel Streaming
4 * FILE: drivers/wdm/audio/backpln/portcls/drm_port.cpp
5 * PURPOSE: portcls drm port object
6 * PROGRAMMER: Johannes Anderwald
11 class CDrmPort2
: public IDrmPort2
14 STDMETHODIMP
QueryInterface( REFIID InterfaceId
, PVOID
* Interface
);
16 STDMETHODIMP_(ULONG
) AddRef()
18 InterlockedIncrement(&m_Ref
);
21 STDMETHODIMP_(ULONG
) Release()
23 InterlockedDecrement(&m_Ref
);
33 CDrmPort2(IUnknown
*OuterUnknown
){}
34 virtual ~CDrmPort2(){}
43 CDrmPort2::QueryInterface(
47 UNICODE_STRING GuidString
;
49 if (IsEqualGUIDAligned(refiid
, IID_IDrmPort
) ||
50 IsEqualGUIDAligned(refiid
, IID_IDrmPort2
) ||
51 IsEqualGUIDAligned(refiid
, IID_IUnknown
))
53 *Output
= PVOID(PUNKNOWN(this));
54 PUNKNOWN(*Output
)->AddRef();
55 return STATUS_SUCCESS
;
58 if (RtlStringFromGUID(refiid
, &GuidString
) == STATUS_SUCCESS
)
60 DPRINT("IDrmPort2_QueryInterface no interface!!! iface %S\n", GuidString
.Buffer
);
61 RtlFreeUnicodeString(&GuidString
);
63 return STATUS_UNSUCCESSFUL
;
68 CDrmPort2::CreateContentMixed(
69 IN PULONG paContentId
,
71 OUT PULONG pMixedContentId
)
73 PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL
);
74 return DrmCreateContentMixed(paContentId
, cContentId
, pMixedContentId
);
79 CDrmPort2::DestroyContent(
82 PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL
);
83 return DrmDestroyContent(ContentId
);
88 CDrmPort2::ForwardContentToFileObject(
90 IN PFILE_OBJECT FileObject
)
92 return DrmForwardContentToFileObject(ContentId
, FileObject
);
97 CDrmPort2::ForwardContentToInterface(
102 PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL
);
103 return DrmForwardContentToInterface(ContentId
, pUnknown
, NumMethods
);
108 CDrmPort2::GetContentRights(
110 OUT PDRMRIGHTS DrmRights
)
112 PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL
);
113 return DrmGetContentRights(ContentId
, DrmRights
);
118 CDrmPort2::AddContentHandlers(
120 IN PVOID
* paHandlers
,
121 IN ULONG NumHandlers
)
123 PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL
);
124 return DrmAddContentHandlers(ContentId
, paHandlers
, NumHandlers
);
129 CDrmPort2::ForwardContentToDeviceObject(
132 IN PCDRMFORWARD DrmForward
)
134 PC_ASSERT_IRQL_EQUAL(PASSIVE_LEVEL
);
135 return DrmForwardContentToDeviceObject(ContentId
, Reserved
, DrmForward
);
140 OUT PDRMPORT2
*OutPort
)
142 CDrmPort2
* This
= new(NonPagedPool
, TAG_PORTCLASS
)CDrmPort2(NULL
);
144 return STATUS_INSUFFICIENT_RESOURCES
;
148 *OutPort
= (PDRMPORT2
)This
;
149 return STATUS_SUCCESS
;