#ifndef ISAMAPI_H #define ISAMAPI_H #define ISAMAPI typedef struct { JET_COLUMNID columnidSrc; JET_COLUMNID columnidDest; } CPCOL; #define columnidBookmark 0xFFFFFFFF typedef struct tagSTATUSINFO { JET_SESID sesid; JET_PFNSTATUS pfnStatus; // address of status notification function JET_SNP snp; // status notification process JET_SNT snt; // status notification type ULONG cunitTotal; // total units of work ULONG cunitDone; // units of work completed ULONG cunitPerProgression; // units of work per unit of progression // Detailed statistics: BOOL fDumpStats; // dump compaction statistics (DEBUG only) struct _iobuf *hfCompactStats; // handle to compaction statistics file ULONG timerInitDB; ULONG timerCopyDB; ULONG timerInitTable; ULONG timerCopyRecords; ULONG timerRebuildIndexes; ULONG timerCopyTable; ULONG cDBPagesOwned; // OwnExt of source DB ULONG cDBPagesAvail; // AvailExt of source DB char *szTableName; // Name of current table ULONG cTableFixedVarColumns; // Number of fixed and variable columns in current dest. table ULONG cTableTaggedColumns; // Number of tagged columns in current dest. table ULONG cTableInitialPages; // Pages initially allocated to current dest. table ULONG cTablePagesOwned; // OwnExt of current source table ULONG cTablePagesAvail; // AvailExt of current source table ULONG cbRawData; // Bytes of non-LV raw data copied ULONG cbRawDataLV; // Bytes of LV raw data copied ULONG cLeafPagesTraversed; // Number of leaf pages traversed in current source table ULONG cLVPagesTraversed; // Number of long value pages traversed in current source table ULONG cNCIndexes; // Number of non-clustered indexes in current source table } STATUSINFO; /* Typedefs for dispatched APIs. */ /* Please keep in alphabetical order */ typedef ERR ISAMAPI ISAMFNAttachDatabase(JET_VSESID sesid, const char *szFileName, JET_GRBIT grbit ); typedef ERR ISAMAPI ISAMFNBeginExternalBackup( JET_GRBIT grbit ); typedef ERR ISAMAPI ISAMFNBackup( const char *szBackupPath, JET_GRBIT grbit, JET_PFNSTATUS pfnStatus ); typedef ERR ISAMAPI ISAMFNBeginSession(JET_VSESID *pvsesid); typedef ERR ISAMAPI ISAMFNInvalidateCursors( JET_VSESID sesid ); typedef ERR ISAMAPI ISAMFNCloseFile( JET_HANDLE hfFile ); typedef ERR ISAMAPI ISAMFNGetSessionInfo( JET_VSESID sesid, JET_GRBIT *pgrbit ); typedef ERR ISAMAPI ISAMFNSetSessionInfo( JET_VSESID sesid, JET_GRBIT grbit ); typedef ERR ISAMAPI ISAMFNBeginTransaction(JET_VSESID sesid); typedef ERR ISAMAPI ISAMFNCommitTransaction(JET_VSESID sesid, JET_GRBIT grbit); typedef ERR ISAMAPI ISAMFNCopyRecords(JET_VSESID sesid, JET_TABLEID tableidSrc, JET_TABLEID tableidDest, CPCOL *rgcpcol, unsigned long ccpcolMax, long crecMax, unsigned long *pcrowCopy, unsigned long *precidLast, JET_COLUMNID *mpcolumnidcolumnidTagged, STATUSINFO *pstatus ); typedef ERR ISAMAPI ISAMFNCreateDatabase(JET_VSESID sesid, const char *szDatabase, const char *szConnect, JET_DBID *pdbid, JET_GRBIT grbit); typedef ERR ISAMAPI ISAMFNDetachDatabase(JET_VSESID sesid, const char *szFileName); typedef ERR ISAMAPI ISAMFNEndExternalBackup( void ); typedef ERR ISAMAPI ISAMFNEndSession(JET_VSESID sesid, JET_GRBIT grbit); typedef ERR ISAMAPI ISAMFNExternalRestore( char *szCheckpointFilePath, char *szLogPath, JET_RSTMAP *rgstmap, int crstfilemap, char *szBackupLogPath, long genLow, long genHigh, JET_PFNSTATUS pfn ); typedef ERR ISAMAPI ISAMFNGetAttachInfo( void *pv, unsigned long cbMax, unsigned long *pcbActual ); typedef ERR ISAMAPI ISAMFNGetLogInfo( void *pv, unsigned long cbMax, unsigned long *pcbActual ); typedef ERR ISAMAPI ISAMFNIdle(JET_VSESID sesid, JET_GRBIT grbit); typedef ERR ISAMAPI ISAMFNIndexRecordCount(JET_SESID sesid, JET_TABLEID tableid, unsigned long *pcrec, unsigned long crecMax); typedef ERR ISAMAPI ISAMFNInit( unsigned long itib ); typedef ERR ISAMAPI ISAMFNLoggingOn(JET_VSESID sesid); typedef ERR ISAMAPI ISAMFNLoggingOff(JET_VSESID sesid); typedef ERR ISAMAPI ISAMFNOpenDatabase(JET_VSESID sesid, const char *szDatabase, const char *szConnect, JET_DBID *pdbid, JET_GRBIT grbit); typedef ERR ISAMAPI ISAMFNOpenFile( const char *szFileName, JET_HANDLE *phfFile, unsigned long *pulFileSizeLow, unsigned long *pulFileSizeHigh ); typedef ERR ISAMAPI ISAMFNOpenTempTable( JET_VSESID sesid, const JET_COLUMNDEF *prgcolumndef, unsigned long ccolumn, unsigned long langid, JET_GRBIT grbit, JET_TABLEID *ptableid, JET_COLUMNID *prgcolumnid ); typedef ERR ISAMAPI ISAMFNReadFile( JET_HANDLE hfFile, void *pv, unsigned long cbMax, unsigned long *pcbActual ); typedef ERR ISAMAPI ISAMFNRepairDatabase(JET_VSESID sesid, const char *szFilename, JET_PFNSTATUS pfnStatus); typedef ERR ISAMAPI ISAMFNRestore( char *szRestoreFromPath, JET_PFNSTATUS pfn ); typedef ERR ISAMAPI ISAMFNRestore2( char *szRestoreFromPath, char *szDestPath, JET_PFNSTATUS pfn ); typedef ERR ISAMAPI ISAMFNRollback(JET_VSESID sesid, JET_GRBIT grbit); typedef ERR ISAMAPI ISAMFNSetSystemParameter(JET_VSESID sesid, unsigned long paramid, unsigned long l, const void *sz); typedef ERR ISAMAPI ISAMFNSetWaitLogFlush( JET_VSESID sesid, long lmsec ); typedef ERR ISAMAPI ISAMFNResetCounter( JET_SESID sesid, int CounterType ); typedef ERR ISAMAPI ISAMFNGetCounter( JET_SESID sesid, int CounterType, long *plValue ); typedef ERR ISAMAPI ISAMFNSetCommitDefault( JET_VSESID sesid, long lmsec ); typedef ERR ISAMAPI ISAMFNTerm( JET_GRBIT grbit ); typedef ERR ISAMAPI ISAMFNTruncateLog( void ); typedef ERR ISAMAPI FNDeleteFile(const char *szFilename); typedef ERR ISAMAPI ISAMFNCompact( JET_SESID sesid, const char *szDatabaseSrc, const char *szDatabaseDest, JET_PFNSTATUS pfnStatus, JET_CONVERT *pconvert, JET_GRBIT grbit ); typedef ERR ISAMAPI ISAMFNDBUtilities( JET_SESID sesid, JET_DBUTIL *pdbutil ); typedef struct ISAMDEF { ISAMFNAttachDatabase *pfnAttachDatabase; ISAMFNBackup *pfnBackup; ISAMFNBeginSession *pfnBeginSession; ISAMFNBeginTransaction *pfnBeginTransaction; ISAMFNCommitTransaction *pfnCommitTransaction; ISAMFNCreateDatabase *pfnCreateDatabase; ISAMFNDetachDatabase *pfnDetachDatabase; ISAMFNEndSession *pfnEndSession; ISAMFNIdle *pfnIdle; ISAMFNInit *pfnInit; ISAMFNLoggingOn *pfnLoggingOn; ISAMFNLoggingOff *pfnLoggingOff; ISAMFNOpenDatabase *pfnOpenDatabase; ISAMFNOpenTempTable *pfnOpenTempTable; ISAMFNRepairDatabase *pfnRepairDatabase; ISAMFNRestore *pfnRestore; ISAMFNRollback *pfnRollback; ISAMFNSetSystemParameter *pfnSetSystemParameter; ISAMFNTerm *pfnTerm; } ISAMDEF; /* The following ISAM APIs are not dispatched */ typedef ERR ISAMAPI ISAMFNLoad(ISAMDEF * *ppisamdef); /* Declarations for the built-in ISAM which is called directly. */ extern ISAMFNAttachDatabase ErrIsamAttachDatabase; extern ISAMFNBackup ErrIsamBackup; extern ISAMFNBeginSession ErrIsamBeginSession; extern ISAMFNBeginExternalBackup ErrIsamBeginExternalBackup; extern ISAMFNBeginTransaction ErrIsamBeginTransaction; extern ISAMFNCloseFile ErrIsamCloseFile; extern ISAMFNCommitTransaction ErrIsamCommitTransaction; extern ISAMFNCopyRecords ErrIsamCopyRecords; extern ISAMFNCreateDatabase ErrIsamCreateDatabase; extern ISAMFNDetachDatabase ErrIsamDetachDatabase; extern ISAMFNEndExternalBackup ErrIsamEndExternalBackup; extern ISAMFNEndSession ErrIsamEndSession; extern ISAMFNExternalRestore ErrIsamExternalRestore; extern ISAMFNGetAttachInfo ErrIsamGetAttachInfo; extern ISAMFNGetLogInfo ErrIsamGetLogInfo; extern ISAMFNIdle ErrIsamIdle; extern ISAMFNIndexRecordCount ErrIsamIndexRecordCount; extern ISAMFNInit ErrIsamInit; extern ISAMFNLoggingOn ErrIsamLoggingOn; extern ISAMFNLoggingOff ErrIsamLoggingOff; extern ISAMFNOpenDatabase ErrIsamOpenDatabase; extern ISAMFNOpenFile ErrIsamOpenFile; extern ISAMFNOpenTempTable ErrIsamOpenTempTable; extern ISAMFNReadFile ErrIsamReadFile; extern ISAMFNRepairDatabase ErrIsamRepairDatabase; extern ISAMFNRestore ErrIsamRestore; extern ISAMFNRestore2 ErrIsamRestore2; extern ISAMFNRollback ErrIsamRollback; extern ISAMFNSetSessionInfo ErrIsamSetSessionInfo; extern ISAMFNGetSessionInfo ErrIsamGetSessionInfo; extern ISAMFNSetSystemParameter ErrIsamSetSystemParameter; extern ISAMFNSetWaitLogFlush ErrIsamSetWaitLogFlush; extern ISAMFNResetCounter ErrIsamResetCounter; extern ISAMFNGetCounter ErrIsamGetCounter; extern ISAMFNSetCommitDefault ErrIsamSetCommitDefault; extern ISAMFNTerm ErrIsamTerm; extern ISAMFNTruncateLog ErrIsamTruncateLog; extern ISAMFNCompact ErrIsamCompact; extern ISAMFNInvalidateCursors ErrIsamInvalidateCursors; extern ISAMFNDBUtilities ErrIsamDBUtilities; extern FNDeleteFile ErrDeleteFile; #endif /* !ISAMAPI_H */