4 const GUID IID_IDrmPort
;
5 const GUID IID_IDrmPort2
;
18 IDrmPort2Impl
* This
= (IDrmPort2Impl
*)iface
;
20 DPRINT("IDrmPort2_AddRef: This %p\n", This
);
22 return _InterlockedIncrement(&This
->ref
);
30 IDrmPort2Impl
* This
= (IDrmPort2Impl
*)iface
;
32 _InterlockedDecrement(&This
->ref
);
36 ExFreePoolWithTag(This
, TAG_PORTCLASS
);
39 /* Return new reference count */
45 IDrmPort2_fnQueryInterface(
50 IDrmPort2Impl
* This
= (IDrmPort2Impl
*)iface
;
52 if (IsEqualGUIDAligned(refiid
, &IID_IDrmPort
) ||
53 IsEqualGUIDAligned(refiid
, &IID_IDrmPort2
) ||
54 IsEqualGUIDAligned(refiid
, &IID_IUnknown
))
56 *Output
= (PVOID
)&This
->lpVtbl
;
57 _InterlockedIncrement(&This
->ref
);
58 return STATUS_SUCCESS
;
61 DPRINT("IDrmPort2_QueryInterface: This %p unknown iid\n", This
, This
->ref
);
62 return STATUS_UNSUCCESSFUL
;
67 IDrmPort2_fnCreateContentMixed(
69 IN PULONG paContentId
,
71 OUT PULONG pMixedContentId
)
73 return DrmCreateContentMixed(paContentId
, cContentId
, pMixedContentId
);
78 IDrmPort2_fnDestroyContent(
82 return DrmDestroyContent(ContentId
);
87 IDrmPort2_fnForwardContentToFileObject(
90 IN PFILE_OBJECT FileObject
)
92 return DrmForwardContentToFileObject(ContentId
, FileObject
);
97 IDrmPort2_fnForwardContentToInterface(
100 IN PUNKNOWN pUnknown
,
103 return DrmForwardContentToInterface(ContentId
, pUnknown
, NumMethods
);
108 IDrmPort2_fnGetContentRights(
109 IN IDrmPort2
* iface
,
111 OUT PDRMRIGHTS DrmRights
)
113 return DrmGetContentRights(ContentId
, DrmRights
);
118 IDrmPort2_fnAddContentHandlers(
119 IN IDrmPort2
* iface
,
121 IN PVOID
* paHandlers
,
122 IN ULONG NumHandlers
)
124 return DrmAddContentHandlers(ContentId
, paHandlers
, NumHandlers
);
129 IDrmPort2_fnForwardContentToDeviceObject(
130 IN IDrmPort2
* iface
,
133 IN PCDRMFORWARD DrmForward
)
135 return DrmForwardContentToDeviceObject(ContentId
, Reserved
, DrmForward
);
138 static IDrmPort2Vtbl vt_IDrmPort2
=
140 /* IUnknown methods */
141 IDrmPort2_fnQueryInterface
,
144 IDrmPort2_fnCreateContentMixed
,
145 IDrmPort2_fnDestroyContent
,
146 IDrmPort2_fnForwardContentToFileObject
,
147 IDrmPort2_fnForwardContentToInterface
,
148 IDrmPort2_fnGetContentRights
,
149 IDrmPort2_fnAddContentHandlers
,
150 IDrmPort2_fnForwardContentToDeviceObject
155 OUT PDRMPORT2
*OutPort
)
157 IDrmPort2Impl
* This
= ExAllocatePoolWithTag(NonPagedPool
, sizeof(IDrmPort2Impl
), TAG_PORTCLASS
);
159 return STATUS_INSUFFICIENT_RESOURCES
;
161 This
->lpVtbl
= &vt_IDrmPort2
;
164 *OutPort
= (PDRMPORT2
)&This
->lpVtbl
;
165 return STATUS_SUCCESS
;