windows-nt/Source/XPSP1/NT/base/fs/hsm/inc/wsbgen.h

357 lines
10 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
#ifndef _WSBGEN_H
#define _WSBGEN_H
/*++
Copyright (c) 1996 Microsoft Corporation
<EFBFBD> 1998 Seagate Software, Inc. All rights reserved.
Module Name:
wsbgen.h
Abstract:
This module defines very basic WSB functions and defines that are general to WSB
Author:
Michael Lotz [lotz] 12-Apr-1997
Revision History:
--*/
// These macros define the module assignments for the error facilities.
// See also Facility Names, below.
#define WSB_FACILITY_PLATFORM 0x100
#define WSB_FACILITY_RMS 0x101
#define WSB_FACILITY_HSMENG 0x103
#define WSB_FACILITY_JOB 0x104
#define WSB_FACILITY_HSMTSKMGR 0x105
#define WSB_FACILITY_FSA 0x106
#define WSB_FACILITY_GUI 0x10a
#define WSB_FACILITY_MOVER 0x10b
#define WSB_FACILITY_LAUNCH 0x10c
#define WSB_FACILITY_TEST 0x10d
#define WSB_FACILITY_USERLINK 0x10e
#define WSB_FACILITY_CLI 0x10f
// Facility Names
#define WSB_FACILITY_PLATFORM_NAME OLESTR("RsCommon.dll")
#define WSB_FACILITY_RMS_NAME OLESTR("RsSub.dll")
#define WSB_FACILITY_HSMENG_NAME OLESTR("RsEng.dll")
#define WSB_FACILITY_JOB_NAME OLESTR("RsJob.dll")
#define WSB_FACILITY_HSMTSKMGR_NAME OLESTR("RsTask.dll")
#define WSB_FACILITY_FSA_NAME OLESTR("RsFsa.dll")
#define WSB_FACILITY_GUI_NAME OLESTR("RsAdmin.dll")
#define WSB_FACILITY_MOVER_NAME OLESTR("RsMover.dll")
#define WSB_FACILITY_LAUNCH_NAME OLESTR("RsLaunch.exe")
#define WSB_FACILITY_TEST_NAME OLESTR("RsTools.dll")
#define WSB_FACILITY_USERLINK_NAME OLESTR("RsLnk.exe")
#define WSB_FACILITY_CLI_NAME OLESTR("RsCli.dll")
#define WSB_FACILITY_NTDLL_NAME OLESTR("ntdll.dll")
// COM Interface & Library Defintions
#define WSB_COLLECTION_MIN_INDEX 0
#define WSB_COLLECTION_MAX_INDEX 0xfffffffe
#define WSB_MAX_SERVICE_NAME 255
// Guids used to store User and Password for scheduled tasks
// Username {DC2D7CF0-6298-11d1-9F17-00A02488FCDE}
static const GUID GUID_Username =
{ 0xdc2d7cf0, 0x6298, 0x11d1, { 0x9f, 0x17, 0x0, 0xa0, 0x24, 0x88, 0xfc, 0xde } };
// Password {DC2D7CF1-6298-11d1-9F17-00A02488FCDE}
static const GUID GUID_Password =
{ 0xdc2d7cf1, 0x6298, 0x11d1, { 0x9f, 0x17, 0x0, 0xa0, 0x24, 0x88, 0xfc, 0xde } };
// Strings used to register event log categories
#define WSB_SVC_BASE OLESTR("SYSTEM\\CurrentControlSet\\Services")
#define WSB_LOG_BASE OLESTR("SYSTEM\\CurrentControlSet\\Services\\EventLog")
#define WSB_LOG_APP OLESTR("Application")
#define WSB_LOG_SYS OLESTR("System")
#define WSB_LOG_CAT_COUNT OLESTR("CategoryCount")
#define WSB_LOG_CAT_FILE OLESTR("CategoryMessageFile")
#define WSB_LOG_MESSAGE_FILE OLESTR("EventMessageFile")
#define WSB_LOG_TYPES OLESTR("TypesSupported")
#define WSB_LOG_SOURCE_NAME OLESTR("Remote Storage")
#define WSB_LOG_FILTER_NAME OLESTR("RsFilter")
#define WSB_LOG_SVC_CATCOUNT 11
#define WSB_LOG_SVC_CATFILE OLESTR("%SystemRoot%\\System32\\RsCommon.Dll")
#define WSB_LOG_SVC_MSGFILES OLESTR("%SystemRoot%\\System32\\RsCommon.Dll")
//
// Common Functions
// File/Directory
extern WSB_EXPORT HRESULT WsbCreateAllDirectories(OLECHAR* path);
extern WSB_EXPORT HRESULT WsbCreateAllDirectoriesForFile(OLECHAR* path);
extern WSB_EXPORT HRESULT WsbGetWin32PathAsBstr(OLECHAR* path, BSTR* pWin32Path);
extern WSB_EXPORT HRESULT WsbGetPathFromWin32AsBstr(OLECHAR* win32Path, BSTR* pPath);
inline char WsbSign( INT Val ) {
return( Val > 0 ? (char)1 : ( ( Val < 0 ) ? (char)-1 : (char)0 ) );
}
// String & Buffer Copy
extern "C" {
extern WSB_EXPORT HRESULT WsbAllocAndCopyComString(OLECHAR** dest, OLECHAR* src, ULONG bufferSize);
extern WSB_EXPORT HRESULT WsbAllocAndCopyComString2(OLECHAR** dest, OLECHAR* src, ULONG bufferSize, BOOL inOrder);
extern WSB_EXPORT HRESULT WsbGetComBuffer(OLECHAR** dest, ULONG requestedSize, ULONG neededSize, BOOL* pWasAllocated);
extern WSB_EXPORT HRESULT WsbLoadComString(HINSTANCE hInstance, UINT uId, LPOLESTR* pszDest, ULONG ulBufferSize);
extern WSB_EXPORT HRESULT WsbMatchComString(OLECHAR* end, UINT uId, USHORT checks, UINT* idMatch);
}
// Filetime Manipulations
// NOTE: TICKS_PER_MONTH and TICKS_PER_YEAR are just approximations.
#define WSB_FT_TYPES_MAX 7
#define WSB_FT_TICKS_PER_SECOND ((LONGLONG) 10000000)
#define WSB_FT_TICKS_PER_MINUTE ((LONGLONG) ((LONGLONG) 60 * WSB_FT_TICKS_PER_SECOND))
#define WSB_FT_TICKS_PER_HOUR ((LONGLONG) ((LONGLONG) 60 * WSB_FT_TICKS_PER_MINUTE))
#define WSB_FT_TICKS_PER_DAY ((LONGLONG) ((LONGLONG) 24 * WSB_FT_TICKS_PER_HOUR))
#define WSB_FT_TICKS_PER_WEEK ((LONGLONG) ((LONGLONG) 7 * WSB_FT_TICKS_PER_DAY))
#define WSB_FT_TICKS_PER_MONTH ((LONGLONG) ((LONGLONG) 31 * WSB_FT_TICKS_PER_DAY))
#define WSB_FT_TICKS_PER_YEAR ((LONGLONG) ((LONGLONG) 365 * WSB_FT_TICKS_PER_DAY))
extern "C" {
extern WSB_EXPORT FILETIME WsbFtSubFt(FILETIME ft1, FILETIME ft2);
extern WSB_EXPORT SHORT WsbCompareFileTimes(FILETIME ft1, FILETIME ft2, BOOL isRelative, BOOL isNewer);
}
// File name manipulations
extern WSB_EXPORT HRESULT SquashFilepath(WCHAR* pPath, UCHAR* pKey, ULONG keySize);
// Guid Manipulations
// Constant that can be used to determine necessary buffer size in doing
// GUID string operations. This includes the terminating L'\0'.
#define WSB_GUID_STRING_SIZE \
(sizeof(L"{00000000-0000-0000-0000-000000000000}")/sizeof(wchar_t))
extern "C" {
extern WSB_EXPORT int WsbCompareGuid(REFGUID guid1, REFGUID guid2);
extern WSB_EXPORT HRESULT WsbStringFromGuid(REFGUID rguid, OLECHAR* sz);
extern WSB_EXPORT HRESULT WsbGuidFromString(const OLECHAR*, GUID * pguid);
}
// Type Conversion
#define WSB_FT_TO_WCS_ABS_STRLEN 20
#define WSB_VDATE_TO_WCS_ABS_STRLEN 20
extern "C" {
extern WSB_EXPORT HRESULT WsbWCStoFT(OLECHAR* wcs, BOOL* pIsRelative, FILETIME* pTime);
extern WSB_EXPORT HRESULT WsbWCStoLL(OLECHAR* wcs, LONGLONG* pvalue);
extern WSB_EXPORT LONGLONG WsbFTtoLL(FILETIME time);
extern WSB_EXPORT FILETIME WsbLLtoFT(LONGLONG value);
extern WSB_EXPORT HRESULT WsbFTtoWCS(BOOL isRelative, FILETIME time, OLECHAR** wcs, ULONG bufferSize);
extern WSB_EXPORT HRESULT WsbLLtoWCS(LONGLONG value, OLECHAR** wcs, ULONG ulBufferSize);
extern WSB_EXPORT LONGLONG WsbHLtoLL(LONG high, LONG low);
extern WSB_EXPORT void WsbLLtoHL(LONGLONG ll, LONG* pHigh, LONG* pLow);
extern WSB_EXPORT HRESULT WsbDatetoFT(DATE date, LONG ticks, FILETIME* pFt);
extern WSB_EXPORT HRESULT WsbFTtoDate(FILETIME ft, DATE* pDate, LONG* pTicks);
extern WSB_EXPORT HRESULT WsbLocalDateTicktoUTCFT(DATE date, LONG ticks, FILETIME* pFT);
extern WSB_EXPORT HRESULT WsbUTCFTtoLocalDateTick(FILETIME ft, DATE* pDate, LONG* pTicks);
extern WSB_EXPORT HRESULT WsbDateToString(DATE date, OLECHAR** string);
extern WSB_EXPORT HRESULT WsbStringToDate(OLECHAR* string, DATE* date);
}
// Account Helper functions
extern "C" {
extern WSB_EXPORT
HRESULT
WsbGetAccountDomainName(
OLECHAR * szDomainName,
DWORD cSize
);
extern WSB_EXPORT
HRESULT
WsbGetServiceInfo(
IN GUID guidApp,
OUT OLECHAR ** pszServiceName, OPTIONAL
OUT OLECHAR ** pszAccountName OPTIONAL
);
extern WSB_EXPORT
HRESULT
WsbGetServiceTraceDefaults(
IN OLECHAR* serviceName,
IN OLECHAR* traceName,
IN IUnknown* pUnk
);
extern WSB_EXPORT
HRESULT
WsbGetMetaDataPath(
OUT CWsbStringPtr & Path
);
extern WSB_EXPORT
HRESULT
WsbGetComputerName(
OUT CWsbStringPtr & String
);
extern WSB_EXPORT
HRESULT
WsbGetLocalSystemName(
OUT CWsbStringPtr & String
);
}
// WsbSvc.h
extern WSB_EXPORT
HRESULT
WsbCheckService(
IN const OLECHAR * computer,
IN GUID guidApp
);
extern WSB_EXPORT
HRESULT
WsbGetServiceName(
IN const OLECHAR *computer,
IN GUID guidApp,
IN DWORD cSize,
OUT OLECHAR *serviceName
);
extern WSB_EXPORT
HRESULT
WsbGetServiceStatus(
IN const OLECHAR *computer,
IN GUID guidApp,
OUT DWORD *serviceStatus
);
extern WSB_EXPORT HRESULT
WsbRegisterEventLogSource(
IN const WCHAR * LogName,
IN const WCHAR * SourceName,
IN DWORD CategoryCount,
IN const WCHAR * CategoryMsgFile OPTIONAL,
IN const WCHAR * MsgFiles
);
extern WSB_EXPORT HRESULT
WsbUnregisterEventLogSource(
IN const WCHAR * LogName,
IN const WCHAR * SourceName
);
extern WSB_EXPORT HRESULT
WsbUnregisterRsFilter (
BOOL bDisplay
);
extern WSB_EXPORT HRESULT
WsbRegisterRsFilter (
BOOL bDisplay
);
extern WSB_EXPORT
HRESULT
WsbGetServiceId(
OLECHAR* serviceName,
GUID* pGuid
);
extern WSB_EXPORT
HRESULT
WsbCreateServiceId(
OLECHAR* serviceName,
GUID* pGuid
);
extern WSB_EXPORT
HRESULT
WsbConfirmServiceId(
OLECHAR* serviceName,
GUID guidConfirm
);
extern WSB_EXPORT
HRESULT
WsbSetServiceId(
OLECHAR* serviceName,
GUID guid
);
extern WSB_EXPORT
HRESULT
WsbCheckAccess(
WSB_ACCESS_TYPE AccessType
);
extern WSB_EXPORT
HRESULT
WsbCheckUsnJournalForChanges(
OLECHAR* volName,
LONGLONG FileId,
LONGLONG StartUsn,
LONGLONG StopUsn,
BOOL* pChanged
);
extern WSB_EXPORT
HRESULT
WsbMarkUsnSource(
HANDLE changeHandle,
OLECHAR* volName
);
extern WSB_EXPORT
HRESULT
WsbGetUsnFromFileHandle(
HANDLE hFile,
BOOL ForceClose,
LONGLONG* pFileUsn
);
extern WSB_EXPORT
HRESULT
WsbCreateUsnJournal(
OLECHAR* volName,
ULONGLONG usnSize
);
extern WSB_EXPORT
HRESULT
WsbGetResourceString(
ULONG id,
WCHAR **ppString
);
extern WSB_EXPORT
HRESULT
WsbGetUsnJournalId(
OLECHAR* volName,
ULONGLONG* usnId
);
class WSB_EXPORT CWsbSecurityDescriptor : public CSecurityDescriptor
{
public:
HRESULT AllowRid( DWORD Rid, DWORD dwAccessMask );
};
#endif // _WSBGEN_H