windows-nt/Source/XPSP1/NT/com/ole32/stg/ref/h/cdocfile.hxx
2020-09-26 16:20:57 +08:00

159 lines
4.7 KiB
C++

//+--------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1991 - 1996
//
// File: cdocfile.hxx
//
// Contents: CDocFile class header
//
// Classes: CDocFile
//
//---------------------------------------------------------------
#ifndef __CDOCFILE_HXX__
#define __CDOCFILE_HXX__
#include "handle.hxx"
#include "entry.hxx"
interface ILockBytes;
class PDocFileIterator;
class CUpdateList;
// CopyDocFileToDocFile flags
#define CDF_NORMAL 0 // Normal copy
#define CDF_EXACT 1 // Exact dir entry match
#define CDF_REMAP 2 // Remap handles
#define CDF_ENTRIESONLY 4 // Don't copy contents
//+--------------------------------------------------------------
//
// Class: CDocFile (df)
//
// Purpose: DocFile object
//
// Interface: See below
//
//---------------------------------------------------------------
class CDocFile : public PEntry
{
public:
inline CDocFile(DFLUID luid, ILockBytes *pilbBase);
inline CDocFile(CMStream *pms,
SID sid,
DFLUID dl,
ILockBytes *pilbBase);
SCODE InitFromEntry(CStgHandle *pstghParent,
CDfName const *dfnName,
BOOL const fCreate);
inline ~CDocFile(void);
void AddRef(void);
inline void DecRef(void);
void Release(void);
SCODE DestroyEntry(CDfName const *dfnName,
BOOL fClean);
SCODE RenameEntry(CDfName const *dfnName,
CDfName const *dfnNewName);
SCODE GetClass(CLSID *pclsid);
SCODE SetClass(REFCLSID clsid);
SCODE GetStateBits(DWORD *pgrfStateBits);
SCODE SetStateBits(DWORD grfStateBits, DWORD grfMask);
SCODE CreateDocFile(CDfName const *pdfnName,
DFLAGS const df,
DFLUID luidSet,
CDocFile **ppdfDocFile);
inline SCODE CreateDocFile(CDfName const *pdfnName,
DFLAGS const df,
DFLUID luidSet,
DWORD const dwType,
CDocFile **ppdfDocFile)
{ UNREFERENCED_PARM(dwType);
return CreateDocFile(pdfnName, df, luidSet, ppdfDocFile); }
SCODE GetDocFile(CDfName const *pdfnName,
DFLAGS const df,
CDocFile **ppdfDocFile);
inline SCODE GetDocFile(CDfName const *pdfnName,
DFLAGS const df,
DWORD const dwType,
CDocFile **ppdfDocFile)
{ UNREFERENCED_PARM(dwType);
return GetDocFile(pdfnName, df, ppdfDocFile); }
inline void ReturnDocFile(CDocFile *pdf);
SCODE CreateStream(CDfName const *pdfnName,
DFLAGS const df,
DFLUID luidSet,
CDirectStream **ppStream);
inline SCODE CreateStream(CDfName const *pdfnName,
DFLAGS const df,
DFLUID luidSet,
DWORD const dwType,
CDirectStream **ppStream)
{ UNREFERENCED_PARM(dwType);
return CreateStream(pdfnName, df, luidSet, ppStream); }
SCODE GetStream(CDfName const *pdfnName,
DFLAGS const df,
CDirectStream **ppStream);
inline SCODE GetStream(CDfName const *pdfnName,
DFLAGS const df,
DWORD const dwType,
CDirectStream **ppStream)
{ UNREFERENCED_PARM(dwType);
return GetStream(pdfnName, df, ppStream); }
inline void ReturnStream(CDirectStream *pstm);
SCODE GetIterator(PDocFileIterator **ppdfi);
SCODE IsEntry(CDfName const *dfnName,
SEntryBuffer *peb);
SCODE DeleteContents(void);
SCODE FindGreaterEntry(CDfName const *pdfnKey,
CDfName *pNextKey,
STATSTGW *pstat);
// PEntry
virtual SCODE GetTime(WHICHTIME wt, TIME_T *ptm);
virtual SCODE SetTime(WHICHTIME wt, TIME_T tm);
// New
SCODE ApplyChanges(CUpdateList &ulChanged);
SCODE CopyTo(CDocFile *pdfTo,
DWORD dwFlags,
SNBW snbExclude);
inline CStgHandle *GetHandle(void);
SCODE ExcludeEntries(CDocFile *pdf, SNBW snbExclude);
private:
LONG _cReferences;
CStgHandle _stgh;
ILockBytes *_pilbBase;
#ifdef _MSC_VER
#pragma warning(disable:4512)
// default assignment operator could not be generated since we have a const
// member variable. This is okay snce we are not using the assignment
// operator anyway.
#endif
};
#ifdef _MSC_VER
#pragma warning(default:4512)
#endif
// Inline methods are in dffuncs.hxx
#endif