Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

124 lines
3.0 KiB

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1992.
//
// File: expst.hxx
//
// Contents: CExposedStream definition
//
// Classes: CExposedStream
//
// Functions:
//
//--------------------------------------------------------------------------
#ifndef __EXPST_HXX__
#define __EXPST_HXX__
#include <dfmsp.hxx>
#include "lock.hxx"
class CPubStream;
interface ILockBytes;
class CSeekPointer;
//+--------------------------------------------------------------
//
// Class: CExposedStream (est)
//
// Purpose: Public stream interface
//
// Interface: See below
//
//---------------------------------------------------------------
interface CExposedStream: public IStream
{
public:
CExposedStream(void);
SCODE Init(CPubStream *pst,
CSeekPointer *psp);
inline
~CExposedStream(void);
// From IUnknown
STDMETHOD(QueryInterface)(REFIID iid, void **ppvObj);
STDMETHOD_(ULONG,AddRef)(void);
STDMETHOD_(ULONG,Release)(void);
// New methods
STDMETHOD(Read)(VOID HUGEP *pv,
ULONG cb,
ULONG *pcbRead);
STDMETHOD(Write)(VOID const HUGEP *pv,
ULONG cb,
ULONG *pcbWritten);
STDMETHOD(Seek)(LARGE_INTEGER dlibMove,
DWORD dwOrigin,
ULARGE_INTEGER *plibNewPosition);
STDMETHOD(SetSize)(ULARGE_INTEGER cb);
STDMETHOD(CopyTo)(IStream *pstm,
ULARGE_INTEGER cb,
ULARGE_INTEGER *pcbRead,
ULARGE_INTEGER *pcbWritten);
STDMETHOD(Commit)(DWORD grfCommitFlags);
STDMETHOD(Revert)(void);
STDMETHOD(LockRegion)(ULARGE_INTEGER libOffset,
ULARGE_INTEGER cb,
DWORD dwLockType);
STDMETHOD(UnlockRegion)(ULARGE_INTEGER libOffset,
ULARGE_INTEGER cb,
DWORD dwLockType);
STDMETHOD(Stat)(STATSTG *pstatstg, DWORD grfStatFlag);
SCODE Stat(STATSTGW *pstatstg, DWORD grfStatFlag);
STDMETHOD(Clone)(IStream **ppstm);
inline SCODE Validate(void) const;
inline CPubStream *GetPub(void) const;
private:
CPubStream *_pst;
ULONG _ulAccessLockBase;
ULONG _sig;
LONG _cReferences;
CSeekPointer *_psp;
};
#define CEXPOSEDSTREAM_SIG LONGSIG('E', 'X', 'S', 'T')
#define CEXPOSEDSTREAM_SIGDEL LONGSIG('E', 'x', 'S', 't')
//+--------------------------------------------------------------
//
// Member: CExposedStream::Validate, public
//
// Synopsis: Validates the object signature
//
// Returns: Returns STG_E_INVALIDHANDLE for bad signatures
//
//---------------------------------------------------------------
inline SCODE CExposedStream::Validate(void) const
{
return (this == NULL || _sig != CEXPOSEDSTREAM_SIG) ?
STG_E_INVALIDHANDLE : S_OK;
}
//+--------------------------------------------------------------
//
// Member: CExposedStream::GetPub, public
//
// Synopsis: Returns the public
//
//---------------------------------------------------------------
inline CPubStream *CExposedStream::GetPub(void) const
{
return _pst;
}
#endif // #ifndef __EXPST_HXX__