2 * Copyright (C) 2003-2006 Gabest
3 * http://www.gabest.org
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with GNU Make; see the file COPYING. If not, write to
17 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
18 * http://www.gnu.org/copyleft/gpl.html
23 #include "MacrovisionKicker.h"
29 CMacrovisionKicker::CMacrovisionKicker(const TCHAR
* pName
, LPUNKNOWN pUnk
)
30 : CUnknown(pName
, pUnk
)
34 CMacrovisionKicker::~CMacrovisionKicker()
38 void CMacrovisionKicker::SetInner(CComPtr
<IUnknown
> pUnk
)
43 STDMETHODIMP
CMacrovisionKicker::NonDelegatingQueryInterface(REFIID riid
, void** ppv
)
45 if(riid
== __uuidof(IUnknown
))
46 return __super::NonDelegatingQueryInterface(riid
, ppv
);
47 if(riid
== __uuidof(IKsPropertySet
) && CComQIPtr
<IKsPropertySet
>(m_pInner
))
48 return GetInterface((IKsPropertySet
*)this, ppv
);
50 HRESULT hr
= m_pInner
? m_pInner
->QueryInterface(riid
, ppv
) : E_NOINTERFACE
;
52 return SUCCEEDED(hr
) ? hr
: __super::NonDelegatingQueryInterface(riid
, ppv
);
57 STDMETHODIMP
CMacrovisionKicker::Set(REFGUID PropSet
, ULONG Id
, LPVOID pInstanceData
, ULONG InstanceLength
, LPVOID pPropertyData
, ULONG DataLength
)
59 if(CComQIPtr
<IKsPropertySet
> pKsPS
= m_pInner
)
61 if(PropSet
== AM_KSPROPSETID_CopyProt
&& Id
== AM_PROPERTY_COPY_MACROVISION
62 /*&& DataLength == 4 && *(DWORD*)pPropertyData*/)
64 TRACE(_T("Oops, no-no-no, no macrovision please\n"));
68 return pKsPS
->Set(PropSet
, Id
, pInstanceData
, InstanceLength
, pPropertyData
, DataLength
);
74 STDMETHODIMP
CMacrovisionKicker::Get(REFGUID PropSet
, ULONG Id
, LPVOID pInstanceData
, ULONG InstanceLength
, LPVOID pPropertyData
, ULONG DataLength
, ULONG
* pBytesReturned
)
76 if(CComQIPtr
<IKsPropertySet
> pKsPS
= m_pInner
)
78 return pKsPS
->Get(PropSet
, Id
, pInstanceData
, InstanceLength
, pPropertyData
, DataLength
, pBytesReturned
);
84 STDMETHODIMP
CMacrovisionKicker::QuerySupported(REFGUID PropSet
, ULONG Id
, ULONG
* pTypeSupport
)
86 if(CComQIPtr
<IKsPropertySet
> pKsPS
= m_pInner
)
88 return pKsPS
->QuerySupported(PropSet
, Id
, pTypeSupport
);