|
|
#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 <f LogCreate> ****/ 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
|