// This file declares the IInternetProtocol Interface and Gateway for Python.
// Generated by makegw.py
// ---------------------------------------------------
//
// Interface Declaration

class PyIInternetProtocol : public PyIInternetProtocolRoot
{
public:
	MAKE_PYCOM_CTOR(PyIInternetProtocol);
	static IInternetProtocol *GetI(PyObject *self);
	static PyComTypeObject type;

	// The Python methods
	static PyObject *Read(PyObject *self, PyObject *args);
	static PyObject *Seek(PyObject *self, PyObject *args);
	static PyObject *LockRequest(PyObject *self, PyObject *args);
	static PyObject *UnlockRequest(PyObject *self, PyObject *args);

protected:
	PyIInternetProtocol(IUnknown *pdisp);
	~PyIInternetProtocol();
};
// ---------------------------------------------------
//
// Gateway Declaration

class PyGInternetProtocol : public PyGInternetProtocolRoot, public IInternetProtocol
{
protected:
	PyGInternetProtocol(PyObject *instance) : PyGInternetProtocolRoot(instance) { ; }
	PYGATEWAY_MAKE_SUPPORT2(PyGInternetProtocol, IInternetProtocol, IID_IInternetProtocol, PyGInternetProtocolRoot)

	// IInternetProtocolRoot
	STDMETHOD(Start)(
		LPCWSTR szUrl,
		IInternetProtocolSink __RPC_FAR * pOIProtSink,
		IInternetBindInfo __RPC_FAR * pOIBindInfo,
		DWORD grfPI,
		HANDLE_PTR dwReserved);

	STDMETHOD(Continue)(
		PROTOCOLDATA __RPC_FAR * pProtocolData);

	STDMETHOD(Abort)(
		HRESULT hrReason,
		DWORD dwOptions);

	STDMETHOD(Terminate)(
		DWORD dwOptions);

	STDMETHOD(Suspend)(
		void);

	STDMETHOD(Resume)(
		void);

	// IInternetProtocol
	STDMETHOD(Read)(
		void __RPC_FAR * pv,
		ULONG cb,
		ULONG __RPC_FAR * pcbRead);

	STDMETHOD(Seek)(
		LARGE_INTEGER dlibMove,
		DWORD dwOrigin,
		ULARGE_INTEGER __RPC_FAR * plibNewPosition);

	STDMETHOD(LockRequest)(
		DWORD dwOptions);

	STDMETHOD(UnlockRequest)(
		void);

};
