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.
 
 
 
 
 
 

91 lines
2.7 KiB

// msf.h: see "The Multistream File API" for more information
#ifndef __MSF_INCLUDED__
#define __MSF_INCLUDED__
#ifndef TRUE
#define TRUE 1
#define FALSE 0
typedef int BOOL;
#ifdef _DEBUG
#define verify(x) assert(x)
#else
#define verify(x) (x)
#endif
#endif
typedef unsigned short SN; // stream number
typedef long CB; // size (count of bytes)
typedef long OFF; // offset
#define cbNil ((long)-1)
#define snNil ((SN)-1)
typedef long MSF_EC;
enum MSFErrorCodes {
MSF_EC_OK,
MSF_EC_OUT_OF_MEMORY,
MSF_EC_NOT_FOUND,
MSF_EC_FILE_SYSTEM,
MSF_EC_FORMAT,
MSF_EC_MAX
};
#if defined(__cplusplus)
extern "C" {
#endif
// MSFOpen -- open MSF; return MSF* or NULL if error.
// MSFOpenEx -- open MSF with specific page size; return MSF* or NULL if error.
// MSFGetCbPage -- return page size
// MSFGetCbStream -- return size of stream or -1 if stream does not exist
// MSFReadStream -- read stream into pvBuf; return TRUE if successful
// MSFWriteStream -- overwrite part of stream with pvBuf; return TRUE if successful
// MSFReplaceStream -- completely replace entire stream with pvBuf; return TRUE if successful
// MSFAppendStream -- append pvBuf to end of stream; return TRUE if successful
// MSFCommit -- commit all pending changes; return TRUE if successful
// MSFClose -- close MSF; return TRUE if successful
// MSFGetRawBytes -- pump raw data stream into a callback
#ifdef MSF_IMP
#ifdef PDB_LIBRARY
#define MSF_EXPORT2
#else
#define MSF_EXPORT2 __declspec(dllexport)
#endif
#else
#define MSF_EXPORT2 __declspec(dllimport)
#endif
#define MSF_EXPORT
// type of callback arg to MSFGetRawBytes
typedef BOOL (__cdecl *PFNfReadMSFRawBytes)(const void *, long);
class MSF;
MSF_EXPORT2 MSF* MSFOpen(const char *name, BOOL fWrite, MSF_EC* pec);
MSF_EXPORT2 MSF* MSFOpenEx(const char *name, BOOL fWrite, MSF_EC* pec, CB cbPage);
MSF_EXPORT2 CB MSFGetCbPage(MSF* pmsf);
MSF_EXPORT2 CB MSFGetCbStream(MSF* pmsf, SN sn);
MSF_EXPORT SN MSFGetFreeSn(MSF* pmsf);
MSF_EXPORT2 BOOL MSFReadStream(MSF* pmsf, SN sn, void* pvBuf, CB cbBuf);
MSF_EXPORT BOOL MSFReadStream2(MSF* pmsf, SN sn, OFF off, void* pvBuf, CB* pcbBuf);
MSF_EXPORT BOOL MSFWriteStream(MSF* pmsf, SN sn, OFF off, void* pvBuf, CB cbBuf);
MSF_EXPORT BOOL MSFReplaceStream(MSF* pmsf, SN sn, void* pvBuf, CB cbBuf);
MSF_EXPORT BOOL MSFAppendStream(MSF* pmsf, SN sn, void* pvBuf, CB cbBuf);
MSF_EXPORT BOOL MSFTruncateStream(MSF* pmsf, SN sn, CB cb);
MSF_EXPORT BOOL MSFDeleteStream(MSF* pmsf, SN sn);
MSF_EXPORT BOOL MSFCommit(MSF* pmsf);
MSF_EXPORT BOOL MSFPack(MSF* pmsf);
MSF_EXPORT2 BOOL MSFClose(MSF* pmsf);
MSF_EXPORT BOOL MSFGetRawBytes(MSF* pmsf, PFNfReadMSFRawBytes fSnarfRawBytes);
MSF_EXPORT MSF* MSFCreateCopy (MSF* pmsf, const char *pCopyName);
#if defined(__cplusplus)
};
#endif
#endif // __MSF_INCLUDED__