Windows2003-3790/inetcore/urlmon/eapp/ccodeft.hxx
2020-09-30 16:53:55 +02:00

133 lines
3.4 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1995.
//
// File: CCodeFt.hxx
//
// Contents:
//
// Classes:
//
// Functions:
//
// History: 04-29-97 DanpoZ (Danpo Zhang) Created
//
//----------------------------------------------------------------------------
#ifndef _CCODEFT_HXX_
#define _CCODEFT_HXX_
#include <urlmon.h>
#include <urlmki.h>
//+---------------------------------------------------------------------------
//
// Class: CStdZFilter
//
// Purpose: Standard MS Compressor/DeCompressor
// It support deflate and gzip schema
//
// Interface: [support all IDataFilter]
//
// History: 04-29-97 DanpoZ (Danpo Zhang) Created
//
//----------------------------------------------------------------------------
class CStdZFilter : public IDataFilter
{
public:
// IUnknown methods
STDMETHODIMP QueryInterface(REFIID iid, void **ppvObj);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP DoEncode(
DWORD dwFlags,
LONG lInBufferSize,
BYTE* pbInBuffer,
LONG lOutBufferSize,
BYTE* pbOutBuffer,
LONG lInBytesAvailable,
LONG* plInBytesRead,
LONG* plOutBytesWritten,
DWORD dwReserved
);
STDMETHODIMP DoDecode(
DWORD dwFlags,
LONG lInBufferSize,
BYTE* pbInBuffer,
LONG lOutBufferSize,
BYTE* pbOutBuffer,
LONG lInBytesAvailable,
LONG* plInBytesRead,
LONG* plOutBytesWritten,
DWORD dwReserved
);
STDMETHODIMP SetEncodingLevel(DWORD dwEncLevel);
// ctor and dtor
CStdZFilter(ULONG ulSchema);
~CStdZFilter();
// init
HRESULT InitFilter();
private:
CRefCount _CRefs;
void* _pEncodeCtx;
void* _pDecodeCtx;
INT _cEncLevel;
ULONG _ulSchema;
};
//+---------------------------------------------------------------------------
//
// Class: CEncodingFilterFactory
//
// Purpose: Factory class that creates DataFilter
//
// Interface: [support all IEncodingFilterFactory]
// [Creates IDataFilter object]
//
// History: 04-29-97 DanpoZ (Danpo Zhang) Created
//
//----------------------------------------------------------------------------
class CEncodingFilterFactory : public IEncodingFilterFactory
{
public:
// IUnknown methods
STDMETHODIMP QueryInterface(REFIID iid, void **ppvObj);
STDMETHODIMP_(ULONG) AddRef(void);
STDMETHODIMP_(ULONG) Release(void);
STDMETHODIMP FindBestFilter(
LPCWSTR pwzCodeIn,
LPCWSTR pwzCodeOut,
DATAINFO info,
IDataFilter** ppDF
);
STDMETHODIMP GetDefaultFilter(
LPCWSTR pwzCodeIn,
LPCWSTR pwzCodeOut,
IDataFilter** ppDF
);
// ctor and dtor
CEncodingFilterFactory();
~CEncodingFilterFactory();
private:
STDMETHODIMP LookupClsIDFromReg(
LPCWSTR pwzCodeIn,
LPCWSTR pwzCodeOut,
CLSID* pclsid,
DWORD dwFlags
);
private:
CRefCount _CRefs;
};
#endif