This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/Borland/BCC55/Include/vsof.h

126 lines
3.8 KiB
C

//--vsof.h---------------------------------------------------------------------
//
// Virtual Stream On File interface header file.
//
//
// Copyright (C) Microsoft Corp., 1986-1996. All Rights Reserved.
//
//-----------------------------------------------------------------------------
#ifndef __VSOF_H__
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
#define __VSOF_H__
/* VirtualStreamOnFile (VSOF) */
/*
* Methods and #define's for implementing an OLE 2.0 storage stream
* (as defined in the OLE 2.0 specs) on top of a system file.
*/
#ifdef __cplusplus
extern "C" {
#endif
// Flags unique to VSOF IStream implementation
#define VSOF_CLONEABLE ((ULONG) 0x40000000) // allow stream to be cloned
#define VSOF_UNIQUEFILENAME ((ULONG) 0x80000000) // Want unique temporary file name
//$--HrOpenVirtualStreamOnFile---------------------------------------------------
//
// DESCRIPTION: Opens a virtual (buffered) stream on a file.
//
// INPUT: lpAllocateBuffer -- allocate routine
// lpFreeBuffer -- de-allocation routine
// ulFlags -- IStream interface flags--see notes
// lpszFileName -- file name with complete path
// lpszPrefix -- file name prefix
//
//
// OUTPUT: lppStream -- stream pointer
//
// RETURNS: HRESULT -- NOERROR if successful,
// E_INVALIDARG if bad input,
// E_FAIL otherwise.
//
// ulFlag notes:
//
// Specifying STGM_DELETEONRELEASE makes the file opened a temporary file (It
// will be deleted when the stream is released).
//
// Specifying STGM_SHARE_EXCLUSIVE makes the file accessible by only one application
// at a time.
//
// Specifying STGM_SHARE_DENY_READ makes the file readable by only one application
// at a time.
//
// Specifying STGM_SHARE_DENY_WRITE makes the file writable by only one application
// at a time.
//
// Failing to specify a STGM_SHARE flag makes the file readable and writable
// by mutliple applications at the same time.
//
//-----------------------------------------------------------------------------
STDMETHODIMP HrOpenVirtualStreamOnFile(
IN LPALLOCATEBUFFER lpAllocateBuffer, // allocation routine
IN LPFREEBUFFER lpFreeBuffer, // de-allocation routine
IN ULONG ulFlags, // stream interface flags
IN LPSTR lpszFileName, // file name
IN LPSTR lpszPrefix, // file name prefix
OUT LPSTREAM FAR * lppStream); // pointer to stream
typedef HRESULT (STDMETHODCALLTYPE FAR * LPOPENVIRTUALSTREAMONFILE)
(
LPALLOCATEBUFFER lpAllocateBuffer,
LPFREEBUFFER lpFreeBuffer,
ULONG ulFlags,
LPSTR lpszFileName,
LPSTR lpszPrefix,
LPSTREAM FAR * lppStream
);
// Special virtual stream interface extensions for performance...
// There are certain situations where knowing if the stream has changed can be
// used to make desicions that will improve performance.
//$--VSOF_SetClean-------------------------------------------------------------
//
// DESCRIPTION: Unsets stream dirty flag
//
// INPUT: lpStream -- stream pointer
//
// RETURNS: HRESULT -- NOERROF if successful,
// E_INVALIDARG if bad input.
//
//-----------------------------------------------------------------------------
HRESULT VSOF_SetClean(
IN LPSTREAM lpStream); // stream pointer
//$--VSOF_IsDirty-------------------------------------------------------------
//
// DESCRIPTION: Returns stream dirty flag
//
// INPUT: lpStream -- stream pointer
//
// RETURNS: HRESULT -- NOERROF if successful,
// E_INVALIDARG if bad input.
//
//-----------------------------------------------------------------------------
HRESULT VSOF_IsDirty(
IN LPSTREAM lpStream, // stream pointer
OUT BOOL * pfDirty); // dirty flag pointer
#ifdef WIN32
#define OPENVIRTUALSTREAMONFILE "HrOpenVirtualStreamOnFile"
#endif
#ifdef WIN16
#define OPENVIRTUALSTREAMONFILE "_OPENVIRTUALSTREAMONFILE"
#endif
#ifdef __cplusplus
}
#endif
#pragma option pop /*P_O_Pop*/
#endif //__VSOF_H__