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.
 
 
 
 
 
 

83 lines
2.3 KiB

/*++
Copyright (C) 2000-2001 Microsoft Corporation
Module Name:
RepositoryPackager.h
Abstract:
Recursively packages the contents of the repository directory into a single file,
and unpackages it.
History:
paulall 07/26/00 Created.
a-shawnb 07/27/00 Finished.
--*/
#ifndef __REPOSITORYPACKAGER_H_
#define __REPOSITORYPACKAGER_H_
#define PACKAGE_TYPE_NAMESPACE_START 1
#define PACKAGE_TYPE_NAMESPACE_END 2
#define PACKAGE_TYPE_FILE 3
#define PACKAGE_TYPE_END_OF_FILE 4
typedef struct _PACKAGE_HEADER
{
char szSignature[10];
} PACKAGE_HEADER;
typedef struct _PACKAGE_SPACER
{
DWORD dwSpacerType;
} PACKAGE_SPACER;
typedef struct _PACKAGER_SPACER_NAMESPACE : _PACKAGE_SPACER
{
wchar_t wszNamespaceName[MAX_PATH+1];
} PACKAGE_SPACER_NAMESPACE;
typedef struct _PACKAGER_SPACER_FILE : _PACKAGE_SPACER
{
wchar_t wszFileName[MAX_PATH+1];
DWORD dwFileSize;
} PACKAGE_SPACER_FILE;
class CRepositoryPackager
{
static wchar_t * backupFiles_[];
static wchar_t * repDirectory_;
private:
bool needBackup(const wchar_t*) const;
HRESULT GetRepositoryDirectory(wchar_t wszRepositoryDirectory[MAX_PATH+1]);
HRESULT PackageHeader(HANDLE hFile);
HRESULT PackageAllFiles(HANDLE hFile, const wchar_t *wszRepositoryDirectory);
HRESULT PackageContentsOfDirectory(HANDLE hFile, const wchar_t *wszRepositoryDirectory);
HRESULT PackageDirectory(HANDLE hFile, const wchar_t *wszParentDirectory, wchar_t *wszSubDirectory);
HRESULT PackageFile(HANDLE hFile, const wchar_t *wszParentDirectory, wchar_t *wszFilename);
HRESULT PackageTrailer(HANDLE hFile);
HRESULT UnPackageHeader(HANDLE hFile);
HRESULT UnPackageContentsOfDirectory(HANDLE hFile, const wchar_t *wszRepositoryDirectory);
HRESULT UnPackageDirectory(HANDLE hFile, const wchar_t *wszParentDirectory);
HRESULT UnPackageFile(HANDLE hFile, const wchar_t *wszParentDirectory);
HRESULT DeleteContentsOfDirectory(const wchar_t *wszRepositoryDirectory);
HRESULT PackageDeleteDirectory(const wchar_t *wszParentDirectory, wchar_t *wszSubDirectory);
public:
CRepositoryPackager() {}
~CRepositoryPackager() {}
HRESULT PackageRepository(const wchar_t *wszFilename);
HRESULT UnpackageRepository(const wchar_t *wszFilename);
HRESULT DeleteRepository();
};
#endif // __REPOSITORYPACKAGER_H_