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.
 
 
 
 
 
 

102 lines
3.0 KiB

/*++
Copyright (c) 1997 Microsoft Corporation
Module Name: filemgr.hxx
Abstract:
Manages cache file & directory creation/deletion.
Author:
Adriaan Canter (adriaanc) 04-02-97
Modifications:
Ahsan Kabir (akabir) 25-Sept-97 made minor alterations.
--*/
#ifndef _FILEMGR_HXX
#define _FILEMGR_HXX
class URL_CONTAINER;
/*-----------------------------------------------------------------------------
Base file manager class
---------------------------------------------------------------------------*/
class CFileMgr
{
public:
CFileMgr(MEMMAP_FILE* mmFile, DWORD dwOptions);
~CFileMgr();
virtual BOOL Init();
virtual DWORD GetDirLen(DWORD nKey);
virtual DWORD CreateUniqueFile(LPCSTR UrlName, DWORD ExpectedLength, LPTSTR FileName, LPTSTR Extension,
HANDLE *phfHandle, BOOL fCreatePerUser = FALSE);
virtual BOOL NotifyCommit(DWORD);
virtual BOOL Cleanup();
static BOOL DeleteCache(LPSTR);
static VOID SetFileSize(HANDLE hfHandle, DWORD dwExpectedLength);
virtual BOOL GetDirIndex(LPSTR, LPDWORD);
virtual BOOL GetFilePathFromEntry(URL_FILEMAP_ENTRY*, LPSTR, LPDWORD);
virtual BOOL DeleteOneCachedFile (LPSTR lpszFileName, DWORD dostEntry, DWORD nIndex);
virtual BOOL CreateDirWithSecureName( LPSTR);
protected:
DWORD _cbBasePathLen;
MEMMAP_FILE* _mmFile;
DWORD _dwOptions;
DWORD CreateUniqueFile(LPCSTR UrlName, DWORD ExpectedLength, LPTSTR Path,
LPTSTR FileName, LPTSTR Extension, HANDLE* phfHandle, BOOL fCreatePerUser = FALSE);
DWORD MakeRandomFileName(LPCSTR UrlName,
LPTSTR FileName, LPTSTR Extension);
BOOL MapStoreKey(LPSTR szPath, LPDWORD pcbPath,
LPDWORD dwKey, DWORD dwFlag);
BOOL GetStoreDirectory(LPSTR szPath, LPDWORD pcbPath);
DWORD GetOptions() { return _dwOptions; }
};
/*-----------------------------------------------------------------------------
Secure file manager class
---------------------------------------------------------------------------*/
class CSecFileMgr : public CFileMgr
{
public:
CSecFileMgr(MEMMAP_FILE* mmFile, DWORD dwOptions);
~CSecFileMgr();
BOOL Init();
DWORD GetDirLen(DWORD nKey);
DWORD CreateUniqueFile(LPCSTR UrlName, DWORD ExpectedLength, LPTSTR FileName, LPTSTR Extension,
HANDLE *phfHandle, BOOL fCreatePerUser);
BOOL NotifyCommit(DWORD);
BOOL Cleanup();
BOOL GetDirIndex(LPSTR, LPDWORD);
BOOL GetFilePathFromEntry(URL_FILEMAP_ENTRY*, LPSTR, LPDWORD);
BOOL DeleteOneCachedFile (LPSTR lpszFileName, DWORD dostEntry, DWORD nIndex);
protected:
BOOL CreateRandomDirName(LPSTR);
BOOL CreateAdditionalSubDirectories(DWORD);
BOOL CreateSubDirectory(DWORD);
BOOL FindMinFilesSubDir(DWORD&, DWORD&);
};
#endif // _FILEMGR_HXX