FakeFilterMapper2.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:4k
- /*
- * Copyright (C) 2003-2005 Gabest
- * http://www.gabest.org
- *
- * This Program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This Program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Make; see the file COPYING. If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- */
- #pragma once
- #include <atlbase.h>
- class Filter
- {
- public:
- bool fDisabled, fTemporary;
- enum {REGISTERED, EXTERNAL} type;
- // REGISTERED
- CStringW dispname;
- // EXTERNAL
- CString path, name;
- CLSID clsid;
- // props
- CList<GUID> guids, backup;
- enum {PREFERRED, BLOCK, MERIT};
- int iLoadType;
- DWORD dwMerit;
- Filter() {fTemporary = false;}
- Filter(Filter* f)
- {
- fDisabled = f->fDisabled;
- fTemporary = f->fTemporary;
- type = f->type;
- dispname = f->dispname;
- path = f->path;
- name = f->name;
- clsid = f->clsid;
- guids.AddTail(&f->guids);
- backup.AddTail(&f->backup);
- iLoadType = f->iLoadType;
- dwMerit = f->dwMerit;
- }
- };
- /*
- class CFilterMapper2 : protected CUnknown, protected IFilterMapper2
- {
- static bool fInitialized;
- CComPtr<IFilterMapper2> m_pFM2;
- CString m_path;
- protected:
- DECLARE_IUNKNOWN;
- STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void** ppv);
- // IFilterMapper2
-
- STDMETHODIMP CreateCategory(REFCLSID clsidCategory, DWORD dwCategoryMerit, LPCWSTR Description);
- STDMETHODIMP UnregisterFilter(const CLSID* pclsidCategory, const OLECHAR* szInstance, REFCLSID Filter);
- STDMETHODIMP RegisterFilter(REFCLSID clsidFilter, LPCWSTR Name, IMoniker** ppMoniker, const CLSID* pclsidCategory, const OLECHAR* szInstance, const REGFILTER2* prf2);
- STDMETHODIMP EnumMatchingFilters(IEnumMoniker** ppEnum, DWORD dwFlags, BOOL bExactMatch, DWORD dwMerit,
- BOOL bInputNeeded, DWORD cInputTypes, const GUID* pInputTypes, const REGPINMEDIUM* pMedIn, const CLSID* pPinCategoryIn, BOOL bRender,
- BOOL bOutputNeeded, DWORD cOutputTypes, const GUID* pOutputTypes, const REGPINMEDIUM* pMedOut, const CLSID* pPinCategoryOut);
- public:
- CFilterMapper2();
- virtual ~CFilterMapper2();
- static void Init();
- static IFilterMapper2* m_pFilterMapper2;
- CList<Filter*> m_filters;
- void Register(CString path);
- };
- */
- class CFilterMapper2 : protected CUnknown, public IFilterMapper2
- {
- static bool fInitialized;
- CComPtr<IUnknown> m_pFM2;
- CString m_path;
- bool m_fRefCounted, m_fAllowUnreg;
- protected:
- DECLARE_IUNKNOWN;
- STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void** ppv);
- // IFilterMapper2
-
- STDMETHODIMP CreateCategory(REFCLSID clsidCategory, DWORD dwCategoryMerit, LPCWSTR Description);
- STDMETHODIMP UnregisterFilter(const CLSID* pclsidCategory, const OLECHAR* szInstance, REFCLSID Filter);
- STDMETHODIMP RegisterFilter(REFCLSID clsidFilter, LPCWSTR Name, IMoniker** ppMoniker, const CLSID* pclsidCategory, const OLECHAR* szInstance, const REGFILTER2* prf2);
- STDMETHODIMP EnumMatchingFilters(IEnumMoniker** ppEnum, DWORD dwFlags, BOOL bExactMatch, DWORD dwMerit,
- BOOL bInputNeeded, DWORD cInputTypes, const GUID* pInputTypes, const REGPINMEDIUM* pMedIn, const CLSID* pPinCategoryIn, BOOL bRender,
- BOOL bOutputNeeded, DWORD cOutputTypes, const GUID* pOutputTypes, const REGPINMEDIUM* pMedOut, const CLSID* pPinCategoryOut);
- public:
- CFilterMapper2(bool fRefCounted, bool fAllowUnreg = false, LPUNKNOWN pUnkOuter = NULL);
- virtual ~CFilterMapper2();
- void SetInner(IUnknown* pUnk) {m_pFM2 = pUnk;}
- static void Init();
- static IFilterMapper2* m_pFilterMapper2;
- CList<Filter*> m_filters;
- void Register(CString path);
- };