#ifndef _LM_H #define _LM_H /*++ Copyright (c) 1992 Microsoft Corporation Module Name: logman.h Abstract: Private header file for the cluster registry Author: John Vert (jvert) 15-Dec-1995 Revision History: --*/ // // Define interfaces used by the logger component // // // Well-known Resource Manager IDs // typedef DWORD RMTYPE; //the record type stored in the flags typedef DWORD LSN; typedef HANDLE HLOG; typedef int TRID; typedef HANDLE HXSACTION; typedef enum _RMID { RMPageEnd, // reserved - signifies end of a log page RMBeginChkPt, // reserved - signifies a start chkpoint record RMEndChkPt, // reserved - signifies the end chk point record RMInvalidated, // an invalidated record is marked at mount RMAny, RMRegistryMgr } RMID; typedef enum _TRTYPE { TTDontCare, //log management specific routines use this type TTStartXsaction, TTCommitXsaction, TTAbortXsaction, TTXsactionUnit, TTCompleteXsaction, }TRTYPE; typedef enum _TRSTATE{ XsactionAborted, XsactionCommitted, XsactionUnknown }TRSTATE; #define LOG_MAX_FILENAME_LENGTH MAX_PATH #define NULL_LSN 0 /**** @typedef BOOL (WINAPI *PLOG_GETCHECKPOINT_CALLBACK) | Supplies the routine to be called back in order to obtain a check point file once the log manager is asked to record a checkpoint in the log file. @parm IN LPCWSTR | lpszPath | The path where to create the checkpoint file. @parm IN PVOID | Context| Supplies the checkpoint CallbackContext specified to LogCreate(). @parm IN PVOID | pszFileName | Supplies the name of file to take the checkpt in. @parm OUT TRID | *pChkPtTransaction | Supplies the transaction identifier of the checkpoint. @xref ****/ typedef DWORD (WINAPI *PLOG_GETCHECKPOINT_CALLBACK) ( IN LPCWSTR lpszPath, IN PVOID pContext, IN LPWSTR pszChkPtFile, OUT TRID *pChkPtTransaction ); HLOG LogCreate( IN LPWSTR lpFileName, IN DWORD dwMaxFileSize, IN PLOG_GETCHECKPOINT_CALLBACK CallbackRoutine, IN PVOID pGetChkPtContext, IN BOOL bForceCreate, OPTIONAL OUT LSN *pLastLsn ); DWORD LogClose( IN HLOG LogFile ); DWORD LogCommitSize( IN HLOG hLog, IN RMID ResourceId, IN DWORD dwDataSize ); LSN LogWrite( IN HLOG LogFile, IN TRID TransactionId, IN TRTYPE TransactionType, IN RMID ResourceId, IN RMTYPE ResourceFlags, IN PVOID LogData, IN DWORD DataSize ); LSN LogFlush( IN HLOG LogFile, IN LSN MinLsn ); LSN LogRead( IN HLOG LogFile, IN LSN CurrentLsn, OUT RMID *Resource, OUT RMTYPE *ResourceFlags, OUT TRID *Transaction, OUT TRTYPE *TrType, OUT PVOID LogData, IN OUT DWORD *DataSize ); typedef BOOL (WINAPI *PLOG_SCAN_CALLBACK) ( IN PVOID Context, IN LSN Lsn, IN RMID Resource, IN RMTYPE ResourceFlags, IN TRID Transaction, IN TRTYPE TransactionType, IN const PVOID LogData, IN DWORD DataLength ); typedef BOOL (WINAPI *PLOG_SCANXSACTION_CALLBACK) ( IN PVOID Context, IN LSN Lsn, IN RMID Resource, IN RMTYPE ResourceFlags, IN TRID Transaction, IN const PVOID LogData, IN DWORD DataLength ); DWORD LogScan( IN HLOG LogFile, IN LSN FirstLsn, IN BOOL ScanForward, IN PLOG_SCAN_CALLBACK CallbackRoutine, IN PVOID CallbackContext ); DWORD LogCheckPoint( IN HLOG LogFile, IN BOOL bAllowReset, IN LPCWSTR lpszInChkPtFile, IN DWORD dwChkPtSeq ); DWORD LogReset( IN HLOG LogFile ); DWORD LogGetLastChkPoint( IN HLOG LogFile, IN LPWSTR pszChkPtFileName, OUT TRID *pTransaction, OUT LSN *pChkPtLsn ); DWORD LogGetInfo( IN HLOG hLog, OUT LPWSTR szFileName, OUT LPDWORD pdwCurLogSize, OUT LPDWORD pdwMaxLogSize ); DWORD LogSetInfo( IN HLOG hLog, IN DWORD dwMaxLogSize ); //Local Xsaction related routines DWORD LogFindXsactionState( IN HLOG hLog, IN LSN Lsn, IN TRID TrId, OUT TRSTATE *pTrState ); DWORD LogScanXsaction( IN HLOG hLog, IN LSN StartXsactionLsn, IN TRID StartXsactionId, IN PLOG_SCANXSACTION_CALLBACK CallbackRoutine, IN PVOID pContext ); HXSACTION LogStartXsaction( IN HLOG hLog, IN TRID TrId, IN RMID ResourceId, IN RMTYPE ResourceFlags ); DWORD WINAPI LogCommitXsaction( IN HLOG hLog, IN HXSACTION hXsaction, IN RMTYPE ResourceFlags ); DWORD LogAbortXsaction( IN HLOG hLog, IN HXSACTION TrId, IN RMTYPE ResourceFlags ); LSN LogWriteXsaction( IN HLOG hLog, IN HXSACTION hXsaction, IN RMTYPE ResourceFlags, IN PVOID pLogData, IN DWORD dwDataSize ); //Logmanager initialization/shutdown DWORD LmInitialize(); DWORD LmShutdown(); //Timer Activity Functions- these are generic functions typedef void (WINAPI *PFN_TIMER_CALLBACK)( IN HANDLE hTimer, IN PVOID pContext ); DWORD AddTimerActivity( IN HANDLE hTimer, IN DWORD dwInterval, IN LONG lPeriod, IN PFN_TIMER_CALLBACK pfnTimerCallback, IN PVOID pContext ); DWORD RemoveTimerActivity( IN HANDLE hTimer ); DWORD UnpauseTimerActivity( IN HANDLE hTimer ); DWORD PauseTimerActivity( IN HANDLE hTimer ); #endif //_LM_H