2025-04-27 07:49:33 -04:00

354 lines
8.2 KiB
C++

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
metasub.hxx
Abstract:
IIS MetaBase declarations for subroutines.
Author:
Michael W. Thomas 32-May-96
Revision History:
--*/
#ifndef _metasub_
#define _metasub_
HRESULT GetObjectFromPath(
OUT CMDBaseObject *&rpboReturn,
IN METADATA_HANDLE hHandle,
IN DWORD dwPermissionNeeded,
IN OUT LPTSTR &strPath,
IN BOOL bUnicode = FALSE);
HRESULT AddObjectToDataBase(
IN METADATA_HANDLE hHandle,
IN LPTSTR strPath,
IN BOOL bUnicode = FALSE);
HRESULT RemoveObjectFromDataBase(IN METADATA_HANDLE hHandle,
IN LPTSTR strPath,
IN BOOL bUnicode = FALSE);
CMDHandle *GetHandleObject(
IN METADATA_HANDLE MetaDataHandle);
BOOL
PermissionsAvailable(
IN CMDBaseObject *pboTest,
IN DWORD dwRequestedPermissions,
IN DWORD dwReadThreshhold
);
HRESULT
AddHandle(
CMDBaseObject *pboAssociated,
DWORD dwRequestedPermissions,
METADATA_HANDLE &rmhNew
);
CMDHandle *
RemoveHandleObject(
IN METADATA_HANDLE hHandle
);
VOID
AddPermissions(
IN CMDBaseObject *pboAffected,
IN DWORD dwRequestedPermissions
);
VOID RemovePermissions(
IN CMDBaseObject *pboAffected,
IN DWORD dwRemovePermissions
);
HRESULT
SaveAllData(
IN BOOL bSetSaveDisallowed,
IN IIS_CRYPTO_STORAGE *pCryptoStorage,
IN PIIS_CRYPTO_BLOB pSessionKeyBlob,
IN LPSTR pszBackupLocation = NULL,
IN METADATA_HANDLE hHandle = METADATA_MASTER_ROOT_HANDLE,
IN BOOL bHaveReadSaveSemaphore = FALSE
);
HRESULT
SaveTree(
IN HANDLE hFileHandle,
IN CMDBaseObject *pboRoot,
IN PBYTE pbLineBuf,
IN BUFFER *pbufParentPath,
IN DWORD dwWriteBufSize,
IN PBYTE pbWriteBuf,
IN OUT PBYTE &pbrNextPtr,
IN IIS_CRYPTO_STORAGE *pCryptoStorage
);
HRESULT
SaveMasterRoot(HANDLE hFileHandle,
PBYTE pbLineBuf,
DWORD dwWriteBufSize,
PBYTE pbWriteBuf,
PBYTE &pbrNextPtr,
IIS_CRYPTO_STORAGE *pCryptoStorage
);
DWORD
MDTypeToRegType(
DWORD dwMDType);
HRESULT
SaveDataObject(HANDLE hFileHandle,
CMDBaseData *pbdSave,
PBYTE pbLineBuf,
DWORD dwWriteBufSize,
PBYTE pbWriteBuf,
PBYTE &pbrNextPtr,
IIS_CRYPTO_STORAGE *pCryptoStorage
);
HRESULT
ReadAllData(LPSTR pszPasswd,
LPSTR pszBackupLocation,
BOOL bHaveReadSaveSemaphore = FALSE
);
BOOL
CheckDigits(LPTSTR pszString);
HRESULT
ReadMetaObject(
IN CMDBaseObject *&cboRead,
IN BUFFER *pbufLine,
IN DWORD dwLineLen,
IN IIS_CRYPTO_STORAGE * pCryptoStorage,
IN BOOL bUnicode);
HRESULT
ReadDataObject(
IN CMDBaseObject *cboAssociated,
IN BUFFER *pbufLine,
IN DWORD dwLineLen,
IN IIS_CRYPTO_STORAGE * pCryptoStorage,
IN BOOL bUnicode
);
HRESULT
FlushWriteBuf(HANDLE hWriteFileHandle,
PBYTE pbWriteBuf,
PBYTE &pbrNextPtr);
HRESULT
WriteLine(HANDLE hWriteFileHandle,
DWORD dwWriteBufSize,
PBYTE pbWriteBuf,
PBYTE pbLineBuf,
PBYTE &pbNextPtr,
DWORD dwLineLen,
BOOL bTerminate);
PBYTE
FindEndOfData(PBYTE pbNextPtr,
PBYTE pbEndReadData,
BOOL bEscapePending);
DWORD
GetLineFromBuffer(PBYTE &pbrNextPtr,
PBYTE &pbrEndReadData,
BUFFER *pbufLine,
DWORD &dwrLineLen,
BOOL &brEscapePending);
HRESULT
GetNextLine(
IN HANDLE hReadFileHandle,
IN OUT PBYTE &pbrEndReadData,
IN BUFFER *pbufRead,
IN OUT BUFFER *pbufLine,
IN OUT DWORD &dwrLineLen,
IN OUT PBYTE &pbrNextPtr);
DWORD
GetLineID(
IN OUT LPTSTR &strCurPtr);
HRESULT
GetWarning(
IN HRESULT hresWarningCode);
HRESULT
InitWorker(BOOL bHaveReadSaveSemaphore,
LPSTR pszPasswd,
LPSTR pszBackupLocation);
HRESULT
TerminateWorker1(
IN BOOL bHaveReadSaveSemaphore
);
VOID
TerminateWorker();
HRESULT
SetStorageSecurityDescriptor();
VOID
ReleaseStorageSecurityDescriptor();
HRESULT
ExtractNameFromPath(
IN OUT LPSTR &strPath,
OUT LPSTR strNameBuffer,
IN BOOL bUnicode = FALSE);
HRESULT
ExtractNameFromPath(
IN OUT LPWSTR *pstrPath,
OUT LPWSTR strNameBuffer);
BOOL
ValidateData(IN PMETADATA_RECORD pmdrData,
IN BOOL bUnicode = FALSE);
BOOL
DataMatch(IN CMDBaseObject *pbdExisting,
IN PMETADATA_RECORD pmdrData,
OUT PBOOL pbError,
IN BOOL bUnicode = FALSE);
VOID
DeleteDataObject(
IN CMDBaseData *pbdDelete);
VOID
DeleteAllRemainingDataObjects();
CMDBaseData *
MakeDataObject(IN PMETADATA_RECORD pmdrMDData,
IN BOOL bUnicode = FALSE);
BOOL
ValidateBackupLocation(LPSTR pszBackupLocation,
BOOL bUnicode);
DWORD
GetBackupNameLen(LPSTR pszBackupName);
DWORD
GetBackupNameLen(LPWSTR pszBackupName);
HRESULT
GetHighestVersion(IN OUT STRAU *pstrauBackupLocation,
OUT DWORD *pdwVersion);
HRESULT CreateBackupFileName(IN LPSTR pszMDBackupLocation,
IN DWORD dwMDVersion,
IN BOOL bUnicode,
IN OUT STRAU *pstrauBackupLocation);
HRESULT SetBackupPath(LPSTR pszBackupPath);
HRESULT
SetGlobalDataFileValues(LPTSTR pszFileName);
HRESULT
SetDataFile();
DWORD
GetObjectPath(CMDBaseObject *pboObject,
BUFFER *pbufPath,
DWORD &rdwStringLen,
CMDBaseObject *pboTopObject,
IN BOOL bUnicode = FALSE);
HRESULT
MakeInsertPathData(STRAU *pstrauData,
LPTSTR pszPath,
LPTSTR pszData,
DWORD *pdwDataLen,
IN BOOL bUnicode = FALSE);
HRESULT
InsertPathIntoData(BUFFER *pbufNewData,
STRAU *pstrData,
PBYTE *ppbNewData,
DWORD *pdwNewDataLen,
CMDBaseData *pbdRetrieve,
METADATA_HANDLE hHandle,
CMDBaseObject *pboDataMetaObject,
IN BOOL bUnicode = FALSE);
HRESULT
MakeTreeCopyWithPath(CMDBaseObject *pboSource,
CMDBaseObject *&rpboNew,
LPSTR pszPath,
IN BOOL bUnicode = FALSE);
HRESULT
MakeTreeCopy(CMDBaseObject *pboSource,
CMDBaseObject *&pboNew,
LPSTR pszName = NULL,
IN BOOL bUnicode = FALSE);
void
AddNewChangeData(CMDHandle *phoDestParentHandle,
CMDBaseObject *pboNew);
HRESULT
CopyTree(CMDHandle *phoDestParentHandle,
CMDBaseObject *pboDest,
CMDBaseObject *pboSource,
BOOL &rbChanged);
void
CheckForNewMetabaseVersion();
BOOL
CheckVersionNumber();
VOID
SkipPathDelimeter(IN OUT LPSTR &rpszPath,
IN BOOL bUnicode = FALSE);
BOOL
IsStringTerminator(IN LPTSTR pszString,
IN BOOL bUnicode = FALSE);
#define IsSecureMetadata(id,att) \
(((DWORD)(att) & METADATA_SECURE) != 0)
HRESULT
InitStorageAndSessionKey(
IN IIS_CRYPTO_STORAGE *pCryptoStorage,
OUT PIIS_CRYPTO_BLOB *ppSessionKeyBlob
);
HRESULT
InitStorageAndSessionKey2(
IN LPSTR pszPasswd,
IN IIS_CRYPTO_STORAGE *pCryptoStorage,
OUT PIIS_CRYPTO_BLOB *ppSessionKeyBlob
);
HRESULT
GetLastHResult();
HRESULT
BackupCertificates (LPCWSTR backupName,PCHAR lpszToPath,PCHAR lpszFromPath);
HRESULT
RestoreCertificates (LPCWSTR backupName,PCHAR lpszFromPath,PCHAR lpszToPath);
#endif