//+------------------------------------------------------------------------- // // 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 { 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 };