You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
262 lines
8.0 KiB
262 lines
8.0 KiB
/*++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
|
|
Copyright (c) 1999 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
w3srt.h
|
|
|
|
Abstract:
|
|
|
|
Object declarations for the W3Spoof runtime environment.
|
|
|
|
Author:
|
|
|
|
Paul M Midgen (pmidge) 03-November-2000
|
|
|
|
|
|
Revision History:
|
|
|
|
03-November-2000 pmidge
|
|
Created
|
|
|
|
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--*/
|
|
|
|
#ifndef __W3SRT_H__
|
|
#define __W3SRT_H__
|
|
|
|
#include "common.h"
|
|
|
|
typedef class CW3SRuntime RUNTIME;
|
|
typedef class CW3SRuntime* PRUNTIME;
|
|
typedef class CW3SPropertyBag PROPERTYBAG;
|
|
typedef class CW3SPropertyBag* PPROPERTYBAG;
|
|
typedef class CW3SFile FILEOBJ;
|
|
typedef class CW3SFile* PFILEOBJ;
|
|
|
|
#define DISPID_RUNTIME_BASE 0x10000000
|
|
#define DISPID_PROPERTYBAG_BASE 0x20000000
|
|
#define DISPID_FILE_BASE 0x30000000
|
|
|
|
#define DISPID_RUNTIME_GETFILE (DISPID_RUNTIME_BASE + 1)
|
|
|
|
#define DISPID_PROPERTYBAG_GET (DISPID_PROPERTYBAG_BASE + 1)
|
|
#define DISPID_PROPERTYBAG_SET (DISPID_PROPERTYBAG_BASE + 2)
|
|
#define DISPID_PROPERTYBAG_EXPIRES (DISPID_PROPERTYBAG_BASE + 3)
|
|
#define DISPID_PROPERTYBAG_FLUSH (DISPID_PROPERTYBAG_BASE + 4)
|
|
|
|
#define DISPID_FILE_OPEN (DISPID_FILE_BASE + 1)
|
|
#define DISPID_FILE_CLOSE (DISPID_FILE_BASE + 2)
|
|
#define DISPID_FILE_WRITE (DISPID_FILE_BASE + 3)
|
|
#define DISPID_FILE_WRITELINE (DISPID_FILE_BASE + 4)
|
|
#define DISPID_FILE_WRITEBLANKLINE (DISPID_FILE_BASE + 5)
|
|
#define DISPID_FILE_READ (DISPID_FILE_BASE + 6)
|
|
#define DISPID_FILE_READALL (DISPID_FILE_BASE + 7)
|
|
#define DISPID_FILE_ATTRIBUTES (DISPID_FILE_BASE + 8)
|
|
#define DISPID_FILE_SIZE (DISPID_FILE_BASE + 9)
|
|
#define DISPID_FILE_TYPE (DISPID_FILE_BASE + 10)
|
|
#define DISPID_FILE_DATELASTMODIFIED (DISPID_FILE_BASE + 11)
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
extern const IID IID_IW3SpoofRuntime;
|
|
extern const IID IID_IW3SpoofPropertyBag;
|
|
extern const IID IID_IW3SpoofFile;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// W3Spoof Runtime Interface Declarations
|
|
//-----------------------------------------------------------------------------
|
|
interface IW3SpoofPropertyBag : public IDispatch
|
|
{
|
|
virtual HRESULT __stdcall Get(
|
|
/*[in]*/ BSTR Name,
|
|
/*[out, retval]*/ VARIANT* Value
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall Set(
|
|
/*[in]*/ BSTR Name,
|
|
/*[in, optional]*/ VARIANT Value
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall get_Expires(
|
|
/*[propget]*/
|
|
/*[out, retval]*/ VARIANT* Expiry
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall put_Expires(
|
|
/*[propput]*/
|
|
/*[in, optional]*/ VARIANT Expiry
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall Flush(void) PURE;
|
|
};
|
|
|
|
|
|
interface IW3SpoofFile : public IDispatch
|
|
{
|
|
virtual HRESULT __stdcall Open(
|
|
/*[in]*/ BSTR Filename,
|
|
/*[in, optional]*/ VARIANT Mode,
|
|
/*[out, retval]*/ VARIANT* Success
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall Close(void) PURE;
|
|
|
|
virtual HRESULT __stdcall Write(
|
|
/*[in]*/ VARIANT Data,
|
|
/*[out, retval]*/ VARIANT* Success
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall WriteLine(
|
|
/*[in]*/ BSTR Line,
|
|
/*[out, retval]*/ VARIANT* Success
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall WriteBlankLine(
|
|
/*[out, retval]*/ VARIANT* Success
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall Read(
|
|
/*[in]*/ VARIANT Bytes,
|
|
/*[out, retval]*/ VARIANT* Data
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall ReadAll(
|
|
/*[out, retval]*/ VARIANT* Data
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall Attributes(
|
|
/*[out, retval]*/ VARIANT* Attributes
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall Size(
|
|
/*[out, retval]*/ VARIANT* Size
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall Type(
|
|
/*[out, retval]*/ VARIANT* Type
|
|
) PURE;
|
|
|
|
virtual HRESULT __stdcall DateLastModified(
|
|
/*[out, retval]*/ VARIANT* Date
|
|
) PURE;
|
|
};
|
|
|
|
|
|
interface IW3SpoofRuntime : public IUnknown
|
|
{
|
|
virtual HRESULT __stdcall GetFile(IDispatch** ppdisp) PURE;
|
|
virtual HRESULT __stdcall GetPropertyBag(BSTR Name, IW3SpoofPropertyBag** ppbag) PURE;
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// W3Spoof Runtime Object Declarations
|
|
//-----------------------------------------------------------------------------
|
|
class CW3SRuntime : public IW3SpoofRuntime,
|
|
public IDispatch
|
|
{
|
|
public:
|
|
DECLAREIUNKNOWN();
|
|
DECLAREIDISPATCH();
|
|
|
|
public:
|
|
// IW3SpoofRuntime
|
|
HRESULT __stdcall GetFile(IDispatch** ppdisp);
|
|
HRESULT __stdcall GetPropertyBag(BSTR Name, IW3SpoofPropertyBag** ppbag);
|
|
|
|
CW3SRuntime();
|
|
~CW3SRuntime();
|
|
|
|
HRESULT Terminate(void);
|
|
|
|
static HRESULT Create(PRUNTIME* pprt);
|
|
|
|
private:
|
|
HRESULT _Initialize(void);
|
|
|
|
LONG m_cRefs;
|
|
PSTRINGMAP m_propertybags;
|
|
};
|
|
|
|
|
|
class CW3SPropertyBag : public IW3SpoofPropertyBag
|
|
{
|
|
public :
|
|
DECLAREIUNKNOWN();
|
|
DECLAREIDISPATCH();
|
|
|
|
public:
|
|
HRESULT __stdcall Get(BSTR Name, VARIANT* Value);
|
|
HRESULT __stdcall Set(BSTR Name, VARIANT Value);
|
|
HRESULT __stdcall get_Expires(VARIANT* Expiry);
|
|
HRESULT __stdcall put_Expires(VARIANT Expiry);
|
|
HRESULT __stdcall Flush(void);
|
|
|
|
CW3SPropertyBag();
|
|
~CW3SPropertyBag();
|
|
|
|
HRESULT GetBagName(LPWSTR* ppwsz);
|
|
HRESULT Terminate(void);
|
|
|
|
static HRESULT Create(LPWSTR name, PPROPERTYBAG* ppbag);
|
|
|
|
private:
|
|
HRESULT _Initialize(LPWSTR name);
|
|
void _Reset(void);
|
|
BOOL _IsStale(void);
|
|
|
|
LONG m_cRefs;
|
|
LPWSTR m_name;
|
|
BOOL m_stale;
|
|
DWORD m_expiry;
|
|
DWORD m_created;
|
|
PSTRINGMAP m_propertybag;
|
|
};
|
|
|
|
class CW3SFile : public IW3SpoofFile
|
|
{
|
|
public:
|
|
DECLAREIUNKNOWN();
|
|
DECLAREIDISPATCH();
|
|
|
|
public:
|
|
HRESULT __stdcall Open(BSTR Filename, VARIANT Mode, VARIANT* Success);
|
|
HRESULT __stdcall Close(void);
|
|
HRESULT __stdcall Write(VARIANT Data, VARIANT* Success);
|
|
HRESULT __stdcall WriteLine(BSTR Line, VARIANT* Success);
|
|
HRESULT __stdcall WriteBlankLine(VARIANT* Success);
|
|
HRESULT __stdcall Read(VARIANT Bytes, VARIANT* Data);
|
|
HRESULT __stdcall ReadAll(VARIANT* Data);
|
|
HRESULT __stdcall Attributes(VARIANT* Attributes);
|
|
HRESULT __stdcall Size(VARIANT* Size);
|
|
HRESULT __stdcall Type(VARIANT* Type);
|
|
HRESULT __stdcall DateLastModified(VARIANT* Date);
|
|
|
|
CW3SFile();
|
|
~CW3SFile();
|
|
|
|
static HRESULT Create(IW3SpoofFile** ppw3sf);
|
|
|
|
private:
|
|
void _Cleanup(void);
|
|
BOOL _CacheHttpResponse(void);
|
|
|
|
LONG m_cRefs;
|
|
BOOL m_bFileOpened;
|
|
BOOL m_bReadOnly;
|
|
BOOL m_bAsciiData;
|
|
BOOL m_bHttpResponseCached;
|
|
HANDLE m_hFile;
|
|
IWinHttpRequest* m_pWHR;
|
|
VARIANT m_vHttpResponse;
|
|
DWORD m_cHttpBytesRead;
|
|
BHFI m_bhfi;
|
|
};
|
|
|
|
#endif /* __W3SRT_H__ */
|