Leaked source code of windows server 2003
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

/*++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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__ */