//----------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. // //----------------------------------------------------------------------- namespace Microsoft.Isam.Esent.Interop.Vista { /// /// ESENT APIs that were first supported in Windows Vista. /// public static class VistaApi { /// /// Retrieves information about a column in a table. /// /// The session to use. /// The database that contains the table. /// The name of the table containing the column. /// The ID of the column. /// Filled in with information about the columns in the table. public static void JetGetColumnInfo( JET_SESID sesid, JET_DBID dbid, string tablename, JET_COLUMNID columnid, out JET_COLUMNBASE columnbase) { Api.Check(Api.Impl.JetGetColumnInfo(sesid, dbid, tablename, columnid, out columnbase)); } #region JetGetTableColumnInfo overloads /// /// Retrieves information about a table column. /// /// The session to use. /// The table containing the column. /// The columnid of the column. /// Filled in with information about the column. public static void JetGetTableColumnInfo( JET_SESID sesid, JET_TABLEID tableid, JET_COLUMNID columnid, out JET_COLUMNBASE columnbase) { Api.Check(Api.Impl.JetGetTableColumnInfo(sesid, tableid, columnid, out columnbase)); } #endregion /// /// Creates a temporary table with a single index. A temporary table /// stores and retrieves records just like an ordinary table created /// using JetCreateTableColumnIndex. However, temporary tables are /// much faster than ordinary tables due to their volatile nature. /// They can also be used to very quickly sort and perform duplicate /// removal on record sets when accessed in a purely sequential manner. /// Also see /// , /// . /// /// /// Introduced in Windows Vista. Use /// for earlier versions of Esent. /// /// The session to use. /// /// Description of the temporary table to create on input. After a /// successful call, the structure contains the handle to the temporary /// table and column identifications. Use /// to free the temporary table when finished. /// public static void JetOpenTemporaryTable(JET_SESID sesid, JET_OPENTEMPORARYTABLE temporarytable) { Api.Check(Api.Impl.JetOpenTemporaryTable(sesid, temporarytable)); } /// /// Retrieves performance information from the database engine for the /// current thread. Multiple calls can be used to collect statistics /// that reflect the activity of the database engine on this thread /// between those calls. /// /// Returns the thread statistics data. public static void JetGetThreadStats(out JET_THREADSTATS threadstats) { Api.Check(Api.Impl.JetGetThreadStats(out threadstats)); } #if !MANAGEDESENT_ON_WSA /// /// Selects a specific instance to be part of the snapshot session. /// /// The snapshot identifier. /// The instance to add to the snapshot. /// Options for this call. public static void JetOSSnapshotPrepareInstance(JET_OSSNAPID snapshot, JET_INSTANCE instance, SnapshotPrepareInstanceGrbit grbit) { Api.Check(Api.Impl.JetOSSnapshotPrepareInstance(snapshot, instance, grbit)); } /// /// Enables log truncation for all instances that are part of the snapshot session. /// /// /// This function should be called only if the snapshot was created with the /// option. Otherwise, the snapshot /// session ends after the call to . /// /// The snapshot identifier. /// Options for this call. public static void JetOSSnapshotTruncateLog(JET_OSSNAPID snapshot, SnapshotTruncateLogGrbit grbit) { Api.Check(Api.Impl.JetOSSnapshotTruncateLog(snapshot, grbit)); } /// /// Truncates the log for a specified instance during a snapshot session. /// /// /// This function should be called only if the snapshot was created with the /// option. Otherwise, the snapshot /// session ends after the call to . /// /// The snapshot identifier. /// The instance to truncat the log for. /// Options for this call. public static void JetOSSnapshotTruncateLogInstance(JET_OSSNAPID snapshot, JET_INSTANCE instance, SnapshotTruncateLogGrbit grbit) { Api.Check(Api.Impl.JetOSSnapshotTruncateLogInstance(snapshot, instance, grbit)); } /// /// Retrieves the list of instances and databases that are part of the /// snapshot session at any given moment. /// /// The identifier of the snapshot session. /// Returns the number of instances. /// Returns information about the instances. /// Options for this call. public static void JetOSSnapshotGetFreezeInfo( JET_OSSNAPID snapshot, out int numInstances, out JET_INSTANCE_INFO[] instances, SnapshotGetFreezeInfoGrbit grbit) { Api.Check(Api.Impl.JetOSSnapshotGetFreezeInfo(snapshot, out numInstances, out instances, grbit)); } /// /// Notifies the engine that the snapshot session finished. /// /// The identifier of the snapshot session. /// Snapshot end options. public static void JetOSSnapshotEnd(JET_OSSNAPID snapshot, SnapshotEndGrbit grbit) { Api.Check(Api.Impl.JetOSSnapshotEnd(snapshot, grbit)); } /// /// Retrieves information about an instance. /// /// The instance to get information about. /// Retrieved information. /// The type of information to retrieve. public static void JetGetInstanceMiscInfo(JET_INSTANCE instance, out JET_SIGNATURE signature, JET_InstanceMiscInfo infoLevel) { Api.Check(Api.Impl.JetGetInstanceMiscInfo(instance, out signature, infoLevel)); } #endif // !MANAGEDESENT_ON_WSA /// /// Initialize the ESENT database engine. /// /// /// The instance to initialize. If an instance hasn't been /// allocated then a new one is created and the engine /// will operate in single-instance mode. /// /// /// Additional recovery parameters for remapping databases during /// recovery, position where to stop recovery at, or recovery status. /// /// /// Initialization options. /// /// /// A warning code. /// public static JET_wrn JetInit3(ref JET_INSTANCE instance, JET_RSTINFO recoveryOptions, InitGrbit grbit) { return Api.Check(Api.Impl.JetInit3(ref instance, recoveryOptions, grbit)); } #if !MANAGEDESENT_ON_WSA // Not exposed in MSDK /// /// Retrieves record size information from the desired location. /// /// The session to use. /// /// The cursor that will be used for the API call. The cursor must be /// positioned on a record, or have an update prepared. /// /// Returns the size of the record. /// Call options. public static void JetGetRecordSize(JET_SESID sesid, JET_TABLEID tableid, ref JET_RECSIZE recsize, GetRecordSizeGrbit grbit) { Api.Check(Api.Impl.JetGetRecordSize(sesid, tableid, ref recsize, grbit)); } #endif // !MANAGEDESENT_ON_WSA } }