357 lines
10 KiB
C
357 lines
10 KiB
C
|
#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
|
|||
|
|