diff --git a/.gitignore b/.gitignore index 8ce12fe7ee7..416de9a9c93 100644 --- a/.gitignore +++ b/.gitignore @@ -108,6 +108,7 @@ dlls/qmgr/qmgr_local_i.c dlls/qmgrprxy/qmgrprxy.h dlls/qmgrprxy/qmgrprxy_i.c dlls/qmgrprxy/qmgrprxy_p.c +dlls/quartz/fil_data.h dlls/quartz/quartz_strmif.h dlls/quartz/quartz_strmif_p.c dlls/rpcrt4/epm.h diff --git a/dlls/quartz/Makefile.in b/dlls/quartz/Makefile.in index 9a4e5118c71..5827d65fa36 100644 --- a/dlls/quartz/Makefile.in +++ b/dlls/quartz/Makefile.in @@ -29,6 +29,7 @@ C_SRCS = \ RC_SRCS = version.rc +IDL_H_SRCS = fil_data.idl IDL_P_SRCS = quartz_strmif.idl IDL_R_SRCS = quartz_strmif.idl diff --git a/dlls/quartz/fil_data.idl b/dlls/quartz/fil_data.idl new file mode 100644 index 00000000000..93cdf1e43dd --- /dev/null +++ b/dlls/quartz/fil_data.idl @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2009 Vitaliy Margolen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; +import "strmif.idl"; +import "unknwn.idl"; + + +/***************************************************************************** + * IAMFilterData interface + * + * Notes: + * - This interface is deprecated and IFilterMapper2 should be used instead. + * - There is no full replacement for IAMFilterData::ParseFilterData short of manually + * parsing out the REGFILTER2 struct from the binary blob. + */ +[ + object, + uuid(97f7c4d4-547b-4a5f-8332-536430ad2e4d), + pointer_default(unique) +] +interface IAMFilterData : IUnknown +{ + typedef [unique] IAMFilterData *LPIAMFILTERDATA; + + HRESULT ParseFilterData( + [in] BYTE * rgbFilterData, + [in] ULONG cb, + [out] BYTE ** prgbRegFilter2); + + HRESULT CreateFilterData( + [in] REGFILTER2 * prf2, + [out] BYTE ** prgbFilterData, + [out] ULONG * pcb); +} diff --git a/dlls/quartz/filtermapper.c b/dlls/quartz/filtermapper.c index 78b66992a4e..7d7599fccb5 100644 --- a/dlls/quartz/filtermapper.c +++ b/dlls/quartz/filtermapper.c @@ -36,6 +36,8 @@ #include "strmif.h" #include "wine/unicode.h" #include "uuids.h" +#include "initguid.h" +#include "fil_data.h" #include "wine/debug.h" @@ -43,49 +45,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(quartz); #define ARRAYSIZE(array) (sizeof(array)/sizeof((array)[0])) -/* Unexposed IAMFilterData interface */ -typedef struct IAMFilterData IAMFilterData; - -typedef struct IAMFilterDataVtbl -{ - BEGIN_INTERFACE - - /*** IUnknown methods ***/ - HRESULT (STDMETHODCALLTYPE *QueryInterface)( - IAMFilterData *This, - REFIID riid, - void **ppvObject); - - ULONG (STDMETHODCALLTYPE *AddRef)( - IAMFilterData *This); - - ULONG (STDMETHODCALLTYPE *Release)( - IAMFilterData *This); - - /*** IAMFilterData methods ***/ - HRESULT (STDMETHODCALLTYPE *ParseFilterData)( - IAMFilterData *This, - BYTE *pData, - ULONG cb, - BYTE **ppRegFilter2); - - HRESULT (STDMETHODCALLTYPE *CreateFilterData)( - IAMFilterData* This, - REGFILTER2 *prf2, - BYTE **pRegFilterData, - ULONG *pcb); - - END_INTERFACE -} IAMFilterDataVtbl; -struct IAMFilterData -{ - const IAMFilterDataVtbl *lpVtbl; -}; -static const GUID IID_IAMFilterData = { - 0x97f7c4d4, 0x547b, 0x4a5f, { 0x83,0x32, 0x53,0x64,0x30,0xad,0x2e,0x4d } -}; - - typedef struct FilterMapper3Impl { IFilterMapper3 IFilterMapper3_iface;