#ifndef _WSBGEN_H #define _WSBGEN_H /*++ Copyright (c) 1996 Microsoft Corporation © 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, ULONGLONG fileUsnJournalId, 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