73 lines
2.9 KiB
C++
73 lines
2.9 KiB
C++
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 2000
|
|
//
|
|
// File: mmcprotocol.h
|
|
//
|
|
// Purpose: Creates a temporary pluggable internet protocol, mmc:
|
|
//
|
|
// History: 14-April-2000 Vivekj added
|
|
//--------------------------------------------------------------------------
|
|
|
|
extern const CLSID CLSID_MMCProtocol;
|
|
|
|
class CMMCProtocol :
|
|
public IInternetProtocol,
|
|
public IInternetProtocolInfo,
|
|
public CComObjectRoot,
|
|
public CComCoClass<CMMCProtocol, &CLSID_MMCProtocol>
|
|
{
|
|
typedef CMMCProtocol ThisClass;
|
|
|
|
public:
|
|
BEGIN_COM_MAP(ThisClass)
|
|
COM_INTERFACE_ENTRY(IInternetProtocol)
|
|
COM_INTERFACE_ENTRY(IInternetProtocolRoot)
|
|
COM_INTERFACE_ENTRY(IInternetProtocolInfo)
|
|
END_COM_MAP()
|
|
|
|
DECLARE_NOT_AGGREGATABLE(ThisClass)
|
|
|
|
DECLARE_MMC_OBJECT_REGISTRATION (
|
|
g_szMmcndmgrDll, // implementing DLL
|
|
CLSID_MMCProtocol , // CLSID
|
|
_T("MMC Plugable Internet Protocol"), // class name
|
|
_T("NODEMGR.MMCProtocol.1"), // ProgID
|
|
_T("NODEMGR.MMCProtocol")) // version-independent ProgID
|
|
|
|
|
|
static SC ScRegisterProtocol();
|
|
static SC ScParseTaskpadURL( LPCWSTR strURL, GUID& guid );
|
|
static SC ScParsePageBreakURL( LPCWSTR strURL, bool& bPageBreak );
|
|
static SC ScGetTaskpadXML( const GUID& guid, std::wstring& strResultData );
|
|
static void ExpandMMCVars(std::wstring& str);
|
|
static void AppendMMCPath(std::wstring& str);
|
|
|
|
// IInternetProtocolRoot interface
|
|
|
|
STDMETHODIMP Start(LPCWSTR szUrl, IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo, DWORD grfPI, HANDLE_PTR dwReserved);
|
|
STDMETHODIMP Continue(PROTOCOLDATA *pProtocolData);
|
|
STDMETHODIMP Abort(HRESULT hrReason, DWORD dwOptions);
|
|
STDMETHODIMP Terminate(DWORD dwOptions);
|
|
STDMETHODIMP Suspend();
|
|
STDMETHODIMP Resume();
|
|
|
|
// IInternetProtocol interface
|
|
|
|
STDMETHODIMP Read(void *pv, ULONG cb, ULONG *pcbRead);
|
|
STDMETHODIMP Seek(LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition);
|
|
STDMETHODIMP LockRequest(DWORD dwOptions);
|
|
STDMETHODIMP UnlockRequest();
|
|
|
|
// IInternetProtocolInfo interface
|
|
STDMETHODIMP ParseUrl( LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwParseFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved);
|
|
STDMETHODIMP CombineUrl(LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl,DWORD dwCombineFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved);
|
|
STDMETHODIMP CompareUrl(LPCWSTR pwzUrl1, LPCWSTR pwzUrl2,DWORD dwCompareFlags);
|
|
STDMETHODIMP QueryInfo( LPCWSTR pwzUrl, QUERYOPTION OueryOption,DWORD dwQueryFlags, LPVOID pBuffer, DWORD cbBuffer, DWORD *pcbBuf, DWORD dwReserved);
|
|
|
|
private:
|
|
std::wstring m_strData; // contents of the specified URL
|
|
size_t m_uiReadOffs; // present read location
|
|
}; |